xref: /onnv-gate/usr/src/tools/ctf/dwarf/i386/libdwarf.cpio.bz2 (revision 0:68f95e015346)
10707010001ad4b000041ed00011e740000000a00000003404709c100000000000000660000000000000000000000000000000900000000libdwarf��0707010001ad4c0000812400011e740000000a000000014020682700000f3e000000660000000000000000000000000000001100000000libdwarf/CHANGES��
2
3-------------------------------------------------------------
4April 14, 2000  davea@sgi.com
5Corrected minor bugs in production of 32bit dwarf with
664 bit pointers.  Fixed omissions in legal
7DIE children of a DIE.  Make small changes in
8description of regster output in frame information
9access.
10
11-------------------------------------------------------------
12Mar 7, 2000 davea@sgi.com
13Corrected line table reading so it will handle
14reading an object with a diffent number of standard
15op codes than at libdwarf compile time.
16This was possible all along, but libdwarf did
17not do it right.
18
19-------------------------------------------------------------
20Dec 8, 1999  davea@sgi.com
21Changed nearly all files.
22Adding the capability to read and produce
23the new, accepted by committee, but not
24released-publically 64bit extension proposal
25dwarf data.
26This allows dwarf compilation units
27with 64bit section offsets and 32bit
28sections offsets to be mixed.
29So that offsets can grow very large with
3064-bit pointer applications (though 64bit pointers
31and 64bit offsets are not the same notion).
32
33In addition, removed all the contents (or nearly all)
34of the dwarf_funcs.c dwarf_weaks.c dwarf_vars.c,
35and dwarf_types.c, as the data format is identical
36to dwarf globals (pubnames) and there is no need
37to duplicate all that code.
38
39All these sections whose contents were gutted are things that
40are formatted exactly like pubnames, and all are sgi
41extensions.  Now the implementation uses pubnames code
42(dwarf_global.c) to do the work for all the pubnames-like
43sections.
44
45The (minor, IMO) difference is that in case of an incorrect
46dwarf file (leading to libdwarf being unable to process
47something in one of the sgi-specific pubnames-like sections)
48the dwarf error string may reference pubnames when weaks,
49static functions, static variables, or global typenames are
50actually the problem.  This is fixable, however the price would
51appear to be that even globals would need to call a helper
52function (to pass in the correct error return).  Right now the
53dwarf_weaks.c calls the dwarf_global.c function, for example,
54with no extra arguments indicating the true section involved.
55(Other approaches keeping the original error codes exist.
56Producing the code uniquely via macros seems unappealing.
57Inline functions would be ok though.  This version does not
58inline the functions we are talking about, such as
59dwarf_global_name_offsets() when called from
60dwarf_type_name_offsets().)
61
62Since these extra sections are SGI only and only really used by
63SGI's workshop product, and the performance hit is small, the
64extra function calls in reading each seem acceptable.
65
66
67-------------------------------------------------------------
68Sep 29,1999 davea@sgi.com
69Changed many files, so that it is easy to switch
70from 32bit-offset-only (like cygnus
71and dwarf2 v 2.0.0)  to sgi/mips 64 bit dwarf.
72See NEWS for more info on 32bit-offset.
73
74
75-------------------------------------------------------------
76Since Oct 95 and before May, 1996
77
78Added the function dwarf_get_cie_of_fde() which makes it possible
79to remember a single fde/cie set out of a block usefully.
80
81Enhanced doc of dwarf_bitoffset()
82
83Added new function dwarf_global_formref() so all reference
84forms can be retrieved.
85
86Fixed bug in retrieving array bounds: was failing to sign extend
87formsdata.
88
89Added function dwarf_get_fde_info_for_all_regs(), which makes
90retrieval of the complete set of registers (as needed by
91debuggers and exception handlers) effectively N times faster
92than getting them one a time where N is the number of registers.
93
94Added support for exception table handling (really just support
95for a reference to an exception table for c++ exceptions).
96
97Fixed a bug where useless extra space (several megabytes)
98were malloc'ed for the abbreviations table by the libdwarf
99consumer code.
100
101davea@sgi.com
102-------------------------------------------------------------
103��0707010001ad4d0000812400011e740000000a000000014020682700000390000000660000000000000000000000000000001100000000libdwarf/COPYING��
104
105The files:
106	libdwarf.h
107	dwarf.h
108	and all the .h and .c files in this implementation of
109	libdwarf are copyrighted according to the file
110	LIBDWARFCOPYRIGHT.
111
112
113The dwarf documentation:
114	dwarf.v2.mm and its postscript form and its
115	indexes are copyright Unix International (UI is now defunct).
116        One presumes XOPEN owns the copyright now. In any case copying
117	and revision without fee is permitted (see the
118	copyright in the document).
119
120The libdwarf documentation:
121	libdwarf2.1.mm
122	libdwarf2p.1.mm
123	are based on material submitted to the UI PLSIG as proposed
124	interfaces for dwarf.  Copyright ownership is unclear, but
125	it seems clear that the intent was there was to be free
126	copying with no fees.
127
128	These documents are substantial revisions, done at SGI, of
129	previous libdwarf work.
130
131$Source: /plroot/cmplrs.src/v7.4.2m/.RCS/PL/libdwarf/RCS/COPYING,v $
132$Revision: 1.2 $
133$Date: 2001/01/16 17:08:36 $
1340707010001ad4e000081a400011e740000000a00000001402068270000485f000000660000000000000000000000000000001300000000libdwarf/ChangeLog����2004-02-03 David Anderson <davea@sgi.com>
135      * dwarf_util.h:  DECODE_LEB128_UWORD DECODE_LEB128_SWORD
136        were simply wrong if  Dwarf_Word or
137        Dwarf_Sword longer than 4 bytes. Upper bits left random and
138        large values not extracted correcty.
139
1402004-01-15 David Anderson <davea@sgi.com>
141      * dwarf_alloc.c pro_alloc.c pro_init.c: changing BSD-ish bzero()
142 	to posix-standard memset() calls.
143      * configure.in: remove bstring.h test, add alloca.h test.
144        No longer useing bzero, some environments have alloca
145	in malloc.h, no alloca.h.  If neither exist
146        it's up to you to deal with it.
147      * dwarf_line.c dwarf_print_lines.c dwarf_sort_line.c: Test
148	HAVE_ALLOCA_H
149      * configure config.h.in: regenerated
150
1512003-12-31 David Anderson <davea@sgi.com>
152      * dwarf_init_finish.c: added #error to detect and describe
153  	absence of libelf.h.
154      * README: Added mention of libelf.h requirement, minor
155	cleanout of obsolete comments, added configure example.
156      * Makefile.in: Removed bogus LIBS line, updated copyright date.
157      * acconfig.h: Updated copyright date.
158      * config.guess config.sub: new versions from automake-1.6.
159      * config.h.in configure: Regenerated.
160
1612003-12-15 David Anderson <davea@sgi.com>
162      * dwarf_init_finish.c (_dwarf_setup): test for (section_size)
163        was wrong for eh_frame section. Changed this one to
164	(section_size == 0) so it is like all the others testing
165	section_size.  Thanks to David Mosberger
166	for pointing out this inconsistency.
167
1682003-12-08 David Anderson <davea@sgi.com>
169      * dwarf_line.h: reference in comment to li_dbg meant to
170        refer to li_offset. Corrected and amplified comment.
171
1722003-10-06 David Anderson <davea@sgi.com>
173      * dwarf_abbrev.c dwarf_die_deliv.c dwarf_form.c dwarf_loc.c
174	dwarf_util.c: applied indent(1).
175
1762003-10-02 David Anderson <davea@sgi.com>
177      * dwarf_loc.c: Implemented dwarf_get_loclist_entry(),
178        implemented new dwarf_loclist_n() fully implementing
179        loclist support.
180      * dwarf_stubs.c: removed dwarf_get_loclist_entry stub.
181      * libdwarf2.1.mm: Documented dwarf_loclist_n() and
182        updated documentation on dwarf_loclist().
183
1842003-09-29 David Anderson <davea@sgi.com>
185      * dwarf_abbrev.c: Ensure the .debug_abbrev section is loaded.
186      * dwarf_arange.c dwarf_global.c: Recent dwarf committee
187    	discussions have revealed we were wrong in not allowing
188	padding in aranges.
189      * dwarf_die_deliv.c dwarf_query.c: handle DW_FORM_indirect.
190      * dwarf_form.c: Add dwarf_whatform_direct() so folks
191	can report on DW_FORM_indirect use.
192	Fill in new Dwarf_Locdesc fields.
193      * dwarf_loc.c: Handle .debug_loc  partially.
194	Fill in new Dwarf_Locdesc fields.
195	Load .debug_loc if not present and if it's needed.
196      * dwarf_opaque.h: Added ar_attribute_form_direct field
197  	so we can report DW_FORM_indirect
198	in libdwarf-using code (where such wants to).
199      * dwarf_util.c: Don't confuse DW_FORM_indirect uleb length
200	with other lengths.
201      * libdwarf2.1.mm: Document new function dwarf_whatform_direct()
202	Not needed by ordinary clients, just for clients
203	wanting to print certain debug info.
204
2052003-04-15 Brian Ford <ford@vss.fsi.com>
206      * configure.in (AC_C_BIGENDIAN): Move after AC_PROG_CC so a proper
207        working compiler is used for the test.
208
2092003-01-21 David Anderson <davea@sgi.com>
210      * dwarf_die_deliv.c (dwarf_next_cu_header, dwarf_offdie):
211	Add calls to dwarf_load_object() to load .debug_info,
212        .debug_abbrev
213      * dwarf_init_finish.c (_dwarf_setup): Remove calls to
214        dwarf_load_object for .debug_info, .debug_abbrev sections.
215      * dwarf_opaque.h: Add new fields to Dwarf_Debug so
216        we don't need to pre-load .debug_info, .debug_abbrev
217      * dwarf_util.h: Fix READ_AREA_LENGTH macro so it uses
218        only length itself to determine which format the
219        length is.
220
2212003-01-14 David Anderson <davea@sgi.com>
222      * dwarf_loc.c: Made comment at head of dwarf_loclist()
223      a bit clearer.
224
2252002-11-22 Tom Hughes <thh@cyberscience.com>
226      * dwarf_macro.c: Corrected bugs in macro-info functions.
227
2282002-10-29 David Anderson <davea@sgi.com>
229      * dwarf_init_finish.c: The libelf_sgi mods
230      left a HAVE_ELF64_GETSHDR ifdef in the wrong place
231      so folks without Elf64 could not build. Fixed.
232
2332002-10-21 David Anderson <davea@sgi.com>
234      * dwarf_form.c: the form_ref functions were failing to
235      add in cc_extension_size when checking for offset
236      legality. Thanks to Kelly O'Hair <kelly.ohair@sun.com>
237      for pointing out the 4 places this was wrong.
238      Used cu_context local pointer to avoid numerous
239      double indirections.
240
2412002-08-14 David Anderson <davea@sgi.com>
242      * dwarf_string.c (dwarf_get_str): Return
243      DW_DLV_NO_ENTRY when offset is just at the end of the
244      sections, making it possible to use dwarf_get_str
245      to print the section independently.
246      * libdwarf2.1.mm, libdwarf2.1.ps: Document the
247      revised dwarf_get_str interface (which was not
248      fully thought thru before).
249      * dwarf_line.c (dwarf_srcfiles): Avoid core dump
250      when DW_AT_comp_dir absent (it's not required).
251
252
2532002-07-31 David Anderson <davea@sgi.com>
254      * pro_types.c (_dwarf_transform_simplename_to_disk): correct
255      generation of .debug_info size field.
256      Thanks to Kelly O'Hair <kelly.ohair@sun.com> for pointing out
257      the bug.
258
2592002-05-23 Daniel Gohman <gohmandj@sgi.com>
260      * dwarf_init_finish.c: Add support for using SGI's
261      ELF library as an alternative to using AT&T-style
262      libelf.
263      Add a new function _dwarf_load_section to handle
264      loading of sections.
265      * dwarf_opaque.h: Add entries to Dwarf_Debug_s to
266      store section indicies.
267      * most consumer files: Load sections on demand so
268      that unneeded sections don't get loaded.
269      * dwarf_init_finish.c: Fixed an incorrect check for
270      duplicate .eh_frame sections.
271
2722002-04-25 Kelly O'Hair <kelly.ohair@sun.com>
273      * pro_section.c (_dwarf_pro_generate_debuginfo): add
274      required dwarf2 sec 7.5.3 trailing null byte
275      to .debug_abbrev per compilation-unit.
276
2772002-03-31 David Anderson <davea@sgi.com>
278      * dwarf_abbref.c (dwarf_get_abbrev): change
279      DW_DLE_DEBUG_ABBREV_NULL to DW_DLE_DWARF_ABBREV_NULL.
280      Former was wrong code.
281      * libdwarf2.1.mm: correct argument reference, returned_abbrev
282      not returned_fde in dwarf_get_abbrev discussion.
283
2842002-03-07 David Anderson <davea@sgi.com>
285      * libdwarf.h: added struct Elf declaration
286      to reduce dependency on header include ordering.
287
2882002-02-11 David Anderson <davea@sgi.com>
289      * libdwarf2.1.mm libdwarf2.1.ps:
290      dwarf_offdie can return DW_DLV_NO_ENTRY and that
291      is now documented.
292      * dwarf_loc.c: if the length of a location description
293      is zero that is ok, not an error. dwarf2 sec 2.4.1.
294
2952002-01-10 David Anderson <davea@sgi.com>
296      * dwarf_opaque.h, dwarf_init_finish.c: if libdwarf does
297      the elf_begin() it must also do the elf_end() to
298      avoid a memory leak, and now does this correctly.
299
3002002-01-10  David Anderson <davea@sgi.com>
301      * dwarf_init_finish.c:  Using a variable to
302      hold ELF_C_READ_MMAP.  Really motivated by
303      code not added to this source.
304      * dwarf_die_deliv.c: Added comments, moved
305      a couple variables to local scope from function scope.
306
307      * dwarf.h: Added some #defines which were specified in the Dwarf
308      2.1 Dwarf draft 5 (now called dwarf 3 draft 5).
309
3102001-09-18  David Anderson davea@sgi.com
311	* all files: applied gnu indent with
312	-bad -bap -nbbo -br -ce -brs
313	-l72  -lc72  -hnl  -nprs
314	-fca -i4  -lp -psl -npcs
315	Code should use this set in libdwarf.
316
317
3182001-08-21  "kelly o'hair" <kelly.ohair@eng.sun.com>
319	* pro_section.c:  If one called dwarf_add_file_decl()
320	  or dwarf_add_directory_decl() but never added a line,
321	  .debug_line was not produced.  This was a mistake,
322	  as if any file or directory was provided .debug_line
323	  should be produced.
324
3252001-08-06  davea@sgi.com
326	* libdwarf2.1.mm: documented dwarf_dealloc rules
327	  more clearly. (.ps updated too)
328	* mips_extensions.mm: documented the way SGI
329	  gets frame stack pointer out of debug_frame.
330	  (.ps updated too)
331
3322001-06-14  davea@sgi.com
333	* dwarf_leb.c: changed around where bytes counted in
334	  _dwarf_decode_s_leb128 so it's easier to tell it is correct.
335	  And removed one loop completely: it was
336	  an early attempt at performance improvement and
337	  is no longer relevant.
338
339	* dwarf_global.c: added new
340	  dwarf_get_cu_die_offset_given_cu_header_offset function
341	  to get CU die offset (as the long name says).
342	  A variety of functions return cu-header-offsets, so
343	  this is useful at times.
344	  Used locals to reduce the number of indirections
345	  and make things easier to follow.
346
347	* dwarf_arange.c: added new dwarf_get_arange_cu_header_offset
348	  function so dwarfdump could print the cu header offset
349	  (which appears in the arange headers).
350
351	* libdwarf2.1.mm: documented the above new functions.
352
3532001-06-07  davea@sgi.com
354	* dwarf_leb.c: shift operator was not being applied
355	  to full size of Dwarf_Signed/Unsigned for 64bit
356	  Dwarf_Signed/Unsigned (ILP32 compile) so
357	  large numbers not decoded if signed.
358	* pro_encode_nm.c: added {} in a couple if/else
359          for 'clarity' and to make inserting debug printf easier.
360	* pro_expr.c: Added comments explaining why possible
361	  compiler (gcc) warnings are ok, the result is safe.
362
3632001-05-30  davea@sgi.com
364	* pro_reloc_stream.c: Wrote Set_REL32_info and
365	  Set_REL64_info macros
366	  from generic ELF abi documents to make use acceptable
367	  when IRIX elfaccess.h is not available.
368
3692001-05-30  "kelly o'hair" <kelly.ohair@eng.sun.com>
370	* Makefile.in: was missing   pro_macinfo.o
371 	  pro_encode_nm.o dwarf_macro.o from the OBJS list.
372
3732001-05-22  davea@sgi.com
374	* dwarf_frame.c, pro_expr.c: Added comments on why
375	  casts are safe in spite of gcc warnings (4 places total).
376
3772001-05-18  Dan Gritter <dgritter@us.ibm.com>
378	* dwarf_loc.c DW_OP_bregx operands are unsigned
379	  reg num followed by signed offset.
380
3812001-04-11  David Anderson <davea@sgi.com>
382	* dwarf_die_deliv.c: check for 0 abbreviation code
383	  and return a 'no entry' return value when found.
384	  (normal dwarf2, 0 means no DIE, the end of some set of DIEs.)
385
3862001-01-16  David Anderson <davea@sgi.com>
387
388	* pro_die.c: set ar_reloc_len field
389	in all cases.
390
3912000-12-14  David Anderson <davea@sgi.com>
392
393	* dwarf_frame.h: clarified some comments.
394
3952000-12-14  Ulrich Drepper <drepper@cygnus.com>
396
397        * dwarf_line.c: Now sets DW_LNE_end_sequence to
398        default_is_stmt, the correct value, not is_stmt.
399
400
4012000 Aug 24  davea@sgi.com
402  dwarf_error.c: a dwarf_init() failure resulted in this
403	using a static Dwarf_Error struct. And dwarf_dealloc
404	did not deal properly with that.
405  dwarf_alloc.c dwarf_alloc.h: these had DYNAMIC_CHUNK protected code
406  	which was never used.  Deleted the unused code. Added a small
407  	comment (hopefully useful) to dwarf_alloc.h.
408
409	And now deals correctly with a null dbg  on
410	DW_DLA_ERROR  due to failed
411	dwarf_init() call (or due to other error in calling
412	libdwarf that results in libdwarf not knowing the dbg,
413	a likely far more common case) and frees the memory.
414	This used to result in chaos (depending on your
415	luck...).
416
4172000 Aug 23  davea@sgi.com
418  libdwarf2.1.mm, ps.  Failed to mention that dwarf_finish()
419  has to be accompanied by elf_end() if dwarf_init() was used
420  to initialize libdwarf to truly release all stuff.
421  Added text to dwarf_finish() describing how to do that.
4222000 April 14  davea@sgi.com
423
424  dwarf_abbrev.c - 1.22
425        - When it is a null abbrev entry, return it correctly so it can be
426          printed (meaning fill out all the return-parameters so the caller can
427          do the right thing).
428
429  dwarf_init_finish.c - 1.48
430        - For most sections, simply having an empty section (present but empty)
431          is just fine. There is no reason to register an error in such a case.
432
433  Copyright has changed. See LIBDWARFCOPYRIGHT and NEWS
434
435  dwarfdump/print_die.c - 1.42
436        - Explain what combo checker is doing and make it more maintainable (and          fix bug which would not be hit, but was real enough).
437
438  dwarfdump/tag_tree.list - 1.2
439        - Add valid parent/child relationships so checker does not report valid
440          entries as bogus.
441
442  dwarf_form.c - 1.26
443        - Correct dwarf reader to use appropriate size, not de_length_size. This          is part of the handling of the new dwarf2 64bit facilities. I
444          overlooked this small aspect before in one place
445  dwarf_query.c - 1.48
446        - Use correct size, not de_length_size. For offset size.
447  libdwarf2.1.mm - 1.41
448        - Tried to make frame register output args meaning clearer
449  libdwarf2.1.ps - 1.19
450        - Tried to make frame register output args meaning clearer
451  pro_forms.c - 1.33
452        - Get ref4, not ref8 when generating 32bit dwarf per original dwarf2
453          spec. even if pointer size is 64 bits.
454  pro_init.c - 1.18
455        - Get ref4, not ref8 when generating 32bit dwarf per original dwarf2
456          spec. even if pointer size is 64 bits.
457
458
459davea@sgi.com
460
461
4622000 March 7
463dwarf_line.c - 1.48
464dwarf_line.h - 1.16
465dwarf_print_lines.c - 1.10
466dwarf_sort_line.c - 1.8
467        - Now handles opcode_base of line section to be other than that at
468          compile time of libdwarf.
469Important as the dwarf2 committee is adding a new standard opcode
470davea@sgi.com
471
4722000 Feb 24
473pro_forms.c  1.31 ar_next field not always zeroed before.
474Could lead to infinite loop in the producer code.
475Now the field is always zeroed.
476
477Makefile.in - 1.3 Jason Merrill <jason@cygnus.com>
478 provided fix so gcc will work on libdwarf
479print_sections.c - 1.54 - casts to avoid warnings
480
481davea@sgi.com
482
483
4841999 Dec 14
485acconfig.h - 1.3
486config.h.in - 1.5
487configure - 1.4
488configure.in - 1.5
489        - HAVE_DWARF2_99_EXTENSION HAVE_OLD_DWARF2_32BIT_OFFSET
490          refinements added.
491CHANGES - 1.3
492Makefile.base - 1.98
493NEWS - 1.5
494config.h - 1.4
495config.h.in - 1.4
496configure.in - 1.4
497dwarf_alloc.c - 1.36
498dwarf_arange.c - 1.19
499dwarf_arange.h - 1.6
500dwarf_die_deliv.c - 1.51
501dwarf_frame.c - 1.62
502dwarf_frame.h - 1.23
503dwarf_funcs.c - 1.10
504dwarf_funcs.h - 1.3
505dwarf_global.c - 1.21
506dwarf_global.h - 1.7
507dwarf_init_finish.c - 1.45
508dwarf_line.c - 1.44
509dwarf_opaque.h - 1.52
510dwarf_print_lines.c - 1.8
511dwarf_query.c - 1.45
512dwarf_types.c - 1.10
513dwarf_types.h - 1.3
514dwarf_util.c - 1.40
515dwarf_util.h - 1.22
516dwarf_vars.c - 1.11
517dwarf_vars.h - 1.3
518dwarf_weaks.c - 1.10
519dwarf_weaks.h - 1.3
520libdwarf2.1.mm - 1.40
521libdwarf2.1.ps - 1.18
522pro_arange.c - 1.15
523pro_die.c - 1.23
524pro_frame.c - 1.29
525pro_init.c - 1.15
526pro_macinfo.c - 1.7
527pro_opaque.h - 1.14
528pro_pubnames.c - 1.18
529pro_reloc_stream.c - 1.5
530pro_section.c - 1.70
531pro_section.h - 1.16
532pro_types.c - 1.12
533        - Allowing generation of correct dwarf2 with the 1999 64bit dwarf
534          extension, and reading all forms of dwarf2 compatibly (all 32/64bit
535          dwarf2 section  forms).
536
537This adds the ability to consume and produce both sgi 64bit
538and the new dwarf2 committee-approved 64bit dwarf extension.
539As a result of the new dwarf2 stuff , a producer (compiler)
540can mix 32 and 64bit dwarf (for a 64bit object) and the
541linker will work seamlessly.  (as long as section sizes don't
542get over 2GBytes).
543
544And the producer is easily configured to produce mips/sgi style
54564bit dwarf or the new form of 64bit dwarf.
546
547This also eliminates a fair amount of rather silly duplicated code.
548davea@sgi.com
549
550
5511999 Nov 4
552
553pro_section.c - 1.69
554        - A pointer size entity had an offset-size value used at one place.
555davea@sgi.com
556
5571999 Sep 30
558dwarf_arange.c - 1.18
559        - Changed // comment to /* */.  // failed to compile
560          with C89 compiler...
561davea@sgi.com
562
563
5641999 Sep 29
565Changed all the producer code
566substantially to allow generating assembler code
567for the dwarf2 (rather similar to what gcc does)
568allowing symbolic relocations.
569MIPS output still generates the binary form.
570davea@sgi.com
571
572
573
5741999 Aug 20
575Stan Shebs (shebs@cygnus.com) pointed out that the pro_util.h
576use of R_MIPS* was a problem compiling on Sun.
577Since the producer code is not really used at present except for
578MIPS/sgi, I've added #ifndefs to pro_util.h which provide zero values
579when <elf.h> does not provide the macros.
580When anyone needs the producer code to actually *work* for non-MIPS
581something better will have to be done.
582
583This has no effect on those simply compiling libdwarf for
584use by dwarfdump.
585davea@sgi.com
586
5871999 July 21
588Changed the READ_UNALAGNED macro to call a function
589depending on endianness of the host and the object being read.
590So all the dwarf_* source changed in a trivial way.
591Added support for printing egcs eh_frame section.
592Added a local memcpy-like function to do the cross-endian
593thing where applicable (called by READ_UNALIGNED macro).
594Because the .eh_frame section
595after linking can have some zeroed out bytes at the
596end of the CIE/FDE data the code looking for CIEs and FDEs
597now assumes a zero CIE/FDE length means it has reached
598the end of the CIE/FDE data.
599davea@sgi.com
600
601
6021999 June 14
603  Fred Fish fnf@ninemoons.com contributed
604  autoconf'ing of the libdwarf and dwarfdump source.
605
606
607  mips_extensions.*  Documented additional old errors
608  in the Dwarf Version 2 spec.
609
610  The ChangeLog before this is incomplete.
611
612-------------------------------------------------------------
613Since Oct 95 and before May, 1996 davea@sgi.com David Anderson
614
615Added the function dwarf_get_cie_of_fde() which makes it possible
616to remember a single fde/cie set out of a block usefully.
617
618Enhanced doc of dwarf_bitoffset()
619
620Added new function dwarf_global_formref() so all reference
621forms can be retrieved.
622
623Fixed bug in retrieving array bounds: was failing to sign extend
624formsdata.
625
626Added function dwarf_get_fde_info_for_all_regs(), which makes
627retrieval of the complete set of registers (as needed by
628debuggers and exception handlers) effectively N times faster
629than getting them one a time where N is the number of registers.
630
631Added support for exception table handling (really just support
632for a reference to an exception table for c++ exceptions).
633
634Fixed a bug where useless extra space (several megabytes)
635were malloc'ed for the abbreviations table by the libdwarf
636consumer code.
637
638-------------------------------------------------------------
639June 10, 1999
640 Changelog started.
641-------------------------------------------------------------
642�0707010001ad4f0000812400011e740000000a000000014020682700000513000000660000000000000000000000000000001b00000000libdwarf/LIBDWARFCOPYRIGHT����  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
643
644  This program is free software; you can redistribute it and/or modify it
645  under the terms of version 2.1 of the GNU Lesser General Public License
646  as published by the Free Software Foundation.
647
648  This program is distributed in the hope that it would be useful, but
649  WITHOUT ANY WARRANTY; without even the implied warranty of
650  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
651
652  Further, this software is distributed without any warranty that it is
653  free of the rightful claim of any third person regarding infringement
654  or the like.  Any license provided herein, whether implied or
655  otherwise, applies only to this software file.  Patent licenses, if
656  any, provided herein do not apply to combinations of this program with
657  other software, or any other product whatsoever.
658
659  You should have received a copy of the GNU Lesser General Public
660  License along with this program; if not, write the Free Software
661  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
662  USA.
663
664  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
665  Mountain View, CA 94043, or:
666
667  http://www.sgi.com
668
669  For further information regarding this notice, see:
670
671  http://oss.sgi.com/projects/GenInfo/NoticeExplan
672�0707010001ad500000812400011e740000000a00000001402068270000111f000000660000000000000000000000000000001500000000libdwarf/Makefile.in��#
673#
674#  Copyright (C) 2000, 2003 Silicon Graphics, Inc.  All Rights Reserved.
675#
676#  This program is free software; you can redistribute it and/or modify it
677#  under the terms of version 2.1 of the GNU Lesser General Public License
678#  as published by the Free Software Foundation.
679#
680#  This program is distributed in the hope that it would be useful, but
681#  WITHOUT ANY WARRANTY; without even the implied warranty of
682#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
683#
684#  Further, this software is distributed without any warranty that it is
685#  free of the rightful claim of any third person regarding infringement
686#  or the like.  Any license provided herein, whether implied or
687#  otherwise, applies only to this software file.  Patent licenses, if
688#  any, provided herein do not apply to combinations of this program with
689#  other software, or any other product whatsoever.
690#
691#  You should have received a copy of the GNU Lesser General Public
692#  License along with this program; if not, write the Free Software
693#  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
694#  USA.
695#
696#  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
697#  Mountain View, CA 94043, or:
698#
699#  http://www.sgi.com
700#
701#  For further information regarding this notice, see:
702#
703#  http://oss.sgi.com/projects/GenInfo/NoticeExplan
704#
705#
706
707#
708#  Makefile for libdwarf
709#  This is made very simple so it should work with
710#  any 'make'.
711#
712
713srcdir =	@srcdir@
714VPATH =		@srcdir@
715
716prefix =	@prefix@
717exec_prefix =	@exec_prefix@
718bindir =	$(exec_prefix)/bin
719libdir =	$(exec_prefix)/lib
720
721INSTALL =	@INSTALL@
722INSTALL_PROGRAM = @INSTALL_PROGRAM@
723INSTALL_DATA =	@INSTALL_DATA@
724SHELL =		/bin/sh
725CC =		@CC@
726AR =		@AR@
727#ARFLAGS =	@ARFLAGS@
728RM =		rm
729RANLIB =	@RANLIB@
730DEFS =		@DEFS@
731LIBS =		@LIBS@
732INCLUDES =	-I. -I$(srcdir)
733CFLAGS =	@CFLAGS@ $(INCLUDES)
734LDFLAGS =	@LDFLAGS@
735
736
737BUILD_BASE = .
738
739OBJS= dwarf_abbrev.o \
740        dwarf_alloc.o \
741        dwarf_arange.o \
742        dwarf_die_deliv.o \
743        dwarf_error.o \
744        dwarf_form.o \
745        dwarf_frame.o \
746        dwarf_funcs.o \
747        dwarf_global.o \
748        dwarf_init_finish.o  \
749        dwarf_line.o \
750        dwarf_loc.o \
751        dwarf_query.o \
752        dwarf_string.o \
753        dwarf_stubs.o \
754        dwarf_types.o \
755        dwarf_util.o \
756        dwarf_leb.o \
757        dwarf_vars.o \
758        dwarf_weaks.o    \
759        dwarf_addr_finder.o \
760	dwarf_sort_line.o \
761	dwarf_print_lines.o \
762	dwarf_macro.o \
763        pro_alloc.o \
764        pro_arange.o \
765        pro_die.o \
766	pro_encode_nm.o \
767        pro_error.o \
768        pro_expr.o \
769        pro_finish.o \
770        pro_forms.o \
771        pro_funcs.o \
772        pro_frame.o \
773        pro_init.o \
774        pro_line.o \
775        pro_reloc.o \
776        pro_reloc_stream.o \
777        pro_reloc_symbolic.o \
778        pro_pubnames.o \
779        pro_section.o \
780        pro_types.o \
781        pro_vars.o \
782	pro_macinfo.o \
783        pro_weaks.o
784
785
786all:		libdwarf.a
787
788libdwarf.a:	$(OBJS)
789		$(AR) $(ARFLAGS) $@ $(OBJS)
790
791#
792# The following are very SGI-centric
793# psroff is just a troff formatter.
794# the .mm files are in ATT/USL/USG mm form.
795#
796
797psbld:		libdwarf2.1.ps libdwarf2p.1.ps dwarf.v2.ps index.v2.ps mips_extensions.ps
798
799# pr expands tabs to spaces: this avoids problems with tab
800# interpretation
801
802libdwarf2.1.ps:  $(BUILD_BASE)/libdwarf2.1.mm
803		pr -t -e $(BUILD_BASE)/libdwarf2.1.mm \
804		  | tbl | psroff -t -mm >libdwarf2.1.ps
805
806libdwarf2p.1.ps:  $(BUILD_BASE)/libdwarf2p.1.mm
807		pr -t -e  $(BUILD_BASE)/libdwarf2p.1.mm \
808		  | tbl | psroff -t -mm >libdwarf2p.1.ps
809
810# At present, the newIndex is not usable: we have no tools
811# to build a new index page at the moment.
812
813dwarf.v2.ps:	$(BUILD_BASE)/dwarf.v2.mm
814		pic $(BUILD_BASE)/dwarf.v2.mm \
815		  | tbl | psroff -t -mm >dwarf.v2.ps 2> newIndex
816		-cp dwarf.v2.ps $(BUILD_BASE)
817		-cp newIndex $(BUILD_BASE)
818
819# the index is only useful till the document changes: it is
820# not autmatically correct. It was prepared by tools internal
821# to USL/Novell
822
823index.v2.ps:  index.v2.mm
824		pic index.v2.mm | tbl | psroff -t -mm >index.v2.ps
825
826
827mips_extensions.ps: mips_extensions.mm
828		pr -t -e mips_extensions.mm | tbl | \
829                 psroff -t -mm >mips_extensions.ps
830
831clean:
832		rm -f *.o libdwarf.a
833
834distclean:	clean
835		rm -f config.status config.log config.cache config.h
836
837shar:
838		@echo "shar not set up yet"
839dist:
840		@echo "dist not set up yet"
841�0707010001ad51000081a400011e740000000a00000001402068270000167c000000660000000000000000000000000000000e00000000libdwarf/NEWS�Feb 3, 2004
842  If 'Dwarf_Word' is 64 bits, two macros reading leb numbers
843  fail to initialize upper bits of the values read.
844  First noticed with bogus line numbers printing from dwarfdump.
845  Now we use already-existing functions, avoiding the problem.
846
847Oct 02, 2003
848  Support .debug_loc section fully.
849
850Sept 29, 2003
851  Support DW_FORM_indirect properly.
852  Supports loclists in part (but not multiple loclist entries yet).
853  Support 'padding bytes' at end of .debug_arange and
854  .debug_pubnames and .debug_pubtypes per CU
855  (recent dwarf committee email made it clear this is appropriate).
856
857May 23, 2002
858  Libdwarf now asks for sections only when they are
859  used, so that unneeded sections aren't loaded.
860  Support for using SGI's ELF library as an alternative to
861  using AT&T libelf-style has been added (the SGI ELF
862  library is presently only available internally to SGI).
863
864Jan 10, 2002
865  Fixed memory leak in dwarf_finish().
866
867Aug 21, 2001
868  If one called dwarf_add_file_decl()
869  or dwarf_add_directory_decl() but never added a line,
870  .debug_line was not produced.  This was a mistake,
871  as if any file or directory was provided .debug_line
872  should be produced. Now it is produced.
873
874June 14, 2001
875  Given a cu header offset, it was not easy to derive the
876  CU header DIE offset. Created the new
877  function dwarf_get_cu_die_offset_given_cu_header_offset()
878  do get the CU header DIE offset.
879  Added the function dwarf_get_arange_cu_header_offset()
880  so the cu header offset could be retrieved from .debug_aranges
881  information.
882
883June 07, 2001
884  Major bug in dwarf_leb.c decoding large integers
885  (Dwarf_Signed 64 bit where library is compiled in ILP32)
886  found and fixed.
887
888May 21, 2001
889  Some small fixes have been found by various folks,
890  so it seems time to prepare a new source release.
891  See ChangeLog for details.
892
893April 15, 2000
894  The libdwarf copyright has changed to
895     version 2.1 of the GNU Lesser General Public License.
896  Anyone holding a version of libdwarf that was published
897  before this new copyright is allowed to use
898    the copyright published in that earlier libdwarf source
899    on the earlier source
900  or to use
901    this new copyright on the earlier source,
902  at their option.
903
904
905December 08, 1999
906  The dwarf committee has adopted the offset-extension
907  proposal. This allows compatibly emitting
908  dwarf with 64bit offsets.
909
910  The dwarf reader now automatically figures out which is in use.
911  The dwarf writer configures itself at the time the
912  writer initialization routine is called, though
913  the writer is restricted, at libdwarf
914  compile time, to one of
915		mips/sgi pure 32/pure 64 offsets/pointers.
916
917		32bit offsets only (per dwarf 2.0.0 and cygnus)
918
919		32bit offsets with extension to 64bit offsets
920		allowed (the offset-extension newly passed).
921
922  In addition, a great deal of duplicate code
923  for the sgi  .debug_weaknames, .debug_funcnames,
924  .debug_varnames and .debug_typenames sections has
925  been removed: a single set of functions does the real work now.
926
927Sept 29, 1999
928  Just found out that cygnus is, on 64bit targets, generating
929  32bit offsets (as elf32 has, for example) with 64 bit
930  pointers (in references to text and data).
931  Whereas sgi has always generated 64bit dwarf with
932  64 bit offsets (as in elf64) and 64bit pointers for
933  64bit pointer objects.
934  I'll call the sgi approach 64-bit and the cygnus approach
935  32bit-offsets.
936
937  Cygnus is following the DWARF2 spec as written, so they are
938  right in doing only 32bit-offsets.
939
940  Folks at sgi (including me) think that, as for elf64,
941  the offsets in dwarf for 64bit pointer-apps should be
942  64 bits.  We think it is only a matter of time
943  before we really *need* 64bit offsets and when that happens
944  it will be on an important app.  Disk space is cheap,
945  so lets just go 64 bit on 64bit apps (such as ia64 apps)
946  to avoid a future problem.
947  I(davea@sgi.com) think the 'pointer-size' references in the dwarf
948  spec were really written for 64-bit pointer apps.
949  I don't recall serious consideration of 64bit pointer
950  apps in the committee deliberations (I did miss
951  a couple of meetings) and think 64bit offsets
952  are consistent with dwarf2, even though the speci
953  was not written for such. We think true full 64 bit
954  dwarf2 is the right way to go (the spec changes
955  are obvious: file and section offsets become 64bit
956  with 64bit pointer objects.
957
958  MIPS/SGI is definitely 64-bit offsets for 64 bit objects,
959  cygnus is definitely 32bit-offsets for earlier 64bit pointer
960  environments.
961
962  At any rate, now the dwarf reader allows and accomodates
963  both and the dwarf producer also accomodates both.
964  Some tweaking of the pro_init.c or dwarf_init_finish.c
965  files may be necessary in future: no other changes should
966  be needed to accomodate the two 64bit approaches, as
967  the library (and dwarfdump) now deal with both forms.
968
969
970August 20, 1999
971  Added some #ifndef/#define to pro_util.h to let libdwarf build
972  on more hosts.  (since those hosts don't need the producer
973  code, AFAIK, zero values suffice for missing #defines.)
974
975July 21, 1999
976  Now reader transparently reads either-endianness data
977  from an either-endianness object.
978  Updated dwarf.h and libdwarf.h to recognize
979  GNU egcs dwarf extensions and to print the egcs eh_frame
980  section.
981
982June 10, 1999
983  gnu configure version of libdwarf made available for the
984  first time.
985  Still allows only same-endian-as-host in objects.
986
987August, 1994
988  libdwarf source made available for ftp on sgigate.sgi.com
989	/ftp/pub
990
991June, 1994
992  Consumer interface changed completely, following
993  "Candy Machine Interfaces" chapter from
994   "Writing Solid Code" by Steve Maguire (Microsoft Press).
995
996April,  1993
997  Initial version of libdwarf  for dwarf version 2
998  written at sgi.
9990707010001ad520000812400011e740000000a000000014020682700000bf1000000660000000000000000000000000000001000000000libdwarf/README���To build libdwarf.a, type
1000        ./configure
1001        make
1002
1003To use dwarf or libdwarf, you may want to install dwarf.h and
1004libdwarf.h somewhere convenient, and you may need the libdwarf
1005in the accompanying libdwarf directory
1006
1007If your headers are not in the expected places,
1008use the configure script to access them (and to add other ld
1009or C flags).
1010For example
1011        ./configure  CPPFLAGS="-I/home/davea/inc" CFLAGS="-I/home/davea/inc"
1012Set both CFLAGS and CPPFLAGS so that configure works properly.
1013
1014
1015In general, in the producer code, numbers are copied from and
1016to integers with memcpy().  In case of endianness problems,
1017constants set in dwarf_producer_init() can fix the problems.
1018If one wants to produce a *different-endian* output the best
1019solution is to change the integer memcpy calls to call thru a
1020new dbg-based function pointer and have it 'do the right thing'
1021to adjust endianness.  Set the function pointer correctly in
1022dwarf_producer_init() and the rest of the code will just call
1023thru the function pointer.  Tedious work to find and change the
1024memcpy calls to be dbg->de_memcpy(), but once done the code is
1025no longer endian dependent (right now there is no way to ask
1026for cross-endian: a new flag needed or ?).
1027
1028leb128 numbers are endian-independent, so nothing need be
1029done with those for cross-endian support (the storage
1030of leb128 on disk is always little-endian).
1031
1032The .ps files are postscript. So those who cannot deal with mm
1033format files but do have a postscript printer (or have
1034ghostscript) can print the documents.
1035This form was chosen before pdf format existed...
1036
1037libdwarf2.1.ps documents a way for a debugger to read dwarf information.
1038libdwarf2p.1.ps documents a way for a compiler to generate dwarf information.
1039dwarf.v2.ps documents Dwarf Version 2.
1040index.v2.ps is an index to dwarf.v2.ps.
1041indexDW.v2  is a plain text index of dwarf #defines to dwarf.v2.ps
1042mips_extensions.ps documents the mips/sgi extensions to dwarf.
1043
1044The commands used to generate the postscript were:
1045 pr -t -e libdwarf2.1.mm | tbl | psroff -t -mm >libdwarf2.1.ps
1046 pr -t -e  libdwarf2p.1.mm | tbl | psroff -t -mm >libdwarf2p.1.ps
1047 pic dwarf.v2.mm | tbl | psroff -t -mm >dwarf.v2.ps 2> newIndex
1048 pic index.v2.mm | tbl | psroff -t -mm >index.v2.ps
1049
1050pic is a picture processing tool (ATT command).
1051tbl is a table-processing tool.
1052(part of Documentor's Work Bench on ATT-like systems).
1053tbl and pic are available on linux.
1054
1055psroff is a name for a troff-like processor, part of
1056Documentor's Work Bench on IRIX. Substitute a
1057troff-like or nroff-like processor.
1058
1059The index.v2.mm was generated by the dwarf-document writer
1060using some local ATT/USL tools (which SGI does not have, so
1061there is no way I know of to regenerate this).
1062
1063To use dwarf or libdwarf, you may want to install dwarf.h and
1064libdwarf.h somewhere convenient.
1065
1066You will also need libelf (libelf.a and/or libelf.so) and
1067libelf.h installed. These are available from GNU repositories.
1068
1069$Source: /plroot/cmplrs.src/v7.4.2m/.RCS/PL/libdwarf/RCS/README,v $
1070$Revision: 1.8 $
1071$Date: 2004/01/05 22:29:20 $
1072���0707010001ad530000812400011e740000000a0000000140206828000008f3000000660000000000000000000000000000001400000000libdwarf/acconfig.h���/*
1073
1074  Copyright (C) 2000,2003,2004 Silicon Graphics, Inc.  All Rights Reserved.
1075
1076  This program is free software; you can redistribute it and/or modify it
1077  under the terms of version 2.1 of the GNU Lesser General Public License
1078  as published by the Free Software Foundation.
1079
1080  This program is distributed in the hope that it would be useful, but
1081  WITHOUT ANY WARRANTY; without even the implied warranty of
1082  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
1083
1084  Further, this software is distributed without any warranty that it is
1085  free of the rightful claim of any third person regarding infringement
1086  or the like.  Any license provided herein, whether implied or
1087  otherwise, applies only to this software file.  Patent licenses, if
1088  any, provided herein do not apply to combinations of this program with
1089  other software, or any other product whatsoever.
1090
1091  You should have received a copy of the GNU Lesser General Public
1092  License along with this program; if not, write the Free Software
1093  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
1094  USA.
1095
1096  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
1097  Mountain View, CA 94043, or:
1098
1099  http://www.sgi.com
1100
1101  For further information regarding this notice, see:
1102
1103  http://oss.sgi.com/projects/GenInfo/NoticeExplan
1104
1105*/
1106
1107
1108
1109/* Define to 1 if the elf64_getshdr function is in libelf.a */
1110#undef HAVE_ELF64_GETSHDR
1111
1112/* Define to 1 if the elf64_getehdr function is in libelf.a */
1113#undef HAVE_ELF64_GETEHDR
1114
1115
1116/* see if __uint32_t is predefined in the compiler */
1117#undef HAVE___UINT32_T
1118
1119/* see if __uint64_t is predefined in the compiler */
1120#undef HAVE___UINT64_T
1121
1122/* Define 1 if sys/types.h defines __uint32_t */
1123#undef HAVE___UINT32_T_IN_SYS_TYPES_H
1124
1125/* Define 1 if  R_IA_64_DIR32LSB is defined (might be enum value) */
1126#undef HAVE_R_IA_64_DIR32LSB
1127
1128/* Define 1 if sys/ia64/elf.h exists*/
1129#undef HAVE_SYS_IA64_ELF_H
1130
1131/* Define 1 if want to build with 32/64bit section offsets for ia64 */
1132/* per the dwarf2 committee proposal adopted Dec 1999 */
1133#undef HAVE_DWARF2_99_EXTENSION
1134
1135/* Define 1 if want only 32bit section offsets per pure dwarf2.0.0 spec */
1136/* Only one of HAVE_OLD_DWARF2_32BIT_OFFSET or HAVE_DWARF2_99_EXTENSION */
1137/* may be defined */
1138#undef HAVE_OLD_DWARF2_32BIT_OFFSET
1139
1140�0707010001ad540000812400011e740000000a00000001402068270000029b000000660000000000000000000000000000001700000000libdwarf/bldDWindex.sh����sed -n -e '/^%%Page.*/p' -e '/.*DW_.*/p' <dwarf.v2.ps  |
1141sed -n  -e '/^%%Page.*/p' -e 's/.*\(DW_[a-z_A-Z]*\).*/\1/p' |
1142nawk '  /^%%Page/{ p = $2  } \
1143	 /DW_/	{ printf "%-30s  %04d \n",$1,p \
1144	}'   | sort  -u  |
1145nawk ' BEGIN {h = "xx"}  		\
1146         {  				\
1147	    done = 0 ; 			\
1148            if ( $1 != h ) {     	\
1149	 	  if(h != "xx") { 	\
1150			printf "%-30s %s\n",h, pgs ; \
1151			h = $1 ;	\
1152			tv = $2 + 0 ;   \
1153			done = 1  ;     \
1154			pgs = "" tv 	\
1155 		  }		 	\
1156	     }				\
1157	     h = $1 ;                   \
1158	     if(done == 0 ) {  		\
1159		tv = $2 + 0 ;           \
1160		pgs = pgs ", "  tv      \
1161	     }    			\
1162	  } 				\
1163          END { printf "%-30s %s\n",h,pgs }  '
1164�0707010001ad55000041ed00011e740000000a000000024020682800000000000000660000000000000000000000000000001000000000libdwarf/cmplrs���0707010001ad560000812400011e740000000a00000001402068280000072c000000660000000000000000000000000000002400000000libdwarf/cmplrs/dwarf_addr_finder.h���/*
1165   dwarf_addr_finder.h
1166   $Source: /plroot/cmplrs.src/v7.4.2m/.RCS/PL/include/cmplrs/RCS/dwarf_addr_finder.h,v $
1167   $Date: 2002/06/11 17:49:06 $
1168
1169   Defines user interface.
1170
1171*/
1172
1173/* return codes for functions
1174*/
1175#define DW_DLV_NO_ENTRY -1
1176#define DW_DLV_OK        0
1177#define DW_DLV_ERROR     1
1178
1179
1180/* the following are the 'section' number passed to the called-back
1181   function.
1182   The called-back application must translate this to the
1183   appropriate elf section number/pointer.
1184
1185   Putting this burden on the application avoids having to store
1186   the numbers in the Dwarf_Debug structure (thereby saving space
1187   for most consumers).
1188*/
1189#define DW_SECTION_INFO      0
1190#define DW_SECTION_FRAME     1
1191#define DW_SECTION_ARANGES   2
1192#define DW_SECTION_LINE      3
1193#define DW_SECTION_LOC       4  /* .debug_loc */
1194
1195/* section is one of the above codes: it specifies a section.
1196   secoff is the offset in the dwarf section.
1197   existingAddr is the value at the specified offset (so the
1198	called back routine can sanity check the proceedings).
1199   It's up to the caller to know the size of an address (4 or 8)
1200   and update the right number of bytes.
1201*/
1202typedef int (*Dwarf_addr_callback_func)   (int /*section*/,
1203        Dwarf_Off /*secoff*/, Dwarf_Addr /*existingAddr*/);
1204
1205/* call this to do the work: it calls back thru cb_func
1206   once per each address to be modified.
1207   Once this returns you are done.
1208   Returns DW_DLV_OK if finished ok.
1209   Returns DW_DLV_ERROR if there was some kind of error, in which
1210	the dwarf error number was passed back thu the dwerr ptr.
1211   Returns DW_DLV_NO_ENTRY if there are no relevant dwarf sections,
1212	so there were no addresses to be modified (and none
1213	called back).
1214*/
1215int _dwarf_addr_finder(dwarf_elf_handle elf_file_ptr,
1216                Dwarf_addr_callback_func cb_func,
1217                int *dwerr);
1218
12190707010001ad570000816d00011e740000000a000000014020682700009668000000660000000000000000000000000000001600000000libdwarf/config.guess�#! /bin/sh
1220# Attempt to guess a canonical system name.
1221#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
1222#   Free Software Foundation, Inc.
1223
1224timestamp='2001-09-04'
1225
1226# This file is free software; you can redistribute it and/or modify it
1227# under the terms of the GNU General Public License as published by
1228# the Free Software Foundation; either version 2 of the License, or
1229# (at your option) any later version.
1230#
1231# This program is distributed in the hope that it will be useful, but
1232# WITHOUT ANY WARRANTY; without even the implied warranty of
1233# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1234# General Public License for more details.
1235#
1236# You should have received a copy of the GNU General Public License
1237# along with this program; if not, write to the Free Software
1238# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
1239#
1240# As a special exception to the GNU General Public License, if you
1241# distribute this file as part of a program that contains a
1242# configuration script generated by Autoconf, you may include it under
1243# the same distribution terms that you use for the rest of that program.
1244
1245# Written by Per Bothner <bothner@cygnus.com>.
1246# Please send patches to <config-patches@gnu.org>.
1247#
1248# This script attempts to guess a canonical system name similar to
1249# config.sub.  If it succeeds, it prints the system name on stdout, and
1250# exits with 0.  Otherwise, it exits with 1.
1251#
1252# The plan is that this can be called by configure scripts if you
1253# don't specify an explicit build system type.
1254
1255me=`echo "$0" | sed -e 's,.*/,,'`
1256
1257usage="\
1258Usage: $0 [OPTION]
1259
1260Output the configuration name of the system \`$me' is run on.
1261
1262Operation modes:
1263  -h, --help         print this help, then exit
1264  -t, --time-stamp   print date of last modification, then exit
1265  -v, --version      print version number, then exit
1266
1267Report bugs and patches to <config-patches@gnu.org>."
1268
1269version="\
1270GNU config.guess ($timestamp)
1271
1272Originally written by Per Bothner.
1273Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
1274Free Software Foundation, Inc.
1275
1276This is free software; see the source for copying conditions.  There is NO
1277warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
1278
1279help="
1280Try \`$me --help' for more information."
1281
1282# Parse command line
1283while test $# -gt 0 ; do
1284  case $1 in
1285    --time-stamp | --time* | -t )
1286       echo "$timestamp" ; exit 0 ;;
1287    --version | -v )
1288       echo "$version" ; exit 0 ;;
1289    --help | --h* | -h )
1290       echo "$usage"; exit 0 ;;
1291    -- )     # Stop option processing
1292       shift; break ;;
1293    - )	# Use stdin as input.
1294       break ;;
1295    -* )
1296       echo "$me: invalid option $1$help" >&2
1297       exit 1 ;;
1298    * )
1299       break ;;
1300  esac
1301done
1302
1303if test $# != 0; then
1304  echo "$me: too many arguments$help" >&2
1305  exit 1
1306fi
1307
1308
1309dummy=dummy-$$
1310trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15
1311
1312# CC_FOR_BUILD -- compiler used by this script.
1313# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
1314# use `HOST_CC' if defined, but it is deprecated.
1315
1316set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in
1317 ,,)    echo "int dummy(){}" > $dummy.c ;
1318	for c in cc gcc c89 ; do
1319	  ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ;
1320	  if test $? = 0 ; then
1321	     CC_FOR_BUILD="$c"; break ;
1322	  fi ;
1323	done ;
1324	rm -f $dummy.c $dummy.o $dummy.rel ;
1325	if test x"$CC_FOR_BUILD" = x ; then
1326	  CC_FOR_BUILD=no_compiler_found ;
1327	fi
1328	;;
1329 ,,*)   CC_FOR_BUILD=$CC ;;
1330 ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
1331esac'
1332
1333# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
1334# (ghazi@noc.rutgers.edu 1994-08-24)
1335if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
1336	PATH=$PATH:/.attbin ; export PATH
1337fi
1338
1339UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
1340UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
1341UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
1342UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
1343
1344# Note: order is significant - the case branches are not exclusive.
1345
1346case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
1347    *:NetBSD:*:*)
1348	# Netbsd (nbsd) targets should (where applicable) match one or
1349	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
1350	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
1351	# switched to ELF, *-*-netbsd* would select the old
1352	# object file format.  This provides both forward
1353	# compatibility and a consistent mechanism for selecting the
1354	# object file format.
1355	# Determine the machine/vendor (is the vendor relevant).
1356	case "${UNAME_MACHINE}" in
1357	    amiga) machine=m68k-unknown ;;
1358	    arm32) machine=arm-unknown ;;
1359	    atari*) machine=m68k-atari ;;
1360	    sun3*) machine=m68k-sun ;;
1361	    mac68k) machine=m68k-apple ;;
1362	    macppc) machine=powerpc-apple ;;
1363	    hp3[0-9][05]) machine=m68k-hp ;;
1364	    ibmrt|romp-ibm) machine=romp-ibm ;;
1365	    *) machine=${UNAME_MACHINE}-unknown ;;
1366	esac
1367	# The Operating System including object format, if it has switched
1368	# to ELF recently, or will in the future.
1369	case "${UNAME_MACHINE}" in
1370	    i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k)
1371		eval $set_cc_for_build
1372		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
1373			| grep __ELF__ >/dev/null
1374		then
1375		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
1376		    # Return netbsd for either.  FIX?
1377		    os=netbsd
1378		else
1379		    os=netbsdelf
1380		fi
1381		;;
1382	    *)
1383	        os=netbsd
1384		;;
1385	esac
1386	# The OS release
1387	release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
1388	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
1389	# contains redundant information, the shorter form:
1390	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
1391	echo "${machine}-${os}${release}"
1392	exit 0 ;;
1393    alpha:OSF1:*:*)
1394	if test $UNAME_RELEASE = "V4.0"; then
1395		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
1396	fi
1397	# A Vn.n version is a released version.
1398	# A Tn.n version is a released field test version.
1399	# A Xn.n version is an unreleased experimental baselevel.
1400	# 1.2 uses "1.2" for uname -r.
1401	cat <<EOF >$dummy.s
1402	.data
1403\$Lformat:
1404	.byte 37,100,45,37,120,10,0	# "%d-%x\n"
1405
1406	.text
1407	.globl main
1408	.align 4
1409	.ent main
1410main:
1411	.frame \$30,16,\$26,0
1412	ldgp \$29,0(\$27)
1413	.prologue 1
1414	.long 0x47e03d80 # implver \$0
1415	lda \$2,-1
1416	.long 0x47e20c21 # amask \$2,\$1
1417	lda \$16,\$Lformat
1418	mov \$0,\$17
1419	not \$1,\$18
1420	jsr \$26,printf
1421	ldgp \$29,0(\$26)
1422	mov 0,\$16
1423	jsr \$26,exit
1424	.end main
1425EOF
1426	eval $set_cc_for_build
1427	$CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
1428	if test "$?" = 0 ; then
1429		case `./$dummy` in
1430			0-0)
1431				UNAME_MACHINE="alpha"
1432				;;
1433			1-0)
1434				UNAME_MACHINE="alphaev5"
1435				;;
1436			1-1)
1437				UNAME_MACHINE="alphaev56"
1438				;;
1439			1-101)
1440				UNAME_MACHINE="alphapca56"
1441				;;
1442			2-303)
1443				UNAME_MACHINE="alphaev6"
1444				;;
1445			2-307)
1446				UNAME_MACHINE="alphaev67"
1447				;;
1448			2-1307)
1449				UNAME_MACHINE="alphaev68"
1450				;;
1451		esac
1452	fi
1453	rm -f $dummy.s $dummy
1454	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
1455	exit 0 ;;
1456    Alpha\ *:Windows_NT*:*)
1457	# How do we know it's Interix rather than the generic POSIX subsystem?
1458	# Should we change UNAME_MACHINE based on the output of uname instead
1459	# of the specific Alpha model?
1460	echo alpha-pc-interix
1461	exit 0 ;;
1462    21064:Windows_NT:50:3)
1463	echo alpha-dec-winnt3.5
1464	exit 0 ;;
1465    Amiga*:UNIX_System_V:4.0:*)
1466	echo m68k-unknown-sysv4
1467	exit 0;;
1468    amiga:OpenBSD:*:*)
1469	echo m68k-unknown-openbsd${UNAME_RELEASE}
1470	exit 0 ;;
1471    *:[Aa]miga[Oo][Ss]:*:*)
1472	echo ${UNAME_MACHINE}-unknown-amigaos
1473	exit 0 ;;
1474    arc64:OpenBSD:*:*)
1475	echo mips64el-unknown-openbsd${UNAME_RELEASE}
1476	exit 0 ;;
1477    arc:OpenBSD:*:*)
1478	echo mipsel-unknown-openbsd${UNAME_RELEASE}
1479	exit 0 ;;
1480    hkmips:OpenBSD:*:*)
1481	echo mips-unknown-openbsd${UNAME_RELEASE}
1482	exit 0 ;;
1483    pmax:OpenBSD:*:*)
1484	echo mipsel-unknown-openbsd${UNAME_RELEASE}
1485	exit 0 ;;
1486    sgi:OpenBSD:*:*)
1487	echo mips-unknown-openbsd${UNAME_RELEASE}
1488	exit 0 ;;
1489    wgrisc:OpenBSD:*:*)
1490	echo mipsel-unknown-openbsd${UNAME_RELEASE}
1491	exit 0 ;;
1492    *:OS/390:*:*)
1493	echo i370-ibm-openedition
1494	exit 0 ;;
1495    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
1496	echo arm-acorn-riscix${UNAME_RELEASE}
1497	exit 0;;
1498    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
1499	echo hppa1.1-hitachi-hiuxmpp
1500	exit 0;;
1501    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
1502	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
1503	if test "`(/bin/universe) 2>/dev/null`" = att ; then
1504		echo pyramid-pyramid-sysv3
1505	else
1506		echo pyramid-pyramid-bsd
1507	fi
1508	exit 0 ;;
1509    NILE*:*:*:dcosx)
1510	echo pyramid-pyramid-svr4
1511	exit 0 ;;
1512    sun4H:SunOS:5.*:*)
1513	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
1514	exit 0 ;;
1515    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
1516	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
1517	exit 0 ;;
1518    i86pc:SunOS:5.*:*)
1519	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
1520	exit 0 ;;
1521    sun4*:SunOS:6*:*)
1522	# According to config.sub, this is the proper way to canonicalize
1523	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
1524	# it's likely to be more like Solaris than SunOS4.
1525	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
1526	exit 0 ;;
1527    sun4*:SunOS:*:*)
1528	case "`/usr/bin/arch -k`" in
1529	    Series*|S4*)
1530		UNAME_RELEASE=`uname -v`
1531		;;
1532	esac
1533	# Japanese Language versions have a version number like `4.1.3-JL'.
1534	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
1535	exit 0 ;;
1536    sun3*:SunOS:*:*)
1537	echo m68k-sun-sunos${UNAME_RELEASE}
1538	exit 0 ;;
1539    sun*:*:4.2BSD:*)
1540	UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
1541	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
1542	case "`/bin/arch`" in
1543	    sun3)
1544		echo m68k-sun-sunos${UNAME_RELEASE}
1545		;;
1546	    sun4)
1547		echo sparc-sun-sunos${UNAME_RELEASE}
1548		;;
1549	esac
1550	exit 0 ;;
1551    aushp:SunOS:*:*)
1552	echo sparc-auspex-sunos${UNAME_RELEASE}
1553	exit 0 ;;
1554    sparc*:NetBSD:*)
1555	echo `uname -p`-unknown-netbsd${UNAME_RELEASE}
1556	exit 0 ;;
1557    atari*:OpenBSD:*:*)
1558	echo m68k-unknown-openbsd${UNAME_RELEASE}
1559	exit 0 ;;
1560    # The situation for MiNT is a little confusing.  The machine name
1561    # can be virtually everything (everything which is not
1562    # "atarist" or "atariste" at least should have a processor
1563    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
1564    # to the lowercase version "mint" (or "freemint").  Finally
1565    # the system name "TOS" denotes a system which is actually not
1566    # MiNT.  But MiNT is downward compatible to TOS, so this should
1567    # be no problem.
1568    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
1569        echo m68k-atari-mint${UNAME_RELEASE}
1570	exit 0 ;;
1571    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
1572	echo m68k-atari-mint${UNAME_RELEASE}
1573        exit 0 ;;
1574    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
1575        echo m68k-atari-mint${UNAME_RELEASE}
1576	exit 0 ;;
1577    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
1578        echo m68k-milan-mint${UNAME_RELEASE}
1579        exit 0 ;;
1580    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
1581        echo m68k-hades-mint${UNAME_RELEASE}
1582        exit 0 ;;
1583    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
1584        echo m68k-unknown-mint${UNAME_RELEASE}
1585        exit 0 ;;
1586    sun3*:OpenBSD:*:*)
1587	echo m68k-unknown-openbsd${UNAME_RELEASE}
1588	exit 0 ;;
1589    mac68k:OpenBSD:*:*)
1590	echo m68k-unknown-openbsd${UNAME_RELEASE}
1591	exit 0 ;;
1592    mvme68k:OpenBSD:*:*)
1593	echo m68k-unknown-openbsd${UNAME_RELEASE}
1594	exit 0 ;;
1595    mvme88k:OpenBSD:*:*)
1596	echo m88k-unknown-openbsd${UNAME_RELEASE}
1597	exit 0 ;;
1598    powerpc:machten:*:*)
1599	echo powerpc-apple-machten${UNAME_RELEASE}
1600	exit 0 ;;
1601    RISC*:Mach:*:*)
1602	echo mips-dec-mach_bsd4.3
1603	exit 0 ;;
1604    RISC*:ULTRIX:*:*)
1605	echo mips-dec-ultrix${UNAME_RELEASE}
1606	exit 0 ;;
1607    VAX*:ULTRIX*:*:*)
1608	echo vax-dec-ultrix${UNAME_RELEASE}
1609	exit 0 ;;
1610    2020:CLIX:*:* | 2430:CLIX:*:*)
1611	echo clipper-intergraph-clix${UNAME_RELEASE}
1612	exit 0 ;;
1613    mips:*:*:UMIPS | mips:*:*:RISCos)
1614	eval $set_cc_for_build
1615	sed 's/^	//' << EOF >$dummy.c
1616#ifdef __cplusplus
1617#include <stdio.h>  /* for printf() prototype */
1618	int main (int argc, char *argv[]) {
1619#else
1620	int main (argc, argv) int argc; char *argv[]; {
1621#endif
1622	#if defined (host_mips) && defined (MIPSEB)
1623	#if defined (SYSTYPE_SYSV)
1624	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
1625	#endif
1626	#if defined (SYSTYPE_SVR4)
1627	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
1628	#endif
1629	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
1630	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
1631	#endif
1632	#endif
1633	  exit (-1);
1634	}
1635EOF
1636	$CC_FOR_BUILD $dummy.c -o $dummy \
1637	  && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
1638	  && rm -f $dummy.c $dummy && exit 0
1639	rm -f $dummy.c $dummy
1640	echo mips-mips-riscos${UNAME_RELEASE}
1641	exit 0 ;;
1642    Motorola:PowerMAX_OS:*:*)
1643	echo powerpc-motorola-powermax
1644	exit 0 ;;
1645    Night_Hawk:Power_UNIX:*:*)
1646	echo powerpc-harris-powerunix
1647	exit 0 ;;
1648    m88k:CX/UX:7*:*)
1649	echo m88k-harris-cxux7
1650	exit 0 ;;
1651    m88k:*:4*:R4*)
1652	echo m88k-motorola-sysv4
1653	exit 0 ;;
1654    m88k:*:3*:R3*)
1655	echo m88k-motorola-sysv3
1656	exit 0 ;;
1657    AViiON:dgux:*:*)
1658        # DG/UX returns AViiON for all architectures
1659        UNAME_PROCESSOR=`/usr/bin/uname -p`
1660	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
1661	then
1662	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
1663	       [ ${TARGET_BINARY_INTERFACE}x = x ]
1664	    then
1665		echo m88k-dg-dgux${UNAME_RELEASE}
1666	    else
1667		echo m88k-dg-dguxbcs${UNAME_RELEASE}
1668	    fi
1669	else
1670	    echo i586-dg-dgux${UNAME_RELEASE}
1671	fi
1672 	exit 0 ;;
1673    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
1674	echo m88k-dolphin-sysv3
1675	exit 0 ;;
1676    M88*:*:R3*:*)
1677	# Delta 88k system running SVR3
1678	echo m88k-motorola-sysv3
1679	exit 0 ;;
1680    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
1681	echo m88k-tektronix-sysv3
1682	exit 0 ;;
1683    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
1684	echo m68k-tektronix-bsd
1685	exit 0 ;;
1686    *:IRIX*:*:*)
1687	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
1688	exit 0 ;;
1689    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
1690	echo romp-ibm-aix      # uname -m gives an 8 hex-code CPU id
1691	exit 0 ;;              # Note that: echo "'`uname -s`'" gives 'AIX '
1692    i*86:AIX:*:*)
1693	echo i386-ibm-aix
1694	exit 0 ;;
1695    ia64:AIX:*:*)
1696	if [ -x /usr/bin/oslevel ] ; then
1697		IBM_REV=`/usr/bin/oslevel`
1698	else
1699		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
1700	fi
1701	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
1702	exit 0 ;;
1703    *:AIX:2:3)
1704	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
1705		eval $set_cc_for_build
1706		sed 's/^		//' << EOF >$dummy.c
1707		#include <sys/systemcfg.h>
1708
1709		main()
1710			{
1711			if (!__power_pc())
1712				exit(1);
1713			puts("powerpc-ibm-aix3.2.5");
1714			exit(0);
1715			}
1716EOF
1717		$CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
1718		rm -f $dummy.c $dummy
1719		echo rs6000-ibm-aix3.2.5
1720	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
1721		echo rs6000-ibm-aix3.2.4
1722	else
1723		echo rs6000-ibm-aix3.2
1724	fi
1725	exit 0 ;;
1726    *:AIX:*:[45])
1727	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'`
1728	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
1729		IBM_ARCH=rs6000
1730	else
1731		IBM_ARCH=powerpc
1732	fi
1733	if [ -x /usr/bin/oslevel ] ; then
1734		IBM_REV=`/usr/bin/oslevel`
1735	else
1736		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
1737	fi
1738	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
1739	exit 0 ;;
1740    *:AIX:*:*)
1741	echo rs6000-ibm-aix
1742	exit 0 ;;
1743    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
1744	echo romp-ibm-bsd4.4
1745	exit 0 ;;
1746    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
1747	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
1748	exit 0 ;;                           # report: romp-ibm BSD 4.3
1749    *:BOSX:*:*)
1750	echo rs6000-bull-bosx
1751	exit 0 ;;
1752    DPX/2?00:B.O.S.:*:*)
1753	echo m68k-bull-sysv3
1754	exit 0 ;;
1755    9000/[34]??:4.3bsd:1.*:*)
1756	echo m68k-hp-bsd
1757	exit 0 ;;
1758    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
1759	echo m68k-hp-bsd4.4
1760	exit 0 ;;
1761    9000/[34678]??:HP-UX:*:*)
1762	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
1763	case "${UNAME_MACHINE}" in
1764	    9000/31? )            HP_ARCH=m68000 ;;
1765	    9000/[34]?? )         HP_ARCH=m68k ;;
1766	    9000/[678][0-9][0-9])
1767              case "${HPUX_REV}" in
1768                11.[0-9][0-9])
1769                  if [ -x /usr/bin/getconf ]; then
1770                    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
1771                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
1772                    case "${sc_cpu_version}" in
1773                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
1774                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
1775                      532)                      # CPU_PA_RISC2_0
1776                        case "${sc_kernel_bits}" in
1777                          32) HP_ARCH="hppa2.0n" ;;
1778                          64) HP_ARCH="hppa2.0w" ;;
1779                        esac ;;
1780                    esac
1781                  fi ;;
1782              esac
1783              if [ "${HP_ARCH}" = "" ]; then
1784	      eval $set_cc_for_build
1785              sed 's/^              //' << EOF >$dummy.c
1786
1787              #define _HPUX_SOURCE
1788              #include <stdlib.h>
1789              #include <unistd.h>
1790
1791              int main ()
1792              {
1793              #if defined(_SC_KERNEL_BITS)
1794                  long bits = sysconf(_SC_KERNEL_BITS);
1795              #endif
1796                  long cpu  = sysconf (_SC_CPU_VERSION);
1797
1798                  switch (cpu)
1799              	{
1800              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
1801              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
1802              	case CPU_PA_RISC2_0:
1803              #if defined(_SC_KERNEL_BITS)
1804              	    switch (bits)
1805              		{
1806              		case 64: puts ("hppa2.0w"); break;
1807              		case 32: puts ("hppa2.0n"); break;
1808              		default: puts ("hppa2.0"); break;
1809              		} break;
1810              #else  /* !defined(_SC_KERNEL_BITS) */
1811              	    puts ("hppa2.0"); break;
1812              #endif
1813              	default: puts ("hppa1.0"); break;
1814              	}
1815                  exit (0);
1816              }
1817EOF
1818	    (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
1819	    if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
1820	    rm -f $dummy.c $dummy
1821	fi ;;
1822	esac
1823	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
1824	exit 0 ;;
1825    ia64:HP-UX:*:*)
1826	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
1827	echo ia64-hp-hpux${HPUX_REV}
1828	exit 0 ;;
1829    3050*:HI-UX:*:*)
1830	eval $set_cc_for_build
1831	sed 's/^	//' << EOF >$dummy.c
1832	#include <unistd.h>
1833	int
1834	main ()
1835	{
1836	  long cpu = sysconf (_SC_CPU_VERSION);
1837	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
1838	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
1839	     results, however.  */
1840	  if (CPU_IS_PA_RISC (cpu))
1841	    {
1842	      switch (cpu)
1843		{
1844		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
1845		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
1846		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
1847		  default: puts ("hppa-hitachi-hiuxwe2"); break;
1848		}
1849	    }
1850	  else if (CPU_IS_HP_MC68K (cpu))
1851	    puts ("m68k-hitachi-hiuxwe2");
1852	  else puts ("unknown-hitachi-hiuxwe2");
1853	  exit (0);
1854	}
1855EOF
1856	$CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
1857	rm -f $dummy.c $dummy
1858	echo unknown-hitachi-hiuxwe2
1859	exit 0 ;;
1860    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
1861	echo hppa1.1-hp-bsd
1862	exit 0 ;;
1863    9000/8??:4.3bsd:*:*)
1864	echo hppa1.0-hp-bsd
1865	exit 0 ;;
1866    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
1867	echo hppa1.0-hp-mpeix
1868	exit 0 ;;
1869    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
1870	echo hppa1.1-hp-osf
1871	exit 0 ;;
1872    hp8??:OSF1:*:*)
1873	echo hppa1.0-hp-osf
1874	exit 0 ;;
1875    i*86:OSF1:*:*)
1876	if [ -x /usr/sbin/sysversion ] ; then
1877	    echo ${UNAME_MACHINE}-unknown-osf1mk
1878	else
1879	    echo ${UNAME_MACHINE}-unknown-osf1
1880	fi
1881	exit 0 ;;
1882    parisc*:Lites*:*:*)
1883	echo hppa1.1-hp-lites
1884	exit 0 ;;
1885    hppa*:OpenBSD:*:*)
1886	echo hppa-unknown-openbsd
1887	exit 0 ;;
1888    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
1889	echo c1-convex-bsd
1890        exit 0 ;;
1891    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
1892	if getsysinfo -f scalar_acc
1893	then echo c32-convex-bsd
1894	else echo c2-convex-bsd
1895	fi
1896        exit 0 ;;
1897    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
1898	echo c34-convex-bsd
1899        exit 0 ;;
1900    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
1901	echo c38-convex-bsd
1902        exit 0 ;;
1903    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
1904	echo c4-convex-bsd
1905        exit 0 ;;
1906    CRAY*X-MP:*:*:*)
1907	echo xmp-cray-unicos
1908        exit 0 ;;
1909    CRAY*Y-MP:*:*:*)
1910	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
1911	exit 0 ;;
1912    CRAY*[A-Z]90:*:*:*)
1913	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
1914	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
1915	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
1916	      -e 's/\.[^.]*$/.X/'
1917	exit 0 ;;
1918    CRAY*TS:*:*:*)
1919	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
1920	exit 0 ;;
1921    CRAY*T3D:*:*:*)
1922	echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
1923	exit 0 ;;
1924    CRAY*T3E:*:*:*)
1925	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
1926	exit 0 ;;
1927    CRAY*SV1:*:*:*)
1928	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
1929	exit 0 ;;
1930    CRAY-2:*:*:*)
1931	echo cray2-cray-unicos
1932        exit 0 ;;
1933    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
1934	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
1935        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
1936        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
1937        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
1938        exit 0 ;;
1939    hp300:OpenBSD:*:*)
1940	echo m68k-unknown-openbsd${UNAME_RELEASE}
1941	exit 0 ;;
1942    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
1943	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
1944	exit 0 ;;
1945    sparc*:BSD/OS:*:*)
1946	echo sparc-unknown-bsdi${UNAME_RELEASE}
1947	exit 0 ;;
1948    *:BSD/OS:*:*)
1949	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
1950	exit 0 ;;
1951    *:FreeBSD:*:*)
1952	echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
1953	exit 0 ;;
1954    *:OpenBSD:*:*)
1955	echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
1956	exit 0 ;;
1957    i*:CYGWIN*:*)
1958	echo ${UNAME_MACHINE}-pc-cygwin
1959	exit 0 ;;
1960    i*:MINGW*:*)
1961	echo ${UNAME_MACHINE}-pc-mingw32
1962	exit 0 ;;
1963    i*:PW*:*)
1964	echo ${UNAME_MACHINE}-pc-pw32
1965	exit 0 ;;
1966    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
1967	# How do we know it's Interix rather than the generic POSIX subsystem?
1968	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
1969	# UNAME_MACHINE based on the output of uname instead of i386?
1970	echo i386-pc-interix
1971	exit 0 ;;
1972    i*:UWIN*:*)
1973	echo ${UNAME_MACHINE}-pc-uwin
1974	exit 0 ;;
1975    p*:CYGWIN*:*)
1976	echo powerpcle-unknown-cygwin
1977	exit 0 ;;
1978    prep*:SunOS:5.*:*)
1979	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
1980	exit 0 ;;
1981    *:GNU:*:*)
1982	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
1983	exit 0 ;;
1984    i*86:Minix:*:*)
1985	echo ${UNAME_MACHINE}-pc-minix
1986	exit 0 ;;
1987    arm*:Linux:*:*)
1988	echo ${UNAME_MACHINE}-unknown-linux-gnu
1989	exit 0 ;;
1990    ia64:Linux:*:*)
1991	echo ${UNAME_MACHINE}-unknown-linux
1992	exit 0 ;;
1993    m68*:Linux:*:*)
1994	echo ${UNAME_MACHINE}-unknown-linux-gnu
1995	exit 0 ;;
1996    mips:Linux:*:*)
1997	case `sed -n '/^byte/s/^.*: \(.*\) endian/\1/p' < /proc/cpuinfo` in
1998	  big)    echo mips-unknown-linux-gnu && exit 0 ;;
1999	  little) echo mipsel-unknown-linux-gnu && exit 0 ;;
2000	esac
2001	;;
2002    ppc:Linux:*:*)
2003	echo powerpc-unknown-linux-gnu
2004	exit 0 ;;
2005    ppc64:Linux:*:*)
2006	echo powerpc64-unknown-linux-gnu
2007	exit 0 ;;
2008    alpha:Linux:*:*)
2009	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
2010	  EV5)   UNAME_MACHINE=alphaev5 ;;
2011	  EV56)  UNAME_MACHINE=alphaev56 ;;
2012	  PCA56) UNAME_MACHINE=alphapca56 ;;
2013	  PCA57) UNAME_MACHINE=alphapca56 ;;
2014	  EV6)   UNAME_MACHINE=alphaev6 ;;
2015	  EV67)  UNAME_MACHINE=alphaev67 ;;
2016	  EV68*) UNAME_MACHINE=alphaev68 ;;
2017        esac
2018	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
2019	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
2020	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
2021	exit 0 ;;
2022    parisc:Linux:*:* | hppa:Linux:*:*)
2023	# Look for CPU level
2024	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
2025	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
2026	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
2027	  *)    echo hppa-unknown-linux-gnu ;;
2028	esac
2029	exit 0 ;;
2030    parisc64:Linux:*:* | hppa64:Linux:*:*)
2031	echo hppa64-unknown-linux-gnu
2032	exit 0 ;;
2033    s390:Linux:*:* | s390x:Linux:*:*)
2034	echo ${UNAME_MACHINE}-ibm-linux
2035	exit 0 ;;
2036    sh*:Linux:*:*)
2037	echo ${UNAME_MACHINE}-unknown-linux-gnu
2038	exit 0 ;;
2039    sparc:Linux:*:* | sparc64:Linux:*:*)
2040	echo ${UNAME_MACHINE}-unknown-linux-gnu
2041	exit 0 ;;
2042    x86_64:Linux:*:*)
2043	echo x86_64-unknown-linux-gnu
2044	exit 0 ;;
2045    i*86:Linux:*:*)
2046	# The BFD linker knows what the default object file format is, so
2047	# first see if it will tell us. cd to the root directory to prevent
2048	# problems with other programs or directories called `ld' in the path.
2049	ld_supported_targets=`cd /; ld --help 2>&1 \
2050			 | sed -ne '/supported targets:/!d
2051				    s/[ 	][ 	]*/ /g
2052				    s/.*supported targets: *//
2053				    s/ .*//
2054				    p'`
2055        case "$ld_supported_targets" in
2056	  elf32-i386)
2057		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
2058		;;
2059	  a.out-i386-linux)
2060		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
2061		exit 0 ;;
2062	  coff-i386)
2063		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
2064		exit 0 ;;
2065	  "")
2066		# Either a pre-BFD a.out linker (linux-gnuoldld) or
2067		# one that does not give us useful --help.
2068		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
2069		exit 0 ;;
2070	esac
2071	# Determine whether the default compiler is a.out or elf
2072	eval $set_cc_for_build
2073	cat >$dummy.c <<EOF
2074#include <features.h>
2075#ifdef __cplusplus
2076#include <stdio.h>  /* for printf() prototype */
2077	int main (int argc, char *argv[]) {
2078#else
2079	int main (argc, argv) int argc; char *argv[]; {
2080#endif
2081#ifdef __ELF__
2082# ifdef __GLIBC__
2083#  if __GLIBC__ >= 2
2084    printf ("%s-pc-linux-gnu\n", argv[1]);
2085#  else
2086    printf ("%s-pc-linux-gnulibc1\n", argv[1]);
2087#  endif
2088# else
2089   printf ("%s-pc-linux-gnulibc1\n", argv[1]);
2090# endif
2091#else
2092  printf ("%s-pc-linux-gnuaout\n", argv[1]);
2093#endif
2094  return 0;
2095}
2096EOF
2097	$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0
2098	rm -f $dummy.c $dummy
2099	test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
2100	;;
2101    i*86:DYNIX/ptx:4*:*)
2102	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
2103	# earlier versions are messed up and put the nodename in both
2104	# sysname and nodename.
2105	echo i386-sequent-sysv4
2106	exit 0 ;;
2107    i*86:UNIX_SV:4.2MP:2.*)
2108        # Unixware is an offshoot of SVR4, but it has its own version
2109        # number series starting with 2...
2110        # I am not positive that other SVR4 systems won't match this,
2111	# I just have to hope.  -- rms.
2112        # Use sysv4.2uw... so that sysv4* matches it.
2113	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
2114	exit 0 ;;
2115    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
2116	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
2117	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
2118		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
2119	else
2120		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
2121	fi
2122	exit 0 ;;
2123    i*86:*:5:[78]*)
2124	case `/bin/uname -X | grep "^Machine"` in
2125	    *486*)	     UNAME_MACHINE=i486 ;;
2126	    *Pentium)	     UNAME_MACHINE=i586 ;;
2127	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
2128	esac
2129	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
2130	exit 0 ;;
2131    i*86:*:3.2:*)
2132	if test -f /usr/options/cb.name; then
2133		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
2134		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
2135	elif /bin/uname -X 2>/dev/null >/dev/null ; then
2136		UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
2137		(/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
2138		(/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
2139			&& UNAME_MACHINE=i586
2140		(/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \
2141			&& UNAME_MACHINE=i686
2142		(/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
2143			&& UNAME_MACHINE=i686
2144		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
2145	else
2146		echo ${UNAME_MACHINE}-pc-sysv32
2147	fi
2148	exit 0 ;;
2149    i*86:*DOS:*:*)
2150	echo ${UNAME_MACHINE}-pc-msdosdjgpp
2151	exit 0 ;;
2152    pc:*:*:*)
2153	# Left here for compatibility:
2154        # uname -m prints for DJGPP always 'pc', but it prints nothing about
2155        # the processor, so we play safe by assuming i386.
2156	echo i386-pc-msdosdjgpp
2157        exit 0 ;;
2158    Intel:Mach:3*:*)
2159	echo i386-pc-mach3
2160	exit 0 ;;
2161    paragon:*:*:*)
2162	echo i860-intel-osf1
2163	exit 0 ;;
2164    i860:*:4.*:*) # i860-SVR4
2165	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
2166	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
2167	else # Add other i860-SVR4 vendors below as they are discovered.
2168	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
2169	fi
2170	exit 0 ;;
2171    mini*:CTIX:SYS*5:*)
2172	# "miniframe"
2173	echo m68010-convergent-sysv
2174	exit 0 ;;
2175    M68*:*:R3V[567]*:*)
2176	test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
2177    3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
2178	OS_REL=''
2179	test -r /etc/.relid \
2180	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
2181	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
2182	  && echo i486-ncr-sysv4.3${OS_REL} && exit 0
2183	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
2184	  && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
2185    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
2186        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
2187          && echo i486-ncr-sysv4 && exit 0 ;;
2188    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
2189	echo m68k-unknown-lynxos${UNAME_RELEASE}
2190	exit 0 ;;
2191    mc68030:UNIX_System_V:4.*:*)
2192	echo m68k-atari-sysv4
2193	exit 0 ;;
2194    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
2195	echo i386-unknown-lynxos${UNAME_RELEASE}
2196	exit 0 ;;
2197    TSUNAMI:LynxOS:2.*:*)
2198	echo sparc-unknown-lynxos${UNAME_RELEASE}
2199	exit 0 ;;
2200    rs6000:LynxOS:2.*:*)
2201	echo rs6000-unknown-lynxos${UNAME_RELEASE}
2202	exit 0 ;;
2203    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
2204	echo powerpc-unknown-lynxos${UNAME_RELEASE}
2205	exit 0 ;;
2206    SM[BE]S:UNIX_SV:*:*)
2207	echo mips-dde-sysv${UNAME_RELEASE}
2208	exit 0 ;;
2209    RM*:ReliantUNIX-*:*:*)
2210	echo mips-sni-sysv4
2211	exit 0 ;;
2212    RM*:SINIX-*:*:*)
2213	echo mips-sni-sysv4
2214	exit 0 ;;
2215    *:SINIX-*:*:*)
2216	if uname -p 2>/dev/null >/dev/null ; then
2217		UNAME_MACHINE=`(uname -p) 2>/dev/null`
2218		echo ${UNAME_MACHINE}-sni-sysv4
2219	else
2220		echo ns32k-sni-sysv
2221	fi
2222	exit 0 ;;
2223    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
2224                      # says <Richard.M.Bartel@ccMail.Census.GOV>
2225        echo i586-unisys-sysv4
2226        exit 0 ;;
2227    *:UNIX_System_V:4*:FTX*)
2228	# From Gerald Hewes <hewes@openmarket.com>.
2229	# How about differentiating between stratus architectures? -djm
2230	echo hppa1.1-stratus-sysv4
2231	exit 0 ;;
2232    *:*:*:FTX*)
2233	# From seanf@swdc.stratus.com.
2234	echo i860-stratus-sysv4
2235	exit 0 ;;
2236    *:VOS:*:*)
2237	# From Paul.Green@stratus.com.
2238	echo hppa1.1-stratus-vos
2239	exit 0 ;;
2240    mc68*:A/UX:*:*)
2241	echo m68k-apple-aux${UNAME_RELEASE}
2242	exit 0 ;;
2243    news*:NEWS-OS:6*:*)
2244	echo mips-sony-newsos6
2245	exit 0 ;;
2246    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
2247	if [ -d /usr/nec ]; then
2248	        echo mips-nec-sysv${UNAME_RELEASE}
2249	else
2250	        echo mips-unknown-sysv${UNAME_RELEASE}
2251	fi
2252        exit 0 ;;
2253    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
2254	echo powerpc-be-beos
2255	exit 0 ;;
2256    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
2257	echo powerpc-apple-beos
2258	exit 0 ;;
2259    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
2260	echo i586-pc-beos
2261	exit 0 ;;
2262    SX-4:SUPER-UX:*:*)
2263	echo sx4-nec-superux${UNAME_RELEASE}
2264	exit 0 ;;
2265    SX-5:SUPER-UX:*:*)
2266	echo sx5-nec-superux${UNAME_RELEASE}
2267	exit 0 ;;
2268    Power*:Rhapsody:*:*)
2269	echo powerpc-apple-rhapsody${UNAME_RELEASE}
2270	exit 0 ;;
2271    *:Rhapsody:*:*)
2272	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
2273	exit 0 ;;
2274    *:Darwin:*:*)
2275	echo `uname -p`-apple-darwin${UNAME_RELEASE}
2276	exit 0 ;;
2277    *:procnto*:*:* | *:QNX:[0123456789]*:*)
2278	if test "${UNAME_MACHINE}" = "x86pc"; then
2279		UNAME_MACHINE=pc
2280	fi
2281	echo `uname -p`-${UNAME_MACHINE}-nto-qnx
2282	exit 0 ;;
2283    *:QNX:*:4*)
2284	echo i386-pc-qnx
2285	exit 0 ;;
2286    NSR-[KW]:NONSTOP_KERNEL:*:*)
2287	echo nsr-tandem-nsk${UNAME_RELEASE}
2288	exit 0 ;;
2289    *:NonStop-UX:*:*)
2290	echo mips-compaq-nonstopux
2291	exit 0 ;;
2292    BS2000:POSIX*:*:*)
2293	echo bs2000-siemens-sysv
2294	exit 0 ;;
2295    DS/*:UNIX_System_V:*:*)
2296	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
2297	exit 0 ;;
2298    *:Plan9:*:*)
2299	# "uname -m" is not consistent, so use $cputype instead. 386
2300	# is converted to i386 for consistency with other x86
2301	# operating systems.
2302	if test "$cputype" = "386"; then
2303	    UNAME_MACHINE=i386
2304	else
2305	    UNAME_MACHINE="$cputype"
2306	fi
2307	echo ${UNAME_MACHINE}-unknown-plan9
2308	exit 0 ;;
2309    i*86:OS/2:*:*)
2310	# If we were able to find `uname', then EMX Unix compatibility
2311	# is probably installed.
2312	echo ${UNAME_MACHINE}-pc-os2-emx
2313	exit 0 ;;
2314    *:TOPS-10:*:*)
2315	echo pdp10-unknown-tops10
2316	exit 0 ;;
2317    *:TENEX:*:*)
2318	echo pdp10-unknown-tenex
2319	exit 0 ;;
2320    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
2321	echo pdp10-dec-tops20
2322	exit 0 ;;
2323    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
2324	echo pdp10-xkl-tops20
2325	exit 0 ;;
2326    *:TOPS-20:*:*)
2327	echo pdp10-unknown-tops20
2328	exit 0 ;;
2329    *:ITS:*:*)
2330	echo pdp10-unknown-its
2331	exit 0 ;;
2332    i*86:XTS-300:*:STOP)
2333	echo ${UNAME_MACHINE}-unknown-stop
2334	exit 0 ;;
2335    i*86:atheos:*:*)
2336	echo ${UNAME_MACHINE}-unknown-atheos
2337	exit 0 ;;
2338esac
2339
2340#echo '(No uname command or uname output not recognized.)' 1>&2
2341#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
2342
2343eval $set_cc_for_build
2344cat >$dummy.c <<EOF
2345#ifdef _SEQUENT_
2346# include <sys/types.h>
2347# include <sys/utsname.h>
2348#endif
2349main ()
2350{
2351#if defined (sony)
2352#if defined (MIPSEB)
2353  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
2354     I don't know....  */
2355  printf ("mips-sony-bsd\n"); exit (0);
2356#else
2357#include <sys/param.h>
2358  printf ("m68k-sony-newsos%s\n",
2359#ifdef NEWSOS4
2360          "4"
2361#else
2362	  ""
2363#endif
2364         ); exit (0);
2365#endif
2366#endif
2367
2368#if defined (__arm) && defined (__acorn) && defined (__unix)
2369  printf ("arm-acorn-riscix"); exit (0);
2370#endif
2371
2372#if defined (hp300) && !defined (hpux)
2373  printf ("m68k-hp-bsd\n"); exit (0);
2374#endif
2375
2376#if defined (NeXT)
2377#if !defined (__ARCHITECTURE__)
2378#define __ARCHITECTURE__ "m68k"
2379#endif
2380  int version;
2381  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
2382  if (version < 4)
2383    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
2384  else
2385    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
2386  exit (0);
2387#endif
2388
2389#if defined (MULTIMAX) || defined (n16)
2390#if defined (UMAXV)
2391  printf ("ns32k-encore-sysv\n"); exit (0);
2392#else
2393#if defined (CMU)
2394  printf ("ns32k-encore-mach\n"); exit (0);
2395#else
2396  printf ("ns32k-encore-bsd\n"); exit (0);
2397#endif
2398#endif
2399#endif
2400
2401#if defined (__386BSD__)
2402  printf ("i386-pc-bsd\n"); exit (0);
2403#endif
2404
2405#if defined (sequent)
2406#if defined (i386)
2407  printf ("i386-sequent-dynix\n"); exit (0);
2408#endif
2409#if defined (ns32000)
2410  printf ("ns32k-sequent-dynix\n"); exit (0);
2411#endif
2412#endif
2413
2414#if defined (_SEQUENT_)
2415    struct utsname un;
2416
2417    uname(&un);
2418
2419    if (strncmp(un.version, "V2", 2) == 0) {
2420	printf ("i386-sequent-ptx2\n"); exit (0);
2421    }
2422    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
2423	printf ("i386-sequent-ptx1\n"); exit (0);
2424    }
2425    printf ("i386-sequent-ptx\n"); exit (0);
2426
2427#endif
2428
2429#if defined (vax)
2430# if !defined (ultrix)
2431#  include <sys/param.h>
2432#  if defined (BSD)
2433#   if BSD == 43
2434      printf ("vax-dec-bsd4.3\n"); exit (0);
2435#   else
2436#    if BSD == 199006
2437      printf ("vax-dec-bsd4.3reno\n"); exit (0);
2438#    else
2439      printf ("vax-dec-bsd\n"); exit (0);
2440#    endif
2441#   endif
2442#  else
2443    printf ("vax-dec-bsd\n"); exit (0);
2444#  endif
2445# else
2446    printf ("vax-dec-ultrix\n"); exit (0);
2447# endif
2448#endif
2449
2450#if defined (alliant) && defined (i860)
2451  printf ("i860-alliant-bsd\n"); exit (0);
2452#endif
2453
2454  exit (1);
2455}
2456EOF
2457
2458$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0
2459rm -f $dummy.c $dummy
2460
2461# Apollos put the system type in the environment.
2462
2463test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
2464
2465# Convex versions that predate uname can use getsysinfo(1)
2466
2467if [ -x /usr/convex/getsysinfo ]
2468then
2469    case `getsysinfo -f cpu_type` in
2470    c1*)
2471	echo c1-convex-bsd
2472	exit 0 ;;
2473    c2*)
2474	if getsysinfo -f scalar_acc
2475	then echo c32-convex-bsd
2476	else echo c2-convex-bsd
2477	fi
2478	exit 0 ;;
2479    c34*)
2480	echo c34-convex-bsd
2481	exit 0 ;;
2482    c38*)
2483	echo c38-convex-bsd
2484	exit 0 ;;
2485    c4*)
2486	echo c4-convex-bsd
2487	exit 0 ;;
2488    esac
2489fi
2490
2491cat >&2 <<EOF
2492$0: unable to guess system type
2493
2494This script, last modified $timestamp, has failed to recognize
2495the operating system you are using. It is advised that you
2496download the most up to date version of the config scripts from
2497
2498    ftp://ftp.gnu.org/pub/gnu/config/
2499
2500If the version you run ($0) is already up to date, please
2501send the following data and any information you think might be
2502pertinent to <config-patches@gnu.org> in order to provide the needed
2503information to handle your system.
2504
2505config.guess timestamp = $timestamp
2506
2507uname -m = `(uname -m) 2>/dev/null || echo unknown`
2508uname -r = `(uname -r) 2>/dev/null || echo unknown`
2509uname -s = `(uname -s) 2>/dev/null || echo unknown`
2510uname -v = `(uname -v) 2>/dev/null || echo unknown`
2511
2512/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
2513/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
2514
2515hostinfo               = `(hostinfo) 2>/dev/null`
2516/bin/universe          = `(/bin/universe) 2>/dev/null`
2517/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
2518/bin/arch              = `(/bin/arch) 2>/dev/null`
2519/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
2520/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
2521
2522UNAME_MACHINE = ${UNAME_MACHINE}
2523UNAME_RELEASE = ${UNAME_RELEASE}
2524UNAME_SYSTEM  = ${UNAME_SYSTEM}
2525UNAME_VERSION = ${UNAME_VERSION}
2526EOF
2527
2528exit 1
2529
2530# Local variables:
2531# eval: (add-hook 'write-file-hooks 'time-stamp)
2532# time-stamp-start: "timestamp='"
2533# time-stamp-format: "%:y-%02m-%02d"
2534# time-stamp-end: "'"
2535# End:
25360707010001ad580000812400011e740000000a0000000140206826000010e4000000660000000000000000000000000000001500000000libdwarf/config.h.in��/* config.h.in.  Generated from configure.in by autoheader.  */
2537/*
2538
2539  Copyright (C) 2000,2003,2004 Silicon Graphics, Inc.  All Rights Reserved.
2540
2541  This program is free software; you can redistribute it and/or modify it
2542  under the terms of version 2.1 of the GNU Lesser General Public License
2543  as published by the Free Software Foundation.
2544
2545  This program is distributed in the hope that it would be useful, but
2546  WITHOUT ANY WARRANTY; without even the implied warranty of
2547  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2548
2549  Further, this software is distributed without any warranty that it is
2550  free of the rightful claim of any third person regarding infringement
2551  or the like.  Any license provided herein, whether implied or
2552  otherwise, applies only to this software file.  Patent licenses, if
2553  any, provided herein do not apply to combinations of this program with
2554  other software, or any other product whatsoever.
2555
2556  You should have received a copy of the GNU Lesser General Public
2557  License along with this program; if not, write the Free Software
2558  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
2559  USA.
2560
2561  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
2562  Mountain View, CA 94043, or:
2563
2564  http://www.sgi.com
2565
2566  For further information regarding this notice, see:
2567
2568  http://oss.sgi.com/projects/GenInfo/NoticeExplan
2569
2570*/
2571
2572
2573
2574/* Define to 1 if the elf64_getshdr function is in libelf.a */
2575#undef HAVE_ELF64_GETSHDR
2576
2577/* Define to 1 if the elf64_getehdr function is in libelf.a */
2578#undef HAVE_ELF64_GETEHDR
2579
2580
2581/* see if __uint32_t is predefined in the compiler */
2582#undef HAVE___UINT32_T
2583
2584/* see if __uint64_t is predefined in the compiler */
2585#undef HAVE___UINT64_T
2586
2587/* Define 1 if sys/types.h defines __uint32_t */
2588#undef HAVE___UINT32_T_IN_SYS_TYPES_H
2589
2590/* Define 1 if  R_IA_64_DIR32LSB is defined (might be enum value) */
2591#undef HAVE_R_IA_64_DIR32LSB
2592
2593/* Define 1 if sys/ia64/elf.h exists*/
2594#undef HAVE_SYS_IA64_ELF_H
2595
2596/* Define 1 if want to build with 32/64bit section offsets for ia64 */
2597/* per the dwarf2 committee proposal adopted Dec 1999 */
2598#undef HAVE_DWARF2_99_EXTENSION
2599
2600/* Define 1 if want only 32bit section offsets per pure dwarf2.0.0 spec */
2601/* Only one of HAVE_OLD_DWARF2_32BIT_OFFSET or HAVE_DWARF2_99_EXTENSION */
2602/* may be defined */
2603#undef HAVE_OLD_DWARF2_32BIT_OFFSET
2604
2605
2606/* Define to 1 if you have the <alloca.h> header file. */
2607#undef HAVE_ALLOCA_H
2608
2609/* Define to 1 if you have the <elfaccess.h> header file. */
2610#undef HAVE_ELFACCESS_H
2611
2612/* Define to 1 if you have the <elf.h> header file. */
2613#undef HAVE_ELF_H
2614
2615/* Define to 1 if you have the <inttypes.h> header file. */
2616#undef HAVE_INTTYPES_H
2617
2618/* Define to 1 if you have the <libelf.h> header file. */
2619#undef HAVE_LIBELF_H
2620
2621/* Define to 1 if you have the <libelf/libelf.h> header file. */
2622#undef HAVE_LIBELF_LIBELF_H
2623
2624/* Define to 1 if you have the <memory.h> header file. */
2625#undef HAVE_MEMORY_H
2626
2627/* Define to 1 if you have the <sgidefs.h> header file. */
2628#undef HAVE_SGIDEFS_H
2629
2630/* Define to 1 if you have the <stdint.h> header file. */
2631#undef HAVE_STDINT_H
2632
2633/* Define to 1 if you have the <stdlib.h> header file. */
2634#undef HAVE_STDLIB_H
2635
2636/* Define to 1 if you have the <strings.h> header file. */
2637#undef HAVE_STRINGS_H
2638
2639/* Define to 1 if you have the <string.h> header file. */
2640#undef HAVE_STRING_H
2641
2642/* Define to 1 if you have the <sys/ia64/elf.h> header file. */
2643#undef HAVE_SYS_IA64_ELF_H
2644
2645/* Define to 1 if you have the <sys/stat.h> header file. */
2646#undef HAVE_SYS_STAT_H
2647
2648/* Define to 1 if you have the <sys/types.h> header file. */
2649#undef HAVE_SYS_TYPES_H
2650
2651/* Define to 1 if you have the <unistd.h> header file. */
2652#undef HAVE_UNISTD_H
2653
2654/* Define to the address where bug reports for this package should be sent. */
2655#undef PACKAGE_BUGREPORT
2656
2657/* Define to the full name of this package. */
2658#undef PACKAGE_NAME
2659
2660/* Define to the full name and version of this package. */
2661#undef PACKAGE_STRING
2662
2663/* Define to the one symbol short name of this package. */
2664#undef PACKAGE_TARNAME
2665
2666/* Define to the version of this package. */
2667#undef PACKAGE_VERSION
2668
2669/* Define to 1 if you have the ANSI C header files. */
2670#undef STDC_HEADERS
2671
2672/* Define to 1 if your processor stores words with the most significant byte
2673   first (like Motorola and SPARC, unlike Intel and VAX). */
2674#undef WORDS_BIGENDIAN
26750707010001ad590000816d00011e740000000a000000014020682800006e40000000660000000000000000000000000000001400000000libdwarf/config.sub���#! /bin/sh
2676# Configuration validation subroutine script.
2677#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
2678#   Free Software Foundation, Inc.
2679
2680timestamp='2001-09-07'
2681
2682# This file is (in principle) common to ALL GNU software.
2683# The presence of a machine in this file suggests that SOME GNU software
2684# can handle that machine.  It does not imply ALL GNU software can.
2685#
2686# This file is free software; you can redistribute it and/or modify
2687# it under the terms of the GNU General Public License as published by
2688# the Free Software Foundation; either version 2 of the License, or
2689# (at your option) any later version.
2690#
2691# This program is distributed in the hope that it will be useful,
2692# but WITHOUT ANY WARRANTY; without even the implied warranty of
2693# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2694# GNU General Public License for more details.
2695#
2696# You should have received a copy of the GNU General Public License
2697# along with this program; if not, write to the Free Software
2698# Foundation, Inc., 59 Temple Place - Suite 330,
2699# Boston, MA 02111-1307, USA.
2700
2701# As a special exception to the GNU General Public License, if you
2702# distribute this file as part of a program that contains a
2703# configuration script generated by Autoconf, you may include it under
2704# the same distribution terms that you use for the rest of that program.
2705
2706# Please send patches to <config-patches@gnu.org>.
2707#
2708# Configuration subroutine to validate and canonicalize a configuration type.
2709# Supply the specified configuration type as an argument.
2710# If it is invalid, we print an error message on stderr and exit with code 1.
2711# Otherwise, we print the canonical config type on stdout and succeed.
2712
2713# This file is supposed to be the same for all GNU packages
2714# and recognize all the CPU types, system types and aliases
2715# that are meaningful with *any* GNU software.
2716# Each package is responsible for reporting which valid configurations
2717# it does not support.  The user should be able to distinguish
2718# a failure to support a valid configuration from a meaningless
2719# configuration.
2720
2721# The goal of this file is to map all the various variations of a given
2722# machine specification into a single specification in the form:
2723#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
2724# or in some cases, the newer four-part form:
2725#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
2726# It is wrong to echo any other type of specification.
2727
2728me=`echo "$0" | sed -e 's,.*/,,'`
2729
2730usage="\
2731Usage: $0 [OPTION] CPU-MFR-OPSYS
2732       $0 [OPTION] ALIAS
2733
2734Canonicalize a configuration name.
2735
2736Operation modes:
2737  -h, --help         print this help, then exit
2738  -t, --time-stamp   print date of last modification, then exit
2739  -v, --version      print version number, then exit
2740
2741Report bugs and patches to <config-patches@gnu.org>."
2742
2743version="\
2744GNU config.sub ($timestamp)
2745
2746Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
2747Free Software Foundation, Inc.
2748
2749This is free software; see the source for copying conditions.  There is NO
2750warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
2751
2752help="
2753Try \`$me --help' for more information."
2754
2755# Parse command line
2756while test $# -gt 0 ; do
2757  case $1 in
2758    --time-stamp | --time* | -t )
2759       echo "$timestamp" ; exit 0 ;;
2760    --version | -v )
2761       echo "$version" ; exit 0 ;;
2762    --help | --h* | -h )
2763       echo "$usage"; exit 0 ;;
2764    -- )     # Stop option processing
2765       shift; break ;;
2766    - )	# Use stdin as input.
2767       break ;;
2768    -* )
2769       echo "$me: invalid option $1$help"
2770       exit 1 ;;
2771
2772    *local*)
2773       # First pass through any local machine types.
2774       echo $1
2775       exit 0;;
2776
2777    * )
2778       break ;;
2779  esac
2780done
2781
2782case $# in
2783 0) echo "$me: missing argument$help" >&2
2784    exit 1;;
2785 1) ;;
2786 *) echo "$me: too many arguments$help" >&2
2787    exit 1;;
2788esac
2789
2790# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
2791# Here we must recognize all the valid KERNEL-OS combinations.
2792maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
2793case $maybe_os in
2794  nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-*)
2795    os=-$maybe_os
2796    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
2797    ;;
2798  *)
2799    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
2800    if [ $basic_machine != $1 ]
2801    then os=`echo $1 | sed 's/.*-/-/'`
2802    else os=; fi
2803    ;;
2804esac
2805
2806### Let's recognize common machines as not being operating systems so
2807### that things like config.sub decstation-3100 work.  We also
2808### recognize some manufacturers as not being operating systems, so we
2809### can provide default operating systems below.
2810case $os in
2811	-sun*os*)
2812		# Prevent following clause from handling this invalid input.
2813		;;
2814	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
2815	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
2816	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
2817	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
2818	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
2819	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
2820	-apple | -axis)
2821		os=
2822		basic_machine=$1
2823		;;
2824	-sim | -cisco | -oki | -wec | -winbond)
2825		os=
2826		basic_machine=$1
2827		;;
2828	-scout)
2829		;;
2830	-wrs)
2831		os=-vxworks
2832		basic_machine=$1
2833		;;
2834	-chorusos*)
2835		os=-chorusos
2836		basic_machine=$1
2837		;;
2838 	-chorusrdb)
2839 		os=-chorusrdb
2840		basic_machine=$1
2841 		;;
2842	-hiux*)
2843		os=-hiuxwe2
2844		;;
2845	-sco5)
2846		os=-sco3.2v5
2847		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
2848		;;
2849	-sco4)
2850		os=-sco3.2v4
2851		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
2852		;;
2853	-sco3.2.[4-9]*)
2854		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
2855		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
2856		;;
2857	-sco3.2v[4-9]*)
2858		# Don't forget version if it is 3.2v4 or newer.
2859		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
2860		;;
2861	-sco*)
2862		os=-sco3.2v2
2863		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
2864		;;
2865	-udk*)
2866		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
2867		;;
2868	-isc)
2869		os=-isc2.2
2870		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
2871		;;
2872	-clix*)
2873		basic_machine=clipper-intergraph
2874		;;
2875	-isc*)
2876		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
2877		;;
2878	-lynx*)
2879		os=-lynxos
2880		;;
2881	-ptx*)
2882		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
2883		;;
2884	-windowsnt*)
2885		os=`echo $os | sed -e 's/windowsnt/winnt/'`
2886		;;
2887	-psos*)
2888		os=-psos
2889		;;
2890	-mint | -mint[0-9]*)
2891		basic_machine=m68k-atari
2892		os=-mint
2893		;;
2894esac
2895
2896# Decode aliases for certain CPU-COMPANY combinations.
2897case $basic_machine in
2898	# Recognize the basic CPU types without company name.
2899	# Some are omitted here because they have special meanings below.
2900	1750a | 580 \
2901	| a29k \
2902	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
2903	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
2904	| c4x | clipper \
2905	| d10v | d30v | dsp16xx \
2906	| fr30 \
2907	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
2908	| i370 | i860 | i960 | ia64 \
2909	| m32r | m68000 | m68k | m88k | mcore \
2910	| mips16 | mips64 | mips64el | mips64orion | mips64orionel \
2911	| mips64vr4100 | mips64vr4100el | mips64vr4300 \
2912	| mips64vr4300el | mips64vr5000 | mips64vr5000el \
2913	| mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \
2914	| mipsisa32 \
2915	| mn10200 | mn10300 \
2916	| ns16k | ns32k \
2917	| openrisc \
2918	| pdp10 | pdp11 | pj | pjl \
2919	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
2920	| pyramid \
2921	| s390 | s390x \
2922	| sh | sh[34] | sh[34]eb | shbe | shle \
2923	| sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \
2924	| stormy16 | strongarm \
2925	| tahoe | thumb | tic80 | tron \
2926	| v850 \
2927	| we32k \
2928	| x86 | xscale \
2929	| z8k)
2930		basic_machine=$basic_machine-unknown
2931		;;
2932	m6811 | m68hc11 | m6812 | m68hc12)
2933		# Motorola 68HC11/12.
2934		basic_machine=$basic_machine-unknown
2935		os=-none
2936		;;
2937	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
2938		;;
2939
2940	# We use `pc' rather than `unknown'
2941	# because (1) that's what they normally are, and
2942	# (2) the word "unknown" tends to confuse beginning users.
2943	i*86 | x86_64)
2944	  basic_machine=$basic_machine-pc
2945	  ;;
2946	# Object if more than one company name word.
2947	*-*-*)
2948		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
2949		exit 1
2950		;;
2951	# Recognize the basic CPU types with company name.
2952	580-* \
2953	| a29k-* \
2954	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
2955	| alphapca5[67]-* | arc-* \
2956	| arm-*  | armbe-* | armle-* | armv*-* \
2957	| bs2000-* \
2958	| c[123]* | c30-* | [cjt]90-* | c54x-* \
2959	| clipper-* | cray2-* | cydra-* \
2960	| d10v-* | d30v-* \
2961	| elxsi-* \
2962	| f30[01]-* | f700-* | fr30-* | fx80-* \
2963	| h8300-* | h8500-* \
2964	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
2965	| i*86-* | i860-* | i960-* | ia64-* \
2966	| m32r-* \
2967	| m68000-* | m680[01234]0-* | m68360-* | m683?2-* | m68k-* \
2968	| m88110-* | m88k-* | mcore-* \
2969	| mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \
2970	| mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \
2971	| mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \
2972	| mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \
2973	| none-* | np1-* | ns16k-* | ns32k-* \
2974	| orion-* \
2975	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
2976	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
2977	| pyramid-* \
2978	| romp-* | rs6000-* \
2979	| s390-* | s390x-* \
2980	| sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \
2981	| sparc-* | sparc64-* | sparc86x-* | sparclite-* \
2982	| sparcv9-* | sparcv9b-* | stormy16-* | strongarm-* | sv1-* \
2983	| t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \
2984	| v850-* | vax-* \
2985	| we32k-* \
2986	| x86-* | x86_64-* | xmp-* | xps100-* | xscale-* \
2987	| ymp-* \
2988	| z8k-*)
2989		;;
2990	# Recognize the various machine names and aliases which stand
2991	# for a CPU type and a company and sometimes even an OS.
2992	386bsd)
2993		basic_machine=i386-unknown
2994		os=-bsd
2995		;;
2996	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
2997		basic_machine=m68000-att
2998		;;
2999	3b*)
3000		basic_machine=we32k-att
3001		;;
3002	a29khif)
3003		basic_machine=a29k-amd
3004		os=-udi
3005		;;
3006	adobe68k)
3007		basic_machine=m68010-adobe
3008		os=-scout
3009		;;
3010	alliant | fx80)
3011		basic_machine=fx80-alliant
3012		;;
3013	altos | altos3068)
3014		basic_machine=m68k-altos
3015		;;
3016	am29k)
3017		basic_machine=a29k-none
3018		os=-bsd
3019		;;
3020	amdahl)
3021		basic_machine=580-amdahl
3022		os=-sysv
3023		;;
3024	amiga | amiga-*)
3025		basic_machine=m68k-unknown
3026		;;
3027	amigaos | amigados)
3028		basic_machine=m68k-unknown
3029		os=-amigaos
3030		;;
3031	amigaunix | amix)
3032		basic_machine=m68k-unknown
3033		os=-sysv4
3034		;;
3035	apollo68)
3036		basic_machine=m68k-apollo
3037		os=-sysv
3038		;;
3039	apollo68bsd)
3040		basic_machine=m68k-apollo
3041		os=-bsd
3042		;;
3043	aux)
3044		basic_machine=m68k-apple
3045		os=-aux
3046		;;
3047	balance)
3048		basic_machine=ns32k-sequent
3049		os=-dynix
3050		;;
3051	convex-c1)
3052		basic_machine=c1-convex
3053		os=-bsd
3054		;;
3055	convex-c2)
3056		basic_machine=c2-convex
3057		os=-bsd
3058		;;
3059	convex-c32)
3060		basic_machine=c32-convex
3061		os=-bsd
3062		;;
3063	convex-c34)
3064		basic_machine=c34-convex
3065		os=-bsd
3066		;;
3067	convex-c38)
3068		basic_machine=c38-convex
3069		os=-bsd
3070		;;
3071	cray | ymp)
3072		basic_machine=ymp-cray
3073		os=-unicos
3074		;;
3075	cray2)
3076		basic_machine=cray2-cray
3077		os=-unicos
3078		;;
3079	[cjt]90)
3080		basic_machine=${basic_machine}-cray
3081		os=-unicos
3082		;;
3083	crds | unos)
3084		basic_machine=m68k-crds
3085		;;
3086	cris | cris-* | etrax*)
3087		basic_machine=cris-axis
3088		;;
3089	da30 | da30-*)
3090		basic_machine=m68k-da30
3091		;;
3092	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
3093		basic_machine=mips-dec
3094		;;
3095	delta | 3300 | motorola-3300 | motorola-delta \
3096	      | 3300-motorola | delta-motorola)
3097		basic_machine=m68k-motorola
3098		;;
3099	delta88)
3100		basic_machine=m88k-motorola
3101		os=-sysv3
3102		;;
3103	dpx20 | dpx20-*)
3104		basic_machine=rs6000-bull
3105		os=-bosx
3106		;;
3107	dpx2* | dpx2*-bull)
3108		basic_machine=m68k-bull
3109		os=-sysv3
3110		;;
3111	ebmon29k)
3112		basic_machine=a29k-amd
3113		os=-ebmon
3114		;;
3115	elxsi)
3116		basic_machine=elxsi-elxsi
3117		os=-bsd
3118		;;
3119	encore | umax | mmax)
3120		basic_machine=ns32k-encore
3121		;;
3122	es1800 | OSE68k | ose68k | ose | OSE)
3123		basic_machine=m68k-ericsson
3124		os=-ose
3125		;;
3126	fx2800)
3127		basic_machine=i860-alliant
3128		;;
3129	genix)
3130		basic_machine=ns32k-ns
3131		;;
3132	gmicro)
3133		basic_machine=tron-gmicro
3134		os=-sysv
3135		;;
3136	go32)
3137		basic_machine=i386-pc
3138		os=-go32
3139		;;
3140	h3050r* | hiux*)
3141		basic_machine=hppa1.1-hitachi
3142		os=-hiuxwe2
3143		;;
3144	h8300hms)
3145		basic_machine=h8300-hitachi
3146		os=-hms
3147		;;
3148	h8300xray)
3149		basic_machine=h8300-hitachi
3150		os=-xray
3151		;;
3152	h8500hms)
3153		basic_machine=h8500-hitachi
3154		os=-hms
3155		;;
3156	harris)
3157		basic_machine=m88k-harris
3158		os=-sysv3
3159		;;
3160	hp300-*)
3161		basic_machine=m68k-hp
3162		;;
3163	hp300bsd)
3164		basic_machine=m68k-hp
3165		os=-bsd
3166		;;
3167	hp300hpux)
3168		basic_machine=m68k-hp
3169		os=-hpux
3170		;;
3171	hp3k9[0-9][0-9] | hp9[0-9][0-9])
3172		basic_machine=hppa1.0-hp
3173		;;
3174	hp9k2[0-9][0-9] | hp9k31[0-9])
3175		basic_machine=m68000-hp
3176		;;
3177	hp9k3[2-9][0-9])
3178		basic_machine=m68k-hp
3179		;;
3180	hp9k6[0-9][0-9] | hp6[0-9][0-9])
3181		basic_machine=hppa1.0-hp
3182		;;
3183	hp9k7[0-79][0-9] | hp7[0-79][0-9])
3184		basic_machine=hppa1.1-hp
3185		;;
3186	hp9k78[0-9] | hp78[0-9])
3187		# FIXME: really hppa2.0-hp
3188		basic_machine=hppa1.1-hp
3189		;;
3190	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
3191		# FIXME: really hppa2.0-hp
3192		basic_machine=hppa1.1-hp
3193		;;
3194	hp9k8[0-9][13679] | hp8[0-9][13679])
3195		basic_machine=hppa1.1-hp
3196		;;
3197	hp9k8[0-9][0-9] | hp8[0-9][0-9])
3198		basic_machine=hppa1.0-hp
3199		;;
3200	hppa-next)
3201		os=-nextstep3
3202		;;
3203	hppaosf)
3204		basic_machine=hppa1.1-hp
3205		os=-osf
3206		;;
3207	hppro)
3208		basic_machine=hppa1.1-hp
3209		os=-proelf
3210		;;
3211	i370-ibm* | ibm*)
3212		basic_machine=i370-ibm
3213		;;
3214# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
3215	i*86v32)
3216		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
3217		os=-sysv32
3218		;;
3219	i*86v4*)
3220		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
3221		os=-sysv4
3222		;;
3223	i*86v)
3224		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
3225		os=-sysv
3226		;;
3227	i*86sol2)
3228		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
3229		os=-solaris2
3230		;;
3231	i386mach)
3232		basic_machine=i386-mach
3233		os=-mach
3234		;;
3235	i386-vsta | vsta)
3236		basic_machine=i386-unknown
3237		os=-vsta
3238		;;
3239	iris | iris4d)
3240		basic_machine=mips-sgi
3241		case $os in
3242		    -irix*)
3243			;;
3244		    *)
3245			os=-irix4
3246			;;
3247		esac
3248		;;
3249	isi68 | isi)
3250		basic_machine=m68k-isi
3251		os=-sysv
3252		;;
3253	m88k-omron*)
3254		basic_machine=m88k-omron
3255		;;
3256	magnum | m3230)
3257		basic_machine=mips-mips
3258		os=-sysv
3259		;;
3260	merlin)
3261		basic_machine=ns32k-utek
3262		os=-sysv
3263		;;
3264	mingw32)
3265		basic_machine=i386-pc
3266		os=-mingw32
3267		;;
3268	miniframe)
3269		basic_machine=m68000-convergent
3270		;;
3271	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
3272		basic_machine=m68k-atari
3273		os=-mint
3274		;;
3275	mipsel*-linux*)
3276		basic_machine=mipsel-unknown
3277		os=-linux-gnu
3278		;;
3279	mips*-linux*)
3280		basic_machine=mips-unknown
3281		os=-linux-gnu
3282		;;
3283	mips3*-*)
3284		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
3285		;;
3286	mips3*)
3287		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
3288		;;
3289	mmix*)
3290		basic_machine=mmix-knuth
3291		os=-mmixware
3292		;;
3293	monitor)
3294		basic_machine=m68k-rom68k
3295		os=-coff
3296		;;
3297	msdos)
3298		basic_machine=i386-pc
3299		os=-msdos
3300		;;
3301	mvs)
3302		basic_machine=i370-ibm
3303		os=-mvs
3304		;;
3305	ncr3000)
3306		basic_machine=i486-ncr
3307		os=-sysv4
3308		;;
3309	netbsd386)
3310		basic_machine=i386-unknown
3311		os=-netbsd
3312		;;
3313	netwinder)
3314		basic_machine=armv4l-rebel
3315		os=-linux
3316		;;
3317	news | news700 | news800 | news900)
3318		basic_machine=m68k-sony
3319		os=-newsos
3320		;;
3321	news1000)
3322		basic_machine=m68030-sony
3323		os=-newsos
3324		;;
3325	news-3600 | risc-news)
3326		basic_machine=mips-sony
3327		os=-newsos
3328		;;
3329	necv70)
3330		basic_machine=v70-nec
3331		os=-sysv
3332		;;
3333	next | m*-next )
3334		basic_machine=m68k-next
3335		case $os in
3336		    -nextstep* )
3337			;;
3338		    -ns2*)
3339		      os=-nextstep2
3340			;;
3341		    *)
3342		      os=-nextstep3
3343			;;
3344		esac
3345		;;
3346	nh3000)
3347		basic_machine=m68k-harris
3348		os=-cxux
3349		;;
3350	nh[45]000)
3351		basic_machine=m88k-harris
3352		os=-cxux
3353		;;
3354	nindy960)
3355		basic_machine=i960-intel
3356		os=-nindy
3357		;;
3358	mon960)
3359		basic_machine=i960-intel
3360		os=-mon960
3361		;;
3362	nonstopux)
3363		basic_machine=mips-compaq
3364		os=-nonstopux
3365		;;
3366	np1)
3367		basic_machine=np1-gould
3368		;;
3369	nsr-tandem)
3370		basic_machine=nsr-tandem
3371		;;
3372	op50n-* | op60c-*)
3373		basic_machine=hppa1.1-oki
3374		os=-proelf
3375		;;
3376	OSE68000 | ose68000)
3377		basic_machine=m68000-ericsson
3378		os=-ose
3379		;;
3380	os68k)
3381		basic_machine=m68k-none
3382		os=-os68k
3383		;;
3384	pa-hitachi)
3385		basic_machine=hppa1.1-hitachi
3386		os=-hiuxwe2
3387		;;
3388	paragon)
3389		basic_machine=i860-intel
3390		os=-osf
3391		;;
3392	pbd)
3393		basic_machine=sparc-tti
3394		;;
3395	pbb)
3396		basic_machine=m68k-tti
3397		;;
3398        pc532 | pc532-*)
3399		basic_machine=ns32k-pc532
3400		;;
3401	pentium | p5 | k5 | k6 | nexgen)
3402		basic_machine=i586-pc
3403		;;
3404	pentiumpro | p6 | 6x86 | athlon)
3405		basic_machine=i686-pc
3406		;;
3407	pentiumii | pentium2)
3408		basic_machine=i686-pc
3409		;;
3410	pentium-* | p5-* | k5-* | k6-* | nexgen-*)
3411		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
3412		;;
3413	pentiumpro-* | p6-* | 6x86-* | athlon-*)
3414		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
3415		;;
3416	pentiumii-* | pentium2-*)
3417		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
3418		;;
3419	pn)
3420		basic_machine=pn-gould
3421		;;
3422	power)	basic_machine=power-ibm
3423		;;
3424	ppc)	basic_machine=powerpc-unknown
3425	        ;;
3426	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
3427		;;
3428	ppcle | powerpclittle | ppc-le | powerpc-little)
3429		basic_machine=powerpcle-unknown
3430	        ;;
3431	ppcle-* | powerpclittle-*)
3432		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
3433		;;
3434	ppc64)	basic_machine=powerpc64-unknown
3435	        ;;
3436	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
3437		;;
3438	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
3439		basic_machine=powerpc64le-unknown
3440	        ;;
3441	ppc64le-* | powerpc64little-*)
3442		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
3443		;;
3444	ps2)
3445		basic_machine=i386-ibm
3446		;;
3447	pw32)
3448		basic_machine=i586-unknown
3449		os=-pw32
3450		;;
3451	rom68k)
3452		basic_machine=m68k-rom68k
3453		os=-coff
3454		;;
3455	rm[46]00)
3456		basic_machine=mips-siemens
3457		;;
3458	rtpc | rtpc-*)
3459		basic_machine=romp-ibm
3460		;;
3461	sa29200)
3462		basic_machine=a29k-amd
3463		os=-udi
3464		;;
3465	sequent)
3466		basic_machine=i386-sequent
3467		;;
3468	sh)
3469		basic_machine=sh-hitachi
3470		os=-hms
3471		;;
3472	sparclite-wrs)
3473		basic_machine=sparclite-wrs
3474		os=-vxworks
3475		;;
3476	sps7)
3477		basic_machine=m68k-bull
3478		os=-sysv2
3479		;;
3480	spur)
3481		basic_machine=spur-unknown
3482		;;
3483	st2000)
3484		basic_machine=m68k-tandem
3485		;;
3486	stratus)
3487		basic_machine=i860-stratus
3488		os=-sysv4
3489		;;
3490	sun2)
3491		basic_machine=m68000-sun
3492		;;
3493	sun2os3)
3494		basic_machine=m68000-sun
3495		os=-sunos3
3496		;;
3497	sun2os4)
3498		basic_machine=m68000-sun
3499		os=-sunos4
3500		;;
3501	sun3os3)
3502		basic_machine=m68k-sun
3503		os=-sunos3
3504		;;
3505	sun3os4)
3506		basic_machine=m68k-sun
3507		os=-sunos4
3508		;;
3509	sun4os3)
3510		basic_machine=sparc-sun
3511		os=-sunos3
3512		;;
3513	sun4os4)
3514		basic_machine=sparc-sun
3515		os=-sunos4
3516		;;
3517	sun4sol2)
3518		basic_machine=sparc-sun
3519		os=-solaris2
3520		;;
3521	sun3 | sun3-*)
3522		basic_machine=m68k-sun
3523		;;
3524	sun4)
3525		basic_machine=sparc-sun
3526		;;
3527	sun386 | sun386i | roadrunner)
3528		basic_machine=i386-sun
3529		;;
3530	sv1)
3531		basic_machine=sv1-cray
3532		os=-unicos
3533		;;
3534	symmetry)
3535		basic_machine=i386-sequent
3536		os=-dynix
3537		;;
3538	t3e)
3539		basic_machine=t3e-cray
3540		os=-unicos
3541		;;
3542	tic54x | c54x*)
3543		basic_machine=tic54x-unknown
3544		os=-coff
3545		;;
3546	tx39)
3547		basic_machine=mipstx39-unknown
3548		;;
3549	tx39el)
3550		basic_machine=mipstx39el-unknown
3551		;;
3552	tower | tower-32)
3553		basic_machine=m68k-ncr
3554		;;
3555	udi29k)
3556		basic_machine=a29k-amd
3557		os=-udi
3558		;;
3559	ultra3)
3560		basic_machine=a29k-nyu
3561		os=-sym1
3562		;;
3563	v810 | necv810)
3564		basic_machine=v810-nec
3565		os=-none
3566		;;
3567	vaxv)
3568		basic_machine=vax-dec
3569		os=-sysv
3570		;;
3571	vms)
3572		basic_machine=vax-dec
3573		os=-vms
3574		;;
3575	vpp*|vx|vx-*)
3576               basic_machine=f301-fujitsu
3577               ;;
3578	vxworks960)
3579		basic_machine=i960-wrs
3580		os=-vxworks
3581		;;
3582	vxworks68)
3583		basic_machine=m68k-wrs
3584		os=-vxworks
3585		;;
3586	vxworks29k)
3587		basic_machine=a29k-wrs
3588		os=-vxworks
3589		;;
3590	w65*)
3591		basic_machine=w65-wdc
3592		os=-none
3593		;;
3594	w89k-*)
3595		basic_machine=hppa1.1-winbond
3596		os=-proelf
3597		;;
3598	windows32)
3599		basic_machine=i386-pc
3600		os=-windows32-msvcrt
3601		;;
3602	xmp)
3603		basic_machine=xmp-cray
3604		os=-unicos
3605		;;
3606        xps | xps100)
3607		basic_machine=xps100-honeywell
3608		;;
3609	z8k-*-coff)
3610		basic_machine=z8k-unknown
3611		os=-sim
3612		;;
3613	none)
3614		basic_machine=none-none
3615		os=-none
3616		;;
3617
3618# Here we handle the default manufacturer of certain CPU types.  It is in
3619# some cases the only manufacturer, in others, it is the most popular.
3620	w89k)
3621		basic_machine=hppa1.1-winbond
3622		;;
3623	op50n)
3624		basic_machine=hppa1.1-oki
3625		;;
3626	op60c)
3627		basic_machine=hppa1.1-oki
3628		;;
3629	mips)
3630		if [ x$os = x-linux-gnu ]; then
3631			basic_machine=mips-unknown
3632		else
3633			basic_machine=mips-mips
3634		fi
3635		;;
3636	romp)
3637		basic_machine=romp-ibm
3638		;;
3639	rs6000)
3640		basic_machine=rs6000-ibm
3641		;;
3642	vax)
3643		basic_machine=vax-dec
3644		;;
3645	pdp10)
3646		# there are many clones, so DEC is not a safe bet
3647		basic_machine=pdp10-unknown
3648		;;
3649	pdp11)
3650		basic_machine=pdp11-dec
3651		;;
3652	we32k)
3653		basic_machine=we32k-att
3654		;;
3655	sh3 | sh4 | sh3eb | sh4eb)
3656		basic_machine=sh-unknown
3657		;;
3658	sparc | sparcv9 | sparcv9b)
3659		basic_machine=sparc-sun
3660		;;
3661        cydra)
3662		basic_machine=cydra-cydrome
3663		;;
3664	orion)
3665		basic_machine=orion-highlevel
3666		;;
3667	orion105)
3668		basic_machine=clipper-highlevel
3669		;;
3670	mac | mpw | mac-mpw)
3671		basic_machine=m68k-apple
3672		;;
3673	pmac | pmac-mpw)
3674		basic_machine=powerpc-apple
3675		;;
3676	c4x*)
3677		basic_machine=c4x-none
3678		os=-coff
3679		;;
3680	*-unknown)
3681		# Make sure to match an already-canonicalized machine name.
3682		;;
3683	*)
3684		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
3685		exit 1
3686		;;
3687esac
3688
3689# Here we canonicalize certain aliases for manufacturers.
3690case $basic_machine in
3691	*-digital*)
3692		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
3693		;;
3694	*-commodore*)
3695		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
3696		;;
3697	*)
3698		;;
3699esac
3700
3701# Decode manufacturer-specific aliases for certain operating systems.
3702
3703if [ x"$os" != x"" ]
3704then
3705case $os in
3706        # First match some system type aliases
3707        # that might get confused with valid system types.
3708	# -solaris* is a basic system type, with this one exception.
3709	-solaris1 | -solaris1.*)
3710		os=`echo $os | sed -e 's|solaris1|sunos4|'`
3711		;;
3712	-solaris)
3713		os=-solaris2
3714		;;
3715	-svr4*)
3716		os=-sysv4
3717		;;
3718	-unixware*)
3719		os=-sysv4.2uw
3720		;;
3721	-gnu/linux*)
3722		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
3723		;;
3724	# First accept the basic system types.
3725	# The portable systems comes first.
3726	# Each alternative MUST END IN A *, to match a version number.
3727	# -sysv* is not here because it comes later, after sysvr4.
3728	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
3729	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
3730	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
3731	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
3732	      | -aos* \
3733	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
3734	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
3735	      | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
3736	      | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
3737	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
3738	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
3739	      | -chorusos* | -chorusrdb* \
3740	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
3741	      | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
3742	      | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
3743	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
3744	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
3745	      | -os2* | -vos*)
3746	# Remember, each alternative MUST END IN *, to match a version number.
3747		;;
3748	-qnx*)
3749		case $basic_machine in
3750		    x86-* | i*86-*)
3751			;;
3752		    *)
3753			os=-nto$os
3754			;;
3755		esac
3756		;;
3757	-nto*)
3758		os=-nto-qnx
3759		;;
3760	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
3761	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
3762	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
3763		;;
3764	-mac*)
3765		os=`echo $os | sed -e 's|mac|macos|'`
3766		;;
3767	-linux*)
3768		os=`echo $os | sed -e 's|linux|linux-gnu|'`
3769		;;
3770	-sunos5*)
3771		os=`echo $os | sed -e 's|sunos5|solaris2|'`
3772		;;
3773	-sunos6*)
3774		os=`echo $os | sed -e 's|sunos6|solaris3|'`
3775		;;
3776	-opened*)
3777		os=-openedition
3778		;;
3779	-wince*)
3780		os=-wince
3781		;;
3782	-osfrose*)
3783		os=-osfrose
3784		;;
3785	-osf*)
3786		os=-osf
3787		;;
3788	-utek*)
3789		os=-bsd
3790		;;
3791	-dynix*)
3792		os=-bsd
3793		;;
3794	-acis*)
3795		os=-aos
3796		;;
3797	-386bsd)
3798		os=-bsd
3799		;;
3800	-ctix* | -uts*)
3801		os=-sysv
3802		;;
3803	-ns2 )
3804	        os=-nextstep2
3805		;;
3806	-nsk*)
3807		os=-nsk
3808		;;
3809	# Preserve the version number of sinix5.
3810	-sinix5.*)
3811		os=`echo $os | sed -e 's|sinix|sysv|'`
3812		;;
3813	-sinix*)
3814		os=-sysv4
3815		;;
3816	-triton*)
3817		os=-sysv3
3818		;;
3819	-oss*)
3820		os=-sysv3
3821		;;
3822	-svr4)
3823		os=-sysv4
3824		;;
3825	-svr3)
3826		os=-sysv3
3827		;;
3828	-sysvr4)
3829		os=-sysv4
3830		;;
3831	# This must come after -sysvr4.
3832	-sysv*)
3833		;;
3834	-ose*)
3835		os=-ose
3836		;;
3837	-es1800*)
3838		os=-ose
3839		;;
3840	-xenix)
3841		os=-xenix
3842		;;
3843        -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
3844	        os=-mint
3845		;;
3846	-none)
3847		;;
3848	*)
3849		# Get rid of the `-' at the beginning of $os.
3850		os=`echo $os | sed 's/[^-]*-//'`
3851		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
3852		exit 1
3853		;;
3854esac
3855else
3856
3857# Here we handle the default operating systems that come with various machines.
3858# The value should be what the vendor currently ships out the door with their
3859# machine or put another way, the most popular os provided with the machine.
3860
3861# Note that if you're going to try to match "-MANUFACTURER" here (say,
3862# "-sun"), then you have to tell the case statement up towards the top
3863# that MANUFACTURER isn't an operating system.  Otherwise, code above
3864# will signal an error saying that MANUFACTURER isn't an operating
3865# system, and we'll never get to this point.
3866
3867case $basic_machine in
3868	*-acorn)
3869		os=-riscix1.2
3870		;;
3871	arm*-rebel)
3872		os=-linux
3873		;;
3874	arm*-semi)
3875		os=-aout
3876		;;
3877	pdp10-*)
3878		os=-tops20
3879		;;
3880        pdp11-*)
3881		os=-none
3882		;;
3883	*-dec | vax-*)
3884		os=-ultrix4.2
3885		;;
3886	m68*-apollo)
3887		os=-domain
3888		;;
3889	i386-sun)
3890		os=-sunos4.0.2
3891		;;
3892	m68000-sun)
3893		os=-sunos3
3894		# This also exists in the configure program, but was not the
3895		# default.
3896		# os=-sunos4
3897		;;
3898	m68*-cisco)
3899		os=-aout
3900		;;
3901	mips*-cisco)
3902		os=-elf
3903		;;
3904	mips*-*)
3905		os=-elf
3906		;;
3907	*-tti)	# must be before sparc entry or we get the wrong os.
3908		os=-sysv3
3909		;;
3910	sparc-* | *-sun)
3911		os=-sunos4.1.1
3912		;;
3913	*-be)
3914		os=-beos
3915		;;
3916	*-ibm)
3917		os=-aix
3918		;;
3919	*-wec)
3920		os=-proelf
3921		;;
3922	*-winbond)
3923		os=-proelf
3924		;;
3925	*-oki)
3926		os=-proelf
3927		;;
3928	*-hp)
3929		os=-hpux
3930		;;
3931	*-hitachi)
3932		os=-hiux
3933		;;
3934	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
3935		os=-sysv
3936		;;
3937	*-cbm)
3938		os=-amigaos
3939		;;
3940	*-dg)
3941		os=-dgux
3942		;;
3943	*-dolphin)
3944		os=-sysv3
3945		;;
3946	m68k-ccur)
3947		os=-rtu
3948		;;
3949	m88k-omron*)
3950		os=-luna
3951		;;
3952	*-next )
3953		os=-nextstep
3954		;;
3955	*-sequent)
3956		os=-ptx
3957		;;
3958	*-crds)
3959		os=-unos
3960		;;
3961	*-ns)
3962		os=-genix
3963		;;
3964	i370-*)
3965		os=-mvs
3966		;;
3967	*-next)
3968		os=-nextstep3
3969		;;
3970        *-gould)
3971		os=-sysv
3972		;;
3973        *-highlevel)
3974		os=-bsd
3975		;;
3976	*-encore)
3977		os=-bsd
3978		;;
3979        *-sgi)
3980		os=-irix
3981		;;
3982        *-siemens)
3983		os=-sysv4
3984		;;
3985	*-masscomp)
3986		os=-rtu
3987		;;
3988	f30[01]-fujitsu | f700-fujitsu)
3989		os=-uxpv
3990		;;
3991	*-rom68k)
3992		os=-coff
3993		;;
3994	*-*bug)
3995		os=-coff
3996		;;
3997	*-apple)
3998		os=-macos
3999		;;
4000	*-atari*)
4001		os=-mint
4002		;;
4003	*)
4004		os=-none
4005		;;
4006esac
4007fi
4008
4009# Here we handle the case where we know the os, and the CPU type, but not the
4010# manufacturer.  We pick the logical manufacturer.
4011vendor=unknown
4012case $basic_machine in
4013	*-unknown)
4014		case $os in
4015			-riscix*)
4016				vendor=acorn
4017				;;
4018			-sunos*)
4019				vendor=sun
4020				;;
4021			-aix*)
4022				vendor=ibm
4023				;;
4024			-beos*)
4025				vendor=be
4026				;;
4027			-hpux*)
4028				vendor=hp
4029				;;
4030			-mpeix*)
4031				vendor=hp
4032				;;
4033			-hiux*)
4034				vendor=hitachi
4035				;;
4036			-unos*)
4037				vendor=crds
4038				;;
4039			-dgux*)
4040				vendor=dg
4041				;;
4042			-luna*)
4043				vendor=omron
4044				;;
4045			-genix*)
4046				vendor=ns
4047				;;
4048			-mvs* | -opened*)
4049				vendor=ibm
4050				;;
4051			-ptx*)
4052				vendor=sequent
4053				;;
4054			-vxsim* | -vxworks*)
4055				vendor=wrs
4056				;;
4057			-aux*)
4058				vendor=apple
4059				;;
4060			-hms*)
4061				vendor=hitachi
4062				;;
4063			-mpw* | -macos*)
4064				vendor=apple
4065				;;
4066			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
4067				vendor=atari
4068				;;
4069			-vos*)
4070				vendor=stratus
4071				;;
4072		esac
4073		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
4074		;;
4075esac
4076
4077echo $basic_machine$os
4078exit 0
4079
4080# Local variables:
4081# eval: (add-hook 'write-file-hooks 'time-stamp)
4082# time-stamp-start: "timestamp='"
4083# time-stamp-format: "%:y-%02m-%02d"
4084# time-stamp-end: "'"
4085# End:
40860707010001ad5a0000816d00011e740000000a0000000140206829000214bc000000660000000000000000000000000000001300000000libdwarf/configure����#! /bin/sh
4087# Guess values for system-dependent variables and create Makefiles.
4088# Generated by GNU Autoconf 2.57.
4089#
4090# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
4091# Free Software Foundation, Inc.
4092# This configure script is free software; the Free Software Foundation
4093# gives unlimited permission to copy, distribute and modify it.
4094## --------------------- ##
4095## M4sh Initialization.  ##
4096## --------------------- ##
4097
4098# Be Bourne compatible
4099if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
4100  emulate sh
4101  NULLCMD=:
4102  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
4103  # is contrary to our usage.  Disable this feature.
4104  alias -g '${1+"$@"}'='"$@"'
4105elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
4106  set -o posix
4107fi
4108
4109# Support unset when possible.
4110if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
4111  as_unset=unset
4112else
4113  as_unset=false
4114fi
4115
4116
4117# Work around bugs in pre-3.0 UWIN ksh.
4118$as_unset ENV MAIL MAILPATH
4119PS1='$ '
4120PS2='> '
4121PS4='+ '
4122
4123# NLS nuisances.
4124for as_var in \
4125  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
4126  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
4127  LC_TELEPHONE LC_TIME
4128do
4129  if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
4130    eval $as_var=C; export $as_var
4131  else
4132    $as_unset $as_var
4133  fi
4134done
4135
4136# Required to use basename.
4137if expr a : '\(a\)' >/dev/null 2>&1; then
4138  as_expr=expr
4139else
4140  as_expr=false
4141fi
4142
4143if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
4144  as_basename=basename
4145else
4146  as_basename=false
4147fi
4148
4149
4150# Name of the executable.
4151as_me=`$as_basename "$0" ||
4152$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
4153	 X"$0" : 'X\(//\)$' \| \
4154	 X"$0" : 'X\(/\)$' \| \
4155	 .     : '\(.\)' 2>/dev/null ||
4156echo X/"$0" |
4157    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
4158  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
4159  	  /^X\/\(\/\).*/{ s//\1/; q; }
4160  	  s/.*/./; q'`
4161
4162
4163# PATH needs CR, and LINENO needs CR and PATH.
4164# Avoid depending upon Character Ranges.
4165as_cr_letters='abcdefghijklmnopqrstuvwxyz'
4166as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
4167as_cr_Letters=$as_cr_letters$as_cr_LETTERS
4168as_cr_digits='0123456789'
4169as_cr_alnum=$as_cr_Letters$as_cr_digits
4170
4171# The user is always right.
4172if test "${PATH_SEPARATOR+set}" != set; then
4173  echo "#! /bin/sh" >conf$$.sh
4174  echo  "exit 0"   >>conf$$.sh
4175  chmod +x conf$$.sh
4176  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
4177    PATH_SEPARATOR=';'
4178  else
4179    PATH_SEPARATOR=:
4180  fi
4181  rm -f conf$$.sh
4182fi
4183
4184
4185  as_lineno_1=$LINENO
4186  as_lineno_2=$LINENO
4187  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
4188  test "x$as_lineno_1" != "x$as_lineno_2" &&
4189  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
4190  # Find who we are.  Look in the path if we contain no path at all
4191  # relative or not.
4192  case $0 in
4193    *[\\/]* ) as_myself=$0 ;;
4194    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4195for as_dir in $PATH
4196do
4197  IFS=$as_save_IFS
4198  test -z "$as_dir" && as_dir=.
4199  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
4200done
4201
4202       ;;
4203  esac
4204  # We did not find ourselves, most probably we were run as `sh COMMAND'
4205  # in which case we are not to be found in the path.
4206  if test "x$as_myself" = x; then
4207    as_myself=$0
4208  fi
4209  if test ! -f "$as_myself"; then
4210    { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
4211   { (exit 1); exit 1; }; }
4212  fi
4213  case $CONFIG_SHELL in
4214  '')
4215    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4216for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
4217do
4218  IFS=$as_save_IFS
4219  test -z "$as_dir" && as_dir=.
4220  for as_base in sh bash ksh sh5; do
4221	 case $as_dir in
4222	 /*)
4223	   if ("$as_dir/$as_base" -c '
4224  as_lineno_1=$LINENO
4225  as_lineno_2=$LINENO
4226  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
4227  test "x$as_lineno_1" != "x$as_lineno_2" &&
4228  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
4229	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
4230	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
4231	     CONFIG_SHELL=$as_dir/$as_base
4232	     export CONFIG_SHELL
4233	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
4234	   fi;;
4235	 esac
4236       done
4237done
4238;;
4239  esac
4240
4241  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
4242  # uniformly replaced by the line number.  The first 'sed' inserts a
4243  # line-number line before each line; the second 'sed' does the real
4244  # work.  The second script uses 'N' to pair each line-number line
4245  # with the numbered line, and appends trailing '-' during
4246  # substitution so that $LINENO is not a special case at line end.
4247  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
4248  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
4249  sed '=' <$as_myself |
4250    sed '
4251      N
4252      s,$,-,
4253      : loop
4254      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
4255      t loop
4256      s,-$,,
4257      s,^['$as_cr_digits']*\n,,
4258    ' >$as_me.lineno &&
4259  chmod +x $as_me.lineno ||
4260    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
4261   { (exit 1); exit 1; }; }
4262
4263  # Don't try to exec as it changes $[0], causing all sort of problems
4264  # (the dirname of $[0] is not the place where we might find the
4265  # original and so on.  Autoconf is especially sensible to this).
4266  . ./$as_me.lineno
4267  # Exit status is that of the last command.
4268  exit
4269}
4270
4271
4272case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
4273  *c*,-n*) ECHO_N= ECHO_C='
4274' ECHO_T='	' ;;
4275  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
4276  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
4277esac
4278
4279if expr a : '\(a\)' >/dev/null 2>&1; then
4280  as_expr=expr
4281else
4282  as_expr=false
4283fi
4284
4285rm -f conf$$ conf$$.exe conf$$.file
4286echo >conf$$.file
4287if ln -s conf$$.file conf$$ 2>/dev/null; then
4288  # We could just check for DJGPP; but this test a) works b) is more generic
4289  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
4290  if test -f conf$$.exe; then
4291    # Don't use ln at all; we don't have any links
4292    as_ln_s='cp -p'
4293  else
4294    as_ln_s='ln -s'
4295  fi
4296elif ln conf$$.file conf$$ 2>/dev/null; then
4297  as_ln_s=ln
4298else
4299  as_ln_s='cp -p'
4300fi
4301rm -f conf$$ conf$$.exe conf$$.file
4302
4303if mkdir -p . 2>/dev/null; then
4304  as_mkdir_p=:
4305else
4306  as_mkdir_p=false
4307fi
4308
4309as_executable_p="test -f"
4310
4311# Sed expression to map a string onto a valid CPP name.
4312as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
4313
4314# Sed expression to map a string onto a valid variable name.
4315as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
4316
4317
4318# IFS
4319# We need space, tab and new line, in precisely that order.
4320as_nl='
4321'
4322IFS=" 	$as_nl"
4323
4324# CDPATH.
4325$as_unset CDPATH
4326
4327
4328# Name of the host.
4329# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
4330# so uname gets run too.
4331ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
4332
4333exec 6>&1
4334
4335#
4336# Initializations.
4337#
4338ac_default_prefix=/usr/local
4339ac_config_libobj_dir=.
4340cross_compiling=no
4341subdirs=
4342MFLAGS=
4343MAKEFLAGS=
4344SHELL=${CONFIG_SHELL-/bin/sh}
4345
4346# Maximum number of lines to put in a shell here document.
4347# This variable seems obsolete.  It should probably be removed, and
4348# only ac_max_sed_lines should be used.
4349: ${ac_max_here_lines=38}
4350
4351# Identity of this package.
4352PACKAGE_NAME=
4353PACKAGE_TARNAME=
4354PACKAGE_VERSION=
4355PACKAGE_STRING=
4356PACKAGE_BUGREPORT=
4357
4358ac_unique_file="libdwarf.h"
4359# Factoring default headers for most tests.
4360ac_includes_default="\
4361#include <stdio.h>
4362#if HAVE_SYS_TYPES_H
4363# include <sys/types.h>
4364#endif
4365#if HAVE_SYS_STAT_H
4366# include <sys/stat.h>
4367#endif
4368#if STDC_HEADERS
4369# include <stdlib.h>
4370# include <stddef.h>
4371#else
4372# if HAVE_STDLIB_H
4373#  include <stdlib.h>
4374# endif
4375#endif
4376#if HAVE_STRING_H
4377# if !STDC_HEADERS && HAVE_MEMORY_H
4378#  include <memory.h>
4379# endif
4380# include <string.h>
4381#endif
4382#if HAVE_STRINGS_H
4383# include <strings.h>
4384#endif
4385#if HAVE_INTTYPES_H
4386# include <inttypes.h>
4387#else
4388# if HAVE_STDINT_H
4389#  include <stdint.h>
4390# endif
4391#endif
4392#if HAVE_UNISTD_H
4393# include <unistd.h>
4394#endif"
4395
4396ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA RANLIB ac_ct_RANLIB AR ac_ct_AR LIBOBJS LTLIBOBJS'
4397ac_subst_files=''
4398
4399# Initialize some variables set by options.
4400ac_init_help=
4401ac_init_version=false
4402# The variables have the same names as the options, with
4403# dashes changed to underlines.
4404cache_file=/dev/null
4405exec_prefix=NONE
4406no_create=
4407no_recursion=
4408prefix=NONE
4409program_prefix=NONE
4410program_suffix=NONE
4411program_transform_name=s,x,x,
4412silent=
4413site=
4414srcdir=
4415verbose=
4416x_includes=NONE
4417x_libraries=NONE
4418
4419# Installation directory options.
4420# These are left unexpanded so users can "make install exec_prefix=/foo"
4421# and all the variables that are supposed to be based on exec_prefix
4422# by default will actually change.
4423# Use braces instead of parens because sh, perl, etc. also accept them.
4424bindir='${exec_prefix}/bin'
4425sbindir='${exec_prefix}/sbin'
4426libexecdir='${exec_prefix}/libexec'
4427datadir='${prefix}/share'
4428sysconfdir='${prefix}/etc'
4429sharedstatedir='${prefix}/com'
4430localstatedir='${prefix}/var'
4431libdir='${exec_prefix}/lib'
4432includedir='${prefix}/include'
4433oldincludedir='/usr/include'
4434infodir='${prefix}/info'
4435mandir='${prefix}/man'
4436
4437ac_prev=
4438for ac_option
4439do
4440  # If the previous option needs an argument, assign it.
4441  if test -n "$ac_prev"; then
4442    eval "$ac_prev=\$ac_option"
4443    ac_prev=
4444    continue
4445  fi
4446
4447  ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
4448
4449  # Accept the important Cygnus configure options, so we can diagnose typos.
4450
4451  case $ac_option in
4452
4453  -bindir | --bindir | --bindi | --bind | --bin | --bi)
4454    ac_prev=bindir ;;
4455  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
4456    bindir=$ac_optarg ;;
4457
4458  -build | --build | --buil | --bui | --bu)
4459    ac_prev=build_alias ;;
4460  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
4461    build_alias=$ac_optarg ;;
4462
4463  -cache-file | --cache-file | --cache-fil | --cache-fi \
4464  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
4465    ac_prev=cache_file ;;
4466  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
4467  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
4468    cache_file=$ac_optarg ;;
4469
4470  --config-cache | -C)
4471    cache_file=config.cache ;;
4472
4473  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
4474    ac_prev=datadir ;;
4475  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
4476  | --da=*)
4477    datadir=$ac_optarg ;;
4478
4479  -disable-* | --disable-*)
4480    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
4481    # Reject names that are not valid shell variable names.
4482    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
4483      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
4484   { (exit 1); exit 1; }; }
4485    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
4486    eval "enable_$ac_feature=no" ;;
4487
4488  -enable-* | --enable-*)
4489    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
4490    # Reject names that are not valid shell variable names.
4491    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
4492      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
4493   { (exit 1); exit 1; }; }
4494    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
4495    case $ac_option in
4496      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
4497      *) ac_optarg=yes ;;
4498    esac
4499    eval "enable_$ac_feature='$ac_optarg'" ;;
4500
4501  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
4502  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
4503  | --exec | --exe | --ex)
4504    ac_prev=exec_prefix ;;
4505  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
4506  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
4507  | --exec=* | --exe=* | --ex=*)
4508    exec_prefix=$ac_optarg ;;
4509
4510  -gas | --gas | --ga | --g)
4511    # Obsolete; use --with-gas.
4512    with_gas=yes ;;
4513
4514  -help | --help | --hel | --he | -h)
4515    ac_init_help=long ;;
4516  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
4517    ac_init_help=recursive ;;
4518  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
4519    ac_init_help=short ;;
4520
4521  -host | --host | --hos | --ho)
4522    ac_prev=host_alias ;;
4523  -host=* | --host=* | --hos=* | --ho=*)
4524    host_alias=$ac_optarg ;;
4525
4526  -includedir | --includedir | --includedi | --included | --include \
4527  | --includ | --inclu | --incl | --inc)
4528    ac_prev=includedir ;;
4529  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
4530  | --includ=* | --inclu=* | --incl=* | --inc=*)
4531    includedir=$ac_optarg ;;
4532
4533  -infodir | --infodir | --infodi | --infod | --info | --inf)
4534    ac_prev=infodir ;;
4535  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
4536    infodir=$ac_optarg ;;
4537
4538  -libdir | --libdir | --libdi | --libd)
4539    ac_prev=libdir ;;
4540  -libdir=* | --libdir=* | --libdi=* | --libd=*)
4541    libdir=$ac_optarg ;;
4542
4543  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
4544  | --libexe | --libex | --libe)
4545    ac_prev=libexecdir ;;
4546  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
4547  | --libexe=* | --libex=* | --libe=*)
4548    libexecdir=$ac_optarg ;;
4549
4550  -localstatedir | --localstatedir | --localstatedi | --localstated \
4551  | --localstate | --localstat | --localsta | --localst \
4552  | --locals | --local | --loca | --loc | --lo)
4553    ac_prev=localstatedir ;;
4554  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
4555  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
4556  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
4557    localstatedir=$ac_optarg ;;
4558
4559  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
4560    ac_prev=mandir ;;
4561  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
4562    mandir=$ac_optarg ;;
4563
4564  -nfp | --nfp | --nf)
4565    # Obsolete; use --without-fp.
4566    with_fp=no ;;
4567
4568  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
4569  | --no-cr | --no-c | -n)
4570    no_create=yes ;;
4571
4572  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
4573  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
4574    no_recursion=yes ;;
4575
4576  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
4577  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
4578  | --oldin | --oldi | --old | --ol | --o)
4579    ac_prev=oldincludedir ;;
4580  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
4581  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
4582  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
4583    oldincludedir=$ac_optarg ;;
4584
4585  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
4586    ac_prev=prefix ;;
4587  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
4588    prefix=$ac_optarg ;;
4589
4590  -program-prefix | --program-prefix | --program-prefi | --program-pref \
4591  | --program-pre | --program-pr | --program-p)
4592    ac_prev=program_prefix ;;
4593  -program-prefix=* | --program-prefix=* | --program-prefi=* \
4594  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
4595    program_prefix=$ac_optarg ;;
4596
4597  -program-suffix | --program-suffix | --program-suffi | --program-suff \
4598  | --program-suf | --program-su | --program-s)
4599    ac_prev=program_suffix ;;
4600  -program-suffix=* | --program-suffix=* | --program-suffi=* \
4601  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
4602    program_suffix=$ac_optarg ;;
4603
4604  -program-transform-name | --program-transform-name \
4605  | --program-transform-nam | --program-transform-na \
4606  | --program-transform-n | --program-transform- \
4607  | --program-transform | --program-transfor \
4608  | --program-transfo | --program-transf \
4609  | --program-trans | --program-tran \
4610  | --progr-tra | --program-tr | --program-t)
4611    ac_prev=program_transform_name ;;
4612  -program-transform-name=* | --program-transform-name=* \
4613  | --program-transform-nam=* | --program-transform-na=* \
4614  | --program-transform-n=* | --program-transform-=* \
4615  | --program-transform=* | --program-transfor=* \
4616  | --program-transfo=* | --program-transf=* \
4617  | --program-trans=* | --program-tran=* \
4618  | --progr-tra=* | --program-tr=* | --program-t=*)
4619    program_transform_name=$ac_optarg ;;
4620
4621  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
4622  | -silent | --silent | --silen | --sile | --sil)
4623    silent=yes ;;
4624
4625  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
4626    ac_prev=sbindir ;;
4627  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
4628  | --sbi=* | --sb=*)
4629    sbindir=$ac_optarg ;;
4630
4631  -sharedstatedir | --sharedstatedir | --sharedstatedi \
4632  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
4633  | --sharedst | --shareds | --shared | --share | --shar \
4634  | --sha | --sh)
4635    ac_prev=sharedstatedir ;;
4636  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
4637  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
4638  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
4639  | --sha=* | --sh=*)
4640    sharedstatedir=$ac_optarg ;;
4641
4642  -site | --site | --sit)
4643    ac_prev=site ;;
4644  -site=* | --site=* | --sit=*)
4645    site=$ac_optarg ;;
4646
4647  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
4648    ac_prev=srcdir ;;
4649  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
4650    srcdir=$ac_optarg ;;
4651
4652  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
4653  | --syscon | --sysco | --sysc | --sys | --sy)
4654    ac_prev=sysconfdir ;;
4655  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
4656  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
4657    sysconfdir=$ac_optarg ;;
4658
4659  -target | --target | --targe | --targ | --tar | --ta | --t)
4660    ac_prev=target_alias ;;
4661  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
4662    target_alias=$ac_optarg ;;
4663
4664  -v | -verbose | --verbose | --verbos | --verbo | --verb)
4665    verbose=yes ;;
4666
4667  -version | --version | --versio | --versi | --vers | -V)
4668    ac_init_version=: ;;
4669
4670  -with-* | --with-*)
4671    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
4672    # Reject names that are not valid shell variable names.
4673    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
4674      { echo "$as_me: error: invalid package name: $ac_package" >&2
4675   { (exit 1); exit 1; }; }
4676    ac_package=`echo $ac_package| sed 's/-/_/g'`
4677    case $ac_option in
4678      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
4679      *) ac_optarg=yes ;;
4680    esac
4681    eval "with_$ac_package='$ac_optarg'" ;;
4682
4683  -without-* | --without-*)
4684    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
4685    # Reject names that are not valid shell variable names.
4686    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
4687      { echo "$as_me: error: invalid package name: $ac_package" >&2
4688   { (exit 1); exit 1; }; }
4689    ac_package=`echo $ac_package | sed 's/-/_/g'`
4690    eval "with_$ac_package=no" ;;
4691
4692  --x)
4693    # Obsolete; use --with-x.
4694    with_x=yes ;;
4695
4696  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
4697  | --x-incl | --x-inc | --x-in | --x-i)
4698    ac_prev=x_includes ;;
4699  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
4700  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
4701    x_includes=$ac_optarg ;;
4702
4703  -x-libraries | --x-libraries | --x-librarie | --x-librari \
4704  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
4705    ac_prev=x_libraries ;;
4706  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
4707  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
4708    x_libraries=$ac_optarg ;;
4709
4710  -*) { echo "$as_me: error: unrecognized option: $ac_option
4711Try \`$0 --help' for more information." >&2
4712   { (exit 1); exit 1; }; }
4713    ;;
4714
4715  *=*)
4716    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
4717    # Reject names that are not valid shell variable names.
4718    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
4719      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
4720   { (exit 1); exit 1; }; }
4721    ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
4722    eval "$ac_envvar='$ac_optarg'"
4723    export $ac_envvar ;;
4724
4725  *)
4726    # FIXME: should be removed in autoconf 3.0.
4727    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
4728    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
4729      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
4730    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
4731    ;;
4732
4733  esac
4734done
4735
4736if test -n "$ac_prev"; then
4737  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
4738  { echo "$as_me: error: missing argument to $ac_option" >&2
4739   { (exit 1); exit 1; }; }
4740fi
4741
4742# Be sure to have absolute paths.
4743for ac_var in exec_prefix prefix
4744do
4745  eval ac_val=$`echo $ac_var`
4746  case $ac_val in
4747    [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
4748    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
4749   { (exit 1); exit 1; }; };;
4750  esac
4751done
4752
4753# Be sure to have absolute paths.
4754for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
4755              localstatedir libdir includedir oldincludedir infodir mandir
4756do
4757  eval ac_val=$`echo $ac_var`
4758  case $ac_val in
4759    [\\/$]* | ?:[\\/]* ) ;;
4760    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
4761   { (exit 1); exit 1; }; };;
4762  esac
4763done
4764
4765# There might be people who depend on the old broken behavior: `$host'
4766# used to hold the argument of --host etc.
4767# FIXME: To remove some day.
4768build=$build_alias
4769host=$host_alias
4770target=$target_alias
4771
4772# FIXME: To remove some day.
4773if test "x$host_alias" != x; then
4774  if test "x$build_alias" = x; then
4775    cross_compiling=maybe
4776    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
4777    If a cross compiler is detected then cross compile mode will be used." >&2
4778  elif test "x$build_alias" != "x$host_alias"; then
4779    cross_compiling=yes
4780  fi
4781fi
4782
4783ac_tool_prefix=
4784test -n "$host_alias" && ac_tool_prefix=$host_alias-
4785
4786test "$silent" = yes && exec 6>/dev/null
4787
4788
4789# Find the source files, if location was not specified.
4790if test -z "$srcdir"; then
4791  ac_srcdir_defaulted=yes
4792  # Try the directory containing this script, then its parent.
4793  ac_confdir=`(dirname "$0") 2>/dev/null ||
4794$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
4795         X"$0" : 'X\(//\)[^/]' \| \
4796         X"$0" : 'X\(//\)$' \| \
4797         X"$0" : 'X\(/\)' \| \
4798         .     : '\(.\)' 2>/dev/null ||
4799echo X"$0" |
4800    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
4801  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
4802  	  /^X\(\/\/\)$/{ s//\1/; q; }
4803  	  /^X\(\/\).*/{ s//\1/; q; }
4804  	  s/.*/./; q'`
4805  srcdir=$ac_confdir
4806  if test ! -r $srcdir/$ac_unique_file; then
4807    srcdir=..
4808  fi
4809else
4810  ac_srcdir_defaulted=no
4811fi
4812if test ! -r $srcdir/$ac_unique_file; then
4813  if test "$ac_srcdir_defaulted" = yes; then
4814    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
4815   { (exit 1); exit 1; }; }
4816  else
4817    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
4818   { (exit 1); exit 1; }; }
4819  fi
4820fi
4821(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
4822  { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
4823   { (exit 1); exit 1; }; }
4824srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
4825ac_env_build_alias_set=${build_alias+set}
4826ac_env_build_alias_value=$build_alias
4827ac_cv_env_build_alias_set=${build_alias+set}
4828ac_cv_env_build_alias_value=$build_alias
4829ac_env_host_alias_set=${host_alias+set}
4830ac_env_host_alias_value=$host_alias
4831ac_cv_env_host_alias_set=${host_alias+set}
4832ac_cv_env_host_alias_value=$host_alias
4833ac_env_target_alias_set=${target_alias+set}
4834ac_env_target_alias_value=$target_alias
4835ac_cv_env_target_alias_set=${target_alias+set}
4836ac_cv_env_target_alias_value=$target_alias
4837ac_env_CC_set=${CC+set}
4838ac_env_CC_value=$CC
4839ac_cv_env_CC_set=${CC+set}
4840ac_cv_env_CC_value=$CC
4841ac_env_CFLAGS_set=${CFLAGS+set}
4842ac_env_CFLAGS_value=$CFLAGS
4843ac_cv_env_CFLAGS_set=${CFLAGS+set}
4844ac_cv_env_CFLAGS_value=$CFLAGS
4845ac_env_LDFLAGS_set=${LDFLAGS+set}
4846ac_env_LDFLAGS_value=$LDFLAGS
4847ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
4848ac_cv_env_LDFLAGS_value=$LDFLAGS
4849ac_env_CPPFLAGS_set=${CPPFLAGS+set}
4850ac_env_CPPFLAGS_value=$CPPFLAGS
4851ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
4852ac_cv_env_CPPFLAGS_value=$CPPFLAGS
4853ac_env_CPP_set=${CPP+set}
4854ac_env_CPP_value=$CPP
4855ac_cv_env_CPP_set=${CPP+set}
4856ac_cv_env_CPP_value=$CPP
4857
4858#
4859# Report the --help message.
4860#
4861if test "$ac_init_help" = "long"; then
4862  # Omit some internal or obsolete options to make the list less imposing.
4863  # This message is too long to be a string in the A/UX 3.1 sh.
4864  cat <<_ACEOF
4865\`configure' configures this package to adapt to many kinds of systems.
4866
4867Usage: $0 [OPTION]... [VAR=VALUE]...
4868
4869To assign environment variables (e.g., CC, CFLAGS...), specify them as
4870VAR=VALUE.  See below for descriptions of some of the useful variables.
4871
4872Defaults for the options are specified in brackets.
4873
4874Configuration:
4875  -h, --help              display this help and exit
4876      --help=short        display options specific to this package
4877      --help=recursive    display the short help of all the included packages
4878  -V, --version           display version information and exit
4879  -q, --quiet, --silent   do not print \`checking...' messages
4880      --cache-file=FILE   cache test results in FILE [disabled]
4881  -C, --config-cache      alias for \`--cache-file=config.cache'
4882  -n, --no-create         do not create output files
4883      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
4884
4885_ACEOF
4886
4887  cat <<_ACEOF
4888Installation directories:
4889  --prefix=PREFIX         install architecture-independent files in PREFIX
4890                          [$ac_default_prefix]
4891  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
4892                          [PREFIX]
4893
4894By default, \`make install' will install all the files in
4895\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
4896an installation prefix other than \`$ac_default_prefix' using \`--prefix',
4897for instance \`--prefix=\$HOME'.
4898
4899For better control, use the options below.
4900
4901Fine tuning of the installation directories:
4902  --bindir=DIR           user executables [EPREFIX/bin]
4903  --sbindir=DIR          system admin executables [EPREFIX/sbin]
4904  --libexecdir=DIR       program executables [EPREFIX/libexec]
4905  --datadir=DIR          read-only architecture-independent data [PREFIX/share]
4906  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
4907  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
4908  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
4909  --libdir=DIR           object code libraries [EPREFIX/lib]
4910  --includedir=DIR       C header files [PREFIX/include]
4911  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
4912  --infodir=DIR          info documentation [PREFIX/info]
4913  --mandir=DIR           man documentation [PREFIX/man]
4914_ACEOF
4915
4916  cat <<\_ACEOF
4917_ACEOF
4918fi
4919
4920if test -n "$ac_init_help"; then
4921
4922  cat <<\_ACEOF
4923
4924Some influential environment variables:
4925  CC          C compiler command
4926  CFLAGS      C compiler flags
4927  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
4928              nonstandard directory <lib dir>
4929  CPPFLAGS    C/C++ preprocessor flags, e.g. -I<include dir> if you have
4930              headers in a nonstandard directory <include dir>
4931  CPP         C preprocessor
4932
4933Use these variables to override the choices made by `configure' or to help
4934it to find libraries and programs with nonstandard names/locations.
4935
4936_ACEOF
4937fi
4938
4939if test "$ac_init_help" = "recursive"; then
4940  # If there are subdirs, report their specific --help.
4941  ac_popdir=`pwd`
4942  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
4943    test -d $ac_dir || continue
4944    ac_builddir=.
4945
4946if test "$ac_dir" != .; then
4947  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
4948  # A "../" for each directory in $ac_dir_suffix.
4949  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
4950else
4951  ac_dir_suffix= ac_top_builddir=
4952fi
4953
4954case $srcdir in
4955  .)  # No --srcdir option.  We are building in place.
4956    ac_srcdir=.
4957    if test -z "$ac_top_builddir"; then
4958       ac_top_srcdir=.
4959    else
4960       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
4961    fi ;;
4962  [\\/]* | ?:[\\/]* )  # Absolute path.
4963    ac_srcdir=$srcdir$ac_dir_suffix;
4964    ac_top_srcdir=$srcdir ;;
4965  *) # Relative path.
4966    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
4967    ac_top_srcdir=$ac_top_builddir$srcdir ;;
4968esac
4969# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
4970# absolute.
4971ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
4972ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
4973ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
4974ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
4975
4976    cd $ac_dir
4977    # Check for guested configure; otherwise get Cygnus style configure.
4978    if test -f $ac_srcdir/configure.gnu; then
4979      echo
4980      $SHELL $ac_srcdir/configure.gnu  --help=recursive
4981    elif test -f $ac_srcdir/configure; then
4982      echo
4983      $SHELL $ac_srcdir/configure  --help=recursive
4984    elif test -f $ac_srcdir/configure.ac ||
4985           test -f $ac_srcdir/configure.in; then
4986      echo
4987      $ac_configure --help
4988    else
4989      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
4990    fi
4991    cd $ac_popdir
4992  done
4993fi
4994
4995test -n "$ac_init_help" && exit 0
4996if $ac_init_version; then
4997  cat <<\_ACEOF
4998
4999Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
5000Free Software Foundation, Inc.
5001This configure script is free software; the Free Software Foundation
5002gives unlimited permission to copy, distribute and modify it.
5003_ACEOF
5004  exit 0
5005fi
5006exec 5>config.log
5007cat >&5 <<_ACEOF
5008This file contains any messages produced by compilers while
5009running configure, to aid debugging if configure makes a mistake.
5010
5011It was created by $as_me, which was
5012generated by GNU Autoconf 2.57.  Invocation command line was
5013
5014  $ $0 $@
5015
5016_ACEOF
5017{
5018cat <<_ASUNAME
5019## --------- ##
5020## Platform. ##
5021## --------- ##
5022
5023hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
5024uname -m = `(uname -m) 2>/dev/null || echo unknown`
5025uname -r = `(uname -r) 2>/dev/null || echo unknown`
5026uname -s = `(uname -s) 2>/dev/null || echo unknown`
5027uname -v = `(uname -v) 2>/dev/null || echo unknown`
5028
5029/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
5030/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
5031
5032/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
5033/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
5034/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
5035hostinfo               = `(hostinfo) 2>/dev/null               || echo unknown`
5036/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
5037/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
5038/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
5039
5040_ASUNAME
5041
5042as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5043for as_dir in $PATH
5044do
5045  IFS=$as_save_IFS
5046  test -z "$as_dir" && as_dir=.
5047  echo "PATH: $as_dir"
5048done
5049
5050} >&5
5051
5052cat >&5 <<_ACEOF
5053
5054
5055## ----------- ##
5056## Core tests. ##
5057## ----------- ##
5058
5059_ACEOF
5060
5061
5062# Keep a trace of the command line.
5063# Strip out --no-create and --no-recursion so they do not pile up.
5064# Strip out --silent because we don't want to record it for future runs.
5065# Also quote any args containing shell meta-characters.
5066# Make two passes to allow for proper duplicate-argument suppression.
5067ac_configure_args=
5068ac_configure_args0=
5069ac_configure_args1=
5070ac_sep=
5071ac_must_keep_next=false
5072for ac_pass in 1 2
5073do
5074  for ac_arg
5075  do
5076    case $ac_arg in
5077    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
5078    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
5079    | -silent | --silent | --silen | --sile | --sil)
5080      continue ;;
5081    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
5082      ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
5083    esac
5084    case $ac_pass in
5085    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
5086    2)
5087      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
5088      if test $ac_must_keep_next = true; then
5089        ac_must_keep_next=false # Got value, back to normal.
5090      else
5091        case $ac_arg in
5092          *=* | --config-cache | -C | -disable-* | --disable-* \
5093          | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
5094          | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
5095          | -with-* | --with-* | -without-* | --without-* | --x)
5096            case "$ac_configure_args0 " in
5097              "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
5098            esac
5099            ;;
5100          -* ) ac_must_keep_next=true ;;
5101        esac
5102      fi
5103      ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
5104      # Get rid of the leading space.
5105      ac_sep=" "
5106      ;;
5107    esac
5108  done
5109done
5110$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
5111$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
5112
5113# When interrupted or exit'd, cleanup temporary files, and complete
5114# config.log.  We remove comments because anyway the quotes in there
5115# would cause problems or look ugly.
5116# WARNING: Be sure not to use single quotes in there, as some shells,
5117# such as our DU 5.0 friend, will then `close' the trap.
5118trap 'exit_status=$?
5119  # Save into config.log some information that might help in debugging.
5120  {
5121    echo
5122
5123    cat <<\_ASBOX
5124## ---------------- ##
5125## Cache variables. ##
5126## ---------------- ##
5127_ASBOX
5128    echo
5129    # The following way of writing the cache mishandles newlines in values,
5130{
5131  (set) 2>&1 |
5132    case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
5133    *ac_space=\ *)
5134      sed -n \
5135        "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
5136    	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
5137      ;;
5138    *)
5139      sed -n \
5140        "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
5141      ;;
5142    esac;
5143}
5144    echo
5145
5146    cat <<\_ASBOX
5147## ----------------- ##
5148## Output variables. ##
5149## ----------------- ##
5150_ASBOX
5151    echo
5152    for ac_var in $ac_subst_vars
5153    do
5154      eval ac_val=$`echo $ac_var`
5155      echo "$ac_var='"'"'$ac_val'"'"'"
5156    done | sort
5157    echo
5158
5159    if test -n "$ac_subst_files"; then
5160      cat <<\_ASBOX
5161## ------------- ##
5162## Output files. ##
5163## ------------- ##
5164_ASBOX
5165      echo
5166      for ac_var in $ac_subst_files
5167      do
5168	eval ac_val=$`echo $ac_var`
5169        echo "$ac_var='"'"'$ac_val'"'"'"
5170      done | sort
5171      echo
5172    fi
5173
5174    if test -s confdefs.h; then
5175      cat <<\_ASBOX
5176## ----------- ##
5177## confdefs.h. ##
5178## ----------- ##
5179_ASBOX
5180      echo
5181      sed "/^$/d" confdefs.h | sort
5182      echo
5183    fi
5184    test "$ac_signal" != 0 &&
5185      echo "$as_me: caught signal $ac_signal"
5186    echo "$as_me: exit $exit_status"
5187  } >&5
5188  rm -f core core.* *.core &&
5189  rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
5190    exit $exit_status
5191     ' 0
5192for ac_signal in 1 2 13 15; do
5193  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
5194done
5195ac_signal=0
5196
5197# confdefs.h avoids OS command line length limits that DEFS can exceed.
5198rm -rf conftest* confdefs.h
5199# AIX cpp loses on an empty file, so make sure it contains at least a newline.
5200echo >confdefs.h
5201
5202# Predefined preprocessor variables.
5203
5204cat >>confdefs.h <<_ACEOF
5205#define PACKAGE_NAME "$PACKAGE_NAME"
5206_ACEOF
5207
5208
5209cat >>confdefs.h <<_ACEOF
5210#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
5211_ACEOF
5212
5213
5214cat >>confdefs.h <<_ACEOF
5215#define PACKAGE_VERSION "$PACKAGE_VERSION"
5216_ACEOF
5217
5218
5219cat >>confdefs.h <<_ACEOF
5220#define PACKAGE_STRING "$PACKAGE_STRING"
5221_ACEOF
5222
5223
5224cat >>confdefs.h <<_ACEOF
5225#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
5226_ACEOF
5227
5228
5229# Let the site file select an alternate cache file if it wants to.
5230# Prefer explicitly selected file to automatically selected ones.
5231if test -z "$CONFIG_SITE"; then
5232  if test "x$prefix" != xNONE; then
5233    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
5234  else
5235    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
5236  fi
5237fi
5238for ac_site_file in $CONFIG_SITE; do
5239  if test -r "$ac_site_file"; then
5240    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
5241echo "$as_me: loading site script $ac_site_file" >&6;}
5242    sed 's/^/| /' "$ac_site_file" >&5
5243    . "$ac_site_file"
5244  fi
5245done
5246
5247if test -r "$cache_file"; then
5248  # Some versions of bash will fail to source /dev/null (special
5249  # files actually), so we avoid doing that.
5250  if test -f "$cache_file"; then
5251    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
5252echo "$as_me: loading cache $cache_file" >&6;}
5253    case $cache_file in
5254      [\\/]* | ?:[\\/]* ) . $cache_file;;
5255      *)                      . ./$cache_file;;
5256    esac
5257  fi
5258else
5259  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
5260echo "$as_me: creating cache $cache_file" >&6;}
5261  >$cache_file
5262fi
5263
5264# Check that the precious variables saved in the cache have kept the same
5265# value.
5266ac_cache_corrupted=false
5267for ac_var in `(set) 2>&1 |
5268               sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
5269  eval ac_old_set=\$ac_cv_env_${ac_var}_set
5270  eval ac_new_set=\$ac_env_${ac_var}_set
5271  eval ac_old_val="\$ac_cv_env_${ac_var}_value"
5272  eval ac_new_val="\$ac_env_${ac_var}_value"
5273  case $ac_old_set,$ac_new_set in
5274    set,)
5275      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
5276echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
5277      ac_cache_corrupted=: ;;
5278    ,set)
5279      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
5280echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
5281      ac_cache_corrupted=: ;;
5282    ,);;
5283    *)
5284      if test "x$ac_old_val" != "x$ac_new_val"; then
5285        { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
5286echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
5287        { echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
5288echo "$as_me:   former value:  $ac_old_val" >&2;}
5289        { echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
5290echo "$as_me:   current value: $ac_new_val" >&2;}
5291        ac_cache_corrupted=:
5292      fi;;
5293  esac
5294  # Pass precious variables to config.status.
5295  if test "$ac_new_set" = set; then
5296    case $ac_new_val in
5297    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
5298      ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
5299    *) ac_arg=$ac_var=$ac_new_val ;;
5300    esac
5301    case " $ac_configure_args " in
5302      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
5303      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
5304    esac
5305  fi
5306done
5307if $ac_cache_corrupted; then
5308  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
5309echo "$as_me: error: changes in the environment can compromise the build" >&2;}
5310  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
5311echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
5312   { (exit 1); exit 1; }; }
5313fi
5314
5315ac_ext=c
5316ac_cpp='$CPP $CPPFLAGS'
5317ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
5318ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
5319ac_compiler_gnu=$ac_cv_c_compiler_gnu
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336
5337
5338
5339          ac_config_headers="$ac_config_headers config.h"
5340
5341
5342ac_ext=c
5343ac_cpp='$CPP $CPPFLAGS'
5344ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
5345ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
5346ac_compiler_gnu=$ac_cv_c_compiler_gnu
5347if test -n "$ac_tool_prefix"; then
5348  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
5349set dummy ${ac_tool_prefix}gcc; ac_word=$2
5350echo "$as_me:$LINENO: checking for $ac_word" >&5
5351echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
5352if test "${ac_cv_prog_CC+set}" = set; then
5353  echo $ECHO_N "(cached) $ECHO_C" >&6
5354else
5355  if test -n "$CC"; then
5356  ac_cv_prog_CC="$CC" # Let the user override the test.
5357else
5358as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5359for as_dir in $PATH
5360do
5361  IFS=$as_save_IFS
5362  test -z "$as_dir" && as_dir=.
5363  for ac_exec_ext in '' $ac_executable_extensions; do
5364  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
5365    ac_cv_prog_CC="${ac_tool_prefix}gcc"
5366    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
5367    break 2
5368  fi
5369done
5370done
5371
5372fi
5373fi
5374CC=$ac_cv_prog_CC
5375if test -n "$CC"; then
5376  echo "$as_me:$LINENO: result: $CC" >&5
5377echo "${ECHO_T}$CC" >&6
5378else
5379  echo "$as_me:$LINENO: result: no" >&5
5380echo "${ECHO_T}no" >&6
5381fi
5382
5383fi
5384if test -z "$ac_cv_prog_CC"; then
5385  ac_ct_CC=$CC
5386  # Extract the first word of "gcc", so it can be a program name with args.
5387set dummy gcc; ac_word=$2
5388echo "$as_me:$LINENO: checking for $ac_word" >&5
5389echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
5390if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
5391  echo $ECHO_N "(cached) $ECHO_C" >&6
5392else
5393  if test -n "$ac_ct_CC"; then
5394  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
5395else
5396as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5397for as_dir in $PATH
5398do
5399  IFS=$as_save_IFS
5400  test -z "$as_dir" && as_dir=.
5401  for ac_exec_ext in '' $ac_executable_extensions; do
5402  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
5403    ac_cv_prog_ac_ct_CC="gcc"
5404    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
5405    break 2
5406  fi
5407done
5408done
5409
5410fi
5411fi
5412ac_ct_CC=$ac_cv_prog_ac_ct_CC
5413if test -n "$ac_ct_CC"; then
5414  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
5415echo "${ECHO_T}$ac_ct_CC" >&6
5416else
5417  echo "$as_me:$LINENO: result: no" >&5
5418echo "${ECHO_T}no" >&6
5419fi
5420
5421  CC=$ac_ct_CC
5422else
5423  CC="$ac_cv_prog_CC"
5424fi
5425
5426if test -z "$CC"; then
5427  if test -n "$ac_tool_prefix"; then
5428  # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
5429set dummy ${ac_tool_prefix}cc; ac_word=$2
5430echo "$as_me:$LINENO: checking for $ac_word" >&5
5431echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
5432if test "${ac_cv_prog_CC+set}" = set; then
5433  echo $ECHO_N "(cached) $ECHO_C" >&6
5434else
5435  if test -n "$CC"; then
5436  ac_cv_prog_CC="$CC" # Let the user override the test.
5437else
5438as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5439for as_dir in $PATH
5440do
5441  IFS=$as_save_IFS
5442  test -z "$as_dir" && as_dir=.
5443  for ac_exec_ext in '' $ac_executable_extensions; do
5444  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
5445    ac_cv_prog_CC="${ac_tool_prefix}cc"
5446    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
5447    break 2
5448  fi
5449done
5450done
5451
5452fi
5453fi
5454CC=$ac_cv_prog_CC
5455if test -n "$CC"; then
5456  echo "$as_me:$LINENO: result: $CC" >&5
5457echo "${ECHO_T}$CC" >&6
5458else
5459  echo "$as_me:$LINENO: result: no" >&5
5460echo "${ECHO_T}no" >&6
5461fi
5462
5463fi
5464if test -z "$ac_cv_prog_CC"; then
5465  ac_ct_CC=$CC
5466  # Extract the first word of "cc", so it can be a program name with args.
5467set dummy cc; ac_word=$2
5468echo "$as_me:$LINENO: checking for $ac_word" >&5
5469echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
5470if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
5471  echo $ECHO_N "(cached) $ECHO_C" >&6
5472else
5473  if test -n "$ac_ct_CC"; then
5474  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
5475else
5476as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5477for as_dir in $PATH
5478do
5479  IFS=$as_save_IFS
5480  test -z "$as_dir" && as_dir=.
5481  for ac_exec_ext in '' $ac_executable_extensions; do
5482  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
5483    ac_cv_prog_ac_ct_CC="cc"
5484    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
5485    break 2
5486  fi
5487done
5488done
5489
5490fi
5491fi
5492ac_ct_CC=$ac_cv_prog_ac_ct_CC
5493if test -n "$ac_ct_CC"; then
5494  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
5495echo "${ECHO_T}$ac_ct_CC" >&6
5496else
5497  echo "$as_me:$LINENO: result: no" >&5
5498echo "${ECHO_T}no" >&6
5499fi
5500
5501  CC=$ac_ct_CC
5502else
5503  CC="$ac_cv_prog_CC"
5504fi
5505
5506fi
5507if test -z "$CC"; then
5508  # Extract the first word of "cc", so it can be a program name with args.
5509set dummy cc; ac_word=$2
5510echo "$as_me:$LINENO: checking for $ac_word" >&5
5511echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
5512if test "${ac_cv_prog_CC+set}" = set; then
5513  echo $ECHO_N "(cached) $ECHO_C" >&6
5514else
5515  if test -n "$CC"; then
5516  ac_cv_prog_CC="$CC" # Let the user override the test.
5517else
5518  ac_prog_rejected=no
5519as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5520for as_dir in $PATH
5521do
5522  IFS=$as_save_IFS
5523  test -z "$as_dir" && as_dir=.
5524  for ac_exec_ext in '' $ac_executable_extensions; do
5525  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
5526    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
5527       ac_prog_rejected=yes
5528       continue
5529     fi
5530    ac_cv_prog_CC="cc"
5531    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
5532    break 2
5533  fi
5534done
5535done
5536
5537if test $ac_prog_rejected = yes; then
5538  # We found a bogon in the path, so make sure we never use it.
5539  set dummy $ac_cv_prog_CC
5540  shift
5541  if test $# != 0; then
5542    # We chose a different compiler from the bogus one.
5543    # However, it has the same basename, so the bogon will be chosen
5544    # first if we set CC to just the basename; use the full file name.
5545    shift
5546    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
5547  fi
5548fi
5549fi
5550fi
5551CC=$ac_cv_prog_CC
5552if test -n "$CC"; then
5553  echo "$as_me:$LINENO: result: $CC" >&5
5554echo "${ECHO_T}$CC" >&6
5555else
5556  echo "$as_me:$LINENO: result: no" >&5
5557echo "${ECHO_T}no" >&6
5558fi
5559
5560fi
5561if test -z "$CC"; then
5562  if test -n "$ac_tool_prefix"; then
5563  for ac_prog in cl
5564  do
5565    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
5566set dummy $ac_tool_prefix$ac_prog; ac_word=$2
5567echo "$as_me:$LINENO: checking for $ac_word" >&5
5568echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
5569if test "${ac_cv_prog_CC+set}" = set; then
5570  echo $ECHO_N "(cached) $ECHO_C" >&6
5571else
5572  if test -n "$CC"; then
5573  ac_cv_prog_CC="$CC" # Let the user override the test.
5574else
5575as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5576for as_dir in $PATH
5577do
5578  IFS=$as_save_IFS
5579  test -z "$as_dir" && as_dir=.
5580  for ac_exec_ext in '' $ac_executable_extensions; do
5581  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
5582    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
5583    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
5584    break 2
5585  fi
5586done
5587done
5588
5589fi
5590fi
5591CC=$ac_cv_prog_CC
5592if test -n "$CC"; then
5593  echo "$as_me:$LINENO: result: $CC" >&5
5594echo "${ECHO_T}$CC" >&6
5595else
5596  echo "$as_me:$LINENO: result: no" >&5
5597echo "${ECHO_T}no" >&6
5598fi
5599
5600    test -n "$CC" && break
5601  done
5602fi
5603if test -z "$CC"; then
5604  ac_ct_CC=$CC
5605  for ac_prog in cl
5606do
5607  # Extract the first word of "$ac_prog", so it can be a program name with args.
5608set dummy $ac_prog; ac_word=$2
5609echo "$as_me:$LINENO: checking for $ac_word" >&5
5610echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
5611if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
5612  echo $ECHO_N "(cached) $ECHO_C" >&6
5613else
5614  if test -n "$ac_ct_CC"; then
5615  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
5616else
5617as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5618for as_dir in $PATH
5619do
5620  IFS=$as_save_IFS
5621  test -z "$as_dir" && as_dir=.
5622  for ac_exec_ext in '' $ac_executable_extensions; do
5623  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
5624    ac_cv_prog_ac_ct_CC="$ac_prog"
5625    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
5626    break 2
5627  fi
5628done
5629done
5630
5631fi
5632fi
5633ac_ct_CC=$ac_cv_prog_ac_ct_CC
5634if test -n "$ac_ct_CC"; then
5635  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
5636echo "${ECHO_T}$ac_ct_CC" >&6
5637else
5638  echo "$as_me:$LINENO: result: no" >&5
5639echo "${ECHO_T}no" >&6
5640fi
5641
5642  test -n "$ac_ct_CC" && break
5643done
5644
5645  CC=$ac_ct_CC
5646fi
5647
5648fi
5649
5650
5651test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
5652See \`config.log' for more details." >&5
5653echo "$as_me: error: no acceptable C compiler found in \$PATH
5654See \`config.log' for more details." >&2;}
5655   { (exit 1); exit 1; }; }
5656
5657# Provide some information about the compiler.
5658echo "$as_me:$LINENO:" \
5659     "checking for C compiler version" >&5
5660ac_compiler=`set X $ac_compile; echo $2`
5661{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
5662  (eval $ac_compiler --version </dev/null >&5) 2>&5
5663  ac_status=$?
5664  echo "$as_me:$LINENO: \$? = $ac_status" >&5
5665  (exit $ac_status); }
5666{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
5667  (eval $ac_compiler -v </dev/null >&5) 2>&5
5668  ac_status=$?
5669  echo "$as_me:$LINENO: \$? = $ac_status" >&5
5670  (exit $ac_status); }
5671{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
5672  (eval $ac_compiler -V </dev/null >&5) 2>&5
5673  ac_status=$?
5674  echo "$as_me:$LINENO: \$? = $ac_status" >&5
5675  (exit $ac_status); }
5676
5677cat >conftest.$ac_ext <<_ACEOF
5678#line $LINENO "configure"
5679/* confdefs.h.  */
5680_ACEOF
5681cat confdefs.h >>conftest.$ac_ext
5682cat >>conftest.$ac_ext <<_ACEOF
5683/* end confdefs.h.  */
5684
5685int
5686main ()
5687{
5688
5689  ;
5690  return 0;
5691}
5692_ACEOF
5693ac_clean_files_save=$ac_clean_files
5694ac_clean_files="$ac_clean_files a.out a.exe b.out"
5695# Try to create an executable without -o first, disregard a.out.
5696# It will help us diagnose broken compilers, and finding out an intuition
5697# of exeext.
5698echo "$as_me:$LINENO: checking for C compiler default output" >&5
5699echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
5700ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
5701if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
5702  (eval $ac_link_default) 2>&5
5703  ac_status=$?
5704  echo "$as_me:$LINENO: \$? = $ac_status" >&5
5705  (exit $ac_status); }; then
5706  # Find the output, starting from the most likely.  This scheme is
5707# not robust to junk in `.', hence go to wildcards (a.*) only as a last
5708# resort.
5709
5710# Be careful to initialize this variable, since it used to be cached.
5711# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
5712ac_cv_exeext=
5713# b.out is created by i960 compilers.
5714for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
5715do
5716  test -f "$ac_file" || continue
5717  case $ac_file in
5718    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
5719        ;;
5720    conftest.$ac_ext )
5721        # This is the source file.
5722        ;;
5723    [ab].out )
5724        # We found the default executable, but exeext='' is most
5725        # certainly right.
5726        break;;
5727    *.* )
5728        ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
5729        # FIXME: I believe we export ac_cv_exeext for Libtool,
5730        # but it would be cool to find out if it's true.  Does anybody
5731        # maintain Libtool? --akim.
5732        export ac_cv_exeext
5733        break;;
5734    * )
5735        break;;
5736  esac
5737done
5738else
5739  echo "$as_me: failed program was:" >&5
5740sed 's/^/| /' conftest.$ac_ext >&5
5741
5742{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
5743See \`config.log' for more details." >&5
5744echo "$as_me: error: C compiler cannot create executables
5745See \`config.log' for more details." >&2;}
5746   { (exit 77); exit 77; }; }
5747fi
5748
5749ac_exeext=$ac_cv_exeext
5750echo "$as_me:$LINENO: result: $ac_file" >&5
5751echo "${ECHO_T}$ac_file" >&6
5752
5753# Check the compiler produces executables we can run.  If not, either
5754# the compiler is broken, or we cross compile.
5755echo "$as_me:$LINENO: checking whether the C compiler works" >&5
5756echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
5757# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
5758# If not cross compiling, check that we can run a simple program.
5759if test "$cross_compiling" != yes; then
5760  if { ac_try='./$ac_file'
5761  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
5762  (eval $ac_try) 2>&5
5763  ac_status=$?
5764  echo "$as_me:$LINENO: \$? = $ac_status" >&5
5765  (exit $ac_status); }; }; then
5766    cross_compiling=no
5767  else
5768    if test "$cross_compiling" = maybe; then
5769	cross_compiling=yes
5770    else
5771	{ { echo "$as_me:$LINENO: error: cannot run C compiled programs.
5772If you meant to cross compile, use \`--host'.
5773See \`config.log' for more details." >&5
5774echo "$as_me: error: cannot run C compiled programs.
5775If you meant to cross compile, use \`--host'.
5776See \`config.log' for more details." >&2;}
5777   { (exit 1); exit 1; }; }
5778    fi
5779  fi
5780fi
5781echo "$as_me:$LINENO: result: yes" >&5
5782echo "${ECHO_T}yes" >&6
5783
5784rm -f a.out a.exe conftest$ac_cv_exeext b.out
5785ac_clean_files=$ac_clean_files_save
5786# Check the compiler produces executables we can run.  If not, either
5787# the compiler is broken, or we cross compile.
5788echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
5789echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
5790echo "$as_me:$LINENO: result: $cross_compiling" >&5
5791echo "${ECHO_T}$cross_compiling" >&6
5792
5793echo "$as_me:$LINENO: checking for suffix of executables" >&5
5794echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
5795if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
5796  (eval $ac_link) 2>&5
5797  ac_status=$?
5798  echo "$as_me:$LINENO: \$? = $ac_status" >&5
5799  (exit $ac_status); }; then
5800  # If both `conftest.exe' and `conftest' are `present' (well, observable)
5801# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
5802# work properly (i.e., refer to `conftest.exe'), while it won't with
5803# `rm'.
5804for ac_file in conftest.exe conftest conftest.*; do
5805  test -f "$ac_file" || continue
5806  case $ac_file in
5807    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
5808    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
5809          export ac_cv_exeext
5810          break;;
5811    * ) break;;
5812  esac
5813done
5814else
5815  { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
5816See \`config.log' for more details." >&5
5817echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
5818See \`config.log' for more details." >&2;}
5819   { (exit 1); exit 1; }; }
5820fi
5821
5822rm -f conftest$ac_cv_exeext
5823echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
5824echo "${ECHO_T}$ac_cv_exeext" >&6
5825
5826rm -f conftest.$ac_ext
5827EXEEXT=$ac_cv_exeext
5828ac_exeext=$EXEEXT
5829echo "$as_me:$LINENO: checking for suffix of object files" >&5
5830echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
5831if test "${ac_cv_objext+set}" = set; then
5832  echo $ECHO_N "(cached) $ECHO_C" >&6
5833else
5834  cat >conftest.$ac_ext <<_ACEOF
5835#line $LINENO "configure"
5836/* confdefs.h.  */
5837_ACEOF
5838cat confdefs.h >>conftest.$ac_ext
5839cat >>conftest.$ac_ext <<_ACEOF
5840/* end confdefs.h.  */
5841
5842int
5843main ()
5844{
5845
5846  ;
5847  return 0;
5848}
5849_ACEOF
5850rm -f conftest.o conftest.obj
5851if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
5852  (eval $ac_compile) 2>&5
5853  ac_status=$?
5854  echo "$as_me:$LINENO: \$? = $ac_status" >&5
5855  (exit $ac_status); }; then
5856  for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
5857  case $ac_file in
5858    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
5859    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
5860       break;;
5861  esac
5862done
5863else
5864  echo "$as_me: failed program was:" >&5
5865sed 's/^/| /' conftest.$ac_ext >&5
5866
5867{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
5868See \`config.log' for more details." >&5
5869echo "$as_me: error: cannot compute suffix of object files: cannot compile
5870See \`config.log' for more details." >&2;}
5871   { (exit 1); exit 1; }; }
5872fi
5873
5874rm -f conftest.$ac_cv_objext conftest.$ac_ext
5875fi
5876echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
5877echo "${ECHO_T}$ac_cv_objext" >&6
5878OBJEXT=$ac_cv_objext
5879ac_objext=$OBJEXT
5880echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
5881echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
5882if test "${ac_cv_c_compiler_gnu+set}" = set; then
5883  echo $ECHO_N "(cached) $ECHO_C" >&6
5884else
5885  cat >conftest.$ac_ext <<_ACEOF
5886#line $LINENO "configure"
5887/* confdefs.h.  */
5888_ACEOF
5889cat confdefs.h >>conftest.$ac_ext
5890cat >>conftest.$ac_ext <<_ACEOF
5891/* end confdefs.h.  */
5892
5893int
5894main ()
5895{
5896#ifndef __GNUC__
5897       choke me
5898#endif
5899
5900  ;
5901  return 0;
5902}
5903_ACEOF
5904rm -f conftest.$ac_objext
5905if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
5906  (eval $ac_compile) 2>&5
5907  ac_status=$?
5908  echo "$as_me:$LINENO: \$? = $ac_status" >&5
5909  (exit $ac_status); } &&
5910         { ac_try='test -s conftest.$ac_objext'
5911  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
5912  (eval $ac_try) 2>&5
5913  ac_status=$?
5914  echo "$as_me:$LINENO: \$? = $ac_status" >&5
5915  (exit $ac_status); }; }; then
5916  ac_compiler_gnu=yes
5917else
5918  echo "$as_me: failed program was:" >&5
5919sed 's/^/| /' conftest.$ac_ext >&5
5920
5921ac_compiler_gnu=no
5922fi
5923rm -f conftest.$ac_objext conftest.$ac_ext
5924ac_cv_c_compiler_gnu=$ac_compiler_gnu
5925
5926fi
5927echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
5928echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
5929GCC=`test $ac_compiler_gnu = yes && echo yes`
5930ac_test_CFLAGS=${CFLAGS+set}
5931ac_save_CFLAGS=$CFLAGS
5932CFLAGS="-g"
5933echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
5934echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
5935if test "${ac_cv_prog_cc_g+set}" = set; then
5936  echo $ECHO_N "(cached) $ECHO_C" >&6
5937else
5938  cat >conftest.$ac_ext <<_ACEOF
5939#line $LINENO "configure"
5940/* confdefs.h.  */
5941_ACEOF
5942cat confdefs.h >>conftest.$ac_ext
5943cat >>conftest.$ac_ext <<_ACEOF
5944/* end confdefs.h.  */
5945
5946int
5947main ()
5948{
5949
5950  ;
5951  return 0;
5952}
5953_ACEOF
5954rm -f conftest.$ac_objext
5955if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
5956  (eval $ac_compile) 2>&5
5957  ac_status=$?
5958  echo "$as_me:$LINENO: \$? = $ac_status" >&5
5959  (exit $ac_status); } &&
5960         { ac_try='test -s conftest.$ac_objext'
5961  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
5962  (eval $ac_try) 2>&5
5963  ac_status=$?
5964  echo "$as_me:$LINENO: \$? = $ac_status" >&5
5965  (exit $ac_status); }; }; then
5966  ac_cv_prog_cc_g=yes
5967else
5968  echo "$as_me: failed program was:" >&5
5969sed 's/^/| /' conftest.$ac_ext >&5
5970
5971ac_cv_prog_cc_g=no
5972fi
5973rm -f conftest.$ac_objext conftest.$ac_ext
5974fi
5975echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
5976echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
5977if test "$ac_test_CFLAGS" = set; then
5978  CFLAGS=$ac_save_CFLAGS
5979elif test $ac_cv_prog_cc_g = yes; then
5980  if test "$GCC" = yes; then
5981    CFLAGS="-g -O2"
5982  else
5983    CFLAGS="-g"
5984  fi
5985else
5986  if test "$GCC" = yes; then
5987    CFLAGS="-O2"
5988  else
5989    CFLAGS=
5990  fi
5991fi
5992echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
5993echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
5994if test "${ac_cv_prog_cc_stdc+set}" = set; then
5995  echo $ECHO_N "(cached) $ECHO_C" >&6
5996else
5997  ac_cv_prog_cc_stdc=no
5998ac_save_CC=$CC
5999cat >conftest.$ac_ext <<_ACEOF
6000#line $LINENO "configure"
6001/* confdefs.h.  */
6002_ACEOF
6003cat confdefs.h >>conftest.$ac_ext
6004cat >>conftest.$ac_ext <<_ACEOF
6005/* end confdefs.h.  */
6006#include <stdarg.h>
6007#include <stdio.h>
6008#include <sys/types.h>
6009#include <sys/stat.h>
6010/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
6011struct buf { int x; };
6012FILE * (*rcsopen) (struct buf *, struct stat *, int);
6013static char *e (p, i)
6014     char **p;
6015     int i;
6016{
6017  return p[i];
6018}
6019static char *f (char * (*g) (char **, int), char **p, ...)
6020{
6021  char *s;
6022  va_list v;
6023  va_start (v,p);
6024  s = g (p, va_arg (v,int));
6025  va_end (v);
6026  return s;
6027}
6028int test (int i, double x);
6029struct s1 {int (*f) (int a);};
6030struct s2 {int (*f) (double a);};
6031int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
6032int argc;
6033char **argv;
6034int
6035main ()
6036{
6037return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
6038  ;
6039  return 0;
6040}
6041_ACEOF
6042# Don't try gcc -ansi; that turns off useful extensions and
6043# breaks some systems' header files.
6044# AIX			-qlanglvl=ansi
6045# Ultrix and OSF/1	-std1
6046# HP-UX 10.20 and later	-Ae
6047# HP-UX older versions	-Aa -D_HPUX_SOURCE
6048# SVR4			-Xc -D__EXTENSIONS__
6049for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
6050do
6051  CC="$ac_save_CC $ac_arg"
6052  rm -f conftest.$ac_objext
6053if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
6054  (eval $ac_compile) 2>&5
6055  ac_status=$?
6056  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6057  (exit $ac_status); } &&
6058         { ac_try='test -s conftest.$ac_objext'
6059  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6060  (eval $ac_try) 2>&5
6061  ac_status=$?
6062  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6063  (exit $ac_status); }; }; then
6064  ac_cv_prog_cc_stdc=$ac_arg
6065break
6066else
6067  echo "$as_me: failed program was:" >&5
6068sed 's/^/| /' conftest.$ac_ext >&5
6069
6070fi
6071rm -f conftest.$ac_objext
6072done
6073rm -f conftest.$ac_ext conftest.$ac_objext
6074CC=$ac_save_CC
6075
6076fi
6077
6078case "x$ac_cv_prog_cc_stdc" in
6079  x|xno)
6080    echo "$as_me:$LINENO: result: none needed" >&5
6081echo "${ECHO_T}none needed" >&6 ;;
6082  *)
6083    echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
6084echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
6085    CC="$CC $ac_cv_prog_cc_stdc" ;;
6086esac
6087
6088# Some people use a C++ compiler to compile C.  Since we use `exit',
6089# in C++ we need to declare it.  In case someone uses the same compiler
6090# for both compiling C and C++ we need to have the C++ compiler decide
6091# the declaration of exit, since it's the most demanding environment.
6092cat >conftest.$ac_ext <<_ACEOF
6093#ifndef __cplusplus
6094  choke me
6095#endif
6096_ACEOF
6097rm -f conftest.$ac_objext
6098if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
6099  (eval $ac_compile) 2>&5
6100  ac_status=$?
6101  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6102  (exit $ac_status); } &&
6103         { ac_try='test -s conftest.$ac_objext'
6104  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6105  (eval $ac_try) 2>&5
6106  ac_status=$?
6107  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6108  (exit $ac_status); }; }; then
6109  for ac_declaration in \
6110   ''\
6111   '#include <stdlib.h>' \
6112   'extern "C" void std::exit (int) throw (); using std::exit;' \
6113   'extern "C" void std::exit (int); using std::exit;' \
6114   'extern "C" void exit (int) throw ();' \
6115   'extern "C" void exit (int);' \
6116   'void exit (int);'
6117do
6118  cat >conftest.$ac_ext <<_ACEOF
6119#line $LINENO "configure"
6120/* confdefs.h.  */
6121_ACEOF
6122cat confdefs.h >>conftest.$ac_ext
6123cat >>conftest.$ac_ext <<_ACEOF
6124/* end confdefs.h.  */
6125#include <stdlib.h>
6126$ac_declaration
6127int
6128main ()
6129{
6130exit (42);
6131  ;
6132  return 0;
6133}
6134_ACEOF
6135rm -f conftest.$ac_objext
6136if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
6137  (eval $ac_compile) 2>&5
6138  ac_status=$?
6139  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6140  (exit $ac_status); } &&
6141         { ac_try='test -s conftest.$ac_objext'
6142  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6143  (eval $ac_try) 2>&5
6144  ac_status=$?
6145  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6146  (exit $ac_status); }; }; then
6147  :
6148else
6149  echo "$as_me: failed program was:" >&5
6150sed 's/^/| /' conftest.$ac_ext >&5
6151
6152continue
6153fi
6154rm -f conftest.$ac_objext conftest.$ac_ext
6155  cat >conftest.$ac_ext <<_ACEOF
6156#line $LINENO "configure"
6157/* confdefs.h.  */
6158_ACEOF
6159cat confdefs.h >>conftest.$ac_ext
6160cat >>conftest.$ac_ext <<_ACEOF
6161/* end confdefs.h.  */
6162$ac_declaration
6163int
6164main ()
6165{
6166exit (42);
6167  ;
6168  return 0;
6169}
6170_ACEOF
6171rm -f conftest.$ac_objext
6172if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
6173  (eval $ac_compile) 2>&5
6174  ac_status=$?
6175  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6176  (exit $ac_status); } &&
6177         { ac_try='test -s conftest.$ac_objext'
6178  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6179  (eval $ac_try) 2>&5
6180  ac_status=$?
6181  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6182  (exit $ac_status); }; }; then
6183  break
6184else
6185  echo "$as_me: failed program was:" >&5
6186sed 's/^/| /' conftest.$ac_ext >&5
6187
6188fi
6189rm -f conftest.$ac_objext conftest.$ac_ext
6190done
6191rm -f conftest*
6192if test -n "$ac_declaration"; then
6193  echo '#ifdef __cplusplus' >>confdefs.h
6194  echo $ac_declaration      >>confdefs.h
6195  echo '#endif'             >>confdefs.h
6196fi
6197
6198else
6199  echo "$as_me: failed program was:" >&5
6200sed 's/^/| /' conftest.$ac_ext >&5
6201
6202fi
6203rm -f conftest.$ac_objext conftest.$ac_ext
6204ac_ext=c
6205ac_cpp='$CPP $CPPFLAGS'
6206ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
6207ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
6208ac_compiler_gnu=$ac_cv_c_compiler_gnu
6209
6210
6211echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5
6212echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6
6213if test "${ac_cv_c_bigendian+set}" = set; then
6214  echo $ECHO_N "(cached) $ECHO_C" >&6
6215else
6216  # See if sys/param.h defines the BYTE_ORDER macro.
6217cat >conftest.$ac_ext <<_ACEOF
6218#line $LINENO "configure"
6219/* confdefs.h.  */
6220_ACEOF
6221cat confdefs.h >>conftest.$ac_ext
6222cat >>conftest.$ac_ext <<_ACEOF
6223/* end confdefs.h.  */
6224#include <sys/types.h>
6225#include <sys/param.h>
6226
6227int
6228main ()
6229{
6230#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
6231 bogus endian macros
6232#endif
6233
6234  ;
6235  return 0;
6236}
6237_ACEOF
6238rm -f conftest.$ac_objext
6239if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
6240  (eval $ac_compile) 2>&5
6241  ac_status=$?
6242  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6243  (exit $ac_status); } &&
6244         { ac_try='test -s conftest.$ac_objext'
6245  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6246  (eval $ac_try) 2>&5
6247  ac_status=$?
6248  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6249  (exit $ac_status); }; }; then
6250  # It does; now see whether it defined to BIG_ENDIAN or not.
6251cat >conftest.$ac_ext <<_ACEOF
6252#line $LINENO "configure"
6253/* confdefs.h.  */
6254_ACEOF
6255cat confdefs.h >>conftest.$ac_ext
6256cat >>conftest.$ac_ext <<_ACEOF
6257/* end confdefs.h.  */
6258#include <sys/types.h>
6259#include <sys/param.h>
6260
6261int
6262main ()
6263{
6264#if BYTE_ORDER != BIG_ENDIAN
6265 not big endian
6266#endif
6267
6268  ;
6269  return 0;
6270}
6271_ACEOF
6272rm -f conftest.$ac_objext
6273if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
6274  (eval $ac_compile) 2>&5
6275  ac_status=$?
6276  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6277  (exit $ac_status); } &&
6278         { ac_try='test -s conftest.$ac_objext'
6279  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6280  (eval $ac_try) 2>&5
6281  ac_status=$?
6282  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6283  (exit $ac_status); }; }; then
6284  ac_cv_c_bigendian=yes
6285else
6286  echo "$as_me: failed program was:" >&5
6287sed 's/^/| /' conftest.$ac_ext >&5
6288
6289ac_cv_c_bigendian=no
6290fi
6291rm -f conftest.$ac_objext conftest.$ac_ext
6292else
6293  echo "$as_me: failed program was:" >&5
6294sed 's/^/| /' conftest.$ac_ext >&5
6295
6296# It does not; compile a test program.
6297if test "$cross_compiling" = yes; then
6298  # try to guess the endianness by grepping values into an object file
6299  ac_cv_c_bigendian=unknown
6300  cat >conftest.$ac_ext <<_ACEOF
6301#line $LINENO "configure"
6302/* confdefs.h.  */
6303_ACEOF
6304cat confdefs.h >>conftest.$ac_ext
6305cat >>conftest.$ac_ext <<_ACEOF
6306/* end confdefs.h.  */
6307short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
6308short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
6309void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; }
6310short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
6311short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
6312void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; }
6313int
6314main ()
6315{
6316 _ascii (); _ebcdic ();
6317  ;
6318  return 0;
6319}
6320_ACEOF
6321rm -f conftest.$ac_objext
6322if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
6323  (eval $ac_compile) 2>&5
6324  ac_status=$?
6325  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6326  (exit $ac_status); } &&
6327         { ac_try='test -s conftest.$ac_objext'
6328  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6329  (eval $ac_try) 2>&5
6330  ac_status=$?
6331  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6332  (exit $ac_status); }; }; then
6333  if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then
6334  ac_cv_c_bigendian=yes
6335fi
6336if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
6337  if test "$ac_cv_c_bigendian" = unknown; then
6338    ac_cv_c_bigendian=no
6339  else
6340    # finding both strings is unlikely to happen, but who knows?
6341    ac_cv_c_bigendian=unknown
6342  fi
6343fi
6344else
6345  echo "$as_me: failed program was:" >&5
6346sed 's/^/| /' conftest.$ac_ext >&5
6347
6348fi
6349rm -f conftest.$ac_objext conftest.$ac_ext
6350else
6351  cat >conftest.$ac_ext <<_ACEOF
6352#line $LINENO "configure"
6353/* confdefs.h.  */
6354_ACEOF
6355cat confdefs.h >>conftest.$ac_ext
6356cat >>conftest.$ac_ext <<_ACEOF
6357/* end confdefs.h.  */
6358int
6359main ()
6360{
6361  /* Are we little or big endian?  From Harbison&Steele.  */
6362  union
6363  {
6364    long l;
6365    char c[sizeof (long)];
6366  } u;
6367  u.l = 1;
6368  exit (u.c[sizeof (long) - 1] == 1);
6369}
6370_ACEOF
6371rm -f conftest$ac_exeext
6372if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
6373  (eval $ac_link) 2>&5
6374  ac_status=$?
6375  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6376  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
6377  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6378  (eval $ac_try) 2>&5
6379  ac_status=$?
6380  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6381  (exit $ac_status); }; }; then
6382  ac_cv_c_bigendian=no
6383else
6384  echo "$as_me: program exited with status $ac_status" >&5
6385echo "$as_me: failed program was:" >&5
6386sed 's/^/| /' conftest.$ac_ext >&5
6387
6388( exit $ac_status )
6389ac_cv_c_bigendian=yes
6390fi
6391rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
6392fi
6393fi
6394rm -f conftest.$ac_objext conftest.$ac_ext
6395fi
6396echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5
6397echo "${ECHO_T}$ac_cv_c_bigendian" >&6
6398case $ac_cv_c_bigendian in
6399  yes)
6400
6401cat >>confdefs.h <<\_ACEOF
6402#define WORDS_BIGENDIAN 1
6403_ACEOF
6404 ;;
6405  no)
6406     ;;
6407  *)
6408    { { echo "$as_me:$LINENO: error: unknown endianness
6409presetting ac_cv_c_bigendian=no (or yes) will help" >&5
6410echo "$as_me: error: unknown endianness
6411presetting ac_cv_c_bigendian=no (or yes) will help" >&2;}
6412   { (exit 1); exit 1; }; } ;;
6413esac
6414
6415ac_ext=c
6416ac_cpp='$CPP $CPPFLAGS'
6417ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
6418ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
6419ac_compiler_gnu=$ac_cv_c_compiler_gnu
6420echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
6421echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
6422# On Suns, sometimes $CPP names a directory.
6423if test -n "$CPP" && test -d "$CPP"; then
6424  CPP=
6425fi
6426if test -z "$CPP"; then
6427  if test "${ac_cv_prog_CPP+set}" = set; then
6428  echo $ECHO_N "(cached) $ECHO_C" >&6
6429else
6430      # Double quotes because CPP needs to be expanded
6431    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
6432    do
6433      ac_preproc_ok=false
6434for ac_c_preproc_warn_flag in '' yes
6435do
6436  # Use a header file that comes with gcc, so configuring glibc
6437  # with a fresh cross-compiler works.
6438  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
6439  # <limits.h> exists even on freestanding compilers.
6440  # On the NeXT, cc -E runs the code through the compiler's parser,
6441  # not just through cpp. "Syntax error" is here to catch this case.
6442  cat >conftest.$ac_ext <<_ACEOF
6443#line $LINENO "configure"
6444/* confdefs.h.  */
6445_ACEOF
6446cat confdefs.h >>conftest.$ac_ext
6447cat >>conftest.$ac_ext <<_ACEOF
6448/* end confdefs.h.  */
6449#ifdef __STDC__
6450# include <limits.h>
6451#else
6452# include <assert.h>
6453#endif
6454                     Syntax error
6455_ACEOF
6456if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
6457  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
6458  ac_status=$?
6459  grep -v '^ *+' conftest.er1 >conftest.err
6460  rm -f conftest.er1
6461  cat conftest.err >&5
6462  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6463  (exit $ac_status); } >/dev/null; then
6464  if test -s conftest.err; then
6465    ac_cpp_err=$ac_c_preproc_warn_flag
6466  else
6467    ac_cpp_err=
6468  fi
6469else
6470  ac_cpp_err=yes
6471fi
6472if test -z "$ac_cpp_err"; then
6473  :
6474else
6475  echo "$as_me: failed program was:" >&5
6476sed 's/^/| /' conftest.$ac_ext >&5
6477
6478  # Broken: fails on valid input.
6479continue
6480fi
6481rm -f conftest.err conftest.$ac_ext
6482
6483  # OK, works on sane cases.  Now check whether non-existent headers
6484  # can be detected and how.
6485  cat >conftest.$ac_ext <<_ACEOF
6486#line $LINENO "configure"
6487/* confdefs.h.  */
6488_ACEOF
6489cat confdefs.h >>conftest.$ac_ext
6490cat >>conftest.$ac_ext <<_ACEOF
6491/* end confdefs.h.  */
6492#include <ac_nonexistent.h>
6493_ACEOF
6494if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
6495  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
6496  ac_status=$?
6497  grep -v '^ *+' conftest.er1 >conftest.err
6498  rm -f conftest.er1
6499  cat conftest.err >&5
6500  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6501  (exit $ac_status); } >/dev/null; then
6502  if test -s conftest.err; then
6503    ac_cpp_err=$ac_c_preproc_warn_flag
6504  else
6505    ac_cpp_err=
6506  fi
6507else
6508  ac_cpp_err=yes
6509fi
6510if test -z "$ac_cpp_err"; then
6511  # Broken: success on invalid input.
6512continue
6513else
6514  echo "$as_me: failed program was:" >&5
6515sed 's/^/| /' conftest.$ac_ext >&5
6516
6517  # Passes both tests.
6518ac_preproc_ok=:
6519break
6520fi
6521rm -f conftest.err conftest.$ac_ext
6522
6523done
6524# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
6525rm -f conftest.err conftest.$ac_ext
6526if $ac_preproc_ok; then
6527  break
6528fi
6529
6530    done
6531    ac_cv_prog_CPP=$CPP
6532
6533fi
6534  CPP=$ac_cv_prog_CPP
6535else
6536  ac_cv_prog_CPP=$CPP
6537fi
6538echo "$as_me:$LINENO: result: $CPP" >&5
6539echo "${ECHO_T}$CPP" >&6
6540ac_preproc_ok=false
6541for ac_c_preproc_warn_flag in '' yes
6542do
6543  # Use a header file that comes with gcc, so configuring glibc
6544  # with a fresh cross-compiler works.
6545  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
6546  # <limits.h> exists even on freestanding compilers.
6547  # On the NeXT, cc -E runs the code through the compiler's parser,
6548  # not just through cpp. "Syntax error" is here to catch this case.
6549  cat >conftest.$ac_ext <<_ACEOF
6550#line $LINENO "configure"
6551/* confdefs.h.  */
6552_ACEOF
6553cat confdefs.h >>conftest.$ac_ext
6554cat >>conftest.$ac_ext <<_ACEOF
6555/* end confdefs.h.  */
6556#ifdef __STDC__
6557# include <limits.h>
6558#else
6559# include <assert.h>
6560#endif
6561                     Syntax error
6562_ACEOF
6563if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
6564  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
6565  ac_status=$?
6566  grep -v '^ *+' conftest.er1 >conftest.err
6567  rm -f conftest.er1
6568  cat conftest.err >&5
6569  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6570  (exit $ac_status); } >/dev/null; then
6571  if test -s conftest.err; then
6572    ac_cpp_err=$ac_c_preproc_warn_flag
6573  else
6574    ac_cpp_err=
6575  fi
6576else
6577  ac_cpp_err=yes
6578fi
6579if test -z "$ac_cpp_err"; then
6580  :
6581else
6582  echo "$as_me: failed program was:" >&5
6583sed 's/^/| /' conftest.$ac_ext >&5
6584
6585  # Broken: fails on valid input.
6586continue
6587fi
6588rm -f conftest.err conftest.$ac_ext
6589
6590  # OK, works on sane cases.  Now check whether non-existent headers
6591  # can be detected and how.
6592  cat >conftest.$ac_ext <<_ACEOF
6593#line $LINENO "configure"
6594/* confdefs.h.  */
6595_ACEOF
6596cat confdefs.h >>conftest.$ac_ext
6597cat >>conftest.$ac_ext <<_ACEOF
6598/* end confdefs.h.  */
6599#include <ac_nonexistent.h>
6600_ACEOF
6601if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
6602  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
6603  ac_status=$?
6604  grep -v '^ *+' conftest.er1 >conftest.err
6605  rm -f conftest.er1
6606  cat conftest.err >&5
6607  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6608  (exit $ac_status); } >/dev/null; then
6609  if test -s conftest.err; then
6610    ac_cpp_err=$ac_c_preproc_warn_flag
6611  else
6612    ac_cpp_err=
6613  fi
6614else
6615  ac_cpp_err=yes
6616fi
6617if test -z "$ac_cpp_err"; then
6618  # Broken: success on invalid input.
6619continue
6620else
6621  echo "$as_me: failed program was:" >&5
6622sed 's/^/| /' conftest.$ac_ext >&5
6623
6624  # Passes both tests.
6625ac_preproc_ok=:
6626break
6627fi
6628rm -f conftest.err conftest.$ac_ext
6629
6630done
6631# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
6632rm -f conftest.err conftest.$ac_ext
6633if $ac_preproc_ok; then
6634  :
6635else
6636  { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
6637See \`config.log' for more details." >&5
6638echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
6639See \`config.log' for more details." >&2;}
6640   { (exit 1); exit 1; }; }
6641fi
6642
6643ac_ext=c
6644ac_cpp='$CPP $CPPFLAGS'
6645ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
6646ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
6647ac_compiler_gnu=$ac_cv_c_compiler_gnu
6648
6649
6650echo "$as_me:$LINENO: checking for egrep" >&5
6651echo $ECHO_N "checking for egrep... $ECHO_C" >&6
6652if test "${ac_cv_prog_egrep+set}" = set; then
6653  echo $ECHO_N "(cached) $ECHO_C" >&6
6654else
6655  if echo a | (grep -E '(a|b)') >/dev/null 2>&1
6656    then ac_cv_prog_egrep='grep -E'
6657    else ac_cv_prog_egrep='egrep'
6658    fi
6659fi
6660echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
6661echo "${ECHO_T}$ac_cv_prog_egrep" >&6
6662 EGREP=$ac_cv_prog_egrep
6663
6664
6665if test $ac_cv_c_compiler_gnu = yes; then
6666    echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5
6667echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6
6668if test "${ac_cv_prog_gcc_traditional+set}" = set; then
6669  echo $ECHO_N "(cached) $ECHO_C" >&6
6670else
6671    ac_pattern="Autoconf.*'x'"
6672  cat >conftest.$ac_ext <<_ACEOF
6673#line $LINENO "configure"
6674/* confdefs.h.  */
6675_ACEOF
6676cat confdefs.h >>conftest.$ac_ext
6677cat >>conftest.$ac_ext <<_ACEOF
6678/* end confdefs.h.  */
6679#include <sgtty.h>
6680Autoconf TIOCGETP
6681_ACEOF
6682if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
6683  $EGREP "$ac_pattern" >/dev/null 2>&1; then
6684  ac_cv_prog_gcc_traditional=yes
6685else
6686  ac_cv_prog_gcc_traditional=no
6687fi
6688rm -f conftest*
6689
6690
6691  if test $ac_cv_prog_gcc_traditional = no; then
6692    cat >conftest.$ac_ext <<_ACEOF
6693#line $LINENO "configure"
6694/* confdefs.h.  */
6695_ACEOF
6696cat confdefs.h >>conftest.$ac_ext
6697cat >>conftest.$ac_ext <<_ACEOF
6698/* end confdefs.h.  */
6699#include <termio.h>
6700Autoconf TCGETA
6701_ACEOF
6702if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
6703  $EGREP "$ac_pattern" >/dev/null 2>&1; then
6704  ac_cv_prog_gcc_traditional=yes
6705fi
6706rm -f conftest*
6707
6708  fi
6709fi
6710echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5
6711echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6
6712  if test $ac_cv_prog_gcc_traditional = yes; then
6713    CC="$CC -traditional"
6714  fi
6715fi
6716
6717ac_aux_dir=
6718for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
6719  if test -f $ac_dir/install-sh; then
6720    ac_aux_dir=$ac_dir
6721    ac_install_sh="$ac_aux_dir/install-sh -c"
6722    break
6723  elif test -f $ac_dir/install.sh; then
6724    ac_aux_dir=$ac_dir
6725    ac_install_sh="$ac_aux_dir/install.sh -c"
6726    break
6727  elif test -f $ac_dir/shtool; then
6728    ac_aux_dir=$ac_dir
6729    ac_install_sh="$ac_aux_dir/shtool install -c"
6730    break
6731  fi
6732done
6733if test -z "$ac_aux_dir"; then
6734  { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
6735echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
6736   { (exit 1); exit 1; }; }
6737fi
6738ac_config_guess="$SHELL $ac_aux_dir/config.guess"
6739ac_config_sub="$SHELL $ac_aux_dir/config.sub"
6740ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
6741
6742# Find a good install program.  We prefer a C program (faster),
6743# so one script is as good as another.  But avoid the broken or
6744# incompatible versions:
6745# SysV /etc/install, /usr/sbin/install
6746# SunOS /usr/etc/install
6747# IRIX /sbin/install
6748# AIX /bin/install
6749# AmigaOS /C/install, which installs bootblocks on floppy discs
6750# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
6751# AFS /usr/afsws/bin/install, which mishandles nonexistent args
6752# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
6753# ./install, which can be erroneously created by make from ./install.sh.
6754echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
6755echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
6756if test -z "$INSTALL"; then
6757if test "${ac_cv_path_install+set}" = set; then
6758  echo $ECHO_N "(cached) $ECHO_C" >&6
6759else
6760  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6761for as_dir in $PATH
6762do
6763  IFS=$as_save_IFS
6764  test -z "$as_dir" && as_dir=.
6765  # Account for people who put trailing slashes in PATH elements.
6766case $as_dir/ in
6767  ./ | .// | /cC/* | \
6768  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
6769  /usr/ucb/* ) ;;
6770  *)
6771    # OSF1 and SCO ODT 3.0 have their own names for install.
6772    # Don't use installbsd from OSF since it installs stuff as root
6773    # by default.
6774    for ac_prog in ginstall scoinst install; do
6775      for ac_exec_ext in '' $ac_executable_extensions; do
6776        if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
6777          if test $ac_prog = install &&
6778            grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
6779            # AIX install.  It has an incompatible calling convention.
6780            :
6781          elif test $ac_prog = install &&
6782            grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
6783            # program-specific install script used by HP pwplus--don't use.
6784            :
6785          else
6786            ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
6787            break 3
6788          fi
6789        fi
6790      done
6791    done
6792    ;;
6793esac
6794done
6795
6796
6797fi
6798  if test "${ac_cv_path_install+set}" = set; then
6799    INSTALL=$ac_cv_path_install
6800  else
6801    # As a last resort, use the slow shell script.  We don't cache a
6802    # path for INSTALL within a source directory, because that will
6803    # break other packages using the cache if that directory is
6804    # removed, or if the path is relative.
6805    INSTALL=$ac_install_sh
6806  fi
6807fi
6808echo "$as_me:$LINENO: result: $INSTALL" >&5
6809echo "${ECHO_T}$INSTALL" >&6
6810
6811# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
6812# It thinks the first close brace ends the variable substitution.
6813test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
6814
6815test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
6816
6817test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
6818
6819if test -n "$ac_tool_prefix"; then
6820  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
6821set dummy ${ac_tool_prefix}ranlib; ac_word=$2
6822echo "$as_me:$LINENO: checking for $ac_word" >&5
6823echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
6824if test "${ac_cv_prog_RANLIB+set}" = set; then
6825  echo $ECHO_N "(cached) $ECHO_C" >&6
6826else
6827  if test -n "$RANLIB"; then
6828  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
6829else
6830as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6831for as_dir in $PATH
6832do
6833  IFS=$as_save_IFS
6834  test -z "$as_dir" && as_dir=.
6835  for ac_exec_ext in '' $ac_executable_extensions; do
6836  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
6837    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
6838    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
6839    break 2
6840  fi
6841done
6842done
6843
6844fi
6845fi
6846RANLIB=$ac_cv_prog_RANLIB
6847if test -n "$RANLIB"; then
6848  echo "$as_me:$LINENO: result: $RANLIB" >&5
6849echo "${ECHO_T}$RANLIB" >&6
6850else
6851  echo "$as_me:$LINENO: result: no" >&5
6852echo "${ECHO_T}no" >&6
6853fi
6854
6855fi
6856if test -z "$ac_cv_prog_RANLIB"; then
6857  ac_ct_RANLIB=$RANLIB
6858  # Extract the first word of "ranlib", so it can be a program name with args.
6859set dummy ranlib; ac_word=$2
6860echo "$as_me:$LINENO: checking for $ac_word" >&5
6861echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
6862if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
6863  echo $ECHO_N "(cached) $ECHO_C" >&6
6864else
6865  if test -n "$ac_ct_RANLIB"; then
6866  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
6867else
6868as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6869for as_dir in $PATH
6870do
6871  IFS=$as_save_IFS
6872  test -z "$as_dir" && as_dir=.
6873  for ac_exec_ext in '' $ac_executable_extensions; do
6874  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
6875    ac_cv_prog_ac_ct_RANLIB="ranlib"
6876    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
6877    break 2
6878  fi
6879done
6880done
6881
6882  test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
6883fi
6884fi
6885ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
6886if test -n "$ac_ct_RANLIB"; then
6887  echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
6888echo "${ECHO_T}$ac_ct_RANLIB" >&6
6889else
6890  echo "$as_me:$LINENO: result: no" >&5
6891echo "${ECHO_T}no" >&6
6892fi
6893
6894  RANLIB=$ac_ct_RANLIB
6895else
6896  RANLIB="$ac_cv_prog_RANLIB"
6897fi
6898
6899if test -n "$ac_tool_prefix"; then
6900  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
6901set dummy ${ac_tool_prefix}ar; ac_word=$2
6902echo "$as_me:$LINENO: checking for $ac_word" >&5
6903echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
6904if test "${ac_cv_prog_AR+set}" = set; then
6905  echo $ECHO_N "(cached) $ECHO_C" >&6
6906else
6907  if test -n "$AR"; then
6908  ac_cv_prog_AR="$AR" # Let the user override the test.
6909else
6910as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6911for as_dir in $PATH
6912do
6913  IFS=$as_save_IFS
6914  test -z "$as_dir" && as_dir=.
6915  for ac_exec_ext in '' $ac_executable_extensions; do
6916  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
6917    ac_cv_prog_AR="${ac_tool_prefix}ar"
6918    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
6919    break 2
6920  fi
6921done
6922done
6923
6924fi
6925fi
6926AR=$ac_cv_prog_AR
6927if test -n "$AR"; then
6928  echo "$as_me:$LINENO: result: $AR" >&5
6929echo "${ECHO_T}$AR" >&6
6930else
6931  echo "$as_me:$LINENO: result: no" >&5
6932echo "${ECHO_T}no" >&6
6933fi
6934
6935fi
6936if test -z "$ac_cv_prog_AR"; then
6937  ac_ct_AR=$AR
6938  # Extract the first word of "ar", so it can be a program name with args.
6939set dummy ar; ac_word=$2
6940echo "$as_me:$LINENO: checking for $ac_word" >&5
6941echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
6942if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
6943  echo $ECHO_N "(cached) $ECHO_C" >&6
6944else
6945  if test -n "$ac_ct_AR"; then
6946  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
6947else
6948as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6949for as_dir in $PATH
6950do
6951  IFS=$as_save_IFS
6952  test -z "$as_dir" && as_dir=.
6953  for ac_exec_ext in '' $ac_executable_extensions; do
6954  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
6955    ac_cv_prog_ac_ct_AR="ar"
6956    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
6957    break 2
6958  fi
6959done
6960done
6961
6962fi
6963fi
6964ac_ct_AR=$ac_cv_prog_ac_ct_AR
6965if test -n "$ac_ct_AR"; then
6966  echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
6967echo "${ECHO_T}$ac_ct_AR" >&6
6968else
6969  echo "$as_me:$LINENO: result: no" >&5
6970echo "${ECHO_T}no" >&6
6971fi
6972
6973  AR=$ac_ct_AR
6974else
6975  AR="$ac_cv_prog_AR"
6976fi
6977
6978
6979
6980echo "$as_me:$LINENO: checking for ANSI C header files" >&5
6981echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
6982if test "${ac_cv_header_stdc+set}" = set; then
6983  echo $ECHO_N "(cached) $ECHO_C" >&6
6984else
6985  cat >conftest.$ac_ext <<_ACEOF
6986#line $LINENO "configure"
6987/* confdefs.h.  */
6988_ACEOF
6989cat confdefs.h >>conftest.$ac_ext
6990cat >>conftest.$ac_ext <<_ACEOF
6991/* end confdefs.h.  */
6992#include <stdlib.h>
6993#include <stdarg.h>
6994#include <string.h>
6995#include <float.h>
6996
6997int
6998main ()
6999{
7000
7001  ;
7002  return 0;
7003}
7004_ACEOF
7005rm -f conftest.$ac_objext
7006if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
7007  (eval $ac_compile) 2>&5
7008  ac_status=$?
7009  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7010  (exit $ac_status); } &&
7011         { ac_try='test -s conftest.$ac_objext'
7012  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
7013  (eval $ac_try) 2>&5
7014  ac_status=$?
7015  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7016  (exit $ac_status); }; }; then
7017  ac_cv_header_stdc=yes
7018else
7019  echo "$as_me: failed program was:" >&5
7020sed 's/^/| /' conftest.$ac_ext >&5
7021
7022ac_cv_header_stdc=no
7023fi
7024rm -f conftest.$ac_objext conftest.$ac_ext
7025
7026if test $ac_cv_header_stdc = yes; then
7027  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
7028  cat >conftest.$ac_ext <<_ACEOF
7029#line $LINENO "configure"
7030/* confdefs.h.  */
7031_ACEOF
7032cat confdefs.h >>conftest.$ac_ext
7033cat >>conftest.$ac_ext <<_ACEOF
7034/* end confdefs.h.  */
7035#include <string.h>
7036
7037_ACEOF
7038if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
7039  $EGREP "memchr" >/dev/null 2>&1; then
7040  :
7041else
7042  ac_cv_header_stdc=no
7043fi
7044rm -f conftest*
7045
7046fi
7047
7048if test $ac_cv_header_stdc = yes; then
7049  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
7050  cat >conftest.$ac_ext <<_ACEOF
7051#line $LINENO "configure"
7052/* confdefs.h.  */
7053_ACEOF
7054cat confdefs.h >>conftest.$ac_ext
7055cat >>conftest.$ac_ext <<_ACEOF
7056/* end confdefs.h.  */
7057#include <stdlib.h>
7058
7059_ACEOF
7060if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
7061  $EGREP "free" >/dev/null 2>&1; then
7062  :
7063else
7064  ac_cv_header_stdc=no
7065fi
7066rm -f conftest*
7067
7068fi
7069
7070if test $ac_cv_header_stdc = yes; then
7071  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
7072  if test "$cross_compiling" = yes; then
7073  :
7074else
7075  cat >conftest.$ac_ext <<_ACEOF
7076#line $LINENO "configure"
7077/* confdefs.h.  */
7078_ACEOF
7079cat confdefs.h >>conftest.$ac_ext
7080cat >>conftest.$ac_ext <<_ACEOF
7081/* end confdefs.h.  */
7082#include <ctype.h>
7083#if ((' ' & 0x0FF) == 0x020)
7084# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
7085# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
7086#else
7087# define ISLOWER(c) \
7088                   (('a' <= (c) && (c) <= 'i') \
7089                     || ('j' <= (c) && (c) <= 'r') \
7090                     || ('s' <= (c) && (c) <= 'z'))
7091# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
7092#endif
7093
7094#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
7095int
7096main ()
7097{
7098  int i;
7099  for (i = 0; i < 256; i++)
7100    if (XOR (islower (i), ISLOWER (i))
7101        || toupper (i) != TOUPPER (i))
7102      exit(2);
7103  exit (0);
7104}
7105_ACEOF
7106rm -f conftest$ac_exeext
7107if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
7108  (eval $ac_link) 2>&5
7109  ac_status=$?
7110  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7111  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
7112  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
7113  (eval $ac_try) 2>&5
7114  ac_status=$?
7115  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7116  (exit $ac_status); }; }; then
7117  :
7118else
7119  echo "$as_me: program exited with status $ac_status" >&5
7120echo "$as_me: failed program was:" >&5
7121sed 's/^/| /' conftest.$ac_ext >&5
7122
7123( exit $ac_status )
7124ac_cv_header_stdc=no
7125fi
7126rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
7127fi
7128fi
7129fi
7130echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
7131echo "${ECHO_T}$ac_cv_header_stdc" >&6
7132if test $ac_cv_header_stdc = yes; then
7133
7134cat >>confdefs.h <<\_ACEOF
7135#define STDC_HEADERS 1
7136_ACEOF
7137
7138fi
7139
7140# On IRIX 5.3, sys/types and inttypes.h are conflicting.
7141
7142
7143
7144
7145
7146
7147
7148
7149
7150for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
7151                  inttypes.h stdint.h unistd.h
7152do
7153as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
7154echo "$as_me:$LINENO: checking for $ac_header" >&5
7155echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
7156if eval "test \"\${$as_ac_Header+set}\" = set"; then
7157  echo $ECHO_N "(cached) $ECHO_C" >&6
7158else
7159  cat >conftest.$ac_ext <<_ACEOF
7160#line $LINENO "configure"
7161/* confdefs.h.  */
7162_ACEOF
7163cat confdefs.h >>conftest.$ac_ext
7164cat >>conftest.$ac_ext <<_ACEOF
7165/* end confdefs.h.  */
7166$ac_includes_default
7167
7168#include <$ac_header>
7169_ACEOF
7170rm -f conftest.$ac_objext
7171if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
7172  (eval $ac_compile) 2>&5
7173  ac_status=$?
7174  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7175  (exit $ac_status); } &&
7176         { ac_try='test -s conftest.$ac_objext'
7177  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
7178  (eval $ac_try) 2>&5
7179  ac_status=$?
7180  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7181  (exit $ac_status); }; }; then
7182  eval "$as_ac_Header=yes"
7183else
7184  echo "$as_me: failed program was:" >&5
7185sed 's/^/| /' conftest.$ac_ext >&5
7186
7187eval "$as_ac_Header=no"
7188fi
7189rm -f conftest.$ac_objext conftest.$ac_ext
7190fi
7191echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
7192echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
7193if test `eval echo '${'$as_ac_Header'}'` = yes; then
7194  cat >>confdefs.h <<_ACEOF
7195#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
7196_ACEOF
7197
7198fi
7199
7200done
7201
7202
7203
7204
7205
7206
7207
7208
7209
7210
7211for ac_header in alloca.h elf.h elfaccess.h libelf.h libelf/libelf.h sgidefs.h sys/types.h sys/ia64/elf.h
7212do
7213as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
7214if eval "test \"\${$as_ac_Header+set}\" = set"; then
7215  echo "$as_me:$LINENO: checking for $ac_header" >&5
7216echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
7217if eval "test \"\${$as_ac_Header+set}\" = set"; then
7218  echo $ECHO_N "(cached) $ECHO_C" >&6
7219fi
7220echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
7221echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
7222else
7223  # Is the header compilable?
7224echo "$as_me:$LINENO: checking $ac_header usability" >&5
7225echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
7226cat >conftest.$ac_ext <<_ACEOF
7227#line $LINENO "configure"
7228/* confdefs.h.  */
7229_ACEOF
7230cat confdefs.h >>conftest.$ac_ext
7231cat >>conftest.$ac_ext <<_ACEOF
7232/* end confdefs.h.  */
7233$ac_includes_default
7234#include <$ac_header>
7235_ACEOF
7236rm -f conftest.$ac_objext
7237if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
7238  (eval $ac_compile) 2>&5
7239  ac_status=$?
7240  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7241  (exit $ac_status); } &&
7242         { ac_try='test -s conftest.$ac_objext'
7243  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
7244  (eval $ac_try) 2>&5
7245  ac_status=$?
7246  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7247  (exit $ac_status); }; }; then
7248  ac_header_compiler=yes
7249else
7250  echo "$as_me: failed program was:" >&5
7251sed 's/^/| /' conftest.$ac_ext >&5
7252
7253ac_header_compiler=no
7254fi
7255rm -f conftest.$ac_objext conftest.$ac_ext
7256echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
7257echo "${ECHO_T}$ac_header_compiler" >&6
7258
7259# Is the header present?
7260echo "$as_me:$LINENO: checking $ac_header presence" >&5
7261echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
7262cat >conftest.$ac_ext <<_ACEOF
7263#line $LINENO "configure"
7264/* confdefs.h.  */
7265_ACEOF
7266cat confdefs.h >>conftest.$ac_ext
7267cat >>conftest.$ac_ext <<_ACEOF
7268/* end confdefs.h.  */
7269#include <$ac_header>
7270_ACEOF
7271if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
7272  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
7273  ac_status=$?
7274  grep -v '^ *+' conftest.er1 >conftest.err
7275  rm -f conftest.er1
7276  cat conftest.err >&5
7277  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7278  (exit $ac_status); } >/dev/null; then
7279  if test -s conftest.err; then
7280    ac_cpp_err=$ac_c_preproc_warn_flag
7281  else
7282    ac_cpp_err=
7283  fi
7284else
7285  ac_cpp_err=yes
7286fi
7287if test -z "$ac_cpp_err"; then
7288  ac_header_preproc=yes
7289else
7290  echo "$as_me: failed program was:" >&5
7291sed 's/^/| /' conftest.$ac_ext >&5
7292
7293  ac_header_preproc=no
7294fi
7295rm -f conftest.err conftest.$ac_ext
7296echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
7297echo "${ECHO_T}$ac_header_preproc" >&6
7298
7299# So?  What about this header?
7300case $ac_header_compiler:$ac_header_preproc in
7301  yes:no )
7302    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
7303echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
7304    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
7305echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
7306    (
7307      cat <<\_ASBOX
7308## ------------------------------------ ##
7309## Report this to bug-autoconf@gnu.org. ##
7310## ------------------------------------ ##
7311_ASBOX
7312    ) |
7313      sed "s/^/$as_me: WARNING:     /" >&2
7314    ;;
7315  no:yes )
7316    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
7317echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
7318    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
7319echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
7320    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
7321echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
7322    (
7323      cat <<\_ASBOX
7324## ------------------------------------ ##
7325## Report this to bug-autoconf@gnu.org. ##
7326## ------------------------------------ ##
7327_ASBOX
7328    ) |
7329      sed "s/^/$as_me: WARNING:     /" >&2
7330    ;;
7331esac
7332echo "$as_me:$LINENO: checking for $ac_header" >&5
7333echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
7334if eval "test \"\${$as_ac_Header+set}\" = set"; then
7335  echo $ECHO_N "(cached) $ECHO_C" >&6
7336else
7337  eval "$as_ac_Header=$ac_header_preproc"
7338fi
7339echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
7340echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
7341
7342fi
7343if test `eval echo '${'$as_ac_Header'}'` = yes; then
7344  cat >>confdefs.h <<_ACEOF
7345#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
7346_ACEOF
7347
7348fi
7349
7350done
7351
7352
7353echo "$as_me:$LINENO: checking for elf64_getehdr in -lelf" >&5
7354echo $ECHO_N "checking for elf64_getehdr in -lelf... $ECHO_C" >&6
7355if test "${ac_cv_lib_elf_elf64_getehdr+set}" = set; then
7356  echo $ECHO_N "(cached) $ECHO_C" >&6
7357else
7358  ac_check_lib_save_LIBS=$LIBS
7359LIBS="-lelf  $LIBS"
7360cat >conftest.$ac_ext <<_ACEOF
7361#line $LINENO "configure"
7362/* confdefs.h.  */
7363_ACEOF
7364cat confdefs.h >>conftest.$ac_ext
7365cat >>conftest.$ac_ext <<_ACEOF
7366/* end confdefs.h.  */
7367
7368/* Override any gcc2 internal prototype to avoid an error.  */
7369#ifdef __cplusplus
7370extern "C"
7371#endif
7372/* We use char because int might match the return type of a gcc2
7373   builtin and then its argument prototype would still apply.  */
7374char elf64_getehdr ();
7375int
7376main ()
7377{
7378elf64_getehdr ();
7379  ;
7380  return 0;
7381}
7382_ACEOF
7383rm -f conftest.$ac_objext conftest$ac_exeext
7384if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
7385  (eval $ac_link) 2>&5
7386  ac_status=$?
7387  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7388  (exit $ac_status); } &&
7389         { ac_try='test -s conftest$ac_exeext'
7390  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
7391  (eval $ac_try) 2>&5
7392  ac_status=$?
7393  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7394  (exit $ac_status); }; }; then
7395  ac_cv_lib_elf_elf64_getehdr=yes
7396else
7397  echo "$as_me: failed program was:" >&5
7398sed 's/^/| /' conftest.$ac_ext >&5
7399
7400ac_cv_lib_elf_elf64_getehdr=no
7401fi
7402rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
7403LIBS=$ac_check_lib_save_LIBS
7404fi
7405echo "$as_me:$LINENO: result: $ac_cv_lib_elf_elf64_getehdr" >&5
7406echo "${ECHO_T}$ac_cv_lib_elf_elf64_getehdr" >&6
7407if test $ac_cv_lib_elf_elf64_getehdr = yes; then
7408  cat >>confdefs.h <<\_ACEOF
7409#define HAVE_ELF64_GETEHDR 1
7410_ACEOF
7411
7412fi
7413
7414echo "$as_me:$LINENO: checking for elf64_getshdr in -lelf" >&5
7415echo $ECHO_N "checking for elf64_getshdr in -lelf... $ECHO_C" >&6
7416if test "${ac_cv_lib_elf_elf64_getshdr+set}" = set; then
7417  echo $ECHO_N "(cached) $ECHO_C" >&6
7418else
7419  ac_check_lib_save_LIBS=$LIBS
7420LIBS="-lelf  $LIBS"
7421cat >conftest.$ac_ext <<_ACEOF
7422#line $LINENO "configure"
7423/* confdefs.h.  */
7424_ACEOF
7425cat confdefs.h >>conftest.$ac_ext
7426cat >>conftest.$ac_ext <<_ACEOF
7427/* end confdefs.h.  */
7428
7429/* Override any gcc2 internal prototype to avoid an error.  */
7430#ifdef __cplusplus
7431extern "C"
7432#endif
7433/* We use char because int might match the return type of a gcc2
7434   builtin and then its argument prototype would still apply.  */
7435char elf64_getshdr ();
7436int
7437main ()
7438{
7439elf64_getshdr ();
7440  ;
7441  return 0;
7442}
7443_ACEOF
7444rm -f conftest.$ac_objext conftest$ac_exeext
7445if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
7446  (eval $ac_link) 2>&5
7447  ac_status=$?
7448  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7449  (exit $ac_status); } &&
7450         { ac_try='test -s conftest$ac_exeext'
7451  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
7452  (eval $ac_try) 2>&5
7453  ac_status=$?
7454  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7455  (exit $ac_status); }; }; then
7456  ac_cv_lib_elf_elf64_getshdr=yes
7457else
7458  echo "$as_me: failed program was:" >&5
7459sed 's/^/| /' conftest.$ac_ext >&5
7460
7461ac_cv_lib_elf_elf64_getshdr=no
7462fi
7463rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
7464LIBS=$ac_check_lib_save_LIBS
7465fi
7466echo "$as_me:$LINENO: result: $ac_cv_lib_elf_elf64_getshdr" >&5
7467echo "${ECHO_T}$ac_cv_lib_elf_elf64_getshdr" >&6
7468if test $ac_cv_lib_elf_elf64_getshdr = yes; then
7469  cat >>confdefs.h <<\_ACEOF
7470#define HAVE_ELF64_GETSHDR 1
7471_ACEOF
7472
7473fi
7474
7475cat >conftest.$ac_ext <<_ACEOF
7476#line $LINENO "configure"
7477/* confdefs.h.  */
7478_ACEOF
7479cat confdefs.h >>conftest.$ac_ext
7480cat >>conftest.$ac_ext <<_ACEOF
7481/* end confdefs.h.  */
7482
7483int
7484main ()
7485{
7486__uint32_t p; p = 3;
7487  ;
7488  return 0;
7489}
7490_ACEOF
7491rm -f conftest.$ac_objext
7492if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
7493  (eval $ac_compile) 2>&5
7494  ac_status=$?
7495  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7496  (exit $ac_status); } &&
7497         { ac_try='test -s conftest.$ac_objext'
7498  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
7499  (eval $ac_try) 2>&5
7500  ac_status=$?
7501  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7502  (exit $ac_status); }; }; then
7503  cat >>confdefs.h <<\_ACEOF
7504#define HAVE___UINT32_T 1
7505_ACEOF
7506
7507else
7508  echo "$as_me: failed program was:" >&5
7509sed 's/^/| /' conftest.$ac_ext >&5
7510
7511fi
7512rm -f conftest.$ac_objext conftest.$ac_ext
7513cat >conftest.$ac_ext <<_ACEOF
7514#line $LINENO "configure"
7515/* confdefs.h.  */
7516_ACEOF
7517cat confdefs.h >>conftest.$ac_ext
7518cat >>conftest.$ac_ext <<_ACEOF
7519/* end confdefs.h.  */
7520
7521int
7522main ()
7523{
7524__uint64_t p; p = 3;
7525  ;
7526  return 0;
7527}
7528_ACEOF
7529rm -f conftest.$ac_objext
7530if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
7531  (eval $ac_compile) 2>&5
7532  ac_status=$?
7533  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7534  (exit $ac_status); } &&
7535         { ac_try='test -s conftest.$ac_objext'
7536  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
7537  (eval $ac_try) 2>&5
7538  ac_status=$?
7539  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7540  (exit $ac_status); }; }; then
7541  cat >>confdefs.h <<\_ACEOF
7542#define HAVE___UINT64_T 1
7543_ACEOF
7544
7545else
7546  echo "$as_me: failed program was:" >&5
7547sed 's/^/| /' conftest.$ac_ext >&5
7548
7549fi
7550rm -f conftest.$ac_objext conftest.$ac_ext
7551cat >conftest.$ac_ext <<_ACEOF
7552#line $LINENO "configure"
7553/* confdefs.h.  */
7554_ACEOF
7555cat confdefs.h >>conftest.$ac_ext
7556cat >>conftest.$ac_ext <<_ACEOF
7557/* end confdefs.h.  */
7558#include <sys/types.h>
7559int
7560main ()
7561{
7562  __uint32_t p; p = 3;
7563  ;
7564  return 0;
7565}
7566_ACEOF
7567rm -f conftest.$ac_objext
7568if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
7569  (eval $ac_compile) 2>&5
7570  ac_status=$?
7571  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7572  (exit $ac_status); } &&
7573         { ac_try='test -s conftest.$ac_objext'
7574  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
7575  (eval $ac_try) 2>&5
7576  ac_status=$?
7577  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7578  (exit $ac_status); }; }; then
7579  cat >>confdefs.h <<\_ACEOF
7580#define HAVE___UINT32_T_IN_SYS_TYPES_H 1
7581_ACEOF
7582
7583else
7584  echo "$as_me: failed program was:" >&5
7585sed 's/^/| /' conftest.$ac_ext >&5
7586
7587fi
7588rm -f conftest.$ac_objext conftest.$ac_ext
7589cat >conftest.$ac_ext <<_ACEOF
7590#line $LINENO "configure"
7591/* confdefs.h.  */
7592_ACEOF
7593cat confdefs.h >>conftest.$ac_ext
7594cat >>conftest.$ac_ext <<_ACEOF
7595/* end confdefs.h.  */
7596#include <elf.h>
7597int
7598main ()
7599{
7600  int p; p = R_IA_64_DIR32LSB;
7601  ;
7602  return 0;
7603}
7604_ACEOF
7605rm -f conftest.$ac_objext
7606if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
7607  (eval $ac_compile) 2>&5
7608  ac_status=$?
7609  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7610  (exit $ac_status); } &&
7611         { ac_try='test -s conftest.$ac_objext'
7612  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
7613  (eval $ac_try) 2>&5
7614  ac_status=$?
7615  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7616  (exit $ac_status); }; }; then
7617  cat >>confdefs.h <<\_ACEOF
7618#define HAVE_R_IA_64_DIR32LSB 1
7619_ACEOF
7620
7621else
7622  echo "$as_me: failed program was:" >&5
7623sed 's/^/| /' conftest.$ac_ext >&5
7624
7625fi
7626rm -f conftest.$ac_objext conftest.$ac_ext
7627
7628cat >conftest.$ac_ext <<_ACEOF
7629#line $LINENO "configure"
7630/* confdefs.h.  */
7631_ACEOF
7632cat confdefs.h >>conftest.$ac_ext
7633cat >>conftest.$ac_ext <<_ACEOF
7634/* end confdefs.h.  */
7635#include <elf.h>
7636int
7637main ()
7638{
7639  int p; p = R_IA_64_DIR32LSB;
7640  ;
7641  return 0;
7642}
7643_ACEOF
7644rm -f conftest.$ac_objext
7645if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
7646  (eval $ac_compile) 2>&5
7647  ac_status=$?
7648  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7649  (exit $ac_status); } &&
7650         { ac_try='test -s conftest.$ac_objext'
7651  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
7652  (eval $ac_try) 2>&5
7653  ac_status=$?
7654  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7655  (exit $ac_status); }; }; then
7656  cat >>confdefs.h <<\_ACEOF
7657#define HAVE_OLD_DWARF2_32BIT_OFFSET 1
7658_ACEOF
7659
7660else
7661  echo "$as_me: failed program was:" >&5
7662sed 's/^/| /' conftest.$ac_ext >&5
7663
7664fi
7665rm -f conftest.$ac_objext conftest.$ac_ext
7666
7667          ac_config_files="$ac_config_files Makefile"
7668cat >confcache <<\_ACEOF
7669# This file is a shell script that caches the results of configure
7670# tests run on this system so they can be shared between configure
7671# scripts and configure runs, see configure's option --config-cache.
7672# It is not useful on other systems.  If it contains results you don't
7673# want to keep, you may remove or edit it.
7674#
7675# config.status only pays attention to the cache file if you give it
7676# the --recheck option to rerun configure.
7677#
7678# `ac_cv_env_foo' variables (set or unset) will be overridden when
7679# loading this file, other *unset* `ac_cv_foo' will be assigned the
7680# following values.
7681
7682_ACEOF
7683
7684# The following way of writing the cache mishandles newlines in values,
7685# but we know of no workaround that is simple, portable, and efficient.
7686# So, don't put newlines in cache variables' values.
7687# Ultrix sh set writes to stderr and can't be redirected directly,
7688# and sets the high bit in the cache file unless we assign to the vars.
7689{
7690  (set) 2>&1 |
7691    case `(ac_space=' '; set | grep ac_space) 2>&1` in
7692    *ac_space=\ *)
7693      # `set' does not quote correctly, so add quotes (double-quote
7694      # substitution turns \\\\ into \\, and sed turns \\ into \).
7695      sed -n \
7696        "s/'/'\\\\''/g;
7697    	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
7698      ;;
7699    *)
7700      # `set' quotes correctly as required by POSIX, so do not add quotes.
7701      sed -n \
7702        "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
7703      ;;
7704    esac;
7705} |
7706  sed '
7707     t clear
7708     : clear
7709     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
7710     t end
7711     /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
7712     : end' >>confcache
7713if diff $cache_file confcache >/dev/null 2>&1; then :; else
7714  if test -w $cache_file; then
7715    test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
7716    cat confcache >$cache_file
7717  else
7718    echo "not updating unwritable cache $cache_file"
7719  fi
7720fi
7721rm -f confcache
7722
7723test "x$prefix" = xNONE && prefix=$ac_default_prefix
7724# Let make expand exec_prefix.
7725test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
7726
7727# VPATH may cause trouble with some makes, so we remove $(srcdir),
7728# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
7729# trailing colons and then remove the whole line if VPATH becomes empty
7730# (actually we leave an empty line to preserve line numbers).
7731if test "x$srcdir" = x.; then
7732  ac_vpsub='/^[ 	]*VPATH[ 	]*=/{
7733s/:*\$(srcdir):*/:/;
7734s/:*\${srcdir}:*/:/;
7735s/:*@srcdir@:*/:/;
7736s/^\([^=]*=[ 	]*\):*/\1/;
7737s/:*$//;
7738s/^[^=]*=[ 	]*$//;
7739}'
7740fi
7741
7742DEFS=-DHAVE_CONFIG_H
7743
7744ac_libobjs=
7745ac_ltlibobjs=
7746for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
7747  # 1. Remove the extension, and $U if already installed.
7748  ac_i=`echo "$ac_i" |
7749         sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
7750  # 2. Add them.
7751  ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
7752  ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
7753done
7754LIBOBJS=$ac_libobjs
7755
7756LTLIBOBJS=$ac_ltlibobjs
7757
7758
7759
7760: ${CONFIG_STATUS=./config.status}
7761ac_clean_files_save=$ac_clean_files
7762ac_clean_files="$ac_clean_files $CONFIG_STATUS"
7763{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
7764echo "$as_me: creating $CONFIG_STATUS" >&6;}
7765cat >$CONFIG_STATUS <<_ACEOF
7766#! $SHELL
7767# Generated by $as_me.
7768# Run this file to recreate the current configuration.
7769# Compiler output produced by configure, useful for debugging
7770# configure, is in config.log if it exists.
7771
7772debug=false
7773ac_cs_recheck=false
7774ac_cs_silent=false
7775SHELL=\${CONFIG_SHELL-$SHELL}
7776_ACEOF
7777
7778cat >>$CONFIG_STATUS <<\_ACEOF
7779## --------------------- ##
7780## M4sh Initialization.  ##
7781## --------------------- ##
7782
7783# Be Bourne compatible
7784if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
7785  emulate sh
7786  NULLCMD=:
7787  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
7788  # is contrary to our usage.  Disable this feature.
7789  alias -g '${1+"$@"}'='"$@"'
7790elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
7791  set -o posix
7792fi
7793
7794# Support unset when possible.
7795if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
7796  as_unset=unset
7797else
7798  as_unset=false
7799fi
7800
7801
7802# Work around bugs in pre-3.0 UWIN ksh.
7803$as_unset ENV MAIL MAILPATH
7804PS1='$ '
7805PS2='> '
7806PS4='+ '
7807
7808# NLS nuisances.
7809for as_var in \
7810  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
7811  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
7812  LC_TELEPHONE LC_TIME
7813do
7814  if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
7815    eval $as_var=C; export $as_var
7816  else
7817    $as_unset $as_var
7818  fi
7819done
7820
7821# Required to use basename.
7822if expr a : '\(a\)' >/dev/null 2>&1; then
7823  as_expr=expr
7824else
7825  as_expr=false
7826fi
7827
7828if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
7829  as_basename=basename
7830else
7831  as_basename=false
7832fi
7833
7834
7835# Name of the executable.
7836as_me=`$as_basename "$0" ||
7837$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
7838	 X"$0" : 'X\(//\)$' \| \
7839	 X"$0" : 'X\(/\)$' \| \
7840	 .     : '\(.\)' 2>/dev/null ||
7841echo X/"$0" |
7842    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
7843  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
7844  	  /^X\/\(\/\).*/{ s//\1/; q; }
7845  	  s/.*/./; q'`
7846
7847
7848# PATH needs CR, and LINENO needs CR and PATH.
7849# Avoid depending upon Character Ranges.
7850as_cr_letters='abcdefghijklmnopqrstuvwxyz'
7851as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
7852as_cr_Letters=$as_cr_letters$as_cr_LETTERS
7853as_cr_digits='0123456789'
7854as_cr_alnum=$as_cr_Letters$as_cr_digits
7855
7856# The user is always right.
7857if test "${PATH_SEPARATOR+set}" != set; then
7858  echo "#! /bin/sh" >conf$$.sh
7859  echo  "exit 0"   >>conf$$.sh
7860  chmod +x conf$$.sh
7861  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
7862    PATH_SEPARATOR=';'
7863  else
7864    PATH_SEPARATOR=:
7865  fi
7866  rm -f conf$$.sh
7867fi
7868
7869
7870  as_lineno_1=$LINENO
7871  as_lineno_2=$LINENO
7872  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
7873  test "x$as_lineno_1" != "x$as_lineno_2" &&
7874  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
7875  # Find who we are.  Look in the path if we contain no path at all
7876  # relative or not.
7877  case $0 in
7878    *[\\/]* ) as_myself=$0 ;;
7879    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
7880for as_dir in $PATH
7881do
7882  IFS=$as_save_IFS
7883  test -z "$as_dir" && as_dir=.
7884  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
7885done
7886
7887       ;;
7888  esac
7889  # We did not find ourselves, most probably we were run as `sh COMMAND'
7890  # in which case we are not to be found in the path.
7891  if test "x$as_myself" = x; then
7892    as_myself=$0
7893  fi
7894  if test ! -f "$as_myself"; then
7895    { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
7896echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
7897   { (exit 1); exit 1; }; }
7898  fi
7899  case $CONFIG_SHELL in
7900  '')
7901    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
7902for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
7903do
7904  IFS=$as_save_IFS
7905  test -z "$as_dir" && as_dir=.
7906  for as_base in sh bash ksh sh5; do
7907	 case $as_dir in
7908	 /*)
7909	   if ("$as_dir/$as_base" -c '
7910  as_lineno_1=$LINENO
7911  as_lineno_2=$LINENO
7912  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
7913  test "x$as_lineno_1" != "x$as_lineno_2" &&
7914  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
7915	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
7916	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
7917	     CONFIG_SHELL=$as_dir/$as_base
7918	     export CONFIG_SHELL
7919	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
7920	   fi;;
7921	 esac
7922       done
7923done
7924;;
7925  esac
7926
7927  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
7928  # uniformly replaced by the line number.  The first 'sed' inserts a
7929  # line-number line before each line; the second 'sed' does the real
7930  # work.  The second script uses 'N' to pair each line-number line
7931  # with the numbered line, and appends trailing '-' during
7932  # substitution so that $LINENO is not a special case at line end.
7933  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
7934  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
7935  sed '=' <$as_myself |
7936    sed '
7937      N
7938      s,$,-,
7939      : loop
7940      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
7941      t loop
7942      s,-$,,
7943      s,^['$as_cr_digits']*\n,,
7944    ' >$as_me.lineno &&
7945  chmod +x $as_me.lineno ||
7946    { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
7947echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
7948   { (exit 1); exit 1; }; }
7949
7950  # Don't try to exec as it changes $[0], causing all sort of problems
7951  # (the dirname of $[0] is not the place where we might find the
7952  # original and so on.  Autoconf is especially sensible to this).
7953  . ./$as_me.lineno
7954  # Exit status is that of the last command.
7955  exit
7956}
7957
7958
7959case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
7960  *c*,-n*) ECHO_N= ECHO_C='
7961' ECHO_T='	' ;;
7962  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
7963  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
7964esac
7965
7966if expr a : '\(a\)' >/dev/null 2>&1; then
7967  as_expr=expr
7968else
7969  as_expr=false
7970fi
7971
7972rm -f conf$$ conf$$.exe conf$$.file
7973echo >conf$$.file
7974if ln -s conf$$.file conf$$ 2>/dev/null; then
7975  # We could just check for DJGPP; but this test a) works b) is more generic
7976  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
7977  if test -f conf$$.exe; then
7978    # Don't use ln at all; we don't have any links
7979    as_ln_s='cp -p'
7980  else
7981    as_ln_s='ln -s'
7982  fi
7983elif ln conf$$.file conf$$ 2>/dev/null; then
7984  as_ln_s=ln
7985else
7986  as_ln_s='cp -p'
7987fi
7988rm -f conf$$ conf$$.exe conf$$.file
7989
7990if mkdir -p . 2>/dev/null; then
7991  as_mkdir_p=:
7992else
7993  as_mkdir_p=false
7994fi
7995
7996as_executable_p="test -f"
7997
7998# Sed expression to map a string onto a valid CPP name.
7999as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
8000
8001# Sed expression to map a string onto a valid variable name.
8002as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
8003
8004
8005# IFS
8006# We need space, tab and new line, in precisely that order.
8007as_nl='
8008'
8009IFS=" 	$as_nl"
8010
8011# CDPATH.
8012$as_unset CDPATH
8013
8014exec 6>&1
8015
8016# Open the log real soon, to keep \$[0] and so on meaningful, and to
8017# report actual input values of CONFIG_FILES etc. instead of their
8018# values after options handling.  Logging --version etc. is OK.
8019exec 5>>config.log
8020{
8021  echo
8022  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
8023## Running $as_me. ##
8024_ASBOX
8025} >&5
8026cat >&5 <<_CSEOF
8027
8028This file was extended by $as_me, which was
8029generated by GNU Autoconf 2.57.  Invocation command line was
8030
8031  CONFIG_FILES    = $CONFIG_FILES
8032  CONFIG_HEADERS  = $CONFIG_HEADERS
8033  CONFIG_LINKS    = $CONFIG_LINKS
8034  CONFIG_COMMANDS = $CONFIG_COMMANDS
8035  $ $0 $@
8036
8037_CSEOF
8038echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
8039echo >&5
8040_ACEOF
8041
8042# Files that config.status was made for.
8043if test -n "$ac_config_files"; then
8044  echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
8045fi
8046
8047if test -n "$ac_config_headers"; then
8048  echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
8049fi
8050
8051if test -n "$ac_config_links"; then
8052  echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
8053fi
8054
8055if test -n "$ac_config_commands"; then
8056  echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
8057fi
8058
8059cat >>$CONFIG_STATUS <<\_ACEOF
8060
8061ac_cs_usage="\
8062\`$as_me' instantiates files from templates according to the
8063current configuration.
8064
8065Usage: $0 [OPTIONS] [FILE]...
8066
8067  -h, --help       print this help, then exit
8068  -V, --version    print version number, then exit
8069  -q, --quiet      do not print progress messages
8070  -d, --debug      don't remove temporary files
8071      --recheck    update $as_me by reconfiguring in the same conditions
8072  --file=FILE[:TEMPLATE]
8073                   instantiate the configuration file FILE
8074  --header=FILE[:TEMPLATE]
8075                   instantiate the configuration header FILE
8076
8077Configuration files:
8078$config_files
8079
8080Configuration headers:
8081$config_headers
8082
8083Report bugs to <bug-autoconf@gnu.org>."
8084_ACEOF
8085
8086cat >>$CONFIG_STATUS <<_ACEOF
8087ac_cs_version="\\
8088config.status
8089configured by $0, generated by GNU Autoconf 2.57,
8090  with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
8091
8092Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
8093Free Software Foundation, Inc.
8094This config.status script is free software; the Free Software Foundation
8095gives unlimited permission to copy, distribute and modify it."
8096srcdir=$srcdir
8097INSTALL="$INSTALL"
8098_ACEOF
8099
8100cat >>$CONFIG_STATUS <<\_ACEOF
8101# If no file are specified by the user, then we need to provide default
8102# value.  By we need to know if files were specified by the user.
8103ac_need_defaults=:
8104while test $# != 0
8105do
8106  case $1 in
8107  --*=*)
8108    ac_option=`expr "x$1" : 'x\([^=]*\)='`
8109    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
8110    ac_shift=:
8111    ;;
8112  -*)
8113    ac_option=$1
8114    ac_optarg=$2
8115    ac_shift=shift
8116    ;;
8117  *) # This is not an option, so the user has probably given explicit
8118     # arguments.
8119     ac_option=$1
8120     ac_need_defaults=false;;
8121  esac
8122
8123  case $ac_option in
8124  # Handling of the options.
8125_ACEOF
8126cat >>$CONFIG_STATUS <<\_ACEOF
8127  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
8128    ac_cs_recheck=: ;;
8129  --version | --vers* | -V )
8130    echo "$ac_cs_version"; exit 0 ;;
8131  --he | --h)
8132    # Conflict between --help and --header
8133    { { echo "$as_me:$LINENO: error: ambiguous option: $1
8134Try \`$0 --help' for more information." >&5
8135echo "$as_me: error: ambiguous option: $1
8136Try \`$0 --help' for more information." >&2;}
8137   { (exit 1); exit 1; }; };;
8138  --help | --hel | -h )
8139    echo "$ac_cs_usage"; exit 0 ;;
8140  --debug | --d* | -d )
8141    debug=: ;;
8142  --file | --fil | --fi | --f )
8143    $ac_shift
8144    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
8145    ac_need_defaults=false;;
8146  --header | --heade | --head | --hea )
8147    $ac_shift
8148    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
8149    ac_need_defaults=false;;
8150  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
8151  | -silent | --silent | --silen | --sile | --sil | --si | --s)
8152    ac_cs_silent=: ;;
8153
8154  # This is an error.
8155  -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
8156Try \`$0 --help' for more information." >&5
8157echo "$as_me: error: unrecognized option: $1
8158Try \`$0 --help' for more information." >&2;}
8159   { (exit 1); exit 1; }; } ;;
8160
8161  *) ac_config_targets="$ac_config_targets $1" ;;
8162
8163  esac
8164  shift
8165done
8166
8167ac_configure_extra_args=
8168
8169if $ac_cs_silent; then
8170  exec 6>/dev/null
8171  ac_configure_extra_args="$ac_configure_extra_args --silent"
8172fi
8173
8174_ACEOF
8175cat >>$CONFIG_STATUS <<_ACEOF
8176if \$ac_cs_recheck; then
8177  echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
8178  exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
8179fi
8180
8181_ACEOF
8182
8183
8184
8185
8186
8187cat >>$CONFIG_STATUS <<\_ACEOF
8188for ac_config_target in $ac_config_targets
8189do
8190  case "$ac_config_target" in
8191  # Handling of arguments.
8192  "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
8193  "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
8194  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
8195echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
8196   { (exit 1); exit 1; }; };;
8197  esac
8198done
8199
8200# If the user did not use the arguments to specify the items to instantiate,
8201# then the envvar interface is used.  Set only those that are not.
8202# We use the long form for the default assignment because of an extremely
8203# bizarre bug on SunOS 4.1.3.
8204if $ac_need_defaults; then
8205  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
8206  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
8207fi
8208
8209# Have a temporary directory for convenience.  Make it in the build tree
8210# simply because there is no reason to put it here, and in addition,
8211# creating and moving files from /tmp can sometimes cause problems.
8212# Create a temporary directory, and hook for its removal unless debugging.
8213$debug ||
8214{
8215  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
8216  trap '{ (exit 1); exit 1; }' 1 2 13 15
8217}
8218
8219# Create a (secure) tmp directory for tmp files.
8220
8221{
8222  tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
8223  test -n "$tmp" && test -d "$tmp"
8224}  ||
8225{
8226  tmp=./confstat$$-$RANDOM
8227  (umask 077 && mkdir $tmp)
8228} ||
8229{
8230   echo "$me: cannot create a temporary directory in ." >&2
8231   { (exit 1); exit 1; }
8232}
8233
8234_ACEOF
8235
8236cat >>$CONFIG_STATUS <<_ACEOF
8237
8238#
8239# CONFIG_FILES section.
8240#
8241
8242# No need to generate the scripts if there are no CONFIG_FILES.
8243# This happens for instance when ./config.status config.h
8244if test -n "\$CONFIG_FILES"; then
8245  # Protect against being on the right side of a sed subst in config.status.
8246  sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
8247   s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
8248s,@SHELL@,$SHELL,;t t
8249s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
8250s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
8251s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
8252s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
8253s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
8254s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
8255s,@exec_prefix@,$exec_prefix,;t t
8256s,@prefix@,$prefix,;t t
8257s,@program_transform_name@,$program_transform_name,;t t
8258s,@bindir@,$bindir,;t t
8259s,@sbindir@,$sbindir,;t t
8260s,@libexecdir@,$libexecdir,;t t
8261s,@datadir@,$datadir,;t t
8262s,@sysconfdir@,$sysconfdir,;t t
8263s,@sharedstatedir@,$sharedstatedir,;t t
8264s,@localstatedir@,$localstatedir,;t t
8265s,@libdir@,$libdir,;t t
8266s,@includedir@,$includedir,;t t
8267s,@oldincludedir@,$oldincludedir,;t t
8268s,@infodir@,$infodir,;t t
8269s,@mandir@,$mandir,;t t
8270s,@build_alias@,$build_alias,;t t
8271s,@host_alias@,$host_alias,;t t
8272s,@target_alias@,$target_alias,;t t
8273s,@DEFS@,$DEFS,;t t
8274s,@ECHO_C@,$ECHO_C,;t t
8275s,@ECHO_N@,$ECHO_N,;t t
8276s,@ECHO_T@,$ECHO_T,;t t
8277s,@LIBS@,$LIBS,;t t
8278s,@CC@,$CC,;t t
8279s,@CFLAGS@,$CFLAGS,;t t
8280s,@LDFLAGS@,$LDFLAGS,;t t
8281s,@CPPFLAGS@,$CPPFLAGS,;t t
8282s,@ac_ct_CC@,$ac_ct_CC,;t t
8283s,@EXEEXT@,$EXEEXT,;t t
8284s,@OBJEXT@,$OBJEXT,;t t
8285s,@CPP@,$CPP,;t t
8286s,@EGREP@,$EGREP,;t t
8287s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
8288s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
8289s,@INSTALL_DATA@,$INSTALL_DATA,;t t
8290s,@RANLIB@,$RANLIB,;t t
8291s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
8292s,@AR@,$AR,;t t
8293s,@ac_ct_AR@,$ac_ct_AR,;t t
8294s,@LIBOBJS@,$LIBOBJS,;t t
8295s,@LTLIBOBJS@,$LTLIBOBJS,;t t
8296CEOF
8297
8298_ACEOF
8299
8300  cat >>$CONFIG_STATUS <<\_ACEOF
8301  # Split the substitutions into bite-sized pieces for seds with
8302  # small command number limits, like on Digital OSF/1 and HP-UX.
8303  ac_max_sed_lines=48
8304  ac_sed_frag=1 # Number of current file.
8305  ac_beg=1 # First line for current file.
8306  ac_end=$ac_max_sed_lines # Line after last line for current file.
8307  ac_more_lines=:
8308  ac_sed_cmds=
8309  while $ac_more_lines; do
8310    if test $ac_beg -gt 1; then
8311      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
8312    else
8313      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
8314    fi
8315    if test ! -s $tmp/subs.frag; then
8316      ac_more_lines=false
8317    else
8318      # The purpose of the label and of the branching condition is to
8319      # speed up the sed processing (if there are no `@' at all, there
8320      # is no need to browse any of the substitutions).
8321      # These are the two extra sed commands mentioned above.
8322      (echo ':t
8323  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
8324      if test -z "$ac_sed_cmds"; then
8325  	ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
8326      else
8327  	ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
8328      fi
8329      ac_sed_frag=`expr $ac_sed_frag + 1`
8330      ac_beg=$ac_end
8331      ac_end=`expr $ac_end + $ac_max_sed_lines`
8332    fi
8333  done
8334  if test -z "$ac_sed_cmds"; then
8335    ac_sed_cmds=cat
8336  fi
8337fi # test -n "$CONFIG_FILES"
8338
8339_ACEOF
8340cat >>$CONFIG_STATUS <<\_ACEOF
8341for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
8342  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
8343  case $ac_file in
8344  - | *:- | *:-:* ) # input from stdin
8345        cat >$tmp/stdin
8346        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
8347        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
8348  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
8349        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
8350  * )   ac_file_in=$ac_file.in ;;
8351  esac
8352
8353  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
8354  ac_dir=`(dirname "$ac_file") 2>/dev/null ||
8355$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
8356         X"$ac_file" : 'X\(//\)[^/]' \| \
8357         X"$ac_file" : 'X\(//\)$' \| \
8358         X"$ac_file" : 'X\(/\)' \| \
8359         .     : '\(.\)' 2>/dev/null ||
8360echo X"$ac_file" |
8361    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
8362  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
8363  	  /^X\(\/\/\)$/{ s//\1/; q; }
8364  	  /^X\(\/\).*/{ s//\1/; q; }
8365  	  s/.*/./; q'`
8366  { if $as_mkdir_p; then
8367    mkdir -p "$ac_dir"
8368  else
8369    as_dir="$ac_dir"
8370    as_dirs=
8371    while test ! -d "$as_dir"; do
8372      as_dirs="$as_dir $as_dirs"
8373      as_dir=`(dirname "$as_dir") 2>/dev/null ||
8374$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
8375         X"$as_dir" : 'X\(//\)[^/]' \| \
8376         X"$as_dir" : 'X\(//\)$' \| \
8377         X"$as_dir" : 'X\(/\)' \| \
8378         .     : '\(.\)' 2>/dev/null ||
8379echo X"$as_dir" |
8380    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
8381  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
8382  	  /^X\(\/\/\)$/{ s//\1/; q; }
8383  	  /^X\(\/\).*/{ s//\1/; q; }
8384  	  s/.*/./; q'`
8385    done
8386    test ! -n "$as_dirs" || mkdir $as_dirs
8387  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
8388echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
8389   { (exit 1); exit 1; }; }; }
8390
8391  ac_builddir=.
8392
8393if test "$ac_dir" != .; then
8394  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
8395  # A "../" for each directory in $ac_dir_suffix.
8396  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
8397else
8398  ac_dir_suffix= ac_top_builddir=
8399fi
8400
8401case $srcdir in
8402  .)  # No --srcdir option.  We are building in place.
8403    ac_srcdir=.
8404    if test -z "$ac_top_builddir"; then
8405       ac_top_srcdir=.
8406    else
8407       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
8408    fi ;;
8409  [\\/]* | ?:[\\/]* )  # Absolute path.
8410    ac_srcdir=$srcdir$ac_dir_suffix;
8411    ac_top_srcdir=$srcdir ;;
8412  *) # Relative path.
8413    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
8414    ac_top_srcdir=$ac_top_builddir$srcdir ;;
8415esac
8416# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
8417# absolute.
8418ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
8419ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
8420ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
8421ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
8422
8423
8424  case $INSTALL in
8425  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
8426  *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
8427  esac
8428
8429  if test x"$ac_file" != x-; then
8430    { echo "$as_me:$LINENO: creating $ac_file" >&5
8431echo "$as_me: creating $ac_file" >&6;}
8432    rm -f "$ac_file"
8433  fi
8434  # Let's still pretend it is `configure' which instantiates (i.e., don't
8435  # use $as_me), people would be surprised to read:
8436  #    /* config.h.  Generated by config.status.  */
8437  if test x"$ac_file" = x-; then
8438    configure_input=
8439  else
8440    configure_input="$ac_file.  "
8441  fi
8442  configure_input=$configure_input"Generated from `echo $ac_file_in |
8443                                     sed 's,.*/,,'` by configure."
8444
8445  # First look for the input files in the build tree, otherwise in the
8446  # src tree.
8447  ac_file_inputs=`IFS=:
8448    for f in $ac_file_in; do
8449      case $f in
8450      -) echo $tmp/stdin ;;
8451      [\\/$]*)
8452         # Absolute (can't be DOS-style, as IFS=:)
8453         test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
8454echo "$as_me: error: cannot find input file: $f" >&2;}
8455   { (exit 1); exit 1; }; }
8456         echo $f;;
8457      *) # Relative
8458         if test -f "$f"; then
8459           # Build tree
8460           echo $f
8461         elif test -f "$srcdir/$f"; then
8462           # Source tree
8463           echo $srcdir/$f
8464         else
8465           # /dev/null tree
8466           { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
8467echo "$as_me: error: cannot find input file: $f" >&2;}
8468   { (exit 1); exit 1; }; }
8469         fi;;
8470      esac
8471    done` || { (exit 1); exit 1; }
8472_ACEOF
8473cat >>$CONFIG_STATUS <<_ACEOF
8474  sed "$ac_vpsub
8475$extrasub
8476_ACEOF
8477cat >>$CONFIG_STATUS <<\_ACEOF
8478:t
8479/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
8480s,@configure_input@,$configure_input,;t t
8481s,@srcdir@,$ac_srcdir,;t t
8482s,@abs_srcdir@,$ac_abs_srcdir,;t t
8483s,@top_srcdir@,$ac_top_srcdir,;t t
8484s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
8485s,@builddir@,$ac_builddir,;t t
8486s,@abs_builddir@,$ac_abs_builddir,;t t
8487s,@top_builddir@,$ac_top_builddir,;t t
8488s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
8489s,@INSTALL@,$ac_INSTALL,;t t
8490" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
8491  rm -f $tmp/stdin
8492  if test x"$ac_file" != x-; then
8493    mv $tmp/out $ac_file
8494  else
8495    cat $tmp/out
8496    rm -f $tmp/out
8497  fi
8498
8499done
8500_ACEOF
8501cat >>$CONFIG_STATUS <<\_ACEOF
8502
8503#
8504# CONFIG_HEADER section.
8505#
8506
8507# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
8508# NAME is the cpp macro being defined and VALUE is the value it is being given.
8509#
8510# ac_d sets the value in "#define NAME VALUE" lines.
8511ac_dA='s,^\([ 	]*\)#\([ 	]*define[ 	][ 	]*\)'
8512ac_dB='[ 	].*$,\1#\2'
8513ac_dC=' '
8514ac_dD=',;t'
8515# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
8516ac_uA='s,^\([ 	]*\)#\([ 	]*\)undef\([ 	][ 	]*\)'
8517ac_uB='$,\1#\2define\3'
8518ac_uC=' '
8519ac_uD=',;t'
8520
8521for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
8522  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
8523  case $ac_file in
8524  - | *:- | *:-:* ) # input from stdin
8525        cat >$tmp/stdin
8526        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
8527        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
8528  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
8529        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
8530  * )   ac_file_in=$ac_file.in ;;
8531  esac
8532
8533  test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
8534echo "$as_me: creating $ac_file" >&6;}
8535
8536  # First look for the input files in the build tree, otherwise in the
8537  # src tree.
8538  ac_file_inputs=`IFS=:
8539    for f in $ac_file_in; do
8540      case $f in
8541      -) echo $tmp/stdin ;;
8542      [\\/$]*)
8543         # Absolute (can't be DOS-style, as IFS=:)
8544         test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
8545echo "$as_me: error: cannot find input file: $f" >&2;}
8546   { (exit 1); exit 1; }; }
8547         echo $f;;
8548      *) # Relative
8549         if test -f "$f"; then
8550           # Build tree
8551           echo $f
8552         elif test -f "$srcdir/$f"; then
8553           # Source tree
8554           echo $srcdir/$f
8555         else
8556           # /dev/null tree
8557           { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
8558echo "$as_me: error: cannot find input file: $f" >&2;}
8559   { (exit 1); exit 1; }; }
8560         fi;;
8561      esac
8562    done` || { (exit 1); exit 1; }
8563  # Remove the trailing spaces.
8564  sed 's/[ 	]*$//' $ac_file_inputs >$tmp/in
8565
8566_ACEOF
8567
8568# Transform confdefs.h into two sed scripts, `conftest.defines' and
8569# `conftest.undefs', that substitutes the proper values into
8570# config.h.in to produce config.h.  The first handles `#define'
8571# templates, and the second `#undef' templates.
8572# And first: Protect against being on the right side of a sed subst in
8573# config.status.  Protect against being in an unquoted here document
8574# in config.status.
8575rm -f conftest.defines conftest.undefs
8576# Using a here document instead of a string reduces the quoting nightmare.
8577# Putting comments in sed scripts is not portable.
8578#
8579# `end' is used to avoid that the second main sed command (meant for
8580# 0-ary CPP macros) applies to n-ary macro definitions.
8581# See the Autoconf documentation for `clear'.
8582cat >confdef2sed.sed <<\_ACEOF
8583s/[\\&,]/\\&/g
8584s,[\\$`],\\&,g
8585t clear
8586: clear
8587s,^[ 	]*#[ 	]*define[ 	][ 	]*\([^ 	(][^ 	(]*\)\(([^)]*)\)[ 	]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
8588t end
8589s,^[ 	]*#[ 	]*define[ 	][ 	]*\([^ 	][^ 	]*\)[ 	]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
8590: end
8591_ACEOF
8592# If some macros were called several times there might be several times
8593# the same #defines, which is useless.  Nevertheless, we may not want to
8594# sort them, since we want the *last* AC-DEFINE to be honored.
8595uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
8596sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
8597rm -f confdef2sed.sed
8598
8599# This sed command replaces #undef with comments.  This is necessary, for
8600# example, in the case of _POSIX_SOURCE, which is predefined and required
8601# on some systems where configure will not decide to define it.
8602cat >>conftest.undefs <<\_ACEOF
8603s,^[ 	]*#[ 	]*undef[ 	][ 	]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
8604_ACEOF
8605
8606# Break up conftest.defines because some shells have a limit on the size
8607# of here documents, and old seds have small limits too (100 cmds).
8608echo '  # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
8609echo '  if grep "^[ 	]*#[ 	]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
8610echo '  # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
8611echo '  :' >>$CONFIG_STATUS
8612rm -f conftest.tail
8613while grep . conftest.defines >/dev/null
8614do
8615  # Write a limited-size here document to $tmp/defines.sed.
8616  echo '  cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
8617  # Speed up: don't consider the non `#define' lines.
8618  echo '/^[ 	]*#[ 	]*define/!b' >>$CONFIG_STATUS
8619  # Work around the forget-to-reset-the-flag bug.
8620  echo 't clr' >>$CONFIG_STATUS
8621  echo ': clr' >>$CONFIG_STATUS
8622  sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
8623  echo 'CEOF
8624  sed -f $tmp/defines.sed $tmp/in >$tmp/out
8625  rm -f $tmp/in
8626  mv $tmp/out $tmp/in
8627' >>$CONFIG_STATUS
8628  sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
8629  rm -f conftest.defines
8630  mv conftest.tail conftest.defines
8631done
8632rm -f conftest.defines
8633echo '  fi # grep' >>$CONFIG_STATUS
8634echo >>$CONFIG_STATUS
8635
8636# Break up conftest.undefs because some shells have a limit on the size
8637# of here documents, and old seds have small limits too (100 cmds).
8638echo '  # Handle all the #undef templates' >>$CONFIG_STATUS
8639rm -f conftest.tail
8640while grep . conftest.undefs >/dev/null
8641do
8642  # Write a limited-size here document to $tmp/undefs.sed.
8643  echo '  cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
8644  # Speed up: don't consider the non `#undef'
8645  echo '/^[ 	]*#[ 	]*undef/!b' >>$CONFIG_STATUS
8646  # Work around the forget-to-reset-the-flag bug.
8647  echo 't clr' >>$CONFIG_STATUS
8648  echo ': clr' >>$CONFIG_STATUS
8649  sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
8650  echo 'CEOF
8651  sed -f $tmp/undefs.sed $tmp/in >$tmp/out
8652  rm -f $tmp/in
8653  mv $tmp/out $tmp/in
8654' >>$CONFIG_STATUS
8655  sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
8656  rm -f conftest.undefs
8657  mv conftest.tail conftest.undefs
8658done
8659rm -f conftest.undefs
8660
8661cat >>$CONFIG_STATUS <<\_ACEOF
8662  # Let's still pretend it is `configure' which instantiates (i.e., don't
8663  # use $as_me), people would be surprised to read:
8664  #    /* config.h.  Generated by config.status.  */
8665  if test x"$ac_file" = x-; then
8666    echo "/* Generated by configure.  */" >$tmp/config.h
8667  else
8668    echo "/* $ac_file.  Generated by configure.  */" >$tmp/config.h
8669  fi
8670  cat $tmp/in >>$tmp/config.h
8671  rm -f $tmp/in
8672  if test x"$ac_file" != x-; then
8673    if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
8674      { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
8675echo "$as_me: $ac_file is unchanged" >&6;}
8676    else
8677      ac_dir=`(dirname "$ac_file") 2>/dev/null ||
8678$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
8679         X"$ac_file" : 'X\(//\)[^/]' \| \
8680         X"$ac_file" : 'X\(//\)$' \| \
8681         X"$ac_file" : 'X\(/\)' \| \
8682         .     : '\(.\)' 2>/dev/null ||
8683echo X"$ac_file" |
8684    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
8685  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
8686  	  /^X\(\/\/\)$/{ s//\1/; q; }
8687  	  /^X\(\/\).*/{ s//\1/; q; }
8688  	  s/.*/./; q'`
8689      { if $as_mkdir_p; then
8690    mkdir -p "$ac_dir"
8691  else
8692    as_dir="$ac_dir"
8693    as_dirs=
8694    while test ! -d "$as_dir"; do
8695      as_dirs="$as_dir $as_dirs"
8696      as_dir=`(dirname "$as_dir") 2>/dev/null ||
8697$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
8698         X"$as_dir" : 'X\(//\)[^/]' \| \
8699         X"$as_dir" : 'X\(//\)$' \| \
8700         X"$as_dir" : 'X\(/\)' \| \
8701         .     : '\(.\)' 2>/dev/null ||
8702echo X"$as_dir" |
8703    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
8704  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
8705  	  /^X\(\/\/\)$/{ s//\1/; q; }
8706  	  /^X\(\/\).*/{ s//\1/; q; }
8707  	  s/.*/./; q'`
8708    done
8709    test ! -n "$as_dirs" || mkdir $as_dirs
8710  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
8711echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
8712   { (exit 1); exit 1; }; }; }
8713
8714      rm -f $ac_file
8715      mv $tmp/config.h $ac_file
8716    fi
8717  else
8718    cat $tmp/config.h
8719    rm -f $tmp/config.h
8720  fi
8721done
8722_ACEOF
8723
8724cat >>$CONFIG_STATUS <<\_ACEOF
8725
8726{ (exit 0); exit 0; }
8727_ACEOF
8728chmod +x $CONFIG_STATUS
8729ac_clean_files=$ac_clean_files_save
8730
8731
8732# configure is writing to config.log, and then calls config.status.
8733# config.status does its own redirection, appending to config.log.
8734# Unfortunately, on DOS this fails, as config.log is still kept open
8735# by configure, so config.status won't be able to write to it; its
8736# output is simply discarded.  So we exec the FD to /dev/null,
8737# effectively closing config.log, so it can be properly (re)opened and
8738# appended to by config.status.  When coming back to configure, we
8739# need to make the FD available again.
8740if test "$no_create" != yes; then
8741  ac_cs_success=:
8742  ac_config_status_args=
8743  test "$silent" = yes &&
8744    ac_config_status_args="$ac_config_status_args --quiet"
8745  exec 5>/dev/null
8746  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
8747  exec 5>>config.log
8748  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
8749  # would make configure fail if this is the last instruction.
8750  $ac_cs_success || { (exit 1); exit 1; }
8751fi
8752
87530707010001ad5b0000812400011e740000000a00000001402068270000053a000000660000000000000000000000000000001600000000libdwarf/configure.in�dnl Process this file with autoconf to produce a configure script.
8754AC_INIT(libdwarf.h)
8755AC_CONFIG_HEADER(config.h)
8756
8757dnl the endian one is temporary till endianness issues fixed
8758AC_PROG_CC
8759AC_C_BIGENDIAN
8760AC_GCC_TRADITIONAL
8761AC_PROG_INSTALL
8762AC_CHECK_TOOL(RANLIB, ranlib, :)
8763AC_CHECK_TOOL(AR, ar)
8764
8765dnl AC_ARFLAGS
8766
8767AC_CHECK_HEADERS(alloca.h elf.h elfaccess.h libelf.h libelf/libelf.h sgidefs.h sys/types.h sys/ia64/elf.h)
8768
8769AC_CHECK_LIB(elf,elf64_getehdr,AC_DEFINE(HAVE_ELF64_GETEHDR))
8770AC_CHECK_LIB(elf,elf64_getshdr,AC_DEFINE(HAVE_ELF64_GETSHDR))
8771AC_TRY_COMPILE( ,  __uint32_t p; p = 3; ,AC_DEFINE(HAVE___UINT32_T))
8772AC_TRY_COMPILE( ,  __uint64_t p; p = 3; ,AC_DEFINE(HAVE___UINT64_T))
8773AC_TRY_COMPILE([#include <sys/types.h>],[  __uint32_t p; p = 3;] ,AC_DEFINE(HAVE___UINT32_T_IN_SYS_TYPES_H))
8774dnl checking for ia 64 types, which might be enums, using HAVE_R_IA_64_DIR32LSB
8775dnl to stand in for a small set.
8776AC_TRY_COMPILE([#include <elf.h>],[  int p; p = R_IA_64_DIR32LSB;] ,AC_DEFINE(HAVE_R_IA_64_DIR32LSB))
8777
8778dnl Lets just assume, if ia64, compatibility with cygnus before
8779dnl HAVE_DWARF2_99_EXTENSION defined.
8780dnl Only applies to producer code, as consumer adapts itself.
8781dnl This is not the right test, really.
8782AC_TRY_COMPILE([#include <elf.h>],[  int p; p = R_IA_64_DIR32LSB;] ,AC_DEFINE(HAVE_OLD_DWARF2_32BIT_OFFSET))
8783
8784AC_OUTPUT(Makefile)
8785��0707010001ad5c0000812400011e740000000a00000001402068270000567c000000660000000000000000000000000000001100000000libdwarf/dwarf.h��/*
8786  Copyright (C) 2000, 2001 Silicon Graphics, Inc.  All Rights Reserved.
8787
8788  This program is free software; you can redistribute it and/or modify it
8789  under the terms of version 2.1 of the GNU Lesser General Public License
8790  as published by the Free Software Foundation.
8791
8792  This program is distributed in the hope that it would be useful, but
8793  WITHOUT ANY WARRANTY; without even the implied warranty of
8794  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
8795
8796  Further, this software is distributed without any warranty that it is
8797  free of the rightful claim of any third person regarding infringement
8798  or the like.  Any license provided herein, whether implied or
8799  otherwise, applies only to this software file.  Patent licenses, if
8800  any, provided herein do not apply to combinations of this program with
8801  other software, or any other product whatsoever.
8802
8803  You should have received a copy of the GNU Lesser General Public
8804  License along with this program; if not, write the Free Software
8805  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
8806  USA.
8807
8808  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
8809  Mountain View, CA 94043, or:
8810
8811  http://www.sgi.com
8812
8813  For further information regarding this notice, see:
8814
8815  http://oss.sgi.com/projects/GenInfo/NoticeExplan
8816
8817*/
8818
8819
8820#ifndef __DWARF_H
8821#define __DWARF_H
8822#ifdef __cplusplus
8823extern "C" {
8824#endif
8825
8826/*
8827	dwarf.h   DWARF  debugging information values
8828	$Revision: 1.29 $    $Date: 2003/02/05 22:57:01 $
8829
8830	The comment "DWARF3" appears where there are
8831	new entries from DWARF3.
8832
8833*/
8834
8835
8836#define DW_TAG_array_type		0x01
8837#define DW_TAG_class_type		0x02
8838#define DW_TAG_entry_point		0x03
8839#define DW_TAG_enumeration_type		0x04
8840#define DW_TAG_formal_parameter		0x05
8841#define DW_TAG_imported_declaration	0x08
8842#define DW_TAG_label			0x0a
8843#define DW_TAG_lexical_block		0x0b
8844#define DW_TAG_member			0x0d
8845#define DW_TAG_pointer_type		0x0f
8846#define DW_TAG_reference_type		0x10
8847#define DW_TAG_compile_unit		0x11
8848#define DW_TAG_string_type		0x12
8849#define DW_TAG_structure_type		0x13
8850#define DW_TAG_subroutine_type		0x15
8851#define DW_TAG_typedef			0x16
8852#define DW_TAG_union_type		0x17
8853#define DW_TAG_unspecified_parameters	0x18
8854#define DW_TAG_variant			0x19
8855#define DW_TAG_common_block		0x1a
8856#define DW_TAG_common_inclusion		0x1b
8857#define DW_TAG_inheritance		0x1c
8858#define DW_TAG_inlined_subroutine	0x1d
8859#define DW_TAG_module			0x1e
8860#define DW_TAG_ptr_to_member_type	0x1f
8861#define DW_TAG_set_type			0x20
8862#define DW_TAG_subrange_type		0x21
8863#define DW_TAG_with_stmt		0x22
8864#define DW_TAG_access_declaration	0x23
8865#define DW_TAG_base_type		0x24
8866#define DW_TAG_catch_block		0x25
8867#define DW_TAG_const_type		0x26
8868#define DW_TAG_constant			0x27
8869#define DW_TAG_enumerator		0x28
8870#define DW_TAG_file_type		0x29
8871#define DW_TAG_friend			0x2a
8872#define DW_TAG_namelist			0x2b
8873	/* Previous releases of this header had the following
8874	   misspelled with a trailing 's' */
8875#define DW_TAG_namelist_item		0x2c /* DWARF3/2 spelling */
8876#define DW_TAG_namelist_items		0x2c /* SGI misspelling/typo */
8877#define DW_TAG_packed_type		0x2d
8878#define DW_TAG_subprogram		0x2e
8879	/* The DWARF2 document had two spellings of the following
8880	   two TAGs, DWARF3 specifies the longer spelling. */
8881#define DW_TAG_template_type_parameter	0x2f /* DWARF3/2 spelling*/
8882#define DW_TAG_template_type_param	0x2f /* DWARF2   spelling*/
8883#define DW_TAG_template_value_parameter	0x30 /* DWARF3/2 spelling*/
8884#define DW_TAG_template_value_param	0x30 /* DWARF2   spelling*/
8885#define DW_TAG_thrown_type		0x31
8886#define DW_TAG_try_block		0x32
8887#define DW_TAG_variant_part		0x33
8888#define DW_TAG_variable			0x34
8889#define DW_TAG_volatile_type		0x35
8890#define DW_TAG_dwarf_procedure		0x36  /* DWARF3 */
8891#define DW_TAG_restrict_type		0x37  /* DWARF3 */
8892#define DW_TAG_interface_type		0x38  /* DWARF3 */
8893#define DW_TAG_namespace		0x39  /* DWARF3 */
8894#define DW_TAG_imported_module		0x3a  /* DWARF3 */
8895#define DW_TAG_unspecified_type		0x3b  /* DWARF3 */
8896#define DW_TAG_partial_unit		0x3c  /* DWARF3 */
8897#define DW_TAG_imported_unit		0x3d  /* DWARF3 */
8898#define DW_TAG_mutable_type		0x3e  /* DWARF3 */
8899#define DW_TAG_lo_user			0x4080
8900#define DW_TAG_MIPS_loop		0x4081
8901#define DW_TAG_hi_user			0xffff
8902
8903/* The following 3 are GNU extensions
8904   The TAG names are as if the extensions were dwarf standard,
8905   not extensions.
8906*/
8907#define DW_TAG_format_label             0x4101 /* for FORTRAN 77, Fortran 90 */
8908#define DW_TAG_function_template        0x4102 /* for C++ */
8909#define DW_TAG_class_template           0x4103 /* for C++ */
8910
8911/* The following 3 are extensions to support UPC */
8912#define DW_TAG_upc_shared_type          0x8765 /* UPC */
8913#define DW_TAG_upc_strict_type          0x8766 /* UPC */
8914#define DW_TAG_upc_relaxed_type         0x8767 /* UPC */
8915
8916
8917#define DW_children_no			0
8918#define DW_children_yes			1
8919
8920
8921
8922#define DW_FORM_addr			0x01
8923#define DW_FORM_block2			0x03
8924#define DW_FORM_block4			0x04
8925#define DW_FORM_data2			0x05
8926#define DW_FORM_data4			0x06
8927#define DW_FORM_data8			0x07
8928#define DW_FORM_string			0x08
8929#define DW_FORM_block			0x09
8930#define DW_FORM_block1			0x0a
8931#define DW_FORM_data1			0x0b
8932#define DW_FORM_flag			0x0c
8933#define DW_FORM_sdata			0x0d
8934#define DW_FORM_strp			0x0e
8935#define DW_FORM_udata			0x0f
8936#define DW_FORM_ref_addr		0x10
8937#define DW_FORM_ref1			0x11
8938#define DW_FORM_ref2			0x12
8939#define DW_FORM_ref4			0x13
8940#define DW_FORM_ref8 			0x14
8941#define DW_FORM_ref_udata		0x15
8942#define DW_FORM_indirect		0x16
8943
8944#define DW_AT_sibling				0x01
8945#define DW_AT_location				0x02
8946#define DW_AT_name				0x03
8947#define DW_AT_ordering				0x09
8948#define DW_AT_subscr_data			0x0a
8949#define DW_AT_byte_size				0x0b
8950#define DW_AT_bit_offset			0x0c
8951#define DW_AT_bit_size				0x0d
8952#define DW_AT_element_list			0x0f
8953#define DW_AT_stmt_list				0x10
8954#define DW_AT_low_pc				0x11
8955#define DW_AT_high_pc				0x12
8956#define DW_AT_language				0x13
8957#define DW_AT_member				0x14
8958#define DW_AT_discr				0x15
8959#define DW_AT_discr_value			0x16
8960#define DW_AT_visibility			0x17
8961#define DW_AT_import				0x18
8962#define DW_AT_string_length			0x19
8963#define DW_AT_common_reference			0x1a
8964#define DW_AT_comp_dir				0x1b
8965#define DW_AT_const_value			0x1c
8966#define DW_AT_containing_type			0x1d
8967#define DW_AT_default_value			0x1e
8968#define DW_AT_inline				0x20
8969#define DW_AT_is_optional			0x21
8970#define DW_AT_lower_bound			0x22
8971#define DW_AT_producer				0x25
8972#define DW_AT_prototyped			0x27
8973#define DW_AT_return_addr			0x2a
8974#define DW_AT_start_scope			0x2c
8975#define DW_AT_stride_size			0x2e
8976#define DW_AT_upper_bound			0x2f
8977#define DW_AT_abstract_origin			0x31
8978#define DW_AT_accessibility			0x32
8979#define DW_AT_address_class			0x33
8980#define DW_AT_artificial			0x34
8981#define DW_AT_base_types			0x35
8982#define DW_AT_calling_convention		0x36
8983#define DW_AT_count				0x37
8984#define DW_AT_data_member_location		0x38
8985#define DW_AT_decl_column			0x39
8986#define DW_AT_decl_file				0x3a
8987#define DW_AT_decl_line				0x3b
8988#define DW_AT_declaration			0x3c
8989#define DW_AT_discr_list			0x3d
8990#define DW_AT_encoding				0x3e
8991#define DW_AT_external				0x3f
8992#define DW_AT_frame_base			0x40
8993#define DW_AT_friend				0x41
8994#define DW_AT_identifier_case			0x42
8995#define DW_AT_macro_info			0x43
8996#define DW_AT_namelist_item 			0x44
8997#define DW_AT_priority				0x45
8998#define DW_AT_segment				0x46
8999#define DW_AT_specification			0x47
9000#define DW_AT_static_link			0x48
9001#define DW_AT_type				0x49
9002#define DW_AT_use_location			0x4a
9003#define DW_AT_variable_parameter		0x4b
9004#define DW_AT_virtuality			0x4c
9005#define DW_AT_vtable_elem_location		0x4d
9006#define DW_AT_allocated				0x4e /* DWARF3 */
9007#define DW_AT_associated			0x4f /* DWARF3 */
9008#define DW_AT_data_location			0x50 /* DWARF3 */
9009#define DW_AT_stride				0x51 /* DWARF3 */
9010#define DW_AT_entry_pc				0x52 /* DWARF3 */
9011#define DW_AT_use_UTF8				0x53 /* DWARF3 */
9012#define DW_AT_extension				0x54 /* DWARF3 */
9013#define DW_AT_ranges				0x55 /* DWARF3 */
9014#define DW_AT_trampoline			0x56 /* DWARF3 */
9015#define DW_AT_call_column			0x57 /* DWARF3 */
9016#define DW_AT_call_file				0x58 /* DWARF3 */
9017#define DW_AT_call_line				0x59 /* DWARF3 */
9018#define DW_AT_description			0x5a /* DWARF3 */
9019#define DW_AT_lo_user				0x2000
9020#define DW_AT_MIPS_fde				0x2001
9021#define DW_AT_MIPS_loop_begin			0x2002
9022#define DW_AT_MIPS_tail_loop_begin		0x2003
9023#define DW_AT_MIPS_epilog_begin			0x2004
9024#define DW_AT_MIPS_loop_unroll_factor		0x2005
9025#define DW_AT_MIPS_software_pipeline_depth	0x2006
9026#define DW_AT_MIPS_linkage_name			0x2007
9027#define DW_AT_MIPS_stride		        0x2008
9028#define DW_AT_MIPS_abstract_name	        0x2009
9029#define DW_AT_MIPS_clone_origin		        0x200a
9030#define DW_AT_MIPS_has_inlines		        0x200b
9031#define DW_AT_MIPS_stride_byte		        0x200c
9032#define DW_AT_MIPS_stride_elem		        0x200d
9033#define DW_AT_MIPS_ptr_dopetype			0x200e
9034#define DW_AT_MIPS_allocatable_dopetype		0x200f
9035#define DW_AT_MIPS_assumed_shape_dopetype	0x2010
9036#define DW_AT_MIPS_assumed_size			0x2011
9037
9038
9039/* GNU extensions, currently not used in dwarf2 by egcs
9040   Mostly dwarf1 extensions not needed in dwarf2?
9041*/
9042#define DW_AT_sf_names                          0x2101
9043#define DW_AT_src_info                          0x2102
9044#define DW_AT_mac_info                          0x2103
9045#define DW_AT_src_coords                        0x2104
9046#define DW_AT_body_begin                        0x2105
9047#define DW_AT_body_end                          0x2106
9048/* UPC extension */
9049#define DW_AT_upc_threads_scaled                0x3210 /* UPC */
9050
9051
9052#define DW_AT_hi_user				0x3fff
9053
9054#define DW_OP_addr			0x03
9055#define DW_OP_deref			0x06
9056#define DW_OP_const1u			0x08
9057#define DW_OP_const1s			0x09
9058#define DW_OP_const2u			0x0a
9059#define DW_OP_const2s			0x0b
9060#define DW_OP_const4u			0x0c
9061#define DW_OP_const4s			0x0d
9062#define DW_OP_const8u			0x0e
9063#define DW_OP_const8s			0x0f
9064#define DW_OP_constu			0x10
9065#define DW_OP_consts			0x11
9066#define DW_OP_dup			0x12
9067#define DW_OP_drop			0x13
9068#define DW_OP_over			0x14
9069#define DW_OP_pick			0x15
9070#define DW_OP_swap			0x16
9071#define DW_OP_rot			0x17
9072#define DW_OP_xderef			0x18
9073#define DW_OP_abs			0x19
9074#define DW_OP_and			0x1a
9075#define DW_OP_div			0x1b
9076#define DW_OP_minus			0x1c
9077#define DW_OP_mod			0x1d
9078#define DW_OP_mul			0x1e
9079#define DW_OP_neg			0x1f
9080#define DW_OP_not			0x20
9081#define DW_OP_or			0x21
9082#define DW_OP_plus			0x22
9083#define DW_OP_plus_uconst		0x23
9084#define DW_OP_shl			0x24
9085#define DW_OP_shr			0x25
9086#define DW_OP_shra			0x26
9087#define DW_OP_xor			0x27
9088#define DW_OP_bra			0x28
9089#define DW_OP_eq			0x29
9090#define DW_OP_ge			0x2a
9091#define DW_OP_gt			0x2b
9092#define DW_OP_le			0x2c
9093#define DW_OP_lt			0x2d
9094#define DW_OP_ne			0x2e
9095#define DW_OP_skip			0x2f
9096#define DW_OP_lit0			0x30
9097#define DW_OP_lit1			0x31
9098#define DW_OP_lit2			0x32
9099#define DW_OP_lit3			0x33
9100#define DW_OP_lit4			0x34
9101#define DW_OP_lit5			0x35
9102#define DW_OP_lit6			0x36
9103#define DW_OP_lit7			0x37
9104#define DW_OP_lit8			0x38
9105#define DW_OP_lit9			0x39
9106#define DW_OP_lit10			0x3a
9107#define DW_OP_lit11			0x3b
9108#define DW_OP_lit12			0x3c
9109#define DW_OP_lit13			0x3d
9110#define DW_OP_lit14			0x3e
9111#define DW_OP_lit15			0x3f
9112#define DW_OP_lit16			0x40
9113#define DW_OP_lit17			0x41
9114#define DW_OP_lit18			0x42
9115#define DW_OP_lit19			0x43
9116#define DW_OP_lit20			0x44
9117#define DW_OP_lit21			0x45
9118#define DW_OP_lit22			0x46
9119#define DW_OP_lit23			0x47
9120#define DW_OP_lit24			0x48
9121#define DW_OP_lit25			0x49
9122#define DW_OP_lit26			0x4a
9123#define DW_OP_lit27			0x4b
9124#define DW_OP_lit28			0x4c
9125#define DW_OP_lit29			0x4d
9126#define DW_OP_lit30			0x4e
9127#define DW_OP_lit31			0x4f
9128#define DW_OP_reg0			0x50
9129#define DW_OP_reg1			0x51
9130#define DW_OP_reg2			0x52
9131#define DW_OP_reg3			0x53
9132#define DW_OP_reg4			0x54
9133#define DW_OP_reg5			0x55
9134#define DW_OP_reg6			0x56
9135#define DW_OP_reg7			0x57
9136#define DW_OP_reg8			0x58
9137#define DW_OP_reg9			0x59
9138#define DW_OP_reg10			0x5a
9139#define DW_OP_reg11			0x5b
9140#define DW_OP_reg12			0x5c
9141#define DW_OP_reg13			0x5d
9142#define DW_OP_reg14			0x5e
9143#define DW_OP_reg15			0x5f
9144#define DW_OP_reg16			0x60
9145#define DW_OP_reg17			0x61
9146#define DW_OP_reg18			0x62
9147#define DW_OP_reg19			0x63
9148#define DW_OP_reg20			0x64
9149#define DW_OP_reg21			0x65
9150#define DW_OP_reg22			0x66
9151#define DW_OP_reg23			0x67
9152#define DW_OP_reg24			0x68
9153#define DW_OP_reg25			0x69
9154#define DW_OP_reg26			0x6a
9155#define DW_OP_reg27			0x6b
9156#define DW_OP_reg28			0x6c
9157#define DW_OP_reg29			0x6d
9158#define DW_OP_reg30			0x6e
9159#define DW_OP_reg31			0x6f
9160#define DW_OP_breg0			0x70
9161#define DW_OP_breg1			0x71
9162#define DW_OP_breg2			0x72
9163#define DW_OP_breg3			0x73
9164#define DW_OP_breg4			0x74
9165#define DW_OP_breg5			0x75
9166#define DW_OP_breg6			0x76
9167#define DW_OP_breg7			0x77
9168#define DW_OP_breg8			0x78
9169#define DW_OP_breg9			0x79
9170#define DW_OP_breg10			0x7a
9171#define DW_OP_breg11			0x7b
9172#define DW_OP_breg12			0x7c
9173#define DW_OP_breg13			0x7d
9174#define DW_OP_breg14			0x7e
9175#define DW_OP_breg15			0x7f
9176#define DW_OP_breg16			0x80
9177#define DW_OP_breg17			0x81
9178#define DW_OP_breg18			0x82
9179#define DW_OP_breg19			0x83
9180#define DW_OP_breg20			0x84
9181#define DW_OP_breg21			0x85
9182#define DW_OP_breg22			0x86
9183#define DW_OP_breg23			0x87
9184#define DW_OP_breg24			0x88
9185#define DW_OP_breg25			0x89
9186#define DW_OP_breg26			0x8a
9187#define DW_OP_breg27			0x8b
9188#define DW_OP_breg28			0x8c
9189#define DW_OP_breg29			0x8d
9190#define DW_OP_breg30			0x8e
9191#define DW_OP_breg31			0x8f
9192#define DW_OP_regx			0x90
9193#define DW_OP_fbreg			0x91
9194#define DW_OP_bregx			0x92
9195#define DW_OP_piece			0x93
9196#define DW_OP_deref_size		0x94
9197#define DW_OP_xderef_size		0x95
9198#define DW_OP_nop			0x96
9199#define DW_OP_push_object_address	0x97 /* DWARF3 */
9200#define DW_OP_call2			0x98 /* DWARF3 */
9201#define DW_OP_call4			0x99 /* DWARF3 */
9202#define DW_OP_call_ref			0x9a /* DWARF3 */
9203#define DW_OP_lo_user			0xe0
9204#define DW_OP_hi_user			0xff
9205
9206#define DW_ATE_address			0x1
9207#define DW_ATE_boolean			0x2
9208#define DW_ATE_complex_float		0x3
9209#define DW_ATE_float			0x4
9210#define DW_ATE_signed			0x5
9211#define DW_ATE_signed_char		0x6
9212#define DW_ATE_unsigned			0x7
9213#define DW_ATE_unsigned_char		0x8
9214#define DW_ATE_imaginary_float		0x9  /* DWARF3 */
9215#define DW_ATE_lo_user			0x80
9216#define DW_ATE_hi_user			0xff
9217
9218#define DW_ACCESS_public		1
9219#define DW_ACCESS_protected		2
9220#define DW_ACCESS_private		3
9221
9222#define DW_VIS_local			1
9223#define DW_VIS_exported			2
9224#define DW_VIS_qualified		3
9225
9226#define DW_VIRTUALITY_none		0
9227#define DW_VIRTUALITY_virtual 		1
9228#define DW_VIRTUALITY_pure_virtual 	2
9229
9230#define DW_LANG_C89			0x0001
9231#define DW_LANG_C			0x0002
9232#define DW_LANG_Ada83			0x0003
9233#define DW_LANG_C_plus_plus		0x0004
9234#define DW_LANG_Cobol74			0x0005
9235#define DW_LANG_Cobol85			0x0006
9236#define DW_LANG_Fortran77		0x0007
9237#define DW_LANG_Fortran90		0x0008
9238#define DW_LANG_Pascal83		0x0009
9239#define DW_LANG_Modula2			0x000a
9240#define DW_LANG_Java			0x000b /* DWARF3 */
9241#define DW_LANG_C99			0x000c /* DWARF3 */
9242#define DW_LANG_Ada95			0x000d /* DWARF3 */
9243#define DW_LANG_Fortran95		0x000e /* DWARF3 */
9244#define DW_LANG_PLI			0x000f /* DWARF3 */
9245#define DW_LANG_lo_user			0x8000
9246#define DW_LANG_Mips_Assembler		0x8001
9247#define DW_LANG_Upc                     0x8765 /* UPC */
9248#define DW_LANG_hi_user			0xffff
9249
9250
9251#define DW_ID_case_sensitive		0
9252#define DW_ID_up_case			1
9253#define DW_ID_down_case			2
9254#define DW_ID_case_insensitive		3
9255
9256#define DW_CC_normal			0x1
9257#define DW_CC_program			0x2
9258#define DW_CC_nocall			0x3
9259#define DW_CC_lo_user			0x40
9260#define DW_CC_hi_user			0xff
9261
9262#define DW_INL_not_inlined		0
9263#define DW_INL_inlined			1
9264#define DW_INL_declared_not_inlined	2
9265#define DW_INL_declared_inlined		3
9266
9267#define DW_ORD_row_major		0
9268#define DW_ORD_col_major		1
9269
9270#define DW_DSC_label			0
9271#define DW_DSC_range			1
9272
9273#define DW_LNS_copy			1
9274#define DW_LNS_advance_pc		2
9275#define DW_LNS_advance_line		3
9276#define DW_LNS_set_file			4
9277#define DW_LNS_set_column		5
9278#define DW_LNS_negate_stmt		6
9279#define DW_LNS_set_basic_block		7
9280#define DW_LNS_const_add_pc		8
9281#define DW_LNS_fixed_advance_pc		9
9282#define DW_LNS_set_prologue_end		10 /* DWARF3 */
9283#define DW_LNS_set_epilogue_begin	11 /* DWARF3 */
9284#define DW_LNS_set_isa			12 /* DWARF3 */
9285
9286#define DW_LNE_end_sequence		1
9287#define DW_LNE_set_address		2
9288#define DW_LNE_define_file		3
9289#define DW_LNE_lo_user			128 /* DWARF3 */
9290#define DW_LNE_hi_user			255 /* DWARF3 */
9291
9292#define DW_MACINFO_define		1
9293#define DW_MACINFO_undef		2
9294#define DW_MACINFO_start_file		3
9295#define DW_MACINFO_end_file		4
9296#define DW_MACINFO_vendor_ext		255
9297
9298#define DW_CFA_advance_loc        0x40
9299#define DW_CFA_offset             0x80
9300#define DW_CFA_restore            0xc0
9301#define DW_CFA_extended           0
9302
9303#define DW_CFA_nop              0x00
9304#define DW_CFA_set_loc          0x01
9305#define DW_CFA_advance_loc1     0x02
9306#define DW_CFA_advance_loc2     0x03
9307#define DW_CFA_advance_loc4     0x04
9308#define DW_CFA_offset_extended  0x05
9309#define DW_CFA_restore_extended 0x06
9310#define DW_CFA_undefined        0x07
9311#define DW_CFA_same_value       0x08
9312#define DW_CFA_register         0x09
9313#define DW_CFA_remember_state   0x0a
9314#define DW_CFA_restore_state    0x0b
9315#define DW_CFA_def_cfa          0x0c
9316#define DW_CFA_def_cfa_register 0x0d
9317#define DW_CFA_def_cfa_offset   0x0e
9318#define DW_CFA_def_cfa_expression 0x0f     /* DWARF3 */
9319#define DW_CFA_expression       0x10       /* DWARF3 */
9320#define DW_CFA_cfa_offset_extended_sf 0x11 /* DWARF3 */
9321#define DW_CFA_def_cfa_sf       0x12       /* DWARF3 */
9322#define DW_CFA_def_cfa_offset_sf 0x13      /* DWARF3 */
9323
9324#define DW_CFA_low_user          0x1c
9325#define DW_CFA_MIPS_advance_loc8 0x1d
9326
9327/* the following two from egcs-1.1.2 */
9328#define DW_CFA_GNU_window_save   0x2d
9329#define DW_CFA_GNU_args_size     0x2e
9330
9331#define DW_CFA_high_user         0x3f
9332
9333
9334/* Mapping from machine registers and pseudo-regs into the .debug_frame table.
9335   DW_FRAME entries are machine specific. These describe
9336   MIPS/SGI R3000, R4K, R4400.
9337   And (simultaneously) a mapping from hardware register number to
9338   the number used in the table to identify that register.
9339
9340   The CFA (Canonical Frame Address) described in DWARF is called
9341   the Virtual Frame Pointer on MIPS/SGI machines.
9342
9343	                     Rule describes:
9344*/
9345#define DW_FRAME_CFA_COL 0  /* column used for CFA */
9346#define DW_FRAME_REG1	1  /* integer reg 1 */
9347#define DW_FRAME_REG2	2  /* integer reg 2 */
9348#define DW_FRAME_REG3	3  /* integer reg 3 */
9349#define DW_FRAME_REG4	4  /* integer reg 4 */
9350#define DW_FRAME_REG5	5  /* integer reg 5 */
9351#define DW_FRAME_REG6	6  /* integer reg 6 */
9352#define DW_FRAME_REG7	7  /* integer reg 7 */
9353#define DW_FRAME_REG8	8  /* integer reg 8 */
9354#define DW_FRAME_REG9	9  /* integer reg 9 */
9355#define DW_FRAME_REG10	10 /* integer reg 10 */
9356#define DW_FRAME_REG11	11 /* integer reg 11 */
9357#define DW_FRAME_REG12	12 /* integer reg 12 */
9358#define DW_FRAME_REG13	13 /* integer reg 13 */
9359#define DW_FRAME_REG14	14 /* integer reg 14 */
9360#define DW_FRAME_REG15	15 /* integer reg 15 */
9361#define DW_FRAME_REG16	16 /* integer reg 16 */
9362#define DW_FRAME_REG17	17 /* integer reg 17 */
9363#define DW_FRAME_REG18	18 /* integer reg 18 */
9364#define DW_FRAME_REG19	19 /* integer reg 19 */
9365#define DW_FRAME_REG20	20 /* integer reg 20 */
9366#define DW_FRAME_REG21	21 /* integer reg 21 */
9367#define DW_FRAME_REG22	22 /* integer reg 22 */
9368#define DW_FRAME_REG23	23 /* integer reg 23 */
9369#define DW_FRAME_REG24	24 /* integer reg 24 */
9370#define DW_FRAME_REG25	25 /* integer reg 25 */
9371#define DW_FRAME_REG26	26 /* integer reg 26 */
9372#define DW_FRAME_REG27	27 /* integer reg 27 */
9373#define DW_FRAME_REG28	28 /* integer reg 28 */
9374#define DW_FRAME_REG29	29 /* integer reg 29 */
9375#define DW_FRAME_REG30	30 /* integer reg 30 */
9376#define DW_FRAME_REG31	31 /* integer reg 31, aka ra */
9377
9378	/* MIPS1, 2 have only some of these 64-bit registers.
9379	** MIPS1  save/restore takes 2 instructions per 64-bit reg, and
9380	** in that case, the register is considered stored after the second
9381	** swc1.
9382	*/
9383#define DW_FRAME_FREG0  32 /* 64-bit floating point reg 0 */
9384#define DW_FRAME_FREG1  33 /* 64-bit floating point reg 1 */
9385#define DW_FRAME_FREG2  34 /* 64-bit floating point reg 2 */
9386#define DW_FRAME_FREG3  35 /* 64-bit floating point reg 3 */
9387#define DW_FRAME_FREG4  36 /* 64-bit floating point reg 4 */
9388#define DW_FRAME_FREG5  37 /* 64-bit floating point reg 5 */
9389#define DW_FRAME_FREG6  38 /* 64-bit floating point reg 6 */
9390#define DW_FRAME_FREG7  39 /* 64-bit floating point reg 7 */
9391#define DW_FRAME_FREG8  40 /* 64-bit floating point reg 8 */
9392#define DW_FRAME_FREG9  41 /* 64-bit floating point reg 9 */
9393#define DW_FRAME_FREG10 42 /* 64-bit floating point reg 10 */
9394#define DW_FRAME_FREG11 43 /* 64-bit floating point reg 11 */
9395#define DW_FRAME_FREG12 44 /* 64-bit floating point reg 12 */
9396#define DW_FRAME_FREG13 45 /* 64-bit floating point reg 13 */
9397#define DW_FRAME_FREG14 46 /* 64-bit floating point reg 14 */
9398#define DW_FRAME_FREG15 47 /* 64-bit floating point reg 15 */
9399#define DW_FRAME_FREG16 48 /* 64-bit floating point reg 16 */
9400#define DW_FRAME_FREG17 49 /* 64-bit floating point reg 17 */
9401#define DW_FRAME_FREG18 50 /* 64-bit floating point reg 18 */
9402#define DW_FRAME_FREG19 51 /* 64-bit floating point reg 19 */
9403#define DW_FRAME_FREG20 52 /* 64-bit floating point reg 20 */
9404#define DW_FRAME_FREG21 53 /* 64-bit floating point reg 21 */
9405#define DW_FRAME_FREG22 54 /* 64-bit floating point reg 22 */
9406#define DW_FRAME_FREG23 55 /* 64-bit floating point reg 23 */
9407#define DW_FRAME_FREG24 56 /* 64-bit floating point reg 24 */
9408#define DW_FRAME_FREG25 57 /* 64-bit floating point reg 25 */
9409#define DW_FRAME_FREG26 58 /* 64-bit floating point reg 26 */
9410#define DW_FRAME_FREG27 59 /* 64-bit floating point reg 27 */
9411#define DW_FRAME_FREG28 60 /* 64-bit floating point reg 28 */
9412#define DW_FRAME_FREG29 61 /* 64-bit floating point reg 29 */
9413#define DW_FRAME_FREG30 62 /* 64-bit floating point reg 30 */
9414#define DW_FRAME_FREG31 63 /* 64-bit floating point reg 31 */
9415
9416#define DW_FRAME_RA_COL	64 /* column recording ra */
9417
9418#define DW_FRAME_STATIC_LINK 65 /* column recording static link*/
9419				/* applicable to up-level      */
9420				/* addressing, as in mp code,  */
9421				/* pascal, etc */
9422
9423/* This is the number of columns in the Frame Table. This constant should
9424   be kept in sync with DW_REG_TABLE_SIZE defined in libdwarf.h */
9425#define DW_FRAME_LAST_REG_NUM   (DW_FRAME_STATIC_LINK + 1)
9426
9427
9428/*
9429  DW_FRAME_UNDEFINED_VAL and  DW_FRAME_SAME_VAL  are
9430  never on disk, just generated by libdwarf. See libdwarf.h
9431  for their values.
9432*/
9433
9434
9435
9436#define DW_CHILDREN_no		     0x00
9437#define DW_CHILDREN_yes		     0x01
9438
9439#define DW_ADDR_none		0
9440
9441#ifdef __cplusplus
9442}
9443#endif
9444#endif /* __DWARF_H */
94450707010001ad5d0000812400011e740000000a00000001402068280003995a000000660000000000000000000000000000001500000000libdwarf/dwarf.v2.mm��'\"#ident	"%W%"
9446'\" $Source: /plroot/cmplrs.src/v7.4.2m/.RCS/PL/libdwarf/RCS/dwarf.v2.mm,v $
9447'\"
9448'\" $Revision: 1.2 $
9449'\"
9450'\" DESCRIPTION
9451'\"
9452'\"	Requirements for
9453'\"
9454'\" COMPILATION
9455'\"
9456'\"	pic file.mm | tbl | troff -mm
9457'\"
9458'\"	local mileage may vary
9459'\"
9460'\" AUTHOR
9461'\"
9462'\"	UNIX International Programming Languages SIG
9463'\"
9464'\" COPYRIGHT
9465'\"
9466'\"	Copyright (c) 1992,1993, UNIX International
9467'\"
9468'\"	Permission to use, copy, modify, and distribute this documentation for
9469'\"	any purpose and without fee is hereby granted, provided that the above
9470'\"	copyright notice appears in all copies and that both that copyright
9471'\"	notice and this permission notice appear in supporting documentation,
9472'\"	and that the name UNIX International not be used in advertising or
9473'\"	publicity pertaining to distribution of the software without specific,
9474'\"	written prior permission.  UNIX International makes no representations
9475'\"	about the suitability of this documentation for any purpose.  It is
9476'\"	provided "as is" without express or implied warranty.
9477'\"
9478'\"	UNIX INTERNATIONAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
9479'\"	DOCUMENTATION, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
9480'\"	FITNESS.  IN NO EVENT SHALL UNIX INTERNATIONAL BE LIABLE FOR ANY
9481'\"	SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
9482'\"	RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
9483'\"	CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
9484'\"	CONNECTION WITH THE USE OR PERFORMANCE OF THIS DOCUMENTATION.
9485'\"
9486'\"	NOTICE:
9487'\"
9488'\"	UNIX International is making this documentation available as a
9489'\"	reference point for the industry.  While UNIX International believes
9490'\"	that this specification is well defined in this first release of the
9491'\"	document, minor changes may be made prior to products meeting this
9492'\"	specification being made available from UNIX System Laboratories or
9493'\"	UNIX International members.
9494'\"
9495'\" $Log$
9496'\" Revision 1.1  1994/05/18 18:50:42  davea
9497'\" Initial revision
9498'\"
9499'\"
9500'\"     Abbrevs for funny typeset words
9501.pl-0.25i
9502.ds aX U\s-2NIX\s+2
9503.ds iX \*(aX International
9504.ds uL \s-2AT&T\ USL\s+2
9505'\"
9506'\"  uI should be set to 1 if the publication and copyright page is needed.
9507.nr uI 1
9508'\"
9509'\"     Make the appropriate replacements in this section!
9510'\"
9511'\"     Set the ND date to the current date.
9512'\"     tT is the formal document title
9513'\"     tP is the name of the Project (if appropriate)
9514'\"     tD is the short document title
9515'\"     tE is the work group name (may be the same as the project name)
9516.ds tT DWARF Debugging Information Format
9517.ds tP
9518'\"             Document name (i.e., without project name)
9519.ds tD DWARF Debugging Information Format
9520.ds tE Programming Languages SIG
9521'\"
9522'\"     Define headers and footers macro
9523'\"
9524.ds fA Revision: 2.0.0
9525'\"
9526'\"     fB null to remove page numbers on cover page
9527.ds fB
9528.ds fC July 27, 1993
9529.ds fE Industry Review Draft
9530.ds fF \*(tD
9531.PH "''''"
9532.PF "''\*(fE''"
9533.tr ~
9534.SA 1
9535.S 10
9536.nr Ej 1
9537.nr Hs 5
9538.nr Hu 1
9539.nr Hb 5
9540.ds HP +2 +2 +1 +0 +0 +0 +0
9541.ds HF 3 3 3 3 3 1 1
9542.if n .ds HF 1 1 1 1 1 1 1 1
9543'\"
9544'\"     First page, print title and authors
9545'\"
9546.S +4
9547.DS C
9548
9549
9550
9551
9552
9553
9554\fB\*(tT
9555
9556\s-2\*(tP\s+2\fP
9557
9558.DE
9559.S
9560.sp 3i
9561\*(iX
9562.br
9563\*(tE
9564.br
9565\*(fA (\*(fC)
9566.SK
9567.if \n(uI\{
9568.DS C
9569.in -.25i
9570.B "Published by:"
9571.R
9572
9573\*(iX
9574Waterview Corporate Center
957520 Waterview Boulevard
9576Parsippany, NJ  07054
9577
9578for further information, contact:
9579Vice President of Marketing
9580
9581Phone:	+1 201-263-8400
9582Fax:	+1 201-263-8401
9583.DE
9584.P
9585Copyright \(co 1992, 1993 \*(iX, Inc.
9586.P
9587Permission to use, copy, modify, and distribute this
9588documentation for any purpose and without fee is hereby granted, provided
9589that the above copyright notice appears in all copies and that both that
9590copyright notice and this permission notice appear in supporting
9591documentation, and that the name \*(iX not be used in
9592advertising or publicity pertaining to distribution of the software
9593without specific, written prior permission.  \*(iX makes
9594no representations about the suitability of this documentation for any
9595purpose.  It is provided "as is" without express or implied warranty.
9596.P
9597UNIX INTERNATIONAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS DOCUMENTATION,
9598INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.  IN NO
9599EVENT SHALL UNIX INTERNATIONAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
9600CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
9601USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
9602OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
9603PERFORMANCE OF THIS DOCUMENTATION.
9604.sp 2l
9605.if \n(uI\{
9606NOTICE:
9607.P
9608\*(iX is making this documentation available as a
9609reference point for the industry.
9610While \*(iX believes that this specification is well
9611defined in this first release of the document,
9612minor changes may be made prior to products meeting this specification
9613being made available from \*(aX System Laboratories or \*(iX members.
9614.sp 1l \}
9615Trademarks:
9616.P
9617Intel386 is a trademark of Intel Corporation.
9618.br
9619\*(aX\(rg is a registered trademark of \*(aX System Laboratories
9620in the United States and other countries.
9621.br
9622.OH "'''\s10\\\\*(tE\s0'"
9623.EH "'\s10\\\\*(tD\s0'''"
9624.SK
9625'\".VM 0 2
9626.PF "''\s10\\\\*(fE\s0''"
9627.OF "'\s10\\\\*(fA'\\\\*(fB'\\\\*(fC\s0'"
9628.EF "'\s10\\\\*(fA'\\\\*(fB'\\\\*(fC\s0'"
9629'\" -----------------------------------------------------------------------
9630'\".
9631'\"     Reset page numbers
9632'\"
9633.nr P 1
9634.nr % 1
9635'\"
9636'\"     Define headers and footers
9637'\"
9638.FH
9639'\"     Turn on the page numbering in the footers
9640.ds fB Page %
9641'\"
9642'\"     MACROEND
9643'\"
9644.if n .fp 2 R
9645.if n .fp 3 R
9646.tr ~
9647\fR
9648.S 11
9649.SA 1
9650.tr ~
9651.OP
9652.ds | |
9653.ds ~ ~
9654.ds ' '
9655.if t .ds Cw \&\f(CW
9656.if n .ds Cw \fB
9657.de Cf		\" Place every other arg in Cw font, beginning with first
9658.if \\n(.$=1 \&\*(Cw\\$1\fP
9659.if \\n(.$=2 \&\*(Cw\\$1\fP\\$2
9660.if \\n(.$=3 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP
9661.if \\n(.$=4 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP\\$4
9662.if \\n(.$=5 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP\\$4\*(Cw\\$5\fP
9663.if \\n(.$=6 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP\\$4\*(Cw\\$5\fP\\$6
9664.if \\n(.$=7 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP\\$4\*(Cw\\$5\fP\\$6\*(Cw\\$7\fP
9665.if \\n(.$=8 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP\\$4\*(Cw\\$5\fP\\$6\*(Cw\\$7\fP\\$8
9666.if \\n(.$=9 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP\\$4\*(Cw\\$5\fP\\$6\*(Cw\\$7\fP\\$8\*(Cw
9667..
9668'\" macros used by index generating tool
9669.deIX
9670.ie '\\n(.z'' .tm .Index: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9	\\n%
9671.el \\!.ix \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
9672..
9673.deix
9674.ie '\\n(.z'' .tm .Index: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9	\\n%
9675.el \\!.ix \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
9676..
9677.ta .5i +.5i +.5i +.5i +.5i +.5i +.5i +.5i
9678.HU "FOREWORD"
9679This document specifies the second generation of symbolic debugging
9680information based on the DWARF format that
9681has been developed by the \*(iX
9682Programming Languages Special Interest Group (SIG).
9683It is being circulated for industry review.
9684The first version of the DWARF specification was published
9685by \*(iX in January, 1992.  The current version adds significant
9686new functionality, but its main thrust is to achieve a much
9687denser encoding of the DWARF information.  Because of the new
9688encoding, DWARF Version 2 is not binary compatible with
9689DWARF Version 1.
9690.P
9691At this point, the SIG believes that this document sufficiently
9692supports the debugging needs of C, C++, FORTRAN 77,
9693Fortran90, Modula2 and Pascal, and we have
9694released it for public comment.  We will accept comments on this
9695document until September 30, 1994.  Comments may be directed via email
9696to the SIG mailing list (plsig@ui.org).  If you are unable
9697to send email, paper mail, FAX, or machine readable copy
9698on \*(aX, MS-DOS, or Macintosh compatible media can be
9699sent to \*(iX at the address listed below,
9700and will be forwarded to the SIG.
9701.SP
9702.SP
9703.SP
9704.in +20
9705UNIX International
9706.br
9707Waterview Corporate Center
9708.br
970920 Waterview Boulevard
9710.br
9711Parsippany, NJ 07054
9712.br
9713Phone:	+1 201-263-8400
9714.br
9715Fax:	+1 201-263-8401
9716.br
9717.in -20
9718.nr H1 0
9719.OP
9720.H 1 "INTRODUCTION"
9721\fR
9722This document defines the format for the information generated by
9723compilers, assemblers and linkage editors that is necessary for symbolic,
9724source-level debugging.  The debugging information format does not favor the
9725design of any compiler or debugger.  Instead, the goal is to create a method of
9726communicating an accurate picture of the source program to any debugger in a
9727form that is economically extensible to different languages while retaining
9728backward compatibility.
9729.P
9730The design of the debugging information format is open-ended, allowing for the
9731addition of new debugging information to accommodate new languages or
9732debugger capabilities while remaining compatible with other languages or
9733different debuggers.
9734.H 2 "Purpose and Scope"
9735The debugging information format described in this document is designed to
9736meet the symbolic, source-level debugging needs of
9737different languages in a unified fashion by
9738requiring language independent debugging information whenever possible.
9739.IX C++ %caa
9740.IX virtual functions
9741.IX Fortran
9742Individual needs, such as C++ virtual functions or Fortran common blocks are
9743accommodated by creating attributes that are used only for those
9744languages.  The \*(iX \*(tE believes
9745that this document sufficiently covers the
9746.IX languages
9747debugging information needs of C, C++, FORTRAN77, Fortran90,
9748Modula2 and Pascal.
9749.IX C %c
9750.IX Modula2
9751.IX Pascal
9752.IX FORTRAN77
9753.IX Fortran90
9754.P
9755This document describes DWARF Version 2, the second generation of debugging
9756.IX Version 2
9757information based on the DWARF format.  While DWARF Version 2 provides
9758new debugging information not available in Version 1, the primary focus
9759of the changes for Version 2 is the representation of the information,
9760rather than the information content itself.  The basic structure of
9761the Version 2 format remains as in Version 1: the debugging information
9762is represented as a series of debugging information entries, each containing
9763one or more attributes (name/value pairs).
9764.IX debugging information entries
9765.IX attributes
9766The Version 2 representation, however,
9767is much more compact than the Version 1 representation.
9768.IX Version 1
9769In some cases, this greater density has been achieved at the expense
9770of additional complexity or greater difficulty in producing and processing
9771the DWARF information.  We believe that the reduction in I/O and in
9772memory paging should more than make up for any increase in processing time.
9773.P
9774Because the representation of information has changed from Version 1 to
9775Version 2, Version 2 DWARF information is not binary compatible
9776.IX compatibility
9777with Version 1 information.  To make it easier for consumers to
9778support both Version 1 and Version 2 DWARF information, the Version
97792 information has been moved to a different object file section,
9780.Cf .debug_info .
9781.IX \f(CW.debug_info\fP %debugai
9782.P
9783The intended audience for this document are the developers of
9784both producers and consumers of debugging information, typically
9785language compilers, debuggers and other tools that need to interpret
9786a binary program in terms of its original source.
9787.H 2 "Overview"
9788There are two major pieces to the description of the DWARF format in
9789this document.  The first piece is the informational content
9790of the debugging entries.  The second piece
9791is the way the debugging information is encoded and
9792represented in an object file.
9793.P
9794The informational content is described in sections two
9795through six.
9796Section two describes the overall structure of
9797the information and attributes that are common to many or all of
9798the different debugging information entries.
9799Sections three, four and five describe the specific debugging
9800information entries and how they communicate the
9801necessary information about the source program to a debugger.
9802Section six describes debugging information contained
9803outside of the debugging information entries, themselves.
9804The encoding of the DWARF information is
9805presented in section seven.
9806.P
9807Section eight describes some future directions for the DWARF
9808specification.
9809.P
9810In the following sections, text in normal font describes required aspects
9811of the DWARF format.  Text in \fIitalics\fP is explanatory or supplementary
9812material, and not part of the format definition itself.
9813.H 2 "Vendor Extensibility"
9814.IX vendor extensions
9815This document does not attempt to cover all interesting languages or even
9816to cover all of the interesting debugging information needs for its primary
9817target languages (C, C++, FORTRAN77, Fortran90, Modula2, Pascal).
9818Therefore the document provides
9819vendors a way to define their own debugging information tags, attributes,
9820base type encodings, location operations, language names,
9821calling conventions and call frame instructions
9822by reserving a portion of the name space and valid values
9823for these constructs for vendor specific additions.  Future versions
9824of this document will not use names or values reserved for vendor specific
9825additions.  All names and values not reserved for vendor additions, however,
9826are reserved for future versions of this document.  See section 7 for
9827details.
9828.H 2 "Changes from Version 1"
9829The following is a list of the major changes made to the DWARF Debugging
9830Information Format since Version 1 of the format was published (January
9831.IX Version 1
983220, 1992).  The list is not meant to be exhaustive.
9833.BL
9834.LI
9835Debugging information entries have been moved from the
9836.Cf .debug
9837.IX \f(CW.debug\fP %debugaaa
9838to the
9839.Cf .debug_info
9840.IX \f(CW.debug_info\fP %debugai
9841section of an object file.
9842.LI
9843.IX tags
9844.IX attributes, names
9845.IX attributes, forms
9846The tag, attribute names and attribute forms encodings have been moved
9847out of the debugging information itself to a separate abbreviations table.
9848.IX abbreviations table
9849.LI
9850Explicit sibling pointers have been made optional.  Each
9851.IX debugging information entries, siblings
9852entry now specifies (through the abbreviations table) whether
9853or not it has children.
9854.IX debugging information entries, child entries
9855.LI
9856New more compact attribute forms have been added, including a variable
9857length constant data form.  Attribute values may now have any
9858.IX variable length data
9859.IX attributes, forms
9860.IX attributes, values
9861form within a given class of forms.
9862.LI
9863Location descriptions have been replaced by a new, more compact
9864and more expressive format.
9865.IX locations, descriptions
9866There is now a way of expressing multiple locations for an object
9867whose location changes during its lifetime.
9868.IX locations, lists
9869.LI
9870There is a new format for line number information
9871that provides information
9872for code contributed to a compilation unit from an included file.
9873Line number information is now in the
9874.IX line number information
9875.Cf .debug_line
9876.IX \f(CW.debug_line\fP %debugali
9877section of an object file.
9878.LI
9879The representation of the type of a declaration has been
9880reworked.
9881.IX declarations, types of
9882.LI
9883A new section provides an encoding for pre-processor macro information.
9884.IX macro information
9885.IX pre-processor
9886.LI
9887Debugging information entries now provide for the representation
9888of non-defining declarations of objects, functions or types.
9889.IX declarations, non-defining
9890.LI
9891More complete support for Modula2 and Pascal has been added.
9892.LI
9893There is now a way of describing locations for segmented address spaces.
9894.IX segmented address space
9895.IX address space, segmented
9896.LI
9897A new section provides an encoding for information about call
9898frame activations.
9899.IX call frame information
9900.IX activations
9901.LI
9902The representation of enumeration and array types has been
9903.IX enumerations
9904.IX arrays
9905reworked so that DWARF presents only a single way of
9906representing lists of items.
9907.LI
9908Support has been added for C++ templates and exceptions.
9909.IX C++ %caa
9910.IX templates
9911.IX exceptions
9912.LE
9913.OP
9914.H 1 "GENERAL DESCRIPTION"
9915.H 2   "The Debugging Information Entry"
9916DWARF uses a series of debugging information entries to define a
9917.IX debugging information entries
9918low-level representation of a source program. Each debugging
9919information entry is described by an identifying tag and
9920contains a series of attributes.
9921The tag specifies the class to which an entry
9922belongs, and the attributes define the specific characteristics
9923of the entry.
9924.P
9925.nr aX \n(Fg+1
9926The set of required tag names is listed in Figure \n(aX.
9927.IX tags
9928The debugging information entries they identify are described in sections three, four and five.
9929.P
9930The debugging information entries in DWARF Version 2 are intended
9931to exist in the
9932.Cf .debug_info
9933section of an object file.
9934.IX \f(CW.debug_info\fP %debugai
9935.DF
9936.TS
9937center box;
9938lf(CW) lf(CW)
9939.
9940DW_TAG_access_declaration	DW_TAG_array_type
9941DW_TAG_base_type	DW_TAG_catch_block
9942DW_TAG_class_type	DW_TAG_common_block
9943DW_TAG_common_inclusion	DW_TAG_compile_unit
9944DW_TAG_const_type	DW_TAG_constant
9945DW_TAG_entry_point	DW_TAG_enumeration_type
9946DW_TAG_enumerator	DW_TAG_file_type
9947DW_TAG_formal_parameter	DW_TAG_friend
9948DW_TAG_imported_declaration	DW_TAG_inheritance
9949DW_TAG_inlined_subroutine	DW_TAG_label
9950DW_TAG_lexical_block	DW_TAG_member
9951DW_TAG_module	DW_TAG_namelist
9952DW_TAG_namelist_item	DW_TAG_packed_type
9953DW_TAG_pointer_type	DW_TAG_ptr_to_member_type
9954DW_TAG_reference_type	DW_TAG_set_type
9955DW_TAG_string_type	DW_TAG_structure_type
9956DW_TAG_subprogram	DW_TAG_subrange_type
9957DW_TAG_subroutine_type	DW_TAG_template_type_param
9958DW_TAG_template_value_param	DW_TAG_thrown_type
9959DW_TAG_try_block	DW_TAG_typedef
9960DW_TAG_union_type	DW_TAG_unspecified_parameters
9961DW_TAG_variable	DW_TAG_variant
9962DW_TAG_variant_part	DW_TAG_volatile_type
9963DW_TAG_with_stmt
9964.TE
9965.FG "Tag names"
9966.DE
9967.H 2 "Attribute Types"
9968Each attribute value is characterized by an attribute name.
9969.IX attributes
9970.IX attributes, names
9971The set of attribute names is
9972.nr aX \n(Fg+1
9973listed in Figure \n(aX.
9974.DF
9975.TS
9976center box;
9977lf(CW) lf(CW)
9978.
9979DW_AT_abstract_origin	DW_AT_accessibility
9980DW_AT_address_class	DW_AT_artificial
9981DW_AT_base_types	DW_AT_bit_offset
9982DW_AT_bit_size	DW_AT_byte_size
9983DW_AT_calling_convention	DW_AT_common_reference
9984DW_AT_comp_dir	DW_AT_const_value
9985DW_AT_containing_type	DW_AT_count
9986DW_AT_data_member_location	DW_AT_decl_column
9987DW_AT_decl_file	DW_AT_decl_line
9988DW_AT_declaration	DW_AT_default_value
9989DW_AT_discr	DW_AT_discr_list
9990DW_AT_discr_value	DW_AT_encoding
9991DW_AT_external	DW_AT_frame_base
9992DW_AT_friend	DW_AT_high_pc
9993DW_AT_identifier_case	DW_AT_import
9994DW_AT_inline	DW_AT_is_optional
9995DW_AT_language	DW_AT_location
9996DW_AT_low_pc	DW_AT_lower_bound
9997DW_AT_macro_info	DW_AT_name
9998DW_AT_namelist_item	DW_AT_ordering
9999DW_AT_priority	DW_AT_producer
10000DW_AT_prototyped	DW_AT_return_addr
10001DW_AT_segment	DW_AT_sibling
10002DW_AT_specification	DW_AT_start_scope
10003DW_AT_static_link	DW_AT_stmt_list
10004DW_AT_stride_size	DW_AT_string_length
10005DW_AT_type	DW_AT_upper_bound
10006DW_AT_use_location	DW_AT_variable_parameter
10007DW_AT_virtuality	DW_AT_visibility
10008DW_AT_vtable_elem_location
10009.TE
10010.FG "Attribute names"
10011.DE
10012.P
10013The permissible values for an attribute belong to one or more classes
10014.IX attributes, values
10015.IX attributes, forms
10016of attribute value forms.  Each form class may be represented in one or more
10017ways.  For instance, some attribute values consist of a single piece
10018of constant data.  ``Constant data'' is the class of attribute value
10019that those attributes may have.  There are several representations
10020of constant data, however (one, two, four, eight bytes and variable
10021length data).  The particular representation for any given instance
10022of an attribute is encoded along with the attribute name as part
10023of the information that guides the interpretation of a debugging
10024information entry.   Attribute value forms may belong
10025to one of the following classes.
10026.VL 18
10027.LI address
10028.IX attributes, addresses
10029Refers to some location in the address space of the described program.
10030.LI block
10031.IX attributes, blocks
10032An arbitrary number of uninterpreted bytes of data.
10033.LI constant
10034.IX attributes, constants
10035One, two, four or eight bytes of uninterpreted data, or data encoded
10036in the variable length format known as LEB128 (see section 7.6).
10037.IX variable length data
10038.IX LEB128
10039.LI flag
10040.IX attributes, flags
10041A small constant that indicates the presence or absence of an attribute.
10042.LI reference
10043.IX attributes, references
10044Refers to some member of the set of debugging information entries that describe
10045the program.  There are two types of reference.  The first is an
10046offset relative to the beginning of the compilation unit in
10047which the reference occurs and must refer to an entry within
10048that same compilation unit.  The second type of reference
10049is the address of any debugging information entry within
10050the same executable or shared object; it may refer to an entry
10051in a different compilation unit from the unit containing the
10052reference.
10053.LI string
10054.IX attributes, strings
10055A null-terminated sequence of zero or more (non-null) bytes.
10056Data in this form are generally printable strings.  Strings
10057may be represented directly in the debugging information entry
10058or as an offset in a separate string table.
10059.LE
10060.P
10061There are no limitations on the ordering of attributes within a debugging
10062.IX attributes, ordering
10063information entry, but to prevent ambiguity,
10064no more than one attribute with a given name may appear in any debugging
10065information entry.
10066.H 2 "Relationship of Debugging Information Entries"
10067.I
10068A variety of needs can be met by permitting a single debugging
10069information entry to ``own'' an arbitrary number of other debugging
10070entries and by permitting the same debugging information entry to be
10071one of many owned by another debugging information entry.
10072This makes it possible to describe, for example,
10073the static block structure within
10074a source file, show the members of a structure, union, or class, and associate
10075declarations with source files or source files with shared objects.
10076.P
10077.R
10078The ownership relation
10079of debugging information entries is achieved naturally
10080.IX debugging information entries
10081because the debugging information is represented as a tree.
10082The nodes of the tree are the debugging information entries
10083themselves.  The child entries of any node are exactly those
10084.IX debugging information entries, child entries
10085debugging information entries owned by that node.\*F
10086.FS
10087While the ownership relation of the debugging information
10088entries is represented as a tree, other relations among
10089the entries exist, for example, a pointer from an entry
10090representing a variable to another entry representing
10091the type of that variable.  If all such relations are
10092taken into account, the debugging entries form a graph,
10093not a tree.
10094.FE
10095.P
10096The tree itself is represented by flattening it in prefix
10097order.  Each debugging information entry
10098is defined either to have child entries or not to have child entries
10099(see section 7.5.3).
10100If an entry is defined not to have children, the next physically
10101succeeding entry is the sibling of the prior entry.  If an entry
10102.IX debugging information entries, siblings
10103is defined to have children, the next physically succeeding entry
10104is the first child of the prior entry.  Additional children of the parent
10105entry are represented as siblings of the first child.  A chain
10106of sibling entries is terminated by a null entry.
10107.IX debugging information entries, null entries
10108.P
10109In cases where a producer of debugging information
10110feels that it will be important for consumers of that information
10111to quickly scan chains of sibling entries, ignoring the children
10112of individual siblings, that producer may attach an
10113.Cf AT_sibling
10114attribute to any debugging information entry.  The value of
10115this attribute is a reference to the sibling entry of the
10116entry to which the attribute is attached.
10117.H 2 "Location Descriptions"
10118.I
10119The debugging information must provide consumers a way to find the location
10120of program variables, determine the bounds of dynamic arrays and strings
10121and possibly to find the base address of a subroutine's stack frame or
10122the return address of a subroutine.  Furthermore, to meet the needs
10123of recent computer architectures and optimization techniques, the debugging
10124information must be able to describe the location of an object
10125whose location changes over the object's lifetime.
10126.P
10127.R
10128Information about the location of program objects is provided by
10129location descriptions.  Location
10130.IX locations, descriptions
10131descriptions can be either of two forms:
10132.AL
10133.LI
10134\fILocation expressions\fP which are a language independent representation of
10135addressing rules
10136.IX locations, expressions
10137of arbitrary complexity built from a few basic
10138building blocks, or \fIoperations\fP.  They are sufficient for describing
10139the location of any object as long as its lifetime is either static
10140or the same as the lexical block that owns it, and it does not move throughout
10141its lifetime.
10142.LI
10143\fILocation lists\fP which are used to describe objects that
10144.IX locations, lists
10145have a limited lifetime or change their location throughout their
10146lifetime.  Location lists are more completely described below.
10147.LE
10148.P
10149The two forms are distinguished in a context sensitive manner.  As the value
10150of an attribute, a location expression is
10151encoded as a block and a location list is encoded as a constant offset into
10152a location list table.
10153.P
10154.I
10155Note: The Version 1 concept of "location descriptions" was replaced in Version 2
10156with this new abstraction because it is denser and more descriptive.
10157.IX Version 1
10158.IX Version 2
10159.R
10160.H 3 "Location Expressions"
10161A location expression consists of zero or more location operations.
10162.IX locations, expressions
10163An expression with zero operations
10164is used to denote an object that is
10165present in the source code but not present in the object code
10166(perhaps because of optimization).
10167.IX optimized code
10168The location operations fall into two categories, register names and
10169addressing operations.  Register names always appear alone and indicate
10170that the referred object is contained inside a particular
10171register.  Addressing operations are memory address computation
10172rules.  All location operations are encoded as a stream of opcodes that
10173are each followed by zero or more literal operands.  The number of operands
10174is determined by the opcode.
10175.H 3 "Register Name Operators"
10176.IX locations, register name operators
10177The following operations can be used to name a register.
10178.P
10179.I
10180Note that the
10181register number represents a DWARF specific mapping of numbers onto
10182the actual registers of a given architecture.
10183The mapping should be chosen to gain optimal density and
10184should be shared by all users of a given architecture.
10185The \*(tE recommends
10186that this mapping be defined by the ABI\*F
10187.IX ABI
10188.FS
10189\fISystem V Application Binary Interface\fP, consisting of the generic
10190interface and processor supplements for each target architecture.
10191.FE
10192authoring committee for each
10193architecture.
10194.R
10195.AL
10196.LI
10197.Cf DW_OP_reg0 , " DW_OP_reg1" ", ..., " DW_OP_reg31
10198.br
10199The
10200\f(CWDW_OP_reg\fP\fIn\fP
10201operations encode the names of up to 32 registers, numbered from
102020 through 31, inclusive.  The object addressed is in register \fIn\fP.
10203.LI
10204.Cf DW_OP_regx
10205.br
10206The
10207.Cf DW_OP_regx
10208operation has a single unsigned LEB128 literal operand that encodes the
10209name of a register.
10210.LE
10211.H 3 "Addressing Operations"
10212.IX locations, stack
10213Each addressing operation represents a postfix operation on a simple stack
10214machine.  Each element of the stack is the size of an
10215address on the target machine.
10216The value on the top of the stack after
10217``executing'' the location expression is taken to be the result (the address
10218of the object, or the value of the array bound, or the length of a
10219dynamic string).  In the case of locations used for structure members,
10220.IX members, locations
10221the computation assumes that the base address of the containing structure
10222has been pushed on the stack before evaluation of the addressing operation.
10223.R
10224.H 4 "Literal Encodings"
10225.IX locations, literal encodings
10226The following operations all push a value onto the addressing stack.
10227.AL
10228.LI
10229.Cf DW_OP_lit0 , " DW_OP_lit1" ", ..., " DW_OP_lit31
10230.br
10231The
10232\f(CWDW_OP_lit\fP\fIn\fP operations encode the unsigned
10233literal values from 0 through 31, inclusive.
10234.LI
10235.Cf DW_OP_addr
10236.br
10237The
10238.Cf DW_OP_addr
10239operation has a single operand that encodes a
10240machine address and whose size is the size of an address on the
10241target machine.
10242.LI
10243.Cf DW_OP_const1u
10244.br
10245The single operand of the
10246.Cf DW_OP_const1u
10247operation provides a 1-byte unsigned integer constant.
10248.LI
10249.Cf DW_OP_const1s
10250.br
10251The single operand of the
10252.Cf DW_OP_const1s
10253operation provides a
102541-byte signed integer constant.
10255.LI
10256.Cf DW_OP_const2u
10257.br
10258The single operand of the
10259.Cf DW_OP_const2u
10260operation provides a
102612-byte unsigned integer constant.
10262.LI
10263.Cf DW_OP_const2s
10264.br
10265The single operand of the
10266.Cf DW_OP_const2s
10267operation provides a
102682-byte signed integer constant.
10269.LI
10270.Cf DW_OP_const4u
10271.br
10272The single operand of the
10273.Cf DW_OP_const4u
10274operation provides a
102754-byte unsigned integer constant.
10276.LI
10277.Cf DW_OP_const4s
10278.br
10279The single operand of the
10280.Cf DW_OP_const4s
10281operation provides a
102824-byte signed integer constant.
10283.LI
10284.Cf DW_OP_const8u
10285.br
10286The single operand of the
10287.Cf DW_OP_const8u
10288operation provides an
102898-byte unsigned integer constant.
10290.LI
10291.Cf DW_OP_const8s
10292.br
10293The single operand of the
10294.Cf DW_OP_const8s
10295operation provides an
102968-byte signed integer constant.
10297.LI
10298.Cf DW_OP_constu
10299.br
10300The single operand of the
10301.Cf DW_OP_constu
10302operation provides an
10303unsigned LEB128 integer constant.
10304.LI
10305.Cf DW_OP_consts
10306.br
10307The single operand of the
10308.Cf DW_OP_consts
10309operation provides a
10310signed LEB128 integer constant.
10311.LE
10312.H 4 "Register Based Addressing"
10313.IX locations, register based addressing
10314The following operations push a value onto the stack that
10315is the result of adding the contents of a register with
10316a given signed offset.
10317.AL
10318.LI
10319.Cf DW_OP_fbreg
10320.br
10321The
10322\f(CWDW_OP_fbreg\fP
10323operation provides a signed LEB128 offset from the address specified
10324by the location descriptor in the
10325.Cf DW_AT_frame_base
10326attribute of the current
10327.IX subroutines, frame base
10328function.  \fI(This is typically a "stack pointer" register
10329plus or minus some
10330offset.  On more sophisticated systems it might be a location list that
10331adjusts the offset according to changes in the stack pointer as
10332the PC changes.)\fP
10333.LI
10334.Cf DW_OP_breg0 , " DW_OP_breg1" ", ..., " DW_OP_breg31
10335.br
10336The single operand of the
10337\f(CWDW_OP_breg\fP\fIn\fP
10338operations provides a signed LEB128 offset from the specified register.
10339.LI
10340.Cf DW_OP_bregx
10341.br
10342The
10343.Cf DW_OP_bregx
10344operation has two operands:  a signed LEB128 offset from the specified register
10345which is defined with an unsigned LEB128 number.
10346.LE
10347.H 4 "Stack Operations"
10348.IX locations, stack
10349The following operations
10350manipulate the ``location stack.''
10351Location operations that index the location stack assume that
10352the top of the stack (most recently added entry) has index 0.
10353.AL
10354.LI
10355.Cf DW_OP_dup
10356.br
10357The
10358.Cf DW_OP_dup
10359operation duplicates the value at the top of the location stack.
10360.LI
10361.Cf DW_OP_drop
10362.br
10363The
10364.Cf DW_OP_drop
10365operation pops the value at the top of the stack.
10366.LI
10367.Cf DW_OP_pick
10368.br
10369The single operand of the
10370.Cf DW_OP_pick
10371operation provides a 1-byte index.  The stack entry with the specified index
10372(0 through 255, inclusive) is pushed on the stack.
10373.LI
10374.Cf DW_OP_over
10375.br
10376The
10377.Cf DW_OP_over
10378operation duplicates the entry currently second in the stack
10379at the top of the stack.  This is equivalent to an
10380.Cf DW_OP_pick
10381operation, with index 1.
10382.LI
10383.Cf DW_OP_swap
10384.br
10385The
10386.Cf DW_OP_swap
10387operation swaps the top two stack entries.   The entry at
10388the top of the stack becomes the second stack entry, and
10389the second entry becomes the top of the stack.
10390.LI
10391.Cf DW_OP_rot
10392.br
10393The
10394.Cf DW_OP_rot
10395operation rotates the first three stack entries.   The entry at
10396the top of the stack becomes the third stack entry, the second entry
10397becomes the top of the stack, and the third entry becomes the second
10398entry.
10399.LI
10400.Cf DW_OP_deref
10401.br
10402The
10403.Cf DW_OP_deref
10404operation pops the top stack entry and treats it as an address.
10405The value retrieved from that address is pushed.  The size of the
10406data retrieved from the dereferenced address is the size of an address
10407on the target machine.
10408.LI
10409.Cf DW_OP_deref_size
10410.br
10411The
10412.Cf DW_OP_deref_size
10413operation behaves like the
10414.Cf DW_OP_deref
10415operation: it
10416pops the top stack entry and treats it as an address.
10417The value retrieved from that address is pushed.
10418In the
10419.Cf DW_OP_deref_size
10420operation, however,
10421the size in bytes of the
10422data retrieved from the dereferenced address is specified by the
10423single operand.  This operand is a 1-byte unsigned integral constant
10424whose value may not be larger than the size of an address on
10425the target machine.  The data retrieved is zero extended to the size
10426of an address on the target machine before being pushed on
10427the expression stack.
10428.LI
10429.Cf DW_OP_xderef
10430.br
10431The
10432.Cf DW_OP_xderef
10433.IX address space, multiple
10434operation provides an extended dereference mechanism.  The entry at the
10435top of the stack is treated as an address.  The second stack entry
10436is treated as an ``address space identifier'' for those architectures
10437that support multiple address spaces.  The top two stack elements
10438are popped, a data item is retrieved through an implementation-defined
10439address calculation and pushed as the new stack top.  The size of the
10440data retrieved from the dereferenced address is the size of an address
10441on the target machine.
10442.LI
10443.Cf DW_OP_xderef_size
10444.br
10445The
10446.Cf DW_OP_xderef_size
10447operation behaves like the
10448.Cf DW_OP_xderef
10449operation: the entry at the
10450top of the stack is treated as an address.  The second stack entry
10451is treated as an ``address space identifier'' for those architectures
10452that support multiple address spaces.  The top two stack elements
10453are popped, a data item is retrieved through an implementation-defined
10454address calculation and pushed as the new stack top.
10455In the
10456.Cf DW_OP_xderef_size
10457operation, however,
10458the size in bytes of the
10459data retrieved from the dereferenced address is specified by the
10460single operand.  This operand is a 1-byte unsigned integral constant
10461whose value may not be larger than the size of an address on
10462the target machine.  The data retrieved is zero extended to the size
10463of an address on the target machine before being pushed on
10464the expression stack.
10465.LE
10466.H 4 "Arithmetic and Logical Operations"
10467.IX locations, arithmetic operations
10468.IX locations, logical operations
10469The following provide arithmetic and logical operations.
10470The arithmetic operations perform ``addressing arithmetic,''
10471that is, unsigned arithmetic that wraps on an address-sized
10472boundary.  The operations do not cause an exception on overflow.
10473.AL
10474.LI
10475.Cf DW_OP_abs
10476.br
10477The
10478.Cf DW_OP_abs
10479operation pops the top stack entry and pushes its absolute value.
10480.LI
10481.Cf DW_OP_and
10482.br
10483The
10484.Cf DW_OP_and
10485operation pops the top two stack values, performs a bitwise \fIand\fP
10486operation on the two, and pushes the result.
10487.LI
10488.Cf DW_OP_div
10489.br
10490The
10491.Cf DW_OP_div
10492operation pops the top two stack values, divides the former second entry
10493by the former top of the stack
10494using signed division,
10495and pushes the result.
10496.LI
10497.Cf DW_OP_minus
10498.br
10499The
10500.Cf DW_OP_minus
10501operation pops the top two stack values, subtracts the former top of the stack
10502from the former second entry, and pushes the result.
10503.LI
10504.Cf DW_OP_mod
10505.br
10506The
10507.Cf DW_OP_mod
10508operation pops the top two stack values and pushes the result of the
10509calculation: former second stack entry modulo the former top of the
10510stack.
10511.LI
10512.Cf DW_OP_mul
10513.br
10514The
10515.Cf DW_OP_mul
10516operation pops the top two stack entries, multiplies them together,
10517and pushes the result.
10518.LI
10519.Cf DW_OP_neg
10520.br
10521The
10522.Cf DW_OP_neg
10523operation pops the top stack entry, and pushes its negation.
10524.LI
10525.Cf DW_OP_not
10526.br
10527The
10528.Cf DW_OP_not
10529operation pops the top stack entry, and pushes its bitwise complement.
10530.LI
10531.Cf DW_OP_or
10532.br
10533The
10534.Cf DW_OP_or
10535operation pops the top two stack entries, performs a bitwise \fIor\fP
10536operation on the two, and pushes the result.
10537.LI
10538.Cf DW_OP_plus
10539.br
10540The
10541.Cf DW_OP_plus
10542operation pops the top two stack entries, adds them together,
10543and pushes the result.
10544.LI
10545.Cf DW_OP_plus_uconst
10546.br
10547The
10548.Cf DW_OP_plus_uconst
10549operation pops the top stack entry, adds it to the unsigned LEB128
10550constant operand and pushes the result.
10551.I
10552This operation is supplied specifically to be able to encode more field
10553offsets in two bytes than can be done with "\f(CWDW_OP_lit\fP\fIn\fP\f(CW DW_OP_add\fP".
10554.R
10555.LI
10556.Cf DW_OP_shl
10557.br
10558The
10559.Cf DW_OP_shl
10560operation pops the top two stack entries, shifts the former second
10561entry left by the number of bits specified by the former top of
10562the stack, and pushes the result.
10563.LI
10564.Cf DW_OP_shr
10565.br
10566The
10567.Cf DW_OP_shr
10568operation pops the top two stack entries, shifts the former second
10569entry right (logically) by the number of bits specified by the former top of
10570the stack, and pushes the result.
10571.LI
10572.Cf DW_OP_shra
10573.br
10574The
10575.Cf DW_OP_shra
10576operation pops the top two stack entries, shifts the former second
10577entry right (arithmetically) by the number of bits specified by the former top of
10578the stack, and pushes the result.
10579.LI
10580.Cf DW_OP_xor
10581.br
10582The
10583.Cf DW_OP_xor
10584operation pops the top two stack entries, performs the logical
10585\fIexclusive-or\fP operation on the two, and pushes the result.
10586.LE
10587.H 4 "Control Flow Operations"
10588.IX locations, control flow operations
10589The following operations provide simple control of the flow of a location
10590expression.
10591.AL
10592.LI
10593Relational operators
10594.br
10595The six relational operators each pops the top two stack values,
10596compares the former top of the stack with the former second entry,
10597and pushes the constant value 1 onto the stack if the result of the
10598operation is true or the constant value 0 if the result of the operation
10599is false.  The comparisons are done as signed operations.  The six
10600operators are
10601.Cf DW_OP_le
10602(less than or equal to),
10603.Cf DW_OP_ge
10604(greater than or equal to),
10605.Cf DW_OP_eq
10606(equal to),
10607.Cf DW_OP_lt
10608(less than),
10609.Cf DW_OP_gt
10610(greater than) and
10611.Cf DW_OP_ne
10612(not equal to).
10613.LI
10614.Cf DW_OP_skip
10615.br
10616.Cf DW_OP_skip
10617is an unconditional branch.  Its
10618single operand is a 2-byte signed integer constant.
10619The 2-byte constant is the number of bytes of the location
10620expression to skip from the current operation, beginning after the
106212-byte constant.
10622.LI
10623.Cf DW_OP_bra
10624.br
10625.Cf DW_OP_bra
10626is a conditional branch.  Its
10627single operand is a 2-byte signed integer constant.
10628This operation pops the top of stack.  If the value
10629popped is not the constant 0, the 2-byte constant operand is the number
10630of bytes of the location
10631expression to skip from the current operation, beginning after the
106322-byte constant.
10633.LE
10634.H 4 "Special Operations"
10635.IX locations, special operations
10636There are two special operations currently defined:
10637.AL
10638.LI
10639.Cf DW_OP_piece
10640.br
10641.I
10642Many compilers store a single variable in sets of registers, or store
10643a variable partially in memory and partially in registers.
10644.Cf DW_OP_piece
10645provides a way of describing how large a part of a variable
10646a particular addressing expression refers to.
10647.R
10648.P
10649.Cf DW_OP_piece
10650takes a single argument which is an unsigned LEB128 number.  The number
10651describes the size in bytes of the piece of the object referenced
10652by the addressing expression whose result is at the top of
10653the stack.
10654.LI
10655.Cf DW_OP_nop
10656.br
10657The
10658.Cf DW_OP_nop
10659operation is a place holder.  It has no effect on the location stack or
10660any of its values.
10661.LE
10662.H 3 "Sample Stack Operations"
10663.IX locations, examples
10664.I
10665The stack operations defined in section 2.4.3.3 are fairly
10666.IX locations, stack
10667conventional, but the following examples illustrate their behavior
10668graphically.
10669.R
10670.DS
10671.TS
10672box expand center tab(;);
10673l s l l s
10674lf(CW) lf(CW) lf(CW) lf(CW) lf(CW)
10675.
10676Before;Operation;After;
10677_
106780;17;DW_OP_dup;0;17
106791;29;;1;17
106802;1000;;2;29
10681;;;3;1000
10682_
106830;17;DW_OP_drop;0;29
106841;29;;1;1000
106852;1000;;;;
10686_
106870;17;DW_OP_pick 2;0;1000
106881;29;;1;17
106892;1000;;2;29
10690;;;3;1000
10691_
106920;17;DW_OP_over;0;29
106931;29;;1;17
106942;1000;;2;29
10695;;;3;1000
10696_
106970;17;DW_OP_swap;0;29
106981;29;;1;17
106992;1000;;2;1000
10700_
107010;17;DW_OP_rot;0;29
107021;29;;1;1000
107032;1000;;2;17
10704.TE
10705.DE
10706.H 3 "Example Location Expressions"
10707.I
10708.IX locations, examples
10709The addressing expression represented by a location expression,
10710if evaluated, generates the
10711runtime address of the value of a symbol except where the
10712.Cf DW_OP_reg n,
10713or
10714.Cf DW_OP_regx
10715operations are used.
10716.P
10717Here are some examples of how location operations are used to form location
10718expressions:
10719.R
10720.DS
10721\f(CWDW_OP_reg3\fI
10722	The value is in register 3.
10723
10724\f(CWDW_OP_regx 54\fI
10725	The value is in register 54.
10726
10727\f(CWDW_OP_addr 0x80d0045c\fI
10728	The value of a static variable is
10729	at machine address 0x80d0045c.
10730
10731\f(CWDW_OP_breg11 44\fI
10732	Add 44 to the value in
10733	register 11 to get the address of an
10734	automatic variable instance.
10735
10736\f(CWDW_OP_fbreg -50\fI
10737	Given an \f(CWDW_AT_frame_base\fI value of
10738	"\f(CWOPBREG31 64\fI," this example
10739	computes the address of a local variable
10740	that is -50 bytes from a logical frame
10741	pointer that is computed by adding
10742	64 to the current stack pointer (register 31).
10743
10744\f(CWDW_OP_bregx 54 32 DW_OP_deref\fI
10745	A call-by-reference parameter
10746	whose address is in the
10747	word 32 bytes from where register
10748	54 points.
10749
10750\f(CWDW_OP_plus_uconst 4\fI
10751	A structure member is four bytes
10752	from the start of the structure
10753	instance.  The base address is
10754	assumed to be already on the stack.
10755
10756\f(CWDW_OP_reg3 DW_OP_piece 4 DW_OP_reg10 DW_OP_piece 2\fI
10757	A variable whose first four bytes reside
10758	in register 3 and whose next two bytes
10759	reside in register 10.\fR
10760.DE
10761.H 3 "Location Lists"
10762.IX locations, lists
10763Location lists are used in place of location expressions whenever
10764the object whose location is being described can change location
10765during its lifetime.  Location lists are contained in a separate
10766object file section called
10767.Cf .debug_loc.
10768.IX \f(CW.debug_loc\fP %debugalo
10769A location list is indicated by a location
10770attribute whose value is represented as a
10771constant offset from the beginning of the
10772.Cf .debug_loc
10773section to the first byte of the list for the object in question.
10774.P
10775Each entry in a location list consists of:
10776.AL
10777.LI
10778A beginning address.  This address is relative to the base address
10779of the compilation unit referencing this location list.  It marks
10780the beginning of the address range over which the location is valid.
10781.LI
10782An ending address, again relative to the base address
10783of the compilation unit referencing this location list.  It marks
10784the first address past the end of the address range over
10785which the location is valid.
10786.LI
10787A location expression describing the location of the object over the
10788range specified by the beginning and end addresses.
10789.LE
10790.P
10791Address ranges may overlap.  When they do, they describe a situation
10792in which an object exists simultaneously in more than one place.
10793If all of the address ranges
10794in a given location list do not collectively cover the entire
10795range over which the object in question is defined, it is assumed
10796that the object is not available for the portion of the range that is not
10797covered.
10798.IX optimized code
10799.P
10800The end of any given location list is marked by a 0 for the beginning
10801address and a 0 for the end address; no location description is present.
10802A location list containing
10803only such a 0 entry describes an object that exists in the source
10804code but not in the executable program.
10805.H 2 "Types of Declarations"
10806.IX declarations, types of
10807Any debugging information entry describing a declaration that
10808has a type has a
10809.Cf DW_AT_type
10810attribute, whose value is a reference to another debugging
10811information entry.  The entry referenced may describe
10812.IX base types
10813.IX types, base
10814a base type, that is, a type that is not defined in terms
10815.IX user-defined types
10816.IX types, user-defined
10817of other data types, or it may describe a user-defined type,
10818such as an array, structure or enumeration.  Alternatively,
10819the entry referenced may describe a type modifier: constant,
10820packed, pointer, reference or volatile, which in turn will reference
10821another entry describing a type or type modifier (using a
10822.IX type modifiers
10823.IX types, modifiers
10824.IX types, packed
10825.IX types, constant
10826.IX types, pointer
10827.IX types, reference
10828.IX types, volatile
10829.Cf DW_AT_type
10830attribute of its own).  See section 5 for descriptions of
10831the entries describing base types, user-defined types and
10832type modifiers.
10833.H 2 "Accessibility of Declarations"
10834.I
10835.IX accessibility
10836.IX declarations, accessibility
10837Some languages, notably C++ and Ada, have the concept of
10838.IX C++ %caa
10839the accessibility of an object or of some other program entity.
10840The accessibility specifies which classes of other program objects
10841are permitted access to the object in question.
10842.R
10843.P
10844The accessibility of a declaration is represented by a
10845.Cf DW_AT_accessibility
10846attribute, whose value is a constant drawn from the set of codes
10847.nr aX \n(Fg+1
10848listed in Figure \n(aX.
10849.DF
10850.TS
10851box center;
10852lf(CW)
10853.
10854DW_ACCESS_public
10855DW_ACCESS_private
10856DW_ACCESS_protected
10857.TE
10858.FG "Accessibility codes"
10859.DE
10860.H 2 "Visibility of Declarations"
10861.I
10862.IX Modula2
10863.IX visibility
10864.IX declarations, visibility
10865Modula2 has the concept of the visibility of a declaration.
10866The visibility specifies which declarations are to be visible outside
10867of the module in which they are declared.
10868.R
10869.P
10870The visibility of a declaration is represented by a
10871.Cf DW_AT_visibility
10872attribute, whose value is a constant drawn from the set of codes
10873.nr aX \n(Fg+1
10874listed in Figure \n(aX.
10875.DF
10876.TS
10877box center;
10878lf(CW)
10879.
10880DW_VIS_local
10881DW_VIS_exported
10882DW_VIS_qualified
10883.TE
10884.FG "Visibility codes"
10885.DE
10886.H 2 "Virtuality of Declarations"
10887.I
10888.IX C++ %caa
10889.IX virtuality
10890.IX virtual functions
10891C++ provides for virtual and pure virtual structure or class
10892member functions and for virtual base classes.
10893.P
10894.R
10895The virtuality of a declaration is represented by a
10896.Cf DW_AT_virtuality
10897attribute, whose value is a constant drawn from the set of codes
10898.nr aX \n(Fg+1
10899listed in Figure \n(aX.
10900.DF
10901.TS
10902box center;
10903lf(CW)
10904.
10905DW_VIRTUALITY_none
10906DW_VIRTUALITY_virtual
10907DW_VIRTUALITY_pure_virtual
10908.TE
10909.FG "Virtuality codes"
10910.DE
10911.H 2 "Artificial Entries"
10912.I
10913.IX artificial entries
10914A compiler may wish to generate debugging information entries
10915for objects or types that were not actually declared
10916in the source of the application.  An example is a formal parameter
10917entry to represent the hidden
10918.Cf this
10919parameter that most C++ implementations pass as the first argument
10920to non-static member functions.
10921.R
10922.P
10923Any debugging information entry representing the declaration of an
10924object or type artificially generated by a compiler and
10925not explicitly declared by the source program may have a
10926.Cf DW_AT_artificial
10927attribute.  The value of this attribute is a flag.
10928.H 2 "Target-Specific Addressing Information"
10929.I
10930.IX segmented address space
10931.IX address space, segmented
10932In some systems, addresses are specified as offsets within a given
10933segment rather than as locations within a single flat address space.
10934.R
10935.P
10936Any debugging information entry that contains a description of the
10937location of an object or subroutine may have a
10938.Cf DW_AT_segment
10939attribute, whose value is a location description.  The description
10940evaluates to the segment value of the item being described.  If
10941the entry containing the
10942.Cf DW_AT_segment
10943attribute has a
10944.Cf DW_AT_low_pc
10945or
10946.Cf DW_AT_high_pc
10947attribute, or a location description that evaluates to an address,
10948.IX locations, descriptions
10949.IX addresses, offset portion
10950then those values represent the offset portion of the address
10951within the segment specified by
10952.Cf DW_AT_segment .
10953.P
10954If an entry has no
10955.Cf DW_AT_segment
10956attribute, it inherits the segment value from its parent entry.
10957If none of the entries in the chain of parents for this entry
10958back to its containing compilation unit entry have
10959.Cf DW_AT_segment
10960attributes, then the entry is assumed to exist within a flat
10961address space.  Similarly, if the entry has a
10962.IX flat address space
10963.IX address space, flat
10964.Cf DW_AT_segment
10965attribute containing an empty location description, that entry
10966is assumed to exist within a flat address space.
10967.P
10968.I
10969Some systems support different classes of addresses.  The address
10970class may affect the way a pointer is dereferenced or the way
10971a subroutine is called.
10972.P
10973.R
10974Any debugging information entry representing a pointer or reference
10975type or a subroutine or subroutine type may have a
10976.IX types, pointer
10977.IX types, reference
10978.IX subroutines
10979.IX subroutines, types
10980.Cf DW_AT_address_class
10981.IX addresses, class
10982attribute, whose value is a constant.  The set of permissible
10983values is specific to each target architecture.  The value
10984.Cf DW_ADDR_none ,
10985however, is common to all encodings, and means that no address class
10986has been specified.
10987.P
10988.I
10989For example, the Intel386\(tm processor might use the following
10990values:
10991.R
10992.DF
10993.TS
10994box center;
10995l l l
10996lf(CW) lf(CW) l
10997.
10998Name	Value	Meaning
10999_
11000DW_ADDR_none	0	no class specified
11001DW_ADDR_near16	1	16-bit offset, no segment
11002DW_ADDR_far16	2	16-bit offset, 16-bit segment
11003DW_ADDR_huge16	3	16-bit offset, 16-bit segment
11004DW_ADDR_near32	4	32-bit offset, no segment
11005DW_ADDR_far32	5	32-bit offset, 16-bit segment
11006.TE
11007.FG "Example address class codes"
11008.DE
11009.H 2 "Non-Defining Declarations"
11010.IX declarations, non-defining
11011.IX declarations, defining
11012A debugging information entry representing a program object or type
11013typically represents the defining declaration of that object or type.  In
11014certain contexts, however, a debugger might need information about a
11015declaration of a subroutine, object or type that is not also a
11016definition to evaluate an expression correctly.
11017.P
11018.I
11019As an example, consider the following fragment of C code:
11020.DS
11021\f(CWvoid myfunc()
11022{
11023        int     x;
11024        {
11025                extern float x;
11026                g(x);
11027        }
11028}\fP
11029.DE
11030.P
11031ANSI-C scoping rules require that the value of the variable \f(CWx\fP
11032passed to the function \f(CWg\fP is the value of the global variable
11033\f(CWx\fP rather than of the local version.
11034.R
11035.P
11036Debugging information entries that represent non-defining declarations
11037of a program object or type have a
11038.Cf DW_AT_declaration
11039attribute, whose value is a flag.
11040.H 2 "Declaration Coordinates"
11041.I
11042It is sometimes useful in a debugger to be able to associate a declaration
11043with its occurrence in the program source.
11044.P
11045.R
11046.IX declarations, coordinates
11047Any debugging information entry representing the declaration of
11048an object, module, subprogram or type may have
11049.Cf DW_AT_decl_file ,
11050.Cf DW_AT_decl_line
11051and
11052.Cf DW_AT_decl_column
11053attributes, each of whose value is a constant.
11054.P
11055The value of the
11056.Cf DW_AT_decl_file
11057attribute corresponds
11058to a file number from the statement information table for the compilation
11059.IX line number information
11060unit containing this debugging information entry and represents the
11061source file in which the declaration appeared (see section 6.2).
11062.IX source, files
11063The value 0 indicates that no source file has been specified.
11064.P
11065The value of the
11066.Cf DW_AT_decl_line
11067attribute represents the source line number at which the first
11068.IX source, lines
11069character of the identifier of the declared object appears.
11070The value 0 indicates that no source line has been specified.
11071.P
11072The value of the
11073.Cf DW_AT_decl_column
11074attribute represents the source column number at which the first
11075.IX source, columns
11076character of the identifier of the declared object appears.
11077The value 0 indicates that no column has been specified.
11078.H 2 "Identifier Names"
11079.IX identifiers, names
11080Any debugging information entry representing a program entity that
11081has been given a name may have a
11082.Cf DW_AT_name
11083attribute, whose value is a string representing the name as it appears
11084in the source program.  A debugging information entry containing
11085no name attribute, or containing a name attribute whose value consists
11086of a name containing a single null byte,
11087represents a program entity for which no name was given in the source.
11088.I
11089.P
11090Note that since the names of program objects
11091described by DWARF are the names as they appear in the source program,
11092implementations of language translators that use some form of mangled
11093name (as do many implementations of C++) should use the unmangled
11094.IX C++ %caa
11095form of the name in the DWARF
11096.Cf DW_AT_name
11097attribute, including the keyword
11098.Cf operator ,
11099if present.  Sequences of multiple whitespace characters may be compressed.
11100.R
11101.OP
11102.H 1 "PROGRAM SCOPE ENTRIES"
11103This section describes debugging information entries that relate
11104to different levels of program scope: compilation unit, module,
11105subprogram, and so on.  These entries may be thought of as
11106bounded by ranges of text addresses within the program.
11107.H 2   "Compilation Unit Entries"
11108An object file may be derived from one or more compilation units.  Each
11109such compilation unit will be described by a debugging information
11110entry with the tag \f(CWDW_TAG_compile_unit\fP.
11111.I
11112.P
11113A compilation unit typically represents the text and data contributed
11114.IX compilation units
11115to an executable by a single relocatable object file.  It may
11116be derived from several source files, including pre-processed ``include
11117files.''
11118.R
11119.P
11120The compilation unit entry may have the following attributes:
11121.AL
11122.LI
11123A
11124.Cf DW_AT_low_pc
11125attribute whose value is the
11126relocated address of the first machine instruction generated for that
11127compilation unit.
11128.LI
11129A
11130.Cf DW_AT_high_pc
11131attribute whose value is the
11132relocated address of the first location
11133past the last machine instruction generated for that compilation unit.
11134.P
11135.I
11136The address may be beyond the last valid instruction in the executable,
11137of course, for this and other similar attributes.
11138.R
11139.P
11140The presence of low and high pc attributes in a compilation unit entry
11141imply that the code generated for that compilation unit is
11142contiguous and exists totally within the boundaries specified
11143by those two attributes.  If that is not the case, no low
11144and high pc attributes should be produced.
11145.IX address space, contiguous
11146.LI
11147A
11148.Cf DW_AT_name
11149attribute whose value is a
11150null-terminated string containing the full or relative path name of
11151the primary source file from which the compilation unit was derived.
11152.IX source, files
11153.LI
11154A
11155.Cf DW_AT_language
11156attribute whose constant value is
11157.IX languages
11158a code indicating the source language of the compilation unit.
11159.nr aX \n(Fg+1
11160The set of language names and their meanings are
11161given in Figure \n(aX.
11162.DF
11163.TS
11164box center;
11165lf(CW) lf(R)
11166.
11167DW_LANG_C	Non-ANSI C, such as K&R
11168DW_LANG_C89	ISO/ANSI C
11169DW_LANG_C_plus_plus	C++
11170DW_LANG_Fortran77	FORTRAN77
11171DW_LANG_Fortran90	Fortran90
11172DW_LANG_Modula2	Modula2
11173DW_LANG_Pascal83	ISO/ANSI Pascal
11174.TE
11175.FG "Language names"
11176.DE
11177.LI
11178A
11179.Cf DW_AT_stmt_list
11180attribute whose value is a reference to
11181line number information for this compilation unit.
11182.IX line number information
11183.P
11184This information is placed in a separate object file section from the debugging
11185information entries themselves.  The value of the statement list attribute
11186is the offset in the \f(CW.debug_line\fP section of the first byte of the
11187line number information for this compilation unit.  See section 6.2.
11188.LI
11189A
11190.Cf DW_AT_macro_info
11191attribute whose value is a reference to the macro information for this
11192compilation unit.
11193.IX macro information
11194.P
11195This information is placed in a separate object file section from the debugging
11196information entries themselves.  The value of the macro information attribute
11197is the offset in the \f(CW.debug_macinfo\fP section of the first byte of the
11198macro information for this compilation unit.  See section 6.3.
11199.LI
11200A
11201.Cf DW_AT_comp_dir
11202attribute whose value is a null-terminated string containing
11203the current working directory of the compilation command that
11204produced this compilation unit in whatever form makes sense
11205for the host system.
11206.P
11207.I
11208The suggested form for the value of the \f(CWDW_AT_comp_dir\fP
11209attribute on \*(aX systems is ``hostname\f(CW:\fPpathname''.  If no
11210hostname is available, the suggested form is ``\f(CW:\fPpathname''.
11211.R
11212.LI
11213A
11214.Cf DW_AT_producer
11215attribute whose value is a null-terminated string containing information
11216about the compiler that produced the compilation unit.  The
11217actual contents of the string will be specific to each producer,
11218but should begin with the name of the compiler vendor or some
11219other identifying character sequence that should avoid
11220confusion with other producer values.
11221.LI
11222A
11223.Cf DW_AT_identifier_case
11224.IX identifiers, case
11225attribute whose constant value is a code describing the treatment of
11226identifiers within this compilation unit.  The set of identifier case
11227.nr aX \n(Fg+1
11228codes is given in Figure \n(aX.
11229.DF
11230.TS
11231box center;
11232lf(CW)
11233.
11234DW_ID_case_sensitive
11235DW_ID_up_case
11236DW_ID_down_case
11237DW_ID_case_insensitive
11238.TE
11239.FG "Identifier case codes"
11240.DE
11241.P
11242.Cf DW_ID_case_sensitive
11243is the default for all compilation units that do not have this attribute.
11244It indicates that names given as the values of
11245.Cf DW_AT_name
11246attributes in debugging information entries for the compilation unit
11247reflect the names as they appear in the source program.
11248The debugger should be sensitive to the case of identifier names
11249when doing identifier lookups.
11250.P
11251.Cf DW_ID_up_case
11252means that the producer of the debugging information for this compilation
11253unit converted all source names to upper case.  The values of the
11254name attributes may not reflect the names as they appear in the source
11255program.  The debugger should convert all names to upper case
11256when doing lookups.
11257.P
11258.Cf DW_ID_down_case
11259means that the producer of the debugging information for this compilation
11260unit converted all source names to lower case.  The values of the
11261name attributes may not reflect the names as they appear in the source
11262program.  The debugger should convert all names to lower case when
11263doing lookups.
11264.P
11265.Cf DW_ID_case_insensitive
11266means that the values of the name attributes reflect the names
11267as they appear in the source program but that a case insensitive
11268lookup should be used to access those names.
11269.LI
11270A
11271.Cf DW_AT_base_types
11272.IX base types
11273.IX types, base
11274attribute whose value is a reference.  This attribute points to
11275a debugging information entry representing another compilation
11276unit.  It may be used to specify the compilation unit containing
11277the base type entries used by entries in the current compilation
11278unit (see section 5.1).
11279.P
11280.I
11281This attribute provides a consumer a way to find the definition
11282of base types for a compilation unit that does not itself
11283contain such definitions.  This allows a consumer, for example,
11284to interpret a type conversion to a base type correctly.
11285.R
11286.LE
11287.R
11288.P
11289A compilation unit entry
11290owns debugging information entries that represent the declarations made in
11291the corresponding compilation unit.
11292.H 2 "Module Entries"
11293.I
11294Several languages have the concept of a ``module.''
11295.IX modules
11296.P
11297.R
11298A module is
11299represented by a debugging information entry with the tag
11300.Cf DW_TAG_module .
11301Module entries may own other debugging information entries describing
11302program entities whose declaration scopes end at the end of the module
11303itself.
11304.P
11305If the module has a name, the module entry has a
11306.Cf DW_AT_name
11307attribute whose
11308value is a null-terminated string containing the module name as it appears
11309in the source program.
11310.P
11311If the module contains initialization code, the module entry
11312has a
11313.Cf DW_AT_low_pc
11314attribute whose value is the
11315relocated address of the first machine instruction generated for that
11316initialization code.  It also has a
11317.Cf DW_AT_high_pc
11318attribute whose value is
11319the relocated address of the first location past the last machine
11320instruction generated for the initialization code.
11321.P
11322If the module has been assigned a priority, it may have a
11323.Cf DW_AT_priority
11324attribute.  The value of this attribute is a reference to another
11325.IX modules, priority
11326debugging information entry describing a variable with a constant
11327value.  The value of this variable is the actual constant
11328value of the module's priority, represented as it would be on the
11329target architecture.
11330.P
11331.I
11332.IX Modula2
11333.IX modules, definition
11334A Modula2 definition module may be represented by a module entry
11335containing a
11336.Cf DW_AT_declaration
11337attribute.
11338.R
11339.H 2   "Subroutine and Entry Point Entries"
11340.IX subroutines
11341.IX entry points
11342The following tags exist to describe debugging information
11343entries for subroutines and entry points:
11344.VL 30
11345.LI \f(CWDW_TAG_subprogram\fP
11346A global or file static subroutine or function.
11347.LI \f(CWDW_TAG_inlined_subroutine\fP
11348A particular inlined instance of a subroutine or function.
11349.LI \f(CWDW_TAG_entry_point\fP
11350A Fortran entry point.
11351.LE
11352.H 3 "General Subroutine and Entry Point Information"
11353The subroutine or entry point entry has a
11354.Cf DW_AT_name
11355attribute
11356whose value is a null-terminated string containing the subroutine or entry
11357point name as it appears in the source program.
11358.P
11359If the name of the subroutine described by an entry with the tag
11360.Cf DW_TAG_subprogram
11361is visible outside of its containing compilation unit, that
11362entry has a
11363.Cf DW_AT_external
11364attribute, whose value is a flag.
11365.IX declarations, external
11366.I
11367.P
11368.IX members, functions
11369.IX subroutines, members
11370Additional attributes for functions that are members of a class or
11371structure are described in section 5.5.5.
11372.P
11373A common debugger feature is to allow the debugger user to call a
11374subroutine within the subject program.  In certain cases, however,
11375the generated code for a subroutine will not obey the standard calling
11376conventions for the target architecture and will therefore not
11377.IX calling conventions
11378be safe to call from within a debugger.
11379.R
11380.P
11381A subroutine entry may contain a
11382.Cf DW_AT_calling_convention
11383attribute, whose value is a constant.  If this attribute is not
11384present, or its value is the constant
11385.Cf DW_CC_normal ,
11386then the subroutine may be safely called by obeying the ``standard''
11387calling conventions of the target architecture.  If the value of
11388the calling convention attribute is the constant
11389.Cf DW_CC_nocall ,
11390the subroutine does not obey standard calling conventions, and it
11391may not be safe for the debugger to call this subroutine.
11392.P
11393If the semantics of the language of the compilation unit
11394containing the subroutine entry distinguishes between ordinary subroutines
11395.IX main programs
11396and subroutines that can serve as the ``main program,'' that is, subroutines
11397that cannot be called directly following the ordinary calling conventions,
11398then the debugging information entry for such a subroutine may have a
11399calling convention attribute whose value is the constant
11400.Cf DW_CC_program .
11401.P
11402.I
11403The
11404.Cf DW_CC_program
11405value is intended to support Fortran main programs.
11406It is not intended as a way of finding the entry address for the program.
11407.R
11408.H 3 "Subroutine and Entry Point Return Types"
11409.IX subroutines, return types
11410.IX entry points, return types
11411If the subroutine or entry point is a function that returns a value, then
11412its debugging information entry has a
11413.Cf DW_AT_type
11414attribute to denote the type returned by that function.
11415.P
11416.I
11417Debugging information entries for C
11418.Cf void
11419.IX C %c
11420functions should not have an attribute for the return type.
11421.P
11422In ANSI-C there is a difference between the types of functions
11423declared using function prototype style declarations and those
11424declared using non-prototype declarations.
11425.IX subroutines, prototypes
11426.P
11427.R
11428A subroutine entry
11429declared with a function prototype style declaration may have a
11430.Cf DW_AT_prototyped
11431attribute, whose value is a flag.
11432.H 3 "Subroutine and Entry Point Locations"
11433.IX subroutines, locations
11434.IX entry points, locations
11435A subroutine entry has a
11436.Cf DW_AT_low_pc
11437attribute whose value is the relocated address of the first machine instruction
11438generated for the subroutine.
11439It also has a
11440.Cf DW_AT_high_pc
11441attribute whose value is the relocated address of the
11442first location past the last machine instruction generated
11443for the subroutine.
11444.P
11445.I
11446Note that for the low and high pc attributes to have meaning, DWARF
11447makes the assumption that the code for a single subroutine is allocated
11448in a single contiguous block of memory.
11449.IX address space, contiguous
11450.R
11451.P
11452An entry point has a
11453.Cf DW_AT_low_pc
11454attribute whose value is the relocated address of the first machine instruction
11455generated for the entry point.
11456.P
11457Subroutines and entry points may also have
11458.Cf DW_AT_segment
11459and
11460.Cf DW_AT_address_class
11461.IX segmented address space
11462.IX address space, segmented
11463.IX addresses, class
11464attributes, as appropriate, to specify which segments the code
11465for the subroutine resides in and the addressing mode to be used
11466in calling that subroutine.
11467.P
11468A subroutine entry representing a subroutine declaration
11469that is not also a definition does not have low and high pc attributes.
11470.IX declarations, non-defining
11471.H 3 "Declarations Owned by Subroutines and Entry Points"
11472.IX subroutines, declarations owned by
11473.IX entry points, declarations owned by
11474The declarations enclosed by a subroutine or entry point
11475are represented by debugging information entries that are
11476owned by the subroutine or entry point entry.
11477Entries representing the formal parameters of the subroutine or
11478entry point appear in
11479the same order as the corresponding declarations in the source program.
11480.IX attributes, ordering
11481.IX parameters, formal
11482.P
11483.I
11484There is no ordering requirement on entries for declarations that are
11485children of subroutine or entry point entries but that do not represent
11486formal parameters.  The formal parameter entries may be interspersed
11487with other entries used by formal parameter entries, such as type entries.
11488.R
11489.P
11490The unspecified parameters of a variable parameter list
11491.IX parameters, unspecified
11492are represented by a debugging information entry with the tag
11493.Cf DW_TAG_unspecified_parameters .
11494.P
11495The entry for a subroutine or entry point that includes a Fortran
11496.IX Fortran
11497.IX common blocks
11498common block has a child entry with the tag
11499.Cf DW_TAG_common_inclusion .
11500The common inclusion entry has a
11501.Cf DW_AT_common_reference
11502attribute whose value is a reference to the debugging entry for
11503the common block being included (see section 4.2).
11504.H 3 "Low-Level Information"
11505A subroutine or entry point entry may have a
11506.Cf DW_AT_return_addr
11507.IX subroutines, return addresses
11508attribute, whose value is a location description.
11509The location calculated is the place where the return address for
11510the subroutine or entry point is stored.
11511.P
11512A subroutine or entry point entry may also have a
11513.Cf DW_AT_frame_base
11514.IX subroutines, frame base
11515attribute, whose value is a location description that
11516computes the ``frame base'' for the subroutine or entry point.
11517.P
11518.I
11519The frame base for a procedure is typically an address fixed
11520relative to the first unit of storage allocated for the procedure's
11521stack frame.  The
11522.Cf DW_AT_frame_base
11523attribute can be used in several ways:
11524.AL
11525.LI
11526In procedures that need location lists to locate local variables, the
11527.Cf DW_AT_frame_base
11528can hold the needed location list, while all variables'
11529location descriptions can be simpler location expressions involving the frame
11530base.
11531.LI
11532It can be used as a key in resolving "up-level" addressing with nested
11533routines.  (See
11534.Cf DW_AT_static_link ,
11535below)
11536.LE
11537.P
11538Some languages support nested subroutines.  In such languages, it is possible
11539.IX subroutines, nested
11540to reference the local variables of an outer subroutine from within
11541an inner subroutine.  The
11542.Cf DW_AT_static_link
11543and
11544.Cf DW_AT_frame_base
11545attributes allow debuggers to support this same kind of referencing.
11546.R
11547.P
11548If a subroutine or entry point is nested, it may have a
11549.Cf DW_AT_static_link
11550attribute, whose value is a location description that
11551computes the frame base of the relevant instance of the subroutine
11552that immediately encloses the subroutine or entry point.
11553.P
11554In the context of supporting nested subroutines, the
11555.Cf DW_AT_frame_base
11556attribute value should obey the following constraints:
11557.AL
11558.LI
11559It should compute a value that does not change during the life of the procedure,
11560and
11561.LI
11562The computed value should be unique among instances of the same subroutine.
11563(For typical
11564.Cf DW_AT_frame_base
11565use, this means that a recursive
11566subroutine's stack frame must have non-zero size.)
11567.LE
11568.P
11569.I
11570If a debugger is attempting to resolve an up-level reference to a variable, it
11571uses the nesting structure of DWARF to determine which subroutine is the lexical
11572parent and the
11573.Cf DW_AT_static_link
11574value to identify the appropriate active frame
11575of the parent.  It can then attempt to find the reference within the context
11576of the parent.
11577.R
11578.H 3 "Types Thrown by Exceptions"
11579.I
11580In C++ a subroutine may declare a set of types for which
11581.IX C++ %caa
11582.IX exceptions
11583that subroutine may generate or ``throw'' an exception.
11584.P
11585.R
11586If a subroutine explicitly declares that it may throw an
11587exception for one or more types, each such type is
11588represented by a debugging information entry with the tag
11589.Cf DW_TAG_thrown_type .
11590Each such entry is a child of the entry representing the
11591subroutine that may throw this type.  All thrown type entries
11592should follow all entries representing the formal parameters
11593of the subroutine and precede all entries representing the
11594local variables or lexical blocks contained in the subroutine.
11595Each thrown type entry contains a
11596.Cf DW_AT_type
11597attribute, whose value is a reference to an entry describing
11598the type of the exception that may be thrown.
11599.H 3 "Function Template Instantiations"
11600.I
11601.IX C++ %caa
11602.IX templates
11603In C++ a function template is a generic
11604definition of a function that
11605is instantiated differently when called with values
11606of different types.  DWARF does not represent the generic
11607template definition, but does represent each instantiation.
11608.R
11609.P
11610A template instantiation is represented by a debugging information
11611entry with the tag
11612.Cf DW_TAG_subprogram .
11613With three exceptions,
11614such an entry will contain the same attributes and have the same
11615types of child entries as would an entry for a subroutine
11616defined explicitly
11617using the instantiation types.  The exceptions are:
11618.AL
11619.LI
11620Each formal parameterized type declaration appearing in the
11621template definition is represented by a debugging information entry
11622with the tag
11623.Cf DW_TAG_template_type_parameter .
11624Each such entry has a
11625.Cf DW_AT_name
11626attribute, whose value is a null-terminated
11627string containing the name of the formal type parameter as it
11628appears in the source program.  The template type parameter
11629entry also has a
11630.Cf DW_AT_type
11631attribute describing the actual type by
11632which the formal is replaced for this instantiation.
11633All template type parameter entries should appear before
11634the entries describing the instantiated formal parameters
11635to the function.
11636.LI
11637.IX compilation units
11638If the compiler has generated a special compilation unit
11639to hold the template instantiation and that compilation unit
11640has a different name
11641from the compilation unit containing the template definition,
11642the name attribute for the debugging entry representing
11643that compilation unit should be empty or omitted.
11644.LI
11645.IX declarations, coordinates
11646If the subprogram entry representing the template instantiation
11647or any of its child entries
11648contain declaration coordinate attributes, those attributes
11649should refer to the source for the template definition, not
11650to any source generated artificially by the compiler for this
11651instantiation.
11652.LE
11653.H 3 "Inline Subroutines"
11654.IX subroutines, inline
11655A declaration or a definition of an inlinable subroutine
11656is represented by a debugging information entry with the tag
11657.Cf DW_TAG_subprogram .
11658The entry for a subroutine that is explicitly declared
11659to be available for inline expansion or that was expanded inline
11660implicitly by the compiler has a
11661.Cf DW_AT_inline
11662attribute whose value is a constant.  The set of values
11663for the
11664.Cf DW_AT_inline
11665.nr aX \n(Fg+1
11666attribute is given in Figure \n(aX.
11667.DF
11668.TS
11669box center;
11670l l
11671lf(CW) l
11672.
11673Name	Meaning
11674_
11675DW_INL_not_inlined	Not declared inline nor inlined by the compiler
11676DW_INL_inlined	Not declared inline but inlined by the compiler
11677DW_INL_declared_not_inlined	Declared inline but not inlined by the compiler
11678DW_INL_declared_inlined	Declared inline and inlined by the compiler
11679.TE
11680.FG "Inline codes"
11681.DE
11682.H 4 "Abstract Instances"
11683For the remainder of this discussion,
11684any debugging information entry that is owned (either directly or
11685indirectly) by a debugging information entry that contains the
11686.Cf DW_AT_inline
11687attribute will be referred to as an ``abstract instance entry.''
11688Any subroutine entry that contains a
11689.Cf DW_AT_inline
11690attribute will be known as an ``abstract instance root.''
11691Any set of abstract instance entries that are all children (either directly
11692or indirectly) of some abstract instance root, together with the root itself,
11693will be known as an ``abstract instance tree.''
11694.P
11695A debugging information entry that is a member of an abstract instance
11696tree should not contain a
11697.Cf DW_AT_high_pc ,
11698.Cf DW_AT_low_pc ,
11699.Cf DW_AT_location ,
11700.Cf DW_AT_return_addr ,
11701.Cf DW_AT_start_scope ,
11702or
11703.Cf DW_AT_segment
11704attribute.
11705.P
11706.I
11707It would not make sense to put these attributes
11708into abstract instance entries since
11709such entries do not represent actual (concrete) instances and thus
11710do not actually exist at run-time.
11711.P
11712.R
11713The rules for the relative location of entries belonging to abstract instance
11714trees are exactly
11715the same as for other similar types of entries that are not abstract.
11716Specifically, the rule that requires that an entry representing a
11717declaration be a direct child of the entry representing the scope of
11718the declaration applies equally to both abstract and
11719non-abstract entries.  Also, the ordering rules for formal parameter entries,
11720member entries, and so on, all apply regardless of whether or not a given entry
11721is abstract.
11722.H 4 "Concrete Inlined Instances"
11723.IX subroutines, inlined
11724Each inline expansion of an inlinable subroutine is represented
11725by a debugging information entry with the tag
11726.Cf DW_TAG_inlined_subroutine .
11727Each such entry should be a direct child of the entry that represents the
11728scope within which the inlining occurs.
11729.P
11730Each inlined subroutine entry contains a
11731.Cf DW_AT_low_pc
11732attribute, representing the address of the first
11733instruction associated with the given inline
11734expansion.   Each inlined subroutine entry also contains a
11735.Cf DW_AT_high_pc
11736attribute, representing the
11737address of the first location past the last instruction associated with
11738the inline expansion.
11739.P
11740For the remainder of this discussion,
11741any debugging information entry that is owned (either directly or indirectly)
11742by a debugging information entry with the tag
11743.Cf DW_TAG_inlined_subroutine
11744will be referred to as a ``concrete inlined instance entry.''
11745Any entry that has the tag
11746.Cf DW_TAG_inlined_subroutine
11747will be known as
11748a ``concrete inlined instance root.''
11749Any set of concrete inlined instance entries that are all children (either
11750directly or indirectly) of some concrete inlined instance root, together
11751with the root itself, will be known as a ``concrete inlined instance
11752tree.''
11753.P
11754Each concrete inlined instance tree is uniquely associated with one (and
11755only one) abstract instance tree.
11756.P
11757.I
11758Note, however, that the reverse is not true.  Any given abstract instance
11759tree may be associated with several different concrete inlined instance
11760trees, or may even be associated with zero concrete inlined instance
11761trees.
11762.P
11763.R
11764Also, each separate entry within a given concrete inlined instance tree is
11765uniquely associated with one particular entry in the associated abstract
11766instance tree.  In other words, there is a one-to-one mapping from entries
11767in a given concrete inlined instance tree to the entries in the associated
11768abstract instance tree.
11769.P
11770.I
11771Note, however, that the reverse is not true.  A given abstract instance
11772tree that is associated with a given concrete inlined instance tree
11773may (and quite probably will) contain more entries than the associated
11774concrete inlined instance tree (see below).
11775.R
11776.P
11777Concrete inlined instance entries do not have most of the attributes (except
11778for
11779.Cf DW_AT_low_pc ,
11780.Cf DW_AT_high_pc ,
11781.Cf DW_AT_location ,
11782.Cf DW_AT_return_addr ,
11783.Cf DW_AT_start_scope
11784and
11785.Cf DW_AT_segment )
11786that such entries
11787would otherwise normally have.  In place of these omitted attributes,
11788each concrete inlined instance entry has a
11789.Cf DW_AT_abstract_origin
11790attribute that
11791may be used to obtain the missing information (indirectly) from
11792the associated abstract instance entry.  The value of the abstract
11793origin attribute is a reference to the associated abstract instance entry.
11794.P
11795For each pair of entries that are associated via a
11796.Cf DW_AT_abstract_origin
11797attribute, both members of the pair will have the same tag.  So, for
11798example, an entry with the tag
11799.Cf DW_TAG_local_variable
11800can only be associated
11801with another entry that also has the tag
11802.Cf DW_TAG_local_variable.
11803The only exception to this rule is that the root of a concrete
11804instance tree (which must always have the tag
11805.Cf DW_TAG_inlined_subroutine )
11806can only be associated with the root of its associated abstract
11807instance tree (which must have the tag
11808.Cf DW_TAG_subprogram ).
11809.P
11810In general, the structure and content of any given concrete
11811instance tree will be directly analogous to the structure and content
11812of its associated abstract instance tree.
11813There are two exceptions to this general rule however.
11814.AL
11815.LI
11816.IX anonymous types
11817No entries representing anonymous types are ever made a part
11818of any concrete instance inlined tree.
11819.LI
11820.IX members
11821No entries representing members of structure, union or class
11822types are ever made a part of any concrete inlined instance tree.
11823.LE
11824.P
11825.I
11826Entries that represent members and anonymous types are omitted from concrete
11827inlined instance trees because they would simply be redundant duplicates of
11828the corresponding entries in the associated abstract instance trees.  If
11829any entry within a concrete inlined instance tree needs to refer to an
11830anonymous type that was declared within the scope of the
11831relevant inline function, the reference should simply refer to the abstract
11832instance entry for the given anonymous type.
11833.R
11834.P
11835.IX declarations, coordinates
11836If an entry within a concrete inlined instance tree contains
11837attributes describing the declaration coordinates of
11838that entry,
11839then those attributes should refer to the file, line and column
11840of the original declaration of the subroutine, not to the
11841point at which it was inlined.
11842.H 4 "Out-of-Line Instances of Inline Subroutines"
11843.IX subroutines, out-of-line
11844Under some conditions, compilers may need to generate concrete executable
11845instances of inline subroutines other than at points where those subroutines
11846are actually called.  For the remainder of this discussion,
11847such concrete instances of inline subroutines will
11848be referred to as ``concrete out-of-line instances.''
11849.P
11850.I
11851In C++, for example, taking the address of a function declared to be inline
11852can necessitate the generation of a concrete out-of-line
11853instance of the given function.
11854.P
11855.R
11856The DWARF representation of a concrete out-of-line instance of an inline
11857subroutine is essentially the same as for a concrete inlined instance of
11858that subroutine (as described in the preceding section).  The representation
11859of such a concrete out-of-line instance makes use of
11860.Cf DW_AT_abstract_origin
11861attributes in exactly the same way as they are used for a concrete inlined
11862instance (that is, as references to corresponding entries
11863within the associated
11864abstract instance tree) and, as for concrete instance trees, the
11865entries for anonymous types and for all members are omitted.
11866.P
11867The differences between the DWARF representation of a concrete out-of-line
11868instance of a given subroutine and the representation of a concrete inlined
11869instance of that same subroutine are as follows:
11870.AL
11871.LI
11872The root entry for a concrete out-of-line instance of a given
11873inline subroutine has the same tag as does its associated
11874(abstract) inline subroutine entry (that is, it does not have the
11875tag
11876.Cf DW_TAG_inlined_subroutine ).
11877.LI
11878The root entry for a concrete out-of-line instance tree is
11879always directly owned by the same parent entry that
11880also owns the root entry of the associated abstract instance.
11881.LE
11882.H 2   "Lexical Block Entries"
11883.I
11884.IX lexical blocks
11885A lexical block is a bracketed sequence of source statements that may
11886contain any number of declarations.  In some languages (C and C++)
11887blocks can be nested within other blocks to any depth.
11888.P
11889.R
11890A lexical block is represented by a debugging information entry
11891with the tag
11892.Cf DW_TAG_lexical_block .
11893.P
11894The lexical block entry has a
11895.Cf DW_AT_low_pc
11896attribute whose value is the
11897relocated address of the first machine instruction generated for the lexical
11898block.
11899The lexical block entry also has a
11900.Cf DW_AT_high_pc
11901attribute whose value is the
11902relocated address of the first location
11903past the last machine instruction generated for the lexical block.
11904.P
11905If a name has been given to the lexical block in the source program,
11906then the corresponding lexical block entry has a
11907.Cf DW_AT_name
11908attribute
11909whose value is a null-terminated string containing the name of the
11910lexical block as it appears in the source program.
11911.P
11912.I
11913This is not the
11914same as a C or C++ label (see below).
11915.R
11916.P
11917The lexical block entry owns debugging information entries that
11918describe the declarations within that lexical block.
11919There is one such debugging information entry for each local declaration
11920of an identifier or inner lexical block.
11921.H 2   "Label Entries"
11922.I
11923.IX labels
11924A label is a way of identifying a source statement.  A labeled statement
11925is usually the target of one or more ``go to'' statements.
11926.P
11927.R
11928A label is represented by a debugging information entry
11929with the tag
11930.Cf DW_TAG_label .
11931The entry for a label should be owned by
11932the debugging information entry representing the scope within which the name
11933of the label could be legally referenced within the source program.
11934.P
11935The label entry has a
11936.Cf DW_AT_low_pc
11937attribute whose value is the
11938relocated address of the first machine instruction generated for the
11939statement identified by the label in the source program.
11940The label entry also has a
11941.Cf DW_AT_name
11942attribute
11943whose value is a null-terminated string containing the name of the
11944label as it appears in the source program.
11945.H 2 "With Statement Entries"
11946.I
11947.IX with statements
11948.IX Pascal
11949.IX Modula2
11950Both Pascal and Modula support the concept of a ``with'' statement.
11951The with statement specifies a sequence of executable statements
11952within which the fields of a record variable may be referenced, unqualified
11953by the name of the record variable.
11954.P
11955.R
11956A with statement is represented by a debugging information entry with
11957the tag
11958.Cf DW_TAG_with_stmt .
11959A with statement entry has a
11960.Cf DW_AT_low_pc
11961attribute whose value is the relocated
11962address of the first machine instruction generated for the body of
11963the with statement.  A with statement entry also has a
11964.Cf DW_AT_high_pc
11965attribute whose value is the relocated
11966address of the first location after the last machine instruction generated for the body of
11967the statement.
11968.P
11969The with statement entry has a
11970.Cf DW_AT_type
11971attribute, denoting
11972the type of record whose fields may be referenced without full qualification
11973within the body of the statement.  It also has a
11974.Cf DW_AT_location
11975attribute, describing how to find the base address
11976of the record object referenced within the body of the with statement.
11977.H 2 "Try and Catch Block Entries"
11978.I
11979.IX C++ %caa
11980.IX exceptions
11981.IX try blocks
11982.IX catch blocks
11983In C++ a lexical block may be designated as a ``catch block.''
11984A catch block is an exception handler that handles exceptions
11985thrown by an immediately preceding ``try block.''  A catch block
11986designates the type of the exception that it can handle.
11987.R
11988.P
11989A try block is represented by a debugging information entry
11990with the tag
11991.Cf DW_TAG_try_block .
11992A catch block is represented by a debugging information entry
11993with the tag
11994.Cf DW_TAG_catch_block .
11995Both try and catch block entries contain a
11996.Cf DW_AT_low_pc
11997attribute whose value is the
11998relocated address of the first machine instruction generated for that
11999block.  These entries also contain a
12000.Cf DW_AT_high_pc
12001attribute whose value is the
12002relocated address of the first location
12003past the last machine instruction generated for that block.
12004.P
12005Catch block entries have at least one child entry,
12006an entry representing the type of exception accepted
12007by that catch block.  This child entry will have one of the tags
12008.Cf DW_TAG_formal_parameter
12009or
12010.Cf DW_TAG_unspecified_parameters ,
12011.IX parameters, formal
12012.IX parameters, unspecified
12013and will have the same form as other parameter entries.
12014.P
12015The first sibling of each try block entry will be a catch block
12016entry.
12017.OP
12018.H 1 "DATA OBJECT AND OBJECT LIST ENTRIES"
12019This section presents the debugging information entries that
12020describe individual data objects: variables, parameters and
12021constants, and lists of those objects that may be grouped
12022in a single declaration, such as a common block.
12023.H 2   "Data Object Entries"
12024.IX variables
12025.IX parameters, formal
12026.IX constants
12027Program variables, formal parameters and constants are represented
12028by debugging information entries with the tags
12029.Cf DW_TAG_variable ,
12030.Cf DW_TAG_formal_parameter
12031and
12032.Cf DW_TAG_constant ,
12033respectively.
12034.P
12035.I
12036The tag
12037.Cf DW_TAG_constant
12038is used for languages that distinguish between variables
12039that may have constant value and true named constants.
12040.R
12041.P
12042The debugging information entry for a program variable, formal
12043parameter or constant may have the following attributes:
12044.AL
12045.LI
12046A
12047.Cf DW_AT_name
12048attribute whose value is a null-terminated
12049string containing the data object name as it appears in the source program.
12050.P
12051.IX anonymous unions
12052.IX unions, anonymous
12053.IX C++ %caa
12054If a variable entry describes a C++ anonymous union, the name
12055attribute is omitted or consists of a single zero byte.
12056.LI
12057If the name of a variable is visible outside of its enclosing
12058compilation unit, the variable entry has a
12059.Cf DW_AT_external
12060.IX declarations, external
12061attribute, whose value is a flag.
12062.I
12063.P
12064.IX members, static data
12065The definitions of C++ static data members
12066of structures or classes are represented by variable entries flagged
12067as external.
12068.IX C %c
12069.IX C++ %caa
12070Both file static and local variables in C and C++ are represented
12071by non-external variable entries.
12072.R
12073.LI
12074A
12075.Cf DW_AT_location
12076attribute, whose value describes the location of a variable or parameter
12077at run-time.
12078.P
12079.IX declarations, non-defining
12080A data object entry representing a non-defining declaration of the object
12081will not have a location attribute, and will have the
12082.Cf DW_AT_declaration
12083attribute.
12084.P
12085In a variable entry representing the definition of the variable
12086(that is, with no
12087.Cf DW_AT_declaration
12088attribute)
12089if no location attribute is present, or if
12090the location attribute is present but describes
12091a null entry (as described in section 2.4), the variable
12092is assumed to exist in the source code but not in the executable
12093program (but see number 9, below).
12094.IX optimized code
12095.P
12096The location of a variable may be further specified with a
12097.Cf DW_AT_segment
12098attribute, if appropriate.
12099.IX segmented address space
12100.IX address space, segmented
12101.LI
12102A
12103.Cf DW_AT_type
12104attribute describing the type of the variable, constant or formal
12105parameter.
12106.LI
12107.IX members, static data
12108.IX declarations, defining
12109If the variable entry represents the defining declaration for a C++ static
12110data member of a structure, class or union, the entry has a
12111.Cf DW_AT_specification
12112attribute, whose value is a reference to the debugging information
12113entry representing the declaration of this data member.  The
12114referenced entry will be a child of some class, structure or
12115union type entry.
12116.IX classes
12117.IX structures
12118.IX unions
12119.P
12120Variable entries containing the
12121.Cf DW_AT_specification
12122attribute do not need to duplicate information provided by the
12123declaration entry referenced by the specification attribute.
12124In particular, such variable entries do not need to contain
12125attributes for the name or type of the data member whose
12126definition they represent.
12127.LI
12128.I
12129Some languages distinguish between parameters whose value in the
12130calling function can be modified by the callee (variable parameters),
12131and parameters whose value in the calling function cannot be modified
12132by the callee (constant parameters).
12133.P
12134.R
12135If a formal parameter entry represents a parameter whose value
12136in the calling function may be modified by the callee, that entry
12137may have a
12138.Cf DW_AT_variable_parameter
12139attribute, whose value is a flag.  The absence of this attribute
12140implies that the parameter's value in the calling function cannot
12141be modified by the callee.
12142.IX parameters, variable
12143.LI
12144.I
12145Fortran90 has the concept of an optional parameter.
12146.IX Fortran90
12147.P
12148.R
12149.IX parameters, optional
12150If a parameter entry represents an optional parameter, it has a
12151.Cf DW_AT_is_optional
12152attribute, whose value is a flag.
12153.LI
12154.IX parameters, default value
12155A formal parameter entry describing a formal parameter that has a default
12156value may have a
12157.Cf DW_AT_default_value
12158attribute.  The value of this attribute is a reference to the
12159debugging information entry for a variable or subroutine.  The
12160default value of the parameter is the value of the variable (which
12161may be constant) or the value returned by the subroutine.  If the
12162value of the
12163.Cf DW_AT_default_value
12164attribute is 0, it means that no default value has been specified.
12165.LI
12166.IX constants
12167An entry describing a variable whose value is constant
12168and not represented by an object in the address space of the program,
12169or an entry describing a named constant,
12170does not have a location attribute.  Such entries have a
12171.Cf DW_AT_const_value
12172attribute, whose value may be a string or any of the constant
12173data or data block forms, as appropriate for the representation
12174of the variable's value.  The value of this attribute is the actual
12175constant value of the variable, represented as it would be
12176on the target architecture.
12177.LI
12178.IX scope
12179.IX declarations, scope
12180If the scope of an object begins sometime after the low pc value
12181for the scope most closely enclosing the object, the
12182object entry may have a
12183.Cf DW_AT_start_scope
12184attribute.  The value of this attribute is the offset in bytes of the beginning
12185of the scope for the object from the low pc value of the debugging
12186information entry that defines its scope.
12187.P
12188.I
12189The scope of a variable may begin somewhere in the middle of a lexical
12190block in a language that allows executable code in a
12191block before a variable declaration, or where one declaration
12192containing initialization code may change the scope of a subsequent
12193declaration.  For example, in the following C code:
12194.DS
12195\f(CWfloat x = 99.99;
12196
12197int myfunc()
12198{
12199	float f = x;
12200	float x = 88.99;
12201
12202	return 0;
12203}\fP
12204.DE
12205.P
12206ANSI-C scoping rules require that the value of the variable \f(CWx\fP
12207assigned to the variable \f(CWf\fP in the initialization sequence
12208is the value of the global variable \f(CWx\fP, rather than the local \f(CWx\fP,
12209because the scope of the local variable \f(CWx\fP only starts after the full
12210declarator for the local \f(CWx\fP.
12211.R
12212.LE
12213.P
12214.H 2 "Common Block Entries"
12215.IX common blocks
12216.IX Fortran
12217A Fortran common block may be described by a debugging information
12218entry with the tag
12219.Cf DW_TAG_common_block .
12220The common block entry has a
12221.Cf DW_AT_name
12222attribute whose value is a null-terminated
12223string containing the common block name as it appears in the source program.
12224It also has a
12225.Cf DW_AT_location
12226attribute whose value describes the location of the beginning of the
12227common block.  The common block entry owns debugging information
12228entries describing the variables contained within the common block.
12229.H 2 "Imported Declaration Entries"
12230.I
12231.IX declarations, imported
12232.IX imports
12233Some languages support the concept of importing into a given
12234module declarations made in a different module.
12235.R
12236.P
12237An imported declaration is represented by a debugging information
12238entry with the tag
12239.Cf DW_TAG_imported_declaration .
12240The entry for the imported declaration has a
12241.Cf DW_AT_name
12242attribute whose value
12243is a null-terminated string containing the name of the entity
12244whose declaration is being imported as it appears in the source
12245program.  The imported declaration entry also has a
12246.Cf DW_AT_import
12247attribute, whose value is a reference to the debugging information
12248entry representing the declaration that is being imported.
12249.H 2 "Namelist Entries"
12250.I
12251.IX namelists
12252.IX Fortran90
12253At least one language, Fortran90, has the concept of a namelist.
12254A namelist is an ordered list of the names of some set of declared objects.
12255The namelist object itself may be used as a replacement for the
12256list of names in various contexts.
12257.R
12258.P
12259A namelist is represented by a debugging information entry with
12260the tag
12261.Cf DW_TAG_namelist .
12262If the namelist itself has a name, the namelist entry has a
12263.Cf DW_AT_name
12264attribute, whose value is a null-terminated string containing the namelist's
12265name as it appears in the source program.
12266.P
12267Each name that is part of the namelist is represented by a debugging
12268information entry with the tag
12269.Cf DW_TAG_namelist_item .
12270Each such entry is a child of the namelist entry, and all of
12271the namelist item entries for a given namelist are ordered as were
12272the list of names they correspond to in the source program.
12273.P
12274Each namelist item entry contains a
12275.Cf DW_AT_namelist_item
12276attribute whose value is a reference to the debugging information
12277entry representing the declaration of the item whose name
12278appears in the namelist.
12279.OP
12280.H 1 "TYPE ENTRIES"
12281This section presents the debugging information entries
12282that describe program types: base types, modified types
12283and user-defined types.
12284.P
12285If the scope of the declaration of a named type begins sometime after
12286.IX scope
12287.IX declarations, scope
12288the low pc value
12289for the scope most closely enclosing the declaration, the
12290declaration may have a
12291.Cf DW_AT_start_scope
12292attribute.  The value of this attribute is the offset in bytes of the beginning
12293of the scope for the declaration from the low pc value of the debugging
12294information entry that defines its scope.
12295.H 2 "Base Type Entries"
12296.I
12297.IX base types
12298.IX types, base
12299A base type is a data type that is not defined in terms of
12300other data types.  Each programming language has a set of
12301base types that are considered to be built into that language.
12302.R
12303.P
12304A base type is represented by a debugging information entry
12305with the tag
12306.Cf DW_TAG_base_type .
12307A base type entry has a
12308.Cf DW_AT_name
12309attribute whose value is a null-terminated
12310string describing the name of the base type as recognized by
12311the programming language of the compilation unit containing
12312the base type entry.
12313.P
12314A base type entry also has a
12315.Cf DW_AT_encoding
12316attribute describing how the base type is encoded and is
12317to be interpreted.  The value of this attribute is a constant.
12318The set of values and their meanings for the
12319.Cf DW_AT_encoding
12320.nr aX \n(Fg+1
12321attribute is given in Figure \n(aX.
12322.DF
12323.TS
12324box center;
12325l l
12326lf(CW) l
12327.
12328Name	Meaning
12329_
12330DW_ATE_address	linear machine address
12331DW_ATE_boolean	true or false
12332DW_ATE_complex_float	complex floating-point number
12333DW_ATE_float	floating-point number
12334DW_ATE_signed	signed binary integer
12335DW_ATE_signed_char	signed character
12336DW_ATE_unsigned	unsigned binary integer
12337DW_ATE_unsigned_char	unsigned character
12338.TE
12339.FG "Encoding attribute values"
12340.DE
12341.P
12342All encodings assume the representation that is ``normal'' for
12343the target architecture.
12344.P
12345A base type entry has a
12346.Cf DW_AT_byte_size
12347attribute, whose value is a constant,
12348describing the size in bytes of the storage
12349unit used to represent an object of the given type.
12350.P
12351If the value of an object of the given type does not
12352fully occupy the storage unit described by the byte size attribute,
12353the base type entry may have a
12354.Cf DW_AT_bit_size
12355attribute and a
12356.Cf DW_AT_bit_offset
12357attribute, both of whose values are constants.
12358The bit size attribute describes the actual size in bits used
12359to represent a value of the given type.  The bit offset
12360attribute describes the offset in bits of the high order
12361bit of a value of the given type from the high order bit
12362of the storage unit used to contain that value.
12363.I
12364.P
12365For example, the C type
12366.Cf int
12367on a machine that uses 32-bit integers would be
12368represented by a base type entry with a name
12369attribute whose value was ``\f(CWint\fP,'' an
12370encoding attribute whose value was
12371.Cf DW_ATE_signed
12372and a byte size attribute whose value was
12373.Cf 4 .
12374.R
12375.H 2 "Type Modifier Entries"
12376.IX type modifiers
12377.IX types, modifiers
12378A base or user-defined type may be modified in different
12379ways in different languages.  A type modifier is represented
12380in DWARF by a debugging information entry with one of the
12381.nr aX \n(Fg+1
12382tags given in Figure \n(aX.
12383.DF
12384.TS
12385box center;
12386l l
12387lf(CW) l
12388.
12389Tag	Meaning
12390_
12391DW_TAG_const_type	C or C++ const qualified type
12392DW_TAG_packed_type	Pascal packed type
12393DW_TAG_pointer_type	The address of the object whose type is being modified
12394DW_TAG_reference_type	A C++ reference to the object whose type is being modified
12395DW_TAG_volatile_type	C or C++ volatile qualified type
12396.TE
12397.FG "Type modifier tags"
12398.DE
12399.P
12400.IX types, constant
12401.IX types, packed
12402.IX types, volatile
12403.IX types, pointer
12404.IX types, reference
12405Each of the type modifier entries has a
12406.Cf DW_AT_type
12407attribute, whose value is a reference to a debugging information
12408entry describing a base type, a user-defined type or another type
12409modifier.
12410.P
12411A modified type entry describing a pointer or reference type
12412may have a
12413.IX addresses, class
12414.Cf DW_AT_address_class
12415attribute
12416to describe how objects having the given pointer or reference type
12417ought to be dereferenced.
12418.P
12419When multiple type modifiers are chained together to modify
12420a base or user-defined type, they are ordered as if part of
12421a right-associative expression involving the base or user-defined
12422type.
12423.I
12424.P
12425As examples of how type modifiers are ordered, take the following
12426C declarations:
12427.R
12428.DS
12429.ta .5i +.5i +.5i +.5i +.5i +.5i +.5i +.5i
12430\f(CWconst char * volatile p;\fP
12431        \fIwhich represents a volatile pointer to a constant character.\fP
12432        \fIThis is encoded in DWARF as:\fP
12433        \f(CWDW_TAG_volatile_type \(->
12434		DW_TAG_pointer_type \(->
12435			DW_TAG_const_type \(->
12436				DW_TAG_base_type\fP
12437
12438\f(CWvolatile char * const p;\fP
12439        \fIon the other hand, represents a constant pointer
12440        to a volatile character.\fP
12441        \fIThis is encoded as:\fP
12442        \f(CWDW_TAG_const_type \(->
12443		DW_TAG_pointer_type \(->
12444			DW_TAG_volatile_type \(->
12445				DW_TAG_base_type\fP
12446
12447.DE
12448.R
12449.H 2 "Typedef Entries"
12450.IX typedefs
12451Any arbitrary type named via a typedef is represented
12452by a debugging information entry with the tag
12453.Cf DW_TAG_typedef .
12454The typedef entry has a
12455.Cf DW_AT_name
12456attribute whose value is a null-terminated
12457string containing the name of the typedef as it appears in the
12458source program.
12459The typedef entry also contains a
12460.Cf DW_AT_type
12461attribute.
12462.P
12463If the debugging information entry for a typedef represents a
12464declaration of the type that is not also a definition,
12465it does not contain a type attribute.
12466.IX declarations, non-defining
12467.H 2     "Array Type Entries"
12468.I
12469.IX arrays
12470Many languages share the concept of an ``array,'' which is a
12471table of components of identical type.
12472.P
12473.R
12474An array type is represented by a debugging information entry with
12475the tag
12476.Cf DW_TAG_array_type .
12477.P
12478If a name has been given to the array type in the source program, then the
12479corresponding array type entry has a
12480.Cf DW_AT_name
12481attribute whose value is a
12482null-terminated string containing the array type name as it appears in the
12483source program.
12484.P
12485.IX arrays, ordering
12486The array type entry describing a multidimensional array may have a
12487.Cf DW_AT_ordering
12488attribute whose constant value is interpreted to mean either
12489row-major or column-major ordering of array elements.
12490The set of values and their meanings for the ordering attribute
12491.nr aX \n(Fg+1
12492are listed in Figure \n(aX.
12493If no ordering attribute is present, the default ordering for
12494the source language (which is indicated by the
12495.Cf DW_AT_language
12496attribute of the enclosing compilation unit entry)
12497is assumed.
12498.DF
12499.TS
12500box center;
12501lf(CW)
12502.
12503DW_ORD_col_major
12504DW_ORD_row_major
12505.TE
12506.FG "Array ordering"
12507.DE
12508.P
12509The ordering attribute may optionally appear on one-dimensional arrays; it
12510will be ignored.
12511.P
12512An array type entry has a
12513.Cf DW_AT_type
12514attribute describing the type
12515of each element of the array.
12516.P
12517.IX arrays, stride
12518If the amount of storage allocated to hold each element of an object of
12519the given array type is different from the amount of storage that is normally
12520allocated to hold an individual object of the indicated element type, then
12521the array type entry has a
12522.Cf DW_AT_stride_size
12523attribute, whose constant value
12524represents the size in bits of each element of the array.
12525.P
12526If the size of the entire array can be determined statically at compile
12527time, the array type entry may have a
12528.Cf DW_AT_byte_size
12529attribute, whose constant value represents the total size in bytes of an
12530instance of the array type.
12531.P
12532.I
12533Note that if the size of the array can be determined statically at
12534compile time, this value can usually be computed by multiplying
12535the number of array elements by the size of each element.
12536.P
12537.R
12538Each array dimension is described by a debugging information
12539entry with either the tag
12540.IX subranges
12541.IX enumerations
12542.IX arrays, dimensions
12543.Cf DW_TAG_subrange_type
12544or the tag
12545.Cf DW_TAG_enumeration_type .
12546These entries are children of the array type entry and are
12547ordered to reflect the appearance of the dimensions in the source
12548program (i.e. leftmost dimension first, next to leftmost second,
12549and so on).
12550.P
12551.I
12552.IX C %c
12553In languages, such as ANSI-C, in which there is no concept of a
12554``multidimensional array,''
12555an array of arrays may be represented by a debugging information entry
12556for a multidimensional array.
12557.R
12558.H 2     "Structure, Union, and Class Type Entries"
12559.I
12560The languages C, C++, and Pascal, among others,
12561allow the programmer to define types that
12562are collections of related components.  In C and C++, these collections are
12563called ``structures.''  In Pascal, they are called ``records.''  The components
12564may be of different types.  The components are called ``members'' in C and
12565C++, and ``fields'' in Pascal.
12566.P
12567.IX structures
12568.IX classes
12569.IX unions
12570.IX records
12571.IX C %c
12572.IX C++ %caa
12573.IX Pascal
12574The components of these collections each exist in their own space in
12575computer memory.  The components of a C or C++ ``union'' all coexist in
12576the same memory.
12577.P
12578Pascal and other languages have a ``discriminated union,'' also called a
12579.IX variants
12580.IX discriminated unions
12581``variant record.''  Here, selection of a number of alternative substructures
12582(``variants'') is based on the value of a component that is not part of any of
12583those substructures (the ``discriminant'').
12584.P
12585Among the languages discussed in this document,
12586the ``class'' concept is unique to C++.  A class is similar to a structure.
12587A C++ class or structure may have ``member functions'' which are subroutines
12588that are within the scope of a class or structure.
12589.R
12590.H 3 "General Structure Description"
12591Structure, union, and class types are represented by
12592debugging information entries with the tags
12593.Cf DW_TAG_structure_type ,
12594.Cf DW_TAG_union_type
12595and
12596.Cf DW_TAG_class_type ,
12597respectively.
12598If a name has been given to the structure, union, or class in the source
12599program, then the corresponding structure type, union type, or class type
12600entry has a
12601.Cf DW_AT_name
12602attribute whose value is a null-terminated string
12603containing the type name as it appears in the source program.
12604.P
12605If the size of an instance of the
12606structure type, union type, or class type entry can be determined
12607statically at compile time, the entry has a
12608.Cf DW_AT_byte_size
12609attribute whose constant value is the number of bytes required to
12610hold an instance of the structure, union, or class, and any padding bytes.
12611.I
12612.P
12613.IX structures, incomplete
12614.IX classes, incomplete
12615.IX unions, incomplete
12616For C and C++, an incomplete structure, union or class type is represented
12617by a structure, union or class entry that does not have
12618a byte size attribute and that has a
12619.Cf DW_AT_declaration
12620attribute.
12621.R
12622.P
12623The members of a structure, union, or class are represented by
12624debugging information entries that are owned by the corresponding
12625structure type, union type, or class type entry and appear in the same
12626order as the corresponding declarations in the source program.
12627.P
12628.I
12629.IX declarations, defining
12630.IX members, static data
12631.IX members, data
12632.IX members, functions
12633Data member declarations occurring within the declaration of a structure,
12634union or class type are considered to be ``definitions'' of those members,
12635with the exception of C++ ``static'' data members, whose definitions
12636appear outside of the declaration of the enclosing structure, union
12637or class type.  Function member declarations appearing within a structure,
12638union or class type declaration are definitions only if the body
12639of the function also appears within the type declaration.
12640.R
12641.P
12642.IX declarations, non-defining
12643If the definition for a given member of the structure, union or class
12644does not appear within the body of the declaration, that member
12645also has a debugging information entry describing its definition.
12646That entry will have a
12647.Cf DW_AT_specification
12648attribute referencing
12649the debugging entry owned by the
12650body of the structure, union or class debugging entry and representing
12651a non-defining declaration of the data or function member.  The
12652referenced entry will
12653not have information about the location of that member (low and high
12654pc attributes for function members, location descriptions for data
12655members) and will have a
12656.Cf DW_AT_declaration
12657attribute.
12658.H 3 "Derived Classes and Structures"
12659.IX classes, derived
12660.IX structures, derived
12661.IX inheritance
12662The class type or structure type entry that describes a derived class
12663or structure owns debugging information entries describing each of
12664the classes or structures it is derived from, ordered as they were
12665in the source program.  Each such entry has the tag
12666.Cf DW_TAG_inheritance .
12667.P
12668An inheritance entry has a
12669.Cf DW_AT_type
12670attribute whose
12671value is a reference to the debugging information entry describing
12672the structure or class from which the parent structure or class
12673of the inheritance entry is derived.  It also has a
12674.Cf DW_AT_data_member_location
12675attribute, whose value is a location description describing
12676the location of the beginning of
12677the data members contributed to the entire class by this
12678subobject relative to the beginning address of the data members of the
12679entire class.
12680.P
12681.IX accessibility
12682.IX virtuality
12683.IX classes, virtual base
12684An inheritance entry may have a
12685.Cf DW_AT_accessibility
12686attribute.
12687If no accessibility attribute is present,
12688private access is assumed.
12689If the structure or class referenced by the inheritance entry serves
12690as a virtual base class, the inheritance entry has a
12691.Cf DW_AT_virtuality
12692attribute.
12693.P
12694.I
12695In C++, a derived class may contain access declarations that
12696change the accessibility of individual class members from
12697the overall accessibility specified by the inheritance declaration.
12698A single access declaration may refer to a set of overloaded
12699names.
12700.R
12701.P
12702If a derived class or structure contains access declarations,
12703.IX access declarations
12704.IX C++ %caa
12705each such declaration may be represented by a debugging information
12706entry with the tag
12707.Cf DW_TAG_access_declaration .
12708Each such entry is a child of the structure or class type entry.
12709.P
12710An access declaration entry has a
12711.Cf DW_AT_name
12712attribute, whose value
12713is a null-terminated string representing the name used in the
12714declaration in the source program, including any class or structure
12715qualifiers.
12716.P
12717An access declaration entry also has a
12718.Cf DW_AT_accessibility
12719attribute
12720describing the declared accessibility of the named entities.
12721.H 3 "Friends"
12722.IX friends
12723.IX classes, friends
12724Each ``friend'' declared by
12725a structure, union or class type may be represented by
12726a debugging information entry that is a child of the structure,
12727union or class type entry; the friend entry has the tag
12728.Cf DW_TAG_friend.
12729.P
12730A friend entry has a
12731.Cf DW_AT_friend
12732attribute, whose value is a reference to the debugging information
12733entry describing the declaration of the friend.
12734.H 3 "Structure Data Member Entries"
12735.IX members, data
12736A data member (as opposed to a member function) is represented by
12737a debugging information entry with the tag
12738.Cf DW_TAG_member .
12739The member entry for a named member has a
12740.Cf DW_AT_name
12741attribute
12742whose value is a null-terminated string containing the member name
12743as it appears in the source program.  If the member entry describes
12744a C++ anonymous union, the name attribute is omitted or consists
12745of a single zero byte.
12746.IX unions, anonymous
12747.IX anonymous unions
12748.P
12749The structure data member entry has a
12750.Cf DW_AT_type
12751attribute
12752to denote the type of that member.
12753.P
12754If the member entry is defined in the structure or class body, it has a
12755.Cf DW_AT_data_member_location
12756attribute whose value is a location
12757description that describes the location of that
12758member relative to the base address of the structure, union, or class that
12759most closely encloses the corresponding member declaration.
12760.I
12761.P
12762.IX locations, expressions
12763.IX locations, descriptions
12764The addressing expression represented by the location
12765description for a structure data member expects the base address
12766of the structure data member to be on the expression stack
12767before being evaluated.
12768.P
12769.IX unions
12770The location description for a data member of a union may be omitted,
12771since all data members of a union begin at the same address.
12772.R
12773.P
12774.IX bit fields
12775.IX members, bit fields
12776If the member entry describes a bit field, then that entry has the following
12777attributes:
12778.AL
12779.LI
12780A
12781.Cf DW_AT_byte_size
12782attribute whose constant value is the number of bytes that
12783contain an instance of the bit field and any padding bits.
12784.P
12785.I
12786The byte size attribute may be omitted if the size of the object containing
12787the bit field can be inferred from the type attribute of the data
12788member containing the bit field.
12789.R
12790.LI
12791A
12792.Cf DW_AT_bit_offset
12793attribute whose constant value is the number of bits
12794to the left of the leftmost (most significant) bit of the bit field value.
12795.LI
12796A
12797.Cf DW_AT_bit_size
12798attribute whose constant value is the number of bits occupied
12799by the bit field value.
12800.LE
12801.P
12802The location description for a bit field calculates the address of
12803an anonymous object containing the bit field.  The address is
12804relative to the structure, union, or class that
12805most closely encloses the bit field declaration.  The number
12806of bytes in this anonymous object is the value of the byte
12807size attribute of the bit field.  The offset (in bits)
12808from the most significant bit of the
12809anonymous object to the most significant bit of the bit field is the
12810value of the bit offset attribute.
12811.I
12812.P
12813For example, take one possible representation of the following
12814structure definition in both big and little endian byte orders:
12815.DS
12816\f(CW
12817struct S {
12818	int   j:5;
12819	int   k:6;
12820	int   m:5;
12821	int   n:8;
12822};\fP
12823.DE
12824.P
12825In both cases, the location descriptions for the debugging information
12826entries for \f(CWj\fP, \f(CWk\fP, \f(CWm\fP and \f(CWn\fP
12827describe the address of
12828the same 32-bit word that contains all three members.
12829(In the big-endian case,
12830the location description addresses the most significant byte, in
12831the little-endian case, the least significant).
12832The following diagram shows the structure layout and lists the bit
12833offsets for each case.  The offsets
12834are from the most significant bit of the object addressed by the location
12835description.
12836.PS
12837bitht = .3
12838boxht = bitht
12839bitwid = .11
12840nibwid = .75 * bitwid
12841bytewid = 8 * bitwid
12842boxwid = bytewid
12843define nibble X	# nibble(len, "label", hi-left, hi-right, lo-left, lo-right, any)
12844N:	box width $1*nibwid $2 $7
12845	{ if $3 >= 0 then % "\s-4\|$3\s0" at N.w + (0,bitht/3) ljust %
12846	} # curly on separate line for pic bug
12847	{ if $4 >= 0 then % "\s-4\|$4\s0" at N.e + (0,bitht/3) rjust %
12848	}
12849	{ if $5 >= 0 then % "\s-4\|$5\s0" at N.w - (0,bitht/3) ljust %
12850	}
12851	{ if $6 >= 0 then % "\s-4$6\|\s0" at N.e - (0,bitht/3) rjust %
12852	}
12853X
12854define tbox X # tbox(width,"label", any)
12855T:	box width $1*nibwid ht 1/6 $3 invis
12856	{ $2 at T.w ljust
12857	}
12858X
12859.PE
12860.DS
12861.PS
12862	down
12863H:	tbox(20,"Bit Offsets:")
12864	tbox(20,"\f(CW    j:0\fP")
12865	tbox(20,"\f(CW    k:5\fP")
12866	tbox(20,"\f(CW    m:11\fP")
12867	tbox(20,"\f(CW    n:16\fP")
12868	right
12869H:	tbox(32, "Big-Endian", with .w at H.e)
12870H:	nibble(5,"\f(CWj\fP",0,-1,31,-1,with .nw at H.sw)
12871H:	nibble(6,"\f(CWk\fP",-1,-1,26,-1)
12872H:	nibble(5,"\f(CWm\fP",-1,-1,20,-1)
12873H:	nibble(8,"\f(CWn\fP",-1,-1,15,-1)
12874H:	nibble(8,"\fIpad\fP",-1,-1,7,0)
12875.PE
12876.DE
12877.DS
12878.PS
12879	down
12880H:	tbox(20,"Bit Offsets:")
12881	tbox(20,"\f(CW    j:27\fP")
12882	tbox(20,"\f(CW    k:21\fP")
12883	tbox(20,"\f(CW    m:16\fP")
12884	tbox(20,"\f(CW    n:8\fP")
12885	right
12886H:	tbox(32, "Little-Endian", with .w at H.e)
12887H:	nibble(8,"\f2pad\fP",-1,-1,31,-1, with .nw at H.sw)
12888H:	nibble(8,"\f(CWn\fP",-1,-1,23,-1)
12889H:	nibble(5,"\f(CWm\fP",-1,-1,15,-1)
12890H:	nibble(6,"\f(CWk\fP",-1,-1,10,-1)
12891H:	nibble(5,"\f(CWj\fP",-1,0,4,0)
12892.PE
12893.DE
12894.R
12895.H 3 "Structure Member Function Entries"
12896.IX subroutines, members
12897.IX members, functions
12898.IX members, locations
12899A member function is represented in the debugging information by a
12900debugging information entry with the tag
12901.Cf DW_TAG_subprogram .
12902The member function entry may contain the same attributes and follows
12903the same rules as non-member global subroutine entries (see section 3.3).
12904.P
12905.IX virtuality
12906.IX virtual functions
12907If the member function entry describes a virtual function, then that entry
12908has a
12909.Cf DW_AT_virtuality
12910attribute.
12911.P
12912An entry for a virtual function also has a
12913.Cf DW_AT_vtable_elem_location
12914attribute whose value contains a location
12915description yielding the address of the slot for the function
12916within the virtual function table for the enclosing class or structure.
12917.P
12918.IX declarations, defining
12919If a subroutine entry represents the defining declaration
12920of a member function and that definition appears outside
12921of the body of the enclosing class or structure declaration,
12922the subroutine entry has a
12923.Cf DW_AT_specification
12924attribute, whose value is a reference to the debugging information
12925entry representing the declaration of this function member.  The
12926referenced entry will be a child of some class or structure
12927type entry.
12928.P
12929Subroutine entries containing the
12930.Cf DW_AT_specification
12931attribute do not need to duplicate information provided by the
12932declaration entry referenced by the specification attribute.
12933In particular, such entries do not need to contain
12934attributes for the name or return type of the function member whose
12935definition they represent.
12936.H 3 "Class Template Instantiations"
12937.I
12938.IX C++ %caa
12939.IX templates
12940In C++ a class template is a generic
12941definition of a class type that
12942is instantiated differently when an instance of the class
12943is declared or defined.  The generic description of the class
12944may include both parameterized types and parameterized constant
12945values.  DWARF does not represent the generic
12946template definition, but does represent each instantiation.
12947.R
12948.P
12949A class template instantiation is represented by a debugging information
12950with the tag
12951.Cf DW_TAG_class_type .
12952With four exceptions,
12953such an entry will contain the same attributes and have the same
12954types of child entries as would an entry for a class type defined
12955explicitly using the instantiation types and values.
12956The exceptions are:
12957.AL
12958.LI
12959Each formal parameterized type declaration appearing in the
12960template definition is represented by a debugging information entry
12961with the tag
12962.Cf DW_TAG_template_type_parameter .
12963Each such entry has a
12964.Cf DW_AT_name
12965attribute, whose value is a null-terminated
12966string containing the name of the formal type parameter as it
12967appears in the source program.  The template type parameter
12968entry also has a
12969.Cf DW_AT_type
12970attribute describing the actual type by
12971which the formal is replaced for this instantiation.
12972.LI
12973Each formal parameterized value declaration appearing
12974in the templated definition is represented by a debugging information
12975entry with the tag
12976.Cf DW_TAG_template_value_parameter .
12977Each such entry has a
12978.Cf DW_AT_name
12979attribute, whose value is a null-terminated
12980string containing the name of the formal value parameter as it
12981appears in the source program.  The template value parameter
12982entry also has a
12983.Cf DW_AT_type
12984attribute describing the type of the parameterized
12985value.  Finally, the template value parameter entry has a
12986.Cf DW_AT_const_value
12987attribute, whose value is the actual constant value of the value
12988parameter for this instantiation as represented on the target
12989architecture.
12990.LI
12991.IX compilation units
12992If the compiler has generated a special compilation unit
12993to hold the template instantiation and that compilation unit
12994has a different name
12995from the compilation unit containing the template definition,
12996the name attribute for the debugging entry representing
12997that compilation unit should be empty or omitted.
12998.LI
12999.IX declarations, coordinates
13000If the class type entry representing the template instantiation
13001or any of its child entries
13002contain declaration coordinate attributes, those attributes
13003should refer to the source for the template definition, not
13004to any source generated artificially by the compiler.
13005.LE
13006.H 3 "Variant Entries"
13007.IX variants
13008.IX discriminated unions
13009A variant part of a structure is represented by a debugging
13010information entry with the tag
13011.Cf DW_TAG_variant_part
13012and is owned by the corresponding structure type
13013entry.
13014.P
13015.IX discriminants
13016If the variant part has a discriminant, the discriminant is represented
13017by a separate debugging information entry which is a child of
13018the variant part entry.  This entry has the form of a structure data member
13019entry.
13020The variant part entry will have a
13021.Cf DW_AT_discr
13022attribute whose value is a
13023reference to the member entry for the discriminant.
13024.P
13025If the variant part
13026does not have a discriminant (tag field), the variant part entry has a
13027.Cf DW_AT_type
13028attribute to represent the tag type.
13029.P
13030Each variant of a particular variant part is represented by a debugging
13031information entry with the tag
13032.Cf DW_TAG_variant
13033and is a child of the variant part entry.  The value that selects a
13034given variant may be represented in one of three ways.  The
13035variant entry may have a
13036.Cf DW_AT_discr_value
13037attribute whose value represents a single case label.
13038The value of this attribute
13039is encoded as an LEB128 number.  The number is signed if the tag
13040type for the variant part containing this variant is
13041a signed type.   The number is unsigned if the tag type is an unsigned type.
13042.P
13043Alternatively, the variant entry may contain a
13044.Cf DW_AT_discr_list
13045attribute, whose value represents a list of discriminant values.
13046This list is represented by any of the block forms and may contain
13047a mixture of case labels and label ranges.  Each item on the list
13048is prefixed with a discriminant value descriptor that determines whether
13049the list item represents a single label or a label range.
13050A single case label is represented as an LEB128
13051number as defined above
13052for the
13053.Cf DW_AT_discr_value
13054attribute.  A label range is represented by two LEB128 numbers,
13055the low value of the range followed by the high value.  Both values
13056follow the rules for signedness just described.
13057The discriminant value descriptor is a constant that may have
13058.nr aX \n(Fg+1
13059one of the values given in Figure \n(aX.
13060.DF
13061.TS
13062center box;
13063lf(CW)
13064.
13065DW_DSC_label
13066DW_DSC_range
13067.TE
13068.FG "Discriminant descriptor values"
13069.DE
13070.P
13071If a variant entry has neither a
13072.Cf DW_AT_discr_value
13073attribute nor a
13074.Cf DW_AT_discr_list
13075attribute, or if it has a
13076.Cf DW_AT_discr_list
13077attribute with 0 size, the variant is a default variant.
13078.P
13079The components selected by a particular variant are represented
13080by debugging information entries owned by the corresponding variant
13081entry and appear in the same order as the corresponding declarations in
13082the source program.
13083.H 2     "Enumeration Type Entries"
13084.I
13085.IX enumerations
13086An ``enumeration type'' is a scalar that can assume one of a fixed number of
13087symbolic values.
13088.P
13089.R
13090An enumeration type is represented by a debugging information entry
13091with the tag
13092.Cf DW_TAG_enumeration_type .
13093.P
13094If a name has been given to the enumeration type in the source program,
13095then the corresponding enumeration type entry has a
13096.Cf DW_AT_name
13097attribute
13098whose value is a null-terminated string containing the enumeration type
13099name as it appears in the source program.
13100These entries also have a
13101.Cf DW_AT_byte_size
13102attribute whose
13103constant value is the number of bytes required to hold an
13104instance of the enumeration.
13105.P
13106Each enumeration literal is represented by a debugging information
13107entry with the tag
13108.Cf DW_TAG_enumerator .
13109Each such entry is a child of the enumeration type entry, and
13110the enumerator entries appear in the same order as the declarations of
13111the enumeration literals in the source program.
13112.P
13113Each enumerator entry has a
13114.Cf DW_AT_name
13115attribute, whose value is
13116a null-terminated string containing the name of the enumeration
13117literal as it appears in the source program.  Each enumerator
13118entry also has a
13119.Cf DW_AT_const_value
13120attribute, whose value is the actual numeric value of the enumerator
13121as represented on the target system.
13122.H 2     "Subroutine Type Entries"
13123.I
13124.IX subroutines, types
13125It is possible in C to declare pointers to subroutines that return a value
13126of a specific type.  In both ANSI C and C++, it is possible to declare
13127pointers to subroutines that not only return a value of a specific type,
13128but accept only arguments of specific types.  The type of such pointers
13129would be described with a ``pointer to'' modifier applied to a user-defined
13130type.
13131.R
13132.P
13133A subroutine type is represented by a debugging information entry
13134with the tag
13135.Cf DW_TAG_subroutine_type .
13136If a name has been given to the subroutine type in the source program,
13137then the corresponding subroutine type entry has a
13138.Cf DW_AT_name
13139attribute
13140whose value is a null-terminated string containing the subroutine type
13141name as it appears in the source program.
13142.P
13143.IX subroutines, return types
13144If the subroutine type describes a function that returns a value, then
13145the subroutine type entry has a
13146.Cf DW_AT_type
13147attribute
13148to denote the type returned by the subroutine.
13149If the types of the arguments are necessary to describe the subroutine type,
13150then the corresponding subroutine type entry owns debugging
13151information entries that describe the arguments.
13152These debugging information entries appear in the order
13153that the corresponding argument types appear in the source program.
13154.P
13155.I
13156.IX C %c
13157.IX subroutines, prototypes
13158In ANSI-C there is a difference between the types of functions
13159declared using function prototype style declarations and those
13160declared using non-prototype declarations.
13161.P
13162.R
13163A subroutine entry
13164declared with a function prototype style declaration may have a
13165.Cf DW_AT_prototyped
13166attribute, whose value is a flag.
13167.P
13168Each debugging information entry
13169owned by a subroutine type entry has a tag whose value has one of
13170two possible interpretations.
13171.AL
13172.LI
13173.IX parameters, formal
13174Each debugging information entry that is owned by a subroutine type entry and
13175that defines a single argument of a specific type has the tag
13176.Cf DW_TAG_formal_parameter .
13177.P
13178The formal parameter entry has a type attribute
13179to denote the type of the corresponding formal parameter.
13180.LI
13181The unspecified parameters of a variable parameter list are represented by a
13182debugging information entry owned by the subroutine type entry with the tag
13183.Cf DW_TAG_unspecified_parameters .
13184.IX parameters, unspecified
13185.LE
13186.H 2     "String Type Entries"
13187.I
13188.IX string types
13189.IX Fortran
13190A ``string'' is a sequence of characters that have specific semantics and
13191operations that separate them from arrays of characters.
13192Fortran is one of
13193the languages that has a string type.
13194.R
13195.P
13196A string type is represented by a debugging information entry
13197with the tag
13198.Cf DW_TAG_string_type .
13199If a name has been given to the string type in the source program,
13200then the corresponding string type entry has a
13201.Cf DW_AT_name
13202attribute
13203whose value is a null-terminated string containing the string type
13204name as it appears in the source program.
13205.P
13206The string type entry may have a
13207.Cf DW_AT_string_length
13208attribute whose value is a location description
13209yielding the location where the length of the string
13210is stored in the program.  The string type entry may also have a
13211.Cf DW_AT_byte_size
13212attribute, whose constant value is the size in bytes of the data
13213to be retrieved from the location referenced by the string length
13214attribute.  If no byte size attribute is present, the size of the
13215data to be retrieved is the same as the size of an address on
13216the target machine.
13217.P
13218If no string length attribute is present, the string type entry may have
13219a
13220.Cf DW_AT_byte_size
13221attribute, whose constant value is the length in bytes of
13222the string.
13223.H 2 "Set Entries"
13224.I
13225Pascal provides the concept of a ``set,'' which represents a group of
13226values of ordinal type.
13227.P
13228.R
13229.IX Pascal
13230.IX set types
13231A set is represented by a debugging information entry
13232with the tag
13233.Cf DW_TAG_set_type .
13234If a name has been given to the set type,
13235then the set type entry has a
13236.Cf DW_AT_name
13237attribute
13238whose value is a null-terminated string containing the set type name
13239as it appears in the source program.
13240.P
13241The set type entry has a
13242.Cf DW_AT_type
13243attribute to denote the type
13244of an element of the set.
13245.P
13246If the amount of storage allocated to hold each element of an object of
13247the given set type is different from the amount of storage that is normally
13248allocated to hold an individual object of the indicated element type, then
13249the set type entry has a
13250.Cf DW_AT_byte_size
13251attribute, whose constant value
13252represents the size in bytes of an instance of the set type.
13253.H 2 "Subrange Type Entries"
13254.I
13255Several languages support the concept of a ``subrange'' type object.
13256These objects can represent a subset of the values that an
13257object of the basis type for the subrange can represent.
13258Subrange type entries may also be used to represent the bounds
13259of array dimensions.
13260.R
13261.P
13262.IX subranges
13263A subrange type is represented by a debugging information entry
13264with the tag
13265.Cf DW_TAG_subrange_type .
13266If a name has been given to the subrange type,
13267then the subrange type entry has a
13268.Cf DW_AT_name
13269attribute
13270whose value is a null-terminated string containing the subrange type name
13271as it appears in the source program.
13272.P
13273The subrange entry may have a
13274.Cf DW_AT_type
13275attribute to describe
13276the type of object of whose values this subrange is a subset.
13277.P
13278If the amount of storage allocated to hold each element of an object of
13279the given subrange type is different from the amount of storage that is normally
13280allocated to hold an individual object of the indicated element type, then
13281the subrange type entry has a
13282.Cf DW_AT_byte_size
13283attribute, whose constant value
13284represents the size in bytes of each element of the subrange type.
13285.P
13286The subrange entry may have the attributes
13287.Cf DW_AT_lower_bound
13288and
13289.Cf DW_AT_upper_bound
13290to describe, respectively, the lower and upper bound values
13291of the subrange.
13292The
13293.Cf DW_AT_upper_bound
13294attribute may be replaced by a
13295.Cf DW_AT_count
13296attribute, whose value describes the number of elements in
13297the subrange rather than the value of the last element.
13298If a bound or count value is described by a constant
13299not represented in the program's address space and can
13300be represented by one of the constant attribute forms, then the value
13301of the lower or upper bound or count attribute may be one of the constant
13302types.  Otherwise, the value of the lower or upper bound or count
13303attribute is a reference to a debugging information entry describing
13304an object containing the bound value or itself describing a constant
13305value.
13306.P
13307If either the lower or upper bound or count values are missing, the
13308bound value is assumed to be a language-dependent default
13309constant.
13310.P
13311.I
13312.IX C %c
13313.IX C++ %caa
13314.IX Fortran
13315The default lower bound value for C or C++ is 0.  For Fortran,
13316it is 1.  No other default values are currently defined by DWARF.
13317.R
13318.P
13319If the subrange entry has no type attribute describing the basis
13320type, the basis type is assumed to be the same as the object
13321described by the lower bound attribute (if it references an object).
13322If there is no lower bound attribute, or it does not reference
13323an object, the basis type is the type of the upper bound or count
13324attribute
13325(if it references an object).  If there is no upper bound or count attribute
13326or it does not reference an object, the type is assumed to be
13327the same type, in the source language
13328of the compilation unit containing the subrange entry,
13329as a signed integer with the same size
13330as an address on the target machine.
13331.H 2 "Pointer to Member Type Entries"
13332.I
13333In C++, a pointer to a data or function member of a class or
13334structure is a unique type.
13335.P
13336.R
13337.IX C++ %caa
13338.IX members, pointers to
13339.IX pointers to members
13340A debugging information entry
13341representing the type of an object that is a pointer to a structure
13342or class member has the tag
13343.Cf DW_TAG_ptr_to_member_type .
13344.P
13345If the pointer to member type has a name, the pointer to member entry
13346has a
13347.Cf DW_AT_name
13348attribute, whose value is a null-terminated string
13349containing the type name as it appears in the source program.
13350.P
13351The pointer to member entry has a
13352.Cf DW_AT_type
13353attribute to describe
13354the type of the class or structure member to which objects
13355of this type may point.
13356.P
13357The pointer to member entry also has a
13358.Cf DW_AT_containing_type
13359attribute, whose value is a reference to a debugging information
13360entry for the class or structure to whose members objects of
13361this type may point.
13362.P
13363Finally, the pointer to member entry has a
13364.Cf DW_AT_use_location
13365attribute whose value is a location description that computes
13366the address of the member of the class or structure to which the
13367pointer to member type entry can point.
13368.P
13369.I
13370The method used to find the address of a given member
13371of a class or structure is common to any instance of that
13372class or structure and to any instance of the pointer or
13373member type.  The method is thus associated
13374with the type entry, rather than with each instance of the type.
13375.P
13376The
13377.Cf DW_AT_use_location
13378expression, however, cannot be used on its own, but must
13379be used in conjunction with the location expressions for
13380a particular object of the given pointer to member type
13381and for a particular structure or class instance.  The
13382.Cf DW_AT_use_location
13383attribute expects two values to be pushed onto the location expression
13384stack before the
13385.Cf DW_AT_use_location
13386expression is evaluated.  The first value pushed should be
13387the value of the pointer to member object itself.
13388The second value pushed should be the base address of the entire
13389structure or union instance containing the member whose
13390address is being calculated.
13391.P
13392So, for an expression like
13393.DS
13394	\f(CWobject.*mbr_ptr\fP
13395.DE
13396where \f(CWmbr_ptr\fP has some pointer to member type,
13397a debugger should:
13398.AL
13399.LI
13400Push the value of
13401.Cf mbr_ptr
13402onto the location expression stack.
13403.LI
13404Push the base address of
13405.Cf object
13406onto the location expression stack.
13407.LI
13408Evaluate the
13409.Cf DW_AT_use_location
13410expression for the type of
13411.Cf mbr_ptr .
13412.LE
13413.R
13414.H 2 "File Type Entries"
13415.I
13416Some languages, such as Pascal, provide a first class data type
13417to represent files.
13418.R
13419.P
13420.IX Pascal
13421.IX file types
13422A file type is represented by a debugging information entry
13423with the tag
13424.Cf DW_TAG_file_type.
13425If the file type has a name, the file type entry
13426has a
13427.Cf DW_AT_name
13428attribute, whose value is a null-terminated string
13429containing the type name as it appears in the source program.
13430.P
13431The file type entry has a
13432.Cf DW_AT_type
13433attribute describing the type
13434of the objects contained in the file.
13435.P
13436The file type entry also has a
13437.Cf DW_AT_byte_size
13438attribute, whose value
13439is a constant representing the size in bytes of an instance
13440of this file type.
13441.OP
13442.H 1 "OTHER DEBUGGING INFORMATION"
13443This section describes debugging information that
13444is not represented in the form of debugging information
13445entries and is not contained within the
13446.Cf .debug_info
13447section.
13448.H 2 "Accelerated Access"
13449.I
13450.IX accelerated access
13451A debugger frequently needs to find the debugging information for
13452a program object defined outside of the compilation unit
13453where the debugged program is currently stopped.  Sometimes
13454it will know only the name of the object; sometimes only the address.
13455To find the debugging information
13456associated with a global object by name, using the DWARF debugging information
13457entries alone, a debugger would need
13458to run through all entries at the highest scope within each
13459compilation unit.  For lookup by address, for a subroutine,
13460a debugger can use the low and high pc attributes
13461of the compilation unit entries to quickly narrow down the search,
13462but these attributes only cover
13463the range of addresses for the text associated with a compilation
13464unit entry.  To find the debugging information associated with a
13465data object, an exhaustive search would be needed.
13466Furthermore, any search through debugging information entries for
13467different compilation units within a large program
13468would potentially require the access of many memory pages,
13469probably hurting debugger performance.
13470.R
13471.P
13472To make lookups of program objects by name or by address faster,
13473a producer of DWARF information may provide two different types
13474of tables containing information about the debugging information
13475entries owned by a particular compilation unit entry in a more condensed
13476format.
13477.H 3 "Lookup by Name"
13478.IX lookup, by name
13479For lookup by name, a table is maintained in a separate
13480object file section called
13481.Cf .debug_pubnames .
13482.IX \f(CW.debug_pubnames\fP %debugap
13483The table consists of sets of variable length entries, each
13484set describing the names of global objects whose definitions
13485or declarations are represented by debugging information entries
13486owned by a single compilation unit.  Each set begins
13487with a header containing four values: the total length of the entries
13488for that set, not including the length field itself, a version number,
13489the offset from the beginning of the
13490.Cf .debug_info
13491.IX \f(CW.debug_info\fP %debugai
13492section of the compilation unit entry referenced by the set and
13493the size in bytes of the contents of the
13494.Cf .debug_info
13495section generated to represent that compilation unit. This
13496header is followed by a variable number of offset/name pairs.
13497Each pair consists of the offset from the beginning of the compilation
13498unit entry corresponding to the current set to the
13499debugging information entry for
13500the given object, followed by a null-terminated character
13501string representing the name of the object as given by
13502the
13503.Cf DW_AT_name
13504attribute of the referenced debugging entry.
13505Each set of names is terminated by zero.
13506.P
13507.IX C++ %caa
13508.IX members, static data
13509In the case of the name of a static data member or function member
13510of a C++ structure, class or union, the name presented
13511in the
13512.Cf .debug_pubnames
13513section is not the simple name given by the
13514.Cf DW_AT_name
13515attribute of the referenced debugging entry, but rather
13516the fully class qualified name of the data or function member.
13517.IX identifiers, names
13518.H 3 "Lookup by Address"
13519.IX lookup, by address
13520For lookup by address, a table is maintained in a separate
13521object file section called
13522.Cf .debug_aranges .
13523.IX \f(CW.debug_aranges\fP %debugaar
13524The table consists of sets of variable length entries, each
13525set describing the portion of the program's address space that
13526is covered by a single compilation unit.  Each set begins
13527with a header containing five values:
13528.AL
13529.LI
13530The total length of the entries
13531for that set, not including the length field itself.
13532.LI
13533A version number.
13534.LI
13535The offset from the beginning of the
13536.Cf .debug_info
13537.IX \f(CW.debug_info\fP %debugai
13538section of the compilation unit entry referenced by the set.
13539.LI
13540The size in bytes of an address on the target architecture.  For
13541segmented addressing, this is the size of the offset portion of the
13542.IX addresses, offset portion
13543.IX addresses, size of
13544address.
13545.LI
13546.IX address space, segmented
13547.IX segmented address space
13548The size in bytes of a segment descriptor on the target architecture.
13549If the target system uses a flat address space, this value is 0.
13550.LE
13551.P
13552This
13553header is followed by a variable number of address
13554range descriptors.  Each descriptor is a pair consisting of
13555the beginning address
13556of a range of text or data covered by some entry owned
13557by the corresponding compilation unit entry, followed by the length
13558of that range.  A particular set is terminated by an entry consisting
13559of two zeroes.  By scanning the table, a debugger can quickly
13560decide which compilation unit to look in to find the debugging information
13561for an object that has a given address.
13562.H 2 "Line Number Information"
13563.I
13564.IX line number information
13565A source-level debugger will need to know how to associate statements in
13566the source files with the corresponding machine instruction addresses in
13567the executable object or the shared objects used by that executable
13568object.  Such an association would make it possible for the debugger user
13569to specify machine instruction addresses in terms of source statements.
13570This would be done by specifying the line number and the source file
13571containing the statement.  The debugger can also use this information to
13572display locations in terms of the source files and to single step from
13573statement to statement.
13574.R
13575.P
13576As mentioned in section 3.1, above,
13577the line number information generated for a compilation unit
13578is represented in the \f(CW.debug_line\fP section of an object file and is
13579referenced by a corresponding compilation unit debugging information entry
13580in the \f(CW.debug_info\fP section.
13581.IX \f(CW.debug_info\fP %debugai
13582.IX \f(CW.debug_line\fP %debugali
13583.I
13584.P
13585If space were not a consideration, the information
13586provided in the
13587.Cf .debug_line
13588section could be represented as a large matrix,
13589with one row for each instruction in the emitted
13590object code.  The matrix would have columns for:
13591.DL
13592.LI
13593the source file name
13594.LI
13595the source line number
13596.LI
13597the source column number
13598.LI
13599whether this instruction is the beginning of a source statement
13600.LI
13601whether this instruction is the beginning of a basic block.
13602.LE
13603.P
13604Such a matrix, however, would be impractically large.  We shrink it with
13605two techniques.  First, we delete from the matrix each row whose file,
13606line and source column information is identical with that of its predecessors.
13607Second, we design a byte-coded language for a state machine and store a stream
13608of bytes in the object file instead of the matrix.  This language can be
13609much more compact than the matrix.  When a consumer of the statement
13610information executes, it must ``run'' the state machine to generate
13611the matrix for each compilation unit it is interested in.  The concept
13612of an encoded matrix also leaves room for expansion.  In the future,
13613columns can be added to the matrix to encode other things that are
13614related to individual instruction addresses.
13615.R
13616.H 3 "Definitions"
13617.IX line number information, definitions
13618The following terms are used in the description of the line number information
13619format:
13620.VL 20
13621.LI "state machine"
13622The hypothetical machine used by a consumer of the line number information
13623to expand the byte-coded instruction stream into a
13624matrix of line number information.
13625.LI "statement program"
13626A series of byte-coded line number information instructions representing one
13627compilation unit.
13628.LI "basic block"
13629A sequence of instructions that is entered only at the first instruction
13630and exited only at the last instruction.  We define a procedure invocation
13631to be an exit from a basic block.
13632.LI "sequence"
13633A series of contiguous target machine instructions.  One compilation
13634unit may emit multiple sequences (that is, not all instructions within
13635a compilation unit are assumed to be contiguous).
13636.LI "sbyte"
13637Small signed integer.
13638.LI "ubyte"
13639Small unsigned integer.
13640.LI "uhalf"
13641Medium unsigned integer.
13642.LI "sword"
13643Large signed integer.
13644.LI "uword"
13645Large unsigned integer.
13646.LI "LEB128"
13647.IX LEB128
13648Variable length signed and unsigned data.  See section 7.6.
13649.LE
13650.H 3 "State Machine Registers"
13651.IX line number information, state machine registers
13652The statement information state machine has the following registers:
13653.VL 20
13654.LI "\f(CWaddress\fP"
13655The program-counter value corresponding to a machine instruction generated
13656by the compiler.
13657.LI "\f(CWfile\fP"
13658An unsigned integer indicating the identity of the source file corresponding
13659to a machine instruction.
13660.IX source, files
13661.LI "\f(CWline\fP"
13662.IX source, lines
13663An unsigned integer indicating a source line number.  Lines are numbered
13664beginning at 1.  The compiler may emit the value 0 in cases where an
13665instruction cannot be attributed to any source line.
13666.LI "\f(CWcolumn\fP"
13667.IX source, columns
13668An unsigned integer indicating a column number within a source line.
13669Columns are numbered beginning at 1.  The value 0 is reserved to indicate
13670that a statement begins at the ``left edge'' of the line.
13671.LI "\f(CWis_stmt\fP"
13672A boolean indicating that the current instruction is the beginning of a
13673statement.
13674.LI "\f(CWbasic_block\fP"
13675A boolean indicating that the current instruction is the beginning of
13676a basic block.
13677.LI "\f(CWend_sequence\fP"
13678A boolean indicating that the current address is that of the first
13679byte after the end of a sequence of target machine instructions.
13680.LE
13681.P
13682At the beginning of each sequence within a statement program, the
13683state of the registers is:
13684.DS
13685.TS
13686;
13687lf(CW) l.
13688address	0
13689file	1
13690line	1
13691column	0
13692is_stmt	determined by \f(CWdefault_is_stmt\fP in the statement program prologue
13693basic_block	``false''
13694end_sequence	``false''
13695.TE
13696.DE
13697.H 3 "Statement Program Instructions"
13698The state machine instructions in a statement program belong to one
13699of three categories:
13700.VL 20
13701.LI "special opcodes"
13702.IX line number information, special opcodes
13703These have a ubyte opcode field and no arguments.
13704Most of the instructions in a statement program are special opcodes.
13705.LI "standard opcodes"
13706.IX line number information, standard opcodes
13707These have a ubyte opcode field which may be followed by zero or more
13708LEB128 arguments (except for
13709.Cf DW_LNS_fixed_advance_pc ,
13710see below).
13711The opcode implies the number of arguments and their
13712meanings, but the statement program prologue also specifies the number
13713of arguments for each standard opcode.
13714.LI "extended opcodes"
13715.IX line number information, extended opcodes
13716These have a multiple byte format.  The first byte is zero;
13717the next bytes are an unsigned LEB128 integer giving the number of bytes
13718in the instruction itself (does not include the first zero byte or the size).
13719The remaining bytes are the instruction itself.
13720.LE
13721.H 3 "The Statement Program Prologue"
13722.IX line number information, prologue
13723The optimal encoding of line number information depends to a certain
13724degree upon the architecture of the target machine.  The statement program
13725prologue provides information used by consumers in decoding the statement
13726program instructions for a particular compilation unit and also provides
13727information used throughout the rest of the statement program.  The statement
13728program for each compilation unit begins with a prologue containing the
13729following fields in order:
13730.AL
13731.LI
13732.Cf total_length
13733(uword)
13734.br
13735The size in bytes of the statement information for this compilation unit
13736(not including the
13737.Cf total_length
13738field itself).
13739.LI
13740.Cf version
13741(uhalf)
13742.br
13743Version identifier for the statement information format.
13744.LI
13745.Cf prologue_length
13746(uword)
13747.br
13748The number of bytes following the
13749.Cf prologue_length
13750field to the beginning of the first byte of the statement program itself.
13751.LI
13752.Cf minimum_instruction_length
13753(ubyte)
13754.br
13755The size in bytes of the smallest target machine instruction.  Statement
13756program opcodes that alter the
13757.Cf address
13758register first multiply their operands by this value.
13759.LI
13760.Cf default_is_stmt
13761(ubyte)
13762.br
13763The initial value of the
13764.Cf is_stmt
13765register.
13766.P
13767.I
13768A simple code generator
13769that emits machine instructions in the order implied by the source program
13770would set this to ``true,'' and every entry in the matrix would represent
13771a statement boundary.  A pipeline scheduling code generator would set
13772this to ``false'' and emit a specific statement program opcode for each
13773instruction that represented a statement boundary.
13774.R
13775.LI
13776.Cf line_base
13777(sbyte)
13778.br
13779This parameter affects the meaning of the special opcodes.  See below.
13780.LI
13781.Cf line_range
13782(ubyte)
13783.br
13784This parameter affects the meaning of the special opcodes.  See below.
13785.LI
13786.Cf opcode_base
13787(ubyte)
13788.br
13789The number assigned to the first special opcode.
13790.LI
13791.Cf standard_opcode_lengths
13792(array of ubyte)
13793.br
13794This array specifies the number of LEB128 operands for each of
13795the standard opcodes.  The first element of the array corresponds
13796to the opcode whose value is 1, and the last element corresponds
13797to the opcode whose value is
13798.Cf "opcode_base - 1" .
13799By increasing
13800.Cf opcode_base ,
13801and adding elements to this array, new standard opcodes
13802can be added, while allowing consumers who do not know about these
13803new opcodes to be able to skip them.
13804.LI
13805.Cf include_directories
13806(sequence of path names)
13807.br
13808The sequence contains an entry for each path that was searched
13809for included source files in this compilation.  (The paths include
13810those directories specified explicitly by the user for the compiler
13811to search and those the compiler searches without explicit direction).
13812Each path entry is either a full
13813path name or is relative to the current directory of the compilation.
13814The current directory of the compilation is understood to be the first entry
13815and is not explicitly represented.
13816Each entry is a null-terminated
13817string containing a full path name.  The last entry is followed by
13818a single null byte.
13819.LI
13820.Cf file_names
13821(sequence of file entries)
13822.br
13823.IX source, files
13824The sequence contains an entry for each source file that contributed
13825to the statement information for this compilation unit or is
13826used in other contexts, such as in a declaration coordinate
13827or a macro file inclusion.  Each entry
13828has a null-terminated string containing the file name,
13829an unsigned LEB128 number representing the directory index of the
13830directory in which the file was found,
13831an unsigned LEB128 number representing the time of last modification for
13832the file and an unsigned LEB128 number representing the length in
13833bytes of the file.  A compiler may choose to emit LEB128(0) for the
13834time and length fields to indicate that this information is not
13835available.  The last entry is followed by a single null byte.
13836.P
13837The directory index represents an entry in the
13838.Cf include_directories
13839section.  The index is LEB128(0) if the file was found in
13840the current directory of the compilation, LEB128(1) if it was
13841found in the first directory in the
13842.Cf include_directories
13843section, and so on.  The directory index is ignored for file names
13844that represent full path names.
13845.P
13846The statement program assigns numbers to each of the file entries
13847in order, beginning with 1, and uses those numbers instead of file
13848names in the
13849.Cf file
13850register.
13851.P
13852A compiler may generate a single null byte for the file names field
13853and define file names using the extended opcode
13854.Cf DEFINE_FILE .
13855.LE
13856.H 3 "The Statement Program"
13857As stated before, the goal of a statement program is to build a
13858matrix representing
13859one compilation unit, which may have produced multiple sequences of
13860target-machine instructions. Within a sequence, addresses may only increase.
13861(Line numbers may decrease in cases of pipeline scheduling.)
13862.H 4 "Special Opcodes"
13863.IX line number information, special opcodes
13864Each 1-byte special opcode has the following effect on the state machine:
13865.AL
13866.LI
13867Add a signed integer to the
13868.Cf line
13869register.
13870.LI
13871Multiply an unsigned integer by the
13872.Cf minimum_instruction_length
13873field of the statement program prologue and
13874add the result to the
13875.Cf address
13876register.
13877.LI
13878Append a row to the matrix using the current values of the state machine
13879registers.
13880.LI
13881Set the
13882.Cf basic_block
13883register to ``false.''
13884.LE
13885.P
13886All of the special opcodes do those same four things;
13887they differ from one another
13888only in what values they add to the
13889.Cf line
13890and
13891.Cf address
13892registers.
13893.P
13894.I
13895Instead of assigning a fixed meaning to each special opcode, the statement
13896program uses several
13897parameters in the prologue to configure the instruction set. There are two
13898reasons for this.
13899First, although the opcode space available for special opcodes now
13900ranges from 10 through 255, the lower bound may increase if one adds new
13901standard opcodes. Thus, the
13902.Cf opcode_base
13903field of the statement program
13904prologue gives the value of the first special opcode.
13905Second, the best choice of special-opcode meanings depends on the target
13906architecture.  For example, for a RISC machine where the compiler-generated code
13907interleaves instructions from different lines to schedule the pipeline,
13908it is important to be able to add a negative value to the
13909.Cf line
13910register
13911to express the fact that a later instruction may have been emitted for an
13912earlier source line.  For a machine where pipeline scheduling never occurs,
13913it is advantageous to trade away the ability to decrease the
13914.Cf line
13915register
13916(a standard opcode provides an alternate way to decrease the line number) in
13917return for the ability to add larger positive values to the
13918.Cf address
13919register.  To permit this variety of strategies, the statement program prologue
13920defines a
13921.Cf line_base
13922field that specifies the minimum value which a special opcode can add
13923to the
13924.Cf line
13925register and a
13926.Cf line_range
13927field that defines the range of
13928values it can add to the
13929.Cf line
13930register.
13931.R
13932.P
13933A special opcode value is chosen based on the amount that needs to
13934be added to the
13935.Cf line
13936and
13937.Cf address
13938registers.  The maximum line increment
13939for a special opcode is the value of the
13940.Cf line_base
13941field in the
13942prologue, plus the value of the
13943.Cf line_range
13944field, minus 1
13945(\f(CWline base + line range - 1\fP).  If the desired line increment
13946is greater than the maximum line increment, a standard opcode
13947must be used instead of a special opcode.
13948The ``address advance'' is calculated by dividing the desired address
13949increment by the
13950.Cf minimum_instruction_length
13951field from the
13952prologue.  The special opcode is then calculated using the following
13953formula:
13954.br
13955        \f(CWopcode = (desired line increment - line_base) +
13956.br
13957                (line_range * address advance) + opcode_base\fP
13958.br
13959If the resulting opcode is greater than 255, a standard opcode
13960must be used instead.
13961.P
13962To decode a special opcode, subtract the
13963.Cf opcode_base
13964from
13965the opcode itself.  The amount to increment the
13966.Cf address
13967register is
13968the adjusted opcode divided by the
13969.Cf line_range .
13970The amount to
13971increment the
13972.Cf line
13973register is the
13974.Cf line_base
13975plus the result
13976of the adjusted opcode modulo the
13977.Cf line_range .
13978That is,
13979.br
13980	\f(CWline increment = line_base + (adjusted opcode % line_range)\fP
13981.br
13982.P
13983.I
13984As an example, suppose that the
13985.Cf opcode_base
13986is 16,
13987.Cf line_base
13988is -1 and
13989.Cf line_range
13990is 4.
13991This means that we can use a special opcode whenever two successive
13992rows in the matrix have source line numbers differing by any value within
13993the range [-1, 2] (and, because of the limited number of opcodes available,
13994when the difference between addresses is within the range [0, 59]).
13995.P
13996The opcode mapping would be:
13997.R
13998.DS
13999.TS
14000box center;
14001l l l
14002nf(CW) nf(CW) nf(CW)
14003.
14004Opcode	Line advance	Address advance
14005_
1400616	-1	0
1400717	0	0
1400818	1	0
1400919	2	0
1401020	-1	1
1401121	0	1
1401222	1	1
1401323	2	1
14014...	...	...
14015253	0	59
14016254	1	59
14017255	2	59
14018.TE
14019.DE
14020.P
14021There is no requirement that the expression \f(CW255 - line_base + 1\fP be an
14022integral multiple of
14023.Cf line_range .
14024.H 4 "Standard Opcodes"
14025.IX line number information, standard opcodes
14026There are currently 9 standard ubyte opcodes.  In the future
14027additional ubyte opcodes may be defined by setting the
14028.Cf opcode_base
14029field in the statement program
14030prologue to a value greater than 10.
14031.AL
14032.LI
14033.Cf DW_LNS_copy
14034.br
14035Takes no arguments.  Append a row to the matrix using the current values of
14036the state-machine registers.  Then set the
14037.Cf basic_block
14038register to ``false.''
14039.LI
14040.Cf DW_LNS_advance_pc
14041.br
14042Takes a single unsigned LEB128 operand,
14043multiplies it by the
14044.Cf minimum_instruction_length
14045field of the prologue, and adds the result to the
14046.Cf address
14047register of the state machine.
14048.LI
14049.Cf DW_LNS_advance_line
14050.br
14051Takes a single signed LEB128 operand and adds
14052that value to the
14053.Cf line
14054register of the state machine.
14055.LI
14056.Cf DW_LNS_set_file
14057.br
14058Takes a single unsigned LEB128 operand and stores
14059it in the
14060.Cf file
14061register of the state machine.
14062.LI
14063.Cf DW_LNS_set_column
14064.br
14065Takes a single unsigned LEB128 operand and stores
14066it in the
14067.Cf column
14068register of the state machine.
14069.LI
14070.Cf DW_LNS_negate_stmt
14071.br
14072Takes no arguments.
14073Set the
14074.Cf is_stmt
14075register of the state machine to the
14076logical negation of its current value.
14077.LI
14078.Cf DW_LNS_set_basic_block
14079.br
14080Takes no arguments.  Set the
14081.Cf basic_block
14082register of the state machine to ``true.''
14083.LI
14084.Cf DW_LNS_const_add_pc
14085.br
14086Takes no arguments.
14087Add to the
14088.Cf address
14089register of the state machine the
14090address increment value corresponding to special
14091opcode 255.
14092.P
14093.I
14094The motivation for
14095.Cf DW_LNS_const_add_pc
14096is this:  when the statement program needs
14097to advance the address by a small amount, it can use a single special
14098opcode, which occupies a single byte.  When it needs to advance the
14099address by up to twice the range of the last special opcode, it can use
14100.Cf DW_LNS_const_add_pc
14101followed by a special opcode, for a total of two bytes.
14102Only if it needs to advance the address by more than twice that range
14103will it need to use both
14104.Cf DW_LNS_advance_pc
14105and a special opcode, requiring three or more bytes.
14106.R
14107.LI
14108.Cf DW_LNS_fixed_advance_pc
14109.br
14110Takes a single uhalf operand.  Add to the
14111.Cf address
14112register of the state machine the value of the (unencoded) operand.
14113This is the only extended opcode that takes an argument that is not
14114a variable length number.
14115.P
14116.I
14117The motivation for
14118.Cf DW_LNS_fixed_advance_pc
14119is this:  existing assemblers cannot emit
14120.Cf DW_LNS_advance_pc
14121or special opcodes because they cannot encode LEB128 numbers
14122or judge when the computation of a special opcode overflows and requires
14123the use of
14124.Cf DW_LNS_advance_pc .
14125Such assemblers, however,  can use
14126.Cf DW_LNS_fixed_advance_pc
14127instead, sacrificing compression.
14128.R
14129.LE
14130.H 4 "Extended Opcodes"
14131.IX line number information, extended opcodes
14132There are three extended opcodes currently defined.  The first byte
14133following the length field of the encoding for each contains a sub-opcode.
14134.AL
14135.LI
14136\f(CWDW_LNE_end_sequence\fP
14137.br
14138Set the
14139.Cf end_sequence
14140register of the state machine
14141to ``true'' and append a row to the matrix using the
14142current values of the state-machine registers.  Then
14143reset the registers to the initial values specified
14144above.
14145.P
14146Every statement program sequence must end with a
14147.Cf DW_LNE_end_sequence
14148instruction which creates a
14149row whose address is that of the byte after the last target machine instruction
14150of the sequence.
14151.LI
14152\f(CWDW_LNE_set_address\fP
14153.br
14154Takes a single relocatable address as an operand.  The size of the
14155operand is the size appropriate to hold an address on the target machine.
14156Set the
14157.Cf address
14158register to the value given by the
14159relocatable address.
14160.P
14161.I
14162All of the other statement program opcodes that affect the
14163.Cf address
14164register add a delta to it.
14165This instruction stores a relocatable value into it instead.
14166.R
14167.LI
14168\f(CWDW_LNE_define_file\fP
14169.br
14170.IX source, files
14171Takes 4 arguments.  The first is a null terminated string containing a
14172source file name.  The second is an
14173unsigned LEB128 number representing the directory index of the
14174directory in which the file was found.
14175The third is an unsigned LEB128 number representing
14176the time of last modification of the file.  The fourth is an unsigned
14177LEB128 number representing the length in bytes of the file.
14178The time and length fields may contain LEB128(0) if the information is
14179not available.
14180.P
14181The directory index represents an entry in the
14182.Cf include_directories
14183section of the statement program prologue.
14184The index is LEB128(0) if the file was found in
14185the current directory of the compilation, LEB128(1) if it was
14186found in the first directory in the
14187.Cf include_directories
14188section, and so on.  The directory index is ignored for file names
14189that represent full path names.
14190.P
14191The files are numbered, starting at 1,
14192in the order in which they appear; the names in the prologue
14193come before names defined by the
14194.Cf DW_LNE_define_file
14195instruction.
14196These numbers are used in the the
14197.Cf file
14198register of the state machine.
14199.LE
14200.P
14201.I
14202Appendix 3 gives some sample statement programs.
14203.R
14204.H 2 "Macro Information"
14205.I
14206.IX macro information
14207.IX pre-processor
14208.IX C %c
14209.IX C++ %caa
14210Some languages, such as C and C++, provide a way to replace text
14211in the source program with macros defined either in the source
14212file itself, or in another file included by the source file.
14213Because these macros are not themselves defined in the target
14214language, it is difficult to represent their definitions
14215using the standard language constructs of DWARF.  The debugging
14216information therefore reflects the state of the source after
14217the macro definition has been expanded, rather than as the
14218programmer wrote it.
14219The macro information table provides a way of preserving the original
14220source in the debugging information.
14221.R
14222.P
14223As described in section 3.1, the macro information for a given
14224compilation unit is represented in the
14225.Cf .debug_macinfo
14226.IX \f(CW.debug_macinfo\fP %debugam
14227section of an object file.  The macro information for each compilation
14228unit is represented as a series of ``macinfo'' entries.  Each
14229macinfo entry consists of a ``type code'' and up to two additional
14230operands.  The series of entries for a given compilation unit
14231ends with an entry containing a type code of 0.
14232.H 3 "Macinfo Types"
14233The valid macinfo types are as follows:
14234.VL 30
14235.LI \f(CWDW_MACINFO_define\fP
14236A macro definition.
14237.LI \f(CWDW_MACINFO_undef\fP
14238A macro un-definition.
14239.LI \f(CWDW_MACINFO_start_file\fP
14240The start of a new source file inclusion.
14241.LI \f(CWDW_MACINFO_end_file\fP
14242The end of the current source file inclusion.
14243.LI \f(CWDW_MACINFO_vendor_ext\fP
14244Vendor specific macro information directives that do not fit
14245into one of the standard categories.
14246.LE
14247.H 4 "Define and Undefine Entries"
14248.IX macro information, define and undefine entries
14249All
14250.Cf DW_MACINFO_define
14251and
14252.Cf DW_MACINFO_undef
14253entries have two operands.
14254The first operand encodes the line number of the source line
14255.IX source, lines
14256on which the relevant defining or undefining
14257pre-processor directives appeared.
14258.P
14259The second operand consists of a null-terminated character string.
14260In the case of a
14261.Cf DW_MACINFO_undef
14262entry, the value of this
14263string will be simply the name of the pre-processor
14264symbol which was undefined at the indicated source line.
14265.P
14266In the case of a
14267.Cf DW_MACINFO_define
14268entry, the value of this
14269string will be the name of the pre-processor symbol
14270that was defined at the indicated source line,
14271followed immediately by the macro formal parameter
14272list including the surrounding parentheses (in the
14273case of a function-like macro) followed by the
14274definition string for the macro.  If there is no
14275formal parameter list, then the name of the defined
14276macro is followed directly by its definition string.
14277.P
14278In the case of a function-like macro definition, no
14279whitespace characters should appear between the
14280name of the defined macro and the following left
14281parenthesis.  Also, no whitespace characters should
14282appear between successive formal parameters in the
14283formal parameter list.  (Successive formal parameters
14284should, however, be separated by commas.)  Also, exactly
14285one space character
14286should separate the right parenthesis which terminates
14287the formal parameter list and the following definition
14288string.
14289.P
14290In the case of a ``normal'' (i.e. non-function-like)
14291macro definition, exactly one space character
14292should separate the name of the defined macro from the following definition
14293text.
14294.H 4 "Start File Entries"
14295.IX macro information, start file entries
14296Each
14297.Cf DW_MACINFO_start_file
14298entry also has two operands.  The first operand
14299encodes the line number of the
14300source line on which the inclusion pre-processor
14301directive occurred.
14302.P
14303.IX source, files
14304The second operand encodes a
14305source file name index.  This index corresponds to a file
14306number in the statement information table for the relevant
14307compilation unit.  This index
14308indicates (indirectly) the name of the file
14309which is being included by the inclusion directive on
14310the indicated source line.
14311.H 4 "End File Entries"
14312.IX macro information, end file entries
14313A
14314.Cf DW_MACINFO_end_file
14315entry has no operands.  The presence of the entry marks the end of
14316the current source file inclusion.
14317.H 4 "Vendor Extension Entries"
14318.IX macro information, vendor extensions
14319.IX vendor extensions
14320A
14321.Cf DW_MACINFO_vendor_ext
14322entry has two operands.
14323The first is a constant.  The second is a null-terminated
14324character string.
14325The meaning and/or significance of these operands is
14326intentionally left undefined by this specification.
14327.P
14328A consumer must be able to totally ignore all
14329.Cf DW_MACINFO_vendor_ext
14330entries that it does not understand.
14331.H 3 "Base Source Entries"
14332.IX macro information, base source entries
14333In addition to producing a matched pair of
14334.Cf DW_MACINFO_start_file
14335and
14336.Cf DW_MACINFO_end_file
14337entries for
14338each inclusion directive actually processed during
14339compilation, a producer should generate such a matched
14340pair also for the ``base'' source file submitted to the
14341compiler for compilation.  If the base source file
14342.IX source, files
14343for a compilation is submitted to the compiler via
14344some means other than via a named disk file (e.g. via
14345the standard input \fIstream\fP on a UNIX system) then the
14346compiler should still produce this matched pair of
14347.Cf DW_MACINFO_start_file
14348and
14349.Cf DW_MACINFO_end_file
14350entries for
14351the base source file, however, the file name indicated
14352(indirectly) by the
14353.Cf DW_MACINFO_start_file
14354entry of the
14355pair should reference a statement information file name entry consisting
14356of a null string.
14357.H 3 "Macinfo Entries for Command Line Options"
14358.IX macro information, command line options
14359In addition to producing
14360.Cf DW_MACINFO_define
14361and
14362.Cf DW_MACINFO_undef
14363entries for each of the define and
14364undefine directives processed during compilation, the
14365DWARF producer should generate a
14366.Cf DW_MACINFO_define
14367or
14368.Cf DW_MACINFO_undef
14369entry for each pre-processor symbol
14370which is defined or undefined by some
14371means other than via a define or undefine directive
14372within the compiled source text.  In particular,
14373pre-processor symbol definitions and un-definitions
14374which occur as a result of command line options
14375(when invoking the compiler) should be represented by
14376their own
14377.Cf DW_MACINFO_define
14378and
14379.Cf DW_MACINFO_undef
14380entries.
14381.P
14382All such
14383.Cf DW_MACINFO_define
14384and
14385.Cf DW_MACINFO_undef
14386entries representing compilation options should appear
14387before the first
14388.Cf DW_MACINFO_start_file
14389entry for that compilation unit and should encode the value
143900 in their line number operands.
14391.H 3 " General Rules and Restrictions"
14392.IX line number information, general rules
14393All macinfo entries within a
14394.Cf .debug_macinfo
14395section for a given compilation unit should appear in the same order
14396in which the directives were processed by the compiler.
14397.P
14398All macinfo entries representing command line options
14399should appear in the same order as the relevant command
14400line options were given to the compiler.  In the case
14401where the compiler itself implicitly supplies one or
14402more macro definitions or un-definitions in addition
14403to those which may be specified on the command line,
14404macinfo entries should also be produced for these
14405implicit definitions and un-definitions, and
14406these entries should also appear in the proper order
14407relative to each other and to any definitions or
14408undefinitions given explicitly by the user on the
14409command line.
14410.H 2 "Call Frame Information"
14411.IX call frame information
14412.IX activations
14413.I
14414Debuggers often need to be able to view and modify the state of any
14415subroutine activation that is on the call stack.  An activation
14416consists of:
14417.BL
14418.LI
14419A code location that is within the subroutine.  This location is
14420either the place where the program stopped when the debugger got
14421control (e.g. a breakpoint), or is a place where a subroutine
14422made a call or was interrupted by an asynchronous event (e.g. a
14423signal).
14424.LI
14425An area of memory that is allocated on a stack called a ``call
14426frame.''  The call frame is identified by an address on the
14427stack.  We refer to this address as the Canonical Frame Address or CFA.
14428.LI
14429A set of registers that are in use by the subroutine at the code
14430location.
14431.LE
14432.P
14433Typically, a set of registers are designated to be preserved across a
14434call.  If a callee wishes to use such a register, it saves the value
14435that the register had at entry time in its call frame and restores it
14436on exit.  The code that allocates space on the call frame stack and
14437performs the save operation is called the subroutine's prologue, and the
14438code that performs the restore operation and deallocates the frame is
14439called its epilogue.  Typically, the prologue code is physically at the
14440beginning of a subroutine and the epilogue code is at the end.
14441.P
14442To be able to view or modify an activation that is not on the top of
14443the call frame stack, the debugger must ``virtually unwind'' the stack of
14444activations until it finds the activation of interest.
14445A debugger unwinds a
14446stack in steps.  Starting with the current activation it restores any
14447registers that were preserved by the current activation and computes the
14448predecessor's CFA and code location.  This has the logical effect of
14449returning from the current subroutine to its predecessor.  We say that
14450the debugger virtually unwinds the stack because it preserves enough
14451information to be able to ``rewind'' the stack back to the state it was
14452in before it attempted to unwind it.
14453.P
14454The unwinding operation needs to know where registers are saved and how
14455to compute the predecessor's CFA and code location.  When considering
14456an architecture-independent way of encoding this information one has to
14457consider a number of special things.
14458.BL
14459.LI
14460Prologue and epilogue code is not always in distinct blocks at the
14461beginning and end of a subroutine.  It is common to duplicate the
14462epilogue code at the site of each return from the code.  Sometimes
14463a compiler breaks up the register save/unsave operations and moves
14464them into the body of the subroutine to just where they are needed.
14465.LI
14466Compilers use different ways to manage the call frame.  Sometimes
14467they use a frame pointer register, sometimes not.
14468.LI
14469The algorithm to compute the CFA changes as you progress through
14470the prologue and epilogue code.  (By definition, the CFA value
14471does not change.)
14472.LI
14473Some subroutines have no call frame.
14474.LI
14475Sometimes a register is saved in another register that by
14476convention does not need to be saved.
14477.LI
14478Some architectures have special instructions that
14479perform some or all of the register management in one instruction,
14480leaving special information on the stack that indicates how
14481registers are saved.
14482.LI
14483Some architectures treat return address values
14484specially.  For example, in one architecture,
14485the call instruction guarantees that the low order two
14486bits will be zero and the return instruction ignores those bits.
14487This leaves two bits of storage that are available to other uses
14488that must be treated specially.
14489.LE
14490.R
14491.H 3 "Structure of Call Frame Information"
14492.IX call frame information, structure
14493DWARF supports virtual unwinding by defining an architecture independent
14494basis for recording how procedures save and restore registers throughout
14495their lifetimes.  This basis must be augmented on some machines with
14496specific information that is defined by either an architecture specific
14497ABI authoring committee, a hardware vendor, or a compiler producer.
14498.IX ABI
14499.IX vendor extensions
14500The body defining a specific augmentation is referred to
14501below as the ``augmenter.''
14502.P
14503Abstractly, this mechanism describes a very large table that has the
14504following structure:
14505.TS
14506center;
14507l l l l l l
14508l s s s s s.
14509LOC  CFA   R0   R1   ...  RN
14510L0
14511L1
14512\...
14513LN
14514.TE
14515.P
14516The first column indicates an address for every location that contains
14517code in a program.  (In shared objects, this is an object-relative
14518offset.)  The remaining columns contain virtual unwinding rules that are
14519associated with the indicated location.  The first column of the rules
14520defines the CFA rule which is a register and a signed offset that are
14521added together to compute the CFA value.
14522.P
14523The remaining columns are labeled by register number.  This includes
14524some registers that have special designation on some architectures such
14525as the PC and the stack pointer register.  (The actual mapping of
14526registers for a particular architecture is performed by the augmenter.)
14527The register columns contain rules that describe
14528whether a given register has been saved and the rule to find
14529the value for the register in the previous frame.
14530.P
14531The register rules are:
14532.IX call frame information, register rules
14533.VL 20
14534.LI "undefined"
14535A register that has this rule has no value in the
14536previous frame.  (By convention, it is not preserved by a callee.)
14537.LI "same value"
14538This register has not been modified from the
14539previous frame.  (By convention, it is preserved by the callee,
14540but the callee has not modified it.)
14541.LI "offset(N)"
14542The previous value of this register is saved at the address CFA+N where
14543CFA is the current CFA value and N is a signed offset.
14544.LI "register(R)"
14545The previous value of this register is stored in
14546another register numbered R.
14547.LI "architectural"
14548The rule is defined externally to this specification by the augmenter.
14549.LE
14550.P
14551.I
14552This table would be extremely large if actually constructed as
14553described.  Most of the entries at any point in the table are identical
14554to the ones above them.  The whole table can be represented quite
14555compactly by recording just the differences starting at the beginning
14556address of each subroutine in the program.
14557.R
14558.P
14559The virtual unwind information is encoded in a self-contained section
14560called
14561.Cf .debug_frame .
14562.IX \f(CW.debug_frame\fP %debugaf
14563Entries in a
14564.Cf .debug_frame
14565section are aligned on
14566.IX call frame information, Common Information Entry
14567an addressing unit boundary and come in two forms: A Common Information
14568Entry (CIE) and a Frame Description Entry (FDE).
14569Sizes of data objects used in the encoding of the
14570.Cf .debug_frame
14571section are described in terms of the same data definitions
14572used for the line number information (see section 6.2.1).
14573.P
14574A Common Information Entry holds information that is shared among many
14575Frame Descriptors.  There is at least one CIE in every non-empty
14576.Cf .debug_frame
14577section.  A CIE contains the following fields, in order:
14578.AL
14579.LI
14580\f(CWlength\fP
14581.br
14582A uword constant that gives the number of bytes of the CIE
14583structure, not including the length field, itself
14584(length mod <addressing unit size> == 0).
14585.LI
14586\f(CWCIE_id\fP
14587.br
14588A uword constant that is used to distinguish CIEs
14589from FDEs.
14590.LI
14591\f(CWversion\fP
14592.br
14593A ubyte version number.  This number is specific to the call frame
14594information and is independent of the DWARF version number.
14595.LI
14596\f(CWaugmentation\fP
14597.br
14598A null terminated string that identifies the
14599augmentation to this CIE or to the FDEs that use
14600it.  If a reader encounters an augmentation string that is
14601unexpected, then only the following fields can be read:
14602CIE:
14603.Cf length ,
14604.Cf CIE_id ,
14605.Cf version ,
14606.Cf augmentation ;
14607FDE:
14608.Cf length ,
14609.Cf CIE_pointer ,
14610.Cf initial_location ,
14611.Cf address_range .
14612If there is no augmentation, this value is a zero byte.
14613.LI
14614\f(CWcode_alignment_factor\fP
14615.br
14616An unsigned LEB128 constant that is factored out
14617of all advance location instructions (see below).
14618.LI
14619\f(CWdata_alignment_factor\fP
14620.br
14621A signed LEB128 constant that is factored out
14622of all offset instructions (see below.)
14623.LI
14624\f(CWreturn_address_register\fP
14625.br
14626A ubyte constant that indicates
14627which column in the rule table represents the return address
14628of the function.  Note that this column might not correspond
14629to an actual machine register.
14630.LI
14631\f(CWinitial_instructions\fP
14632.br
14633A sequence of rules that are interpreted to
14634create the initial setting of each column in the table.
14635.LI
14636\f(CWpadding\fP
14637.br
14638Enough
14639.Cf DW_CFA_nop
14640instructions to make the size of this entry
14641match the
14642.Cf length
14643value above.
14644.LE
14645.P
14646An FDE contains the following fields, in order:
14647.IX call frame information, Frame Description Entry
14648.AL
14649.LI
14650\f(CWlength\fP
14651.br
14652A uword constant that gives the number of bytes of the header
14653and instruction stream for this function (not including the length
14654field itself) (length mod <addressing unit size> == 0).
14655.LI
14656\f(CWCIE_pointer\fP
14657.br
14658A uword constant offset into the
14659.Cf .debug_frame
14660section that denotes the CIE that is associated with this FDE.
14661.LI
14662\f(CWinitial_location\fP
14663An addressing-unit sized constant indicating
14664the address of the first location associated with this table entry.
14665.LI
14666\f(CWaddress_range\fP
14667.br
14668An addressing unit sized constant indicating the
14669number of bytes of program instructions described by this entry.
14670.LI
14671\f(CWinstructions\fP
14672.br
14673A sequence of table defining instructions that are
14674described below.
14675.LE
14676.H 3 "Call Frame Instructions"
14677.IX call frame information, instructions
14678Each call frame instruction is defined to
14679take 0 or more operands.  Some of the operands may be
14680encoded as part of the opcode (see section 7.23).
14681The instructions are as follows:
14682.AL
14683.LI
14684.Cf DW_CFA_advance_loc
14685takes a single argument that represents a constant delta.
14686The required action is to
14687create a new table row with a location value that
14688is computed by taking the current entry's location value and
14689adding (delta * \f(CWcode_alignment_factor\fP).  All other values in the
14690new row are initially identical to the current row.
14691.LI
14692.Cf DW_CFA_offset
14693takes two arguments:
14694an unsigned LEB128 constant representing a factored offset
14695and a register number.  The required action is
14696to change the rule for the register indicated by the register
14697number to be an offset(N) rule with a value of
14698(N = factored offset * \f(CWdata_alignment_factor\fP).
14699.LI
14700.Cf DW_CFA_restore
14701takes a single argument that represents a register number.
14702The required action is
14703to change the rule for the indicated register
14704to the rule assigned it by the \f(CWinitial_instructions\fP in the CIE.
14705.LI
14706.Cf DW_CFA_set_loc
14707takes a single argument that represents an address.
14708The required action is to create a new table row
14709using the specified address as the location.
14710All other values in the
14711new row are initially identical to the current row.
14712The new location value should always be greater than the current
14713one.
14714.LI
14715.Cf DW_CFA_advance_loc1
14716takes a single ubyte argument that represents a constant delta.
14717This instruction is identical to
14718.Cf DW_CFA_advance_loc
14719except for the encoding and size of the delta argument.
14720.LI
14721.Cf DW_CFA_advance_loc2
14722takes a single uhalf argument that represents a constant delta.
14723This instruction is identical to
14724.Cf DW_CFA_advance_loc
14725except for the encoding and size of the delta argument.
14726.LI
14727.Cf DW_CFA_advance_loc4
14728takes a single uword argument that represents a constant delta.
14729This instruction is identical to
14730.Cf DW_CFA_advance_loc
14731except for the encoding and size of the delta argument.
14732.LI
14733.Cf DW_CFA_offset_extended
14734takes two unsigned LEB128 arguments representing a register number
14735and a factored offset.
14736This instruction is identical to
14737.Cf DW_CFA_offset
14738except for the encoding and size of the register argument.
14739.LI
14740.Cf DW_CFA_restore_extended
14741takes a single unsigned LEB128 argument that represents a register number.
14742This instruction is identical to
14743.Cf DW_CFA_restore
14744except for the encoding and size of the register argument.
14745.LI
14746.Cf DW_CFA_undefined
14747takes a single unsigned LEB128 argument that represents a register number.
14748The required action is to set the rule for the specified register
14749to ``undefined.''
14750.LI
14751.Cf DW_CFA_same_value
14752takes a single unsigned LEB128 argument that represents a register number.
14753The required action is to set the rule for the specified register
14754to ``same value.''
14755.LI
14756.Cf DW_CFA_register
14757takes two unsigned LEB128 arguments representing register numbers.
14758The required action is to set the rule for the first register
14759to be the second register.
14760.LI
14761\f(CWDW_CFA_remember_state\fP
14762.LI
14763\f(CWDW_CFA_restore_state\fP
14764.br
14765These instructions define a stack of information.  Encountering the
14766.Cf DW_CFA_remember_state
14767instruction means to save the rules for every register
14768on the current row on the stack.  Encountering the
14769.Cf DW_CFA_restore_state
14770instruction means to pop the set of rules
14771off the stack and place them in the current row.
14772.I
14773(This
14774operation is useful for compilers that move epilogue
14775code into the body of a function.)
14776.R
14777.LI
14778.Cf DW_CFA_def_cfa
14779takes two unsigned LEB128 arguments representing a
14780register number and an offset.
14781The required action is to define the current CFA rule
14782to use the provided register and offset.
14783.LI
14784.Cf DW_CFA_def_cfa_register
14785takes a single unsigned LEB128 argument representing a register
14786number.  The required action is to define the current CFA
14787rule to use the provided register (but to keep the old offset).
14788.LI
14789.Cf DW_CFA_def_cfa_offset
14790takes a single unsigned LEB128 argument representing an offset.
14791The required action is to define the current CFA
14792rule to use the provided offset (but to keep the old register).
14793.LI
14794.Cf DW_CFA_nop
14795has no arguments and no required actions.  It is used as padding
14796to make the FDE an appropriate size.
14797.LE
14798.H 3 "Call Frame Instruction Usage"
14799.IX call frame information, usage
14800.I
14801To determine the virtual unwind rule set for a given location (L1), one
14802searches through the FDE headers looking at the
14803.Cf initial_location
14804and
14805.Cf address_range
14806values to see if L1 is contained in the FDE.  If so, then:
14807.AL
14808.LI
14809Initialize a register set by reading the
14810.Cf initial_instructions
14811field of the associated CIE.
14812.LI
14813Read and process the FDE's instruction sequence until a
14814.Cf DW_CFA_advance_loc ,
14815.Cf DW_CFA_set_loc ,
14816or the end of the instruction stream is
14817encountered.
14818.LI
14819If a
14820.Cf DW_CFA_advance_loc
14821or
14822.Cf DW_CFA_set_loc
14823instruction was encountered, then
14824compute a new location value (L2).  If L1 >= L2 then process the
14825instruction and go back to step 2.
14826.LI
14827The end of the instruction stream can be thought of as a
14828.br
14829\f(CWDW_CFA_set_loc( initial_location + address_range )\fP
14830.br
14831instruction.
14832Unless the FDE is ill-formed, L1 should be less than L2 at this point.
14833.LE
14834.P
14835The rules in the register set now apply to location L1.
14836.P
14837For an example, see Appendix 5.
14838.R
14839.OP
14840.H 1 "DATA REPRESENTATION"
14841This section describes the binary representation of the debugging
14842information entry itself, of the
14843attribute types and of other fundamental elements described above.
14844.H 2 "Vendor Extensibility"
14845.IX vendor extensions
14846To reserve a portion of the DWARF name space and ranges of
14847enumeration values for use for vendor specific extensions,
14848.IX tags
14849.IX types, base
14850.IX base types
14851.IX locations, expressions
14852.IX calling conventions
14853.IX call frame information
14854special labels are reserved for tag names, attribute names,
14855base type encodings, location operations, language names,
14856calling conventions and call frame instructions.
14857The labels denoting the beginning and end of the reserved value
14858range for vendor specific extensions consist of the appropriate prefix (
14859.Cf DW_TAG ,
14860.Cf DW_AT ,
14861.Cf DW_ATE ,
14862.Cf DW_OP ,
14863.Cf DW_LANG ,
14864.CF DW_CC
14865or
14866.Cf DW_CFA
14867respectively) followed by
14868.Cf _lo_user
14869or
14870.Cf _hi_user .
14871For example, for entry tags, the special labels are
14872.Cf DW_TAG_lo_user
14873and
14874.Cf DW_TAG_hi_user .
14875Values in the range between \fIprefix\fP\f(CW_lo_user\fP and
14876\fIprefix\fP\f(CW_hi_user\fP
14877inclusive, are reserved for vendor specific extensions.
14878Vendors may use values in this range without
14879conflicting with current or future system-defined values.
14880All other values are reserved for use by the system.
14881.P
14882Vendor defined tags, attributes, base type encodings, location atoms,
14883language names, calling conventions and call frame instructions,
14884conventionally use the form
14885\fIprefix\f(CW_\fIvendor_id\f(CW_\fIname\fR, where \fIvendor_id\fP is some
14886identifying character sequence chosen so as to avoid conflicts with other
14887vendors.
14888.P
14889.IX compatibility
14890To ensure that extensions added by one vendor may be safely ignored
14891by consumers that do not understand those extensions,
14892the following rules should be followed:
14893.AL
14894.LI
14895New attributes should be added in such a way that a debugger may recognize
14896the format of a new attribute value without knowing the content of that
14897attribute value.
14898.LI
14899The semantics of any new attributes should not alter the semantics of
14900previously existing attributes.
14901.LI
14902The semantics of any new tags
14903should not conflict with the semantics of previously existing tags.
14904.LE
14905.H 2 "Reserved Error Values"
14906.IX error values
14907As a convenience for consumers of DWARF information,
14908the value 0 is reserved in the encodings for attribute names, attribute
14909forms, base type encodings, location operations, languages,
14910statement program opcodes, macro information entries and tag names
14911to represent an error condition or unknown value.  DWARF does
14912not specify names for these reserved values, since they do not
14913represent valid encodings for the given type and should not appear
14914in DWARF debugging information.
14915.H 2 "Executable Objects and Shared Objects"
14916The relocated addresses in the debugging information for an executable
14917object are virtual addresses and the relocated addresses in the
14918debugging information for a shared object are offsets relative to
14919the start of the lowest segment used by that shared object.
14920.P
14921.I
14922This requirement makes the debugging information for shared objects
14923position independent.
14924Virtual addresses in a shared object may be calculated by adding the
14925offset to the base address at which the object was attached.
14926This offset is available in the run-time linker's data structures.
14927.H 2 "File Constraints"
14928All debugging information entries in a relocatable object file,
14929executable object or shared
14930object are required to be physically contiguous.
14931.H 2 "Format of Debugging Information"
14932.IX Version 2
14933For each compilation unit compiled with a DWARF Version 2 producer,
14934.IX compilation units
14935.IX compilation units, header
14936a contribution is made to the
14937.Cf .debug_info
14938.IX \f(CW.debug_info\fP %debugai
14939section of the object file.  Each such contribution consists of
14940a compilation unit header followed by a series of debugging information
14941entries.  Unlike the information encoding for DWARF Version 1, Version 2
14942.IX Version 1
14943debugging information entries do not themselves contain the debugging
14944information entry tag or the attribute name and form encodings for
14945each attribute.  Instead, each debugging information entry begins with
14946a code that represents an entry in a separate abbreviations table.
14947This code is followed directly by a series of attribute values.
14948The appropriate entry in the abbreviations table guides the interpretation
14949of the information contained directly in the
14950.Cf .debug_info
14951section.  Each compilation unit is associated with a particular
14952abbreviation table, but multiple compilation units may share
14953the same table.
14954.IX abbreviations table
14955.I
14956.P
14957This encoding was based on the observation that typical DWARF producers
14958produce a very limited number of different types of debugging information
14959entries.  By extracting the common information from those entries
14960into a separate table, we are able to compress the generated information.
14961.R
14962.H 3 "Compilation Unit Header"
14963.IX compilation units, header
14964The header for the series of debugging information entries contributed
14965by a single compilation unit consists of the following information:
14966.AL
14967.LI
14968A 4-byte unsigned integer representing the length of the
14969.Cf .debug_info
14970contribution for that compilation unit, not including the length field itself.
14971.LI
14972A 2-byte unsigned integer representing the version of the DWARF information
14973for that compilation unit.  For DWARF Version 2, the value in this field is 2.
14974.IX Version 2
14975.LI
14976A 4-byte unsigned offset into the
14977.Cf .debug_abbrev
14978.IX \f(CW.debug_abbrev\fP %debugaab
14979section.  This offset associates the compilation unit with a particular
14980set of debugging information entry abbreviations.
14981.LI
14982.IX segmented address space
14983.IX address space, segmented
14984.IX addresses, size of
14985A 1-byte unsigned integer representing the size in bytes of an address
14986on the target architecture.  If the system uses segmented addressing,
14987this value represents the size of the offset portion of an address.
14988.IX addresses, offset portion
14989.LE
14990.P
14991.I
14992The compilation unit header does not replace the
14993.Cf DW_TAG_compile_unit
14994debugging information entry.  It is additional information that
14995is represented outside the standard DWARF tag/attributes format.
14996.R
14997.H 3 "Debugging Information Entry"
14998Each debugging information entry begins with an unsigned LEB128
14999.IX debugging information entries
15000number containing the abbreviation code for the entry.
15001This code represents an entry within the abbreviation table associated
15002with the compilation unit containing this entry.  The abbreviation
15003.IX abbreviations table
15004code is followed by a series of attribute values.
15005.IX attributes, values
15006.P
15007On some architectures, there are alignment constraints on section boundaries.
15008To make it easier to pad debugging information sections to satisfy
15009such constraints, the abbreviation code 0 is reserved.  Debugging
15010information entries consisting of only the 0 abbreviation code are considered
15011null entries.
15012.IX debugging information entries, null entries
15013.H 3 "Abbreviation Tables"
15014.IX abbreviations table
15015The abbreviation tables for all compilation units are contained in
15016a separate object file section called
15017.Cf .debug_abbrev .
15018.IX \f(CW.debug_abbrev\fP %debugaab
15019As mentioned before, multiple compilation units may share the same
15020abbreviation table.
15021.P
15022The abbreviation table for a single compilation
15023unit consists of a series of abbreviation declarations.
15024Each declaration specifies the tag and attributes for a particular
15025.IX tags
15026.IX attributes
15027form of debugging information entry.  Each declaration begins with
15028an unsigned LEB128 number representing the abbreviation code itself.
15029It is this code that appears at the beginning of a debugging information
15030entry in the
15031.Cf .debug_info
15032section.  As described above, the abbreviation code 0 is reserved for null
15033debugging information entries.
15034The abbreviation code is followed by another unsigned LEB128
15035number that encodes the entry's tag.
15036.IX tags
15037.nr aX \n(Fg+1
15038.nr bX \n(Fg+2
15039The encodings for the tag names are given in Figures \n(aX
15040and \n(bX.
15041.DF
15042.TS
15043box center;
15044l l
15045lf(CW) lf(CW)
15046.
15047Tag name	Value
15048_
15049DW_TAG_array_type	0x01
15050DW_TAG_class_type	0x02
15051DW_TAG_entry_point	0x03
15052DW_TAG_enumeration_type	0x04
15053DW_TAG_formal_parameter	0x05
15054DW_TAG_imported_declaration	0x08
15055DW_TAG_label	0x0a
15056DW_TAG_lexical_block	0x0b
15057DW_TAG_member	0x0d
15058DW_TAG_pointer_type	0x0f
15059DW_TAG_reference_type	0x10
15060DW_TAG_compile_unit	0x11
15061DW_TAG_string_type	0x12
15062DW_TAG_structure_type	0x13
15063DW_TAG_subroutine_type	0x15
15064DW_TAG_typedef	0x16
15065DW_TAG_union_type	0x17
15066DW_TAG_unspecified_parameters	0x18
15067DW_TAG_variant	0x19
15068DW_TAG_common_block	0x1a
15069DW_TAG_common_inclusion	0x1b
15070DW_TAG_inheritance	0x1c
15071DW_TAG_inlined_subroutine	0x1d
15072DW_TAG_module	0x1e
15073DW_TAG_ptr_to_member_type	0x1f
15074DW_TAG_set_type	0x20
15075DW_TAG_subrange_type	0x21
15076DW_TAG_with_stmt	0x22
15077DW_TAG_access_declaration	0x23
15078DW_TAG_base_type	0x24
15079DW_TAG_catch_block	0x25
15080DW_TAG_const_type	0x26
15081DW_TAG_constant	0x27
15082DW_TAG_enumerator	0x28
15083DW_TAG_file_type	0x29
15084.TE
15085.FG "Tag encodings (part 1)"
15086.DE
15087.DF
15088.TS
15089box center;
15090l l
15091lf(CW) lf(CW)
15092.
15093Tag name	Value
15094_
15095DW_TAG_friend	0x2a
15096DW_TAG_namelist	0x2b
15097DW_TAG_namelist_item	0x2c
15098DW_TAG_packed_type	0x2d
15099DW_TAG_subprogram	0x2e
15100DW_TAG_template_type_param	0x2f
15101DW_TAG_template_value_param	0x30
15102DW_TAG_thrown_type	0x31
15103DW_TAG_try_block	0x32
15104DW_TAG_variant_part	0x33
15105DW_TAG_variable	0x34
15106DW_TAG_volatile_type	0x35
15107DW_TAG_lo_user	0x4080
15108DW_TAG_hi_user	0xffff
15109.TE
15110.FG "Tag encodings (part 2)"
15111.DE
15112.P
15113Following the tag encoding is a 1-byte value that determines
15114whether a debugging information entry using this abbreviation
15115has child entries or not.  If the value is
15116.Cf DW_CHILDREN_yes ,
15117the next physically succeeding entry of any debugging information
15118entry using this abbreviation is the first child of the prior entry.
15119If the 1-byte value following the abbreviation's tag encoding
15120is
15121.Cf DW_CHILDREN_no ,
15122the next physically succeeding entry of any debugging information entry
15123using this abbreviation is a sibling of the prior entry.  (Either
15124the first child or sibling entries may be null entries).
15125.IX debugging information entries, siblings
15126.IX debugging information entries, child entries
15127.IX debugging information entries, null entries
15128.nr aX \n(Fg+1
15129The encodings for the child determination byte are given in Figure \n(aX.
15130(As mentioned in section 2.3, each chain of sibling entries is
15131terminated by a null entry).
15132.IX debugging information entries, null entries
15133.DF
15134.TS
15135box center;
15136l l
15137lf(CW) lf(CW)
15138.
15139Child determination name	Value
15140_
15141DW_CHILDREN_no	0
15142DW_CHILDREN_yes	1
15143.TE
15144.FG "Child determination encodings"
15145.DE
15146.P
15147Finally, the child encoding is followed by a series of attribute specifications.
15148.IX attributes
15149Each attribute specification consists of two parts.  The first part
15150is an unsigned LEB128 number representing the attribute's name.
15151.IX attributes, names
15152The second part is an unsigned LEB128 number representing the
15153attribute's form.  The series of attribute specifications ends
15154.IX attributes, forms
15155with an entry containing 0 for the name and 0 for the form.
15156.P
15157The attribute form
15158.Cf DW_FORM_indirect
15159is a special case.  For attributes with this form, the attribute value
15160itself in the
15161.Cf .debug_info
15162section begins with an unsigned LEB128 number that represents its form.
15163This allows producers to choose forms for particular attributes dynamically,
15164without having to add a new entry to the abbreviation table.
15165.P
15166The abbreviations for a given compilation unit end with an entry
15167consisting of a 0 byte for the abbreviation code.
15168.I
15169.P
15170See Appendix 2 for a depiction of the organization
15171of the debugging information.
15172.R
15173.H 3 "Attribute Encodings"
15174.nr aX \n(Fg+1
15175.nr bX \n(Fg+2
15176The encodings for the attribute names are given in Figures \n(aX
15177and \n(bX.
15178.DF
15179.TS
15180box center;
15181l l l
15182lf(CW) lf(CW) l
15183.
15184Attribute name	Value	Classes
15185_
15186DW_AT_sibling	0x01	reference
15187DW_AT_location	0x02	block, constant
15188DW_AT_name	0x03	string
15189DW_AT_ordering	0x09	constant
15190DW_AT_byte_size	0x0b	constant
15191DW_AT_bit_offset	0x0c	constant
15192DW_AT_bit_size	0x0d	constant
15193DW_AT_stmt_list	0x10	constant
15194DW_AT_low_pc	0x11	address
15195DW_AT_high_pc	0x12	address
15196DW_AT_language	0x13	constant
15197DW_AT_discr	0x15	reference
15198DW_AT_discr_value	0x16	constant
15199DW_AT_visibility	0x17	constant
15200DW_AT_import	0x18	reference
15201DW_AT_string_length	0x19	block, constant
15202DW_AT_common_reference	0x1a	reference
15203DW_AT_comp_dir	0x1b	string
15204DW_AT_const_value	0x1c	string, constant, block
15205DW_AT_containing_type	0x1d	reference
15206DW_AT_default_value	0x1e	reference
15207DW_AT_inline	0x20	constant
15208DW_AT_is_optional	0x21	flag
15209DW_AT_lower_bound	0x22	constant, reference
15210DW_AT_producer	0x25	string
15211DW_AT_prototyped	0x27	flag
15212DW_AT_return_addr	0x2a	block, constant
15213DW_AT_start_scope	0x2c	constant
15214DW_AT_stride_size	0x2e	constant
15215DW_AT_upper_bound	0x2f	constant, reference
15216.TE
15217.FG "Attribute encodings, part 1"
15218.DE
15219.DF
15220.TS
15221box center;
15222l l l
15223lf(CW) lf(CW) l
15224.
15225Attribute name	Value	Classes
15226_
15227DW_AT_abstract_origin	0x31	reference
15228DW_AT_accessibility	0x32  	constant
15229DW_AT_address_class	0x33	constant
15230DW_AT_artificial	0x34	flag
15231DW_AT_base_types	0x35	reference
15232DW_AT_calling_convention	0x36	constant
15233DW_AT_count	0x37	constant, reference
15234DW_AT_data_member_location	0x38	block, reference
15235DW_AT_decl_column	0x39	constant
15236DW_AT_decl_file	0x3a	constant
15237DW_AT_decl_line	0x3b	constant
15238DW_AT_declaration	0x3c 	flag
15239DW_AT_discr_list	0x3d 	block
15240DW_AT_encoding	0x3e	constant
15241DW_AT_external	0x3f	flag
15242DW_AT_frame_base	0x40	block, constant
15243DW_AT_friend	0x41	reference
15244DW_AT_identifier_case	0x42	constant
15245DW_AT_macro_info	0x43	constant
15246DW_AT_namelist_item	0x44	block
15247DW_AT_priority	0x45 	reference
15248DW_AT_segment	0x46	block, constant
15249DW_AT_specification	0x47	reference
15250DW_AT_static_link	0x48	block, constant
15251DW_AT_type	0x49	reference
15252DW_AT_use_location	0x4a	block, constant
15253DW_AT_variable_parameter	0x4b 	flag
15254DW_AT_virtuality	0x4c 	constant
15255DW_AT_vtable_elem_location	0x4d	block, reference
15256DW_AT_lo_user	0x2000	\(em
15257DW_AT_hi_user	0x3fff	\(em
15258.TE
15259.FG "Attribute encodings, part 2"
15260.DE
15261.P
15262.IX attributes, forms
15263The attribute form governs how the value of the attribute is encoded.
15264The possible forms may belong to one of the following
15265form classes:
15266.VL 18
15267.LI address
15268.IX attributes, addresses
15269Represented as an object of appropriate size to hold an
15270address on the target machine (\f(CWDW_FORM_addr\fP).
15271This address is relocatable in
15272a relocatable object file and is relocated in an
15273executable file or shared object.
15274.LI "block"
15275.IX attributes, blocks
15276Blocks come in four forms.  The first consists of a 1-byte length
15277followed by 0 to 255 contiguous information bytes  (\f(CWDW_FORM_block1\fP).
15278The second consists of a 2-byte length
15279followed by 0 to 65,535 contiguous information bytes  (\f(CWDW_FORM_block2\fP).
15280The third consists of a 4-byte length
15281followed by 0 to 4,294,967,295 contiguous information bytes  (\f(CWDW_FORM_block4\fP).
15282The fourth consists of an unsigned LEB128 length followed by the number
15283of bytes specified by the length (\f(CWDW_FORM_block\fP).
15284In all forms, the length is the number of information bytes that follow.
15285The information bytes may contain any mixture of relocated (or
15286relocatable) addresses, references to other debugging information entries or
15287data bytes.
15288.LI "constant"
15289.IX attributes, constants
15290There are six forms of constants:
15291one, two, four and eight byte values (respectively,
15292.Cf DW_FORM_data1 ,
15293.Cf DW_FORM_data2 ,
15294.Cf DW_FORM_data4 ,
15295and
15296.Cf DW_FORM_data8 ).
15297.IX variable length data
15298.IX LEB128
15299There are also variable length constant data forms encoded
15300using LEB128 numbers (see below).  Both signed (\f(CWDW_FORM_sdata\fP)
15301and unsigned (\f(CWDW_FORM_udata\fP) variable length constants are available.
15302.LI flag
15303.IX attributes, flags
15304A flag is represented as a single byte of data (\f(CWDW_FORM_flag\fP).
15305If the flag has value zero, it indicates the absence of the attribute.
15306If the flag has a non-zero value, it indicates the presence of
15307the attribute.
15308.LI reference
15309.IX attributes, references
15310There are two types of reference.  The first is an
15311offset relative to the first byte of the compilation unit header
15312for the compilation unit containing the reference.
15313The offset must refer to an entry within
15314that same compilation unit.  There are five forms for this
15315type of reference:
15316one, two, four and eight byte offsets (respectively,
15317.Cf DW_FORM_ref1 ,
15318.Cf DW_FORM_ref2 ,
15319.Cf DW_FORM_ref4 ,
15320and
15321.Cf DW_FORM_ref8 ).
15322There are is also an unsigned variable length offset encoded
15323using LEB128 numbers (\f(CWDW_FORM_ref_udata\fP).
15324.P
15325The second type of reference
15326is the address of any debugging information entry within
15327the same executable or shared object; it may refer to an entry
15328in a different compilation unit from the unit containing the
15329reference.  This type of reference (\f(CWDW_FORM_ref_addr\fP) is the
15330size of an address on the target architecture; it is relocatable
15331in a relocatable object file and relocated in an executable file
15332or shared object.
15333.P
15334.I
15335The use of compilation unit relative references will reduce
15336the number of link-time relocations and so speed up linking.
15337.P
15338The use of address-type references allows for the commonization
15339of information, such as types, across compilation units.
15340.R
15341.LI string
15342.IX attributes, strings
15343A string is a sequence of contiguous non-null bytes followed by one null
15344byte.  A string may be represented immediately in the debugging information
15345entry itself (\f(CWDW_FORM_string\fP), or may be represented as a 4-byte offset
15346into a string table contained in the
15347.Cf .debug_str
15348.IX \f(CW.debug_str\fP %debugas
15349.IX string table
15350section of the object file (\f(CWDW_FORM_strp\fP).
15351.LE
15352.P
15353.nr aX \n(Fg+1
15354The form encodings are listed in Figure \n(aX.
15355.DF
15356.TS
15357box center;
15358l l l
15359lf(CW) lf(CW) l
15360.
15361Form name	Value	Class
15362_
15363DW_FORM_addr	0x01	address
15364DW_FORM_block2	0x03	block
15365DW_FORM_block4	0x04	block
15366DW_FORM_data2	0x05	constant
15367DW_FORM_data4	0x06	constant
15368DW_FORM_data8	0x07	constant
15369DW_FORM_string	0x08	string
15370DW_FORM_block	0x09	block
15371DW_FORM_block1	0x0a	block
15372DW_FORM_data1	0x0b	constant
15373DW_FORM_flag	0x0c	flag
15374DW_FORM_sdata	0x0d	constant
15375DW_FORM_strp	0x0e	string
15376DW_FORM_udata	0x0f	constant
15377DW_FORM_ref_addr	0x10	reference
15378DW_FORM_ref1	0x11	reference
15379DW_FORM_ref2	0x12	reference
15380DW_FORM_ref4	0x13	reference
15381DW_FORM_ref8	0x14	reference
15382DW_FORM_ref_udata	0x15	reference
15383DW_FORM_indirect	0x16	(see section 7.5.3)
15384.TE
15385.FG "Attribute form encodings"
15386.DE
15387.H 2 "Variable Length Data"
15388.IX variable length data
15389.IX LEB128
15390The special constant data forms
15391.Cf DW_FORM_sdata
15392and
15393.Cf DW_FORM_udata
15394are encoded using ``Little Endian Base 128'' (LEB128)
15395numbers. LEB128 is a scheme for encoding integers densely that
15396exploits the assumption that most integers are small in magnitude.
15397(This encoding is equally suitable whether the target machine
15398architecture represents data in big-endian or little-endian order.
15399It is ``little endian'' only in the sense that it avoids using space
15400to represent the ``big'' end of an unsigned integer, when the big
15401end is all zeroes or sign extension bits).
15402.P
15403.Cf DW_FORM_udata
15404(unsigned LEB128) numbers are encoded as follows:
15405start at the
15406low order end of an unsigned integer and chop it into 7-bit chunks.
15407Place each chunk into the low order 7 bits of a byte.  Typically,
15408several of the high order bytes will be zero; discard them.  Emit the
15409remaining bytes in a stream, starting with the low order byte;
15410set the high order bit on each byte except the last emitted byte.
15411The high bit of zero on the last byte indicates to the decoder
15412that it has encountered the last byte.
15413.P
15414The integer zero is a special case, consisting of a single zero byte.
15415.P
15416.I
15417.nr aX \n(Fg+1
15418Figure \n(aX gives some examples of
15419.Cf DW_FORM_udata
15420numbers.  The
15421.Cf 0x80
15422in each case is the high order bit of the byte, indicating that
15423an additional byte follows:
15424.R
15425.DF
15426.TS
15427box center;
15428l l l
15429nf(CW) lf(CW) lf(CW)
15430.
15431Number	First byte	Second byte
15432_
154332	2	\(em
15434127	127	\(em
15435128	0+0x80	1
15436129	1+0x80	1
15437130	2+0x80	1
1543812857	57+0x80	100
15439.TE
15440.FG "Examples of unsigned LEB128 encodings"
15441.DE
15442.P
15443The encoding for
15444.Cf DW_FORM_sdata
15445(signed, 2s complement LEB128) numbers is similar, except that the
15446criterion for discarding high order bytes is not whether they are
15447zero, but whether they consist entirely of sign extension bits.
15448Consider the 32-bit integer
15449.Cf -2 .
15450The three high level bytes of the number are sign extension, thus LEB128
15451would represent it as a single byte containing the low order 7 bits,
15452with the high order bit cleared to indicate the end of the byte
15453stream.  Note that there is nothing within the LEB128 representation
15454that indicates whether an encoded number is signed or unsigned.
15455The decoder must know what type of number to expect.
15456.P
15457.I
15458.nr aX \n(Fg+1
15459Figure \n(aX gives some examples of
15460.Cf DW_FORM_sdata
15461numbers.
15462.R
15463.P
15464.I
15465Appendix 4 gives algorithms for encoding and decoding these forms.
15466.R
15467.DF
15468.TS
15469box center;
15470l l l
15471nf(CW) lf(CW) lf(CW)
15472.
15473Number	First byte	Second byte
15474_
154752	2	\(em
15476-2	0x7e	\(em
15477127	127+0x80	0
15478-127	1+0x80	0x7f
15479128	0+0x80	1
15480-128	0+0x80	0x7f
15481129	1+0x80	1
15482-129	0x7f+0x80	0x7e
15483.TE
15484.FG "Examples of signed LEB128 encodings"
15485.DE
15486.H 2 "Location Descriptions"
15487.H 3 "Location Expressions"
15488.IX locations, descriptions
15489.IX locations, expressions
15490A location expression is stored in a block of contiguous bytes.
15491The bytes form a set of operations.
15492Each location operation has a 1-byte code
15493that identifies that operation.  Operations can be followed
15494by one or more bytes of additional data.  All operations in a
15495location expression are concatenated from left to right.
15496The encodings for the operations in a location expression
15497.IX locations, expressions
15498.nr aX \n(Fg+1
15499.nr bX \n(Fg+2
15500are described in Figures \n(aX and \n(bX.
15501.DS
15502.TS
15503center box;
15504l l l l
15505lf(CW) lf(CW) l l
15506.
15507Operation	Code	No. of Operands	Notes
15508_
15509DW_OP_addr	0x03	1	constant address (size target specific)
15510DW_OP_deref	0x06	0
15511DW_OP_const1u	0x08	1	1-byte constant
15512DW_OP_const1s	0x09	1	1-byte constant
15513DW_OP_const2u	0x0a	1	2-byte constant
15514DW_OP_const2s	0x0b	1	2-byte constant
15515DW_OP_const4u	0x0c	1	4-byte constant
15516DW_OP_const4s	0x0d	1	4-byte constant
15517DW_OP_const8u	0x0e	1	8-byte constant
15518DW_OP_const8s	0x0f	1	8-byte constant
15519DW_OP_constu	0x10	1	ULEB128 constant
15520DW_OP_consts	0x11	1	SLEB128 constant
15521DW_OP_dup	0x12	0
15522DW_OP_drop	0x13	0
15523DW_OP_over	0x14	0
15524DW_OP_pick	0x15	1	1-byte stack index
15525DW_OP_swap	0x16	0
15526DW_OP_rot	0x17	0
15527DW_OP_xderef	0x18	0
15528DW_OP_abs	0x19	0
15529DW_OP_and	0x1a	0
15530DW_OP_div	0x1b	0
15531DW_OP_minus	0x1c	0
15532DW_OP_mod	0x1d	0
15533DW_OP_mul	0x1e	0
15534DW_OP_neg	0x1f	0
15535DW_OP_not	0x20	0
15536DW_OP_or	0x21	0
15537DW_OP_plus	0x22	0
15538DW_OP_plus_uconst	0x23	1	ULEB128 addend
15539DW_OP_shl	0x24	0
15540DW_OP_shr	0x25	0
15541DW_OP_shra	0x26	0
15542.TE
15543.FG "Location operation encodings, part 1"
15544.DE
15545.DS
15546.TS
15547center box;
15548l l l l
15549lf(CW) lf(CW) l l
15550.
15551Operation	Code	No. of Operands	Notes
15552_
15553DW_OP_xor	0x27	0
15554DW_OP_skip	0x2f	1	signed 2-byte constant
15555DW_OP_bra	0x28	1	signed 2-byte constant
15556DW_OP_eq	0x29	0
15557DW_OP_ge	0x2a	0
15558DW_OP_gt	0x2b	0
15559DW_OP_le	0x2c	0
15560DW_OP_lt	0x2d	0
15561DW_OP_ne	0x2e	0
15562DW_OP_lit0	0x30	0	literals 0..31 = (DW_OP_LIT0|literal)
15563DW_OP_lit1	0x31	0
15564\.\.\.
15565DW_OP_lit31	0x4f	0
15566DW_OP_reg0	0x50	0	reg 0..31 = (DW_OP_REG0|regnum)
15567DW_OP_reg1	0x51	0
15568\.\.\.
15569DW_OP_reg31	0x6f	0
15570DW_OP_breg0	0x70	1	SLEB128 offset
15571DW_OP_breg1	0x71	1	base reg 0..31 = (DW_OP_BREG0|regnum)
15572\.\.\.
15573DW_OP_breg31	0x8f	1
15574DW_OP_regx	0x90	1	ULEB128 register
15575DW_OP_fbreg	0x91	1	SLEB128 offset
15576DW_OP_bregx	0x92	2	ULEB128 register followed by SLEB128 offset
15577DW_OP_piece	0x93	1	ULEB128 size of piece addressed
15578DW_OP_deref_size	0x94	1	1-byte size of data retrieved
15579DW_OP_xderef_size	0x95	1	1-byte size of data retrieved
15580DW_OP_nop	0x96	0
15581DW_OP_lo_user	0xe0
15582DW_OP_hi_user	0xff
15583.TE
15584.FG "Location operation encodings, part 2"
15585.DE
15586.H 3 "Location Lists"
15587.IX locations, lists
15588Each entry in a location list consists of two relative addresses
15589followed by a 2-byte length, followed by a block of contiguous
15590bytes.  The length specifies the number of bytes in the block
15591that follows.  The two addresses are the same size as used by
15592.Cf DW_FORM_addr
15593on the target machine.
15594.H 2 "Base Type Encodings"
15595.nr aX \n(Fg+1
15596.IX base types
15597.IX types, base
15598The values of the constants used in the
15599.Cf DW_AT_encoding
15600attribute are given in Figure \n(aX.
15601.DF
15602.TS
15603box center;
15604l l
15605lf(CW) lf(CW)
15606.
15607Base type encoding name	Value
15608_
15609DW_ATE_address	0x1
15610DW_ATE_boolean	0x2
15611DW_ATE_complex_float	0x3
15612DW_ATE_float	0x4
15613DW_ATE_signed	0x5
15614DW_ATE_signed_char	0x6
15615DW_ATE_unsigned	0x7
15616DW_ATE_unsigned_char	0x8
15617DW_ATE_lo_user	0x80
15618DW_ATE_hi_user	0xff
15619.TE
15620.FG "Base type encoding values"
15621.DE
15622.H 2 "Accessibility Codes"
15623.nr aX \n(Fg+1
15624.IX accessibility
15625.IX declarations, accessibility
15626The encodings of the constants used in the
15627.Cf DW_AT_accessibility
15628attribute are given in Figure \n(aX.
15629.DF
15630.TS
15631box center;
15632l l
15633lf(CW) lf(CW)
15634.
15635Accessibility code name	Value
15636_
15637DW_ACCESS_public	1
15638DW_ACCESS_protected	2
15639DW_ACCESS_private	3
15640.TE
15641.FG "Accessibility encodings"
15642.DE
15643.H 2 "Visibility Codes"
15644.nr aX \n(Fg+1
15645The encodings of the constants used in the
15646.Cf DW_AT_visibility
15647.IX visibility
15648.IX declarations, visibility
15649attribute are given in Figure \n(aX.
15650.DF
15651.TS
15652box center;
15653l l
15654lf(CW) lf(CW)
15655.
15656Visibility code name	Value
15657_
15658DW_VIS_local	1
15659DW_VIS_exported	2
15660DW_VIS_qualified	3
15661.TE
15662.FG "Visibility encodings"
15663.DE
15664.H 2 "Virtuality Codes"
15665.nr aX \n(Fg+1
15666.IX virtuality
15667The encodings of the constants used in the
15668.Cf DW_AT_virtuality
15669attribute are given in Figure \n(aX.
15670.DF
15671.TS
15672box center;
15673l l
15674lf(CW) lf(CW)
15675.
15676Virtuality code name	Value
15677_
15678DW_VIRTUALITY_none	0
15679DW_VIRTUALITY_virtual	1
15680DW_VIRTUALITY_pure_virtual	2
15681.TE
15682.FG "Virtuality encodings"
15683.DE
15684.H 2 "Source Languages"
15685.nr aX \n(Fg+1
15686.IX languages
15687The encodings for source languages are given in Figure \n(aX.
15688Names marked with \(dg and their associated
15689values are reserved, but the languages
15690they represent are not supported in DWARF Version 2.
15691.DF
15692.TS
15693box center;
15694l l
15695lf(CW) lf(CW)
15696.
15697Language name	Value
15698_
15699DW_LANG_C89	0x0001
15700DW_LANG_C	0x0002
15701DW_LANG_Ada83\(dg	0x0003
15702DW_LANG_C_plus_plus	0x0004
15703DW_LANG_Cobol74\(dg	0x0005
15704DW_LANG_Cobol85\(dg	0x0006
15705DW_LANG_Fortran77	0x0007
15706DW_LANG_Fortran90	0x0008
15707DW_LANG_Pascal83	0x0009
15708DW_LANG_Modula2	0x000a
15709DW_LANG_lo_user	0x8000
15710DW_LANG_hi_user	0xffff
15711.TE
15712.FG "Language encodings"
15713.DE
15714.H 2 "Address Class Encodings"
15715.IX addresses, class
15716The value of the common address class encoding
15717.Cf DW_ADDR_none
15718is 0.
15719.H 2 "Identifier Case"
15720.IX identifiers, case
15721The encodings of the constants used in the
15722.Cf DW_AT_identifier_case
15723.nr aX \n(Fg+1
15724attribute are given in Figure \n(aX.
15725.DF
15726.TS
15727box center;
15728l l
15729lf(CW) lf(CW)
15730.
15731Identifier Case Name	Value
15732_
15733DW_ID_case_sensitive	0
15734DW_ID_up_case	1
15735DW_ID_down_case	2
15736DW_ID_case_insensitive	3
15737.TE
15738.FG "Identifier case encodings"
15739.DE
15740.H 2 "Calling Convention Encodings"
15741.IX calling conventions
15742The encodings for the values of the
15743.Cf DW_AT_calling_convention
15744.nr aX \n(Fg+1
15745attribute are given in Figure \n(aX.
15746.DF
15747.TS
15748box center;
15749l l
15750lf(CW) lf(CW)
15751.
15752Calling Convention Name	Value
15753_
15754DW_CC_normal	0x1
15755DW_CC_program	0x2
15756DW_CC_nocall	0x3
15757DW_CC_lo_user	0x40
15758DW_CC_hi_user	0xff
15759.TE
15760.FG "Calling convention encodings"
15761.DE
15762.H 2 "Inline Codes"
15763.IX subroutines, inline
15764The encodings of the constants used in the
15765.Cf DW_AT_inline
15766.nr aX \n(Fg+1
15767attribute are given in Figure \n(aX.
15768.DF
15769.TS
15770box center;
15771l l
15772lf(CW) lf(CW)
15773.
15774Inline Code Name	Value
15775_
15776DW_INL_not_inlined	0
15777DW_INL_inlined	1
15778DW_INL_declared_not_inlined	2
15779DW_INL_declared_inlined	3
15780.TE
15781.FG "Inline encodings"
15782.DE
15783.H 2 "Array Ordering"
15784.IX arrays, ordering
15785The encodings for the values of the order attributes of arrays
15786.nr aX \n(Fg+1
15787is given in Figure \n(aX.
15788.DF
15789.TS
15790box center;
15791l l
15792lf(CW) lf(CW)
15793.
15794Ordering name	Value
15795_
15796DW_ORD_row_major	0
15797DW_ORD_col_major	1
15798.TE
15799.FG "Ordering encodings"
15800.DE
15801.H 2 "Discriminant Lists"
15802.IX variants
15803.IX discriminated unions
15804.IX discriminants
15805The descriptors used in the
15806.Cf DW_AT_dicsr_list
15807attribute are encoded as 1-byte constants.
15808.nr aX \n(Fg+1
15809The defined values are presented in Figure \n(aX.
15810.DF
15811.TS
15812box center;
15813l l
15814lf(CW) lf(CW)
15815.
15816Descriptor Name	Value
15817_
15818DW_DSC_label	0
15819DW_DSC_range	1
15820.TE
15821.FG "Discriminant descriptor encodings"
15822.DE
15823.H 2 "Name Lookup Table"
15824.IX lookup, by name
15825Each set of entries in the table of global names contained in the
15826.Cf .debug_pubnames
15827.IX \f(CW.debug_pubnames\fP %debugap
15828section begins with a header consisting of: a 4-byte length containing
15829the length of the set of entries for this compilation unit, not including
15830the length field itself; a 2-byte version identifier containing
15831the value 2 for DWARF Version 2; a 4-byte offset into the
15832.Cf .debug_info
15833section; and a 4-byte length containing the size in bytes
15834of the contents of the
15835.Cf .debug_info
15836section generated to represent this compilation unit.
15837This header is followed by a series of tuples.
15838Each tuple consists of a 4-byte offset
15839followed by a string of non-null bytes terminated by one null byte.
15840Each set is terminated by a 4-byte word containing the value 0.
15841.H 2 "Address Range Table"
15842.IX lookup, by address
15843Each set of entries in the table of address ranges contained in the
15844.Cf .debug_aranges
15845.IX \f(CW.debug_aranges\fP %debugaar
15846section begins with a header consisting of: a 4-byte length containing
15847the length of the set of entries for this compilation unit, not including
15848the length field itself; a 2-byte version identifier containing
15849the value 2 for DWARF Version 2; a 4-byte offset into the
15850.Cf .debug_info
15851section;  a 1-byte unsigned integer containing the size in bytes of an
15852address (or the offset portion of an address for segmented addressing)
15853.IX addresses, offset portion
15854.IX addresses, size of
15855on the target system; and a 1-byte unsigned integer containing the
15856size in bytes of a segment descriptor on the target system.
15857This header is followed by a series of tuples.
15858Each tuple consists of an address and a length, each
15859in the size appropriate for an address on the target architecture.
15860The first tuple following the header in each set begins at
15861an offset that is a multiple of the size of a single tuple
15862(that is, twice the size of an address).  The header is
15863padded, if necessary, to the appropriate boundary.
15864Each set of tuples is terminated by a 0 for the address and 0 for the length.
15865.H 2 "Line Number Information"
15866.IX line number information
15867.IX line number information, definitions
15868The sizes of the integers used in the line number and
15869call frame information sections are as follows:
15870.VL 15
15871.LI "sbyte"
15872Signed 1-byte value.
15873.LI "ubyte"
15874Unsigned 1-byte value.
15875.LI "uhalf"
15876Unsigned 2-byte value.
15877.LI "sword"
15878Signed 4-byte value.
15879.LI "uword"
15880Unsigned 4-byte value.
15881.LI
15882.LE
15883.P
15884.IX Version 2
15885The version number in the statement program prologue is 2 for
15886DWARF Version 2.
15887The boolean values ``true'' and ``false'' used by the statement
15888information program are encoded as a single byte containing the
15889value 0 for ``false,'' and a non-zero value for ``true.''
15890The encodings for the pre-defined standard opcodes are given
15891.IX line number information, standard opcodes
15892.nr aX \n(Fg+1
15893in Figure \n(aX.
15894.DF
15895.TS
15896box center;
15897l l
15898lf(CW)	lf(CW)
15899.
15900Opcode Name	Value
15901_
15902DW_LNS_copy	1
15903DW_LNS_advance_pc	2
15904DW_LNS_advance_line	3
15905DW_LNS_set_file	4
15906DW_LNS_set_column	5
15907DW_LNS_negate_stmt	6
15908DW_LNS_set_basic_block	7
15909DW_LNS_const_add_pc	8
15910DW_LNS_fixed_advance_pc	9
15911.TE
15912.FG "Standard Opcode Encodings"
15913.DE
15914The encodings for the pre-defined extended opcodes are given
15915.IX line number information, extended opcodes
15916.nr aX \n(Fg+1
15917in Figure \n(aX.
15918.DF
15919.TS
15920box center;
15921l l
15922lf(CW) lf(CW)
15923.
15924Opcode Name	Value
15925_
15926DW_LNE_end_sequence	1
15927DW_LNE_set_address	2
15928DW_LNE_define_file	3
15929.TE
15930.FG "Extended Opcode Encodings"
15931.DE
15932.H 2 "Macro Information"
15933.IX macro information
15934.IX source, files
15935The source line numbers and source file indices encoded in the
15936macro information section are represented as unsigned LEB128 numbers
15937as are the constants in an
15938.Cf DW_MACINFO_vendor_ext
15939entry.
15940The macinfo type is encoded as a single byte.  The encodings are given
15941.nr aX \n(Fg+1
15942in Figure \n(aX.
15943.DF
15944.TS
15945box center;
15946l l
15947lf(CW)	lf(CW)
15948.
15949Macinfo Type Name	Value
15950_
15951DW_MACINFO_define	1
15952DW_MACINFO_undef	2
15953DW_MACINFO_start_file	3
15954DW_MACINFO_end_file	4
15955DW_MACINFO_vendor_ext	255
15956.TE
15957.FG "Macinfo Type Encodings"
15958.DE
15959.H 2 "Call Frame Information"
15960.IX call frame information
15961The value of the CIE id in the CIE header is
15962.Cf 0xffffffff .
15963The initial value of the CIE version number is 1.
15964.P
15965Call frame instructions are encoded in one or more bytes.
15966.IX call frame information, instructions
15967The primary opcode is encoded in the high order two bits of
15968the first byte (that is, opcode = byte >> 6).
15969An operand or extended opcode may be encoded in the low order
159706 bits.   Additional operands are encoded in subsequent bytes.
15971The instructions and their encodings are presented
15972.nr aX \n(Fg+1
15973in Figure \n(aX.
15974.DS
15975.TS
15976center box;
15977l l l l l
15978lf(CW) lf(CW) l l
15979lf(CW) lf(CW) l l
15980lf(CW) lf(CW) l l
15981lf(CW) lf(CW) lf(CW) l.
15982Instruction	High 2 Bits	Low 6 Bits	Operand 1	Operand 2
15983_
15984DW_CFA_advance_loc	0x1	delta
15985DW_CFA_offset	0x2	register	ULEB128 offset
15986DW_CFA_restore	0x3	register
15987DW_CFA_set_loc	0	0x01	address
15988DW_CFA_advance_loc1	0	0x02	1-byte delta
15989DW_CFA_advance_loc2	0	0x03	2-byte delta
15990DW_CFA_advance_loc4	0	0x04	4-byte delta
15991DW_CFA_offset_extended	0	0x05	ULEB128 register	ULEB128 offset
15992DW_CFA_restore_extended	0	0x06	ULEB128 register
15993DW_CFA_undefined	0	0x07	ULEB128 register
15994DW_CFA_same_value	0	0x08	ULEB128 register
15995DW_CFA_register	0	0x09	ULEB128 register	ULEB128 register
15996DW_CFA_remember_state	0	0x0a
15997DW_CFA_restore_state	0	0x0b
15998DW_CFA_def_cfa	0	0x0c	ULEB128 register	ULEB128 offset
15999DW_CFA_def_cfa_register	0	0x0d	ULEB128 register
16000DW_CFA_def_cfa_offset	0	0x0e	ULEB128 offset
16001DW_CFA_nop	0	0
16002DW_CFA_lo_user	0	0x1c
16003DW_CFA_hi_user	0	0x3f
16004.TE
16005.FG "Call frame instruction encodings"
16006.DE
16007.H 2 "Dependencies"
16008The debugging information in this format is intended to exist in the
16009.Cf .debug_abbrev ,
16010.Cf .debug_aranges ,
16011.Cf .debug_frame ,
16012.Cf .debug_info ,
16013.Cf .debug_line ,
16014.Cf .debug_loc ,
16015.Cf .debug_macinfo ,
16016.Cf .debug_pubnames
16017and
16018.Cf .debug_str
16019.IX \f(CW.debug_abbrev\fP %debugaab
16020.IX \f(CW.debug_aranges\fP %debugaar
16021.IX \f(CW.debug_frame\fP %debugaf
16022.IX \f(CW.debug_info\fP %debugai
16023.IX \f(CW.debug_line\fP %debugali
16024.IX \f(CW.debug_loc\fP %debugalo
16025.IX \f(CW.debug_macinfo\fP %debugam
16026.IX \f(CW.debug_pubnames\fP %debugap
16027.IX \f(CW.debug_str\fP %debugas
16028sections of an object file.
16029The information is not word-aligned, so the assembler must provide a
16030way for the compiler to produce 2-byte and 4-byte quantities without
16031alignment restrictions, and the linker must be able to
16032relocate a 4-byte reference at an arbitrary alignment.
16033In target architectures with 64-bit addresses, the assembler and linker
16034must similarly handle 8-byte references at arbitrary alignments.
16035.OP
16036.H 1 "FUTURE DIRECTIONS"
16037The \*(iX \*(tE is working on a specification for a set of interfaces
16038for reading DWARF information, that will hide changes in the
16039representation of that information from its consumers.  It is
16040hoped that using these interfaces will make the transition from
16041DWARF Version 1 to Version 2 much simpler and will make it
16042easier for a single consumer to support objects using either
16043Version 1 or Version 2 DWARF.
16044.P
16045A draft of this specification is available for review from
16046\*(iX. The \*(tE wishes to stress, however, that the specification
16047is still in flux.
16048.OP
16049.HU "Appendix 1 -- Current Attributes by Tag Value"
16050.P
16051The list below enumerates the attributes that are most applicable to each type
16052of debugging information entry.
16053DWARF does not in general require that a given debugging information
16054entry contain a particular attribute or set of attributes.  Instead, a
16055DWARF producer is free to generate any, all, or none of the attributes
16056described in the text as being applicable to a given entry.  Other
16057attributes (both those defined within this document but not explicitly
16058associated with the entry in question, and new, vendor-defined ones)
16059may also appear in a given debugging entry.
16060Therefore, the list may be
16061taken as instructive, but cannot be considered definitive.
16062.sp
16063.sp
16064.DS
16065.TS
16066box, tab(:) ;
16067lfB lfB
16068lf(CW) lf(CW) .
16069TAG NAME:APPLICABLE ATTRIBUTES
16070_
16071DW_TAG_access_declaration:DECL\(dg
16072:DW_AT_accessibility
16073:DW_AT_name
16074:DW_AT_sibling
16075_
16076DW_TAG_array_type:DECL
16077:DW_AT_abstract_origin
16078:DW_AT_accessibility
16079:DW_AT_byte_size
16080:DW_AT_declaration
16081:DW_AT_name
16082:DW_AT_ordering
16083:DW_AT_sibling
16084:DW_AT_start_scope
16085:DW_AT_stride_size
16086:DW_AT_type
16087:DW_AT_visibility
16088_
16089DW_TAG_base_type:DW_AT_bit_offset
16090:DW_AT_bit_size
16091:DW_AT_byte_size
16092:DW_AT_encoding
16093:DW_AT_name
16094:DW_AT_sibling
16095_
16096DW_TAG_catch_block:DW_AT_abstract_origin
16097:DW_AT_high_pc
16098:DW_AT_low_pc
16099:DW_AT_segment
16100:DW_AT_sibling
16101.TE
16102.DE
16103.br
16104\(dg
16105.Cf DW_AT_decl_column ,
16106.Cf DW_AT_decl_file ,
16107.Cf DW_AT_decl_line .
16108.SK
16109.DS
16110.B "Appendix 1 (cont'd) -- Current Attributes by Tag Value"
16111
16112
16113
16114.TS
16115box, tab(:) ;
16116lfB lfB
16117lf(CW) lf(CW) .
16118TAG NAME:APPLICABLE ATTRIBUTES
16119_
16120DW_TAG_class_type:DECL
16121:DW_AT_abstract_origin
16122:DW_AT_accessibility
16123:DW_AT_byte_size
16124:DW_AT_declaration
16125:DW_AT_name
16126:DW_AT_sibling
16127:DW_AT_start_scope
16128:DW_AT_visibility
16129_
16130DW_TAG_common_block:DECL
16131:DW_AT_declaration
16132:DW_AT_location
16133:DW_AT_name
16134:DW_AT_sibling
16135:DW_AT_visibility
16136_
16137DW_TAG_common_inclusion:DECL
16138:DW_AT_common_reference
16139:DW_AT_declaration
16140:DW_AT_sibling
16141:DW_AT_visibility
16142_
16143DW_TAG_compile_unit:DW_AT_base_types
16144:DW_AT_comp_dir
16145:DW_AT_identifier_case
16146:DW_AT_high_pc
16147:DW_AT_language
16148:DW_AT_low_pc
16149:DW_AT_macro_info
16150:DW_AT_name
16151:DW_AT_producer
16152:DW_AT_sibling
16153:DW_AT_stmt_list
16154_
16155DW_TAG_const_type:DW_AT_sibling
16156:DW_AT_type
16157.TE
16158.DE
16159.br
16160.SK
16161.DS
16162.B "Appendix 1 (cont'd) -- Current Attributes by Tag Value"
16163
16164
16165
16166.TS
16167box, tab(:) ;
16168lfB lfB
16169lf(CW) lf(CW) .
16170TAG NAME:APPLICABLE ATTRIBUTES
16171_
16172DW_TAG_constant:DECL
16173:DW_AT_accessibility
16174:DW_AT_constant_value
16175:DW_AT_declaration
16176:DW_AT_external
16177:DW_AT_name
16178:DW_AT_sibling
16179:DW_AT_start_scope
16180:DW_AT_type
16181:DW_AT_visibility
16182_
16183DW_TAG_entry_point:DW_AT_address_class
16184:DW_AT_low_pc
16185:DW_AT_name
16186:DW_AT_return_addr
16187:DW_AT_segment
16188:DW_AT_sibling
16189:DW_AT_static_link
16190:DW_AT_type
16191_
16192DW_TAG_enumeration_type:DECL
16193:DW_AT_abstract_origin
16194:DW_AT_accessibility
16195:DW_AT_byte_size
16196:DW_AT_declaration
16197:DW_AT_name
16198:DW_AT_sibling
16199:DW_AT_start_scope
16200:DW_AT_visibility
16201_
16202DW_TAG_enumerator:DECL
16203:DW_AT_const_value
16204:DW_AT_name
16205:DW_AT_sibling
16206_
16207DW_TAG_file_type:DECL
16208:DW_AT_abstract_origin
16209:DW_AT_byte_size
16210:DW_AT_name
16211:DW_AT_sibling
16212:DW_AT_start_scope
16213:DW_AT_type
16214:DW_AT_visibility
16215.TE
16216.DE
16217.br
16218.SK
16219.DS
16220.B "Appendix 1 (cont'd) -- Current Attributes by Tag Value"
16221
16222
16223
16224.TS
16225box, tab(:) ;
16226lfB lfB
16227lf(CW) lf(CW) .
16228TAG NAME:APPLICABLE ATTRIBUTES
16229_
16230DW_TAG_formal_parameter:DECL
16231:DW_AT_abstract_origin
16232:DW_AT_artificial
16233:DW_AT_default_value
16234:DW_AT_is_optional
16235:DW_AT_location
16236:DW_AT_name
16237:DW_AT_segment
16238:DW_AT_sibling
16239:DW_AT_type
16240:DW_AT_variable_parameter
16241_
16242DW_TAG_friend:DECL
16243:DW_AT_abstract_origin
16244:DW_AT_friend
16245:DW_AT_sibling
16246_
16247DW_TAG_imported_declaration:DECL
16248:DW_AT_accessibility
16249:DW_AT_import
16250:DW_AT_name
16251:DW_AT_sibling
16252:DW_AT_start_scope
16253_
16254DW_TAG_inheritance:DECL
16255:DW_AT_accessibility
16256:DW_AT_data_member_location
16257:DW_AT_sibling
16258:DW_AT_type
16259:DW_AT_virtuality
16260_
16261DW_TAG_inlined_subroutine:DECL
16262:DW_AT_abstract_origin
16263:DW_AT_high_pc
16264:DW_AT_low_pc
16265:DW_AT_segment
16266:DW_AT_sibling
16267:DW_AT_return_addr
16268:DW_AT_start_scope
16269_
16270DW_TAG_label:DW_AT_abstract_origin
16271:DW_AT_low_pc
16272:DW_AT_name
16273:DW_AT_segment
16274:DW_AT_start_scope
16275:DW_AT_sibling
16276.TE
16277.DE
16278.br
16279.SK
16280.DS
16281.B "Appendix 1 (cont'd) -- Current Attributes by Tag Value"
16282
16283
16284
16285.TS
16286box, tab(:) ;
16287lfB lfB
16288lf(CW) lf(CW) .
16289TAG NAME:APPLICABLE ATTRIBUTES
16290_
16291DW_TAG_lexical_block:DW_AT_abstract_origin
16292:DW_AT_high_pc
16293:DW_AT_low_pc
16294:DW_AT_name
16295:DW_AT_segment
16296:DW_AT_sibling
16297_
16298DW_TAG_member:DECL
16299:DW_AT_accessibility
16300:DW_AT_byte_size
16301:DW_AT_bit_offset
16302:DW_AT_bit_size
16303:DW_AT_data_member_location
16304:DW_AT_declaration
16305:DW_AT_name
16306:DW_AT_sibling
16307:DW_AT_type
16308:DW_AT_visibility
16309_
16310DW_TAG_module:DECL
16311:DW_AT_accessibility
16312:DW_AT_declaration
16313:DW_AT_high_pc
16314:DW_AT_low_pc
16315:DW_AT_name
16316:DW_AT_priority
16317:DW_AT_segment
16318:DW_AT_sibling
16319:DW_AT_visibility
16320_
16321DW_TAG_namelist:DECL
16322:DW_AT_accessibility
16323:DW_AT_abstract_origin
16324:DW_AT_declaration
16325:DW_AT_sibling
16326:DW_AT_visibility
16327_
16328DW_TAG_namelist_item:DECL
16329:DW_AT_namelist_item
16330:DW_AT_sibling
16331_
16332DW_TAG_packed_type:DW_AT_sibling
16333:DW_AT_type
16334.TE
16335.DE
16336.br
16337.SK
16338.DS
16339.B "Appendix 1 (cont'd) -- Current Attributes by Tag Value"
16340
16341
16342
16343.TS
16344box, tab(:) ;
16345lfB lfB
16346lf(CW) lf(CW) .
16347TAG NAME:APPLICABLE ATTRIBUTES
16348_
16349DW_TAG_pointer_type:DW_AT_address_class
16350:DW_AT_sibling
16351:DW_AT_type
16352_
16353DW_TAG_ptr_to_member_type:DECL
16354:DW_AT_abstract_origin
16355:DW_AT_address_class
16356:DW_AT_containing_type
16357:DW_AT_declaration
16358:DW_AT_name
16359:DW_AT_sibling
16360:DW_AT_type
16361:DW_AT_use_location
16362:DW_AT_visibility
16363_
16364DW_TAG_reference_type:DW_AT_address_class
16365:DW_AT_sibling
16366:DW_AT_type
16367_
16368DW_TAG_set_type:DECL
16369:DW_AT_abstract_origin
16370:DW_AT_accessibility
16371:DW_AT_byte_size
16372:DW_AT_declaration
16373:DW_AT_name
16374:DW_AT_start_scope
16375:DW_AT_sibling
16376:DW_AT_type
16377:DW_AT_visibility
16378_
16379DW_TAG_string_type:DECL
16380:DW_AT_accessibility
16381:DW_AT_abstract_origin
16382:DW_AT_byte_size
16383:DW_AT_declaration
16384:DW_AT_name
16385:DW_AT_segment
16386:DW_AT_sibling
16387:DW_AT_start_scope
16388:DW_AT_string_length
16389:DW_AT_visibility
16390.TE
16391.DE
16392.SK
16393.DS
16394.B "Appendix 1 (cont'd) -- Current Attributes by Tag Value"
16395
16396
16397
16398.TS
16399box, tab(:) ;
16400lfB lfB
16401lf(CW) lf(CW) .
16402TAG NAME:APPLICABLE ATTRIBUTES
16403_
16404DW_TAG_structure_type:DECL
16405:DW_AT_abstract_origin
16406:DW_AT_accessibility
16407:DW_AT_byte_size
16408:DW_AT_declaration
16409:DW_AT_name
16410:DW_AT_sibling
16411:DW_AT_start_scope
16412:DW_AT_visibility
16413_
16414DW_TAG_subprogram:DECL
16415:DW_AT_abstract_origin
16416:DW_AT_accessibility
16417:DW_AT_address_class
16418:DW_AT_artificial
16419:DW_AT_calling_convention
16420:DW_AT_declaration
16421:DW_AT_external
16422:DW_AT_frame_base
16423:DW_AT_high_pc
16424:DW_AT_inline
16425:DW_AT_low_pc
16426:DW_AT_name
16427:DW_AT_prototyped
16428:DW_AT_return_addr
16429:DW_AT_segment
16430:DW_AT_sibling
16431:DW_AT_specification
16432:DW_AT_start_scope
16433:DW_AT_static_link
16434:DW_AT_type
16435:DW_AT_visibility
16436:DW_AT_virtuality
16437:DW_AT_vtable_elem_location
16438.TE
16439.DE
16440.SK
16441.DS
16442.B "Appendix 1 (cont'd) -- Current Attributes by Tag Value"
16443
16444
16445
16446.TS
16447box, tab(:) ;
16448lfB lfB
16449lf(CW) lf(CW) .
16450TAG NAME:APPLICABLE ATTRIBUTES
16451_
16452DW_TAG_subrange_type:DECL
16453:DW_AT_abstract_origin
16454:DW_AT_accessibility
16455:DW_AT_byte_size
16456:DW_AT_count
16457:DW_AT_declaration
16458:DW_AT_lower_bound
16459:DW_AT_name
16460:DW_AT_sibling
16461:DW_AT_type
16462:DW_AT_upper_bound
16463:DW_AT_visibility
16464_
16465DW_TAG_subroutine_type:DECL
16466:DW_AT_abstract_origin
16467:DW_AT_accessibility
16468:DW_AT_address_class
16469:DW_AT_declaration
16470:DW_AT_name
16471:DW_AT_prototyped
16472:DW_AT_sibling
16473:DW_AT_start_scope
16474:DW_AT_type
16475:DW_AT_visibility
16476_
16477DW_TAG_template_type_param:DECL
16478:DW_AT_name
16479:DW_AT_sibling
16480:DW_AT_type
16481_
16482DW_TAG_template_value_param:DECL
16483:DW_AT_name
16484:DW_AT_const_value
16485:DW_AT_sibling
16486:DW_AT_type
16487_
16488DW_TAG_thrown_type:DECL
16489:DW_AT_sibling
16490:DW_AT_type
16491_
16492DW_TAG_try_block:DW_AT_abstract_origin
16493:DW_AT_high_pc
16494:DW_AT_low_pc
16495:DW_AT_segment
16496:DW_AT_sibling
16497.TE
16498.DE
16499.br
16500.SK
16501.DS
16502.B "Appendix 1 (cont'd) -- Current Attributes by Tag Value"
16503
16504
16505
16506.TS
16507box, tab(:) ;
16508lfB lfB
16509lf(CW) lf(CW) .
16510TAG NAME:APPLICABLE ATTRIBUTES
16511_
16512DW_TAG_typedef:DECL
16513:DW_AT_abstract_origin
16514:DW_AT_accessibility
16515:DW_AT_declaration
16516:DW_AT_name
16517:DW_AT_sibling
16518:DW_AT_start_scope
16519:DW_AT_type
16520:DW_AT_visibility
16521_
16522DW_TAG_union_type:DECL
16523:DW_AT_abstract_origin
16524:DW_AT_accessibility
16525:DW_AT_byte_size
16526:DW_AT_declaration
16527:DW_AT_friends
16528:DW_AT_name
16529:DW_AT_sibling
16530:DW_AT_start_scope
16531:DW_AT_visibility
16532_
16533DW_TAG_unspecified_parameters:DECL
16534:DW_AT_abstract_origin
16535:DW_AT_artificial
16536:DW_AT_sibling
16537_
16538DW_TAG_variable:DECL
16539:DW_AT_accessibility
16540:DW_AT_constant_value
16541:DW_AT_declaration
16542:DW_AT_external
16543:DW_AT_location
16544:DW_AT_name
16545:DW_AT_segment
16546:DW_AT_sibling
16547:DW_AT_specification
16548:DW_AT_start_scope
16549:DW_AT_type
16550:DW_AT_visibility
16551.TE
16552.DE
16553.br
16554.SK
16555.DS
16556.B "Appendix 1 (cont'd) -- Current Attributes by Tag Value"
16557
16558
16559
16560.TS
16561box, tab(:) ;
16562lfB lfB
16563lf(CW) lf(CW) .
16564TAG NAME:APPLICABLE ATTRIBUTES
16565_
16566DW_TAG_variant:DECL
16567:DW_AT_accessibility
16568:DW_AT_abstract_origin
16569:DW_AT_declaration
16570:DW_AT_discr_list
16571:DW_AT_discr_value
16572:DW_AT_sibling
16573_
16574DW_TAG_variant_part:DECL
16575:DW_AT_accessibility
16576:DW_AT_abstract_origin
16577:DW_AT_declaration
16578:DW_AT_discr
16579:DW_AT_sibling
16580:DW_AT_type
16581_
16582DW_TAG_volatile_type:DW_AT_sibling
16583:DW_AT_type
16584_
16585DW_TAG_with_statement:DW_AT_accessibility
16586:DW_AT_address_class
16587:DW_AT_declaration
16588:DW_AT_high_pc
16589:DW_AT_location
16590:DW_AT_low_pc
16591:DW_AT_segment
16592:DW_AT_sibling
16593:DW_AT_type
16594:DW_AT_visibility
16595.TE
16596.DE
16597.SK
16598.OP
16599.HU "Appendix 2 -- Organization of Debugging Information"
16600The following diagram depicts the relationship of the abbreviation
16601tables contained in the
16602.Cf .debug_abbrev
16603section to the information contained in the
16604.Cf .debug_info
16605section.  Values are given in symbolic form, where possible.
16606.DF
16607.nf
16608.PS
16609scale=100
16610define t201 |
16611[ box invis ht 154 wid 295 with .sw at 0,0
16612"\f(CW\s9\&1\f1\s0" at 0,147 ljust
16613"\f(CW\s9\&DW_TAG_compile_unit\f1\s0" at 0,133 ljust
16614"\f(CW\s9\&DW_CHILDREN_yes\f1\s0" at 0,119 ljust
16615"\f(CW\s9\&DW_AT_name          DW_FORM_string\f1\s0" at 0,105 ljust
16616"\f(CW\s9\&DW_AT_producer      DW_FORM_string\f1\s0" at 0,91 ljust
16617"\f(CW\s9\&DW_AT_compdir       DW_FORM_string\f1\s0" at 0,77 ljust
16618"\f(CW\s9\&DW_AT_language      DW_FORM_data1\f1\s0" at 0,63 ljust
16619"\f(CW\s9\&DW_AT_low_poc       DW_FORM_addr\f1\s0" at 0,49 ljust
16620"\f(CW\s9\&DW_AT_high_pc       DW_FORM_addr\f1\s0" at 0,35 ljust
16621"\f(CW\s9\&DW_AT_stmt_list     DW_FORM_indirect\f1\s0" at 0,21 ljust
16622"\f(CW\s9\&0                   0\f1\s0" at 0,7 ljust
16623] |
16624
16625define t103 |
16626[ box invis ht 42 wid 74 with .sw at 0,0
16627"\f(CW\s9\&4\f1\s0" at 0,35 ljust
16628"\f(CW\s9\&\"POINTER\"\f1\s0" at 0,21 ljust
16629"\f(CW\s9\&\f1\s0" at 0,7 ljust
16630] |
16631
16632define t177 |
16633[ box invis ht 28 wid 13 with .sw at 0,0
16634"\f(CW\s9\&3\f1\s0" at 0,21 ljust
16635"\f(CW\s9\&\f1\s0" at 0,7 ljust
16636] |
16637
16638define t224 |
16639[ box invis ht 84 wid 280 with .sw at 0,0
16640"\f(CW\s9\&4\f1\s0" at 0,77 ljust
16641"\f(CW\s9\&DW_TAG_typedef\f1\s0" at 0,63 ljust
16642"\f(CW\s9\&DW_CHILDREN_no\f1\s0" at 0,49 ljust
16643"\f(CW\s9\&DW_AT_name          DW_FORM_string\f1\s0" at 0,35 ljust
16644"\f(CW\s9\&DW_AT_type          DW_FORM_ref4 \f1\s0" at 0,21 ljust
16645"\f(CW\s9\&0                   0            \f1\s0" at 0,7 ljust
16646] |
16647
16648define t149 |
16649[ box invis ht 28 wid 51 with .sw at 0,0
16650"\f(CW\s9\&4\f1\s0" at 0,21 ljust
16651"\f(CW\s9\&\"strp\"\f1\s0" at 0,7 ljust
16652] |
16653
16654define t205 |
16655[ box invis ht 98 wid 280 with .sw at 0,0
16656"\f(CW\s9\&2\f1\s0" at 0,91 ljust
16657"\f(CW\s9\&DW_TAG_base_type\f1\s0" at 0,77 ljust
16658"\f(CW\s9\&DW_CHILDREN_no\f1\s0" at 0,63 ljust
16659"\f(CW\s9\&DW_AT_name          DW_FORM_string\f1\s0" at 0,49 ljust
16660"\f(CW\s9\&DW_AT_encoding      DW_FORM_data1\f1\s0" at 0,35 ljust
16661"\f(CW\s9\&DW_AT_byte_size     DW_FORM_data1\f1\s0" at 0,21 ljust
16662"\f(CW\s9\&0                   0\f1\s0" at 0,7 ljust
16663] |
16664
16665define t126 |
16666[ box invis ht 126 wid 257 with .sw at 0,0
16667"\f(CW\s9\&\"myfile.c\"\f1\s0" at 0,119 ljust
16668"\f(CW\s9\&\"Best Compiler Corp: Version 1.3\"\f1\s0" at 0,105 ljust
16669"\f(CW\s9\&\"mymachine:/home/mydir/src:\"\f1\s0" at 0,91 ljust
16670"\f(CW\s9\&DW_LANG_C89\f1\s0" at 0,77 ljust
16671"\f(CW\s9\&0x0\f1\s0" at 0,63 ljust
16672"\f(CW\s9\&0x55\f1\s0" at 0,49 ljust
16673"\f(CW\s9\&DW_FORM_data4\f1\s0" at 0,35 ljust
16674"\f(CW\s9\&0x0\f1\s0" at 0,21 ljust
16675"\f(CW\s9\&\f1\s0" at 0,7 ljust
16676] |
16677
16678define t219 |
16679[ box invis ht 70 wid 260 with .sw at 0,0
16680"\f(CW\s9\&3\f1\s0" at 0,63 ljust
16681"\f(CW\s9\&DW_TAG_pointer_type\f1\s0" at 0,49 ljust
16682"\f(CW\s9\&DW_CHILDREN_no\f1\s0" at 0,35 ljust
16683"\f(CW\s9\&DW_AT_type          DW_FORM_ref4\f1\s0" at 0,21 ljust
16684"\f(CW\s9\&0                   0\f1\s0" at 0,7 ljust
16685] |
16686
16687define t109 |
16688[ box invis ht 42 wid 165 with .sw at 0,0
16689"\f(CW\s9\&\"char\"\f1\s0" at 0,35 ljust
16690"\f(CW\s9\&DW_ATE_unsigned_char\f1\s0" at 0,21 ljust
16691"\f(CW\s9\&1\f1\s0" at 0,7 ljust
16692] |
16693
16694box invis ht 704 wid 680 with .sw at 0,0
16695t201 with .nw at 376,657
16696box ht 520 wid 320 with .nw at 360,672
16697box ht 208 wid 280 with .nw at 24,208
16698t103 with .nw at 40,353
16699t177 with .nw at 40,398
16700line  from 360,176 to 680,176
16701line  from 360,280 to 680,280
16702line  from 360,368 to 680,368
16703line  from 360,488 to 680,488
16704t224 with .nw at 376,270
16705"\f(CW\s9\&0\f1\s0" at 376,164 ljust
16706"\f(CW\s9\&0\f1\s0" at 40,289 ljust
16707"\fI\s9\&e2\f1\s0" at 40,317 ljust
16708"\fI\s9\&e2:\f1\s0" at 0,389 ljust
16709"\f(CW\s9\&2\f1\s0" at 44,176 ljust
16710line  from 24,128 to 304,128
16711"\f(CW\s9\&...\f1\s0" at 44,113 ljust
16712t149 with .nw at 44,88
16713"\fI\s9\&e2\f1\s0" at 44,49 ljust
16714"\f(CW\s9\&...\f1\s0" at 44,17 ljust
16715box ht 416 wid 280 with .nw at 24,688
16716"\fI\s9\&length\f1\s0" at 44,192 ljust
16717"\f(CW\s9\&4\f1\s0" at 48,140
16718"\fI\s9\&a1  (abbreviation table offset)\f1\s0" at 44,160 ljust
16719"\f(CW\s9\&4\f1\s0" at 44,624
16720"\fI\s9\&a1  (abbreviation table offset)\f1\s0" at 40,640 ljust
16721t205 with .nw at 376,477
16722"\fI\s9\&a1:\f1\s0" at 348,657 rjust
16723"\fI\s9\&length\f1\s0" at 40,672 ljust
16724"\fR\s10\&Abbreviation Table - .debug_abbrev\f1\s0" at 384,678 ljust
16725"\fR\s10\&Compilation Unit 1 - .debug_info\f1\s0" at 68,694 ljust
16726"\fR\s10\&Compilation Unit 2 - .debug_info\f1\s0" at 64,218 ljust
16727"\f(CW\s9\&2\f1\s0" at 44,656
16728"\f(CW\s9\&1\f1\s0" at 44,605
16729t126 with .nw at 36,599
16730line  from 24,616 to 304,616
16731"\f(CW\s9\&2\f1\s0" at 40,461 ljust
16732t219 with .nw at 376,359
16733line  from 24,96 to 304,96
16734line  from 24,32 to 304,32
16735t109 with .nw at 40,449
16736"\fI\s9\&e1\f1\s0" at 40,373 ljust
16737"\fI\s9\&e1:\f1\s0" at 0,461 ljust
16738line  from 24,480 to 304,480
16739line  from 24,400 to 304,400
16740line  from 24,360 to 304,360
16741line  from 24,304 to 304,304
16742.PE
16743.fi
16744.DE
16745.SK
16746.OP
16747.HU "Appendix 3 -- Statement Program Examples"
16748.P
16749Consider this simple source file and the resulting machine code for
16750the Intel 8086 processor:
16751.DS
16752.S -2
16753.TS
16754;
16755lf(CW) lf(CW) s
16756lf(CW) lf(CW) s
16757lf(CW) lf(CW) lf(CW)
16758lf(CW) lf(CW) lf(CW)
16759lf(CW) lf(CW) s
16760lf(CW) lf(CW) s
16761lf(CW) lf(CW) lf(CW)
16762lf(CW) lf(CW) lf(CW)
16763lf(CW) lf(CW) lf(CW)
16764lf(CW) lf(CW) lf(CW)
16765lf(CW) lf(CW) s
16766lf(CW) lf(CW) lf(CW)
16767lf(CW) lf(CW) lf(CW)
16768lf(CW) lf(CW) lf(CW)
16769lf(CW) lf(CW) lf(CW)
16770lf(CW) lf(CW) s
16771lf(CW) lf(CW) lf(CW)
16772lf(CW) lf(CW) lf(CW)
16773lf(CW) lf(CW) s
16774lf(CW) lf(CW) lf(CW).
167751:	int
167762:	main()
16777	0x239:	push pb
16778	0x23a:	mov bp,sp
167793:	{
167804:	printf("Omit needless words\en");
16781	0x23c:	mov ax,0xaa
16782	0x23f:	push ax
16783	0x240:	call _printf
16784	0x243:	pop cx
167855:	exit(0);
16786	0x244:	xor ax,ax
16787	0x246:	push ax
16788	0x247:	call _exit
16789	0x24a:	pop cx
167906:	}
16791	0x24b:	pop bp
16792	0x24c:	ret
167937:
16794	0x24d:
16795.TE
16796.S +2
16797.DE
16798.P
16799If the statement program prologue specifies the following:
16800.DS
16801.S -2
16802.TS
16803;
16804lf(CW) lf(CW).
16805minimum_instruction_length	1
16806opcode_base	10
16807line_base	1
16808line_range	15
16809.TE
16810.S +2
16811.DE
16812.P
16813Then one encoding of the statement program would occupy 12 bytes
16814(the opcode \f(CWSPECIAL(\fIm\fP, \fIn\fP)\fR indicates the special
16815opcode generated for a line increment of \fIm\fP and an address increment
16816of \fIn\fP):
16817.DS
16818.S -2
16819.TS
16820;
16821l l l
16822lf(CW) lf(CW) lf(CW).
16823Opcode	Operand	Byte Stream
16824_
16825DW_LNS_advance_pc	LEB128(0x239)	0x2, 0xb9, 0x04
16826SPECIAL(2, 0)		0xb
16827SPECIAL(2, 3)		0x38
16828SPECIAL(1, 8)		0x82
16829SPECIAL(1, 7)		0x73
16830DW_LNS_advance_pc	LEB128(2)	0x2, 0x2
16831DW_LNE_end_sequence		0x0, 0x1, 0x1
16832.TE
16833.S +2
16834.DE
16835.P
16836An alternate encoding of the same program using standard opcodes to
16837advance the program counter would occupy 22 bytes:
16838.DS
16839.S -2
16840.TS
16841;
16842l l l
16843lf(CW) lf(CW) lf(CW).
16844Opcode	Operand	Byte Stream
16845_
16846DW_LNS_fixed_advance_pc	0x239	0x9, 0x39, 0x2
16847SPECIAL(2, 0)		0xb
16848DW_LNS_fixed_advance_pc	0x3	0x9, 0x3, 0x0
16849SPECIAL(2, 0)		0xb
16850DW_LNS_fixed_advance_pc	0x8	0x9, 0x8, 0x0
16851SPECIAL(1, 0)		0xa
16852DW_LNS_fixed_advance_pc	0x7	0x9, 0x7, 0x0
16853SPECIAL(1, 0)		0xa
16854DW_LNS_fixed_advance_pc	0x2	0x9, 0x2, 0x0
16855DW_LNE_end_sequence		0x0, 0x1, 0x1
16856.TE
16857.S +2
16858.DE
16859.SK
16860.OP
16861.HU "Appendix 4 -- Encoding and decoding variable length data"
16862.ta .5i +.5i +.5i +.5i +.5i +.5i +.5i +.5i
16863.P
16864Here are algorithms expressed in a C-like pseudo-code to encode and decode
16865signed and unsigned numbers in LEB128:
16866.P
16867\fBEncode an unsigned integer:\fP
16868.br
16869.DS
16870.S -2
16871\f(CWdo
16872{
16873	byte = low order 7 bits of value;
16874	value >>= 7;
16875	if (value != 0)	/* more bytes to come */
16876		set high order bit of byte;
16877	emit byte;
16878} while (value != 0);\fP
16879.S +2
16880.DE
16881.P
16882\fBEncode a signed integer:\fP
16883.br
16884.DS
16885.S -2
16886\f(CWmore = 1;
16887negative = (value < 0);
16888size = no. of bits in signed integer;
16889while(more)
16890{
16891	byte = low order 7 bits of value;
16892	value >>= 7;
16893	/* the following is unnecessary if the implementation of >>=
16894	 * uses an arithmetic rather than logical shift for a signed
16895	 * left operand
16896	 */
16897	if (negative)
16898		/* sign extend */
16899		value |= - (1 << (size - 7));
16900	/* sign bit of byte is 2nd high order bit (0x40) */
16901	if ((value == 0 && sign bit of byte is clear) ||
16902		(value == -1 && sign bit of byte is set))
16903		more = 0;
16904	else
16905		set high order bit of byte;
16906	emit byte;
16907}\fP
16908.S +2
16909.DE
16910.SK
16911.ta .5i +.5i +.5i +.5i +.5i +.5i +.5i +.5i
16912.P
16913\fBDecode unsigned LEB128 number:\fP
16914.br
16915.DS
16916.S -2
16917\f(CWresult = 0;
16918shift = 0;
16919while(true)
16920{
16921	byte = next byte in input;
16922	result |= (low order 7 bits of byte << shift);
16923	if (high order bit of byte == 0)
16924		break;
16925	shift += 7;
16926}\fP
16927.S +2
16928.DE
16929.P
16930\fBDecode signed LEB128 number:\fP
16931.br
16932.DS
16933.S -2
16934\f(CWresult = 0;
16935shift = 0;
16936size = no. of bits in signed integer;
16937while(true)
16938{
16939	byte = next byte in input;
16940	result |= (low order 7 bits of byte << shift);
16941	shift += 7;
16942	/* sign bit of byte is 2nd high order bit (0x40) */
16943	if (high order bit of byte == 0)
16944		break;
16945}
16946if ((shift < size) && (sign bit of byte is set))
16947	/* sign extend */
16948	result |= - (1 << shift);\fP
16949.S +2
16950.DE
16951.SK
16952.OP
16953.HU "Appendix 5 -- Call Frame Information Examples"
16954The following example uses a hypothetical RISC machine in the style of
16955the Motorola 88000.
16956.BL
16957.LI
16958Memory is byte addressed.
16959.LI
16960Instructions are all 4-bytes each and word aligned.
16961.LI
16962Instruction operands are typically of the form:
16963.br
16964.DS
16965	<destination reg> <source reg> <constant>
16966.DE
16967.LI
16968The address for the load and store instructions is computed by
16969adding the contents of the source register with the constant.
16970.LI
16971There are 8 4-byte registers:
16972.br
16973.DS
16974	R0 always 0
16975	R1 holds return address on call
16976	R2-R3 temp registers (not preserved on call)
16977	R4-R6 preserved on call
16978	R7 stack pointer.
16979.DE
16980.LI
16981The stack grows in the negative direction.
16982.LE
16983.P
16984The following are two code fragments from a subroutine
16985called \f(CWfoo\fP that
16986uses a frame pointer (in addition to the stack pointer.)  The first
16987column values are byte addresses.
16988.DS
16989.S -2
16990.TS
16991;
16992lf(CW) lf(CW) s  s
16993lf(CW) lf(CW) lf(CW) lf(CW)
16994lf(CW) lf(CW) lf(CW) lf(CW)
16995lf(CW) lf(CW) lf(CW) lf(CW)
16996lf(CW) lf(CW) lf(CW) lf(CW)
16997lf(CW) lf(CW) lf(CW) lf(CW)
16998lf(CW) lf(CW) s s
16999lf(CW) lf(CW) s s
17000lf(CW) lf(CW) s s
17001lf(CW) lf(CW) lf(CW) lf(CW).
17002	;; start prologue
17003foo	sub	R7, R7, <fsize>         ; Allocate frame
17004foo+4	store	R1, R7, (<fsize>-4)     ; Save the return address
17005foo+8	store	R6, R7, (<fsize>-8)     ; Save R6
17006foo+12	add	R6, R7, 0               ; R6 is now the Frame ptr
17007foo+16	store	R4, R6, (<fsize>-12)    ; Save a preserve reg.
17008	;; This subroutine does not change R5
17009	...
17010	;; Start epilogue (R7 has been returned to entry value)
17011foo+64	load	R4, R6, (<fsize>-12)    ; Restore R4
17012foo+68	load	R6, R7, (<fsize>-8)     ; Restore R6
17013foo+72	load	R1, R7, (<fsize>-4)     ; Restore return address
17014foo+76	add	R7, R7, <fsize>         ; Deallocate frame
17015foo+80	jump	R	; Return
17016foo+84
17017.TE
17018.S +2
17019.DE
17020.SK
17021The table for the \f(CWfoo\fP subroutine is as follows.
17022It is followed by the
17023corresponding fragments from the
17024.Cf .debug_frame
17025section.
17026.DS
17027.S -2
17028.TS
17029tab(|);
17030lf(CW) lf(CW) lf(CW) lf(CW) lf(CW) lf(CW) lf(CW) lf(CW) lf(CW) lf(CW) lf(CW).
17031Loc|CFA|R0|R1|R2|R3|R4|R5|R6|R7|R8
17032foo|[R7]+0|s|u|u|u|s|s|s|s|r1
17033foo+4|[R7]+fsize|s|u|u|u|s|s|s|s|r1
17034foo+8|[R7]+fsize|s|u|u|u|s|s|s|s|c4
17035foo+12|[R7]+fsize|s|u|u|u|s|s|c8|s|c4
17036foo+16|[R6]+fsize|s|u|u|u|s|s|c8|s|c4
17037foo+20|[R6]+fsize|s|u|u|u|c12|s|c8|s|c4
17038...
17039foo+64|[R6]+fsize|s|u|u|u|c12|s|c8|s|c4
17040foo+68|[R6]+fsize|s|u|u|u|s|s|c8|s|c4
17041foo+72|[R7]+fsize|s|u|u|u|s|s|s|s|c4
17042foo+76|[R7]+fsize|s|u|u|u|s|s|s|s|r1
17043foo+80|[R7]+0|s|u|u|u|s|s|s|s|r1
17044.TE
17045.TS
17046;
17047l s
17048l l.
17049notes:
170501.	R8 is the return address
170512.	s = same_value rule
170523.	u = undefined rule
170534.	rN = register(N) rule
170545.	cN = offset(N) rule
17055.sp
17056.sp
17057.TE
17058.S +2
17059.DE
17060.P
17061Common Information Entry (CIE):
17062.DS
17063.S -2
17064.TS
17065;
17066lf(CW) lf(CW) lf(CW).
17067cie	32	; length
17068cie+4	0xffffffff	; CIE_id
17069cie+8	1 	; version
17070cie+9	0	; augmentation
17071cie+10	4	; code_alignment_factor
17072cie+11	4	; data_alignment_factor
17073cie+12	8	; R8 is the return addr.
17074cie+13	DW_CFA_def_cfa (7, 0)	; CFA = [R7]+0
17075cie+16	DW_CFA_same_value (0)	; R0 not modified (=0)
17076cie+18	DW_CFA_undefined (1)	; R1 scratch
17077cie+20	DW_CFA_undefined (2)	; R2 scratch
17078cie+22	DW_CFA_undefined (3)	; R3 scratch
17079cie+24	DW_CFA_same_value (4)	; R4 preserve
17080cie+26	DW_CFA_same_value (5)	; R5 preserve
17081cie+28	DW_CFA_same_value (6)	; R6 preserve
17082cie+30	DW_CFA_same_value (7)	; R7 preserve
17083cie+32	DW_CFA_register (8, 1)	; R8 is in R1
17084cie+35	DW_CFA_nop	; padding
17085cie+36
17086.TE
17087.S +2
17088.DE
17089.SK
17090.P
17091Frame Description Entry (FDE):
17092.DS
17093.S -2
17094.TS
17095;
17096lf(CW) lf(CW) lf(CW).
17097fde	40	; length
17098fde+4	cie	; CIE_ptr
17099fde+8	foo	; initial_location
17100fde+12	84	; address_range
17101fde+16	DW_CFA_advance_loc(1)	; instructions
17102fde+17	DW_CFA_def_cfa_offset(<fsize>/4)	; assuming <fsize> < 512
17103fde+19	DW_CFA_advance_loc(1)
17104fde+20	DW_CFA_offset(8,1)
17105fde+22	DW_CFA_advance_loc(1)
17106fde+23	DW_CFA_offset(6,2)
17107fde+25	DW_CFA_advance_loc(1)
17108fde+26	DW_CFA_def_cfa_register(6)
17109fde+28	DW_CFA_advance_loc(1)
17110fde+29	DW_CFA_offset(4,3)
17111fde+31	DW_CFA_advance_loc(11)
17112fde+32	DW_CFA_restore(4)
17113fde+33	DW_CFA_advance_loc(1)
17114fde+34	DW_CFA_restore(6)
17115fde+35	DW_CFA_def_cfa_register(7)
17116fde+37	DW_CFA_advance_loc(1)
17117fde+38	DW_CFA_restore(8)
17118fde+39	DW_CFA_advance_loc(1)
17119fde+40	DW_CFA_def_cfa_offset(0)
17120fde+42	DW_CFA_nop	; padding
17121fde+43	DW_CFA_nop	; padding
17122fde+44
17123.TE
17124.S +2
17125.DE
17126.S +1
17127
17128'\"
17129'\"  Table of Contents stuff
17130'\"
17131.de TP
17132.sp 4
17133..
17134.VM
17135.de TY
17136.ce 1
17137Table of Contents
17138.sp
17139..
17140.nr Lf 1
17141.ds Lf List of Figures
17142.SK
17143.TC 1 1 7 0
17144��0707010001ad5e0000812400011e740000000a00000001402068280008673d000000660000000000000000000000000000001500000000libdwarf/dwarf.v2.ps��%!PS-Adobe-1.0
17145%%Creator: quasar:davea (David B.Anderson,,)
17146%%Title: stdin (ditroff)
17147%%CreationDate: Thu Jun  9 10:39:09 1994
17148%%EndComments
17149% Start of psdit.pro -- prolog for ditroff translator
17150% Copyright (c) 1985,1987 Adobe Systems Incorporated. All Rights Reserved.
17151% GOVERNMENT END USERS: See Notice file in TranScript library directory
17152% -- probably /usr/lib/ps/Notice
17153% RCS: $Header: /plroot/cmplrs.src/v7.4.2m/.RCS/PL/libdwarf/RCS/dwarf.v2.ps,v 1.2 2001/01/16 17:08:37 davea Exp $
17154/$DITroff 140 dict def $DITroff begin
17155/fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def
17156/xi {0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto
17157  /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F
17158  /pagesave save def}def
17159/PB{save /psv exch def currentpoint translate
17160  resolution 72 div dup neg scale 0 0 moveto}def
17161/PE{psv restore}def
17162/m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def
17163/tan{dup sin exch cos div}bind def
17164/point{resolution 72 div mul}bind def
17165/dround	{transform round exch round exch itransform}bind def
17166/xT{/devname exch def}def
17167/xr{/mh exch def /my exch def /resolution exch def}def
17168/xp{}def
17169/xs{docsave restore end}def
17170/xt{}def
17171/xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not
17172 {fonts slotno fontname findfont put fontnames slotno fontname put}if}def
17173/xH{/fontheight exch def F}bind def
17174/xS{/fontslant exch def F}bind def
17175/s{/fontsize exch def /fontheight fontsize def F}bind def
17176/f{/fontnum exch def F}bind def
17177/F{fontheight 0 le {/fontheight fontsize def}if
17178   fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore
17179   fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if
17180   makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}bind def
17181/X{exch currentpoint exch pop moveto show}bind def
17182/N{3 1 roll moveto show}bind def
17183/Y{exch currentpoint pop exch moveto show}bind def
17184/S /show load def
17185/ditpush{}def/ditpop{}def
17186/AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}bind def
17187/AN{4 2 roll moveto 0 exch ashow}bind def
17188/AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}bind def
17189/AS{0 exch ashow}bind def
17190/MX{currentpoint exch pop moveto}bind def
17191/MY{currentpoint pop exch moveto}bind def
17192/MXY /moveto load def
17193/cb{pop}def	% action on unknown char -- nothing for now
17194/n{}def/w{}def
17195/p{pop showpage pagesave restore /pagesave save def}def
17196/abspoint{currentpoint exch pop add exch currentpoint pop add exch}def
17197/dstroke{currentpoint stroke moveto}bind def
17198/Dl{2 copy gsave rlineto stroke grestore rmoveto}bind def
17199/arcellipse{oldmat currentmatrix pop
17200 currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def
17201 rad 0 rad -180 180 arc oldmat setmatrix}def
17202/Dc{gsave dup /diamv exch def /diamh exch def arcellipse dstroke
17203    grestore diamh 0 rmoveto}def
17204/De{gsave /diamv exch def /diamh exch def arcellipse dstroke
17205    grestore diamh 0 rmoveto}def
17206/Da{currentpoint /by exch def /bx exch def /fy exch def /fx exch def
17207   /cy exch def /cx exch def /rad cx cx mul cy cy mul add sqrt def
17208   /ang1 cy neg cx neg atan def /ang2 fy fx atan def cx bx add cy by add
17209   2 copy rad ang1 ang2 arcn stroke exch fx add exch fy add moveto}def
17210/Barray 200 array def % 200 values in a wiggle
17211/D~{mark}def
17212/D~~{counttomark Barray exch 0 exch getinterval astore /Bcontrol exch def pop
17213 /Blen Bcontrol length def Blen 4 ge Blen 2 mod 0 eq and
17214 {Bcontrol 0 get Bcontrol 1 get abspoint /Ycont exch def /Xcont exch def
17215  Bcontrol 0 2 copy get 2 mul put Bcontrol 1 2 copy get 2 mul put
17216  Bcontrol Blen 2 sub 2 copy get 2 mul put
17217  Bcontrol Blen 1 sub 2 copy get 2 mul put
17218  /Ybi /Xbi currentpoint 3 1 roll def def 0 2 Blen 4 sub
17219  {/i exch def
17220   Bcontrol i get 3 div Bcontrol i 1 add get 3 div
17221   Bcontrol i get 3 mul Bcontrol i 2 add get add 6 div
17222   Bcontrol i 1 add get 3 mul Bcontrol i 3 add get add 6 div
17223   /Xbi Xcont Bcontrol i 2 add get 2 div add def
17224   /Ybi Ycont Bcontrol i 3 add get 2 div add def
17225   /Xcont Xcont Bcontrol i 2 add get add def
17226   /Ycont Ycont Bcontrol i 3 add get add def
17227   Xbi currentpoint pop sub Ybi currentpoint exch pop sub rcurveto
17228  }for dstroke}if}def
17229end
17230/ditstart{$DITroff begin
17231 /nfonts 60 def			% NFONTS makedev/ditroff dependent!
17232 /fonts[nfonts{0}repeat]def
17233 /fontnames[nfonts{()}repeat]def
17234/docsave save def
17235}def
17236
17237% character outcalls
17238/oc {/pswid exch def /cc exch def /name exch def
17239   /ditwid pswid fontsize mul resolution mul 72000 div def
17240   /ditsiz fontsize resolution mul 72 div def
17241   ocprocs name known{ocprocs name get exec}{name cb}
17242   ifelse}def
17243/fractm [.65 0 0 .6 0 0] def
17244/fraction
17245 {/fden exch def /fnum exch def gsave /cf currentfont def
17246  cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto
17247  fnum show rmoveto currentfont cf setfont(\244)show setfont fden show
17248  grestore ditwid 0 rmoveto} def
17249/oce {grestore ditwid 0 rmoveto}def
17250/dm {ditsiz mul}def
17251/ocprocs 50 dict def ocprocs begin
17252(14){(1)(4)fraction}def
17253(12){(1)(2)fraction}def
17254(34){(3)(4)fraction}def
17255(13){(1)(3)fraction}def
17256(23){(2)(3)fraction}def
17257(18){(1)(8)fraction}def
17258(38){(3)(8)fraction}def
17259(58){(5)(8)fraction}def
17260(78){(7)(8)fraction}def
17261(sr){gsave .05 dm .16 dm rmoveto(\326)show oce}def
17262(is){gsave 0 .15 dm rmoveto(\362)show oce}def
17263(->){gsave 0 .02 dm rmoveto(\256)show oce}def
17264(<-){gsave 0 .02 dm rmoveto(\254)show oce}def
17265(==){gsave 0 .05 dm rmoveto(\272)show oce}def
17266end
17267% DIThacks fonts for some special chars
1726850 dict dup begin
17269/FontType 3 def
17270/FontName /DIThacks def
17271/FontMatrix [.001 0.0 0.0 .001 0.0 0.0] def
17272/FontBBox [-220 -280 900 900] def% a lie but ...
17273/Encoding 256 array def
172740 1 255{Encoding exch /.notdef put}for
17275Encoding
17276 dup 8#040/space put %space
17277 dup 8#110/rc put %right ceil
17278 dup 8#111/lt put %left  top curl
17279 dup 8#112/bv put %bold vert
17280 dup 8#113/lk put %left  mid curl
17281 dup 8#114/lb put %left  bot curl
17282 dup 8#115/rt put %right top curl
17283 dup 8#116/rk put %right mid curl
17284 dup 8#117/rb put %right bot curl
17285 dup 8#120/rf put %right floor
17286 dup 8#121/lf put %left  floor
17287 dup 8#122/lc put %left  ceil
17288 dup 8#140/sq put %square
17289 dup 8#141/bx put %box
17290 dup 8#142/ci put %circle
17291 dup 8#143/br put %box rule
17292 dup 8#144/rn put %root extender
17293 dup 8#145/vr put %vertical rule
17294 dup 8#146/ob put %outline bullet
17295 dup 8#147/bu put %bullet
17296 dup 8#150/ru put %rule
17297 dup 8#151/ul put %underline
17298 pop
17299/DITfd 100 dict def
17300/BuildChar{0 begin
17301 /cc exch def /fd exch def
17302 /charname fd /Encoding get cc get def
17303 /charwid fd /Metrics get charname get def
17304 /charproc fd /CharProcs get charname get def
17305 charwid 0 fd /FontBBox get aload pop setcachedevice
17306 40 setlinewidth
17307 newpath 0 0 moveto gsave charproc grestore
17308 end}def
17309/BuildChar load 0 DITfd put
17310%/UniqueID 5 def
17311/CharProcs 50 dict def
17312CharProcs begin
17313/space{}def
17314/.notdef{}def
17315/ru{500 0 rls}def
17316/rn{0 750 moveto 500 0 rls}def
17317/vr{20 800 moveto 0 -770 rls}def
17318/bv{20 800 moveto 0 -1000 rls}def
17319/br{20 770 moveto 0 -1040 rls}def
17320/ul{0 -250 moveto 500 0 rls}def
17321/ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def
17322/bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def
17323/sq{80 0 rmoveto currentpoint dround newpath moveto
17324    640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def
17325/bx{80 0 rmoveto currentpoint dround newpath moveto
17326    640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def
17327/ci{355 333 rmoveto currentpoint newpath 333 0 360 arc
17328    50 setlinewidth stroke}def
17329
17330/lt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def
17331/lb{20 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def
17332/rt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def
17333/rb{20 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def
17334/lk{20 800 moveto 20 300 -280 300 s4 arcto pop pop 1000 sub
17335    currentpoint stroke moveto
17336    20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def
17337/rk{20 800 moveto 20 300 320 300 s4 arcto pop pop 1000 sub
17338    currentpoint stroke moveto
17339    20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def
17340/lf{20 800 moveto 0 -1000 rlineto s4 0 rls}def
17341/rf{20 800 moveto 0 -1000 rlineto s4 neg 0 rls}def
17342/lc{20 -200 moveto 0 1000 rlineto s4 0 rls}def
17343/rc{20 -200 moveto 0 1000 rlineto s4 neg 0 rls}def
17344end
17345
17346/Metrics 50 dict def Metrics begin
17347/.notdef 0 def
17348/space 500 def
17349/ru 500 def
17350/br 0 def
17351/lt 250 def
17352/lb 250 def
17353/rt 250 def
17354/rb 250 def
17355/lk 250 def
17356/rk 250 def
17357/rc 250 def
17358/lc 250 def
17359/rf 250 def
17360/lf 250 def
17361/bv 250 def
17362/ob 350 def
17363/bu 350 def
17364/ci 750 def
17365/bx 750 def
17366/sq 750 def
17367/rn 500 def
17368/ul 500 def
17369/vr 0 def
17370end
17371
17372DITfd begin
17373/s2 500 def /s4 250 def /s3 333 def
17374/a4p{arcto pop pop pop pop}def
17375/2cx{2 copy exch}def
17376/rls{rlineto stroke}def
17377/currx{currentpoint pop}def
17378/dround{transform round exch round exch itransform} def
17379end
17380end
17381/DIThacks exch definefont pop
17382
17383ditstart
17384(psc)xT
17385576 1 1 xr
173861(Times-Roman)xf 1 f
173872(Times-Italic)xf 2 f
173883(Times-Bold)xf 3 f
173894(Times-BoldItalic)xf 4 f
173905(Helvetica)xf 5 f
173916(Helvetica-Bold)xf 6 f
173927(Courier)xf 7 f
173938(Courier-Bold)xf 8 f
173949(Symbol)xf 9 f
1739510(DIThacks)xf 10 f
1739610 s
173971 f
17398xi
17399%%EndProlog
17400
17401%%Page: 1 1
1740210 s 0 xH 0 xS 1 f
1740314 s
174043 f
174051304 1792(DW)N
174061497(ARF)X
174071755(Debugging)X
174082299(Information)X
174092914(Format)X
174101 f
1741110 s
17412576 4064(U)N
174138 s
17414634(NIX)X
1741510 s
17416767(International)X
17417576 4160(Programming)N
174181036(Languages)X
174191404(SIG)X
17420576 4256(Revision:)N
17421902(2.0.0)X
174221082(\(July)X
174231262(27,)X
174241382(1993\))X
174251943 6039(Industry)N
174262230(Review)X
174272495(Draft)X
17428
174292 p
17430%%Page: 2 2
1743110 s 0 xH 0 xS 1 f
174323 f
174332070 768(Published)N
174342426(by:)X
174351 f
174362003 960(U)N
174378 s
174382061(NIX)X
1743910 s
174402194(International)X
174411840 1056(Waterview)N
174422213(Corporate)X
174432554(Center)X
174441900 1152(20)N
174452000(Waterview)X
174462373(Boulevard)X
174471941 1248(Parsippany,)N
174482337(NJ)X
174492466(07054)X
174501791 1440(for)N
174511905(further)X
174522144(information,)X
174532562(contact:)X
174541848 1536(Vice)N
174552020(President)X
174562338(of)X
174572425(Marketing)X
174581880 1728(Phone:)N
174592168(+1)X
174602273(201-263-8400)X
174611880 1824(Fax:)N
174622168(+1)X
174632273(201-263-8401)X
17464576 1968(Copyright)N
174659 f
17466920(\323)X
174671 f
174681003(1992,)X
174691203(1993)X
174701383(U)X
174718 s
174721441(NIX)X
1747310 s
174741574(International,)X
174752024(Inc.)X
17476576 2112(Permission)N
17477964(to)X
174781059(use,)X
174791219(copy,)X
174801428(modify,)X
174811712(and)X
174821861(distribute)X
174832196(this)X
174842344(documentation)X
174852853(for)X
174862980(any)X
174873130(purpose)X
174883418(and)X
174893568(without)X
174903846(fee)X
174913979(is)X
17492576 2208(hereby)N
17493819(granted,)X
174941104(provided)X
174951413(that)X
174961557(the)X
174971679(above)X
174981895(copyright)X
174992226(notice)X
175002446(appears)X
175012716(in)X
175022802(all)X
175032906(copies)X
175043135(and)X
175053274(that)X
175063417(both)X
175073582(that)X
175083725(copyright)X
17509576 2304(notice)N
17510824(and)X
17511993(this)X
175121161(permission)X
175131565(notice)X
175141814(appear)X
175152082(in)X
175162197(supporting)X
175172592(documentation,)X
175183141(and)X
175193310(that)X
175203483(the)X
175213634(name)X
175223861(U)X
175238 s
175243919(NIX)X
1752510 s
17526576 2400(International)N
175271023(not)X
175281162(be)X
175291275(used)X
175301459(in)X
175311558(advertising)X
175321951(or)X
175332055(publicity)X
175342375(pertaining)X
175352736(to)X
175362834(distribution)X
175373238(of)X
175383341(the)X
175393475(software)X
175403788(without)X
17541576 2496(speci\256c,)N
17542863(written)X
175431112(prior)X
175441290(permission.)X
175451703(U)X
175468 s
175471761(NIX)X
1754810 s
175491896(International)X
175502328(makes)X
175512555(no)X
175522657(representations)X
175533165(about)X
175543365(the)X
175553485(suitability)X
175563827(of)X
175573917(this)X
17558576 2592(documentation)N
175591072(for)X
175601186(any)X
175611322(purpose.)X
175621636(It)X
175631705(is)X
175641778(provided)X
175652083("as)X
175662203(is")X
175672309(without)X
175682573(express)X
175692834(or)X
175702921(implied)X
175713185(warranty.)X
17572576 2736(UNIX)N
17573860(INTERNATIONAL)X
175741594(DISCLAIMS)X
175752108(ALL)X
175762347(WARRANTIES)X
175772956(WITH)X
175783250(REGARD)X
175793663(TO)X
175803854(THIS)X
17581576 2832(DOCUMENTATION,)N
175821334(INCLUDING)X
175831814(ALL)X
175842004(IMPLIED)X
175852362(WARRANTIES)X
175862920(OF)X
175873055(MERCHANTABILITY)X
175883858(AND)X
17589576 2928(FITNESS.)N
17590973(IN)X
175911100(NO)X
175921258(EVENT)X
175931563(SHALL)X
175941863(UNIX)X
175952106(INTERNATIONAL)X
175962800(BE)X
175972945(LIABLE)X
175983273(FOR)X
175993471(ANY)X
176003688(SPECIAL,)X
17601576 3024(INDIRECT)N
17602979(OR)X
176031119(CONSEQUENTIAL)X
176041816(DAMAGES)X
176052241(OR)X
176062381(ANY)X
176072583(DAMAGES)X
176083007(WHATSOEVER)X
176093587(RESULTING)X
17610576 3120(FROM)N
17611855(LOSS)X
176121103(OF)X
176131258(USE,)X
176141482(DATA)X
176151758(OR)X
176161922(PROFITS,)X
176172314(WHETHER)X
176182759(IN)X
176192898(AN)X
176203068(ACTION)X
176213425(OF)X
176223581(CONTRACT,)X
17623576 3216(NEGLIGENCE)N
176241115(OR)X
176251257(OTHER)X
176261554(TORTIOUS)X
176271980(ACTION,)X
176282333(ARISING)X
176292688(OUT)X
176302883(OF)X
176313015(OR)X
176323156(IN)X
176333271(CONNECTION)X
176343822(WITH)X
17635576 3312(THE)N
17636752(USE)X
17637923(OR)X
176381054(PERFORMANCE)X
176391664(OF)X
176401786(THIS)X
176411984(DOCUMENTATION.)X
17642576 3696(NOTICE:)N
17643576 3840(U)N
176448 s
17645634(NIX)X
1764610 s
17647780(International)X
176481223(is)X
176491309(making)X
176501582(this)X
176511730(documentation)X
176522239(available)X
176532562(as)X
176542662(a)X
176552731 0.4531(reference)AX
176563065(point)X
176573262(for)X
176583389(the)X
176593520(industry.)X
176603836(While)X
17661576 3936(U)N
176628 s
17663634(NIX)X
1766410 s
17665768(International)X
176661199(believes)X
176671483(that)X
176681624(this)X
176691760(speci\256cation)X
176702186(is)X
176712260(well)X
176722419(de\256ned)X
176732675(in)X
176742757(this)X
176752892(\256rst)X
176763036(release)X
176773280(of)X
176783367(the)X
176793485(document,)X
176803841(minor)X
17681576 4032(changes)N
17682857(may)X
176831017(be)X
176841115(made)X
176851311(prior)X
176861489(to)X
176871573(products)X
176881871(meeting)X
176892151(this)X
176902288(speci\256cation)X
176912715(being)X
176922915(made)X
176933111(available)X
176943424(from)X
176953603(U)X
176968 s
176973661(NIX)X
1769810 s
176993797(System)X
17700576 4128(Laboratories)N
177011002(or)X
177021089(U)X
177038 s
177041147(NIX)X
1770510 s
177061280(International)X
177071710(members.)X
17708576 4320(Trademarks:)N
17709576 4464(Intel386)N
17710863(is)X
17711936(a)X
17712992(trademark)X
177131338(of)X
177141425(Intel)X
177151592(Corporation.)X
17716576 4560(U)N
177178 s
17718634(NIX)X
1771910 s
177209 f
17721747(\322)X
177221 f
17723830(is)X
17724903(a)X
17725959(registered)X
177261296(trademark)X
177271642(of)X
177281729(U)X
177298 s
177301787(NIX)X
1773110 s
177321920(System)X
177332175(Laboratories)X
177342601(in)X
177352683(the)X
177362801(United)X
177373039(States)X
177383250(and)X
177393386(other)X
177403571(countries.)X
177411943 6039(Industry)N
177422230(Review)X
177432495(Draft)X
17744
177453 p
17746%%Page: 3 3
1774710 s 0 xH 0 xS 1 f
177483075 480(Programming)N
177493535(Languages)X
177503903(SIG)X
177513 f
1775212 s
17753576 776(FOREWORD)N
177541 f
1775511 s
17756576 932(This)N
17757761(document)X
177581137(speci\256es)X
177591468(the)X
177601604(second)X
177611876(generation)X
177622276(of)X
177632378(symbolic)X
177642731(debugging)X
177653132(information)X
177663578(based)X
177673807(on)X
177683924(the)X
17769576 1036(DWARF)N
17770932(format)X
177711206(that)X
177721378(has)X
177731534(been)X
177741738(developed)X
177752138(by)X
177762264(the)X
177772410(U)X
177789 s
177792473(NIX)X
1778011 s
177812639(International)X
177823128(Programming)X
177833651(Languages)X
17784576 1140(Special)N
17785865(Interest)X
177861158(Group)X
177871411(\(SIG\).)X
177881683(It)X
177891766(is)X
177901854(being)X
177912079(circulated)X
177922456(for)X
177932588(industry)X
177942907(review.)X
177953198(The)X
177963365(\256rst)X
177973532(version)X
177983821(of)X
177993924(the)X
17800576 1244(DWARF)N
17801940(speci\256cation)X
178021433(was)X
178031616(published)X
178042006(by)X
178052141(U)X
178069 s
178072204(NIX)X
1780811 s
178092379(International)X
178102877(in)X
178112993(January,)X
178123334(1992.)X
178133600(The)X
178143783(current)X
17815576 1348(version)N
17816878(adds)X
178171082(signi\256cant)X
178181493(new)X
178191682(functionality,)X
178202200(but)X
178212357(its)X
178222485(main)X
178232706(thrust)X
178242951(is)X
178253054(to)X
178263167(achieve)X
178273480(a)X
178283563(much)X
178293803(denser)X
17830576 1452(encoding)N
17831928(of)X
178321030(the)X
178331167(DWARF)X
178341513(information.)X
178352003(Because)X
178362325(of)X
178372426(the)X
178382562(new)X
178392736(encoding,)X
178403109(DWARF)X
178413454(Version)X
178423760(2)X
178433832(is)X
178443919(not)X
17845576 1556(binary)N
17846823(compatible)X
178471238(with)X
178481417(DWARF)X
178491756(Version)X
178502056(1.)X
17851576 1712(At)N
17852688(this)X
17853840(point,)X
178541068(the)X
178551200(SIG)X
178561365(believes)X
178571678(that)X
178581835(this)X
178591987(document)X
178602359(suf\256ciently)X
178612780(supports)X
178623102(the)X
178633234(debugging)X
178643630(needs)X
178653854(of)X
178663951(C,)X
17867576 1816(C++,)N
17868807(FORTRAN)X
178691266(77,)X
178701425(Fortran90,)X
178711843(Modula2)X
178722210(and)X
178732386(Pascal,)X
178742682(and)X
178752858(we)X
178763009(have)X
178773224(released)X
178783561(it)X
178793660(for)X
178803811(public)X
17881576 1920(comment.)N
17882983(We)X
178831139(will)X
178841312(accept)X
178851572(comments)X
178861970(on)X
178872093(this)X
178882256(document)X
178892639(until)X
178902837(September)X
178913249(30,)X
178923394(1994.)X
178933649(Comments)X
17894576 2024(may)N
17895751(be)X
17896857(directed)X
178971164(via)X
178981295(email)X
178991515(to)X
179001607(the)X
179011738(SIG)X
179021902(mailing)X
179032196(list)X
179042328(\(plsig@ui.org\).)X
179052914(If)X
179062995(you)X
179073150(are)X
179083280(unable)X
179093538(to)X
179103630(send)X
179113813(email,)X
17912576 2128(paper)N
17913796(mail,)X
179141001(FAX,)X
179151223(or)X
179161322(machine)X
179171647(readable)X
179181971(copy)X
179192168(on)X
179202282(U)X
179219 s
179222345(NIX)X
1792311 s
17924(,)S
179252521(MS-DOS,)X
179262900(or)X
179272999(Macintosh)X
179283397(compatible)X
179293816(media)X
17930576 2232(can)N
17931720(be)X
17932825(sent)X
17933989(to)X
179341080(U)X
179359 s
179361143(NIX)X
1793711 s
179381293(International)X
179391766(at)X
179401852(the)X
179411982(address)X
179422267(listed)X
179432481(below,)X
179442740(and)X
179452889(will)X
179463049(be)X
179473154(forwarded)X
179483536(to)X
179493627(the)X
179503757(SIG.)X
179512336 2440(UNIX)N
179522576(International)X
179532336 2544(Waterview)N
179542744(Corporate)X
179553118(Center)X
179562336 2648(20)N
179572446(Waterview)X
179582854(Boulevard)X
179592336 2752(Parsippany,)N
179602771(NJ)X
179612890(07054)X
179622336 2856(Phone:)N
179632624(+1)X
179642740(201-263-8400)X
179652336 2960(Fax:)N
179662624(+1)X
179672740(201-263-8401)X
1796810 s
17969576 5951(Revision:)N
17970902(2.0.0)X
179712196(Page)X
179722372(1)X
179733599(July)X
179743752(27,)X
179753872(1993)X
179761943 6055(Industry)N
179772230(Review)X
179782495(Draft)X
17979
179802 p
17981%%Page: 2 4
1798210 s 0 xH 0 xS 1 f
1798311 s
1798410 s
17985576 520(DWARF)N
17986885(Debugging)X
179871261(Information)X
179881664(Format)X
17989576 5951(Revision:)N
17990902(2.0.0)X
179912196(Page)X
179922372(2)X
179933599(July)X
179943752(27,)X
179953872(1993)X
179961943 6055(Industry)N
179972230(Review)X
179982495(Draft)X
17999
180003 p
18001%%Page: 3 5
1800210 s 0 xH 0 xS 1 f
1800311 s
1800410 s
180053075 520(Programming)N
180063535(Languages)X
180073903(SIG)X
180083 f
1800912 s
18010576 832(1.)N
18011696(INTRODUCTION)X
180121 f
1801311 s
18014576 1092(This)N
18015767(document)X
180161150(de\256nes)X
180171434(the)X
180181577(format)X
180191847(for)X
180201984(the)X
180212127(information)X
180222579(generated)X
180232956(by)X
180243079(compilers,)X
180253484(assemblers)X
180263905(and)X
18027576 1196(linkage)N
18028898(editors)X
180291200(that)X
180301395(is)X
180311516(necessary)X
180321919(for)X
180332083(symbolic,)X
180342491(source-level)X
180352983(debugging.)X
180363461(The)X
180373660(debugging)X
18038576 1300(information)N
180391017(format)X
180401276(does)X
180411461(not)X
180421598(favor)X
180431807(the)X
180441939(design)X
180452193(of)X
180462290(any)X
180472441(compiler)X
180482779(or)X
180492876(debugger.)X
180503271(Instead,)X
180513571(the)X
180523703(goal)X
180533879(is)X
180543963(to)X
18055576 1404(create)N
18056809(a)X
18057871(method)X
180581159(of)X
180591255(communicating)X
180601828(an)X
180611934(accurate)X
180622250(picture)X
180632517(of)X
180642612(the)X
180652742(source)X
180662993(program)X
180673313(to)X
180683404(any)X
180693553(debugger)X
180703902(in)X
180713993(a)X
18072576 1508(form)N
18073815(that)X
180741016(is)X
180751143(economically)X
180761687(extensible)X
180772113(to)X
180782250(different)X
180792622(languages)X
180803043(while)X
180813308(retaining)X
180823691(backward)X
18083576 1612 0.2933(compatibility.)AN
18084576 1768(The)N
18085739(design)X
18086995(of)X
180871094(the)X
180881228(debugging)X
180891626(information)X
180902069(format)X
180912330(is)X
180922415(open-ended,)X
180932873(allowing)X
180943208(for)X
180953336(the)X
180963470(addition)X
180973786(of)X
180983886(new)X
18099576 1872(debugging)N
18100974(information)X
181011417(to)X
181021512(accommodate)X
181032027(new)X
181042198(languages)X
181052575(or)X
181062673(debugger)X
181073025(capabilities)X
181083453(while)X
181093674(remaining)X
18110576 1976(compatible)N
18111991(with)X
181121170(other)X
181131373(languages)X
181141747(or)X
181151842(different)X
181162167(debuggers.)X
181173 f
1811812 s
18119576 2132(1.1)N
18120744(Purpose)X
181211104(and)X
181221282(Scope)X
181231 f
1812411 s
18125576 2288(The)N
18126739(debugging)X
181271137(information)X
181281580(format)X
181291841(described)X
181302204(in)X
181312300(this)X
181322455(document)X
181332830(is)X
181342916(designed)X
181353256(to)X
181363352(meet)X
181373551(the)X
181383686(symbolic,)X
18139576 2392(source-level)N
181401039(debugging)X
181411443(needs)X
181421675(of)X
181431780(different)X
181442115(languages)X
181452499(in)X
181462600(a)X
181472671(uni\256ed)X
181482948(fashion)X
181493239(by)X
181503359(requiring)X
181513714(language)X
18152576 2496(independent)N
181531042(debugging)X
181541449(information)X
181551901(whenever)X
181562277(possible.)X
181572645(Individual)X
181583043(needs,)X
181593300(such)X
181603497(as)X
181613606(C++)X
181623801(virtual)X
18163576 2600(functions)N
18164932(or)X
181651033(Fortran)X
181661320(common)X
181671657(blocks)X
181681915(are)X
181692050(accommodated)X
181702611(by)X
181712726(creating)X
181723037(attributes)X
181733393(that)X
181743553(are)X
181753687(used)X
181763875(only)X
18177576 2704(for)N
18178717(those)X
18179942(languages.)X
181801377(The)X
181811553(U)X
181829 s
181831616(NIX)X
1818411 s
181851784(International)X
181862275(Programming)X
181872800(Languages)X
181883221(SIG)X
181893402(believes)X
181903731(that)X
181913904(this)X
18192576 2808(document)N
18193977(suf\256ciently)X
181941427(covers)X
181951709(the)X
181961870(debugging)X
181972295(information)X
181982765(needs)X
181993018(of)X
182003144(C,)X
182013278(C++,)X
182023512(FORTRAN77,)X
18203576 2912(Fortran90,)N
18204967(Modula2)X
182051307(and)X
182061456(Pascal.)X
18207576 3068(This)N
18208767(document)X
182091149(describes)X
182101510(DWARF)X
182111861(Version)X
182122173(2,)X
182132273(the)X
182142415(second)X
182152693(generation)X
182163100(of)X
182173208(debugging)X
182183615(information)X
18219576 3172(based)N
18220807(on)X
18221926(the)X
182221065(DWARF)X
182231413(format.)X
182241723(While)X
182251970(DWARF)X
182262318(Version)X
182272627(2)X
182282702(provides)X
182293036(new)X
182303213(debugging)X
182313615(information)X
18232576 3276(not)N
18233712(available)X
182341055(in)X
182351148(Version)X
182361450(1,)X
182371540(the)X
182381672(primary)X
182391975(focus)X
182402189(of)X
182412286(the)X
182422418(changes)X
182432725(for)X
182442851(Version)X
182453153(2)X
182463221(is)X
182473304(the)X
182483436(representation)X
182493959(of)X
18250576 3380(the)N
18251714(information,)X
182521183(rather)X
182531418(than)X
182541600(the)X
182551738(information)X
182562185(content)X
182572475(itself.)X
182582726(The)X
182592893(basic)X
182603104(structure)X
182613442(of)X
182623544(the)X
182633681(Version)X
182643988(2)X
18265576 3484(format)N
18266833(remains)X
182671134(as)X
182681229(in)X
182691320(Version)X
182701620(1:)X
182711711(the)X
182721841(debugging)X
182732235(information)X
182742674(is)X
182752755(represented)X
182763183(as)X
182773279(a)X
182783341(series)X
182793564(of)X
182803660(debugging)X
18281576 3588(information)N
182821029(entries,)X
182831321(each)X
182841517(containing)X
182851925(one)X
182862087(or)X
182872195(more)X
182882411(attributes)X
182892775(\(name/value)X
182903246(pairs\).)X
182913503(The)X
182923675(Version)X
182933988(2)X
18294576 3692(representation,)N
182951138(however,)X
182961503(is)X
182971603(much)X
182981840(more)X
182992062(compact)X
183002402(than)X
183012595(the)X
183022744(Version)X
183033063(1)X
183043148(representation.)X
183053732(In)X
183063846(some)X
18307576 3796(cases,)N
18308814(this)X
18309973(greater)X
183101248(density)X
183111534(has)X
183121682(been)X
183131879(achieved)X
183142223(at)X
183152318(the)X
183162457(expense)X
183172770(of)X
183182873(additional)X
183193257(complexity)X
183203685(or)X
183213788(greater)X
18322576 3900(dif\256culty)N
18323922(in)X
183241013(producing)X
183251393(and)X
183261543(processing)X
183271942(the)X
183282073(DWARF)X
183292413(information.)X
183302897(We)X
183313042(believe)X
183323320(that)X
183333476(the)X
183343607(reduction)X
183353963(in)X
18336576 4004(I/O)N
18337715(and)X
18338864(in)X
18339955(memory)X
183401271(paging)X
183411533(should)X
183421790(more)X
183431993(than)X
183442167(make)X
183452380(up)X
183462490(for)X
183472614(any)X
183482763(increase)X
183493073(in)X
183503164(processing)X
183513562(time.)X
18352576 4160(Because)N
18353899(the)X
183541037(representation)X
183551566(of)X
183561669(information)X
183572116(has)X
183582263(changed)X
183592587(from)X
183602789(Version)X
183613098(1)X
183623173(to)X
183633273(Version)X
183643582(2,)X
183653679(Version)X
183663988(2)X
18367576 4264(DWARF)N
18368918(information)X
183691360(is)X
183701444(not)X
183711582(binary)X
183721832(compatible)X
183732250(with)X
183742432(Version)X
183752735(1)X
183762804(information.)X
183773290(To)X
183783412(make)X
183793627(it)X
183803701(easier)X
183813930(for)X
18382576 4368(consumers)N
183831000(to)X
183841117(support)X
183851429(both)X
183861634(Version)X
183871961(1)X
183882054(and)X
183892230(Version)X
183902557(2)X
183912650(DWARF)X
183923016(information,)X
183933504(the)X
183943661(Version)X
183953988(2)X
183960(Courier)xf 0 f
183971 f
18398576 4472(information)N
183991015(has)X
184001154(been)X
184011342(moved)X
184021604(to)X
184031695(a)X
184041756(different)X
184052081(object)X
184062319(\256le)X
184072454(section,)X
184080(Courier)xf 0 f
184091 f
184100 f
184112748(.debug_info)X
184121 f
184133331(.)X
18414576 4628(The)N
18415739(intended)X
184161069(audience)X
184171409(for)X
184181538(this)X
184191693(document)X
184202068(are)X
184212202(the)X
184222337(developers)X
184232745(of)X
184242845(both)X
184253029(producers)X
184263402(and)X
184273556(consumers)X
184283959(of)X
18429576 4732(debugging)N
18430988(information,)X
184311467(typically)X
184321817(language)X
184332175(compilers,)X
184342585(debuggers)X
184352986(and)X
184363153(other)X
184373374(tools)X
184383586(that)X
184393758(need)X
184403963(to)X
18441576 4836(interpret)N
18442897(a)X
18443958(binary)X
184441205(program)X
184451525(in)X
184461616(terms)X
184471834(of)X
184481929(its)X
184492035(original)X
184502332(source.)X
184513 f
1845212 s
18453576 4992(1.2)N
18454744(Overview)X
184551 f
1845611 s
18457576 5148(There)N
18458807(are)X
18459940(two)X
184601098(major)X
184611330(pieces)X
184621576(to)X
184631671(the)X
184641805(description)X
184652223(of)X
184662322(the)X
184672456(DWARF)X
184682799(format)X
184693061(in)X
184703157(this)X
184713312(document.)X
184723731(The)X
184733895(\256rst)X
18474576 5252(piece)N
18475799(is)X
18476895(the)X
184771039(informational)X
184781556(content)X
184791852(of)X
184801961(the)X
184812105(debugging)X
184822513(entries.)X
184832828(The)X
184843001(second)X
184853281(piece)X
184863503(is)X
184873598(the)X
184883742(way)X
184893924(the)X
18490576 5356(debugging)N
18491970(information)X
184921409(is)X
184931490(encoded)X
184941805(and)X
184951954(represented)X
184962381(in)X
184972472(an)X
184982577(object)X
184992815(\256le.)X
18500576 5512(The)N
18501747(informational)X
185021262(content)X
185031556(is)X
185041649(described)X
185052020(in)X
185062123(sections)X
185072441(two)X
185082607(through)X
185092915(six.)X
185103096(Section)X
185113395(two)X
185123562(describes)X
185133924(the)X
18514576 5616(overall)N
18515846(structure)X
185161179(of)X
185171277(the)X
185181410(information)X
185191852(and)X
185202003(attributes)X
185212356(that)X
185222513(are)X
185232644(common)X
185242977(to)X
185253070(many)X
185263290(or)X
185273387(all)X
185283500(of)X
185293597(the)X
185303729(different)X
18531576 5720(debugging)N
18532990(information)X
185331449(entries.)X
185341748(Sections)X
185352089(three,)X
185362329(four)X
185372517(and)X
185382686(\256ve)X
185392861(describe)X
185403197(the)X
185413348(speci\256c)X
185423660(debugging)X
18543576 5824(information)N
185441039(entries)X
185451320(and)X
185461493(how)X
185471690(they)X
185481887(communicate)X
185492408(the)X
185502561(necessary)X
185512947(information)X
185523409(about)X
185533650(the)X
185543803(source)X
1855510 s
18556576 5951(Revision:)N
18557902(2.0.0)X
185582196(Page)X
185592372(3)X
185603599(July)X
185613752(27,)X
185623872(1993)X
185631943 6055(Industry)N
185642230(Review)X
185652495(Draft)X
18566
185674 p
18568%%Page: 4 6
185690(Courier)xf 0 f
1857010 s 0 xH 0 xS 0 f
1857111 s
185721 f
1857310 s
18574576 520(DWARF)N
18575885(Debugging)X
185761261(Information)X
185771664(Format)X
1857811 s
18579576 832(program)N
18580908(to)X
185811011(a)X
185821084(debugger.)X
185831489(Section)X
185841789(six)X
185851927(describes)X
185862289(debugging)X
185872696(information)X
185883148(contained)X
185893526(outside)X
185903816(of)X
185913924(the)X
18592576 936(debugging)N
185931002(information)X
185941473(entries,)X
185951784(themselves.)X
185962274(The)X
185972465(encoding)X
185982842(of)X
185992969(the)X
186003131(DWARF)X
186013502(information)X
186023973(is)X
18603576 1040(presented)N
18604935(in)X
186051026(section)X
186061298(seven.)X
18607576 1196(Section)N
18608863(eight)X
186091062(describes)X
186101411(some)X
186111619(future)X
186121851(directions)X
186132221(for)X
186142345(the)X
186152475(DWARF)X
186162814(speci\256cation.)X
18617576 1352(In)N
18618677(the)X
18619813(following)X
186201184(sections,)X
186211519(text)X
186221681(in)X
186231779(normal)X
186242058(font)X
186252229(describes)X
186262585(required)X
186272907(aspects)X
186283190(of)X
186293292(the)X
186303429(DWARF)X
186313775(format.)X
18632576 1456(Text)N
18633774(in)X
186342 f
18635879(italics)X
186361 f
186371132(is)X
186381227(explanatory)X
186391679(or)X
186401788(supplementary)X
186412343(material,)X
186422690(and)X
186432852(not)X
186443000(part)X
186453172(of)X
186463280(the)X
186473423(format)X
186483693(de\256nition)X
18649576 1560(itself.)N
186503 f
1865112 s
18652576 1716(1.3)N
18653744(Vendor)X
186541077(Extensibility)X
186551 f
1865611 s
18657576 1872(This)N
18658768(document)X
186591151(does)X
186601347(not)X
186611495(attempt)X
186621796(to)X
186631900(cover)X
186642130(all)X
186652254(interesting)X
186662662(languages)X
186673049(or)X
186683157(even)X
186693358(to)X
186703462(cover)X
186713692(all)X
186723816(of)X
186733924(the)X
18674576 1976(interesting)N
18675974(debugging)X
186761370(information)X
186771811(needs)X
186782035(for)X
186792161(its)X
186802269(primary)X
186812572(target)X
186822797(languages)X
186833173(\(C,)X
186843307(C++,)X
186853512(FORTRAN77,)X
18686576 2080(Fortran90,)N
18687968(Modula2,)X
186881331(Pascal\).)X
186891630(Therefore)X
186901999(the)X
186912130(document)X
186922501(provides)X
186932828(vendors)X
186943130(a)X
186953193(way)X
186963363(to)X
186973456(de\256ne)X
186983695(their)X
186993881(own)X
18700576 2184(debugging)N
18701971(information)X
187021411(tags,)X
187031598(attributes,)X
187041972(base)X
187052151(type)X
187062326(encodings,)X
187072727(location)X
187083034(operations,)X
187093445(language)X
187103785(names,)X
18711576 2288(calling)N
18712839(conventions)X
187131287(and)X
187141436(call)X
187151586(frame)X
187161813(instructions)X
187172247(by)X
187182357(reserving)X
187192706(a)X
187202768(portion)X
187213046(of)X
187223142(the)X
187233273(name)X
187243487(space)X
187253705(and)X
187263855(valid)X
18727576 2392(values)N
18728832(for)X
18729965(these)X
187301177(constructs)X
187311565(for)X
187321698(vendor)X
187331973(speci\256c)X
187342273(additions.)X
187352672(Future)X
187362932(versions)X
187373255(of)X
187383358(this)X
187393516(document)X
187403894(will)X
18741576 2496(not)N
18742733(use)X
18743894(names)X
187441163(or)X
187451280(values)X
187461549(reserved)X
187471890(for)X
187482036(vendor)X
187492324(speci\256c)X
187502637(additions.)X
187513049(All)X
187523207(names)X
187533477(and)X
187543649(values)X
187553919(not)X
18756576 2600(reserved)N
18757905(for)X
187581039(vendor)X
187591315(additions,)X
187601693(however,)X
187612049(are)X
187622188(reserved)X
187632517(for)X
187642651(future)X
187652893(versions)X
187663218(of)X
187673323(this)X
187683482(document.)X
187693905(See)X
18770576 2704(section)N
18771848(7)X
18772914(for)X
187731038(details.)X
187743 f
1877512 s
18776576 2860(1.4)N
18777744(Changes)X
187781119(from)X
187791346(Version)X
187801690(1)X
187811 f
1878211 s
18783576 3016(The)N
18784736(following)X
187851102(is)X
187861184(a)X
187871246(list)X
187881378(of)X
187891474(the)X
187901605(major)X
187911834(changes)X
187922140(made)X
187932354(to)X
187942446(the)X
187952577(DWARF)X
187962917(Debugging)X
187973332(Information)X
187983777(Format)X
18799576 3120(since)N
18800793(Version)X
188011107(1)X
188021187(of)X
188031296(the)X
188041440(format)X
188051711(was)X
188061883(published)X
188072262(\(January)X
188082600(20,)X
188092746(1992\).)X
188103031(The)X
188113204(list)X
188123349(is)X
188133444(not)X
188143593(meant)X
188153845(to)X
188163949(be)X
18817576 3224(exhaustive.)N
188189 s
1881910 f
18820639 3380(g)N
1882111 s
188221 f
18823708(Debugging)X
188241131(information)X
188251580(entries)X
188261847(have)X
188272045(been)X
188282243(moved)X
188292515(from)X
188302718(the)X
188310 f
188322858(.debug)X
188331 f
188343208(to)X
188353309(the)X
188360 f
188373449(.debug_info)X
188381 f
18839708 3484(section)N
18840980(of)X
188411075(an)X
188421180(object)X
188431418(\256le.)X
188449 s
1884510 f
18846639 3640(g)N
1884711 s
188481 f
18849708(The)X
18850867(tag,)X
188511019(attribute)X
188521336(names)X
188531583(and)X
188541732(attribute)X
188552049(forms)X
188562276(encodings)X
188572656(have)X
188582845(been)X
188593034(moved)X
188603297(out)X
188613433(of)X
188623529(the)X
188633660(debugging)X
18864708 3744(information)N
188651147(itself)X
188661346(to)X
188671437(a)X
188681498(separate)X
188691808(abbreviations)X
188702305(table.)X
188719 s
1887210 f
18873639 3900(g)N
1887411 s
188751 f
18876708(Explicit)X
188771025(sibling)X
188781302(pointers)X
188791622(have)X
188801824(been)X
188812026(made)X
188822254(optional.)X
188832625(Each)X
188842838(entry)X
188853056(now)X
188863244(speci\256es)X
188873584(\(through)X
188883924(the)X
18889708 4004(abbreviations)N
188901205(table\))X
188911428(whether)X
188921733(or)X
188931828(not)X
188941963(it)X
188952035(has)X
188962174(children.)X
188979 s
1889810 f
18899639 4160(g)N
1890011 s
189011 f
18902708(New)X
18903895(more)X
189041098(compact)X
189051419(attribute)X
189061737(forms)X
189071965(have)X
189082154(been)X
189092343(added,)X
189102598(including)X
189112955(a)X
189123017(variable)X
189133324(length)X
189143568(constant)X
189153885(data)X
18916708 4264(form.)N
18917945(Attribute)X
189181286(values)X
189191533(may)X
189201707(now)X
189211880(have)X
189222068(any)X
189232217(form)X
189242410(within)X
189252658(a)X
189262719(given)X
189272937(class)X
189283130(of)X
189293225(forms.)X
189309 s
1893110 f
18932639 4420(g)N
1893311 s
189341 f
18935708(Location)X
189361063(descriptions)X
189371530(have)X
189381737(been)X
189391944(replaced)X
189402284(by)X
189412414(a)X
189422495(new,)X
189432705(more)X
189442928(compact)X
189453269(and)X
189463438(more)X
189473661(expressive)X
18948708 4524(format.)N
189491021(There)X
189501260(is)X
189511353(now)X
189521538(a)X
189531611(way)X
189541791(of)X
189551898(expressing)X
189562308(multiple)X
189572638(locations)X
189582990(for)X
189593125(an)X
189603241(object)X
189613490(whose)X
189623747(location)X
18963708 4628(changes)N
189641013(during)X
189651265(its)X
189661371(lifetime.)X
189679 s
1896810 f
18969639 4784(g)N
1897011 s
189711 f
18972708(There)X
18973959(is)X
189741064(a)X
189751149(new)X
189761341(format)X
189771622(for)X
189781770(line)X
189791949(number)X
189802264(information)X
189812727(that)X
189822906(provides)X
189833255(information)X
189843718(for)X
189853866(code)X
18986708 4888(contributed)N
189871140(to)X
189881239(a)X
189891308(compilation)X
189901761(unit)X
189911929(from)X
189922129(an)X
189932241(included)X
189942574(\256le.)X
189952760(Line)X
189962951(number)X
189973249(information)X
189983695(is)X
189993783(now)X
190003963(in)X
19001708 4992(the)N
190020 f
19003838(.debug_line)X
190041 f
190051443(section)X
190061715(of)X
190071810(an)X
190081915(object)X
190092153(\256le.)X
190109 s
1901110 f
19012639 5148(g)N
1901311 s
190141 f
19015708(The)X
19016867(representation)X
190171388(of)X
190181483(the)X
190191613(type)X
190201787(of)X
190211882(a)X
190221943(declaration)X
190232357(has)X
190242496(been)X
190252684(reworked.)X
190269 s
1902710 f
19028639 5304(g)N
1902911 s
190301 f
19031708(A)X
19032793(new)X
19033961(section)X
190341233(provides)X
190351558(an)X
190361663(encoding)X
190372008(for)X
190382132(pre-processor)X
190392631(macro)X
190402873(information.)X
190419 s
1904210 f
19043639 5460(g)N
1904411 s
190451 f
19046708(Debugging)X
190471168(information)X
190481655(entries)X
190491960(now)X
190502181(provide)X
190512520(for)X
190522692(the)X
190532870(representation)X
190543439(of)X
190553582(non-de\256ning)X
19056708 5564(declarations)N
190571156(of)X
190581251(objects,)X
190591545(functions)X
190601895(or)X
190611990(types.)X
190629 s
1906310 f
19064639 5720(g)N
1906511 s
190661 f
19067708(More)X
19068920(complete)X
190691266(support)X
190701552(for)X
190711676(Modula2)X
190722016(and)X
190732165(Pascal)X
190742412(has)X
190752551(been)X
190762739(added.)X
1907710 s
19078576 5951(Revision:)N
19079902(2.0.0)X
190802196(Page)X
190812372(4)X
190823599(July)X
190833752(27,)X
190843872(1993)X
190851943 6055(Industry)N
190862230(Review)X
190872495(Draft)X
19088
190895 p
19090%%Page: 5 7
190910(Courier)xf 0 f
1909210 s 0 xH 0 xS 0 f
1909311 s
190941 f
1909510 s
190963075 520(Programming)N
190973535(Languages)X
190983903(SIG)X
190999 s
1910010 f
19101639 832(g)N
1910211 s
191031 f
19104708(There)X
19105935(is)X
191061016(now)X
191071189(a)X
191081250(way)X
191091418(of)X
191101513(describing)X
191111902(locations)X
191122243(for)X
191132367(segmented)X
191142766(address)X
191153051(spaces.)X
191169 s
1911710 f
19118639 988(g)N
1911911 s
191201 f
19121708(A)X
19122793(new)X
19123961(section)X
191241233(provides)X
191251558(an)X
191261663(encoding)X
191272008(for)X
191282132(information)X
191292571(about)X
191302789(call)X
191312939(frame)X
191323166(activations.)X
191339 s
1913410 f
19135639 1144(g)N
1913611 s
191371 f
19138708(The)X
19139889(representation)X
191401433(of)X
191411551(enumeration)X
191422037(and)X
191432209(array)X
191442434(types)X
191452665(has)X
191462827(been)X
191473038(reworked)X
191483414(so)X
191493537(that)X
191503715(DWARF)X
19151708 1248(presents)N
191521018(only)X
191531197(a)X
191541258(single)X
191551491(way)X
191561659(of)X
191571754(representing)X
191582211(lists)X
191592376(of)X
191602471(items.)X
191619 s
1916210 f
19163639 1404(g)N
1916411 s
191651 f
19166708(Support)X
191671009(has)X
191681148(been)X
191691336(added)X
191701568(for)X
191711692(C++)X
191721873(templates)X
191732234(and)X
191742383(exceptions.)X
1917510 s
19176576 5951(Revision:)N
19177902(2.0.0)X
191782196(Page)X
191792372(5)X
191803599(July)X
191813752(27,)X
191823872(1993)X
191831943 6055(Industry)N
191842230(Review)X
191852495(Draft)X
19186
191876 p
19188%%Page: 6 8
191890(Courier)xf 0 f
1919010 s 0 xH 0 xS 0 f
1919111 s
191921 f
1919310 s
19194576 520(DWARF)N
19195885(Debugging)X
191961261(Information)X
191971664(Format)X
19198576 5951(Revision:)N
19199902(2.0.0)X
192002196(Page)X
192012372(6)X
192023599(July)X
192033752(27,)X
192043872(1993)X
192051943 6055(Industry)N
192062230(Review)X
192072495(Draft)X
19208
192097 p
19210%%Page: 7 9
192110(Courier)xf 0 f
1921210 s 0 xH 0 xS 0 f
1921311 s
192141 f
1921510 s
192163075 520(Programming)N
192173535(Languages)X
192183903(SIG)X
192193 f
1922012 s
19221576 832(2.)N
19222696(GENERAL)X
192231194(DESCRIPTION)X
19224576 988(2.1)N
19225744(The)X
19226928(Debugging)X
192271394(Information)X
192281919(Entry)X
192291 f
1923011 s
19231576 1144(DWARF)N
19232920(uses)X
192331098(a)X
192341164(series)X
192351391(of)X
192361491(debugging)X
192371890(information)X
192382334(entries)X
192392597(to)X
192402694(de\256ne)X
192412937(a)X
192423004(low-level)X
192433365(representation)X
192443892(of)X
192453993(a)X
19246576 1248(source)N
19247853(program.)X
192481221(Each)X
192491445(debugging)X
192501865(information)X
192512330(entry)X
192522559(is)X
192532666(described)X
192543050(by)X
192553185(an)X
192563315(identifying)X
192573750(tag)X
192583905(and)X
19259576 1352(contains)N
19260907(a)X
19261983(series)X
192621220(of)X
192631330(attributes.)X
192641718(The)X
192651892(tag)X
192662037(speci\256es)X
192672377(the)X
192682522(class)X
192692730(to)X
192702836(which)X
192713088(an)X
192723208(entry)X
192733426(belongs,)X
192743759(and)X
192753924(the)X
19276576 1456(attributes)N
19277927(de\256ne)X
192781164(the)X
192791294(speci\256c)X
192801585(characteristics)X
192812111(of)X
192822206(the)X
192832336(entry.)X
19284576 1612(The)N
19285751(set)X
19286887(of)X
19287998(required)X
192881329(tag)X
192891475(names)X
192901738(is)X
192911835(listed)X
192922065(in)X
192932172(Figure)X
192942440(1.)X
192952566(The)X
192962741(debugging)X
192973151(information)X
192983606(entries)X
192993880(they)X
19300576 1716(identify)N
19301873(are)X
193021002(described)X
193031361(in)X
193041452(sections)X
193051758(three,)X
193061978(four)X
193072146(and)X
193082295(\256ve.)X
19309576 1872(The)N
19310771(debugging)X
193111201(information)X
193121676(entries)X
193131969(in)X
193142097(DWARF)X
193152473(Version)X
193162810(2)X
193172913(are)X
193183079(intended)X
193193442(to)X
193203570(exist)X
193213796(in)X
193223924(the)X
193230 f
19324576 1976(.debug_info)N
193251 f
193261181(section)X
193271453(of)X
193281548(an)X
193291653(object)X
193301891(\256le.)X
1933110 f
19332710 2044(i)N
19333730(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
193340 f
19335754 2148 0.1953(DW_TAG_access_declaration)AN
193362317 0.1992(DW_TAG_array_type)AX
19337754 2252(DW_TAG_base_type)N
193382317 0.1985(DW_TAG_catch_block)AX
19339754 2356 0.1992(DW_TAG_class_type)AN
193402317 0.1979(DW_TAG_common_block)AX
19341754 2460 0.1960(DW_TAG_common_inclusion)AN
193422317 0.1979(DW_TAG_compile_unit)AX
19343754 2564 0.1992(DW_TAG_const_type)AN
193442317(DW_TAG_constant)X
19345754 2668 0.1985(DW_TAG_entry_point)AN
193462317 0.1960(DW_TAG_enumeration_type)AX
19347754 2772 0.1992(DW_TAG_enumerator)AN
193482317(DW_TAG_file_type)X
19349754 2876 0.1960(DW_TAG_formal_parameter)AN
193502317(DW_TAG_friend)X
19351754 2980 0.1947(DW_TAG_imported_declaration)AN
193522317 0.1985(DW_TAG_inheritance)AX
19353754 3084 0.1953(DW_TAG_inlined_subroutine)AN
193542317(DW_TAG_label)X
19355754 3188 0.1974(DW_TAG_lexical_block)AN
193562317(DW_TAG_member)X
19357754 3292(DW_TAG_module)N
193582317(DW_TAG_namelist)X
19359754 3396 0.1974(DW_TAG_namelist_item)AN
193602317 0.1985(DW_TAG_packed_type)AX
19361754 3500 0.1979(DW_TAG_pointer_type)AN
193622317 0.1953(DW_TAG_ptr_to_member_type)AX
19363754 3604 0.1969(DW_TAG_reference_type)AN
193642317(DW_TAG_set_type)X
19365754 3708 0.1985(DW_TAG_string_type)AN
193662317 0.1969(DW_TAG_structure_type)AX
19367754 3812 0.1992(DW_TAG_subprogram)AN
193682317 0.1974(DW_TAG_subrange_type)AX
19369754 3916 0.1964(DW_TAG_subroutine_type)AN
193702317 0.1950(DW_TAG_template_type_param)AX
19371754 4020 0.1947(DW_TAG_template_value_param)AN
193722317 0.1985(DW_TAG_thrown_type)AX
19373754 4124(DW_TAG_try_block)N
193742317(DW_TAG_typedef)X
19375754 4228 0.1992(DW_TAG_union_type)AN
193762317 0.1942(DW_TAG_unspecified_parameters)AX
19377754 4332(DW_TAG_variable)N
193782317(DW_TAG_variant)X
19379754 4436 0.1979(DW_TAG_variant_part)AN
193802317 0.1974(DW_TAG_volatile_type)AX
19381754 4540(DW_TAG_with_stmt)N
193821 f
1938310 f
19384710 4556(i)N
19385730(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
19386710(c)X
193874508(c)Y
193884420(c)Y
193894332(c)Y
193904244(c)Y
193914156(c)Y
193924068(c)Y
193933980(c)Y
193943892(c)Y
193953804(c)Y
193963716(c)Y
193973628(c)Y
193983540(c)Y
193993452(c)Y
194003364(c)Y
194013276(c)Y
194023188(c)Y
194033100(c)Y
194043012(c)Y
194052924(c)Y
194062836(c)Y
194072748(c)Y
194082660(c)Y
194092572(c)Y
194102484(c)Y
194112396(c)Y
194122308(c)Y
194132220(c)Y
194142132(c)Y
194153898 4556(c)N
194164508(c)Y
194174420(c)Y
194184332(c)Y
194194244(c)Y
194204156(c)Y
194214068(c)Y
194223980(c)Y
194233892(c)Y
194243804(c)Y
194253716(c)Y
194263628(c)Y
194273540(c)Y
194283452(c)Y
194293364(c)Y
194303276(c)Y
194313188(c)Y
194323100(c)Y
194333012(c)Y
194342924(c)Y
194352836(c)Y
194362748(c)Y
194372660(c)Y
194382572(c)Y
194392484(c)Y
194402396(c)Y
194412308(c)Y
194422220(c)Y
194432132(c)Y
194443 f
194451921 4660(Figure)N
194462193(1.)X
194471 f
194482303(Tag)X
194492462(names)X
194503 f
1945112 s
19452576 4816(2.2)N
19453744(Attribute)X
194541152(Types)X
194551 f
1945611 s
19457576 4972(Each)N
19458778(attribute)X
194591099(value)X
194601316(is)X
194611401(characterized)X
194621896(by)X
194632010(an)X
194642119(attribute)X
194652440(name.)X
194662701(The)X
194672864(set)X
194682988(of)X
194693087(attribute)X
194703408(names)X
194713659(is)X
194723744(listed)X
194733963(in)X
19474576 5076(Figure)N
19475828(2.)X
19476576 5232(The)N
19477745(permissible)X
194781184(values)X
194791441(for)X
194801575(an)X
194811690(attribute)X
194822017(belong)X
194832289(to)X
194842390(one)X
194852550(or)X
194862656(more)X
194872870(classes)X
194883147(of)X
194893253(attribute)X
194903581(value)X
194913805(forms.)X
19492576 5336(Each)N
19493785(form)X
19494989(class)X
194951193(may)X
194961378(be)X
194971494(represented)X
194981931(in)X
194992032(one)X
195002191(or)X
195012296(more)X
195022509(ways.)X
195032765(For)X
195042919(instance,)X
195053262(some)X
195063480(attribute)X
195073807(values)X
19508576 5440(consist)N
19509854(of)X
19510960(a)X
195111032(single)X
195121276(piece)X
195131495(of)X
195141601(constant)X
195151928(data.)X
195162153(``Constant)X
195172559(data'')X
195182798(is)X
195192891(the)X
195203033(class)X
195213238(of)X
195223345(attribute)X
195233674(value)X
195243899(that)X
19525576 5544(those)N
19526787(attributes)X
195271141(may)X
195281318(have.)X
195291552(There)X
195301781(are)X
195311912(several)X
195322185(representations)X
195332742(of)X
195342839(constant)X
195353157(data,)X
195363350(however)X
195373676(\(one,)X
195383878(two,)X
19539576 5648(four,)N
19540766(eight)X
19541965(bytes)X
195421173(and)X
195431322(variable)X
195441628(length)X
195451871(data\).)X
195462113(The)X
195472272(particular)X
195482632(representation)X
195493153(for)X
195503278(any)X
195513428(given)X
195523647(instance)X
195533959(of)X
19554576 5752(an)N
19555691(attribute)X
195561018(is)X
195571109(encoded)X
195581434(along)X
195591661(with)X
195601849(the)X
195611988(attribute)X
195622314(name)X
195632536(as)X
195642640(part)X
195652808(of)X
195662912(the)X
195673051(information)X
195683499(that)X
195693663(guides)X
195703924(the)X
1957110 s
19572576 5951(Revision:)N
19573902(2.0.0)X
195742196(Page)X
195752372(7)X
195763599(July)X
195773752(27,)X
195783872(1993)X
195791943 6055(Industry)N
195802230(Review)X
195812495(Draft)X
19582
195838 p
19584%%Page: 8 10
195850(Courier)xf 0 f
1958610 s 0 xH 0 xS 0 f
1958711 s
195881 f
1958910 s
19590576 520(DWARF)N
19591885(Debugging)X
195921261(Information)X
195931664(Format)X
1959411 s
1959510 f
19596869 744(i)N
19597879(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
195980 f
19599913 848 0.1969(DW_AT_abstract_origin)AN
196002423 0.1979(DW_AT_accessibility)AX
19601913 952 0.1979(DW_AT_address_class)AN
196022423(DW_AT_artificial)X
19603913 1056(DW_AT_base_types)N
196042423(DW_AT_bit_offset)X
19605913 1160(DW_AT_bit_size)N
196062423(DW_AT_byte_size)X
19607913 1264 0.1957(DW_AT_calling_convention)AN
196082423 0.1964(DW_AT_common_reference)AX
19609913 1368(DW_AT_comp_dir)N
196102423 0.1992(DW_AT_const_value)AX
19611913 1472 0.1969(DW_AT_containing_type)AN
196122423(DW_AT_count)X
19613913 1576 0.1950(DW_AT_data_member_location)AN
196142423 0.1992(DW_AT_decl_column)AX
19615913 1680(DW_AT_decl_file)N
196162423(DW_AT_decl_line)X
19617913 1784 0.1992(DW_AT_declaration)AN
196182423 0.1979(DW_AT_default_value)AX
19619913 1888(DW_AT_discr)N
196202423(DW_AT_discr_list)X
19621913 1992 0.1992(DW_AT_discr_value)AN
196222423(DW_AT_encoding)X
19623913 2096(DW_AT_external)N
196242423(DW_AT_frame_base)X
19625913 2200(DW_AT_friend)N
196262423(DW_AT_high_pc)X
19627913 2304 0.1969(DW_AT_identifier_case)AN
196282423(DW_AT_import)X
19629913 2408(DW_AT_inline)N
196302423 0.1992(DW_AT_is_optional)AX
19631913 2512(DW_AT_language)N
196322423(DW_AT_location)X
19633913 2616(DW_AT_low_pc)N
196342423 0.1992(DW_AT_lower_bound)AX
19635913 2720(DW_AT_macro_info)N
196362423(DW_AT_name)X
19637913 2824 0.1979(DW_AT_namelist_item)AN
196382423(DW_AT_ordering)X
19639913 2928(DW_AT_priority)N
196402423(DW_AT_producer)X
19641913 3032(DW_AT_prototyped)N
196422423 0.1992(DW_AT_return_addr)AX
19643913 3136(DW_AT_segment)N
196442423(DW_AT_sibling)X
19645913 3240 0.1979(DW_AT_specification)AN
196462423 0.1992(DW_AT_start_scope)AX
19647913 3344 0.1992(DW_AT_static_link)AN
196482423(DW_AT_stmt_list)X
19649913 3448 0.1992(DW_AT_stride_size)AN
196502423 0.1979(DW_AT_string_length)AX
19651913 3552(DW_AT_type)N
196522423 0.1992(DW_AT_upper_bound)AX
19653913 3656 0.1985(DW_AT_use_location)AN
196542423 0.1957(DW_AT_variable_parameter)AX
19655913 3760(DW_AT_virtuality)N
196562423(DW_AT_visibility)X
19657913 3864 0.1950(DW_AT_vtable_elem_location)AN
196581 f
1965910 f
19660869 3880(i)N
19661879(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
19662869(c)X
196633824(c)Y
196643736(c)Y
196653648(c)Y
196663560(c)Y
196673472(c)Y
196683384(c)Y
196693296(c)Y
196703208(c)Y
196713120(c)Y
196723032(c)Y
196732944(c)Y
196742856(c)Y
196752768(c)Y
196762680(c)Y
196772592(c)Y
196782504(c)Y
196792416(c)Y
196802328(c)Y
196812240(c)Y
196822152(c)Y
196832064(c)Y
196841976(c)Y
196851888(c)Y
196861800(c)Y
196871712(c)Y
196881624(c)Y
196891536(c)Y
196901448(c)Y
196911360(c)Y
196921272(c)Y
196931184(c)Y
196941096(c)Y
196951008(c)Y
19696920(c)Y
19697832(c)Y
196983739 3880(c)N
196993824(c)Y
197003736(c)Y
197013648(c)Y
197023560(c)Y
197033472(c)Y
197043384(c)Y
197053296(c)Y
197063208(c)Y
197073120(c)Y
197083032(c)Y
197092944(c)Y
197102856(c)Y
197112768(c)Y
197122680(c)Y
197132592(c)Y
197142504(c)Y
197152416(c)Y
197162328(c)Y
197172240(c)Y
197182152(c)Y
197192064(c)Y
197201976(c)Y
197211888(c)Y
197221800(c)Y
197231712(c)Y
197241624(c)Y
197251536(c)Y
197261448(c)Y
197271360(c)Y
197281272(c)Y
197291184(c)Y
197301096(c)Y
197311008(c)Y
19732920(c)Y
19733832(c)Y
197343 f
197351830 3984(Figure)N
197362102(2.)X
197371 f
197382212(Attribute)X
197392553(names)X
19740576 4140(interpretation)N
197411076(of)X
197421173(a)X
197431237(debugging)X
197441634(information)X
197452076(entry.)X
197462348(Attribute)X
197472692(value)X
197482908(forms)X
197493138(may)X
197503315(belong)X
197513580(to)X
197523674(one)X
197533826(of)X
197543924(the)X
19755576 4244(following)N
19756941(classes.)X
19757576 4400(address)N
197581368(Refers)X
197591619(to)X
197601710(some)X
197611918(location)X
197622225(in)X
197632316(the)X
197642446(address)X
197652731(space)X
197662948(of)X
197673043(the)X
197683173(described)X
197693532(program.)X
19770576 4556(block)N
197711368(An)X
197721497(arbitrary)X
197731822(number)X
197742113(of)X
197752208(uninterpreted)X
197762700(bytes)X
197772908(of)X
197783003(data.)X
19779576 4712(constant)N
197801368(One,)X
197811563(two,)X
197821744(four)X
197831917(or)X
197842017(eight)X
197852221(bytes)X
197862434(of)X
197872535(uninterpreted)X
197883033(data,)X
197893230(or)X
197903331(data)X
197913506(encoded)X
197923827(in)X
197933924(the)X
197941368 4816(variable)N
197951674(length)X
197961917(format)X
197972174(known)X
197982435(as)X
197992530(LEB128)X
198002851(\(see)X
198013014(section)X
198023286(7.6\).)X
19803576 4972(\257ag)N
198041363(A)X
198051448(small)X
198061662(constant)X
198071978(that)X
198082133(indicates)X
198092469(the)X
198102599(presence)X
198112928(or)X
198123023(absence)X
198133323(of)X
198143418(an)X
198153523(attribute.)X
19816576 5128(reference)N
198171368(Refers)X
198181631(to)X
198191734(some)X
198201954(member)X
198212278(of)X
198222386(the)X
198232529(set)X
198242662(of)X
198252770(debugging)X
198263177(information)X
198273629(entries)X
198283899(that)X
198291368 5232(describe)N
198301697(the)X
198311841(program.)X
198322219(There)X
198332460(are)X
198342603(two)X
198352771(types)X
198362993(of)X
198373102(reference.)X
198383508(The)X
198393681(\256rst)X
198403854(is)X
198413949(an)X
198421368 5336(offset)N
198431616(relative)X
198441929(to)X
198452046(the)X
198462202(beginning)X
198472604(of)X
198482726(the)X
198492883(compilation)X
198503355(unit)X
198513542(in)X
198523660(which)X
198533924(the)X
198541368 5440(reference)N
198551726(occurs)X
198561987(and)X
198572146(must)X
198582350(refer)X
198592547(to)X
198602648(an)X
198612763(entry)X
198622976(within)X
198633233(that)X
198643397(same)X
198653609(compilation)X
198661368 5544(unit.)N
198671599(The)X
198681785(second)X
198692079(type)X
198702281(of)X
198712404(reference)X
198722780(is)X
198732889(the)X
198743047(address)X
198753360(of)X
198763483(any)X
198773660(debugging)X
198781368 5648(information)N
198791809(entry)X
198802014(within)X
198812264(the)X
198822396(same)X
198832601(executable)X
198843002(or)X
198853099(shared)X
198863352(object;)X
198873617(it)X
198883691(may)X
198893867(refer)X
198901368 5752(to)N
198911475(an)X
198921596(entry)X
198931815(in)X
198941922(a)X
198951999(different)X
198962340(compilation)X
198972801(unit)X
198982978(from)X
198993188(the)X
199003335(unit)X
199013512(containing)X
199023924(the)X
1990310 s
19904576 5951(Revision:)N
19905902(2.0.0)X
199062196(Page)X
199072372(8)X
199083599(July)X
199093752(27,)X
199103872(1993)X
199111943 6055(Industry)N
199122230(Review)X
199132495(Draft)X
19914
199159 p
19916%%Page: 9 11
199170(Courier)xf 0 f
1991810 s 0 xH 0 xS 0 f
1991911 s
199201 f
1992110 s
199223075 520(Programming)N
199233535(Languages)X
199243903(SIG)X
1992511 s
199261368 832(reference.)N
19927576 988(string)N
199281368(A)X
199291458(null-terminated)X
199302030(sequence)X
199312380(of)X
199322481(zero)X
199332660(or)X
199342761(more)X
199352970(\(non-null\))X
199363355(bytes.)X
199373613(Data)X
199383807(in)X
199393904(this)X
199401368 1092(form)N
199411563(are)X
199421694(generally)X
199432046(printable)X
199442384(strings.)X
199452687(Strings)X
199462961(may)X
199473136(be)X
199483242(represented)X
199493670(directly)X
199503963(in)X
199511368 1196(the)N
199521498(debugging)X
199531892(information)X
199542331(entry)X
199552534(or)X
199562629(as)X
199572724(an)X
199582829(offset)X
199593051(in)X
199603142(a)X
199613203(separate)X
199623513(string)X
199633736(table.)X
19964576 1352(There)N
19965803(are)X
19966932(no)X
199671042 0.3625(limitations)AX
199681444(on)X
199691555(the)X
199701686(ordering)X
199712007(of)X
199722103(attributes)X
199732455(within)X
199742704(a)X
199752766(debugging)X
199763161(information)X
199773601(entry,)X
199783827(but)X
199793963(to)X
19980576 1456(prevent)N
19981869(ambiguity,)X
199821279(no)X
199831396(more)X
199841606(than)X
199851787(one)X
199861943(attribute)X
199872267(with)X
199882453(a)X
199892521(given)X
199902746(name)X
199912966(may)X
199923146(appear)X
199933408(in)X
199943505(any)X
199953660(debugging)X
19996576 1560(information)N
199971015(entry.)X
199983 f
1999912 s
20000576 1716(2.3)N
20001744(Relationship)X
200021285(of)X
200031389(Debugging)X
200041855(Information)X
200052380(Entries)X
200062 f
2000711 s
20008576 1872(A)N
20009658(variety)X
20010931(of)X
200111028(needs)X
200121256(can)X
200131411(be)X
200141522(met)X
200151677(by)X
200161788(permitting)X
200172184(a)X
200182257(single)X
200192497(debugging)X
200202898(information)X
200213344(entry)X
200223554(to)X
200233652(``own'')X
200243944(an)X
20025576 1976(arbitrary)N
20026928(number)X
200271225(of)X
200281322(other)X
200291536(debugging)X
200301936(entries)X
200312204(and)X
200322364(by)X
200332475(permitting)X
200342871(the)X
200353007(same)X
200363215(debugging)X
200373615(information)X
20038576 2080(entry)N
20039779(to)X
20040870(be)X
20041975(one)X
200421124(of)X
200431215(many)X
200441427(owned)X
200451679(by)X
200461784(another)X
200472080(debugging)X
200482474(information)X
200492913(entry.)X
200503161(This)X
200513336(makes)X
200523578(it)X
200533651(possible)X
200543963(to)X
20055576 2184(describe,)N
20056934(for)X
200571075(example,)X
200581428(the)X
200591574(static)X
200601804(block)X
200612033(structure)X
200622388(within)X
200632647(a)X
200642728(source)X
200652999(\256le,)X
200663166(show)X
200673384(the)X
200683529(members)X
200693882(of)X
200703988(a)X
20071576 2288(structure,)N
20072940(union,)X
200731187(or)X
200741289(class,)X
200751511(and)X
200761667(associate)X
200772019(declarations)X
200782484(with)X
200792661(source)X
200802919(\256les)X
200813086(or)X
200823189(source)X
200833448(\256les)X
200843615(with)X
200853793(shared)X
20086576 2392(objects.)N
200871 f
20088576 2548(The)N
20089759(ownership)X
200901171(relation)X
200911487(of)X
200921607(debugging)X
200932026(information)X
200942490(entries)X
200952772(is)X
200962878(achieved)X
200973238(naturally)X
200983599(because)X
200993924(the)X
20100576 2652(debugging)N
20101997(information)X
201021462(is)X
201031569(represented)X
201042022(as)X
201052143(a)X
201062230(tree.)X
201072454(The)X
201082639(nodes)X
201092892(of)X
201103013(the)X
201113169(tree)X
201123349(are)X
201133504(the)X
201143660(debugging)X
20115576 2756(information)N
201161037(entries)X
201171316(themselves.)X
201181796(The)X
201191977(child)X
201202198(entries)X
201212477(of)X
201222594(any)X
201232765(node)X
201242980(are)X
201253131(exactly)X
201263430(those)X
201273660(debugging)X
20128576 2860(information)N
201291015(entries)X
201301272(owned)X
201311528(by)X
201321638(that)X
201331793(node.)X
201348 s
201351986 2825(1)N
2013611 s
20137576 3016(The)N
20138737(tree)X
20139893(itself)X
201401094(is)X
201411177(represented)X
201421606(by)X
201431718(\257attening)X
201442076(it)X
201452150(in)X
201462243(pre\256x)X
201472473(order.)X
201482727(Each)X
201492928(debugging)X
201503325(information)X
201513767(entry)X
201523973(is)X
20153576 3120(de\256ned)N
20154863(either)X
201551092(to)X
201561189(have)X
201571383(child)X
201581588(entries)X
201591851(or)X
201601952(not)X
201612093(to)X
201622190(have)X
201632383(child)X
201642587(entries)X
201652849(\(see)X
201663017(section)X
201673294(7.5.3\).)X
201683570(If)X
201693655(an)X
201703765(entry)X
201713973(is)X
20172576 3224(de\256ned)N
20173858(not)X
20174994(to)X
201751086(have)X
201761275(children,)X
201771610(the)X
201781742(next)X
201791918(physically)X
201802305(succeeding)X
201812720(entry)X
201822925(is)X
201833008(the)X
201843140(sibling)X
201853405(of)X
201863502(the)X
201873634(prior)X
201883829(entry.)X
20189576 3328(If)N
20190657(an)X
20191763(entry)X
20192967(is)X
201931049(de\256ned)X
201941331(to)X
201951423(have)X
201961612(children,)X
201971946(the)X
201982077(next)X
201992252(physically)X
202002638(succeeding)X
202013052(entry)X
202023256(is)X
202033338(the)X
202043469(\256rst)X
202053629(child)X
202063829(of)X
202073924(the)X
20208576 3432(prior)N
20209775(entry.)X
202101029(Additional)X
202111436(children)X
202121754(of)X
202131856(the)X
202141993(parent)X
202152242(entry)X
202162452(are)X
202172588(represented)X
202183022(as)X
202193124(siblings)X
202203428(of)X
202213530(the)X
202223667(\256rst)X
202233833(child.)X
20224576 3536(A)N
20225661(chain)X
20226874(of)X
20227969(sibling)X
202281232(entries)X
202291489(is)X
202301570(terminated)X
202311970(by)X
202322080(a)X
202332141(null)X
202342301(entry.)X
20235576 3692(In)N
20236674(cases)X
20237884(where)X
202381123(a)X
202391187(producer)X
202401524(of)X
202411622(debugging)X
202422019(information)X
202432461(feels)X
202442652(that)X
202452810(it)X
202462885(will)X
202473049(be)X
202483158(important)X
202493528(for)X
202503656(consumers)X
20251576 3796(of)N
20252679(that)X
20253842(information)X
202541289(to)X
202551388(quickly)X
202561683(scan)X
202571869(chains)X
202582124(of)X
202592227(sibling)X
202602498(entries,)X
202612785(ignoring)X
202623114(the)X
202633252(children)X
202643571(of)X
202653673(individual)X
20266576 3900(siblings,)N
20267914(that)X
202681088(producer)X
202691441(may)X
202701634(attach)X
202711887(an)X
202720 f
202732012(AT_sibling)X
202741 f
202752584(attribute)X
202762921(to)X
202773032(any)X
202783201(debugging)X
202793615(information)X
20280576 4004(entry.)N
20281836(The)X
202821008(value)X
202831234(of)X
202841342(this)X
202851505(attribute)X
202861835(is)X
202871929(a)X
202882003(reference)X
202892364(to)X
202902468(the)X
202912611(sibling)X
202922887(entry)X
202933103(of)X
202943211(the)X
202953354(entry)X
202963570(to)X
202973674(which)X
202983924(the)X
20299576 4108(attribute)N
20300893(is)X
20301974(attached.)X
203023 f
2030312 s
20304576 4264(2.4)N
20305744(Location)X
203061131(Descriptions)X
203072 f
2030811 s
20309576 4420(The)N
20310751(debugging)X
203111166(information)X
203121626(must)X
203131835(provide)X
203142147(consumers)X
203152565(a)X
203162652(way)X
203172837(to)X
203182950(\256nd)X
203193126(the)X
203203278(location)X
203213612(of)X
203223725(program)X
20323576 4524(variables,)N
20324965(determine)X
203251355(the)X
203261501(bounds)X
203271793(of)X
203281900(dynamic)X
203292236(arrays)X
203302503(and)X
203312673(strings)X
203322951(and)X
203333121(possibly)X
203343448(to)X
203353555(\256nd)X
203363725(the)X
203373871(base)X
20338576 4628(address)N
20339883(of)X
20340986(a)X
203411064(subroutine's)X
203421538(stack)X
203431754(frame)X
203441994(or)X
203452107(the)X
203462250(return)X
203472505(address)X
203482813(of)X
203492917(a)X
203502996(subroutine.)X
203513452(Furthermore,)X
203523963(to)X
20353576 4732(meet)N
20354783(the)X
20355932(needs)X
203561173(of)X
203571282(recent)X
203581542(computer)X
203591914(architectures)X
203602419(and)X
203612591(optimization)X
203623073(techniques,)X
203633512(the)X
203643660(debugging)X
20365576 4836(information)N
203661022(must)X
203671217(be)X
203681329(able)X
203691510(to)X
203701608(describe)X
203711935(the)X
203722072(location)X
203732391(of)X
203742489(an)X
203752606(object)X
203762851(whose)X
203773100(location)X
203783420(changes)X
203793738(over)X
203803924(the)X
20381576 4940(object's)N
20382877(lifetime.)X
203831 f
203849 s
2038510 f
20386576 5216(hhhhhhhhhhhhhhhh)N
203871 f
20388576 5320(1.)N
20389684(While)X
20390885(the)X
20391998(ownership)X
203921323(relation)X
203931568(of)X
203941653(the)X
203951766(debugging)X
203962094(information)X
203972458(entries)X
203982674(is)X
203992746(represented)X
204003102(as)X
204013186(a)X
204023242(tree,)X
204033392(other)X
204043564(relations)X
204053836(among)X
20406684 5400(the)N
20407792(entries)X
204081004(exist,)X
204091178(for)X
204101282(example,)X
204111564(a)X
204121616(pointer)X
204131840(from)X
204142000(an)X
204152088(entry)X
204162256(representing)X
204172633(a)X
204182686(variable)X
204192939(to)X
204203016(another)X
204213253(entry)X
204223422(representing)X
204233799(the)X
204243908(type)X
20425684 5480(of)N
20426762(that)X
20427888(variable.)X
204281174(If)X
204291240(all)X
204301330(such)X
204311480(relations)X
204321746(are)X
204331852(taken)X
204342026(into)X
204352156(account,)X
204362416(the)X
204372522(debugging)X
204382844(entries)X
204393054(form)X
204403212(a)X
204413262(graph,)X
204423462(not)X
204433572(a)X
204443622(tree.)X
2044510 s
20446576 5951(Revision:)N
20447902(2.0.0)X
204482196(Page)X
204492372(9)X
204503599(July)X
204513752(27,)X
204523872(1993)X
204531943 6055(Industry)N
204542230(Review)X
204552495(Draft)X
20456
2045710 p
20458%%Page: 10 12
204590(Courier)xf 0 f
2046010 s 0 xH 0 xS 0 f
2046111 s
204621 f
2046310 s
20464576 520(DWARF)N
20465885(Debugging)X
204661261(Information)X
204671664(Format)X
2046811 s
20469576 832(Information)N
204701021(about)X
204711241(the)X
204721373(location)X
204731682(of)X
204741780(program)X
204752103(objects)X
204762378(is)X
204772462(provided)X
204782800(by)X
204792913(location)X
204803223(descriptions.)X
204813718(Location)X
20482576 936(descriptions)N
204831024(can)X
204841168(be)X
204851273(either)X
204861496(of)X
204871591(two)X
204881745(forms:)X
20489642 1092(1.)N
204902 f
20491796(Location)X
204921138(expressions)X
204931 f
204941576(which)X
204951819(are)X
204961954(a)X
204972021(language)X
204982367(independent)X
204992826(representation)X
205003354(of)X
205013456(addressing)X
205023861(rules)X
20503796 1196(of)N
20504904(arbitrary)X
205051242(complexity)X
205061675(built)X
205071873(from)X
205082079(a)X
205092153(few)X
205102318(basic)X
205112533(building)X
205122862(blocks,)X
205133148(or)X
205142 f
205153255(operations)X
205161 f
205173632(.)X
205183710(They)X
205193925(are)X
20520796 1300(suf\256cient)N
205211151(for)X
205221281(describing)X
205231676(the)X
205241812(location)X
205252125(of)X
205262226(any)X
205272381(object)X
205282625(as)X
205292726(long)X
205302911(as)X
205313012(its)X
205323124(lifetime)X
205333428(is)X
205343515(either)X
205353744(static)X
205363959(or)X
20537796 1404(the)N
20538926(same)X
205391129(as)X
205401224(the)X
205411354(lexical)X
205421612(block)X
205431830(that)X
205441985(owns)X
205452192(it,)X
205462286(and)X
205472435(it)X
205482507(does)X
205492690(not)X
205502825(move)X
205513043(throughout)X
205523452(its)X
205533558(lifetime.)X
20554642 1560(2.)N
205552 f
20556796(Location)X
205571132(lists)X
205581 f
205591297(which)X
205601534(are)X
205611663(used)X
205621846(to)X
205631937(describe)X
205642252(objects)X
205652524(that)X
205662679(have)X
205672867(a)X
205682928(limited)X
205693203(lifetime)X
205703502(or)X
205713598(change)X
205723870(their)X
20573796 1664(location)N
205741103(throughout)X
205751512(their)X
205761696(lifetime.)X
205772038(Location)X
205782374(lists)X
205792539(are)X
205802668(more)X
205812871(completely)X
205823286(described)X
205833645(below.)X
20584576 1820(The)N
20585744(two)X
20586908(forms)X
205871145(are)X
205881284(distinguished)X
205891787(in)X
205901888(a)X
205911959(context)X
205922251(sensitive)X
205932592(manner.)X
205942932(As)X
205953061(the)X
205963201(value)X
205973424(of)X
205983529(an)X
205993644(attribute,)X
206003993(a)X
20601576 1924(location)N
20602886(expression)X
206031287(is)X
206041371(encoded)X
206051689(as)X
206061787(a)X
206071851(block)X
206082072(and)X
206092224(a)X
206102287(location)X
206112596(list)X
206122729(is)X
206132812(encoded)X
206143129(as)X
206153226(a)X
206163289(constant)X
206173607(offset)X
206183831(into)X
206193993(a)X
20620576 2028(location)N
20621883(list)X
206221014(table.)X
206232 f
20624576 2184(Note:)N
20625799(The)X
20626958(Version)X
206271259(1)X
206281331(concept)X
206291633(of)X
206301730("location)X
206312085(descriptions")X
206322581(was)X
206332746(replaced)X
206343082(in)X
206353179(Version)X
206363481(2)X
206373553(with)X
206383734(this)X
206393890(new)X
20640576 2288(abstraction)N
206411000(because)X
206421305(it)X
206431377(is)X
206441458(denser)X
206451714(and)X
206461868(more)X
206472070(descriptive.)X
206483 f
20649576 2444(2.4.1)N
20650796(Location)X
206511151(Expressions)X
206521 f
20653576 2600(A)N
20654676(location)X
20655998(expression)X
206561411(consists)X
206571727(of)X
206581837(zero)X
206592025(or)X
206602136(more)X
206612355(location)X
206622678(operations.)X
206633127(An)X
206643272(expression)X
206653686(with)X
206663881(zero)X
20667576 2704(operations)N
20668976(is)X
206691068(used)X
206701262(to)X
206711364(denote)X
206721632(an)X
206731748(object)X
206741997(that)X
206752163(is)X
206762255(present)X
206772542(in)X
206782644(the)X
206792785(source)X
206803047(code)X
206813246(but)X
206823392(not)X
206833537(present)X
206843823(in)X
206853924(the)X
20686576 2808(object)N
20687822(code)X
206881018(\(perhaps)X
206891350(because)X
206901658(of)X
206911761(optimization\).)X
206922290(The)X
206932458(location)X
206942774(operations)X
206953172(fall)X
206963321(into)X
206973490(two)X
206983653(categories,)X
20699576 2912(register)N
20700868(names)X
207011120(and)X
207021274(addressing)X
207031677(operations.)X
207042115(Register)X
207052436(names)X
207062688(always)X
207072959(appear)X
207083220(alone)X
207093438(and)X
207103592(indicate)X
207113899(that)X
20712576 3016(the)N
20713716(referred)X
207141025(object)X
207151273(is)X
207161364(contained)X
207171739(inside)X
207181982(a)X
207192053(particular)X
207202424(register.)X
207212765(Addressing)X
207223198(operations)X
207233598(are)X
207243738(memory)X
20725576 3120(address)N
20726870(computation)X
207271343(rules.)X
207281589(All)X
207291732(location)X
207302047(operations)X
207312444(are)X
207322581(encoded)X
207332904(as)X
207343007(a)X
207353076(stream)X
207363341(of)X
207373444(opcodes)X
207383762(that)X
207393925(are)X
20740576 3224(each)N
20741768(followed)X
207421112(by)X
207431231(zero)X
207441413(or)X
207451517(more)X
207461729(literal)X
207471967(operands.)X
207482360(The)X
207492529(number)X
207502830(of)X
207512935(operands)X
207523284(is)X
207533375(determined)X
207543804(by)X
207553924(the)X
20756576 3328(opcode.)N
207573 f
20758576 3484(2.4.2)N
20759796(Register)X
207601130(Name)X
207611371(Operators)X
207621 f
20763576 3640(The)N
20764735(following)X
207651100(operations)X
207661489(can)X
207671633(be)X
207681738(used)X
207691921(to)X
207702012(name)X
207712225(a)X
207722286(register.)X
207732 f
20774576 3796(Note)N
20775769(that)X
20776933(the)X
207771067(register)X
207781367(number)X
207791661(represents)X
207802053(a)X
207812123(DWARF)X
207822447(speci\256c)X
207832737(mapping)X
207843071(of)X
207853166(numbers)X
207863494(onto)X
207873677(the)X
207883811(actual)X
20789576 3900(registers)N
20790919(of)X
207911023(a)X
207921102(given)X
207931328(architecture.)X
207941838(The)X
207952005(mapping)X
207962348(should)X
207972618(be)X
207982736(chosen)X
207993015(to)X
208003119(gain)X
208013311(optimal)X
208023616(density)X
208033900(and)X
20804576 4004(should)N
20805859(be)X
20806990(shared)X
208071277(by)X
208081408(all)X
208091551(users)X
208101785(of)X
208111903(a)X
208121996(given)X
208132236(architecture.)X
208142738(The)X
208152919(Programming)X
208163461(Languages)X
208173896(SIG)X
20818576 4108(recommends)N
208191041(that)X
208201201(this)X
208211351(mapping)X
208221681(be)X
208231786(de\256ned)X
208242062(by)X
208252167(the)X
208262297(ABI)X
208278 s
208282434 4073(2)N
2082911 s
208302488 4108(authoring)N
208312858(committee)X
208323242(for)X
208333367(each)X
208343555(architecture.)X
208351 f
20836642 4264(1.)N
208370 f
20838796(DW_OP_reg0)X
208391 f
208401326(,)X
208410 f
208421401(DW_OP_reg1)X
208431 f
208441931(,)X
208451975(...,)X
208460 f
208472085(DW_OP_reg31)X
208481 f
20849796 4368(The)N
208500 f
20851994(DW_OP_reg)X
208522 f
208531471(n)X
208541 f
208551545(operations)X
208561942(encode)X
208572221(the)X
208582359(names)X
208592614(of)X
208602717(up)X
208612835(to)X
208622934(32)X
208633052(registers,)X
208643403(numbered)X
208653786(from)X
208663988(0)X
20867796 4472(through)N
208681092(31,)X
208691224(inclusive.)X
208701609(The)X
208711768(object)X
208722006(addressed)X
208732374(is)X
208742455(in)X
208752546(register)X
208762 f
208772832(n)X
208781 f
20879(.)S
20880642 4628(2.)N
208810 f
20882796(DW_OP_regx)X
208831 f
20884796 4732(The)N
208850 f
20886964(DW_OP_regx)X
208871 f
208881525(operation)X
208891889(has)X
208902037(a)X
208912107(single)X
208922349(unsigned)X
208932699(LEB128)X
208943030(literal)X
208953269(operand)X
208963584(that)X
208973749(encodes)X
20898796 4836(the)N
20899926(name)X
209001139(of)X
209011234(a)X
209021295(register.)X
209039 s
2090410 f
20905576 5296(hhhhhhhhhhhhhhhh)N
209061 f
20907576 5400(2.)N
209082 f
20909684(System)X
20910902(V)X
20911964(Application)X
209121318(Binary)X
209131532(Interface)X
209141 f
209151792(,)X
209161828(consisting)X
209172138(of)X
209182216(the)X
209192322(generic)X
209202552(interface)X
209212822(and)X
209222944(processor)X
209233238(supplements)X
209243616(for)X
209253718(each)X
209263868(target)X
20927684 5480(architecture.)N
2092810 s
20929576 5951(Revision:)N
20930902(2.0.0)X
209312176(Page)X
209322352(10)X
209333599(July)X
209343752(27,)X
209353872(1993)X
209361943 6055(Industry)N
209372230(Review)X
209382495(Draft)X
20939
2094011 p
20941%%Page: 11 13
209420(Courier)xf 0 f
2094310 s 0 xH 0 xS 0 f
2094411 s
209451 f
2094610 s
209473075 520(Programming)N
209483535(Languages)X
209493903(SIG)X
209503 f
2095111 s
20952576 832(2.4.3)N
20953796(Addressing)X
209541243(Operations)X
209551 f
20956576 988(Each)N
20957797(addressing)X
209581218(operation)X
209591596(represents)X
209601997(a)X
209612081(post\256x)X
209622366(operation)X
209632744(on)X
209642877(a)X
209652961(simple)X
209663242(stack)X
209673468(machine.)X
209683856(Each)X
20969576 1092(element)N
20970883(of)X
20971983(the)X
209721118(stack)X
209731326(is)X
209741412(the)X
209751547(size)X
209761711(of)X
209771811(an)X
209781921(address)X
209792211(on)X
209802326(the)X
209812461(target)X
209822689(machine.)X
209833058(The)X
209843221(value)X
209853438(on)X
209863552(the)X
209873686(top)X
209883825(of)X
209893924(the)X
20990576 1196(stack)N
20991779(after)X
20992962(``executing'')X
209931443(the)X
209941573(location)X
209951880(expression)X
209962278(is)X
209972359(taken)X
209982573(to)X
209992665(be)X
210002771(the)X
210012902(result)X
210023121(\(the)X
210033281(address)X
210043567(of)X
210053663(the)X
210063794(object,)X
21007576 1300(or)N
21008676(the)X
21009811(value)X
210101029(of)X
210111129(the)X
210121264(array)X
210131471(bound,)X
210141740(or)X
210151840(the)X
210161975(length)X
210172223(of)X
210182322(a)X
210192387(dynamic)X
210202717(string\).)X
210213017(In)X
210223116(the)X
210233250(case)X
210243427(of)X
210253526(locations)X
210263871(used)X
21027576 1404(for)N
21028703(structure)X
210291036(members,)X
210301407(the)X
210311541(computation)X
210322009(assumes)X
210332328(that)X
210342487(the)X
210352621(base)X
210362803(address)X
210373092(of)X
210383191(the)X
210393325(containing)X
210403724(structure)X
21041576 1508(has)N
21042715(been)X
21043903(pushed)X
210441174(on)X
210451284(the)X
210461414(stack)X
210471617(before)X
210481863(evaluation)X
210492253(of)X
210502348(the)X
210512478(addressing)X
210522876(operation.)X
210533 f
2105410 s
21055576 1664(2.4.3.1)N
21056836(Literal)X
210571092(Encodings)X
210581 f
2105911 s
21060576 1820(The)N
21061735(following)X
210621100(operations)X
210631489(all)X
210641600(push)X
210651788(a)X
210661849(value)X
210672062(onto)X
210682241(the)X
210692371(addressing)X
210702769(stack.)X
21071642 1976(1.)N
210720 f
21073796(DW_OP_lit0)X
210741 f
210751326(,)X
210760 f
210771401(DW_OP_lit1)X
210781 f
210791931(,)X
210801975(...,)X
210810 f
210822085(DW_OP_lit31)X
210831 f
21084796 2080(The)N
210850 f
210861007(DW_OP_lit)X
210872 f
210881484(n)X
210891 f
210901571(operations)X
210911981(encode)X
210922273(the)X
210932424(unsigned)X
210942785(literal)X
210953035(values)X
210963303(from)X
210973517(0)X
210983604(through)X
210993922(31,)X
21100796 2184(inclusive.)N
21101642 2340(2.)N
211020 f
21103796(DW_OP_addr)X
211041 f
21105796 2444(The)N
211060 f
21107969(DW_OP_addr)X
211081 f
211091535(operation)X
211101905(has)X
211112059(a)X
211122135(single)X
211132383(operand)X
211142703(that)X
211152873(encodes)X
211163193(a)X
211173269(machine)X
211183605(address)X
211193905(and)X
21120796 2548(whose)N
211211042(size)X
211221201(is)X
211231282(the)X
211241412(size)X
211251571(of)X
211261666(an)X
211271771(address)X
211282056(on)X
211292166(the)X
211302296(target)X
211312519(machine.)X
21132642 2704(3.)N
211330 f
21134796(DW_OP_const1u)X
211351 f
21136796 2808(The)N
21137957(single)X
211381192(operand)X
211391499(of)X
211401597(the)X
211410 f
211421730(DW_OP_const1u)X
211431 f
211442444(operation)X
211452802(provides)X
211463130(a)X
211473194(1-byte)X
211483444(unsigned)X
211493787(integer)X
21150796 2912(constant.)N
21151642 3068(4.)N
211520 f
21153796(DW_OP_const1s)X
211541 f
21155796 3172(The)N
21156965(single)X
211571208(operand)X
211581523(of)X
211591629(the)X
211600 f
211611770(DW_OP_const1s)X
211621 f
211632492(operation)X
211642858(provides)X
211653194(a)X
211663266(1-byte)X
211673524(signed)X
211683787(integer)X
21169796 3276(constant.)N
21170642 3432(5.)N
211710 f
21172796(DW_OP_const2u)X
211731 f
21174796 3536(The)N
21175957(single)X
211761192(operand)X
211771499(of)X
211781597(the)X
211790 f
211801730(DW_OP_const2u)X
211811 f
211822444(operation)X
211832802(provides)X
211843130(a)X
211853194(2-byte)X
211863444(unsigned)X
211873787(integer)X
21188796 3640(constant.)N
21189642 3796(6.)N
211900 f
21191796(DW_OP_const2s)X
211921 f
21193796 3900(The)N
21194965(single)X
211951208(operand)X
211961523(of)X
211971629(the)X
211980 f
211991770(DW_OP_const2s)X
212001 f
212012492(operation)X
212022858(provides)X
212033194(a)X
212043266(2-byte)X
212053524(signed)X
212063787(integer)X
21207796 4004(constant.)N
21208642 4160(7.)N
212090 f
21210796(DW_OP_const4u)X
212111 f
21212796 4264(The)N
21213957(single)X
212141192(operand)X
212151499(of)X
212161597(the)X
212170 f
212181730(DW_OP_const4u)X
212191 f
212202444(operation)X
212212802(provides)X
212223130(a)X
212233194(4-byte)X
212243444(unsigned)X
212253787(integer)X
21226796 4368(constant.)N
21227642 4524(8.)N
212280 f
21229796(DW_OP_const4s)X
212301 f
21231796 4628(The)N
21232965(single)X
212331208(operand)X
212341523(of)X
212351629(the)X
212360 f
212371770(DW_OP_const4s)X
212381 f
212392492(operation)X
212402858(provides)X
212413194(a)X
212423266(4-byte)X
212433524(signed)X
212443787(integer)X
21245796 4732(constant.)N
21246642 4888(9.)N
212470 f
21248796(DW_OP_const8u)X
212491 f
21250796 4992(The)N
21251980(single)X
212521238(operand)X
212531568(of)X
212541688(the)X
212550 f
212561843(DW_OP_const8u)X
212571 f
212582579(operation)X
212592959(provides)X
212603310(an)X
212613441(8-byte)X
212623714(unsigned)X
21263796 5096(integer)N
212641063(constant.)X
21265598 5252(10.)N
212660 f
21267796(DW_OP_const8s)X
212681 f
21269796 5356(The)N
21270961(single)X
212711200(operand)X
212721511(of)X
212731613(the)X
212740 f
212751750(DW_OP_const8s)X
212761 f
212772468(operation)X
212782830(provides)X
212793162(an)X
212803274(8-byte)X
212813528(signed)X
212823787(integer)X
21283796 5460(constant.)N
21284598 5616(11.)N
212850 f
21286796(DW_OP_constu)X
212871 f
21288796 5720(The)N
21289978(single)X
212901234(operand)X
212911562(of)X
212921680(the)X
212930 f
212941833(DW_OP_constu)X
212951 f
212962514(operation)X
212972892(provides)X
212983240(an)X
212993369(unsigned)X
213003733(LEB128)X
21301796 5824(integer)N
213021063(constant.)X
2130310 s
21304576 5951(Revision:)N
21305902(2.0.0)X
213062176(Page)X
213072352(11)X
213083599(July)X
213093752(27,)X
213103872(1993)X
213111943 6055(Industry)N
213122230(Review)X
213132495(Draft)X
21314
2131512 p
21316%%Page: 12 14
213170(Courier)xf 0 f
2131810 s 0 xH 0 xS 0 f
2131911 s
213201 f
2132110 s
21322576 520(DWARF)N
21323885(Debugging)X
213241261(Information)X
213251664(Format)X
2132611 s
21327598 832(12.)N
213280 f
21329796(DW_OP_consts)X
213301 f
21331796 936(The)N
21332963(single)X
213331204(operand)X
213341518(of)X
213351622(the)X
213360 f
213371761(DW_OP_consts)X
213381 f
213392428(operation)X
213402792(provides)X
213413126(a)X
213423196(signed)X
213433457(LEB128)X
213443787(integer)X
21345796 1040(constant.)N
213463 f
2134710 s
21348576 1196(2.4.3.2)N
21349836(Register)X
213501142(Based)X
213511366(Addressing)X
213521 f
2135311 s
21354576 1352(The)N
21355737(following)X
213561104(operations)X
213571495(push)X
213581685(a)X
213591748(value)X
213601963(onto)X
213612145(the)X
213622278(stack)X
213632484(that)X
213642642(is)X
213652726(the)X
213662859(result)X
213673080(of)X
213683178(adding)X
213693443(the)X
213703576(contents)X
213713895(of)X
213723993(a)X
21373576 1456(register)N
21374862(with)X
213751041(a)X
213761102(given)X
213771320(signed)X
213781572(offset.)X
21379642 1612(1.)N
213800 f
21381796(DW_OP_fbreg)X
213821 f
21383796 1716(The)N
213840 f
213851017(DW_OP_fbreg)X
213861 f
213871654(operation)X
213882041(provides)X
213892398(a)X
213902491(signed)X
213912775(LEB128)X
213923128(offset)X
213933382(from)X
213943607(the)X
213953769(address)X
21396796 1820(speci\256ed)N
213971140(by)X
213981259(the)X
213991398(location)X
214001714(descriptor)X
214012097(in)X
214022197(the)X
214030 f
214042336(DW_AT_frame_base)X
214051 f
214063215(attribute)X
214073541(of)X
214083645(the)X
214093783(current)X
21410796 1924(function.)N
214112 f
214121161(\(This)X
214131369(is)X
214141455(typically)X
214151787(a)X
214161858("stack)X
214172104(pointer")X
214182424(register)X
214192726(plus)X
214202901(or)X
214213007(minus)X
214223245(some)X
214233453(offset.)X
214243717(On)X
214253852(more)X
21426796 2028(sophisticated)N
214271286(systems)X
214281577(it)X
214291650(might)X
214301874(be)X
214311980(a)X
214322047(location)X
214332360(list)X
214342492(that)X
214352653(adjusts)X
214362926(the)X
214373057(offset)X
214383272(according)X
214393652(to)X
214403744(changes)X
21441796 2132(in)N
21442887(the)X
214431017(stack)X
214441220(pointer)X
214451497(as)X
214461597(the)X
214471727(PC)X
214481862(changes.\))X
214491 f
21450642 2288(2.)N
214510 f
21452796(DW_OP_breg0)X
214531 f
214541379(,)X
214550 f
214561454(DW_OP_breg1)X
214571 f
214582037(,)X
214592081(...,)X
214600 f
214612191(DW_OP_breg31)X
214621 f
21463796 2392(The)N
21464967(single)X
214651212(operand)X
214661529(of)X
214671636(the)X
214680 f
214691810(DW_OP_breg)X
214702 f
214712340(n)X
214721 f
214732419(operations)X
214742821(provides)X
214753159(a)X
214763233(signed)X
214773498(LEB128)X
214783832(offset)X
21479796 2496(from)N
21480989(the)X
214811119(speci\256ed)X
214821454(register.)X
21483642 2652(3.)N
214840 f
21485796(DW_OP_bregx)X
214861 f
21487796 2756(The)N
214880 f
21489980(DW_OP_bregx)X
214901 f
214911610(operation)X
214921990(has)X
214932154(two)X
214942333(operands:)X
214952745(a)X
214962832(signed)X
214973110(LEB128)X
214983457(offset)X
214993705(from)X
215003924(the)X
21501796 2860(speci\256ed)N
215021131(register)X
215031417(which)X
215041654(is)X
215051735(de\256ned)X
215062016(with)X
215072195(an)X
215082300(unsigned)X
215092640(LEB128)X
215102961(number.)X
215113 f
2151210 s
21513576 3016(2.4.3.3)N
21514836(Stack)X
215151047(Operations)X
215161 f
2151711 s
21518576 3172(The)N
21519746(following)X
215201122(operations)X
215211522(manipulate)X
215221948(the)X
215232089(``location)X
215242465(stack.'')X
215252781(Location)X
215263128(operations)X
215273528(that)X
215283694(index)X
215293924(the)X
21530576 3276(location)N
21531883(stack)X
215321086(assume)X
215331367(that)X
215341522(the)X
215351652(top)X
215361787(of)X
215371882(the)X
215382012(stack)X
215392215(\(most)X
215402438(recently)X
215412744(added)X
215422976(entry\))X
215433208(has)X
215443347(index)X
215453565(0.)X
21546642 3432(1.)N
215470 f
21548796(DW_OP_dup)X
215491 f
21550796 3536(The)N
215510 f
21552955(DW_OP_dup)X
215531 f
215541454(operation)X
215551809(duplicates)X
215562189(the)X
215572319(value)X
215582532(at)X
215592618(the)X
215602748(top)X
215612883(of)X
215622978(the)X
215633108(location)X
215643415(stack.)X
21565642 3692(2.)N
215660 f
21567796(DW_OP_drop)X
215681 f
21569796 3796(The)N
215700 f
21571955(DW_OP_drop)X
215721 f
215731507(operation)X
215741862(pops)X
215752050(the)X
215762180(value)X
215772393(at)X
215782479(the)X
215792609(top)X
215802744(of)X
215812839(the)X
215822969(stack.)X
21583642 3952(3.)N
215840 f
21585796(DW_OP_pick)X
215861 f
21587796 4056(The)N
21588969(single)X
215891216(operand)X
215901535(of)X
215911644(the)X
215920 f
215931788(DW_OP_pick)X
215941 f
215952354(operation)X
215962723(provides)X
215973062(a)X
215983138(1-byte)X
215993400(index.)X
216003677(The)X
216013851(stack)X
21602796 4160(entry)N
21603999(with)X
216041178(the)X
216051308(speci\256ed)X
216061643(index)X
216071861(\(0)X
216081956(through)X
216092252(255,)X
216102428(inclusive\))X
216112798(is)X
216122879(pushed)X
216133150(on)X
216143260(the)X
216153390(stack.)X
21616642 4316(4.)N
216170 f
21618796(DW_OP_over)X
216191 f
21620796 4420(The)N
216210 f
21622955(DW_OP_over)X
216231 f
216241507(operation)X
216251862(duplicates)X
216262242(the)X
216272372(entry)X
216282575(currently)X
216292915(second)X
216303181(in)X
216313272(the)X
216323402(stack)X
216333605(at)X
216343692(the)X
216353823(top)X
216363959(of)X
21637796 4524(the)N
21638926(stack.)X
216391173(This)X
216401352(is)X
216411433(equivalent)X
216421823(to)X
216431914(an)X
216440 f
216452019(DW_OP_pick)X
216461 f
216472571(operation,)X
216482948(with)X
216493127(index)X
216503345(1.)X
21651642 4680(5.)N
216520 f
21653796(DW_OP_swap)X
216541 f
21655796 4784(The)N
216560 f
21657959(DW_OP_swap)X
216581 f
216591515(operation)X
216601875(swaps)X
216612116(the)X
216622251(top)X
216632391(two)X
216642550(stack)X
216652758(entries.)X
216663086(The)X
216673250(entry)X
216683458(at)X
216693549(the)X
216703684(top)X
216713824(of)X
216723924(the)X
21673796 4888(stack)N
21674999(becomes)X
216751329(the)X
216761459(second)X
216771725(stack)X
216781928(entry,)X
216792153(and)X
216802302(the)X
216812432(second)X
216822698(entry)X
216832901(becomes)X
216843231(the)X
216853361(top)X
216863496(of)X
216873591(the)X
216883721(stack.)X
21689642 5044(6.)N
216900 f
21691796(DW_OP_rot)X
216921 f
21693796 5148(The)N
216940 f
21695957(DW_OP_rot)X
216961 f
216971458(operation)X
216981815(rotates)X
216992074(the)X
217002206(\256rst)X
217012367(three)X
217022567(stack)X
217032772(entries.)X
217043098(The)X
217053260(entry)X
217063466(at)X
217073555(the)X
217083688(top)X
217093826(of)X
217103924(the)X
21711796 5252(stack)N
217121003(becomes)X
217131337(the)X
217141471(third)X
217151664(stack)X
217161871(entry,)X
217172100(the)X
217182234(second)X
217192503(entry)X
217202709(becomes)X
217213042(the)X
217223175(top)X
217233313(of)X
217243411(the)X
217253544(stack,)X
217263772(and)X
217273924(the)X
21728796 5356(third)N
21729985(entry)X
217301188(becomes)X
217311518(the)X
217321648(second)X
217331914(entry.)X
21734642 5512(7.)N
217350 f
21736796(DW_OP_deref)X
217371 f
21738796 5616(The)N
217390 f
21740966(DW_OP_deref)X
217411 f
217421582(operation)X
217431948(pops)X
217442147(the)X
217452288(top)X
217462434(stack)X
217472648(entry)X
217482862(and)X
217493022(treats)X
217503246(it)X
217513330(as)X
217523437(an)X
217533554(address.)X
217543895(The)X
21755796 5720(value)N
217561032(retrieved)X
217571390(from)X
217581606(that)X
217591783(address)X
217602090(is)X
217612193(pushed.)X
217622530(The)X
217632711(size)X
217642892(of)X
217653009(the)X
217663161(data)X
217673352(retrieved)X
217683709(from)X
217693924(the)X
21770796 5824(dereferenced)N
217711271(address)X
217721556(is)X
217731637(the)X
217741767(size)X
217751926(of)X
217762021(an)X
217772126(address)X
217782411(on)X
217792521(the)X
217802651(target)X
217812874(machine.)X
2178210 s
21783576 5951(Revision:)N
21784902(2.0.0)X
217852176(Page)X
217862352(12)X
217873599(July)X
217883752(27,)X
217893872(1993)X
217901943 6055(Industry)N
217912230(Review)X
217922495(Draft)X
21793
2179413 p
21795%%Page: 13 15
217960(Courier)xf 0 f
2179710 s 0 xH 0 xS 0 f
2179811 s
217991 f
2180010 s
218013075 520(Programming)N
218023535(Languages)X
218033903(SIG)X
2180411 s
21805642 832(8.)N
218060 f
21807796(DW_OP_deref_size)X
218081 f
21809796 936(The)N
218100 f
21811959(DW_OP_deref_size)X
218121 f
218131833(operation)X
218142192(behaves)X
218152501(like)X
218162660(the)X
218170 f
218182794(DW_OP_deref)X
218191 f
218203404(operation:)X
218213789(it)X
218223866(pops)X
21823796 1040(the)N
21824939(top)X
218251087(stack)X
218261303(entry)X
218271519(and)X
218281681(treats)X
218291907(it)X
218301992(as)X
218312100(an)X
218322218(address.)X
218332560(The)X
218342732(value)X
218352957(retrieved)X
218363304(from)X
218373509(that)X
218383676(address)X
218393973(is)X
21840796 1144(pushed.)N
218411102(In)X
218421210(the)X
218430 f
218441353(DW_OP_deref_size)X
218451 f
218462237(operation,)X
218472628(however,)X
218482988(the)X
218493132(size)X
218503305(in)X
218513410(bytes)X
218523632(of)X
218533741(the)X
218543885(data)X
21855796 1248(retrieved)N
218561134(from)X
218571330(the)X
218581463(dereferenced)X
218591941(address)X
218602229(is)X
218612313(speci\256ed)X
218622651(by)X
218632764(the)X
218642897(single)X
218653133(operand.)X
218663485(This)X
218673666(operand)X
218683973(is)X
21869796 1352(a)N
21870872(1-byte)X
218711135(unsigned)X
218721491(integral)X
218731799(constant)X
218742131(whose)X
218752393(value)X
218762622(may)X
218772812(not)X
218782963(be)X
218793084(larger)X
218803327(than)X
218813517(the)X
218823663(size)X
218833838(of)X
218843949(an)X
21885796 1456(address)N
218861083(on)X
218871195(the)X
218881327(target)X
218891552(machine.)X
218901919(The)X
218912080(data)X
218922251(retrieved)X
218932587(is)X
218942669(zero)X
218952843(extended)X
218963184(to)X
218973276(the)X
218983407(size)X
218993567(of)X
219003663(an)X
219013769(address)X
21902796 1560(on)N
21903906(the)X
219041036(target)X
219051259(machine)X
219061580(before)X
219071826(being)X
219082044(pushed)X
219092315(on)X
219102425(the)X
219112555(expression)X
219122953(stack.)X
21913642 1716(9.)N
219140 f
21915796(DW_OP_xderef)X
219161 f
21917796 1820(The)N
219180 f
21919961(DW_OP_xderef)X
219201 f
219211625(operation)X
219221986(provides)X
219232317(an)X
219242428(extended)X
219252774(dereference)X
219263211(mechanism.)X
219273685(The)X
219283851(entry)X
21929796 1924(at)N
21930895(the)X
219311038(top)X
219321186(of)X
219331294(the)X
219341437(stack)X
219351653(is)X
219361747(treated)X
219372022(as)X
219382130(an)X
219392248(address.)X
219402590(The)X
219412762(second)X
219423041(stack)X
219433257(entry)X
219443473(is)X
219453567(treated)X
219463842(as)X
219473949(an)X
21948796 2028(``address)N
219491156(space)X
219501390(identi\256er'')X
219511807(for)X
219521949(those)X
219532175(architectures)X
219542665(that)X
219552838(support)X
219563142(multiple)X
219573478(address)X
219583781(spaces.)X
21959796 2132(The)N
219601003(top)X
219611185(two)X
219621386(stack)X
219631636(elements)X
219642019(are)X
219652195(popped,)X
219662545(a)X
219672653(data)X
219682869(item)X
219693096(is)X
219703224(retrieved)X
219713606(through)X
219723949(an)X
21973796 2236 0.1688(implementation-de\256ned)AN
219741669(address)X
219751961(calculation)X
219762378(and)X
219772534(pushed)X
219782812(as)X
219792914(the)X
219803051(new)X
219813227(stack)X
219823438(top.)X
219833625(The)X
219843792(size)X
219853959(of)X
21986796 2340(the)N
21987941(data)X
219881125(retrieved)X
219891475(from)X
219901683(the)X
219911828(dereferenced)X
219922318(address)X
219932618(is)X
219942714(the)X
219952859(size)X
219963033(of)X
219973143(an)X
219983263(address)X
219993563(on)X
220003687(the)X
220013831(target)X
22002796 2444(machine.)N
22003598 2600(10.)N
220040 f
22005796 0.1992(DW_OP_xderef_size)AX
220061 f
22007796 2704(The)N
220080 f
22009962 0.1992(DW_OP_xderef_size)AX
220101 f
220111893(operation)X
220122256(behaves)X
220132569(like)X
220142732(the)X
220150 f
220162870(DW_OP_xderef)X
220171 f
220183536(operation:)X
220193924(the)X
22020796 2808(entry)N
220211001(at)X
220221089(the)X
220231221(top)X
220241358(of)X
220251455(the)X
220261587(stack)X
220271792(is)X
220281875(treated)X
220292139(as)X
220302236(an)X
220312343(address.)X
220322673(The)X
220332833(second)X
220343100(stack)X
220353304(entry)X
220363508(is)X
220373590(treated)X
220383853(as)X
220393949(an)X
22040796 2912(``address)N
220411156(space)X
220421390(identi\256er'')X
220431807(for)X
220441949(those)X
220452175(architectures)X
220462665(that)X
220472838(support)X
220483142(multiple)X
220493478(address)X
220503781(spaces.)X
22051796 3016(The)N
220521003(top)X
220531185(two)X
220541386(stack)X
220551636(elements)X
220562019(are)X
220572195(popped,)X
220582545(a)X
220592653(data)X
220602869(item)X
220613096(is)X
220623224(retrieved)X
220633606(through)X
220643949(an)X
22065796 3120 0.1688(implementation-de\256ned)AN
220661689(address)X
220672001(calculation)X
220682438(and)X
220692614(pushed)X
220702912(as)X
220713034(the)X
220723191(new)X
220733386(stack)X
220743616(top.)X
220753801(In)X
220763924(the)X
220770 f
22078796 3224 0.1992(DW_OP_xderef_size)AN
220791 f
220801729(operation,)X
220812116(however,)X
220822472(the)X
220832611(size)X
220842779(in)X
220852879(bytes)X
220863096(of)X
220873200(the)X
220883339(data)X
220893517(retrieved)X
220903861(from)X
22091796 3328(the)N
22092945(dereferenced)X
220931439(address)X
220941743(is)X
220951844(speci\256ed)X
220962199(by)X
220972329(the)X
220982479(single)X
220992732(operand.)X
221003101(This)X
221013300(operand)X
221023625(is)X
221033726(a)X
221043807(1-byte)X
22105796 3432(unsigned)N
221061138(integral)X
221071432(constant)X
221081750(whose)X
221091998(value)X
221102213(may)X
221112389(not)X
221122525(be)X
221132631(larger)X
221142859(than)X
221153034(the)X
221163165(size)X
221173325(of)X
221183421(an)X
221193527(address)X
221203813(on)X
221213924(the)X
22122796 3536(target)N
221231024(machine.)X
221241394(The)X
221251558(data)X
221261732(retrieved)X
221272072(is)X
221282158(zero)X
221292336(extended)X
221302681(to)X
221312777(the)X
221322912(size)X
221333076(of)X
221343177(an)X
221353288(address)X
221363579(on)X
221373695(the)X
221383831(target)X
22139796 3640(machine)N
221401117(before)X
221411363(being)X
221421581(pushed)X
221431852(on)X
221441962(the)X
221452092(expression)X
221462490(stack.)X
221473 f
2214810 s
22149576 3796(2.4.3.4)N
22150836(Arithmetic)X
221511231(and)X
221521379(Logical)X
221531652(Operations)X
221541 f
2215511 s
22156576 3952(The)N
22157755(following)X
221581140(provide)X
221591451(arithmetic)X
221601852(and)X
221612021(logical)X
221622304(operations.)X
221632757(The)X
221642937(arithmetic)X
221653339(operations)X
221663749(perform)X
22167576 4056(``addressing)N
221681042(arithmetic,'')X
221691513(that)X
221701678(is,)X
221711791(unsigned)X
221722141(arithmetic)X
221732532(that)X
221742697(wraps)X
221752938(on)X
221763058(an)X
221773173(address-sized)X
221783678(boundary.)X
22179576 4160(The)N
22180735(operations)X
221811124(do)X
221821234(not)X
221831369(cause)X
221841586(an)X
221851691(exception)X
221862056(on)X
221872166(over\257ow.)X
22188642 4316(1.)N
221890 f
22190796(DW_OP_abs)X
221911 f
22192796 4420(The)N
221930 f
22194955(DW_OP_abs)X
221951 f
221961454(operation)X
221971809(pops)X
221981997(the)X
221992127(top)X
222002262(stack)X
222012465(entry)X
222022668(and)X
222032817(pushes)X
222043078(its)X
222053184(absolute)X
222063500(value.)X
22207642 4576(2.)N
222080 f
22209796(DW_OP_and)X
222101 f
22211796 4680(The)N
222120 f
22213982(DW_OP_and)X
222141 f
222151509(operation)X
222161892(pops)X
222172108(the)X
222182266(top)X
222192429(two)X
222202611(stack)X
222212842(values,)X
222223139(performs)X
222233506(a)X
222243595(bitwise)X
222252 f
222263900(and)X
222271 f
22228796 4784(operation)N
222291151(on)X
222301261(the)X
222311391(two,)X
222321567(and)X
222331716(pushes)X
222341977(the)X
222352107(result.)X
22236642 4940(3.)N
222370 f
22238796(DW_OP_div)X
222391 f
22240796 5044(The)N
222410 f
22242957(DW_OP_div)X
222431 f
222441458(operation)X
222451815(pops)X
222462005(the)X
222472137(top)X
222482274(two)X
222492430(stack)X
222502635(values,)X
222512906(divides)X
222523185(the)X
222533318(former)X
222543582(second)X
222553851(entry)X
22256796 5148(by)N
22257906(the)X
222581036(former)X
222591297(top)X
222601432(of)X
222611527(the)X
222621657(stack)X
222631860(using)X
222642073(signed)X
222652325(division,)X
222662654(and)X
222672803(pushes)X
222683064(the)X
222693194(result.)X
22270642 5304(4.)N
222710 f
22272796(DW_OP_minus)X
222731 f
22274796 5408(The)N
222750 f
22276963(DW_OP_minus)X
222771 f
222781576(operation)X
222791939(pops)X
222802135(the)X
222812273(top)X
222822416(two)X
222832578(stack)X
222842789(values,)X
222853066(subtracts)X
222863409(the)X
222873547(former)X
222883816(top)X
222893959(of)X
22290796 5512(the)N
22291926(stack)X
222921129(from)X
222931322(the)X
222941452(former)X
222951713(second)X
222961979(entry,)X
222972204(and)X
222982353(pushes)X
222992614(the)X
223002744(result.)X
22301642 5668(5.)N
223020 f
22303796(DW_OP_mod)X
223041 f
22305796 5772(The)N
223060 f
22307969(DW_OP_mod)X
223081 f
223091482(operation)X
223101851(pops)X
223112053(the)X
223122197(top)X
223132347(two)X
223142516(stack)X
223152734(values)X
223162996(and)X
223173160(pushes)X
223183436(the)X
223193581(result)X
223203814(of)X
223213924(the)X
2232210 s
22323576 5951(Revision:)N
22324902(2.0.0)X
223252176(Page)X
223262352(13)X
223273599(July)X
223283752(27,)X
223293872(1993)X
223301943 6055(Industry)N
223312230(Review)X
223322495(Draft)X
22333
2233414 p
22335%%Page: 14 16
223360(Courier)xf 0 f
2233710 s 0 xH 0 xS 0 f
2233811 s
223391 f
2234010 s
22341576 520(DWARF)N
22342885(Debugging)X
223431261(Information)X
223441664(Format)X
2234511 s
22346796 832(calculation:)N
223471231(former)X
223481492(second)X
223491758(stack)X
223501961(entry)X
223512164(modulo)X
223522456(the)X
223532586(former)X
223542847(top)X
223552982(of)X
223563077(the)X
223573207(stack.)X
22358642 988(6.)N
223590 f
22360796(DW_OP_mul)X
223611 f
22362796 1092(The)N
223630 f
22364963(DW_OP_mul)X
223651 f
223661470(operation)X
223671833(pops)X
223682029(the)X
223692167(top)X
223702310(two)X
223712472(stack)X
223722683(entries,)X
223732970 0.3403(multiplies)AX
223743355(them)X
223753563(together,)X
223763905(and)X
22377796 1196(pushes)N
223781057(the)X
223791187(result.)X
22380642 1352(7.)N
223810 f
22382796(DW_OP_neg)X
223831 f
22384796 1456(The)N
223850 f
22386955(DW_OP_neg)X
223871 f
223881454(operation)X
223891809(pops)X
223901997(the)X
223912127(top)X
223922262(stack)X
223932465(entry,)X
223942690(and)X
223952839(pushes)X
223963100(its)X
223973206(negation.)X
22398642 1612(8.)N
223990 f
22400796(DW_OP_not)X
224011 f
22402796 1716(The)N
224030 f
22404955(DW_OP_not)X
224051 f
224061454(operation)X
224071809(pops)X
224081997(the)X
224092127(top)X
224102262(stack)X
224112465(entry,)X
224122690(and)X
224132839(pushes)X
224143100(its)X
224153206(bitwise)X
224163483(complement.)X
22417642 1872(9.)N
224180 f
22419796(DW_OP_or)X
224201 f
22421796 1976(The)N
224220 f
22423960(DW_OP_or)X
224241 f
224251412(operation)X
224261773(pops)X
224271967(the)X
224282103(top)X
224292244(two)X
224302404(stack)X
224312613(entries,)X
224322898(performs)X
224333243(a)X
224343310(bitwise)X
224352 f
224363593(or)X
224371 f
224383699(operation)X
22439796 2080(on)N
22440906(the)X
224411036(two,)X
224421212(and)X
224431361(pushes)X
224441622(the)X
224451752(result.)X
22446598 2236(10.)N
224470 f
22448796(DW_OP_plus)X
224491 f
22450796 2340(The)N
224510 f
22452974(DW_OP_plus)X
224531 f
224541546(operation)X
224551921(pops)X
224562129(the)X
224572279(top)X
224582434(two)X
224592608(stack)X
224602831(entries,)X
224613130(adds)X
224623333(them)X
224633552(together,)X
224643905(and)X
22465796 2444(pushes)N
224661057(the)X
224671187(result.)X
22468598 2600(11.)N
224690 f
22470796 0.1992(DW_OP_plus_uconst)AX
224711 f
22472796 2704(The)N
224730 f
22474965 0.1992(DW_OP_plus_uconst)AX
224751 f
224761898(operation)X
224772263(pops)X
224782461(the)X
224792601(top)X
224802746(stack)X
224812959(entry,)X
224823194(adds)X
224833388(it)X
224843471(to)X
224853573(the)X
224863714(unsigned)X
22487796 2808(LEB128)N
224881123(constant)X
224891445(operand)X
224901756(and)X
224911910(pushes)X
224922176(the)X
224932311(result.)X
224942 f
224952578(This)X
224962757(operation)X
224973127(is)X
224983213(supplied)X
224993539(speci\256cally)X
225003963(to)X
22501796 2912(be)N
22502912(able)X
225031097(to)X
225041199(encode)X
225051481(more)X
225061694(\256eld)X
225071879(offsets)X
225082138(in)X
225092240(two)X
225102401(bytes)X
225112615(than)X
225122805(can)X
225132965(be)X
225143082(done)X
225153287(with)X
225163474(")X
225170 f
225183511(DW_OP_lit)X
225192 f
225203988(n)X
225210 f
22522796 3016(DW_OP_add)N
225232 f
225241273(".)X
225251 f
22526598 3172(12.)N
225270 f
22528796(DW_OP_shl)X
225291 f
22530796 3276(The)N
225310 f
22532961(DW_OP_shl)X
225331 f
225341466(operation)X
225351827(pops)X
225362021(the)X
225372157(top)X
225382298(two)X
225392458(stack)X
225402667(entries,)X
225412953(shifts)X
225423173(the)X
225433310(former)X
225443578(second)X
225453851(entry)X
22546796 3380(left)N
22547936(by)X
225481046(the)X
225491176(number)X
225501467(of)X
225511562(bits)X
225521712(speci\256ed)X
225532047(by)X
225542157(the)X
225552287(former)X
225562548(top)X
225572683(of)X
225582778(the)X
225592908(stack,)X
225603133(and)X
225613282(pushes)X
225623543(the)X
225633673(result.)X
22564598 3536(13.)N
225650 f
22566796(DW_OP_shr)X
225671 f
22568796 3640(The)N
225690 f
22570961(DW_OP_shr)X
225711 f
225721466(operation)X
225731827(pops)X
225742021(the)X
225752157(top)X
225762298(two)X
225772458(stack)X
225782667(entries,)X
225792953(shifts)X
225803173(the)X
225813310(former)X
225823578(second)X
225833851(entry)X
22584796 3744(right)N
22585990(\(logically\))X
225861385(by)X
225871500(the)X
225881635(number)X
225891931(of)X
225902031(bits)X
225912186(speci\256ed)X
225922526(by)X
225932640(the)X
225942774(former)X
225953039(top)X
225963178(of)X
225973277(the)X
225983411(stack,)X
225993640(and)X
226003793(pushes)X
22601796 3848(the)N
22602926(result.)X
22603598 4004(14.)N
226040 f
22605796(DW_OP_shra)X
226061 f
22607796 4108(The)N
226080 f
22609957(DW_OP_shra)X
226101 f
226111511(operation)X
226121868(pops)X
226132058(the)X
226142190(top)X
226152327(two)X
226162483(stack)X
226172688(entries,)X
226182969(shifts)X
226193185(the)X
226203318(former)X
226213582(second)X
226223851(entry)X
22623796 4212(right)N
22624996(\(arithmetically\))X
226251578(by)X
226261698(the)X
226271838(number)X
226282139(of)X
226292244(bits)X
226302404(speci\256ed)X
226312749(by)X
226322869(the)X
226333009(former)X
226343280(top)X
226353425(of)X
226363530(the)X
226373670(stack,)X
226383905(and)X
22639796 4316(pushes)N
226401057(the)X
226411187(result.)X
22642598 4472(15.)N
226430 f
22644796(DW_OP_xor)X
226451 f
22646796 4576(The)N
226470 f
22648959(DW_OP_xor)X
226491 f
226501462(operation)X
226511821(pops)X
226522013(the)X
226532147(top)X
226542286(two)X
226552444(stack)X
226562651(entries,)X
226572934(performs)X
226583277(the)X
226593412(logical)X
226602 f
226613680(exclusive-)X
22662796 4680(or)N
226631 f
22664896(operation)X
226651251(on)X
226661361(the)X
226671491(two,)X
226681667(and)X
226691816(pushes)X
226702077(the)X
226712207(result.)X
226723 f
2267310 s
22674576 4836(2.4.3.5)N
22675836(Control)X
226761123(Flow)X
226771312(Operations)X
226781 f
2267911 s
22680576 4992(The)N
22681735(following)X
226821100(operations)X
226831489(provide)X
226841780(simple)X
226852038(control)X
226862310(of)X
226872405(the)X
226882535(\257ow)X
226892713(of)X
226902808(a)X
226912869(location)X
226923176(expression.)X
22693642 5148(1.)N
22694796(Relational)X
226951182(operators)X
22696796 5252(The)N
22697956(six)X
226981082(relational)X
226991439(operators)X
227001790(each)X
227011975(pops)X
227022165(the)X
227032297(top)X
227042434(two)X
227052590(stack)X
227062795(values,)X
227073066(compares)X
227083427(the)X
227093559(former)X
227103822(top)X
227113959(of)X
22712796 5356(the)N
22713927(stack)X
227141131(with)X
227151311(the)X
227161442(former)X
227171704(second)X
227181971(entry,)X
227192197(and)X
227202347(pushes)X
227212609(the)X
227222740(constant)X
227233057(value)X
227243270(1)X
227253336(onto)X
227263515(the)X
227273645(stack)X
227283848(if)X
227293924(the)X
22730796 5460(result)N
227311019(of)X
227321119(the)X
227331254(operation)X
227341615(is)X
227351702(true)X
227361867(or)X
227371968(the)X
227382104(constant)X
227392426(value)X
227402645(0)X
227412717(if)X
227422799(the)X
227432935(result)X
227443159(of)X
227453260(the)X
227463396(operation)X
227473757(is)X
227483844(false.)X
22749796 5564(The)N
22750967(comparisons)X
227511446(are)X
227521587(done)X
227531792(as)X
227541899(signed)X
227552163(operations.)X
227562608(The)X
227572778(six)X
227582914(operators)X
227593274(are)X
227600 f
227613414(DW_OP_le)X
227621 f
227633871(\(less)X
22764796 5668(than)N
227651006(or)X
227661137(equal)X
227671386(to\),)X
227680 f
227691564(DW_OP_ge)X
227701 f
227712046(\(greater)X
227722378(than)X
227732589(or)X
227742721(equal)X
227752971(to\),)X
227760 f
227773150(DW_OP_eq)X
227781 f
227793633(\(equal)X
227803912(to\),)X
227810 f
22782796 5772(DW_OP_lt)N
227831 f
227841242(\(less)X
227851425(than\),)X
227860 f
227871650(DW_OP_gt)X
227881 f
227892096(\(greater)X
227902391(than\))X
227912594(and)X
227920 f
227932743(DW_OP_ne)X
227941 f
227953189(\(not)X
227963353(equal)X
227973566(to\).)X
2279810 s
22799576 5951(Revision:)N
22800902(2.0.0)X
228012176(Page)X
228022352(14)X
228033599(July)X
228043752(27,)X
228053872(1993)X
228061943 6055(Industry)N
228072230(Review)X
228082495(Draft)X
22809
2281015 p
22811%%Page: 15 17
228120(Courier)xf 0 f
2281310 s 0 xH 0 xS 0 f
2281411 s
228151 f
2281610 s
228173075 520(Programming)N
228183535(Languages)X
228193903(SIG)X
2282011 s
22821642 832(2.)N
228220 f
22823796(DW_OP_skip)X
22824796 936(DW_OP_skip)N
228251 f
228261360(is)X
228271453(an)X
228281570(unconditional)X
228292090(branch.)X
228302407(Its)X
228312530(single)X
228322776(operand)X
228333094(is)X
228343188(a)X
228353262(2-byte)X
228363522(signed)X
228373787(integer)X
22838796 1040(constant.)N
228391169(The)X
228401341(2-byte)X
228411601(constant)X
228421930(is)X
228432024(the)X
228442167(number)X
228452471(of)X
228462579(bytes)X
228472800(of)X
228482908(the)X
228493051(location)X
228503371(expression)X
228513782(to)X
228523885(skip)X
22853796 1144(from)N
22854989(the)X
228551119(current)X
228561390(operation,)X
228571767(beginning)X
228582142(after)X
228592325(the)X
228602455(2-byte)X
228612702(constant.)X
22862642 1300(3.)N
228630 f
22864796(DW_OP_bra)X
22865796 1404(DW_OP_bra)N
228661 f
228671323(is)X
228681432(a)X
228691521(conditional)X
228701969(branch.)X
228712302(Its)X
228722440(single)X
228732701(operand)X
228743034(is)X
228753143(a)X
228763232(2-byte)X
228773507(signed)X
228783787(integer)X
22879796 1508(constant.)N
228801164(This)X
228811351(operation)X
228821714(pops)X
228831909(the)X
228842046(top)X
228852188(of)X
228862290(stack.)X
228872544(If)X
228882631(the)X
228892768(value)X
228902988(popped)X
228913276(is)X
228923364(not)X
228933506(the)X
228943643(constant)X
228953966(0,)X
22896796 1612(the)N
22897930(2-byte)X
228981181(constant)X
228991501(operand)X
229001811(is)X
229011897(the)X
229022032(number)X
229032328(of)X
229042428(bytes)X
229052641(of)X
229062741(the)X
229072876(location)X
229083188(expression)X
229093591(to)X
229103687(skip)X
229113861(from)X
22912796 1716(the)N
22913926(current)X
229141197(operation,)X
229151574(beginning)X
229161949(after)X
229172132(the)X
229182262(2-byte)X
229192509(constant.)X
229203 f
2292110 s
22922576 1872(2.4.3.6)N
22923836(Special)X
229241100(Operations)X
229251 f
2292611 s
22927576 2028(There)N
22928803(are)X
22929932(two)X
229301086(special)X
229311353(operations)X
229321742(currently)X
229332082(de\256ned:)X
22934642 2184(1.)N
229350 f
22936796(DW_OP_piece)X
229372 f
22938796 2288(Many)N
229391022(compilers)X
229401395(store)X
229411597(a)X
229421667(single)X
229431904(variable)X
229442224(in)X
229452319(sets)X
229462478(of)X
229472574(registers,)X
229482931(or)X
229493036(store)X
229503239(a)X
229513310(variable)X
229523631(partially)X
229533963(in)X
22954796 2392(memory)N
229551101(and)X
229561256(partially)X
229571584(in)X
229581676(registers.)X
229590 f
229602029(DW_OP_piece)X
229612 f
229622635(provides)X
229632961(a)X
229643028(way)X
229653192(of)X
229663283(describing)X
229673677(how)X
229683846(large)X
22969796 2496(a)N
22970862(part)X
229711031(of)X
229721122(a)X
229731188(variable)X
229741504(a)X
229751570(particular)X
229761950(addressing)X
229772358(expression)X
229782756(refers)X
229792983(to.)X
229800 f
22981796 2652(DW_OP_piece)N
229821 f
229831421(takes)X
229841644(a)X
229851725(single)X
229861978(argument)X
229872353(which)X
229882610(is)X
229892711(an)X
229902836(unsigned)X
229913197(LEB128)X
229923539(number.)X
229933895(The)X
22994796 2756(number)N
229951094(describes)X
229961450(the)X
229971587(size)X
229981753(in)X
229991851(bytes)X
230002066(of)X
230012168(the)X
230022305(piece)X
230032520(of)X
230042622(the)X
230052759(object)X
230063004(referenced)X
230073403(by)X
230083520(the)X
230093656(addressing)X
23010796 2860(expression)N
230111194(whose)X
230121440(result)X
230131658(is)X
230141739(at)X
230151825(the)X
230161955(top)X
230172090(of)X
230182185(the)X
230192315(stack.)X
23020642 3016(2.)N
230210 f
23022796(DW_OP_nop)X
230231 f
23024796 3120(The)N
230250 f
23026958(DW_OP_nop)X
230271 f
230281461(operation)X
230291820(is)X
230301905(a)X
230311970(place)X
230322182(holder.)X
230332477(It)X
230342557(has)X
230352700(no)X
230362814(effect)X
230373040(on)X
230383154(the)X
230393288(location)X
230403599(stack)X
230413806(or)X
230423905(any)X
23043796 3224(of)N
23044891(its)X
23045997(values.)X
230463 f
23047576 3380(2.4.4)N
23048796(Sample)X
230491097(Stack)X
230501329(Operations)X
230512 f
23052576 3536(The)N
23053758(stack)X
23054989(operations)X
230551416(de\256ned)X
230561720(in)X
230571840(section)X
230582141(2.4.3.3)X
230592434(are)X
230602602(fairly)X
230612845(conventional,)X
230623374(but)X
230633538(the)X
230643697(following)X
23065576 3640(examples)N
23066925(illustrate)X
230671267(their)X
230681456(behavior)X
230691791(graphically.)X
230701 f
2307110 s
23072576 5951(Revision:)N
23073902(2.0.0)X
230742176(Page)X
230752352(15)X
230763599(July)X
230773752(27,)X
230783872(1993)X
230791943 6055(Industry)N
230802230(Review)X
230812495(Draft)X
23082
2308316 p
23084%%Page: 16 18
230850(Courier)xf 0 f
2308610 s 0 xH 0 xS 0 f
2308711 s
230881 f
2308910 s
23090576 520(DWARF)N
23091885(Debugging)X
230921261(Information)X
230931664(Format)X
2309411 s
2309510 f
23096580 744(i)N
23097596(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
230981 f
23099743 848(Before)N
231001986(Operation)X
231013111(After)X
2310210 f
23103580 864(i)N
23104596(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
231050 f
23106743 968(0)N
231071285(17)X
231081986(DW_OP_dup)X
231093111(0)X
231103653(17)X
23111743 1072(1)N
231121285(29)X
231133111(1)X
231143653(17)X
23115743 1176(2)N
231161285(1000)X
231173111(2)X
231183653(29)X
231193111 1280(3)N
231203653(1000)X
231211 f
2312210 f
23123580 1296(i)N
23124596(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
231250 f
23126743 1400(0)N
231271285(17)X
231281986(DW_OP_drop)X
231293111(0)X
231303653(29)X
23131743 1504(1)N
231321285(29)X
231333111(1)X
231343653(1000)X
23135743 1608(2)N
231361285(1000)X
231371 f
2313810 f
23139580 1624(i)N
23140596(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
231410 f
23142743 1728(0)N
231431285(17)X
231441986(DW_OP_pick)X
231452569(2)X
231463111(0)X
231473653(1000)X
23148743 1832(1)N
231491285(29)X
231503111(1)X
231513653(17)X
23152743 1936(2)N
231531285(1000)X
231543111(2)X
231553653(29)X
231563111 2040(3)N
231573653(1000)X
231581 f
2315910 f
23160580 2056(i)N
23161596(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
231620 f
23163743 2160(0)N
231641285(17)X
231651986(DW_OP_over)X
231663111(0)X
231673653(29)X
23168743 2264(1)N
231691285(29)X
231703111(1)X
231713653(17)X
23172743 2368(2)N
231731285(1000)X
231743111(2)X
231753653(29)X
231763111 2472(3)N
231773653(1000)X
231781 f
2317910 f
23180580 2488(i)N
23181596(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
231820 f
23183743 2592(0)N
231841285(17)X
231851986(DW_OP_swap)X
231863111(0)X
231873653(29)X
23188743 2696(1)N
231891285(29)X
231903111(1)X
231913653(17)X
23192743 2800(2)N
231931285(1000)X
231943111(2)X
231953653(1000)X
231961 f
2319710 f
23198580 2816(i)N
23199596(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
232000 f
23201743 2920(0)N
232021285(17)X
232031986(DW_OP_rot)X
232043111(0)X
232053653(29)X
23206743 3024(1)N
232071285(29)X
232083111(1)X
232093653(1000)X
23210743 3128(2)N
232111285(1000)X
232123111(2)X
232133653(17)X
232141 f
2321510 f
23216580 3144(i)N
23217596(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
23218580(c)X
232193120(c)Y
232203032(c)Y
232212944(c)Y
232222856(c)Y
232232768(c)Y
232242680(c)Y
232252592(c)Y
232262504(c)Y
232272416(c)Y
232282328(c)Y
232292240(c)Y
232302152(c)Y
232312064(c)Y
232321976(c)Y
232331888(c)Y
232341800(c)Y
232351712(c)Y
232361624(c)Y
232371536(c)Y
232381448(c)Y
232391360(c)Y
232401272(c)Y
232411184(c)Y
232421096(c)Y
232431008(c)Y
23244920(c)Y
23245832(c)Y
232464028 3144(c)N
232473120(c)Y
232483032(c)Y
232492944(c)Y
232502856(c)Y
232512768(c)Y
232522680(c)Y
232532592(c)Y
232542504(c)Y
232552416(c)Y
232562328(c)Y
232572240(c)Y
232582152(c)Y
232592064(c)Y
232601976(c)Y
232611888(c)Y
232621800(c)Y
232631712(c)Y
232641624(c)Y
232651536(c)Y
232661448(c)Y
232671360(c)Y
232681272(c)Y
232691184(c)Y
232701096(c)Y
232711008(c)Y
23272920(c)Y
23273832(c)Y
232743 f
23275576 3300(2.4.5)N
23276796(Example)X
232771151(Location)X
232781506(Expressions)X
232792 f
23280576 3456(The)N
23281750(addressing)X
232821178(expression)X
232831596(represented)X
232842053(by)X
232852178(a)X
232862264(location)X
232872597(expression,)X
232883038(if)X
232893131(evaluated,)X
232903539(generates)X
232913924(the)X
23292576 3560(runtime)N
23293887(address)X
232941197(of)X
232951303(the)X
232961448(value)X
232971676(of)X
232981782(a)X
232991863(symbol)X
233002149(except)X
233012411(where)X
233022663(the)X
233030 f
233042808(DW_OP_reg)X
233052 f
233063285(n,)X
233073388(or)X
233080 f
233093502(DW_OP_regx)X
233102 f
23311576 3664(operations)N
23312975(are)X
233131114(used.)X
23314576 3820(Here)N
23315773(are)X
23316912(some)X
233171114(examples)X
233181463(of)X
233191554(how)X
233201723(location)X
233212035(operations)X
233222434(are)X
233232573(used)X
233242756(to)X
233252847(form)X
233263035(location)X
233273347(expressions:)X
233281 f
2332910 s
23330576 5951(Revision:)N
23331902(2.0.0)X
233322176(Page)X
233332352(16)X
233343599(July)X
233353752(27,)X
233363872(1993)X
233371943 6055(Industry)N
233382230(Review)X
233392495(Draft)X
23340
2334117 p
23342%%Page: 17 19
233430(Courier)xf 0 f
2334410 s 0 xH 0 xS 0 f
2334511 s
233461 f
2334710 s
233483075 520(Programming)N
233493535(Languages)X
233503903(SIG)X
233510 f
2335211 s
23353576 832(DW_OP_reg3)N
233542 f
23355792 936(The)N
23356946(value)X
233571159(is)X
233581240(in)X
233591331(register)X
233601627(3.)X
233610 f
23362576 1144(DW_OP_regx)N
233631159(54)X
233642 f
23365792 1248(The)N
23366946(value)X
233671159(is)X
233681240(in)X
233691331(register)X
233701627(54.)X
233710 f
23372576 1456(DW_OP_addr)N
233731159(0x80d0045c)X
233742 f
23375792 1560(The)N
23376946(value)X
233771159(of)X
233781250(a)X
233791316(static)X
233801530(variable)X
233811846(is)X
23382792 1664(at)N
23383883(machine)X
233841203(address)X
233851498(0x80d0045c.)X
233860 f
23387576 1872(DW_OP_breg11)N
233881265(44)X
233892 f
23390792 1976(Add)N
23391956(44)X
233921066(to)X
233931157(the)X
233941287(value)X
233951500(in)X
23396792 2080(register)N
233971088(11)X
233981198(to)X
233991289(get)X
234001419(the)X
234011549(address)X
234021844(of)X
234031935(an)X
23404792 2184(automatic)N
234051167(variable)X
234061483(instance.)X
234070 f
23408576 2392(DW_OP_fbreg)N
234091212(-50)X
234102 f
23411792 2496(Given)N
234121024(an)X
234130 f
234141134(DW_AT_frame_base)X
234152 f
234162004(value)X
234172217(of)X
23418792 2600(")N
234190 f
23420829(OPBREG31)X
234211306(64)X
234222 f
234231412(,")X
234241493(this)X
234251643(example)X
23426792 2704(computes)N
234271146(the)X
234281276(address)X
234291571(of)X
234301662(a)X
234311728(local)X
234321927(variable)X
23433792 2808(that)N
23434952(is)X
234351033(-50)X
234361172(bytes)X
234371375(from)X
234381563(a)X
234391629(logical)X
234401897(frame)X
23441792 2912(pointer)N
234421069(that)X
234431229(is)X
234441310(computed)X
234451674(by)X
234461779(adding)X
23447792 3016(64)N
23448902(to)X
23449993(the)X
234501123(current)X
234511404(stack)X
234521607(pointer)X
234531884(\(register)X
234542209(31\).)X
234550 f
23456576 3224(DW_OP_bregx)N
234571212(54)X
234581371(32)X
234591530(DW_OP_deref)X
234602 f
23461792 3328(A)N
23462868(call-by-reference)X
234631496(parameter)X
23464792 3432(whose)N
234651034(address)X
234661329(is)X
234671410(in)X
234681501(the)X
23469792 3536(word)N
23470995(32)X
234711105(bytes)X
234721308(from)X
234731496(where)X
234741733(register)X
23475792 3640(54)N
23476902(points.)X
234770 f
23478576 3848 0.1992(DW_OP_plus_uconst)AN
234791530(4)X
234802 f
23481792 3952(A)N
23482868(structure)X
234831208(member)X
234841512(is)X
234851593(four)X
234861762(bytes)X
23487792 4056(from)N
23488980(the)X
234891110(start)X
234901294(of)X
234911385(the)X
234921515(structure)X
23493792 4160(instance.)N
234941152(The)X
234951306(base)X
234961489(address)X
234971784(is)X
23498792 4264(assumed)N
234991116(to)X
235001207(be)X
235011312(already)X
235021603(on)X
235031713(the)X
235041843(stack.)X
235050 f
23506576 4472(DW_OP_reg3)N
235071159(DW_OP_piece)X
235081795(4)X
235091901(DW_OP_reg10)X
235102537(DW_OP_piece)X
235113173(2)X
235122 f
23513792 4576(A)N
23514868(variable)X
235151184(whose)X
235161426(\256rst)X
235171585(four)X
235181754(bytes)X
235191957(reside)X
23520792 4680(in)N
23521883(register)X
235221179(3)X
235231245(and)X
235241399(whose)X
235251641(next)X
235261810(two)X
235271960(bytes)X
23528792 4784(reside)N
235291029(in)X
235301120(register)X
235311416(10.)X
235323 f
23533576 4940(2.4.6)N
23534796(Location)X
235351151(Lists)X
235361 f
23537576 5096(Location)N
23538923(lists)X
235391100(are)X
235401241(used)X
235411436(in)X
235421539(place)X
235431759(of)X
235441866(location)X
235452185(expressions)X
235462629(whenever)X
235473004(the)X
235483146(object)X
235493396(whose)X
235503654(location)X
235513973(is)X
23552576 5200(being)N
23553796(described)X
235541157(can)X
235551303(change)X
235561576(location)X
235571885(during)X
235582139(its)X
235592247(lifetime.)X
235602591(Location)X
235612928(lists)X
235623094(are)X
235633224(contained)X
235643590(in)X
235653682(a)X
235663744(separate)X
23567576 5304(object)N
23568831(\256le)X
23569983(section)X
235701272(called)X
235710 f
235721522(.debug_loc.)X
235731 f
235742166(A)X
235752268(location)X
235762593(list)X
235772742(is)X
235782841(indicated)X
235793205(by)X
235803333(a)X
235813412(location)X
235823737(attribute)X
23583576 5408(whose)N
23584827(value)X
235851045(is)X
235861131(represented)X
235871563(as)X
235881663(a)X
235891729(constant)X
235902050(offset)X
235912277(from)X
235922475(the)X
235932610(beginning)X
235942990(of)X
235953090(the)X
235960 f
235973225(.debug_loc)X
235981 f
235993782(section)X
23600576 5512(to)N
23601667(the)X
23602797(\256rst)X
23603956(byte)X
236041130(of)X
236051225(the)X
236061355(list)X
236071486(for)X
236081610(the)X
236091740(object)X
236101978(in)X
236112069(question.)X
23612576 5668(Each)N
23613774(entry)X
23614977(in)X
236151068(a)X
236161129(location)X
236171436(list)X
236181567(consists)X
236191868(of:)X
2362010 s
23621576 5951(Revision:)N
23622902(2.0.0)X
236232176(Page)X
236242352(17)X
236253599(July)X
236263752(27,)X
236273872(1993)X
236281943 6055(Industry)N
236292230(Review)X
236302495(Draft)X
23631
2363218 p
23633%%Page: 18 20
236340(Courier)xf 0 f
2363510 s 0 xH 0 xS 0 f
2363611 s
236371 f
2363810 s
23639576 520(DWARF)N
23640885(Debugging)X
236411261(Information)X
236421664(Format)X
2364311 s
23644642 832(1.)N
23645796(A)X
23646889(beginning)X
236471272(address.)X
236481609(This)X
236491797(address)X
236502091(is)X
236512181(relative)X
236522477(to)X
236532577(the)X
236542716(base)X
236552903(address)X
236563197(of)X
236573301(the)X
236583440(compilation)X
236593894(unit)X
23660796 936(referencing)N
236611227(this)X
236621386(location)X
236631701(list.)X
236641884(It)X
236651968(marks)X
236662213(the)X
236672351(beginning)X
236682734(of)X
236692837(the)X
236702975(address)X
236713268(range)X
236723493(over)X
236733679(which)X
236743924(the)X
23675796 1040(location)N
236761103(is)X
236771184(valid.)X
23678642 1196(2.)N
23679796(An)X
23680934(ending)X
236811205(address,)X
236821521(again)X
236831743(relative)X
236842039(to)X
236852139(the)X
236862279(base)X
236872467(address)X
236882762(of)X
236892867(the)X
236903007(compilation)X
236913462(unit)X
236923632(referencing)X
23693796 1300(this)N
23694948(location)X
236951257(list.)X
236961434(It)X
236971512(marks)X
236981751(the)X
236991883(\256rst)X
237002044(address)X
237012330(past)X
237022495(the)X
237032626(end)X
237042776(of)X
237052872(the)X
237063003(address)X
237073289(range)X
237083507(over)X
237093686(which)X
237103924(the)X
23711796 1404(location)N
237121103(is)X
237131184(valid.)X
23714642 1560(3.)N
23715796(A)X
23716886(location)X
237171198(expression)X
237181601(describing)X
237191995(the)X
237202130(location)X
237212443(of)X
237222544(the)X
237232680(object)X
237242924(over)X
237253108(the)X
237263244(range)X
237273467(speci\256ed)X
237283808(by)X
237293924(the)X
23730796 1664(beginning)N
237311171(and)X
237321320(end)X
237331469(addresses.)X
23734576 1820(Address)N
23735892(ranges)X
237361150(may)X
237371331(overlap.)X
237381668(When)X
237391907(they)X
237402088(do,)X
237412227(they)X
237422408(describe)X
237432730(a)X
237442798(situation)X
237453132(in)X
237463230(which)X
237473474(an)X
237483586(object)X
237493831(exists)X
23750576 1924(simultaneously)N
237511136(in)X
237521230(more)X
237531436(than)X
237541613(one)X
237551765(place.)X
237562020(If)X
237572103(all)X
237582217(of)X
237592315(the)X
237602448(address)X
237612736(ranges)X
237622989(in)X
237633082(a)X
237643145(given)X
237653365(location)X
237663674(list)X
237673807(do)X
237683919(not)X
23769576 2028(collectively)N
237701013(cover)X
237711232(the)X
237721364(entire)X
237731589(range)X
237741809(over)X
237751990(which)X
237762230(the)X
237772363(object)X
237782604(in)X
237792698(question)X
237803022(is)X
237813106(de\256ned,)X
237823412(it)X
237833487(is)X
237843571(assumed)X
237853899(that)X
23786576 2132(the)N
23787706(object)X
23788944(is)X
237891025(not)X
237901160(available)X
237911501(for)X
237921625(the)X
237931755(portion)X
237942032(of)X
237952127(the)X
237962257(range)X
237972474(that)X
237982629(is)X
237992710(not)X
238002845(covered.)X
23801576 2288(The)N
23802738(end)X
23803890(of)X
23804988(any)X
238051140(given)X
238061361(location)X
238071671(list)X
238081805(is)X
238091889(marked)X
238102178(by)X
238112291(a)X
238122355(0)X
238132425(for)X
238142553(the)X
238152687(beginning)X
238163066(address)X
238173355(and)X
238183508(a)X
238193573(0)X
238203643(for)X
238213771(the)X
238223905(end)X
23823576 2392(address;)N
23824910(no)X
238251044(location)X
238261375(description)X
238271813(is)X
238281917(present.)X
238292260(A)X
238302368(location)X
238312698(list)X
238322852(containing)X
238333270(only)X
238343472(such)X
238353678(a)X
238363762(0)X
238373851(entry)X
23838576 2496(describes)N
23839925(an)X
238401030(object)X
238411268(that)X
238421423(exists)X
238431646(in)X
238441737(the)X
238451867(source)X
238462118(code)X
238472306(but)X
238482441(not)X
238492576(in)X
238502667(the)X
238512797(executable)X
238523196(program.)X
238533 f
2385412 s
23855576 2652(2.5)N
23856744(Types)X
238571013(of)X
238581117(Declarations)X
238591 f
2386011 s
23861576 2808(Any)N
23862758(debugging)X
238631161(information)X
238641609(entry)X
238651821(describing)X
238662219(a)X
238672289(declaration)X
238682713(that)X
238692878(has)X
238703027(a)X
238713098(type)X
238723282(has)X
238733431(a)X
238740 f
238753502(DW_AT_type)X
238761 f
23877576 2912(attribute,)N
23878946(whose)X
238791223(value)X
238801467(is)X
238811579(a)X
238821671(reference)X
238832050(to)X
238842172(another)X
238852489(debugging)X
238862914(information)X
238873384(entry.)X
238883662(The)X
238893851(entry)X
23890576 3016(referenced)N
23891968(may)X
238921142(describe)X
238931457(a)X
238941518(base)X
238951696(type,)X
238961892(that)X
238972047(is,)X
238982150(a)X
238992212(type)X
239002387(that)X
239012543(is)X
239022625(not)X
239032761(de\256ned)X
239043043(in)X
239053135(terms)X
239063354(of)X
239073450(other)X
239083654(data)X
239093824(types,)X
23910576 3120(or)N
23911676(it)X
23912753(may)X
23913932(describe)X
239141252(a)X
239151317(user-de\256ned)X
239161777(type,)X
239171977(such)X
239182164(as)X
239192263(an)X
239202372(array,)X
239212600(structure)X
239222934(or)X
239233033(enumeration.)X
239243544(Alternatively,)X
23925576 3224(the)N
23926706(entry)X
23927909(referenced)X
239281301(may)X
239291475(describe)X
239301790(a)X
239311851(type)X
239322025(modi\256er:)X
239332371(constant,)X
239342710(packed,)X
239353004(pointer,)X
239363299(reference)X
239373648(or)X
239383744(volatile,)X
23939576 3328(which)N
23940847(in)X
23941972(turn)X
239421170(will)X
239431364(reference)X
239441746(another)X
239452066(entry)X
239462303(describing)X
239472726(a)X
239482821(type)X
239493029(or)X
239503157(type)X
239513364(modi\256er)X
239523718(\(using)X
239533993(a)X
239540 f
23955576 3432(DW_AT_type)N
239561 f
239571131(attribute)X
239581451(of)X
239591550(its)X
239601660(own\).)X
239611910(See)X
239622063(section)X
239632339(5)X
239642409(for)X
239652537(descriptions)X
239662989(of)X
239673088(the)X
239683222(entries)X
239693483(describing)X
239703876(base)X
23971576 3536(types,)N
23972806(user-de\256ned)X
239731262(types)X
239741470(and)X
239751619(type)X
239761793(modi\256ers.)X
239773 f
2397812 s
23979576 3692(2.6)N
23980744(Accessibility)X
239811281(of)X
239821385(Declarations)X
239832 f
2398411 s
23985576 3848(Some)N
23986794(languages,)X
239871206(notably)X
239881500(C++)X
239891706(and)X
239901867(Ada,)X
239912060(have)X
239922255(the)X
239932392(concept)X
239942695(of)X
239952793(the)X
239962930(accessibility)X
239973396(of)X
239983494(an)X
239993611(object)X
240003856(or)X
240013963(of)X
24002576 3952(some)N
24003778(other)X
24004986(program)X
240051315(entity.)X
240061578(The)X
240071732(accessibility)X
240082191(speci\256es)X
240092511(which)X
240102744(classes)X
240113015(of)X
240123106(other)X
240133314(program)X
240143643(objects)X
240153915(are)X
24016576 4056(permitted)N
24017936(access)X
240181187(to)X
240191278(the)X
240201408(object)X
240211646(in)X
240221737(question.)X
240231 f
24024576 4212(The)N
24025759(accessibility)X
240261242(of)X
240271361(a)X
240281446(declaration)X
240291884(is)X
240301989(represented)X
240312440(by)X
240322575(a)X
240330 f
240342661 0.1979(DW_AT_accessibility)AX
240351 f
240363715(attribute,)X
24037576 4316(whose)N
24038822(value)X
240391035(is)X
240401116(a)X
240411177(constant)X
240421493(drawn)X
240431734(from)X
240441927(the)X
240452057(set)X
240462177(of)X
240472272(codes)X
240482494(listed)X
240492708(in)X
240502799(Figure)X
240513051(3.)X
2405210 f
240531756 4384(i)N
240541795(iiiiiiiiiiiiiiiiiiiiiiii)X
240550 f
240561800 4488(DW_ACCESS_public)N
240571800 4592 0.1992(DW_ACCESS_private)AN
240581800 4696 0.1979(DW_ACCESS_protected)AN
240591 f
2406010 f
240611756 4712(i)N
240621795(iiiiiiiiiiiiiiiiiiiiiiii)X
240631756(c)X
240644648(c)Y
240654560(c)Y
240664472(c)Y
240672851 4712(c)N
240684648(c)Y
240694560(c)Y
240704472(c)Y
240713 f
240721771 4816(Figure)N
240732043(3.)X
240741 f
240752153(Accessibility)X
240762636(codes)X
240773 f
2407812 s
24079576 4972(2.7)N
24080744(Visibility)X
240811142(of)X
240821246(Declarations)X
240832 f
2408411 s
24085576 5128(Modula2)N
24086943(has)X
240871114(the)X
240881271(concept)X
240891594(of)X
240901712(the)X
240911869(visibility)X
240922224(of)X
240932342(a)X
240942435(declaration.)X
240952935(The)X
240963117(visibility)X
240973473(speci\256es)X
240983821(which)X
24099576 5232(declarations)N
241001039(are)X
241011178(to)X
241021269(be)X
241031374(visible)X
241041627(outside)X
241051904(of)X
241061995(the)X
241072125(module)X
241082406(in)X
241092497(which)X
241102730(they)X
241112899(are)X
241123038(declared.)X
241131 f
24114576 5388(The)N
24115740 0.3472(visibility)AX
241161083(of)X
241171183(a)X
241181249(declaration)X
241191668(is)X
241201754(represented)X
241212186(by)X
241222301(a)X
241230 f
241242368(DW_AT_visibility)X
241251 f
241263244(attribute,)X
241273589(whose)X
241283841(value)X
24129576 5492(is)N
24130657(a)X
24131718(constant)X
241321034(drawn)X
241331275(from)X
241341468(the)X
241351598(set)X
241361718(of)X
241371813(codes)X
241382035(listed)X
241392249(in)X
241402340(Figure)X
241412592(4.)X
2414210 s
24143576 5951(Revision:)N
24144902(2.0.0)X
241452176(Page)X
241462352(18)X
241473599(July)X
241483752(27,)X
241493872(1993)X
241501943 6055(Industry)N
241512230(Review)X
241522495(Draft)X
24153
2415419 p
24155%%Page: 19 21
241560(Courier)xf 0 f
2415710 s 0 xH 0 xS 0 f
2415811 s
241591 f
2416010 s
241613075 520(Programming)N
241623535(Languages)X
241633903(SIG)X
2416411 s
2416510 f
241661836 744(i)N
241671848(iiiiiiiiiiiiiiiiiiiii)X
241680 f
241691880 848(DW_VIS_local)N
241701880 952(DW_VIS_exported)N
241711880 1056(DW_VIS_qualified)N
241721 f
2417310 f
241741836 1072(i)N
241751848(iiiiiiiiiiiiiiiiiiiii)X
241761836(c)X
241771008(c)Y
24178920(c)Y
24179832(c)Y
241802772 1072(c)N
241811008(c)Y
24182920(c)Y
24183832(c)Y
241843 f
241851834 1176(Figure)N
241862106(4.)X
241871 f
241882216(Visibility)X
241892573(codes)X
241903 f
2419112 s
24192576 1332(2.8)N
24193744(Virtuality)X
241941174(of)X
241951278(Declarations)X
241962 f
2419711 s
24198576 1488(C++)N
24199785(provides)X
242001120(for)X
242011255(virtual)X
242021524(and)X
242031689(pure)X
242041883(virtual)X
242052152(structure)X
242062503(or)X
242072614(class)X
242082823(member)X
242093138(functions)X
242103495(and)X
242113660(for)X
242123796(virtual)X
24213576 1592(base)N
24214759(classes.)X
242151 f
24216576 1748(The)N
24217739(virtuality)X
242181090(of)X
242191189(a)X
242201254(declaration)X
242211672(is)X
242221758(represented)X
242232190(by)X
242242305(a)X
242250 f
242262371(DW_AT_virtuality)X
242271 f
242283246(attribute,)X
242293590(whose)X
242303841(value)X
24231576 1852(is)N
24232657(a)X
24233718(constant)X
242341034(drawn)X
242351275(from)X
242361468(the)X
242371598(set)X
242381718(of)X
242391813(codes)X
242402035(listed)X
242412249(in)X
242422340(Figure)X
242432592(5.)X
2424410 f
242451571 1920(i)N
242461585(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
242470 f
242481615 2024 0.1985(DW_VIRTUALITY_none)AN
242491615 2128 0.1969(DW_VIRTUALITY_virtual)AN
242501615 2232 0.1950(DW_VIRTUALITY_pure_virtual)AN
242511 f
2425210 f
242531571 2248(i)N
242541585(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
242551571(c)X
242562184(c)Y
242572096(c)Y
242582008(c)Y
242593037 2248(c)N
242602184(c)Y
242612096(c)Y
242622008(c)Y
242633 f
242641830 2352(Figure)N
242652102(5.)X
242661 f
242672212(Virtuality)X
242682578(codes)X
242693 f
2427012 s
24271576 2508(2.9)N
24272744(Arti\256cial)X
242731137(Entries)X
242742 f
2427511 s
24276576 2664(A)N
24277652(compiler)X
24278987(may)X
242791155(wish)X
242801339(to)X
242811431(generate)X
242821762(debugging)X
242832157(information)X
242842597(entries)X
242852860(for)X
242862986(objects)X
242873259(or)X
242883360(types)X
242893564(that)X
242903725(were)X
242913919(not)X
24292576 2768(actually)N
24293894(declared)X
242941235(in)X
242951337(the)X
242961477(source)X
242971743(of)X
242981844(the)X
242991984(application.)X
243002463(An)X
243012593(example)X
243022918(is)X
243033009(a)X
243043085(formal)X
243053352(parameter)X
243063750(entry)X
243073963(to)X
24308576 2872(represent)N
24309932(the)X
243101064(hidden)X
243110 f
243121328(this)X
243132 f
243141564(parameter)X
243151954(that)X
243162116(most)X
243172306(C++)X
243182508(implementations)X
243193116(pass)X
243203297(as)X
243213400(the)X
243223533(\256rst)X
243233695(argument)X
24324576 2976(to)N
24325667(non-static)X
243261042(member)X
243271346(functions.)X
243281 f
24329576 3132(Any)N
24330763(debugging)X
243311171(information)X
243321624(entry)X
243331841(representing)X
243342312(the)X
243352457(declaration)X
243362886(of)X
243372996(an)X
243383116(object)X
243393369(or)X
243403479(type)X
243413668(arti\256cially)X
24342576 3236(generated)N
24343970(by)X
243441110(a)X
243451201(compiler)X
243461567(and)X
243471746(not)X
243481911(explicitly)X
243492297(declared)X
243502646(by)X
243512785(the)X
243522944(source)X
243533224(program)X
243543573(may)X
243553776(have)X
243563993(a)X
243570 f
24358576 3340(DW_AT_artificial)N
243591 f
243601446(attribute.)X
243611807(The)X
243621966(value)X
243632179(of)X
243642274(this)X
243652424(attribute)X
243662741(is)X
243672822(a)X
243682883(\257ag.)X
243693 f
2437012 s
24371576 3496(2.10)N
24372792(Target-Speci\256c)X
243731441(Addressing)X
243741928(Information)X
243752 f
2437611 s
24377576 3652(In)N
24378694(some)X
24379919(systems,)X
243801254(addresses)X
243811645(are)X
243821807(speci\256ed)X
243832160(as)X
243842284(offsets)X
243852556(within)X
243862824(a)X
243872914(given)X
243883151(segment)X
243893485(rather)X
243903751(than)X
243913954(as)X
24392576 3756(locations)N
24393922(within)X
243941166(a)X
243951232(single)X
243961465(\257at)X
243971600(address)X
243981895(space.)X
243991 f
24400576 3912(Any)N
24401767(debugging)X
244021179(information)X
244031636(entry)X
244041857(that)X
244052030(contains)X
244062364(a)X
244072443(description)X
244082875(of)X
244092989(the)X
244103138(location)X
244113464(of)X
244123578(an)X
244133702(object)X
244143959(or)X
24415576 4016(subroutine)N
24416978(may)X
244171160(have)X
244181355(a)X
244190 f
244201423(DW_AT_segment)X
244211 f
244222141(attribute,)X
244232487(whose)X
244242740(value)X
244252960(is)X
244263048(a)X
244273116(location)X
244283430(description.)X
244293895(The)X
24430576 4120(description)N
24431990(evaluates)X
244321340(to)X
244331431(the)X
244341561(segment)X
244351877(value)X
244362090(of)X
244372185(the)X
244382315(item)X
244392495(being)X
244402713(described.)X
244413116(If)X
244423196(the)X
244433326(entry)X
244443529(containing)X
244453924(the)X
244460 f
24447576 4224(DW_AT_segment)N
244481 f
244491320(attribute)X
244501670(has)X
244511842(a)X
244520 f
244531935(DW_AT_low_pc)X
244541 f
244552625(or)X
244560 f
244572752(DW_AT_high_pc)X
244581 f
244593495(attribute,)X
244603866(or)X
244613993(a)X
24462576 4328(location)N
24463886(description)X
244641303(that)X
244651461(evaluates)X
244661814(to)X
244671909(an)X
244682018(address,)X
244692329(then)X
244702507(those)X
244712719(values)X
244722970(represent)X
244733318(the)X
244743452(offset)X
244753678(portion)X
244763959(of)X
24477576 4432(the)N
24478706(address)X
24479991(within)X
244801239(the)X
244811369(segment)X
244821685(speci\256ed)X
244832020(by)X
244840 f
244852130(DW_AT_segment)X
244861 f
244872819(.)X
24488576 4588(If)N
24489656(an)X
24490761(entry)X
24491964(has)X
244921103(no)X
244930 f
244941213(DW_AT_segment)X
244951 f
244961924(attribute,)X
244972263(it)X
244982335(inherits)X
244992623(the)X
245002754(segment)X
245013071(value)X
245023285(from)X
245033479(its)X
245043586(parent)X
245053829(entry.)X
24506576 4692(If)N
24507660(none)X
24508857(of)X
24509955(the)X
245101088(entries)X
245111348(in)X
245121442(the)X
245131575(chain)X
245141791(of)X
245151889(parents)X
245162168(for)X
245172295(this)X
245182448(entry)X
245192654(back)X
245202845(to)X
245212939(its)X
245223048(containing)X
245233446(compilation)X
245243894(unit)X
24525576 4796(entry)N
24526784(have)X
245270 f
24528977(DW_AT_segment)X
245291 f
245301693(attributes,)X
245312072(then)X
245322252(the)X
245332388(entry)X
245342597(is)X
245352684(assumed)X
245363015(to)X
245373112(exist)X
245383307(within)X
245393561(a)X
245403628(\257at)X
245413769(address)X
24542576 4900(space.)N
24543850(Similarly,)X
245441237(if)X
245451326(the)X
245461469(entry)X
245471685(has)X
245481837(a)X
245490 f
245501911(DW_AT_segment)X
245511 f
245522635(attribute)X
245532965(containing)X
245543373(an)X
245553491(empty)X
245563747(location)X
24557576 5004(description,)N
245581012(that)X
245591167(entry)X
245601370(is)X
245611451(assumed)X
245621776(to)X
245631867(exist)X
245642056(within)X
245652304(a)X
245662365(\257at)X
245672500(address)X
245682785(space.)X
245692 f
24570576 5160(Some)N
24571801(systems)X
245721105(support)X
245731410(different)X
245741746(classes)X
245752031(of)X
245762136(addresses.)X
245772562(The)X
245782730(address)X
245793039(class)X
245803251(may)X
245813433(affect)X
245823666(the)X
245833810(way)X
245843988(a)X
24585576 5264(pointer)N
24586853(is)X
24587934(dereferenced)X
245881415(or)X
245891515(the)X
245901645(way)X
245911809(a)X
245921875(subroutine)X
245932274(is)X
245942355(called.)X
245951 f
24596576 5420(Any)N
24597765(debugging)X
245981175(information)X
245991630(entry)X
246001849(representing)X
246012323(a)X
246022401(pointer)X
246032690(or)X
246042802(reference)X
246053167(type)X
246063358(or)X
246073470(a)X
246083548(subroutine)X
246093959(or)X
24610576 5524(subroutine)N
24611987(type)X
246121178(may)X
246131369(have)X
246141574(a)X
246150 f
246161651 0.1979(DW_AT_address_class)AX
246171 f
246182696(attribute,)X
246193051(whose)X
246203313(value)X
246213542(is)X
246223639(a)X
246233716(constant.)X
24624576 5628(The)N
24625736(set)X
24626858(of)X
24627955(permissible)X
246281386(values)X
246291635(is)X
246301718(speci\256c)X
246312011(to)X
246322104(each)X
246332289(target)X
246342514(architecture.)X
246352998(The)X
246363159(value)X
246370 f
246383374(DW_ADDR_none)X
246391 f
246404010(,)X
24641576 5732(however,)N
24642922(is)X
246431003(common)X
246441334(to)X
246451425(all)X
246461536(encodings,)X
246471937(and)X
246482086(means)X
246492333(that)X
246502488(no)X
246512598(address)X
246522883(class)X
246533076(has)X
246543215(been)X
246553403(speci\256ed.)X
2465610 s
24657576 5951(Revision:)N
24658902(2.0.0)X
246592176(Page)X
246602352(19)X
246613599(July)X
246623752(27,)X
246633872(1993)X
246641943 6055(Industry)N
246652230(Review)X
246662495(Draft)X
24667
2466820 p
24669%%Page: 20 22
246700(Courier)xf 0 f
2467110 s 0 xH 0 xS 0 f
2467211 s
246731 f
2467410 s
24675576 520(DWARF)N
24676885(Debugging)X
246771261(Information)X
246781664(Format)X
246792 f
2468011 s
24681576 832(For)N
24682730(example,)X
246831067(the)X
246841197(Intel386)X
246859 f
246861491(\324)X
246872 f
246881591(processor)X
246891959(might)X
246902182(use)X
246912321(the)X
246922451(following)X
246932808(values:)X
246941 f
2469510 f
246961150 900(i)N
246971170(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
246981 f
246991194 1004(Name)N
247002068(Value)X
247012410(Meaning)X
2470210 f
247031150 1020(i)N
247041170(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
247050 f
247061194 1124(DW_ADDR_none)N
247072068(0)X
247081 f
247092410(no)X
247102520(class)X
247112713(speci\256ed)X
247120 f
247131194 1228(DW_ADDR_near16)N
247142068(1)X
247151 f
247162410(16-bit)X
247172643(offset,)X
247182887(no)X
247192997(segment)X
247200 f
247211194 1332(DW_ADDR_far16)N
247222068(2)X
247231 f
247242410(16-bit)X
247252643(offset,)X
247262887(16-bit)X
247273120(segment)X
247280 f
247291194 1436(DW_ADDR_huge16)N
247302068(3)X
247311 f
247322410(16-bit)X
247332643(offset,)X
247342887(16-bit)X
247353120(segment)X
247360 f
247371194 1540(DW_ADDR_near32)N
247382068(4)X
247391 f
247402410(32-bit)X
247412643(offset,)X
247422887(no)X
247432997(segment)X
247440 f
247451194 1644(DW_ADDR_far32)N
247462068(5)X
247471 f
247482410(32-bit)X
247492643(offset,)X
247502887(16-bit)X
247513120(segment)X
2475210 f
247531150 1660(i)N
247541170(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
247551150(c)X
247561604(c)Y
247571516(c)Y
247581428(c)Y
247591340(c)Y
247601252(c)Y
247611164(c)Y
247621076(c)Y
24763988(c)Y
247643458 1660(c)N
247651604(c)Y
247661516(c)Y
247671428(c)Y
247681340(c)Y
247691252(c)Y
247701164(c)Y
247711076(c)Y
24772988(c)Y
247733 f
247741606 1764(Figure)N
247751878(6.)X
247761 f
247771988(Example)X
247782324(address)X
247792609(class)X
247802802(codes)X
247813 f
2478212 s
24783576 1920(2.11)N
24784792(Non-De\256ning)X
247851364(Declarations)X
247861 f
2478711 s
24788576 2076(A)N
24789675(debugging)X
247901083(information)X
247911536(entry)X
247921753(representing)X
247932224(a)X
247942299(program)X
247952633(object)X
247962885(or)X
247972995(type)X
247983184(typically)X
247993531(represents)X
248003924(the)X
24801576 2180(de\256ning)N
24802893(declaration)X
248031313(of)X
248041414(that)X
248051575(object)X
248061819(or)X
248071920(type.)X
248082144(In)X
248092245(certain)X
248102513(contexts,)X
248112857(however,)X
248123209(a)X
248133276(debugger)X
248143631(might)X
248153866(need)X
24816576 2284(information)N
248171028(about)X
248181259(a)X
248191333(declaration)X
248201760(of)X
248211868(a)X
248221943(subroutine,)X
248232373(object)X
248242625(or)X
248252734(type)X
248262922(that)X
248273091(is)X
248283186(not)X
248293335(also)X
248303513(a)X
248313588(de\256nition)X
248323963(to)X
24833576 2388(evaluate)N
24834892(an)X
24835997(expression)X
248361395(correctly.)X
248372 f
24838576 2544(As)N
24839686(an)X
24840796(example,)X
248411133(consider)X
248421458(the)X
248431588(following)X
248441945(fragment)X
248452285(of)X
248462376(C)X
248472457(code:)X
248480 f
24849576 2700(void)N
24850841(myfunc\(\))X
24851576 2804({)N
248521000 2908(int)N
248531424(x;)X
248541000 3012({)N
248551424 3116(extern)N
248561795(float)X
248572113(x;)X
248581424 3220(g\(x\);)N
248591000 3324(})N
24860576 3428(})N
248612 f
24862576 3584(ANSI-C)N
24863880(scoping)X
248641184(rules)X
248651390(require)X
248661680(that)X
248671849(the)X
248681988(value)X
248692210(of)X
248702310(the)X
248712449(variable)X
248720 f
248732805(x)X
248742 f
248752889(passed)X
248763159(to)X
248773259(the)X
248783398(function)X
248790 f
248803750(g)X
248812 f
248823834(is)X
248833924(the)X
24884576 3688(value)N
24885789(of)X
24886880(the)X
248871010(global)X
248881258(variable)X
248890 f
248901605(x)X
248912 f
248921680(rather)X
248931922(than)X
248942101(of)X
248952192(the)X
248962322(local)X
248972521(version.)X
248981 f
24899576 3844(Debugging)N
249001001(information)X
249011452(entries)X
249021722(that)X
249031890(represent)X
249042247(non-de\256ning)X
249052732(declarations)X
249063193(of)X
249073301(a)X
249083375(program)X
249093708(object)X
249103959(or)X
24911576 3948(type)N
24912750(have)X
24913938(a)X
249140 f
24915999 0.1992(DW_AT_declaration)AX
249161 f
249171922(attribute,)X
249182261(whose)X
249192507(value)X
249202720(is)X
249212801(a)X
249222862(\257ag.)X
249233 f
2492412 s
24925576 4104(2.12)N
24926792(Declaration)X
249271297(Coordinates)X
249282 f
2492911 s
24930576 4260(It)N
24931657(is)X
24932743(sometimes)X
249331136(useful)X
249341374(in)X
249351470(a)X
249361541(debugger)X
249371900(to)X
249381996(be)X
249392107(able)X
249402287(to)X
249412384(associate)X
249422740(a)X
249432812(declaration)X
249443247(with)X
249453428(its)X
249463540(occurrence)X
249473963(in)X
24948576 4364(the)N
24949706(program)X
249501035(source.)X
249511 f
24952576 4520(Any)N
24953754(debugging)X
249541153(information)X
249551597(entry)X
249561805(representing)X
249572267(the)X
249582402(declaration)X
249592821(of)X
249602921(an)X
249613031(object,)X
249623297(module,)X
249633612(subprogram)X
24964576 4624(or)N
24965688(type)X
24966879(may)X
249671070(have)X
249680 f
249691275(DW_AT_decl_file)X
249701 f
249712070(,)X
249720 f
249732131(DW_AT_decl_line)X
249741 f
249752965(and)X
249760 f
249773131 0.1992(DW_AT_decl_column)AX
249781 f
24979576 4728(attributes,)N
24980949(each)X
249811132(of)X
249821227(whose)X
249831473(value)X
249841686(is)X
249851767(a)X
249861828(constant.)X
24987576 4884(The)N
24988738(value)X
24989954(of)X
249901052(the)X
249910 f
249921185(DW_AT_decl_file)X
249931 f
249942005(attribute)X
249952325(corresponds)X
249962774(to)X
249972868(a)X
249982932(\256le)X
249993070(number)X
250003364(from)X
250013560(the)X
250023693(statement)X
25003576 4988(information)N
250041039(table)X
250051257(for)X
250061405(the)X
250071558(compilation)X
250082026(unit)X
250092209(containing)X
250102627(this)X
250112800(debugging)X
250123217(information)X
250133679(entry)X
250143905(and)X
25015576 5092(represents)N
25016975(the)X
250171126(source)X
250181398(\256le)X
250191554(in)X
250201666(which)X
250211924(the)X
250222075(declaration)X
250232510(appeared)X
250242870(\(see)X
250253054(section)X
250263347(6.2\).)X
250273573(The)X
250283753(value)X
250293988(0)X
25030576 5196(indicates)N
25031912(that)X
250321067(no)X
250331177(source)X
250341428(\256le)X
250351563(has)X
250361702(been)X
250371890(speci\256ed.)X
25038576 5352(The)N
25039741(value)X
25040960(of)X
250411062(the)X
250420 f
250431199(DW_AT_decl_line)X
250441 f
250452023(attribute)X
250462347(represents)X
250472732(the)X
250482869(source)X
250493127(line)X
250503289(number)X
250513587(at)X
250523680(which)X
250533924(the)X
25054576 5456(\256rst)N
25055736(character)X
250561081(of)X
250571176(the)X
250581306(identi\256er)X
250591647(of)X
250601742(the)X
250611872(declared)X
250622192(object)X
250632430(appears.)X
250642764(The)X
250652923(value)X
250663136(0)X
250673202(indicates)X
250683538(that)X
250693693(no)X
250703803(source)X
25071576 5560(line)N
25072731(has)X
25073870(been)X
250741058(speci\256ed.)X
25075576 5716(The)N
25076754(value)X
25077986(of)X
250781101(the)X
250790 f
250801251 0.1992(DW_AT_decl_column)AX
250811 f
250822194(attribute)X
250832531(represents)X
250842929(the)X
250853079(source)X
250863350(column)X
250873657(number)X
250883968(at)X
25089576 5820(which)N
25090824(the)X
25091964(\256rst)X
250921133(character)X
250931487(of)X
250941592(the)X
250951732(identi\256er)X
250962083(of)X
250972188(the)X
250982328(declared)X
250992658(object)X
251002906(appears.)X
251013250(The)X
251023419(value)X
251033642(0)X
251043718(indicates)X
2510510 s
25106576 5951(Revision:)N
25107902(2.0.0)X
251082176(Page)X
251092352(20)X
251103599(July)X
251113752(27,)X
251123872(1993)X
251131943 6055(Industry)N
251142230(Review)X
251152495(Draft)X
25116
2511721 p
25118%%Page: 21 23
251190(Courier)xf 0 f
2512010 s 0 xH 0 xS 0 f
2512111 s
251221 f
2512310 s
251243075 520(Programming)N
251253535(Languages)X
251263903(SIG)X
2512711 s
25128576 832(that)N
25129731(no)X
25130841(column)X
251311128(has)X
251321267(been)X
251331455(speci\256ed.)X
251343 f
2513512 s
25136576 988(2.13)N
25137792(Identi\256er)X
251381200(Names)X
251391 f
2514011 s
25141576 1144(Any)N
25142753(debugging)X
251431151(information)X
251441594(entry)X
251451801(representing)X
251462262(a)X
251472327(program)X
251482651(entity)X
251492879(that)X
251503038(has)X
251513181(been)X
251523373(given)X
251533596(a)X
251543662(name)X
251553880(may)X
25156576 1248(have)N
25157767(a)X
251580 f
25159831(DW_AT_name)X
251601 f
251611386(attribute,)X
251621728(whose)X
251631976(value)X
251642191(is)X
251652274(a)X
251662337(string)X
251672562(representing)X
251683021(the)X
251693153(name)X
251703368(as)X
251713465(it)X
251723539(appears)X
251733831(in)X
251743924(the)X
25175576 1352(source)N
25176838(program.)X
251771213(A)X
251781309(debugging)X
251791714(information)X
251802164(entry)X
251812378(containing)X
251822784(no)X
251832905(name)X
251843129(attribute,)X
251853479(or)X
251863586(containing)X
251873993(a)X
25188576 1456(name)N
25189790(attribute)X
251901108(whose)X
251911355(value)X
251921569(consists)X
251931871(of)X
251941967(a)X
251952029(name)X
251962243(containing)X
251972639(a)X
251982701(single)X
251992935(null)X
252003096(byte,)X
252013293(represents)X
252023672(a)X
252033734(program)X
25204576 1560(entity)N
25205800(for)X
25206924(which)X
252071161(no)X
252081271(name)X
252091484(was)X
252101642(given)X
252111860(in)X
252121951(the)X
252132081(source.)X
252142 f
25215576 1716(Note)N
25216765(that)X
25217925(since)X
252181129(the)X
252191260(names)X
252201507(of)X
252211599(program)X
252221929(objects)X
252232202(described)X
252242567(by)X
252252673(DWARF)X
252262994(are)X
252273134(the)X
252283265(names)X
252293512(as)X
252303613(they)X
252313783(appear)X
25232576 1820(in)N
25233674(the)X
25234811(source)X
252351074(program,)X
252361432(implementations)X
252372044(of)X
252382142(language)X
252392499(translators)X
252402915(that)X
252413082(use)X
252423228(some)X
252433437(form)X
252443632(of)X
252453729(mangled)X
25246576 1924(name)N
25247794(\(as)X
25248929(do)X
252491046(many)X
252501265(implementations)X
252511877(of)X
252521975(C++\))X
252532210(should)X
252542474(use)X
252552620(the)X
252562757(unmangled)X
252573177(form)X
252583372(of)X
252593470(the)X
252603607(name)X
252613826(in)X
252623924(the)X
25263576 2028(DWARF)N
252640 f
25265907(DW_AT_name)X
252662 f
252671470(attribute,)X
252681830(including)X
252692197(the)X
252702338(keyword)X
252710 f
252722669(operator)X
252732 f
252743093(,)X
252753148(if)X
252763230(present.)X
252773565(Sequences)X
252783963(of)X
25279576 2132(multiple)N
25280888(whitespace)X
252811302(characters)X
252821700(may)X
252831868(be)X
252841973(compressed.)X
252851 f
2528610 s
25287576 5951(Revision:)N
25288902(2.0.0)X
252892176(Page)X
252902352(21)X
252913599(July)X
252923752(27,)X
252933872(1993)X
252941943 6055(Industry)N
252952230(Review)X
252962495(Draft)X
25297
2529822 p
25299%%Page: 22 24
253000(Courier)xf 0 f
2530110 s 0 xH 0 xS 0 f
2530211 s
253031 f
2530410 s
25305576 520(DWARF)N
25306885(Debugging)X
253071261(Information)X
253081664(Format)X
25309576 5951(Revision:)N
25310902(2.0.0)X
253112176(Page)X
253122352(22)X
253133599(July)X
253143752(27,)X
253153872(1993)X
253161943 6055(Industry)N
253172230(Review)X
253182495(Draft)X
25319
2532023 p
25321%%Page: 23 25
253220(Courier)xf 0 f
2532310 s 0 xH 0 xS 0 f
2532411 s
253251 f
2532610 s
253273075 520(Programming)N
253283535(Languages)X
253293903(SIG)X
253303 f
2533112 s
25332576 832(3.)N
25333696(PROGRAM)X
253341227(SCOPE)X
253351571(ENTRIES)X
253361 f
2533711 s
25338576 988(This)N
25339768(section)X
253401053(describes)X
253411415(debugging)X
253421822(information)X
253432274(entries)X
253442544(that)X
253452712(relate)X
253462943(to)X
253473047(different)X
253483385(levels)X
253493626(of)X
253503734(program)X
25351576 1092(scope:)N
25352836(compilation)X
253531294(unit,)X
253541489(module,)X
253551811(subprogram,)X
253562288(and)X
253572450(so)X
253582563(on.)X
253592730(These)X
253602975(entries)X
253613245(may)X
253623431(be)X
253633548(thought)X
253643852(of)X
253653959(as)X
25366576 1196(bounded)N
25367901(by)X
253681011(ranges)X
253691262(of)X
253701357(text)X
253711512(addresses)X
253721870(within)X
253732118(the)X
253742248(program.)X
253753 f
2537612 s
25377576 1352(3.1)N
25378744(Compilation)X
253791280(Unit)X
253801485(Entries)X
253811 f
2538211 s
25383576 1508(An)N
25384711(object)X
25385955(\256le)X
253861096(may)X
253871277(be)X
253881389(derived)X
253891682(from)X
253901882(one)X
253912038(or)X
253922140(more)X
253932350(compilation)X
253942802(units.)X
253953047(Each)X
253963252(such)X
253973442(compilation)X
253983894(unit)X
25399576 1612(will)N
25400736(be)X
25401841(described)X
254021200(by)X
254031310(a)X
254041371(debugging)X
254051765(information)X
254062204(entry)X
254072407(with)X
254082586(the)X
254092716(tag)X
254100 f
254112877 0.1979(DW_TAG_compile_unit)AX
254121 f
254133884(.)X
254142 f
25415576 1768(A)N
25416654(compilation)X
254171100(unit)X
254181262(typically)X
254191591(represents)X
254201981(the)X
254212113(text)X
254222265(and)X
254232421(data)X
254242603(contributed)X
254253035(to)X
254263129(an)X
254273242(executable)X
254283644(by)X
254293752(a)X
254303821(single)X
25431576 1872(relocatable)N
254321019(object)X
254331276(\256le.)X
254341469(It)X
254351564(may)X
254361751(be)X
254371875(derived)X
254382180(from)X
254392387(several)X
254402682(source)X
254412957(\256les,)X
254423161(including)X
254433535(pre-processed)X
25444576 1976(``include)N
25445916(\256les.'')X
254461 f
25447576 2132(The)N
25448735(compilation)X
254491180(unit)X
254501340(entry)X
254511543(may)X
254521717(have)X
254531905(the)X
254542035(following)X
254552400(attributes:)X
25456642 2288(1.)N
25457796(A)X
254580 f
25459897(DW_AT_low_pc)X
254601 f
254611571(attribute)X
254621904(whose)X
254632166(value)X
254642395(is)X
254652492(the)X
254662638(relocated)X
254672999(address)X
254683300(of)X
254693411(the)X
254703557(\256rst)X
254713733(machine)X
25472796 2392(instruction)N
254731196(generated)X
254741560(for)X
254751684(that)X
254761839(compilation)X
254772284(unit.)X
25478642 2548(2.)N
25479796(A)X
254800 f
25481893(DW_AT_high_pc)X
254821 f
254831616(attribute)X
254841946(whose)X
254852205(value)X
254862431(is)X
254872525(the)X
254882668(relocated)X
254893026(address)X
254903324(of)X
254913432(the)X
254923575(\256rst)X
254933747(location)X
25494796 2652(past)N
25495960(the)X
254961090(last)X
254971235(machine)X
254981556(instruction)X
254991956(generated)X
255002320(for)X
255012444(that)X
255022599(compilation)X
255033044(unit.)X
255042 f
25505796 2808(The)N
25506956(address)X
255071257(may)X
255081431(be)X
255091542(beyond)X
255101824(the)X
255111960(last)X
255122116(valid)X
255132321(instruction)X
255142732(in)X
255152829(the)X
255162965(executable,)X
255173392(of)X
255183489(course,)X
255193773(for)X
255203904(this)X
25521796 2912(and)N
25522950(other)X
255231158(similar)X
255241430(attributes.)X
255251 f
25526796 3068(The)N
25527959(presence)X
255281292(of)X
255291391(low)X
255301549(and)X
255311702(high)X
255321886(pc)X
255331996(attributes)X
255342352(in)X
255352448(a)X
255362514(compilation)X
255372964(unit)X
255383129(entry)X
255393337(imply)X
255403571(that)X
255413731(the)X
255423866(code)X
25543796 3172(generated)N
255441170(for)X
255451304(that)X
255461469(compilation)X
255471924(unit)X
255482094(is)X
255492184(contiguous)X
255502602(and)X
255512760(exists)X
255522992(totally)X
255533250(within)X
255543507(the)X
255553646(boundaries)X
25556796 3276(speci\256ed)N
255571145(by)X
255581269(those)X
255591491(two)X
255601659(attributes.)X
255612068(If)X
255622162(that)X
255632331(is)X
255642426(not)X
255652576(the)X
255662721(case,)X
255672931(no)X
255683056(low)X
255693225(and)X
255703389(high)X
255713583(pc)X
255723703(attributes)X
25573796 3380(should)N
255741053(be)X
255751158(produced.)X
25576642 3536(3.)N
25577796(A)X
255780 f
25579893(DW_AT_name)X
255801 f
255811457(attribute)X
255821786(whose)X
255832044(value)X
255842269(is)X
255852362(a)X
255862435(null-terminated)X
255873014(string)X
255883250(containing)X
255893658(the)X
255903801(full)X
255913959(or)X
25592796 3640(relative)N
255931083(path)X
255941257(name)X
255951470(of)X
255961565(the)X
255971695(primary)X
255981996(source)X
255992247(\256le)X
256002382(from)X
256012575(which)X
256022812(the)X
256032942(compilation)X
256043387(unit)X
256053547(was)X
256063705(derived.)X
25607642 3796(4.)N
25608796(A)X
256090 f
25610901(DW_AT_language)X
256111 f
256121686(attribute)X
256132024(whose)X
256142291(constant)X
256152628(value)X
256162862(is)X
256172964(a)X
256183046(code)X
256193255(indicating)X
256203652(the)X
256213803(source)X
25622796 3900(language)N
256231140(of)X
256241238(the)X
256251371(compilation)X
256261819(unit.)X
256272026(The)X
256282188(set)X
256292311(of)X
256302409(language)X
256312752(names)X
256323002(and)X
256333154(their)X
256343341(meanings)X
256353704(are)X
256363836(given)X
25637796 4004(in)N
25638887(Figure)X
256391139(7.)X
2564010 f
256411201 4072(i)N
256421206(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
256430 f
256441245 4176(DW_LANG_C)N
256451 f
256462384(Non-ANSI)X
256472790(C,)X
256482893(such)X
256493076(as)X
256503171(K&R)X
256510 f
256521245 4280(DW_LANG_C89)N
256531 f
256542384(ISO/ANSI)X
256552776(C)X
256560 f
256571245 4384 0.1979(DW_LANG_C_plus_plus)AN
256581 f
256592384(C++)X
256600 f
256611245 4488 0.1992(DW_LANG_Fortran77)AN
256621 f
256632384(FORTRAN77)X
256640 f
256651245 4592 0.1992(DW_LANG_Fortran90)AN
256661 f
256672384(Fortran90)X
256680 f
256691245 4696(DW_LANG_Modula2)N
256701 f
256712384(Modula2)X
256720 f
256731245 4800(DW_LANG_Pascal83)N
256741 f
256752384(ISO/ANSI)X
256762776(Pascal)X
2567710 f
256781201 4816(i)N
256791206(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
256801201(c)X
256814776(c)Y
256824688(c)Y
256834600(c)Y
256844512(c)Y
256854424(c)Y
256864336(c)Y
256874248(c)Y
256884160(c)Y
256893406 4816(c)N
256904776(c)Y
256914688(c)Y
256924600(c)Y
256934512(c)Y
256944424(c)Y
256954336(c)Y
256964248(c)Y
256974160(c)Y
256983 f
256991816 4920(Figure)N
257002088(7.)X
257011 f
257022198(Language)X
257032567(names)X
25704642 5076(5.)N
25705796(A)X
257060 f
25707891(DW_AT_stmt_list)X
257081 f
257091718(attribute)X
257102045(whose)X
257112301(value)X
257122524(is)X
257132615(a)X
257142686(reference)X
257153045(to)X
257163147(line)X
257173313(number)X
257183615(information)X
25719796 5180(for)N
25720920(this)X
257211070(compilation)X
257221515(unit.)X
25723796 5336(This)N
25724978(information)X
257251420(is)X
257261504(placed)X
257271759(in)X
257281853(a)X
257291917(separate)X
257302230(object)X
257312471(\256le)X
257322610(section)X
257332886(from)X
257343083(the)X
257353217(debugging)X
257363615(information)X
25737796 5440(entries)N
257381091(themselves.)X
257391587(The)X
257401783(value)X
257412033(of)X
257422165(the)X
257432332(statement)X
257442730(list)X
257452898(attribute)X
257463252(is)X
257473370(the)X
257483537(offset)X
257493796(in)X
257503924(the)X
257510 f
25752796 5544(.debug_line)N
257531 f
257541437(section)X
257551745(of)X
257561876(the)X
257572042(\256rst)X
257582237(byte)X
257592448(of)X
257602580(the)X
257612747(line)X
257622939(number)X
257633267(information)X
257643743(for)X
257653904(this)X
25766796 5648(compilation)N
257671241(unit.)X
257681445(See)X
257691594(section)X
257701866(6.2.)X
2577110 s
25772576 5951(Revision:)N
25773902(2.0.0)X
257742176(Page)X
257752352(23)X
257763599(July)X
257773752(27,)X
257783872(1993)X
257791943 6055(Industry)N
257802230(Review)X
257812495(Draft)X
25782
2578324 p
25784%%Page: 24 26
257850(Courier)xf 0 f
2578610 s 0 xH 0 xS 0 f
2578711 s
257881 f
2578910 s
25790576 520(DWARF)N
25791885(Debugging)X
257921261(Information)X
257931664(Format)X
2579411 s
25795642 832(6.)N
25796796(A)X
257970 f
25798881(DW_AT_macro_info)X
257991 f
258001752(attribute)X
258012070(whose)X
258022317(value)X
258032531(is)X
258042613(a)X
258052675(reference)X
258063024(to)X
258073116(the)X
258083247(macro)X
258093490(information)X
258103930(for)X
25811796 936(this)N
25812946(compilation)X
258131391(unit.)X
25814796 1092(This)N
25815978(information)X
258161420(is)X
258171504(placed)X
258181759(in)X
258191853(a)X
258201917(separate)X
258212230(object)X
258222471(\256le)X
258232610(section)X
258242886(from)X
258253083(the)X
258263217(debugging)X
258273615(information)X
25828796 1196(entries)N
258291076(themselves.)X
258301557(The)X
258311739(value)X
258321975(of)X
258332093(the)X
258342246(macro)X
258352511(information)X
258362973(attribute)X
258373312(is)X
258383415(the)X
258393567(offset)X
258403811(in)X
258413924(the)X
258420 f
25843796 1300(.debug_macinfo)N
258441 f
258451563(section)X
258461838(of)X
258471936(the)X
258482069(\256rst)X
258492231(byte)X
258502408(of)X
258512506(the)X
258522639(macro)X
258532884(information)X
258543327(for)X
258553455(this)X
258563609(compilation)X
25857796 1404(unit.)N
258581000(See)X
258591149(section)X
258601421(6.3.)X
25861642 1560(7.)N
25862796(A)X
258630 f
25864898(DW_AT_comp_dir)X
258651 f
258661679(attribute)X
258672013(whose)X
258682276(value)X
258692507(is)X
258702606(a)X
258712685(null-terminated)X
258723270(string)X
258733511(containing)X
258743924(the)X
25875796 1664(current)N
258761070(working)X
258771388(directory)X
258781731(of)X
258791829(the)X
258801962(compilation)X
258812410(command)X
258822783(that)X
258832941(produced)X
258843293(this)X
258853446(compilation)X
258863894(unit)X
25887796 1768(in)N
25888887(whatever)X
258891231(form)X
258901424(makes)X
258911671(sense)X
258921883(for)X
258932007(the)X
258942137(host)X
258952306(system.)X
258962 f
25897796 1924(The)N
25898954(suggested)X
258991327(form)X
259001519(for)X
259011648(the)X
259021782(value)X
259031999(of)X
259042094(the)X
259050 f
259062259(DW_AT_comp_dir)X
259072 f
259083027(attribute)X
259093358(on)X
259103472(U)X
259119 s
259123535(NIX)X
2591311 s
259143678(systems)X
259153973(is)X
25916796 2028(``hostname)N
259170 f
259181191(:)X
259192 f
259201244(pathname''.)X
259211715(If)X
259221791(no)X
259231901(hostname)X
259242260(is)X
259252341(available,)X
259262714(the)X
259272844(suggested)X
259283213(form)X
259293401(is)X
259303482(``)X
259310 f
259323540(:)X
259332 f
259343593(pathname''.)X
259351 f
25936642 2184(8.)N
25937796(A)X
259380 f
25939915(DW_AT_producer)X
259401 f
259411713(attribute)X
259422064(whose)X
259432344(value)X
259442591(is)X
259452706(a)X
259462801(null-terminated)X
259473402(string)X
259483659(containing)X
25949796 2288(information)N
259501240(about)X
259511462(the)X
259521596(compiler)X
259531936(that)X
259542095(produced)X
259552448(the)X
259562582(compilation)X
259573031(unit.)X
259583239(The)X
259593402(actual)X
259603639(contents)X
259613959(of)X
25962796 2392(the)N
25963927(string)X
259641151(will)X
259651312(be)X
259661418(speci\256c)X
259671710(to)X
259681802(each)X
259691987(producer,)X
259702345(but)X
259712482(should)X
259722741(begin)X
259732961(with)X
259743142(the)X
259753274(name)X
259763489(of)X
259773586(the)X
259783718(compiler)X
25979796 2496(vendor)N
259801063(or)X
259811159(some)X
259821368(other)X
259831572(identifying)X
259841983(character)X
259852328(sequence)X
259862673(that)X
259872828(should)X
259883085(avoid)X
259893303(confusion)X
259903672(with)X
259913851(other)X
25992796 2600(producer)N
259931130(values.)X
25994642 2756(9.)N
25995796(A)X
259960 f
25997890 0.1969(DW_AT_identifier_case)AX
259981 f
259992034(attribute)X
260002360(whose)X
260012616(constant)X
260022942(value)X
260033165(is)X
260043256(a)X
260053327(code)X
260063525(describing)X
260073924(the)X
26008796 2860(treatment)N
260091167(of)X
260101277(identi\256ers)X
260111667(within)X
260121930(this)X
260132095(compilation)X
260142555(unit.)X
260152774(The)X
260162948(set)X
260173083(of)X
260183193(identi\256er)X
260193549(case)X
260203737(codes)X
260213973(is)X
26022796 2964(given)N
260231014(in)X
260241105(Figure)X
260251357(8.)X
2602610 f
260271677 3032(i)N
260281699(iiiiiiiiiiiiiiiiiiiiiiiiiiii)X
260290 f
260301721 3136 0.1974(DW_ID_case_sensitive)AN
260311721 3240(DW_ID_up_case)N
260321721 3344(DW_ID_down_case)N
260331721 3448 0.1964(DW_ID_case_insensitive)AN
260341 f
2603510 f
260361677 3464(i)N
260371699(iiiiiiiiiiiiiiiiiiiiiiiiiiii)X
260381677(c)X
260393384(c)Y
260403296(c)Y
260413208(c)Y
260423120(c)Y
260432931 3464(c)N
260443384(c)Y
260453296(c)Y
260463208(c)Y
260473120(c)Y
260483 f
260491754 3568(Figure)N
260502026(8.)X
260511 f
260522136(Identi\256er)X
260532481(case)X
260542654(codes)X
260550 f
26056796 3724 0.1974(DW_ID_case_sensitive)AN
260571 f
260581885(is)X
260591973(the)X
260602110(default)X
260612384(for)X
260622515(all)X
260632633(compilation)X
260643085(units)X
260653286(that)X
260663448(do)X
260673565(not)X
260683708(have)X
260693904(this)X
26070796 3828(attribute.)N
260711183(It)X
260721285(indicates)X
260731647(that)X
260741828(names)X
260752100(given)X
260762343(as)X
260772463(the)X
260782618(values)X
260792890(of)X
260800 f
260813010(DW_AT_name)X
260821 f
260833587(attributes)X
260843963(in)X
26085796 3932(debugging)N
260861195(information)X
260871639(entries)X
260881901(for)X
260892030(the)X
260902166(compilation)X
260912617(unit)X
260922783(re\257ect)X
260933031(the)X
260943167(names)X
260953420(as)X
260963521(they)X
260973701(appear)X
260983963(in)X
26099796 4036(the)N
26100928(source)X
261011181(program.)X
261021547(The)X
261031708(debugger)X
261042059(should)X
261052318(be)X
261062425(sensitive)X
261072758(to)X
261082851(the)X
261092982(case)X
261103156(of)X
261113252(identi\256er)X
261123594(names)X
261133842(when)X
26114796 4140(doing)N
261151019(identi\256er)X
261161360(lookups.)X
261170 f
26118796 4296(DW_ID_up_case)N
261191 f
261201541(means)X
261211823(that)X
261222013(the)X
261232178(producer)X
261242547(of)X
261252677(the)X
261262842(debugging)X
261273271(information)X
261283745(for)X
261293904(this)X
26130796 4400(compilation)N
261311265(unit)X
261321449(converted)X
261331841(all)X
261341975(source)X
261352249(names)X
261362519(to)X
261372633(upper)X
261382878(case.)X
261393118(The)X
261403300(values)X
261413570(of)X
261423688(the)X
261433841(name)X
26144796 4504(attributes)N
261451154(may)X
261461335(not)X
261471478(re\257ect)X
261481728(the)X
261491866(names)X
261502121(as)X
261512224(they)X
261522406(appear)X
261532670(in)X
261542769(the)X
261552907(source)X
261563166(program.)X
261573538(The)X
261583705(debugger)X
26159796 4608(should)N
261601053(convert)X
261611339(all)X
261621450(names)X
261631697(to)X
261641788(upper)X
261652010(case)X
261662183(when)X
261672395(doing)X
261682618(lookups.)X
261690 f
26170796 4764(DW_ID_down_case)N
261711 f
261721637(means)X
261731908(that)X
261742087(the)X
261752241(producer)X
261762599(of)X
261772718(the)X
261782872(debugging)X
261793291(information)X
261803755(for)X
261813904(this)X
26182796 4868(compilation)N
261831265(unit)X
261841449(converted)X
261851841(all)X
261861975(source)X
261872249(names)X
261882519(to)X
261892633(lower)X
261902878(case.)X
261913118(The)X
261923300(values)X
261933570(of)X
261943688(the)X
261953841(name)X
26196796 4972(attributes)N
261971154(may)X
261981335(not)X
261991478(re\257ect)X
262001728(the)X
262011866(names)X
262022121(as)X
262032224(they)X
262042406(appear)X
262052670(in)X
262062769(the)X
262072907(source)X
262083166(program.)X
262093538(The)X
262103705(debugger)X
26211796 5076(should)N
262121053(convert)X
262131339(all)X
262141450(names)X
262151697(to)X
262161788(lower)X
262172010(case)X
262182183(when)X
262192395(doing)X
262202618(lookups.)X
262210 f
26222796 5232 0.1964(DW_ID_case_insensitive)AN
262231 f
262241997(means)X
262252257(that)X
262262425(the)X
262272568(values)X
262282828(of)X
262292936(the)X
262303079(name)X
262313305(attributes)X
262323669(re\257ect)X
262333924(the)X
26234796 5336(names)N
262351053(as)X
262361158(they)X
262371342(appear)X
262381608(in)X
262391709(the)X
262401849(source)X
262412109(program)X
262422438(but)X
262432582(that)X
262442746(a)X
262452816(case)X
262462998(insensitive)X
262473407(lookup)X
262483683(should)X
262493949(be)X
26250796 5440(used)N
26251979(to)X
262521070(access)X
262531316(those)X
262541524(names.)X
26255598 5596(10.)N
26256796(A)X
262570 f
26258889(DW_AT_base_types)X
262591 f
262601768(attribute)X
262612094(whose)X
262622349(value)X
262632571(is)X
262642661(a)X
262652731(reference.)X
262663132(This)X
262673320(attribute)X
262683646(points)X
262693893(to)X
262703993(a)X
26271796 5700(debugging)N
262721209(information)X
262731667(entry)X
262741889(representing)X
262752364(another)X
262762668(compilation)X
262773131(unit.)X
262783353(It)X
262793447(may)X
262803639(be)X
262813762(used)X
262823963(to)X
26283796 5804(specify)N
262841077(the)X
262851212(compilation)X
262861662(unit)X
262871827(containing)X
262882227(the)X
262892362(base)X
262902545(type)X
262912724(entries)X
262922986(used)X
262933174(by)X
262943289(entries)X
262953551(in)X
262963647(the)X
262973783(current)X
2629810 s
26299576 5951(Revision:)N
26300902(2.0.0)X
263012176(Page)X
263022352(24)X
263033599(July)X
263043752(27,)X
263053872(1993)X
263061943 6055(Industry)N
263072230(Review)X
263082495(Draft)X
26309
2631025 p
26311%%Page: 25 27
263120(Courier)xf 0 f
2631310 s 0 xH 0 xS 0 f
2631411 s
263151 f
2631610 s
263173075 520(Programming)N
263183535(Languages)X
263193903(SIG)X
2632011 s
26321796 832(compilation)N
263221241(unit)X
263231401(\(see)X
263241564(section)X
263251836(5.1\).)X
263262 f
26327796 988(This)N
26328994(attribute)X
263291346(provides)X
263301696(a)X
263311787(consumer)X
263322175(a)X
263332266(way)X
263342455(to)X
263352571(\256nd)X
263362750(the)X
263372905(de\256nition)X
263383286(of)X
263393402(base)X
263403610(types)X
263413838(for)X
263423988(a)X
26343796 1092(compilation)N
263441246(unit)X
263451412(that)X
263461578(does)X
263471767(not)X
263481908(itself)X
263492109(contain)X
263502402(such)X
263512591(de\256nitions.)X
263523031(This)X
263533210(allows)X
263543468(a)X
263553539(consumer,)X
263563929(for)X
26357796 1196(example,)N
263581133(to)X
263591224(interpret)X
263601555(a)X
263611621(type)X
263621790(conversion)X
263632198(to)X
263642289(a)X
263652355(base)X
263662538(type)X
263672707(correctly.)X
263681 f
26369576 1352(A)N
26370680(compilation)X
263711144(unit)X
263721323(entry)X
263731545(owns)X
263741771(debugging)X
263752184(information)X
263762642(entries)X
263772918(that)X
263783092(represent)X
263793456(the)X
263803606(declarations)X
26381576 1456(made)N
26382789(in)X
26383880(the)X
263841010(corresponding)X
263851535(compilation)X
263861980(unit.)X
263873 f
2638812 s
26389576 1612(3.2)N
26390744(Module)X
263911083(Entries)X
263922 f
2639311 s
26394576 1768(Several)N
26395862(languages)X
263961246(have)X
263971434(the)X
263981564(concept)X
263991860(of)X
264001951(a)X
264012017(``module.'')X
264021 f
26403576 1924(A)N
26404679(module)X
26405984(is)X
264061083(represented)X
264071528(by)X
264081656(a)X
264091735(debugging)X
264102147(information)X
264112604(entry)X
264122825(with)X
264133023(the)X
264143172(tag)X
264150 f
264163321(DW_TAG_module)X
264171 f
264184010(.)X
26419576 2028(Module)N
26420877(entries)X
264211139(may)X
264221318(own)X
264231496(other)X
264241704(debugging)X
264252103(information)X
264262547(entries)X
264272809(describing)X
264283202(program)X
264293526(entities)X
264303808(whose)X
26431576 2132(declaration)N
26432990(scopes)X
264331246(end)X
264341395(at)X
264351481(the)X
264361611(end)X
264371760(of)X
264381855(the)X
264391985(module)X
264402272(itself.)X
26441576 2288(If)N
26442659(the)X
26443793(module)X
264441084(has)X
264451227(a)X
264461292(name,)X
264471531(the)X
264481665(module)X
264491956(entry)X
264502163(has)X
264512306(a)X
264520 f
264532371(DW_AT_name)X
264541 f
264552927(attribute)X
264563248(whose)X
264573498(value)X
264583715(is)X
264593800(a)X
264603865(null-)X
26461576 2392(terminated)N
26462976(string)X
264631199(containing)X
264641594(the)X
264651724(module)X
264662011(name)X
264672224(as)X
264682319(it)X
264692391(appears)X
264702681(in)X
264712772(the)X
264722902(source)X
264733153(program.)X
26474576 2548(If)N
26475671(the)X
26476816(module)X
264771118(contains)X
264781450 0.3317(initialization)AX
264791937(code,)X
264802163(the)X
264812309(module)X
264822612(entry)X
264832831(has)X
264842986(a)X
264850 f
264863063(DW_AT_low_pc)X
264871 f
264883737(attribute)X
26489576 2652(whose)N
26490856(value)X
264911102(is)X
264921216(the)X
264931379(relocated)X
264941757(address)X
264952075(of)X
264962203(the)X
264972366(\256rst)X
264982558(machine)X
264992912(instruction)X
265003345(generated)X
265013742(for)X
265023899(that)X
26503576 2756 0.3317(initialization)AN
265041047(code.)X
265051279(It)X
265061355(also)X
265071519(has)X
265081658(a)X
265090 f
265101719(DW_AT_high_pc)X
265111 f
265122431(attribute)X
265132749(whose)X
265142996(value)X
265153210(is)X
265163292(the)X
265173423(relocated)X
265183769(address)X
26519576 2860(of)N
26520671(the)X
26521801(\256rst)X
26522960(location)X
265231267(past)X
265241431(the)X
265251561(last)X
265261706(machine)X
265272027(instruction)X
265282427(generated)X
265292791(for)X
265302915(the)X
265313045 0.3317(initialization)AX
265323516(code.)X
26533576 3016(If)N
26534668(the)X
26535810(module)X
265361110(has)X
265371262(been)X
265381463(assigned)X
265391801(a)X
265401875(priority,)X
265412197(it)X
265422282(may)X
265432469(have)X
265442670(a)X
265450 f
265462744(DW_AT_priority)X
265471 f
265483521(attribute.)X
265493895(The)X
26550576 3120(value)N
26551793(of)X
26552892(this)X
265531045(attribute)X
265541365(is)X
265551449(a)X
265561513(reference)X
265571864(to)X
265581958(another)X
265592247(debugging)X
265602644(information)X
265613086(entry)X
265623292(describing)X
265633684(a)X
265643748(variable)X
26565576 3224(with)N
26566767(a)X
26567840(constant)X
265681168(value.)X
265691437(The)X
265701608(value)X
265711833(of)X
265721940(this)X
265732102(variable)X
265742420(is)X
265752513(the)X
265762655(actual)X
265772900(constant)X
265783228(value)X
265793453(of)X
265803561(the)X
265813704(module's)X
26582576 3328(priority,)N
26583885(represented)X
265841312(as)X
265851407(it)X
265861479(would)X
265871721(be)X
265881826(on)X
265891936(the)X
265902066(target)X
265912289(architecture.)X
265922 f
26593576 3484(A)N
26594701(Modula2)X
265951090(de\256nition)X
265961495(module)X
265971825(may)X
265982042(be)X
265992196(represented)X
266002683(by)X
266012838(a)X
266022954(module)X
266033285(entry)X
266043538(containing)X
266053988(a)X
266060 f
26607576 3588 0.1992(DW_AT_declaration)AN
266082 f
266091499(attribute.)X
266103 f
2661112 s
26612576 3744(3.3)N
26613744(Subroutine)X
266141226(and)X
266151404(Entry)X
266161668(Point)X
266171911(Entries)X
266181 f
2661911 s
26620576 3900(The)N
26621751(following)X
266221132(tags)X
266231312(exist)X
266241518(to)X
266251626(describe)X
266261958(debugging)X
266272369(information)X
266282825(entries)X
266293099(for)X
266303240(subroutines)X
266313685(and)X
266323851(entry)X
26633576 4004(points:)N
266340 f
26635576 4160 0.1992(DW_TAG_subprogram)AN
266361 f
266371896(A)X
266381981(global)X
266392224(or)X
266402319(\256le)X
266412454(static)X
266422663(subroutine)X
266433057(or)X
266443152(function.)X
266450 f
26646576 4316 0.1953(DW_TAG_inlined_subroutine)AN
266471 f
266481923(A)X
266492008(particular)X
266502368(inlined)X
266512636(instance)X
266522947(of)X
266533042(a)X
266543103(subroutine)X
266553497(or)X
266563592(function.)X
266570 f
26658576 4472 0.1985(DW_TAG_entry_point)AN
266591 f
266601896(A)X
266611981(Fortran)X
266622262(entry)X
266632465(point.)X
266643 f
26665576 4628(3.3.1)N
26666796(General)X
266671122(Subroutine)X
266681565(and)X
266691729(Entry)X
266701971(Point)X
266712194(Information)X
266721 f
26673576 4784(The)N
26674760(subroutine)X
266751179(or)X
266761299(entry)X
266771528(point)X
266781758(entry)X
266791987(has)X
266802152(a)X
266810 f
266822239(DW_AT_name)X
266831 f
266842817(attribute)X
266853160(whose)X
266863432(value)X
266873671(is)X
266883778(a)X
266893865(null-)X
26690576 4888(terminated)N
26691997(string)X
266921241(containing)X
266931657(the)X
266941808(subroutine)X
266952223(or)X
266962339(entry)X
266972563(point)X
266982788(name)X
266993022(as)X
267003138(it)X
267013231(appears)X
267023542(in)X
267033653(the)X
267043803(source)X
26705576 4992(program.)N
26706576 5148(If)N
26707671(the)X
26708816(name)X
267091044(of)X
267101154(the)X
267111299(subroutine)X
267121708(described)X
267132082(by)X
267142207(an)X
267152328(entry)X
267162547(with)X
267172742(the)X
267182888(tag)X
267190 f
267203034 0.1992(DW_TAG_subprogram)AX
267211 f
267223973(is)X
26723576 5252(visible)N
26724839(outside)X
267251121(of)X
267261221(its)X
267271332(containing)X
267281732(compilation)X
267292182(unit,)X
267302369(that)X
267312529(entry)X
267322737(has)X
267332881(a)X
267340 f
267352947(DW_AT_external)X
267361 f
267373715(attribute,)X
26738576 5356(whose)N
26739822(value)X
267401035(is)X
267411116(a)X
267421177(\257ag.)X
267432 f
26744576 5512(Additional)N
26745988(attributes)X
267461365(for)X
267471506(functions)X
267481868(that)X
267492044(are)X
267502199(members)X
267512553(of)X
267522660(a)X
267532742(class)X
267542956(or)X
267553072(structure)X
267563428(are)X
267573583(described)X
267583963(in)X
26759576 5616(section)N
26760848(5.5.5.)X
267611 f
2676210 s
26763576 5951(Revision:)N
26764902(2.0.0)X
267652176(Page)X
267662352(25)X
267673599(July)X
267683752(27,)X
267693872(1993)X
267701943 6055(Industry)N
267712230(Review)X
267722495(Draft)X
26773
2677426 p
26775%%Page: 26 28
267760(Courier)xf 0 f
2677710 s 0 xH 0 xS 0 f
2677811 s
267791 f
2678010 s
26781576 520(DWARF)N
26782885(Debugging)X
267831261(Information)X
267841664(Format)X
267852 f
2678611 s
26787576 832(A)N
26788655(common)X
26789977(debugger)X
267901334(feature)X
267911609(is)X
267921693(to)X
267931787(allow)X
267942009(the)X
267952142(debugger)X
267962499(user)X
267972675(to)X
267982769(call)X
267992927(a)X
268002997(subroutine)X
268013400(within)X
268023648(the)X
268033782(subject)X
26804576 936(program.)N
26805969(In)X
268061084(certain)X
268071376(cases,)X
268081630(however,)X
268091992(the)X
268102141(generated)X
268112534(code)X
268122741(for)X
268132885(a)X
268142970(subroutine)X
268153388(will)X
268163563(not)X
268173717(obey)X
268183924(the)X
26819576 1040(standard)N
26820924(calling)X
268211205(conventions)X
268221661(for)X
268231799(the)X
268241942(target)X
268252188(architecture)X
268262654(and)X
268272821(will)X
268282990(therefore)X
268293348(not)X
268303497(be)X
268313616(safe)X
268323794(to)X
268333899(call)X
26834576 1144(from)N
26835764(within)X
268361008(a)X
268371074(debugger.)X
268381 f
26839576 1300(A)N
26840665(subroutine)X
268411063(entry)X
268421270(may)X
268431448(contain)X
268441734(a)X
268450 f
268461799 0.1957(DW_AT_calling_convention)AX
268471 f
268483097(attribute,)X
268493440(whose)X
268503690(value)X
268513907(is)X
268523993(a)X
26853576 1404(constant.)N
26854945(If)X
268551034(this)X
268561193(attribute)X
268571519(is)X
268581609(not)X
268591753(present,)X
268602060(or)X
268612164(its)X
268622279(value)X
268632501(is)X
268642591(the)X
268652730(constant)X
268660 f
268673054(DW_CC_normal)X
268681 f
268693690(,)X
268703742(then)X
268713924(the)X
26872576 1508(subroutine)N
26873985(may)X
268741174(be)X
268751294(safely)X
268761541(called)X
268771789(by)X
268781914(obeying)X
268792235(the)X
268802380(``standard'')X
268812831(calling)X
268823110(conventions)X
268833574(of)X
268843685(the)X
268853831(target)X
26886576 1612(architecture.)N
268871060(If)X
268881142(the)X
268891274(value)X
268901489(of)X
268911585(the)X
268921716(calling)X
268931980(convention)X
268942395(attribute)X
268952713(is)X
268962795(the)X
268972926(constant)X
268980 f
268993243(DW_CC_nocall)X
269001 f
269013879(,)X
269023924(the)X
26903576 1716(subroutine)N
26904971(does)X
269051155(not)X
269061291(obey)X
269071485(standard)X
269081807(calling)X
269092072(conventions,)X
269102544(and)X
269112695(it)X
269122769(may)X
269132945(not)X
269143082(be)X
269153189(safe)X
269163354(for)X
269173480(the)X
269183612(debugger)X
269193963(to)X
26920576 1820(call)N
26921726(this)X
26922876(subroutine.)X
26923576 1976(If)N
26924685(the)X
26925844(semantics)X
269261243(of)X
269271367(the)X
269281526(language)X
269291895(of)X
269302019(the)X
269312178(compilation)X
269322652(unit)X
269332842(containing)X
269343267(the)X
269353427(subroutine)X
269363851(entry)X
26937576 2080(distinguishes)N
269381093(between)X
269391442(ordinary)X
269401796(subroutines)X
269412258(and)X
269422440(subroutines)X
269432901(that)X
269443089(can)X
269453266(serve)X
269463506(as)X
269473634(the)X
269483797(``main)X
26949576 2184(program,'')N
26950998(that)X
269511175(is,)X
269521300(subroutines)X
269531750(that)X
269541928(cannot)X
269552208(be)X
269562336(called)X
269572592(directly)X
269582907(following)X
269593295(the)X
269603448(ordinary)X
269613791(calling)X
26962576 2288(conventions,)N
269631063(then)X
269641254(the)X
269651401(debugging)X
269661812(information)X
269672268(entry)X
269682488(for)X
269692629(such)X
269702829(a)X
269712907(subroutine)X
269723318(may)X
269733509(have)X
269743714(a)X
269753791(calling)X
26976576 2392(convention)N
26977990(attribute)X
269781307(whose)X
269791553(value)X
269801766(is)X
269811847(the)X
269821977(constant)X
269830 f
269842293(DW_CC_program)X
269851 f
269862982(.)X
269872 f
26988576 2548(The)N
269890 f
26990736(DW_CC_program)X
269912 f
269921453(value)X
269931672(is)X
269941759(intended)X
269952092(to)X
269962190(support)X
269972488(Fortran)X
269982796(main)X
269993001(programs.)X
270003415(It)X
270013498(is)X
270023586(not)X
270033728(intended)X
27004576 2652(as)N
27005676(a)X
27006742(way)X
27007906(of)X
27008997(\256nding)X
270091264(the)X
270101394(entry)X
270111597(address)X
270121892(for)X
270132017(the)X
270142147(program.)X
270153 f
27016576 2808(3.3.2)N
27017796(Subroutine)X
270181239(and)X
270191403(Entry)X
270201645(Point)X
270211868(Return)X
270222158(Types)X
270231 f
27024576 2964(If)N
27025661(the)X
27026796(subroutine)X
270271195(or)X
270281295(entry)X
270291503(point)X
270301712(is)X
270311798(a)X
270321864(function)X
270332185(that)X
270342345(returns)X
270352616(a)X
270362682(value,)X
270372923(then)X
270383103(its)X
270393215(debugging)X
270403615(information)X
27041576 3068(entry)N
27042779(has)X
27043918(a)X
270440 f
27045979(DW_AT_type)X
270461 f
270471531(attribute)X
270481848(to)X
270491939(denote)X
270502196(the)X
270512326(type)X
270522500(returned)X
270532815(by)X
270542925(that)X
270553080(function.)X
270562 f
27057576 3224(Debugging)N
27058993(information)X
270591436(entries)X
270601702(for)X
270611831(C)X
270620 f
270631916(void)X
270642 f
270652154(functions)X
270662505(should)X
270672767(not)X
270682907(have)X
270693100(an)X
270703215(attribute)X
270713547(for)X
270723677(the)X
270733812(return)X
27074576 3328(type.)N
27075576 3484(In)N
27076675(ANSI-C)X
27077975(there)X
270781182(is)X
270791267(a)X
270801338(difference)X
270811718(between)X
270822034(the)X
270832169(types)X
270842377(of)X
270852473(functions)X
270862824(declared)X
270873159(using)X
270883377(function)X
270893694(prototype)X
27090576 3588(style)N
27091760(declarations)X
270921223(and)X
270931377(those)X
270941585(declared)X
270951915(using)X
270962128(non-prototype)X
270972649(declarations.)X
270981 f
27099576 3744(A)N
27100705(subroutine)X
271011143(entry)X
271021390(declared)X
271031754(with)X
271041977(a)X
271052082(function)X
271062443(prototype)X
271072848(style)X
271083082(declaration)X
271093541(may)X
271103760(have)X
271113993(a)X
271120 f
27113576 3848(DW_AT_prototyped)N
271141 f
271151446(attribute,)X
271161785(whose)X
271172031(value)X
271182244(is)X
271192325(a)X
271202386(\257ag.)X
271213 f
27122576 4004(3.3.3)N
27123796(Subroutine)X
271241239(and)X
271251403(Entry)X
271261645(Point)X
271271868(Locations)X
271281 f
27129576 4160(A)N
27130667(subroutine)X
271311067(entry)X
271321277(has)X
271331423(a)X
271340 f
271351491(DW_AT_low_pc)X
271361 f
271372156(attribute)X
271382480(whose)X
271392733(value)X
271402953(is)X
271413041(the)X
271423178(relocated)X
271433530(address)X
271443822(of)X
271453924(the)X
27146576 4264(\256rst)N
27147742(machine)X
271481070(instruction)X
271491476(generated)X
271501846(for)X
271511976(the)X
271522112(subroutine.)X
271532556(It)X
271542638(also)X
271552808(has)X
271562953(a)X
271570 f
271583020(DW_AT_high_pc)X
271591 f
271603737(attribute)X
27161576 4368(whose)N
27162845(value)X
271631081(is)X
271641185(the)X
271651338(relocated)X
271661706(address)X
271672014(of)X
271682132(the)X
271692285(\256rst)X
271702467(location)X
271712798(past)X
271722986(the)X
271733140(last)X
271743309(machine)X
271753654(instruction)X
27176576 4472(generated)N
27177940(for)X
271781064(the)X
271791194(subroutine.)X
271802 f
27181576 4628(Note)N
27182766(that)X
27183927(for)X
271841053(the)X
271851184(low)X
271861335(and)X
271871490(high)X
271881670(pc)X
271891777(attributes)X
271902140(to)X
271912233(have)X
271922423(meaning,)X
271932772(DWARF)X
271943094(makes)X
271953337(the)X
271963469(assumption)X
271973894(that)X
27198576 4732(the)N
27199706(code)X
27200894(for)X
272011019(a)X
272021085(single)X
272031318(subroutine)X
272041717(is)X
272051798(allocated)X
272062149(in)X
272072240(a)X
272082306(single)X
272092539(contiguous)X
272102948(block)X
272113161(of)X
272123252(memory.)X
272131 f
27214576 4888(An)N
27215710(entry)X
27216918(point)X
272171127(has)X
272181271(a)X
272190 f
272201337(DW_AT_low_pc)X
272211 f
272222000(attribute)X
272232322(whose)X
272242574(value)X
272252793(is)X
272262880(the)X
272273016(relocated)X
272283367(address)X
272293658(of)X
272303759(the)X
272313895(\256rst)X
27232576 4992(machine)N
27233897(instruction)X
272341297(generated)X
272351661(for)X
272361785(the)X
272371915(entry)X
272382118(point.)X
27239576 5148(Subroutines)N
272401022(and)X
272411174(entry)X
272421380(points)X
272431621(may)X
272441798(also)X
272451965(have)X
272460 f
272472157(DW_AT_segment)X
272481 f
272492872(and)X
272500 f
272513025 0.1979(DW_AT_address_class)AX
272521 f
27253576 5252(attributes,)N
27254950(as)X
272551046(appropriate,)X
272561492(to)X
272571584(specify)X
272581861(which)X
272592099(segments)X
272602450(the)X
272612581(code)X
272622770(for)X
272632894(the)X
272643024(subroutine)X
272653418(resides)X
272663684(in)X
272673775(and)X
272683924(the)X
27269576 5356(addressing)N
27270974(mode)X
272711192(to)X
272721283(be)X
272731388(used)X
272741571(in)X
272751662(calling)X
272761925(that)X
272772080(subroutine.)X
27278576 5512(A)N
27279661(subroutine)X
272801055(entry)X
272811258(representing)X
272821715(a)X
272831776(subroutine)X
272842170(declaration)X
272852584(that)X
272862739(is)X
272872821(not)X
272882957(also)X
272893122(a)X
272903184(de\256nition)X
272913546(does)X
272923730(not)X
272933866(have)X
27294576 5616(low)N
27295730(and)X
27296879(high)X
272971058(pc)X
272981163(attributes.)X
2729910 s
27300576 5951(Revision:)N
27301902(2.0.0)X
273022176(Page)X
273032352(26)X
273043599(July)X
273053752(27,)X
273063872(1993)X
273071943 6055(Industry)N
273082230(Review)X
273092495(Draft)X
27310
2731127 p
27312%%Page: 27 29
273130(Courier)xf 0 f
2731410 s 0 xH 0 xS 0 f
2731511 s
273161 f
2731710 s
273183075 520(Programming)N
273193535(Languages)X
273203903(SIG)X
273213 f
2732211 s
27323576 832(3.3.4)N
27324796(Declarations)X
273251292(Owned)X
273261583(by)X
273271698(Subroutines)X
273282175(and)X
273292339(Entry)X
273302581(Points)X
273311 f
27332576 988(The)N
27333769(declarations)X
273341251(enclosed)X
273351615(by)X
273361759(a)X
273371854(subroutine)X
273382282(or)X
273392412(entry)X
273402650(point)X
273412889(are)X
273423053(represented)X
273433515(by)X
273443660(debugging)X
27345576 1092(information)N
273461015(entries)X
273471272(that)X
273481427(are)X
273491556(owned)X
273501812(by)X
273511922(the)X
273522052(subroutine)X
273532446(or)X
273542541(entry)X
273552744(point)X
273562948(entry.)X
273573195(Entries)X
273583467(representing)X
273593924(the)X
27360576 1196(formal)N
27361836(parameters)X
273621247(of)X
273631345(the)X
273641478(subroutine)X
273651875(or)X
273661974(entry)X
273672181(point)X
273682389(appear)X
273692649(in)X
273702744(the)X
273712878(same)X
273723085(order)X
273733296(as)X
273743395(the)X
273753529(corresponding)X
27376576 1300(declarations)N
273771024(in)X
273781115(the)X
273791245(source)X
273801496(program.)X
273812 f
27382576 1456(There)N
27383811(is)X
27384900(no)X
273851018(ordering)X
273861356(requirement)X
273871816(on)X
273881934(entries)X
273892204(for)X
273902337(declarations)X
273912808(that)X
273922976(are)X
273933123(children)X
273943447(of)X
273953546(subroutine)X
273963954(or)X
27397576 1560(entry)N
27398790(point)X
273991004(entries)X
274001276(but)X
274011421(that)X
274021591(do)X
274031711(not)X
274041856(represent)X
274052220(formal)X
274062487(parameters.)X
274072963(The)X
274083127(formal)X
274093394(parameter)X
274103792(entries)X
27411576 1664(may)N
27412744(be)X
27413849(interspersed)X
274141306(with)X
274151481(other)X
274161689(entries)X
274171951(used)X
274182134(by)X
274192239(formal)X
274202496(parameter)X
274212884(entries,)X
274223168(such)X
274233351(as)X
274243451(type)X
274253620(entries.)X
274261 f
27427576 1820(The)N
27428768(unspeci\256ed)X
274291224(parameters)X
274301665(of)X
274311793(a)X
274321887(variable)X
274332226(parameter)X
274342633(list)X
274352797(are)X
274362960(represented)X
274373421(by)X
274383565(a)X
274393660(debugging)X
27440576 1924(information)N
274411015(entry)X
274421218(with)X
274431397(the)X
274441527(tag)X
274450 f
274461657 0.1942(DW_TAG_unspecified_parameters)AX
274471 f
274483194(.)X
27449576 2080(The)N
27450739(entry)X
27451946(for)X
274521074(a)X
274531139(subroutine)X
274541537(or)X
274551636(entry)X
274561843(point)X
274572051(that)X
274582210(includes)X
274592530(a)X
274602595(Fortran)X
274612880(common)X
274623215(block)X
274633437(has)X
274643581(a)X
274653647(child)X
274663851(entry)X
27467576 2184(with)N
27468813(the)X
274691001(tag)X
274700 f
274711188 0.1960(DW_TAG_common_inclusion)AX
274721 f
274732407(.)X
274742530(The)X
274752746(common)X
274763134(inclusion)X
274773537(entry)X
274783797(has)X
274793993(a)X
274800 f
27481576 2288 0.1964(DW_AT_common_reference)AN
274821 f
274831771(attribute)X
274842095(whose)X
274852348(value)X
274862568(is)X
274872656(a)X
274882724(reference)X
274893080(to)X
274903179(the)X
274913317(debugging)X
274923719(entry)X
274933930(for)X
27494576 2392(the)N
27495706(common)X
274961037(block)X
274971255(being)X
274981473(included)X
274991799(\(see)X
275001962(section)X
275012234(4.2\).)X
275023 f
27503576 2548(3.3.5)N
27504796(Low-Level)X
275051219(Information)X
275061 f
27507576 2704(A)N
27508661(subroutine)X
275091055(or)X
275101150(entry)X
275111353(point)X
275121557(entry)X
275131760(may)X
275141935(have)X
275152124(a)X
275160 f
275172186 0.1992(DW_AT_return_addr)AX
275181 f
275193110(attribute,)X
275203450(whose)X
275213697(value)X
275223911(is)X
275233993(a)X
27524576 2808(location)N
27525907(description.)X
275261389(The)X
275271572(location)X
275281903(calculated)X
275292307(is)X
275302412(the)X
275312566(place)X
275322798(where)X
275333058(the)X
275343212(return)X
275353468(address)X
275363777(for)X
275373924(the)X
27538576 2912(subroutine)N
27539970(or)X
275401065(entry)X
275411268(point)X
275421472(is)X
275431553(stored.)X
27544576 3068(A)N
27545664(subroutine)X
275461061(or)X
275471159(entry)X
275481365(point)X
275491572(entry)X
275501778(may)X
275511955(also)X
275522122(have)X
275532313(a)X
275540 f
275552377(DW_AT_frame_base)X
275561 f
275573250(attribute,)X
275583592(whose)X
275593841(value)X
27560576 3172(is)N
27561657(a)X
27562718(location)X
275631025(description)X
275641439(that)X
275651594(computes)X
275661954(the)X
275672084(``frame)X
275682369(base'')X
275692605(for)X
275702729(the)X
275712859(subroutine)X
275723253(or)X
275733348(entry)X
275743551(point.)X
275752 f
27576576 3328(The)N
27577737(frame)X
27578971(base)X
275791161(for)X
275801293(a)X
275811366(procedure)X
275821756(is)X
275831845(typically)X
275842180(an)X
275852298(address)X
275862601(\256xed)X
275872797(relative)X
275883097(to)X
275893196(the)X
275903334(\256rst)X
275913501(unit)X
275923669(of)X
275933768(storage)X
27594576 3432(allocated)N
27595934(for)X
275961065(the)X
275971201(procedure's)X
275981653(stack)X
275991862(frame.)X
276002139(The)X
276010 f
276022299(DW_AT_frame_base)X
276032 f
276043175(attribute)X
276053508(can)X
276063663(be)X
276073774(used)X
276083963(in)X
27609576 3536(several)N
27610852(ways:)X
27611642 3692(1.)N
27612796(In)X
27613892(procedures)X
276141311(that)X
276151473(need)X
276161663(location)X
276171977(lists)X
276182144(to)X
276192237(locate)X
276202477(local)X
276212678(variables,)X
276223052(the)X
276230 f
276243184(DW_AT_frame_base)X
276252 f
27626796 3796(can)N
27627949(hold)X
276281132(the)X
276291266(needed)X
276301541(location)X
276311857(list,)X
276322014(while)X
276332232(all)X
276342352(variables')X
276352735(location)X
276363051(descriptions)X
276373508(can)X
276383660(be)X
276393768(simpler)X
27640796 3900(location)N
276411108(expressions)X
276421540(involving)X
276431891(the)X
276442021(frame)X
276452248(base.)X
27646642 4056(2.)N
27647796(It)X
27648890(can)X
276491057(be)X
276501180(used)X
276511381(as)X
276521499(a)X
276531584(key)X
276541742(in)X
276551852(resolving)X
276562221("up-level")X
276572620(addressing)X
276583047(with)X
276593241(nested)X
276603507(routines.)X
276613881(\(See)X
276620 f
27663796 4160 0.1992(DW_AT_static_link)AN
276642 f
276651697(,)X
276661741(below\))X
27667576 4316(Some)N
27668799(languages)X
276691194(support)X
276701496(nested)X
276711754(subroutines.)X
276722242(In)X
276732348(such)X
276742542(languages,)X
276752959(it)X
276763042(is)X
276773134(possible)X
276783456(to)X
276793558(reference)X
276803924(the)X
27681576 4420(local)N
27682846(variables)X
276831267(of)X
276841429(an)X
276851610(outer)X
276861888(subroutine)X
276872357(from)X
276882615(within)X
276892929(an)X
276903109(inner)X
276913387(subroutine.)X
276923900(The)X
276930 f
27694576 4524 0.1992(DW_AT_static_link)AN
276952 f
276961502(and)X
276970 f
276981660(DW_AT_frame_base)X
276992 f
277002534(attributes)X
277012899(allow)X
277023122(debuggers)X
277033514(to)X
277043609(support)X
277053904(this)X
27706576 4628(same)N
27707778(kind)X
27708952(of)X
277091043(referencing.)X
277101 f
27711576 4784(If)N
27712662(a)X
27713729(subroutine)X
277141129(or)X
277151230(entry)X
277161439(point)X
277171649(is)X
277181736(nested,)X
277192011(it)X
277202089(may)X
277212269(have)X
277222464(a)X
277230 f
277242532 0.1992(DW_AT_static_link)AX
277251 f
277263462(attribute,)X
277273808(whose)X
27728576 4888(value)N
27729808(is)X
27730908(a)X
27731988(location)X
277321314(description)X
277331747(that)X
277341921(computes)X
277352300(the)X
277362449(frame)X
277372695(base)X
277382892(of)X
277393006(the)X
277403155(relevant)X
277413480(instance)X
277423810(of)X
277433924(the)X
27744576 4992(subroutine)N
27745970(that)X
277461125 0.3187(immediately)AX
277471590(encloses)X
277481910(the)X
277492040(subroutine)X
277502434(or)X
277512529(entry)X
277522732(point.)X
27753576 5148(In)N
27754696(the)X
27755851(context)X
277561158(of)X
277571278(supporting)X
277581702(nested)X
277591974(subroutines,)X
277602449(the)X
277610 f
277622604(DW_AT_frame_base)X
277631 f
277643499(attribute)X
277653841(value)X
27766576 5252(should)N
27767833(obey)X
277681026(the)X
277691156(following)X
277701521(constraints:)X
27771642 5408(1.)N
27772796(It)X
27773872(should)X
277741129(compute)X
277751455(a)X
277761516(value)X
277771729(that)X
277781884(does)X
277792067(not)X
277802202(change)X
277812473(during)X
277822725(the)X
277832855(life)X
277842995(of)X
277853090(the)X
277863220(procedure,)X
277873615(and)X
27788642 5564(2.)N
27789796(The)X
27790975(computed)X
277911365(value)X
277921598(should)X
277931875(be)X
277942000(unique)X
277952282(among)X
277962565(instances)X
277972931(of)X
277983047(the)X
277993198(same)X
278003422(subroutine.)X
278013881(\(For)X
27802796 5668(typical)N
278030 f
278041071(DW_AT_frame_base)X
278051 f
278061953(use,)X
278072126(this)X
278082288(means)X
278092547(that)X
278102714(a)X
278112787(recursive)X
278123143(subroutine's)X
278133612(stack)X
278143827(frame)X
27815796 5772(must)N
27816990(have)X
278171178(non-zero)X
278181512(size.\))X
2781910 s
27820576 5951(Revision:)N
27821902(2.0.0)X
278222176(Page)X
278232352(27)X
278243599(July)X
278253752(27,)X
278263872(1993)X
278271943 6055(Industry)N
278282230(Review)X
278292495(Draft)X
27830
2783128 p
27832%%Page: 28 30
278330(Courier)xf 0 f
2783410 s 0 xH 0 xS 0 f
2783511 s
278361 f
2783710 s
27838576 520(DWARF)N
27839885(Debugging)X
278401261(Information)X
278411664(Format)X
278422 f
2784311 s
27844576 832(If)N
27845665(a)X
27846744(debugger)X
278471111(is)X
278481205(attempting)X
278491618(to)X
278501722(resolve)X
278512011(an)X
278522135(up-level)X
278532455(reference)X
278542823(to)X
278552928(a)X
278563008(variable,)X
278573360(it)X
278583446(uses)X
278593633(the)X
278603777(nesting)X
27861576 936(structure)N
27862969(of)X
278631112(DWARF)X
278641484(to)X
278651627(determine)X
278662053(which)X
278672338(subroutine)X
278682789(is)X
278692922(the)X
278703104(lexical)X
278713414(parent)X
278723718(and)X
278733924(the)X
278740 f
27875576 1040 0.1992(DW_AT_static_link)AN
278762 f
278771500(value)X
278781714(to)X
278791806(identify)X
278802095(the)X
278812226(appropriate)X
278822670(active)X
278832904(frame)X
278843132(of)X
278853224(the)X
278863355(parent.)X
278873652(It)X
278883729(can)X
278893880(then)X
27890576 1144(attempt)N
27891863(to)X
27892954(\256nd)X
278931108(the)X
278941238(reference)X
278951592(within)X
278961836(the)X
278971966(context)X
278982243(of)X
278992334(the)X
279002464(parent.)X
279013 f
27902576 1300(3.3.6)N
27903796(Types)X
279041043(Thrown)X
279051368(by)X
279061483(Exceptions)X
279072 f
27908576 1456(In)N
27909687(C++)X
27910902(a)X
27911985(subroutine)X
279121401(may)X
279131586(declare)X
279141889(a)X
279151972(set)X
279162109(of)X
279172217(types)X
279182437(for)X
279192579(which)X
279202829(that)X
279213006(subroutine)X
279223422(may)X
279233607(generate)X
279243954(or)X
27925576 1560(``throw'')N
27926920(an)X
279271030(exception.)X
279281 f
27929576 1716(If)N
27930656(a)X
27931717(subroutine)X
279321111(explicitly)X
279331468(declares)X
279341778(that)X
279351933(it)X
279362006(may)X
279372181(throw)X
279382409(an)X
279392515(exception)X
279402881(for)X
279413006(one)X
279423156(or)X
279433252(more)X
279443456(types,)X
279453687(each)X
279463871(such)X
27947576 1820(type)N
27948764(is)X
27949859(represented)X
279501300(by)X
279511424(a)X
279521499(debugging)X
279531907(information)X
279542360(entry)X
279552577(with)X
279562770(the)X
279572913(tag)X
279580 f
279593056 0.1985(DW_TAG_thrown_type)AX
279601 f
279614010(.)X
27962576 1924(Each)N
27963779(such)X
27964967(entry)X
279651175(is)X
279661261(a)X
279671327(child)X
279681531(of)X
279691631(the)X
279701766(entry)X
279711974(representing)X
279722436(the)X
279732571(subroutine)X
279742970(that)X
279753130(may)X
279763309(throw)X
279773541(this)X
279783696(type.)X
279793919(All)X
27980576 2028(thrown)N
27981850(type)X
279821027(entries)X
279831286(should)X
279841545(follow)X
279851799(all)X
279861912(entries)X
279872171(representing)X
279882630(the)X
279892762(formal)X
279903021(parameters)X
279913431(of)X
279923528(the)X
279933660(subroutine)X
27994576 2132(and)N
27995752(precede)X
279961074(all)X
279971212(entries)X
279981496(representing)X
279991980(the)X
280002137(local)X
280012358(variables)X
280022725(or)X
280032847(lexical)X
280043132(blocks)X
280053412(contained)X
280063805(in)X
280073924(the)X
28008576 2236(subroutine.)N
280091042(Each)X
280101267(thrown)X
280111565(type)X
280121766(entry)X
280131996(contains)X
280142339(a)X
280150 f
280162427(DW_AT_type)X
280171 f
280183006(attribute,)X
280193372(whose)X
280203645(value)X
280213885(is)X
280223993(a)X
28023576 2340(reference)N
28024924(to)X
280251015(an)X
280261120(entry)X
280271323(describing)X
280281712(the)X
280291842(type)X
280302016(of)X
280312111(the)X
280322241(exception)X
280332606(that)X
280342761(may)X
280352935(be)X
280363040(thrown.)X
280373 f
28038576 2496(3.3.7)N
28039796(Function)X
280401156(Template)X
280411535(Instantiations)X
280422 f
28043576 2652(In)N
28044681(C++)X
28045890(a)X
28046966(function)X
280471288(template)X
280481624(is)X
280491715(a)X
280501791(generic)X
280512087(de\256nition)X
280522453(of)X
280532554(a)X
280542631(function)X
280552954(that)X
280563125(is)X
280573217(instantiated)X
280583668(differently)X
28059576 2756(when)N
28060801(called)X
280611056(with)X
280621248(values)X
280631512(of)X
280641620(different)X
280651959(types.)X
280662223(DWARF)X
280672560(does)X
280682759(not)X
280692910(represent)X
280703280(the)X
280713426(generic)X
280723728(template)X
28073576 2860(de\256nition,)N
28074954(but)X
280751089(does)X
280761272(represent)X
280771626(each)X
280781814 0.2404(instantiation.)AX
280791 f
28080576 3016(A)N
28081698(template)X
280821062(instantiation)X
280831559(is)X
280841677(represented)X
280852142(by)X
280862290(a)X
280872389(debugging)X
280882821(information)X
280893298(entry)X
280903539(with)X
280913756(the)X
280923924(tag)X
280930 f
28094576 3120 0.1992(DW_TAG_subprogram)AN
280951 f
280961477(.)X
280971550(With)X
280981756(three)X
280991961(exceptions,)X
281002389(such)X
281012579(an)X
281022691(entry)X
281032901(will)X
281043068(contain)X
281053357(the)X
281063494(same)X
281073703(attributes)X
28108576 3224(and)N
28109736(have)X
28110935(the)X
281111076(same)X
281121290(types)X
281131509(of)X
281141616(child)X
281151827(entries)X
281162096(as)X
281172203(would)X
281182457(an)X
281192574(entry)X
281202789(for)X
281212925(a)X
281222998(subroutine)X
281233404(de\256ned)X
281243697(explicitly)X
28125576 3328(using)N
28126789(the)X
28127919(instantiation)X
281281379(types.)X
281291631(The)X
281301790(exceptions)X
281312189(are:)X
28132642 3484(1.)N
28133796(Each)X
281341027(formal)X
281351317(parameterized)X
281361871(type)X
281372078(declaration)X
281382525(appearing)X
281392928(in)X
281403053(the)X
281413217(template)X
281423578(de\256nition)X
281433973(is)X
28144796 3588(represented)N
281451372(by)X
281461630(a)X
281471839(debugging)X
281482381(information)X
281492968(entry)X
281503319(with)X
281513646(the)X
281523924(tag)X
281530 f
28154796 3692 0.1940(DW_TAG_template_type_parameter)AN
281551 f
281562386(.)X
281572496(Each)X
281582738(such)X
281592965(entry)X
281603212(has)X
281613396(a)X
281620 f
281633502(DW_AT_name)X
281641 f
28165796 3796(attribute,)N
281661146(whose)X
281671403(value)X
281681627(is)X
281691719(a)X
281701790(null-terminated)X
281712367(string)X
281722600(containing)X
281733005(the)X
281743145(name)X
281753368(of)X
281763473(the)X
281773613(formal)X
281783880(type)X
28179796 3900(parameter)N
281801173(as)X
281811271(it)X
281821346(appears)X
281831639(in)X
281841733(the)X
281851867(source)X
281862122(program.)X
281872490(The)X
281882653(template)X
281892984(type)X
281903162(parameter)X
281913540(entry)X
281923747(also)X
281933915(has)X
28194796 4004(a)N
281950 f
28196868(DW_AT_type)X
281971 f
281981431(attribute)X
281991759(describing)X
282002159(the)X
282012300(actual)X
282022544(type)X
282032729(by)X
282042850(which)X
282053098(the)X
282063239(formal)X
282073507(is)X
282083599(replaced)X
282093930(for)X
28210796 4108(this)N
28211963(instantiation.)X
282121484(All)X
282131636(template)X
282141980(type)X
282152171(parameter)X
282162562(entries)X
282172836(should)X
282183111(appear)X
282193385(before)X
282203649(the)X
282213797(entries)X
28222796 4212(describing)N
282231185(the)X
282241315(instantiated)X
282251745(formal)X
282262002(parameters)X
282272410(to)X
282282501(the)X
282292631(function.)X
28230642 4368(2.)N
28231796(If)X
28232882(the)X
282331018(compiler)X
282341361(has)X
282351507(generated)X
282361878(a)X
282371946(special)X
282382220(compilation)X
282392672(unit)X
282402839(to)X
282412937(hold)X
282423123(the)X
282433260(template)X
282443594(instantiation)X
28245796 4472(and)N
28246958(that)X
282471126(compilation)X
282481583(unit)X
282491755(has)X
282501906(a)X
282511979(different)X
282522316(name)X
282532541(from)X
282542746(the)X
282552888(compilation)X
282563345(unit)X
282573517(containing)X
282583924(the)X
28259796 4576(template)N
282601165(de\256nition,)X
282611590(the)X
282621762(name)X
282632017(attribute)X
282642376(for)X
282652543(the)X
282662716(debugging)X
282673153(entry)X
282683399(representing)X
282693899(that)X
28270796 4680(compilation)N
282711241(unit)X
282721401(should)X
282731658(be)X
282741763(empty)X
282752006(or)X
282762101(omitted.)X
28277642 4836(3.)N
28278796(If)X
28279885(the)X
282801024(subprogram)X
282811476(entry)X
282821689(representing)X
282832156(the)X
282842296(template)X
282852633(instantiation)X
282863103(or)X
282873208(any)X
282883367(of)X
282893472(its)X
282903588(child)X
282913797(entries)X
28292796 4940(contain)N
282931084(declaration)X
282941504(coordinate)X
282951904(attributes,)X
282962283(those)X
282972497(attributes)X
282982854(should)X
282993116(refer)X
283003308(to)X
283013404(the)X
283023539(source)X
283033795(for)X
283043924(the)X
28305796 5044(template)N
283061149(de\256nition,)X
283071558(not)X
283081720(to)X
283091838(any)X
283102014(source)X
283112292(generated)X
283122683(arti\256cially)X
283133096(by)X
283143233(the)X
283153390(compiler)X
283163753(for)X
283173904(this)X
28318796 5148(instantiation.)N
283193 f
28320576 5304(3.3.8)N
28321796(Inline)X
283221039(Subroutines)X
283231 f
28324576 5460(A)N
28325662(declaration)X
283261077(or)X
283271173(a)X
283281235(de\256nition)X
283291598(of)X
283301695(an)X
283311802(inlinable)X
283322136(subroutine)X
283332532(is)X
283342615(represented)X
283353044(by)X
283363156(a)X
283373219(debugging)X
283383615(information)X
28339576 5564(entry)N
28340781(with)X
28341962(the)X
283421093(tag)X
283430 f
283441224 0.1992(DW_TAG_subprogram)AX
283451 f
283462125(.)X
283472192(The)X
283482352(entry)X
283492556(for)X
283502681(a)X
283512743(subroutine)X
283523138(that)X
283533294(is)X
283543376(explicitly)X
283553734(declared)X
28356576 5668(to)N
28357671(be)X
28358781(available)X
283591127(for)X
283601256(inline)X
283611485(expansion)X
283621869(or)X
283631969(that)X
283642129(was)X
283652292(expanded)X
283662656(inline)X
283672885 0.4306(implicitly)AX
283683258(by)X
283693373(the)X
283703508(compiler)X
283713849(has)X
283723993(a)X
283730 f
28374576 5772(DW_AT_inline)N
283751 f
283761235(attribute)X
283771553(whose)X
283781800(value)X
283792014(is)X
283802096(a)X
283812158(constant.)X
283822519(The)X
283832679(set)X
283842800(of)X
283852895(values)X
283863142(for)X
283873266(the)X
283880 f
283893396(DW_AT_inline)X
283901 f
2839110 s
28392576 5951(Revision:)N
28393902(2.0.0)X
283942176(Page)X
283952352(28)X
283963599(July)X
283973752(27,)X
283983872(1993)X
283991943 6055(Industry)N
284002230(Review)X
284012495(Draft)X
28402
2840329 p
28404%%Page: 29 31
284050(Courier)xf 0 f
2840610 s 0 xH 0 xS 0 f
2840711 s
284081 f
2840910 s
284103075 520(Programming)N
284113535(Languages)X
284123903(SIG)X
2841311 s
2841410 f
28415649 744(i)N
28416659(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
284171 f
28418693 848(Name)N
284192256(Meaning)X
2842010 f
28421649 864(i)N
28422659(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
284230 f
28424693 968 0.1985(DW_INL_not_inlined)AN
284251 f
284262256(Not)X
284272410(declared)X
284282730(inline)X
284292954(nor)X
284303093(inlined)X
284313361(by)X
284323471(the)X
284333601(compiler)X
284340 f
28435693 1072(DW_INL_inlined)N
284361 f
284372256(Not)X
284382410(declared)X
284392730(inline)X
284402954(but)X
284413089(inlined)X
284423357(by)X
284433467(the)X
284443597(compiler)X
284450 f
28446693 1176 0.1947(DW_INL_declared_not_inlined)AN
284471 f
284482256(Declared)X
284492595(inline)X
284502819(but)X
284512954(not)X
284523089(inlined)X
284533357(by)X
284543467(the)X
284553597(compiler)X
284560 f
28457693 1280 0.1960(DW_INL_declared_inlined)AN
284581 f
284592256(Declared)X
284602595(inline)X
284612819(and)X
284622968(inlined)X
284633236(by)X
284643346(the)X
284653476(compiler)X
2846610 f
28467649 1296(i)N
28468659(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
28469649(c)X
284701272(c)Y
284711184(c)Y
284721096(c)Y
284731008(c)Y
28474920(c)Y
28475832(c)Y
284763959 1296(c)N
284771272(c)Y
284781184(c)Y
284791096(c)Y
284801008(c)Y
28481920(c)Y
28482832(c)Y
284833 f
284841899 1400(Figure)N
284852171(9.)X
284861 f
284872281(Inline)X
284882509(codes)X
28489576 1556(attribute)N
28490893(is)X
28491974(given)X
284921192(in)X
284931283(Figure)X
284941535(9.)X
284953 f
2849610 s
28497576 1712(3.3.8.1)N
28498836(Abstract)X
284991155(Instances)X
285001 f
2850111 s
28502576 1868(For)N
28503738(the)X
28504886(remainder)X
285051283(of)X
285061396(this)X
285071564(discussion,)X
285081993(any)X
285092160(debugging)X
285102573(information)X
285113031(entry)X
285123253(that)X
285133427(is)X
285143527(owned)X
285153802(\(either)X
28516576 1972(directly)N
28517890(or)X
285181007(indirectly\))X
285191419(by)X
285201551(a)X
285211633(debugging)X
285222048(information)X
285232508(entry)X
285242732(that)X
285252908(contains)X
285263245(the)X
285270 f
285283396(DW_AT_inline)X
285291 f
28530576 2076(attribute)N
28531895(will)X
285321057(be)X
285331164(referred)X
285341465(to)X
285351558(as)X
285361655(an)X
285371762(``abstract)X
285382118(instance)X
285392431(entry.'')X
285402738(Any)X
285412913(subroutine)X
285423310(entry)X
285433516(that)X
285443674(contains)X
285453993(a)X
285460 f
28547576 2180(DW_AT_inline)N
285481 f
285491247(attribute)X
285501577(will)X
285511750(be)X
285521868(known)X
285532142(as)X
285542250(an)X
285552367(``abstract)X
285562733(instance)X
285573056(root.'')X
285583334(Any)X
285593519(set)X
285603651(of)X
285613758(abstract)X
28562576 2284(instance)N
28563892(entries)X
285641154(that)X
285651314(are)X
285661448(all)X
285671564(children)X
285681881(\(either)X
285692139(directly)X
285702437(or)X
285712538(indirectly\))X
285722934(of)X
285733035(some)X
285743249(abstract)X
285753551(instance)X
285763868(root,)X
28577576 2388(together)N
28578887(with)X
285791066(the)X
285801196(root)X
285811360(itself,)X
285821581(will)X
285831741(be)X
285841846(known)X
285852107(as)X
285862202(an)X
285872307(``abstract)X
285882661(instance)X
285892972(tree.'')X
28590576 2544(A)N
28591664(debugging)X
285921061(information)X
285931503(entry)X
285941709(that)X
285951867(is)X
285961951(a)X
285972015(member)X
285982329(of)X
285992427(an)X
286002535(abstract)X
286012834(instance)X
286023149(tree)X
286033307(should)X
286043568(not)X
286053707(contain)X
286063993(a)X
286070 f
28608576 2648(DW_AT_high_pc)N
286091 f
286101265(,)X
286110 f
286121421(DW_AT_low_pc)X
286131 f
286142057(,)X
286150 f
286162212(DW_AT_location)X
286171 f
286182954(,)X
286190 f
286203109 0.1992(DW_AT_return_addr)AX
286211 f
286224010(,)X
286230 f
28624576 2752 0.1992(DW_AT_start_scope)AN
286251 f
286261477(,)X
286271521(or)X
286280 f
286291616(DW_AT_segment)X
286301 f
286312327(attribute.)X
286322 f
28633576 2908(It)N
28634652(would)X
28635890(not)X
286361025(make)X
286371233(sense)X
286381446(to)X
286391538(put)X
286401674(these)X
286411878(attributes)X
286422240(into)X
286432401(abstract)X
286442713(instance)X
286453030(entries)X
286463293(since)X
286473497(such)X
286483681(entries)X
286493944(do)X
28650576 3012(not)N
28651711(represent)X
286521065(actual)X
286531308(\(concrete\))X
286541691(instances)X
286552041(and)X
286562195(thus)X
286572364(do)X
286582474(not)X
286592609(actually)X
286602916(exist)X
286613100(at)X
286623191(run-time.)X
286631 f
28664576 3168(The)N
28665743(rules)X
28666944(for)X
286671076(the)X
286681214(relative)X
286691509(location)X
286701824(of)X
286711928(entries)X
286722194(belonging)X
286732578(to)X
286742678(abstract)X
286752983(instance)X
286763303(trees)X
286773500(are)X
286783638(exactly)X
286793924(the)X
28680576 3272(same)N
28681783(as)X
28682882(for)X
286831010(other)X
286841217(similar)X
286851489(types)X
286861701(of)X
286871800(entries)X
286882061(that)X
286892219(are)X
286902351(not)X
286912489(abstract.)X
286922832(Speci\256cally,)X
286933296(the)X
286943429(rule)X
286953591(that)X
286963749(requires)X
28697576 3376(that)N
28698732(an)X
28699839(entry)X
287001044(representing)X
287011503(a)X
287021566(declaration)X
287031982(be)X
287042089(a)X
287052152(direct)X
287062377(child)X
287072578(of)X
287082675(the)X
287092807(entry)X
287103012(representing)X
287113471(the)X
287123603(scope)X
287133827(of)X
287143924(the)X
28715576 3480(declaration)N
28716995(applies)X
287171272(equally)X
287181559(to)X
287191655(both)X
287201839(abstract)X
287212140(and)X
287222294(non-abstract)X
287232756(entries.)X
287243061(Also,)X
287253275(the)X
287263409(ordering)X
287273733(rules)X
287283930(for)X
28729576 3584(formal)N
28730846(parameter)X
287311233(entries,)X
287321525(member)X
287331849(entries,)X
287342141(and)X
287352303(so)X
287362416(on,)X
287372561(all)X
287382685(apply)X
287392916(regardless)X
287403307(of)X
287413416(whether)X
287423735(or)X
287433844(not)X
287443993(a)X
28745576 3688(given)N
28746794(entry)X
28747997(is)X
287481078(abstract.)X
287493 f
2875010 s
28751576 3844(3.3.8.2)N
28752836(Concrete)X
287531169(Inlined)X
287541432(Instances)X
287551 f
2875611 s
28757576 4000(Each)N
28758776(inline)X
287591002(expansion)X
287601383(of)X
287611481(an)X
287621589(inlinable)X
287631924(subroutine)X
287642321(is)X
287652405(represented)X
287662835(by)X
287672948(a)X
287683012(debugging)X
287693409(information)X
287703851(entry)X
28771576 4104(with)N
28772766(the)X
28773907(tag)X
287740 f
287751048 0.1953(DW_TAG_inlined_subroutine)AX
287761 f
287772373(.)X
287782450(Each)X
287792658(such)X
287802851(entry)X
287813064(should)X
287823331(be)X
287833446(a)X
287843517(direct)X
287853750(child)X
287863959(of)X
28787576 4208(the)N
28788706(entry)X
28789909(that)X
287901064(represents)X
287911442(the)X
287921572(scope)X
287931794(within)X
287942042(which)X
287952279(the)X
287962409(inlining)X
287972707(occurs.)X
28798576 4364(Each)N
28799780(inlined)X
288001054(subroutine)X
288011454(entry)X
288021664(contains)X
288031987(a)X
288040 f
288052055(DW_AT_low_pc)X
288061 f
288072720(attribute,)X
288083066(representing)X
288093530(the)X
288103667(address)X
288113959(of)X
28812576 4468(the)N
28813719(\256rst)X
28814891(instruction)X
288151303(associated)X
288161699(with)X
288171890(the)X
288182032(given)X
288192262(inline)X
288202498(expansion.)X
288212955(Each)X
288223165(inlined)X
288233445(subroutine)X
288243851(entry)X
28825576 4572(also)N
28826742(contains)X
288271060(a)X
288280 f
288291123(DW_AT_high_pc)X
288301 f
288311836(attribute,)X
288322177(representing)X
288332636(the)X
288342768(address)X
288353055(of)X
288363152(the)X
288373285(\256rst)X
288383447(location)X
288393757(past)X
288403924(the)X
28841576 4676(last)N
28842721(instruction)X
288431121(associated)X
288441505(with)X
288451684(the)X
288461814(inline)X
288472038(expansion.)X
28848576 4832(For)N
28849738(the)X
28850886(remainder)X
288511283(of)X
288521396(this)X
288531564(discussion,)X
288541993(any)X
288552160(debugging)X
288562573(information)X
288573031(entry)X
288583253(that)X
288593427(is)X
288603527(owned)X
288613802(\(either)X
28862576 4936(directly)N
28863974(or)X
288641175(indirectly\))X
288651671(by)X
288661887(a)X
288672054(debugging)X
288682553(information)X
288693097(entry)X
288703405(with)X
288713689(the)X
288723924(tag)X
288730 f
28874576 5040 0.1953(DW_TAG_inlined_subroutine)AN
288751 f
288761931(will)X
288772099(be)X
288782212(referred)X
288792519(to)X
288802618(as)X
288812721(a)X
288822790(``concrete)X
288833176(inlined)X
288843452(instance)X
288853771(entry.'')X
28886576 5144(Any)N
28887761(entry)X
28888976(that)X
288891143(has)X
288901294(the)X
288911436(tag)X
288920 f
288931578 0.1953(DW_TAG_inlined_subroutine)AX
288941 f
288952937(will)X
288963109(be)X
288973226(known)X
288983498(as)X
288993604(a)X
289003676(``concrete)X
28901576 5248(inlined)N
28902853(instance)X
289031173(root.'')X
289041448(Any)X
289051630(set)X
289061759(of)X
289071863(concrete)X
289082192(inlined)X
289092469(instance)X
289102789(entries)X
289113056(that)X
289123221(are)X
289133360(all)X
289143481(children)X
289153802(\(either)X
28916576 5352(directly)N
28917871(or)X
28918969(indirectly\))X
289191362(of)X
289201460(some)X
289211671(concrete)X
289221994(inlined)X
289232265(instance)X
289242579(root,)X
289252768(together)X
289263082(with)X
289273264(the)X
289283397(root)X
289293564(itself,)X
289303787(will)X
289313949(be)X
28932576 5456(known)N
28933837(as)X
28934932(a)X
28935993(``concrete)X
289361371(inlined)X
289371639(instance)X
289381950(tree.'')X
28939576 5612(Each)N
28940794(concrete)X
289411135(inlined)X
289421424(instance)X
289431756(tree)X
289441931(is)X
289452033(uniquely)X
289462385(associated)X
289472790(with)X
289482990(one)X
289493160(\(and)X
289503359(only)X
289513559(one\))X
289523758(abstract)X
28953576 5716(instance)N
28954887(tree.)X
2895510 s
28956576 5951(Revision:)N
28957902(2.0.0)X
289582176(Page)X
289592352(29)X
289603599(July)X
289613752(27,)X
289623872(1993)X
289631943 6055(Industry)N
289642230(Review)X
289652495(Draft)X
28966
2896730 p
28968%%Page: 30 32
289690(Courier)xf 0 f
2897010 s 0 xH 0 xS 0 f
2897111 s
289721 f
2897310 s
28974576 520(DWARF)N
28975885(Debugging)X
289761261(Information)X
289771664(Format)X
289782 f
2897911 s
28980576 832(Note,)N
28981794(however,)X
289821143(that)X
289831310(the)X
289841447(reverse)X
289851734(is)X
289861822(not)X
289871964(true.)X
289882179(Any)X
289892345(given)X
289902565(abstract)X
289912883(instance)X
289923206(tree)X
289933372(may)X
289943547(be)X
289953660(associated)X
28996576 936(with)N
28997773(several)X
289981071(different)X
289991415(concrete)X
290001762(inlined)X
290012052(instance)X
290022390(trees,)X
290032627(or)X
290042749(may)X
290052939(even)X
290063144(be)X
290073270(associated)X
290083685(with)X
290093881(zero)X
29010576 1040(concrete)N
29011901(inlined)X
290121169(instance)X
290131485(trees.)X
290141 f
29015576 1196(Also,)N
29016787(each)X
29017971(separate)X
290181282(entry)X
290191486(within)X
290201735(a)X
290211797(given)X
290222016(concrete)X
290232337(inlined)X
290242606(instance)X
290252918(tree)X
290263073(is)X
290273156(uniquely)X
290283489(associated)X
290293875(with)X
29030576 1300(one)N
29031729(particular)X
290321093(entry)X
290331300(in)X
290341395(the)X
290351529(associated)X
290361917(abstract)X
290372217(instance)X
290382532(tree.)X
290392734(In)X
290402833(other)X
290413040(words,)X
290423302(there)X
290433503(is)X
290443587(a)X
290453651(one-to-one)X
29046576 1404(mapping)N
29047919(from)X
290481124(entries)X
290491393(in)X
290501496(a)X
290511570(given)X
290521801(concrete)X
290532134(inlined)X
290542415(instance)X
290552739(tree)X
290562906(to)X
290573010(the)X
290583153(entries)X
290593423(in)X
290603527(the)X
290613670(associated)X
29062576 1508(abstract)N
29063872(instance)X
290641183(tree.)X
290652 f
29066576 1664(Note,)N
29067789(however,)X
290681133(that)X
290691296(the)X
290701429(reverse)X
290711712(is)X
290721796(not)X
290731934(true.)X
290742145(A)X
290752224(given)X
290762440(abstract)X
290772754(instance)X
290783073(tree)X
290793235(that)X
290803398(is)X
290813482(associated)X
290823879(with)X
29083576 1768(a)N
29084651(given)X
29085873(concrete)X
290861207(inlined)X
290871484(instance)X
290881809(tree)X
290891977(may)X
290902154(\(and)X
290912346(quite)X
290922554(probably)X
290932903(will\))X
290943097(contain)X
290953393(more)X
290963604(entries)X
290973875(than)X
29098576 1872(the)N
29099706(associated)X
291001100(concrete)X
291011425(inlined)X
291021693(instance)X
291032009(tree)X
291042168(\(see)X
291052331(below\).)X
291061 f
29107576 2028(Concrete)N
29108917(inlined)X
291091186(instance)X
291101498(entries)X
291111756(do)X
291121867(not)X
291132003(have)X
291142192(most)X
291152387(of)X
291162483(the)X
291172614(attributes)X
291182966(\(except)X
291193248(for)X
291200 f
291213374(DW_AT_low_pc)X
291221 f
291234010(,)X
291240 f
29125576 2132(DW_AT_high_pc)N
291261 f
291271265(,)X
291280 f
291291340(DW_AT_location)X
291301 f
291312082(,)X
291320 f
291332156 0.1992(DW_AT_return_addr)AX
291341 f
291353057(,)X
291360 f
291373131 0.1992(DW_AT_start_scope)AX
291381 f
29139576 2236(and)N
291400 f
29141742(DW_AT_segment)X
291421 f
291431431(\))X
291441499(that)X
291451672(such)X
291461873(entries)X
291472148(would)X
291482408(otherwise)X
291492790(normally)X
291503149(have.)X
291513399(In)X
291523512(place)X
291533738(of)X
291543851(these)X
29155576 2340(omitted)N
29156891(attributes,)X
291571286(each)X
291581491(concrete)X
291591832(inlined)X
291602121(instance)X
291612453(entry)X
291622677(has)X
291632837(a)X
291640 f
291652919 0.1969(DW_AT_abstract_origin)AX
291661 f
29167576 2444(attribute)N
29168909(that)X
291691080(may)X
291701270(be)X
291711392(used)X
291721592(to)X
291731700(obtain)X
291741960(the)X
291752107(missing)X
291762421(information)X
291772877(\(indirectly\))X
291783313(from)X
291793523(the)X
291803670(associated)X
29181576 2548(abstract)N
29182878(instance)X
291831195(entry.)X
291841448(The)X
291851613(value)X
291861832(of)X
291871933(the)X
291882069(abstract)X
291892371(origin)X
291902610(attribute)X
291912933(is)X
291923020(a)X
291933086(reference)X
291943439(to)X
291953535(the)X
291963670(associated)X
29197576 2652(abstract)N
29198872(instance)X
291991183(entry.)X
29200576 2808(For)N
29201730(each)X
29202923(pair)X
292031092(of)X
292041197(entries)X
292051465(that)X
292061631(are)X
292071771(associated)X
292082166(via)X
292092307(a)X
292100 f
292112379 0.1969(DW_AT_abstract_origin)AX
292121 f
292133525(attribute,)X
292143875(both)X
29215576 2912(members)N
29216955(of)X
292171084(the)X
292181248(pair)X
292191441(will)X
292201635(have)X
292211857(the)X
292222021(same)X
292232258(tag.)X
292242466(So,)X
292252637(for)X
292262795(example,)X
292273172(an)X
292283311(entry)X
292293548(with)X
292303761(the)X
292313924(tag)X
292320 f
29233576 3016 0.1969(DW_TAG_local_variable)AN
292341 f
292351723(can)X
292361879(only)X
292372070(be)X
292382187(associated)X
292392583(with)X
292402774(another)X
292413072(entry)X
292423287(that)X
292433454(also)X
292443630(has)X
292453781(the)X
292463924(tag)X
292470 f
29248576 3120 0.1964(DW_TAG_local_variable.)AN
292491 f
292501799(The)X
292511971(only)X
292522163(exception)X
292532540(to)X
292542643(this)X
292552805(rule)X
292562976(is)X
292573069(that)X
292583236(the)X
292593378(root)X
292603554(of)X
292613661(a)X
292623734(concrete)X
29263576 3224(instance)N
29264890(tree)X
292651047(\(which)X
292661316(must)X
292671513(always)X
292681782(have)X
292691973(the)X
292702106(tag)X
292710 f
292722239 0.1953(DW_TAG_inlined_subroutine)AX
292731 f
292743564(\))X
292753618(can)X
292763766(only)X
292773949(be)X
29278576 3328(associated)N
29279987(with)X
292801193(the)X
292811350(root)X
292821540(of)X
292831661(its)X
292841793(associated)X
292852203(abstract)X
292862525(instance)X
292872862(tree)X
292883042(\(which)X
292893334(must)X
292903554(have)X
292913768(the)X
292923924(tag)X
292930 f
29294576 3432 0.1992(DW_TAG_subprogram)AN
292951 f
292961477(\).)X
29297576 3588(In)N
29298671(general,)X
29299974(the)X
293001104(structure)X
293011434(and)X
293021583(content)X
293031865(of)X
293041960(any)X
293052109(given)X
293062327(concrete)X
293072648(instance)X
293082960(tree)X
293093115(will)X
293103276(be)X
293113382(directly)X
293123675(analogous)X
29313576 3692(to)N
29314675(the)X
29315812(structure)X
293161149(and)X
293171305(content)X
293181594(of)X
293191696(its)X
293201809(associated)X
293212200(abstract)X
293222503(instance)X
293232821(tree.)X
293243026(There)X
293253260(are)X
293263396(two)X
293273557(exceptions)X
293283963(to)X
29329576 3796(this)N
29330726(general)X
293311007(rule)X
293321166(however.)X
29333642 3952(1.)N
29334796(No)X
29335938(entries)X
293361208(representing)X
293371678(anonymous)X
293382119(types)X
293392340(are)X
293402482(ever)X
293412668(made)X
293422894(a)X
293432968(part)X
293443140(of)X
293453248(any)X
293463410(concrete)X
293473743(instance)X
29348796 4056(inlined)N
293491064(tree.)X
29350642 4212(2.)N
29351796(No)X
29352929(entries)X
293531191(representing)X
293541653(members)X
293552003(of)X
293562103(structure,)X
293572460(union)X
293582688(or)X
293592788(class)X
293602986(types)X
293613199(are)X
293623333(ever)X
293633511(made)X
293643729(a)X
293653795(part)X
293663959(of)X
29367796 4316(any)N
29368945(concrete)X
293691265(inlined)X
293701533(instance)X
293711844(tree.)X
293722 f
29373576 4472(Entries)N
29374856(that)X
293751020(represent)X
293761378(members)X
293771720(and)X
293781878(anonymous)X
293792304(types)X
293802511(are)X
293812654(omitted)X
293822945(from)X
293833137(concrete)X
293843466(inlined)X
293853738(instance)X
29386576 4576(trees)N
29387785(because)X
293881106(they)X
293891291(would)X
293901545(simply)X
293911813(be)X
293921934(redundant)X
293932334(duplicates)X
293942735(of)X
293952842(the)X
293962988(corresponding)X
293973539(entries)X
293983817(in)X
293993924(the)X
29400576 4680(associated)N
29401977(abstract)X
294021295(instance)X
294031618(trees.)X
294041862(If)X
294051945(any)X
294062101(entry)X
294072311(within)X
294082562(a)X
294092635(concrete)X
294102967(inlined)X
294113242(instance)X
294123566(tree)X
294133733(needs)X
294143963(to)X
29415576 4784(refer)N
29416771(to)X
29417864(an)X
29418976(anonymous)X
294191400(type)X
294201571(that)X
294211733(was)X
294221894(declared)X
294232226(within)X
294242472(the)X
294252604(scope)X
294262828(of)X
294272921(the)X
294283052(relevant)X
294293364(inline)X
294303589(function,)X
294313924(the)X
29432576 4888(reference)N
29433930(should)X
294341187(simply)X
294351439(refer)X
294361632(to)X
294371723(the)X
294381853(abstract)X
294392164(instance)X
294402480(entry)X
294412683(for)X
294422808(the)X
294432938(given)X
294443151(anonymous)X
294453573(type.)X
294461 f
29447576 5044(If)N
29448665(an)X
29449779(entry)X
29450992(within)X
294511250(a)X
294521321(concrete)X
294531651(inlined)X
294541929(instance)X
294552250(tree)X
294562414(contains)X
294572740(attributes)X
294583101(describing)X
294593500(the)X
294603640(declaration)X
29461576 5148(coordinates)N
294621017(of)X
294631125(that)X
294641293(entry,)X
294651531(then)X
294661718(those)X
294671939(attributes)X
294682303(should)X
294692573(refer)X
294702773(to)X
294712877(the)X
294723020(\256le,)X
294733190(line)X
294743357(and)X
294753518(column)X
294763817(of)X
294773924(the)X
29478576 5252(original)N
29479873(declaration)X
294801287(of)X
294811382(the)X
294821512(subroutine,)X
294831928(not)X
294842063(to)X
294852154(the)X
294862284(point)X
294872488(at)X
294882574(which)X
294892811(it)X
294902883(was)X
294913041(inlined.)X
294923 f
2949310 s
29494576 5408(3.3.8.3)N
29495836(Out-of-Line)X
294961265(Instances)X
294971605(of)X
294981692(Inline)X
294991911(Subroutines)X
295001 f
2950111 s
29502576 5564(Under)N
29503824(some)X
295041039(conditions,)X
295051458(compilers)X
295061835(may)X
295072016(need)X
295082212(to)X
295092311(generate)X
295102639(concrete)X
295112967(executable)X
295123374(instances)X
295133727(of)X
295143830(inline)X
29515576 5668(subroutines)N
295161006(other)X
295171211(than)X
295181387(at)X
295191475(points)X
295201715(where)X
295211953(those)X
295222163(subroutines)X
295232592(are)X
295242722(actually)X
295253025(called.)X
295263303(For)X
295273448(the)X
295283579(remainder)X
295293959(of)X
29530576 5772(this)N
29531728(discussion,)X
295321141(such)X
295331326(concrete)X
295341648(instances)X
295351995(of)X
295362092(inline)X
295372318(subroutines)X
295382748(will)X
295392910(be)X
295403017(referred)X
295413318(to)X
295423411(as)X
295433509(``concrete)X
295443890(out-)X
2954510 s
29546576 5951(Revision:)N
29547902(2.0.0)X
295482176(Page)X
295492352(30)X
295503599(July)X
295513752(27,)X
295523872(1993)X
295531943 6055(Industry)N
295542230(Review)X
295552495(Draft)X
29556
2955731 p
29558%%Page: 31 33
295590(Courier)xf 0 f
2956010 s 0 xH 0 xS 0 f
2956111 s
295621 f
2956310 s
295643075 520(Programming)N
295653535(Languages)X
295663903(SIG)X
2956711 s
29568576 832(of-line)N
29569833(instances.'')X
295702 f
29571576 988(In)N
29572678(C++,)X
29573906(for)X
295741038(example,)X
295751383(taking)X
295761634(the)X
295771772(address)X
295782075(of)X
295792174(a)X
295802248(function)X
295812568(declared)X
295822906(to)X
295833005(be)X
295843118(inline)X
295853350(can)X
295863507(necessitate)X
295873924(the)X
29588576 1092(generation)N
29589980(of)X
295901071(a)X
295911137(concrete)X
295921462(out-of-line)X
295931857(instance)X
295942173(of)X
295952264(the)X
295962394(given)X
295972607(function.)X
295981 f
29599576 1248(The)N
29600766(DWARF)X
296011136(representation)X
296021688(of)X
296031814(a)X
296041906(concrete)X
296052257(out-of-line)X
296062687(instance)X
296073029(of)X
296083155(an)X
296093291(inline)X
296103547(subroutine)X
296113973(is)X
29612576 1352(essentially)N
29613986(the)X
296141131(same)X
296151349(as)X
296161459(for)X
296171598(a)X
296181674(concrete)X
296192009(inlined)X
296202292(instance)X
296212618(of)X
296222728(that)X
296232898(subroutine)X
296243307(\(as)X
296253446(described)X
296263819(in)X
296273924(the)X
29628576 1456(preceding)N
29629964(section\).)X
296301328(The)X
296311506(representation)X
296322046(of)X
296332160(such)X
296342362(a)X
296352443(concrete)X
296362783(out-of-line)X
296373202(instance)X
296383533(makes)X
296393800(use)X
296403959(of)X
296410 f
29642576 1560 0.1969(DW_AT_abstract_origin)AN
296431 f
296441714(attributes)X
296452068(in)X
296462162(exactly)X
296472442(the)X
296482575(same)X
296492781(way)X
296502952(as)X
296513050(they)X
296523227(are)X
296533359(used)X
296543545(for)X
296553671(a)X
296563734(concrete)X
29657576 1664(inlined)N
29658861(instance)X
296591189(\(that)X
296601390(is,)X
296611510(as)X
296621622(references)X
296632021(to)X
296642129(corresponding)X
296652671(entries)X
296662945(within)X
296673210(the)X
296683357(associated)X
296693758(abstract)X
29670576 1768(instance)N
29671902(tree\))X
296721100(and,)X
296731286(as)X
296741396(for)X
296751535(concrete)X
296761870(instance)X
296772196(trees,)X
296782421(the)X
296792566(entries)X
296802838(for)X
296812977(anonymous)X
296823420(types)X
296833642(and)X
296843805(for)X
296853943(all)X
29686576 1872(members)N
29687921(are)X
296881050(omitted.)X
29689576 2028(The)N
29690738(differences)X
296911153(between)X
296921471(the)X
296931604(DWARF)X
296941946(representation)X
296952470(of)X
296962568(a)X
296972632(concrete)X
296982955(out-of-line)X
296993357(instance)X
297003672(of)X
297013771(a)X
297023836(given)X
29703576 2132(subroutine)N
29704982(and)X
297051143(the)X
297061285(representation)X
297071818(of)X
297081924(a)X
297091996(concrete)X
297102327(inlined)X
297112606(instance)X
297122928(of)X
297133034(that)X
297143200(same)X
297153414(subroutine)X
297163819(are)X
297173959(as)X
29718576 2236(follows:)N
29719642 2392(1.)N
29720796(The)X
29721958(root)X
297221125(entry)X
297231331(for)X
297241458(a)X
297251522(concrete)X
297261845(out-of-line)X
297272247(instance)X
297282562(of)X
297292661(a)X
297302726(given)X
297312948(inline)X
297323176(subroutine)X
297333574(has)X
297343717(the)X
297353851(same)X
29736796 2496(tag)N
29737930(as)X
297381029(does)X
297391216(its)X
297401326(associated)X
297411714(\(abstract\))X
297422072(inline)X
297432300(subroutine)X
297442698(entry)X
297452905(\(that)X
297463093(is,)X
297473200(it)X
297483276(does)X
297493462(not)X
297503600(have)X
297513791(the)X
297523924(tag)X
297530 f
29754796 2600 0.1953(DW_TAG_inlined_subroutine)AN
297551 f
297562121(\).)X
29757642 2756(2.)N
29758796(The)X
29759956(root)X
297601121(entry)X
297611325(for)X
297621450(a)X
297631512(concrete)X
297641834(out-of-line)X
297652235(instance)X
297662548(tree)X
297672704(is)X
297682787(always)X
297693055(directly)X
297703349(owned)X
297713607(by)X
297723719(the)X
297733851(same)X
29774796 2860(parent)N
297751038(entry)X
297761241(that)X
297771396(also)X
297781560(owns)X
297791767(the)X
297801897(root)X
297812061(entry)X
297822264(of)X
297832359(the)X
297842489(associated)X
297852873(abstract)X
297863169(instance.)X
297873 f
2978812 s
29789576 3016(3.4)N
29790744(Lexical)X
297911068(Block)X
297921327(Entries)X
297932 f
2979411 s
29795576 3172(A)N
29796664(lexical)X
29797934(block)X
297981159(is)X
297991252(a)X
298001330(bracketed)X
298011711(sequence)X
298022067(of)X
298032170(source)X
298042438(statements)X
298052844(that)X
298063017(may)X
298073198(contain)X
298083498(any)X
298093660(number)X
298103963(of)X
29811576 3276(declarations.)N
298121091(In)X
298131194(some)X
298141404(languages)X
298151796(\(C)X
298161914(and)X
298172076(C++\))X
298182311(blocks)X
298192565(can)X
298202721(be)X
298212833(nested)X
298223087(within)X
298233338(other)X
298243553(blocks)X
298253807(to)X
298263905(any)X
29827576 3380(depth.)N
298281 f
29829576 3536(A)N
29830724(lexical)X
298311045(block)X
298321326(is)X
298331470(represented)X
298341960(by)X
298352134(a)X
298362259(debugging)X
298372717(information)X
298383220(entry)X
298393487(with)X
298403730(the)X
298413924(tag)X
298420 f
29843576 3640 0.1974(DW_TAG_lexical_block)AN
298441 f
298451636(.)X
29846576 3796(The)N
29847740(lexical)X
298481003(block)X
298491226(entry)X
298501434(has)X
298511578(a)X
298520 f
298531644(DW_AT_low_pc)X
298541 f
298552307(attribute)X
298562629(whose)X
298572880(value)X
298583098(is)X
298593184(the)X
298603319(relocated)X
298613669(address)X
298623959(of)X
29863576 3900(the)N
29864715(\256rst)X
29865883(machine)X
298661213(instruction)X
298671622(generated)X
298681995(for)X
298692128(the)X
298702267(lexical)X
298712534(block.)X
298722804(The)X
298732971(lexical)X
298743237(block)X
298753463(entry)X
298763674(also)X
298773846(has)X
298783993(a)X
298790 f
29880576 4004(DW_AT_high_pc)N
298811 f
298821288(attribute)X
298831606(whose)X
298841853(value)X
298852067(is)X
298862149(the)X
298872280(relocated)X
298882626(address)X
298892912(of)X
298903009(the)X
298913141(\256rst)X
298923302(location)X
298933611(past)X
298943777(the)X
298953909(last)X
29896576 4108(machine)N
29897897(instruction)X
298981297(generated)X
298991661(for)X
299001785(the)X
299011915(lexical)X
299022173(block.)X
29903576 4264(If)N
29904670(a)X
29905746(name)X
29906974(has)X
299071128(been)X
299081331(given)X
299091564(to)X
299101670(the)X
299111815(lexical)X
299122088(block)X
299132321(in)X
299142427(the)X
299152572(source)X
299162838(program,)X
299173195(then)X
299183384(the)X
299193529(corresponding)X
29920576 4368(lexical)N
29921863(block)X
299221110(entry)X
299231342(has)X
299241509(a)X
299250 f
299261598(DW_AT_name)X
299271 f
299282178(attribute)X
299292523(whose)X
299302797(value)X
299313038(is)X
299323147(a)X
299333236(null-terminated)X
299343831(string)X
29935576 4472(containing)N
29936971(the)X
299371101(name)X
299381314(of)X
299391409(the)X
299401539(lexical)X
299411797(block)X
299422015(as)X
299432110(it)X
299442182(appears)X
299452472(in)X
299462563(the)X
299472693(source)X
299482944(program.)X
299492 f
29950576 4628(This)N
29951750(is)X
29952831(not)X
29953966(the)X
299541096(same)X
299551298(as)X
299561398(a)X
299571464(C)X
299581545(or)X
299591645(C++)X
299601844(label)X
299612043(\(see)X
299622206(below\).)X
299631 f
29964576 4784(The)N
29965738(lexical)X
299661000(block)X
299671222(entry)X
299681429(owns)X
299691640(debugging)X
299702038(information)X
299712481(entries)X
299722742(that)X
299732901(describe)X
299743220(the)X
299753354(declarations)X
299763806(within)X
29977576 4888(that)N
29978732(lexical)X
29979991(block.)X
299801254(There)X
299811482(is)X
299821564(one)X
299831714(such)X
299841898(debugging)X
299852293(information)X
299862733(entry)X
299872937(for)X
299883062(each)X
299893246(local)X
299903440(declaration)X
299913854(of)X
299923949(an)X
29993576 4992(identi\256er)N
29994917(or)X
299951012(inner)X
299961215(lexical)X
299971473(block.)X
299983 f
2999912 s
30000576 5148(3.5)N
30001744(Label)X
300021003(Entries)X
300032 f
3000411 s
30005576 5304(A)N
30006660(label)X
30007867(is)X
30008956(a)X
300091030(way)X
300101202(of)X
300111301(identifying)X
300121710(a)X
300131784(source)X
300142048(statement.)X
300152461(A)X
300162546(labeled)X
300172837(statement)X
300183206(is)X
300193296(usually)X
300203582(the)X
300213721(target)X
300223963(of)X
30023576 5408(one)N
30024725(or)X
30025825(more)X
300261027(``go)X
300271195(to'')X
300281344(statements.)X
300291 f
30030576 5564(A)N
30031675(label)X
30032883(is)X
30033978(represented)X
300341419(by)X
300351543(a)X
300361618(debugging)X
300372026(information)X
300382479(entry)X
300392696(with)X
300402889(the)X
300413033(tag)X
300420 f
300433178(DW_TAG_label)X
300441 f
300453814(.)X
300463895(The)X
30047576 5668(entry)N
30048793(for)X
30049931(a)X
300501006(label)X
300511214(should)X
300521485(be)X
300531604(owned)X
300541874(by)X
300551998(the)X
300562142(debugging)X
300572550(information)X
300583003(entry)X
300593219(representing)X
300603689(the)X
300613832(scope)X
30062576 5772(within)N
30063824(which)X
300641061(the)X
300651191(name)X
300661404(of)X
300671499(the)X
300681629(label)X
300691823(could)X
300702041(be)X
300712146(legally)X
300722409(referenced)X
300732801(within)X
300743049(the)X
300753179(source)X
300763430(program.)X
3007710 s
30078576 5951(Revision:)N
30079902(2.0.0)X
300802176(Page)X
300812352(31)X
300823599(July)X
300833752(27,)X
300843872(1993)X
300851943 6055(Industry)N
300862230(Review)X
300872495(Draft)X
30088
3008932 p
30090%%Page: 32 34
300910(Courier)xf 0 f
3009210 s 0 xH 0 xS 0 f
3009311 s
300941 f
3009510 s
30096576 520(DWARF)N
30097885(Debugging)X
300981261(Information)X
300991664(Format)X
3010011 s
30101576 832(The)N
30102739(label)X
30103937(entry)X
301041144(has)X
301051287(a)X
301060 f
301071352(DW_AT_low_pc)X
301081 f
301092014(attribute)X
301102335(whose)X
301112585(value)X
301122802(is)X
301132887(the)X
301143021(relocated)X
301153370(address)X
301163660(of)X
301173760(the)X
301183895(\256rst)X
30119576 936(machine)N
30120911(instruction)X
301211325(generated)X
301221703(for)X
301231841(the)X
301241985(statement)X
301252359(identi\256ed)X
301262728(by)X
301272851(the)X
301282994(label)X
301293201(in)X
301303305(the)X
301313448(source)X
301323712(program.)X
30133576 1040(The)N
30134757(label)X
30135974(entry)X
301361200(also)X
301371387(has)X
301381549(a)X
301390 f
301401633(DW_AT_name)X
301411 f
301422208(attribute)X
301432548(whose)X
301442817(value)X
301453053(is)X
301463157(a)X
301473241(null-terminated)X
301483831(string)X
30149576 1144(containing)N
30150971(the)X
301511101(name)X
301521314(of)X
301531409(the)X
301541539(label)X
301551733(as)X
301561828(it)X
301571900(appears)X
301582190(in)X
301592281(the)X
301602411(source)X
301612662(program.)X
301623 f
3016312 s
30164576 1300(3.6)N
30165744(With)X
30166976(Statement)X
301671416(Entries)X
301682 f
3016911 s
30170576 1456(Both)N
30171766(Pascal)X
301721029(and)X
301731184(Modula)X
301741481(support)X
301751773(the)X
301761904(concept)X
301772201(of)X
301782294(a)X
301792362(``with'')X
301802655(statement.)X
301813039(The)X
301823195(with)X
301833372(statement)X
301843734(speci\256es)X
30185576 1560(a)N
30186669(sequence)X
301871040(of)X
301881158(executable)X
301891583(statements)X
301902003(within)X
301912273(which)X
301922532(the)X
301932688(\256elds)X
301942922(of)X
301953039(a)X
301963131(record)X
301973413(variable)X
301983755(may)X
301993949(be)X
30200576 1664(referenced,)N
30201996(unquali\256ed)X
302021415(by)X
302031520(the)X
302041650(name)X
302051862(of)X
302061953(the)X
302072083(record)X
302082339(variable.)X
302091 f
30210576 1820(A)N
30211719(with)X
30212956(statement)X
302131375(is)X
302141514(represented)X
302151999(by)X
302162167(a)X
302172286(debugging)X
302182738(information)X
302193235(entry)X
302203497(with)X
302213735(the)X
302223924(tag)X
302230 f
30224576 1924(DW_TAG_with_stmt)N
302251 f
302261424(.)X
302271492(A)X
302281579(with)X
302291760(statement)X
302302123(entry)X
302312328(has)X
302322469(a)X
302330 f
302342532(DW_AT_low_pc)X
302351 f
302363192(attribute)X
302373511(whose)X
302383759(value)X
302393973(is)X
30240576 2028(the)N
30241706(relocated)X
302421051(address)X
302431336(of)X
302441431(the)X
302451561(\256rst)X
302461721(machine)X
302472043(instruction)X
302482444(generated)X
302492809(for)X
302502934(the)X
302513065(body)X
302523264(of)X
302533360(the)X
302543491(with)X
302553671(statement.)X
30256576 2132(A)N
30257680(with)X
30258878(statement)X
302591258(entry)X
302601480(also)X
302611663(has)X
302621821(a)X
302630 f
302641901(DW_AT_high_pc)X
302651 f
302662631(attribute)X
302672967(whose)X
302683231(value)X
302693462(is)X
302703561(the)X
302713709(relocated)X
30272576 2236(address)N
30273879(of)X
30274992(the)X
302751140(\256rst)X
302761318(location)X
302771644(after)X
302781846(the)X
302791995(last)X
302802159(machine)X
302812499(instruction)X
302822918(generated)X
302833301(for)X
302843444(the)X
302853593(body)X
302863810(of)X
302873924(the)X
30288576 2340(statement.)N
30289576 2496(The)N
30290738(with)X
30291920(statement)X
302921284(entry)X
302931490(has)X
302941632(a)X
302950 f
302961696(DW_AT_type)X
302971 f
302982252(attribute,)X
302992595(denoting)X
303002930(the)X
303013064(type)X
303023242(of)X
303033341(record)X
303043591(whose)X
303053841(\256elds)X
30306576 2600(may)N
30307768(be)X
30308891(referenced)X
303091301(without)X
303101611(full)X
303111774(quali\256cation)X
303122255(within)X
303132520(the)X
303142667(body)X
303152882(of)X
303162994(the)X
303173141(statement.)X
303183563(It)X
303193656(also)X
303203837(has)X
303213993(a)X
303220 f
30323576 2704(DW_AT_location)N
303241 f
303251361(attribute,)X
303261721(describing)X
303272131(how)X
303282326(to)X
303292439(\256nd)X
303302620(the)X
303312772(base)X
303322972(address)X
303333279(of)X
303343396(the)X
303353548(record)X
303363816(object)X
30337576 2808(referenced)N
30338968(within)X
303391216(the)X
303401346(body)X
303411544(of)X
303421639(the)X
303431769(with)X
303441948(statement.)X
303453 f
3034612 s
30347576 2964(3.7)N
30348744(Try)X
30349923(and)X
303501101(Catch)X
303511370(Block)X
303521629(Entries)X
303532 f
3035411 s
30355576 3120(In)N
30356680(C++)X
30357888(a)X
30358963(lexical)X
303591230(block)X
303601452(may)X
303611630(be)X
303621745(designated)X
303632159(as)X
303642269(a)X
303652345(``catch)X
303662626(block.'')X
303672951(A)X
303683037(catch)X
303693260(block)X
303703483(is)X
303713574(an)X
303723694(exception)X
30373576 3224(handler)N
30374874(that)X
303751036(handles)X
303761334(exceptions)X
303771730(thrown)X
303782004(by)X
303792111(an)X
303802223(immediately)X
303812678(preceding)X
303823054(``try)X
303833234(block.'')X
303843550(A)X
303853627(catch)X
303863841(block)X
30387576 3328(designates)N
30388970(the)X
303891100(type)X
303901269(of)X
303911360(the)X
303921490(exception)X
303931850(that)X
303942010(it)X
303952082(can)X
303962231(handle.)X
303971 f
30398576 3484(A)N
30399661(try)X
30400781(block)X
30401999(is)X
304021080(represented)X
304031508(by)X
304041619(a)X
304051681(debugging)X
304062076(information)X
304072516(entry)X
304082720(with)X
304092900(the)X
304103031(tag)X
304110 f
304123162(DW_TAG_try_block)X
304131 f
304144010(.)X
30415576 3588(A)N
30416729(catch)X
304171005(block)X
304181291(is)X
304191440(represented)X
304201935(by)X
304212113(a)X
304222242(debugging)X
304232704(information)X
304243211(entry)X
304253481(with)X
304263727(the)X
304273924(tag)X
304280 f
30429576 3692 0.1985(DW_TAG_catch_block)AN
304301 f
304311530(.)X
304321630(Both)X
304331858(try)X
304342012(and)X
304352195(catch)X
304362438(block)X
304372691(entries)X
304382983(contain)X
304393300(a)X
304400 f
304413396(DW_AT_low_pc)X
304421 f
30443576 3796(attribute)N
30444902(whose)X
304451156(value)X
304461377(is)X
304471466(the)X
304481604(relocated)X
304491957(address)X
304502250(of)X
304512353(the)X
304522491(\256rst)X
304532658(machine)X
304542987(instruction)X
304553395(generated)X
304563767(for)X
304573899(that)X
30458576 3900(block.)N
30459852(These)X
304601098(entries)X
304611369(also)X
304621548(contain)X
304631845(a)X
304640 f
304651921(DW_AT_high_pc)X
304661 f
304672647(attribute)X
304682979(whose)X
304693240(value)X
304703468(is)X
304713564(the)X
304723709(relocated)X
30473576 4004(address)N
30474861(of)X
30475956(the)X
304761086(\256rst)X
304771245(location)X
304781552(past)X
304791716(the)X
304801846(last)X
304811991(machine)X
304822312(instruction)X
304832712(generated)X
304843076(for)X
304853200(that)X
304863355(block.)X
30487576 4160(Catch)N
30488818(block)X
304891050(entries)X
304901321(have)X
304911523(at)X
304921623(least)X
304931821(one)X
304941984(child)X
304952197(entry,)X
304962436(an)X
304972555(entry)X
304982773(representing)X
304993245(the)X
305003390(type)X
305013579(of)X
305023689(exception)X
30503576 4264(accepted)N
30504979(by)X
305051162(that)X
305061390(catch)X
305071671(block.)X
305082006(This)X
305092258(child)X
305102530(entry)X
305112806(will)X
305123039(have)X
305133300(one)X
305143521(of)X
305153688(the)X
305163890(tags)X
305170 f
30518576 4368 0.1960(DW_TAG_formal_parameter)AN
305191 f
305201829(or)X
305210 f
305221937 0.1942(DW_TAG_unspecified_parameters)AX
305231 f
305243474(,)X
305253531(and)X
305263693(will)X
305273866(have)X
30528576 4472(the)N
30529706(same)X
30530909(form)X
305311102(as)X
305321197(other)X
305331400(parameter)X
305341774(entries.)X
30535576 4628(The)N
30536735(\256rst)X
30537894(sibling)X
305381157(of)X
305391252(each)X
305401435(try)X
305411555(block)X
305421773(entry)X
305431976(will)X
305442136(be)X
305452241(a)X
305462302(catch)X
305472510(block)X
305482728(entry.)X
3054910 s
30550576 5951(Revision:)N
30551902(2.0.0)X
305522176(Page)X
305532352(32)X
305543599(July)X
305553752(27,)X
305563872(1993)X
305571943 6055(Industry)N
305582230(Review)X
305592495(Draft)X
30560
3056133 p
30562%%Page: 33 35
305630(Courier)xf 0 f
3056410 s 0 xH 0 xS 0 f
3056511 s
305661 f
3056710 s
305683075 520(Programming)N
305693535(Languages)X
305703903(SIG)X
305713 f
3057212 s
30573576 832(4.)N
30574696(DATA)X
30575991(OBJECT)X
305761399(AND)X
305771630(OBJECT)X
305782038(LIST)X
305792280(ENTRIES)X
305801 f
3058111 s
30582576 988(This)N
30583771(section)X
305841059(presents)X
305851385(the)X
305861531(debugging)X
305871941(information)X
305882396(entries)X
305892669(that)X
305902841(describe)X
305913173(individual)X
305923571(data)X
305933757(objects:)X
30594576 1092(variables,)N
30595950(parameters)X
305961370(and)X
305971531(constants,)X
305981915(and)X
305992075(lists)X
306002251(of)X
306012357(those)X
306022576(objects)X
306032859(that)X
306043025(may)X
306053210(be)X
306063326(grouped)X
306073647(in)X
306083749(a)X
306093821(single)X
30610576 1196(declaration,)N
306111012(such)X
306121195(as)X
306131290(a)X
306141351(common)X
306151682(block.)X
306163 f
3061712 s
30618576 1352(4.1)N
30619744(Data)X
30620965(Object)X
306211267(Entries)X
306221 f
3062311 s
30624576 1508(Program)N
30625913(variables,)X
306261287(formal)X
306271557(parameters)X
306281978(and)X
306292140(constants)X
306302503(are)X
306312645(represented)X
306323085(by)X
306333208(debugging)X
306343615(information)X
30635576 1612(entries)N
30636920(with)X
306371186(the)X
306381403(tags)X
306390 f
306401653(DW_TAG_variable)X
306411 f
306422448(,)X
306430 f
306442578 0.1960(DW_TAG_formal_parameter)AX
306451 f
306463905(and)X
306470 f
30648576 1716(DW_TAG_constant)N
306491 f
306501371(,)X
306511415(respectively.)X
306522 f
30653576 1872(The)N
30654733(tag)X
306550 f
30656871(DW_TAG_constant)X
306572 f
306581691(is)X
306591775(used)X
306601961(for)X
306612089(languages)X
306622476(that)X
306632639(distinguish)X
306643053(between)X
306653368(variables)X
306663722(that)X
306673886(may)X
30668576 1976(have)N
30669764(constant)X
306701085(value)X
306711298(and)X
306721452(true)X
306731616(named)X
306741872(constants.)X
306751 f
30676576 2132(The)N
30677738(debugging)X
306781135(information)X
306791577(entry)X
306801783(for)X
306811910(a)X
306821974(program)X
306832298(variable,)X
306842630(formal)X
306852891(parameter)X
306863269(or)X
306873368(constant)X
306883688(may)X
306893866(have)X
30690576 2236(the)N
30691706(following)X
306921071(attributes:)X
30693642 2392(1.)N
30694796(A)X
306950 f
30696900(DW_AT_name)X
306971 f
306981472(attribute)X
306991809(whose)X
307002075(value)X
307012308(is)X
307022409(a)X
307032490(null-terminated)X
307043077(string)X
307053320(containing)X
307063735(the)X
307073885(data)X
30708796 2496(object)N
307091034(name)X
307101247(as)X
307111342(it)X
307121414(appears)X
307131704(in)X
307141795(the)X
307151925(source)X
307162176(program.)X
30717796 2652(If)N
30718891(a)X
30719967(variable)X
307201288(entry)X
307211506(describes)X
307221870(a)X
307231946(C++)X
307242142(anonymous)X
307252585(union,)X
307262845(the)X
307272991(name)X
307283220(attribute)X
307293553(is)X
307303650(omitted)X
307313959(or)X
30732796 2756(consists)N
307331097(of)X
307341192(a)X
307351253(single)X
307361486(zero)X
307371659(byte.)X
30738642 2912(2.)N
30739796(If)X
30740884(the)X
307411022(name)X
307421244(of)X
307431348(a)X
307441418(variable)X
307451733(is)X
307461823(visible)X
307472090(outside)X
307482376(of)X
307492480(its)X
307502595(enclosing)X
307512964(compilation)X
307523418(unit,)X
307533609(the)X
307543748(variable)X
30755796 3016(entry)N
30756999(has)X
307571138(a)X
307580 f
307591199(DW_AT_external)X
307601 f
307611963(attribute,)X
307622302(whose)X
307632548(value)X
307642761(is)X
307652842(a)X
307662903(\257ag.)X
307672 f
30768796 3172(The)N
30769963(de\256nitions)X
307701366(of)X
307711470(C++)X
307721682(static)X
307731909(data)X
307742101(members)X
307752453(of)X
307762558(structures)X
307772946(or)X
307783060(classes)X
307793345(are)X
307803498(represented)X
307813949(by)X
30782796 3276(variable)N
307831115(entries)X
307841380(\257agged)X
307851664(as)X
307861767(external.)X
307872125(Both)X
307882317(\256le)X
307892450(static)X
307902667(and)X
307912824(local)X
307923026(variables)X
307933379(in)X
307943473(C)X
307953557(and)X
307963714(C++)X
307973915(are)X
30798796 3380(represented)N
307991233(by)X
308001338(non-external)X
308011810(variable)X
308022126(entries.)X
308031 f
30804642 3536(3.)N
30805796(A)X
308060 f
30807905(DW_AT_location)X
308081 f
308091693(attribute,)X
308102056(whose)X
308112326(value)X
308122563(describes)X
308132936(the)X
308143090(location)X
308153422(of)X
308163542(a)X
308173628(variable)X
308183959(or)X
30819796 3640(parameter)N
308201170(at)X
308211256(run-time.)X
30822796 3796(A)N
30823891(data)X
308241070(object)X
308251319(entry)X
308261533(representing)X
308272001(a)X
308282073(non-de\256ning)X
308292556(declaration)X
308302981(of)X
308313087(the)X
308323228(object)X
308333477(will)X
308343648(not)X
308353794(have)X
308363993(a)X
30837796 3900(location)N
308381103(attribute,)X
308391442(and)X
308401591(will)X
308411751(have)X
308421939(the)X
308430 f
308442069 0.1992(DW_AT_declaration)AX
308451 f
308462992(attribute.)X
30847796 4056(In)N
30848932(a)X
308491034(variable)X
308501381(entry)X
308511625(representing)X
308522123(the)X
308532294(de\256nition)X
308542696(of)X
308552832(the)X
308563004(variable)X
308573352(\(that)X
308583578(is,)X
308593723(with)X
308603944(no)X
308610 f
30862796 4160 0.1992(DW_AT_declaration)AN
308631 f
308641737(attribute\))X
308652101(if)X
308662195(no)X
308672323(location)X
308682648(attribute)X
308692982(is)X
308703080(present,)X
308713395(or)X
308723507(if)X
308733600(the)X
308743747(location)X
30875796 4264(attribute)N
308761121(is)X
308771210(present)X
308781494(but)X
308791637(describes)X
308801994(a)X
308812064(null)X
308822233(entry)X
308832445(\(as)X
308842578(described)X
308852946(in)X
308863046(section)X
308873327(2.4\),)X
308883519(the)X
308893658(variable)X
308903973(is)X
30891796 4368(assumed)N
308921128(to)X
308931226(exist)X
308941422(in)X
308951520(the)X
308961657(source)X
308971915(code)X
308982110(but)X
308992252(not)X
309002394(in)X
309012492(the)X
309022628(executable)X
309033033(program)X
309043359(\(but)X
309053529(see)X
309063669(number)X
309073966(9,)X
30908796 4472(below\).)N
30909796 4628(The)N
30910961(location)X
309111274(of)X
309121376(a)X
309131444(variable)X
309141757(may)X
309151938(be)X
309162050(further)X
309172318(speci\256ed)X
309182660(with)X
309192846(a)X
309200 f
309212914(DW_AT_segment)X
309221 f
309233632(attribute,)X
309243978(if)X
30925796 4732(appropriate.)N
30926642 4888(4.)N
30927796(A)X
309280 f
30929916(DW_AT_type)X
309301 f
309311503(attribute)X
309321855(describing)X
309332279(the)X
309342444(type)X
309352653(of)X
309362784(the)X
309372950(variable,)X
309383314(constant)X
309393666(or)X
309403797(formal)X
30941796 4992(parameter.)N
30942642 5148(5.)N
30943796(If)X
30944882(the)X
309451018(variable)X
309461330(entry)X
309471539(represents)X
309481923(the)X
309492059(de\256ning)X
309502376(declaration)X
309512796(for)X
309522926(a)X
309532993(C++)X
309543181(static)X
309553397(data)X
309563573(member)X
309573891(of)X
309583993(a)X
30959796 5252(structure,)N
309601150(class)X
309611345(or)X
309621441(union,)X
309631687(the)X
309641818(entry)X
309652022(has)X
309662162(a)X
309670 f
309682224 0.1979(DW_AT_specification)AX
309691 f
309703254(attribute,)X
309713594(whose)X
309723841(value)X
30973796 5356(is)N
30974884(a)X
30975952(reference)X
309761307(to)X
309771405(the)X
309781542(debugging)X
309791943(information)X
309802389(entry)X
309812599(representing)X
309823064(the)X
309833202(declaration)X
309843624(of)X
309853727(this)X
309863885(data)X
30987796 5460(member.)N
309881151(The)X
309891310(referenced)X
309901702(entry)X
309911905(will)X
309922065(be)X
309932170(a)X
309942231(child)X
309952430(of)X
309962525(some)X
309972733(class,)X
309982948(structure)X
309993278(or)X
310003373(union)X
310013596(type)X
310023770(entry.)X
31003796 5616(Variable)N
310041152(entries)X
310051440(containing)X
310061866(the)X
310070 f
310082027 0.1979(DW_AT_specification)AX
310091 f
310103087(attribute)X
310113435(do)X
310123576(not)X
310133743(need)X
310143963(to)X
31015796 5720(duplicate)N
310161161(information)X
310171618(provided)X
310181971(by)X
310192099(the)X
310202247(declaration)X
310212679(entry)X
310222900(referenced)X
310233310(by)X
310243438(the)X
310253586(speci\256cation)X
31026796 5824(attribute.)N
310271160(In)X
310281258(particular,)X
310291643(such)X
310301829(variable)X
310312138(entries)X
310322398(do)X
310332512(not)X
310342651(need)X
310352843(to)X
310362938(contain)X
310373224(attributes)X
310383579(for)X
310393707(the)X
310403841(name)X
3104110 s
31042576 5951(Revision:)N
31043902(2.0.0)X
310442176(Page)X
310452352(33)X
310463599(July)X
310473752(27,)X
310483872(1993)X
310491943 6055(Industry)N
310502230(Review)X
310512495(Draft)X
31052
3105334 p
31054%%Page: 34 36
310550(Courier)xf 0 f
3105610 s 0 xH 0 xS 0 f
3105711 s
310581 f
3105910 s
31060576 520(DWARF)N
31061885(Debugging)X
310621261(Information)X
310631664(Format)X
3106411 s
31065796 832(or)N
31066891(type)X
310671065(of)X
310681160(the)X
310691290(data)X
310701459(member)X
310711770(whose)X
310722016(de\256nition)X
310732377(they)X
310742551(represent.)X
31075642 988(6.)N
310762 f
31077796(Some)X
310781008(languages)X
310791392(distinguish)X
310801802(between)X
310812114(parameters)X
310822537(whose)X
310832780(value)X
310842994(in)X
310853086(the)X
310863217(calling)X
310873486(function)X
310883799(can)X
310893949(be)X
31090796 1092(modi\256ed)N
310911132(by)X
310921248(the)X
310931389(callee)X
310941633(\(variable)X
310951989(parameters\),)X
310962473(and)X
310972638(parameters)X
310983070(whose)X
310993322(value)X
311003545(in)X
311013646(the)X
311023786(calling)X
31103796 1196(function)N
311041108(cannot)X
311051370(be)X
311061475(modi\256ed)X
311071800(by)X
311081905(the)X
311092035(callee)X
311102268(\(constant)X
311112618(parameters\).)X
311121 f
31113796 1352(If)N
31114878(a)X
31115941(formal)X
311161200(parameter)X
311171576(entry)X
311181781(represents)X
311192162(a)X
311202226(parameter)X
311212603(whose)X
311222852(value)X
311233068(in)X
311243162(the)X
311253295(calling)X
311263561(function)X
311273880(may)X
31128796 1456(be)N
31129927(modi\256ed)X
311301289(by)X
311311424(the)X
311321579(callee,)X
311331854(that)X
311342034(entry)X
311352262(may)X
311362461(have)X
311372674(a)X
311380 f
311392760 0.1957(DW_AT_variable_parameter)AX
311401 f
31141796 1560(attribute,)N
311421141(whose)X
311431393(value)X
311441612(is)X
311451699(a)X
311461767(\257ag.)X
311471972(The)X
311482138(absence)X
311492445(of)X
311502547(this)X
311512704(attribute)X
311523028(implies)X
311533318(that)X
311543480(the)X
311553617(parameter's)X
31156796 1664(value)N
311571009(in)X
311581100(the)X
311591230(calling)X
311601493(function)X
311611809(cannot)X
311622066(be)X
311632171(modi\256ed)X
311642507(by)X
311652617(the)X
311662747(callee.)X
31167642 1820(7.)N
311682 f
31169796(Fortran90)X
311701185(has)X
311711329(the)X
311721459(concept)X
311731755(of)X
311741846(an)X
311751956(optional)X
311762273(parameter.)X
311771 f
31178796 1976(If)N
31179890(a)X
31180965(parameter)X
311811353(entry)X
311821570(represents)X
311831962(an)X
311842081(optional)X
311852407(parameter,)X
311862817(it)X
311872903(has)X
311883056(a)X
311890 f
311903131 0.1992(DW_AT_is_optional)AX
311911 f
31192796 2080(attribute,)N
311931135(whose)X
311941381(value)X
311951594(is)X
311961675(a)X
311971736(\257ag.)X
31198642 2236(8.)N
31199796(A)X
31200881(formal)X
312011138(parameter)X
312021512(entry)X
312031715(describing)X
312042104(a)X
312052165(formal)X
312062422(parameter)X
312072796(that)X
312082951(has)X
312093090(a)X
312103151(default)X
312113418(value)X
312123631(may)X
312133805(have)X
312143993(a)X
312150 f
31216796 2340 0.1979(DW_AT_default_value)AN
312171 f
312181846(attribute.)X
312192228(The)X
312202408(value)X
312212641(of)X
312222756(this)X
312232926(attribute)X
312243263(is)X
312253364(a)X
312263445(reference)X
312273813(to)X
312283924(the)X
31229796 2444(debugging)N
312301217(information)X
312311683(entry)X
312321914(for)X
312332066(a)X
312342155(variable)X
312352489(or)X
312362612(subroutine.)X
312373078(The)X
312383265(default)X
312393560(value)X
312403801(of)X
312413924(the)X
31242796 2548(parameter)N
312431173(is)X
312441257(the)X
312451390(value)X
312461606(of)X
312471704(the)X
312481837(variable)X
312492146(\(which)X
312502415(may)X
312512592(be)X
312522700(constant\))X
312533048(or)X
312543146(the)X
312553279(value)X
312563495(returned)X
312573812(by)X
312583924(the)X
31259796 2652(subroutine.)N
312601239(If)X
312611324(the)X
312621459(value)X
312631677(of)X
312641777(the)X
312650 f
312661913 0.1979(DW_AT_default_value)AX
312671 f
312682948(attribute)X
312693271(is)X
312703358(0,)X
312713452(it)X
312723530(means)X
312733783(that)X
312743944(no)X
31275796 2756(default)N
312761063(value)X
312771276(has)X
312781415(been)X
312791603(speci\256ed.)X
31280642 2912(9.)N
31281796(An)X
31282928(entry)X
312831135(describing)X
312841528(a)X
312851593(variable)X
312861903(whose)X
312872153(value)X
312882370(is)X
312892455(constant)X
312902775(and)X
312912928(not)X
312923067(represented)X
312933498(by)X
312943612(an)X
312953721(object)X
312963963(in)X
31297796 3016(the)N
31298929(address)X
312991217(space)X
313001437(of)X
313011535(the)X
313021668(program,)X
313032013(or)X
313042111(an)X
313052219(entry)X
313062425(describing)X
313072817(a)X
313082881(named)X
313093141(constant,)X
313103481(does)X
313113666(not)X
313123803(have)X
313133993(a)X
31314796 3120(location)N
313151121(attribute.)X
313161500(Such)X
313171716(entries)X
313181991(have)X
313192197(a)X
313200 f
313212276 0.1992(DW_AT_const_value)AX
313221 f
313233218(attribute,)X
313243576(whose)X
313253841(value)X
31326796 3224(may)N
31327984(be)X
313281103(a)X
313291178(string)X
313301415(or)X
313311524(any)X
313321687(of)X
313331796(the)X
313341940(constant)X
313352270(data)X
313362453(or)X
313372562(data)X
313382745(block)X
313392977(forms,)X
313403240(as)X
313413349(appropriate)X
313423786(for)X
313433924(the)X
31344796 3328(representation)N
313451331(of)X
313461440(the)X
313471584(variable's)X
313481968(value.)X
313492240(The)X
313502414(value)X
313512642(of)X
313522752(this)X
313532917(attribute)X
313543249(is)X
313553345(the)X
313563490(actual)X
313573738(constant)X
31358796 3432(value)N
313591009(of)X
313601104(the)X
313611234(variable,)X
313621562(represented)X
313631989(as)X
313642084(it)X
313652156(would)X
313662398(be)X
313672503(on)X
313682613(the)X
313692743(target)X
313702966(architecture.)X
31371598 3588(10.)N
31372796(If)X
31373878(the)X
313741010(scope)X
313751234(of)X
313761331(an)X
313771438(object)X
313781678(begins)X
313791932(sometime)X
313802300(after)X
313812486(the)X
313822619(low)X
313832776(pc)X
313842884(value)X
313853100(for)X
313863227(the)X
313873360(scope)X
313883585(most)X
313893782(closely)X
31390796 3692(enclosing)N
313911163(the)X
313921300(object,)X
313931567(the)X
313941704(object)X
313951949(entry)X
313962158(may)X
313972338(have)X
313982532(a)X
313990 f
314002599 0.1992(DW_AT_start_scope)AX
314011 f
314023528(attribute.)X
314033895(The)X
31404796 3796(value)N
314051010(of)X
314061106(this)X
314071257(attribute)X
314081575(is)X
314091657(the)X
314101788(offset)X
314112011(in)X
314122103(bytes)X
314132312(of)X
314142408(the)X
314152539(beginning)X
314162915(of)X
314173011(the)X
314183142(scope)X
314193365(for)X
314203490(the)X
314213621(object)X
314223861(from)X
31423796 3900(the)N
31424926(low)X
314251080(pc)X
314261185(value)X
314271398(of)X
314281493(the)X
314291623(debugging)X
314302017(information)X
314312456(entry)X
314322659(that)X
314332814(de\256nes)X
314343085(its)X
314353191(scope.)X
314362 f
31437796 4056(The)N
31438971(scope)X
314391214(of)X
314401326(a)X
314411413(variable)X
314421750(may)X
314431939(begin)X
314442178(somewhere)X
314452616(in)X
314462728(the)X
314472879(middle)X
314483162(of)X
314493274(a)X
314503361(lexical)X
314513640(block)X
314523875(in)X
314533988(a)X
31454796 4160(language)N
314551156(that)X
314561326(allows)X
314571589(executable)X
314581998(code)X
314592195(in)X
314602295(a)X
314612370(block)X
314622592(before)X
314632848(a)X
314642923(variable)X
314653248(declaration,)X
314663708(or)X
314673817(where)X
31468796 4264(one)N
31469967(declaration)X
314701418(containing)X
314711840 0.3269(initialization)AX
314722339(code)X
314732550(may)X
314742741(change)X
314753040(the)X
314763193(scope)X
314773438(of)X
314783552(a)X
314793641(subsequent)X
31480796 4368(declaration.)N
314811269(For)X
314821423(example,)X
314831760(in)X
314841851(the)X
314851981(following)X
314862338(C)X
314872419(code:)X
314880 f
31489796 4524(float)N
314901114(x)X
314911220(=)X
314921326(99.99;)X
31493796 4732(int)N
314941008(myfunc\(\))X
31495796 4836({)N
314962271 4940(float)N
314972589(f)X
314982695(=)X
314992801(x;)X
315002271 5044(float)N
315012589(x)X
315022695(=)X
315032801(88.99;)X
315042271 5252(return)N
315052642(0;)X
31506796 5356(})N
315072 f
31508796 5512(ANSI-C)N
315091096(scoping)X
315101396(rules)X
315111598(require)X
315121883(that)X
315132047(the)X
315142181(value)X
315152398(of)X
315162494(the)X
315172629(variable)X
315180 f
315192981(x)X
315202 f
315213061(assigned)X
315223396(to)X
315233492(the)X
315243627(variable)X
315250 f
315263979(f)X
315272 f
31528796 5616(in)N
31529888(the)X
315301019 0.3269(initialization)AX
315311495(sequence)X
315321839(is)X
315331920(the)X
315342050(value)X
315352263(of)X
315362354(the)X
315372484(global)X
315382732(variable)X
315390 f
315403079(x)X
315412 f
315423132(,)X
315433176(rather)X
315443418(than)X
315453597(the)X
315463727(local)X
315470 f
315483957(x)X
315492 f
315504010(,)X
31551796 5720(because)N
315521104(the)X
315531237(scope)X
315541462(of)X
315551556(the)X
315561689(local)X
315571892(variable)X
315580 f
315592243(x)X
315602 f
315612322(only)X
315622500(starts)X
315632722(after)X
315642915(the)X
315653049(full)X
315663194(declarator)X
315673592(for)X
315683721(the)X
315693855(local)X
315700 f
31571796 5824(x)N
315722 f
31573849(.)X
315741 f
3157510 s
31576576 5951(Revision:)N
31577902(2.0.0)X
315782176(Page)X
315792352(34)X
315803599(July)X
315813752(27,)X
315823872(1993)X
315831943 6055(Industry)N
315842230(Review)X
315852495(Draft)X
31586
3158735 p
31588%%Page: 35 37
315890(Courier)xf 0 f
3159010 s 0 xH 0 xS 0 f
3159111 s
315921 f
3159310 s
315943075 520(Programming)N
315953535(Languages)X
315963903(SIG)X
315973 f
3159812 s
31599576 832(4.2)N
31600744(Common)X
316011146(Block)X
316021405(Entries)X
316031 f
3160411 s
31605576 988(A)N
31606680(Fortran)X
31607981(common)X
316081332(block)X
316091570(may)X
316101764(be)X
316111889(described)X
316122268(by)X
316132398(a)X
316142479(debugging)X
316152893(information)X
316163352(entry)X
316173575(with)X
316183774(the)X
316193924(tag)X
316200 f
31621576 1092 0.1979(DW_TAG_common_block)AN
316221 f
316231583(.)X
316241669(The)X
316251848(common)X
316262199(block)X
316272437(entry)X
316282660(has)X
316292819(a)X
316300 f
316312900(DW_AT_name)X
316321 f
316333472(attribute)X
316343808(whose)X
31635576 1196(value)N
31636796(is)X
31637884(a)X
31638952(null-terminated)X
316391527(string)X
316401758(containing)X
316412161(the)X
316422299(common)X
316432638(block)X
316442864(name)X
316453085(as)X
316463188(it)X
316473268(appears)X
316483566(in)X
316493665(the)X
316503803(source)X
31651576 1300(program.)N
31652950(It)X
316531036(also)X
316541210(has)X
316551359(a)X
316560 f
316571430(DW_AT_location)X
316581 f
316592204(attribute)X
316602530(whose)X
316612785(value)X
316623007(describes)X
316633365(the)X
316643504(location)X
316653820(of)X
316663924(the)X
31667576 1404(beginning)N
31668957(of)X
316691058(the)X
316701194(common)X
316711531(block.)X
316721799(The)X
316731964(common)X
316742301(block)X
316752526(entry)X
316762736(owns)X
316772950(debugging)X
316783351(information)X
316793797(entries)X
31680576 1508(describing)N
31681965(the)X
316821095(variables)X
316831435(contained)X
316841800(within)X
316852048(the)X
316862178(common)X
316872509(block.)X
316883 f
3168912 s
31690576 1664(4.3)N
31691744(Imported)X
316921157(Declaration)X
316931662(Entries)X
316942 f
3169511 s
31696576 1820(Some)N
31697798(languages)X
316981192(support)X
316991494(the)X
317001635(concept)X
317011942(of)X
317022044(importing)X
317032425(into)X
317042596(a)X
317052673(given)X
317062897(module)X
317073189(declarations)X
317083663(made)X
317093886(in)X
317103988(a)X
31711576 1924(different)N
31712898(module.)X
317131 f
31714576 2080(An)N
31715741(imported)X
317161118(declaration)X
317171568(is)X
317181685(represented)X
317192149(by)X
317202296(a)X
317212394(debugging)X
317222825(information)X
317233301(entry)X
317243541(with)X
317253757(the)X
317263924(tag)X
317270 f
31728576 2184 0.1947(DW_TAG_imported_declaration)AN
317291 f
317302007(.)X
317312125(The)X
317322336(entry)X
317332590(for)X
317342765(the)X
317352946(imported)X
317363338(declaration)X
317373803(has)X
317383993(a)X
317390 f
31740576 2288(DW_AT_name)N
317411 f
317421130(attribute)X
317431449(whose)X
317441697(value)X
317451912(is)X
317461995(a)X
317472058(null-terminated)X
317482627(string)X
317492852(containing)X
317503250(the)X
317513383(name)X
317523599(of)X
317533697(the)X
317543830(entity)X
31755576 2392(whose)N
31756852(declaration)X
317571296(is)X
317581407(being)X
317591655(imported)X
317602026(as)X
317612151(it)X
317622253(appears)X
317632573(in)X
317642693(the)X
317652852(source)X
317663132(program.)X
317673525(The)X
317683713(imported)X
31769576 2496(declaration)N
317701015(entry)X
317711243(also)X
317721432(has)X
317731596(a)X
317740 f
317751682(DW_AT_import)X
317761 f
317772365(attribute,)X
317782729(whose)X
317793000(value)X
317803239(is)X
317813346(a)X
317823433(reference)X
317833807(to)X
317843924(the)X
31785576 2600(debugging)N
31786970(information)X
317871409(entry)X
317881612(representing)X
317892069(the)X
317902199(declaration)X
317912613(that)X
317922768(is)X
317932849(being)X
317943067(imported.)X
317953 f
3179612 s
31797576 2756(4.4)N
31798744(Namelist)X
317991131(Entries)X
318002 f
3180111 s
31802576 2912(At)N
31803680(least)X
31804872(one)X
318051024(language,)X
318061399(Fortran90,)X
318071813(has)X
318081960(the)X
318092093(concept)X
318102392(of)X
318112486(a)X
318122555(namelist.)X
318132923(A)X
318143002(namelist)X
318153326(is)X
318163410(an)X
318173524(ordered)X
318183828(list)X
318193963(of)X
31820576 3016(the)N
31821733(names)X
318221006(of)X
318231124(some)X
318241353(set)X
318251500(of)X
318261618(declared)X
318271974(objects.)X
318282316(The)X
318292496(namelist)X
318302843(object)X
318313107(itself)X
318323328(may)X
318333522(be)X
318343653(used)X
318353862(as)X
318363988(a)X
31837576 3120(replacement)N
318381033(for)X
318391158(the)X
318401288(list)X
318411419(of)X
318421510(names)X
318431756(in)X
318441847(various)X
318452133(contexts.)X
318461 f
31847576 3276(A)N
31848667(namelist)X
31849995(is)X
318501082(represented)X
318511515(by)X
318521631(a)X
318531698(debugging)X
318542099(information)X
318552545(entry)X
318562755(with)X
318572941(the)X
318583078(tag)X
318590 f
318603215(DW_TAG_namelist)X
318611 f
318624010(.)X
31863576 3380(If)N
31864658(the)X
31865790(namelist)X
318661114(itself)X
318671315(has)X
318681456(a)X
318691519(name,)X
318701756(the)X
318711888(namelist)X
318722212(entry)X
318732417(has)X
318742557(a)X
318750 f
318762619(DW_AT_name)X
318771 f
318783172(attribute,)X
318793512(whose)X
318803759(value)X
318813973(is)X
31882576 3484(a)N
31883637(null-terminated)X
318841204(string)X
318851427(containing)X
318861822(the)X
318871952(namelist's)X
318882337(name)X
318892550(as)X
318902645(it)X
318912717(appears)X
318923007(in)X
318933098(the)X
318943228(source)X
318953479(program.)X
31896576 3640(Each)N
31897780(name)X
31898999(that)X
318991160(is)X
319001247(part)X
319011412(of)X
319021513(the)X
319031649(namelist)X
319041977(is)X
319052064(represented)X
319062497(by)X
319072613(a)X
319082681(debugging)X
319093082(information)X
319103528(entry)X
319113738(with)X
319123924(the)X
31913576 3744(tag)N
319140 f
31915709 0.1974(DW_TAG_namelist_item)AX
319161 f
319171769(.)X
319181838(Each)X
319192039(such)X
319202225(entry)X
319212431(is)X
319222515(a)X
319232579(child)X
319242781(of)X
319252879(the)X
319263012(namelist)X
319273336(entry,)X
319283563(and)X
319293714(all)X
319303827(of)X
319313924(the)X
31932576 3848(namelist)N
31933898(item)X
319341078(entries)X
319351335(for)X
319361459(a)X
319371520(given)X
319381738(namelist)X
319392060(are)X
319402189(ordered)X
319412479(as)X
319422575(were)X
319432768(the)X
319442899(list)X
319453031(of)X
319463127(names)X
319473375(they)X
319483550(correspond)X
319493963(to)X
31950576 3952(in)N
31951667(the)X
31952797(source)X
319531048(program.)X
31954576 4108(Each)N
31955796(namelist)X
319561140(item)X
319571343(entry)X
319581569(contains)X
319591908(a)X
319600 f
319611992 0.1979(DW_AT_namelist_item)AX
319621 f
319633044(attribute)X
319643384(whose)X
319653653(value)X
319663889(is)X
319673993(a)X
31968576 4212(reference)N
31969925(to)X
319701017(the)X
319711148(debugging)X
319721543(information)X
319731983(entry)X
319742187(representing)X
319752645(the)X
319762776(declaration)X
319773190(of)X
319783285(the)X
319793415(item)X
319803595(whose)X
319813841(name)X
31982576 4316(appears)N
31983866(in)X
31984957(the)X
319851087(namelist.)X
3198610 s
31987576 5951(Revision:)N
31988902(2.0.0)X
319892176(Page)X
319902352(35)X
319913599(July)X
319923752(27,)X
319933872(1993)X
319941943 6055(Industry)N
319952230(Review)X
319962495(Draft)X
31997
3199836 p
31999%%Page: 36 38
320000(Courier)xf 0 f
3200110 s 0 xH 0 xS 0 f
3200211 s
320031 f
3200410 s
32005576 520(DWARF)N
32006885(Debugging)X
320071261(Information)X
320081664(Format)X
32009576 5951(Revision:)N
32010902(2.0.0)X
320112176(Page)X
320122352(36)X
320133599(July)X
320143752(27,)X
320153872(1993)X
320161943 6055(Industry)N
320172230(Review)X
320182495(Draft)X
32019
3202037 p
32021%%Page: 37 39
320220(Courier)xf 0 f
3202310 s 0 xH 0 xS 0 f
3202411 s
320251 f
3202610 s
320273075 520(Programming)N
320283535(Languages)X
320293903(SIG)X
320303 f
3203112 s
32032576 832(5.)N
32033696(TYPE)X
32034976(ENTRIES)X
320351 f
3203611 s
32037576 988(This)N
32038760(section)X
320391037(presents)X
320401352(the)X
320411487(debugging)X
320421886(information)X
320432330(entries)X
320442593(that)X
320452754(describe)X
320463075(program)X
320473401(types:)X
320483640(base)X
320493824(types,)X
32050576 1092(modi\256ed)N
32051912(types)X
320521120(and)X
320531269(user-de\256ned)X
320541725(types.)X
32055576 1248(If)N
32056665(the)X
32057804(scope)X
320581035(of)X
320591139(the)X
320601278(declaration)X
320611701(of)X
320621805(a)X
320631875(named)X
320642141(type)X
320652324(begins)X
320662585(sometime)X
320672960(after)X
320683152(the)X
320693291(low)X
320703454(pc)X
320713568(value)X
320723790(for)X
320733924(the)X
32074576 1352(scope)N
32075888(most)X
320761172(closely)X
320771534(enclosing)X
320781984(the)X
320792204(declaration,)X
320802730(the)X
320812950(declaration)X
320823453(may)X
320833716(have)X
320843993(a)X
320850 f
32086576 1456 0.1992(DW_AT_start_scope)AN
320871 f
320881522(attribute.)X
320891906(The)X
320902088(value)X
320912324(of)X
320922442(this)X
320932615(attribute)X
320942955(is)X
320953059(the)X
320963212(offset)X
320973458(in)X
320983573(bytes)X
320993805(of)X
321003924(the)X
32101576 1560(beginning)N
32102960(of)X
321031064(the)X
321041203(scope)X
321051434(for)X
321061567(the)X
321071706(declaration)X
321082129(from)X
321092331(the)X
321102470(low)X
321112633(pc)X
321122747(value)X
321132969(of)X
321143073(the)X
321153212(debugging)X
321163615(information)X
32117576 1664(entry)N
32118779(that)X
32119934(de\256nes)X
321201205(its)X
321211311(scope.)X
321223 f
3212312 s
32124576 1820(5.1)N
32125744(Base)X
32126960(Type)X
321271192(Entries)X
321282 f
3212911 s
32130576 1976(A)N
32131661(base)X
32132853(type)X
321331031(is)X
321341121(a)X
321351196(data)X
321361384(type)X
321371562(that)X
321381731(is)X
321391821(not)X
321401965(de\256ned)X
321412250(in)X
321422350(terms)X
321432576(of)X
321442676(other)X
321452893(data)X
321463081(types.)X
321473337(Each)X
321483549(programming)X
32149576 2080(language)N
32150926(has)X
321511070(a)X
321521136(set)X
321531256(of)X
321541347(base)X
321551530(types)X
321561733(that)X
321571893(are)X
321582032(considered)X
321592440(to)X
321602531(be)X
321612636(built)X
321622821(into)X
321632981(that)X
321643141(language.)X
321651 f
32166576 2236(A)N
32167734(base)X
32168986(type)X
321691234(is)X
321701389(represented)X
321711890(by)X
321722074(a)X
321732209(debugging)X
321742677(information)X
321753190(entry)X
321763467(with)X
321773720(the)X
321783924(tag)X
321790 f
32180576 2340(DW_TAG_base_type)N
321811 f
321821424(.)X
321831495(A)X
321841585(base)X
321851768(type)X
321861947(entry)X
321872155(has)X
321882299(a)X
321890 f
321902365(DW_AT_name)X
321911 f
321922922(attribute)X
321933244(whose)X
321943495(value)X
321953713(is)X
321963799(a)X
321973865(null-)X
32198576 2444(terminated)N
32199999(string)X
322001245(describing)X
322011657(the)X
322021810(name)X
322032046(of)X
322042164(the)X
322052317(base)X
322062518(type)X
322072715(as)X
322082833(recognized)X
322093264(by)X
322103398(the)X
322113552(programming)X
32212576 2548(language)N
32213916(of)X
322141011(the)X
322151141(compilation)X
322161586(unit)X
322171746(containing)X
322182141(the)X
322192271(base)X
322202449(type)X
322212623(entry.)X
32222576 2704(A)N
32223680(base)X
32224877(type)X
322251070(entry)X
322261292(also)X
322271475(has)X
322281633(a)X
322290 f
322301713(DW_AT_encoding)X
322311 f
322322496(attribute)X
322332832(describing)X
322343240(how)X
322353432(the)X
322363581(base)X
322373779(type)X
322383973(is)X
32239576 2808(encoded)N
32240896(and)X
322411050(is)X
322421136(to)X
322431232(be)X
322441342(interpreted.)X
322451795(The)X
322461959(value)X
322472177(of)X
322482277(this)X
322492432(attribute)X
322502754(is)X
322512839(a)X
322522904(constant.)X
322533268(The)X
322543431(set)X
322553555(of)X
322563654(values)X
322573905(and)X
32258576 2912(their)N
32259760(meanings)X
322601120(for)X
322611244(the)X
322620 f
322631374(DW_AT_encoding)X
322641 f
322652138(attribute)X
322662455(is)X
322672536(given)X
322682754(in)X
322692845(Figure)X
322703097(10.)X
3227110 f
322721112 2980(i)N
322731119(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
322741 f
322751156 3084(Name)N
322762348(Meaning)X
3227710 f
322781112 3100(i)N
322791119(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
322800 f
322811156 3204(DW_ATE_address)N
322821 f
322832348(linear)X
322842571(machine)X
322852892(address)X
322860 f
322871156 3308(DW_ATE_boolean)N
322881 f
322892348(true)X
322902507(or)X
322912602(false)X
322920 f
322931156 3412 0.1974(DW_ATE_complex_float)AN
322941 f
322952348(complex)X
322962674(\257oating-point)X
322973177(number)X
322980 f
322991156 3516(DW_ATE_float)N
323001 f
323012348(\257oating-point)X
323022851(number)X
323030 f
323041156 3620(DW_ATE_signed)N
323051 f
323062348(signed)X
323072600(binary)X
323082847(integer)X
323090 f
323101156 3724 0.1985(DW_ATE_signed_char)AN
323111 f
323122348(signed)X
323132600(character)X
323140 f
323151156 3828(DW_ATE_unsigned)N
323161 f
323172348(unsigned)X
323182688(binary)X
323192935(integer)X
323200 f
323211156 3932 0.1974(DW_ATE_unsigned_char)AN
323221 f
323232348(unsigned)X
323242688(character)X
3232510 f
323261112 3948(i)N
323271119(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
323281112(c)X
323293860(c)Y
323303772(c)Y
323313684(c)Y
323323596(c)Y
323333508(c)Y
323343420(c)Y
323353332(c)Y
323363244(c)Y
323373156(c)Y
323383068(c)Y
323393495 3948(c)N
323403860(c)Y
323413772(c)Y
323423684(c)Y
323433596(c)Y
323443508(c)Y
323453420(c)Y
323463332(c)Y
323473244(c)Y
323483156(c)Y
323493068(c)Y
323503 f
323511640 4052(Figure)N
323521912(10.)X
323531 f
323542066(Encoding)X
323552426(attribute)X
323562743(values)X
32357576 4208(All)N
32358711(encodings)X
323591090(assume)X
323601371(the)X
323611501(representation)X
323622022(that)X
323632177(is)X
323642258(``normal'')X
323652646(for)X
323662770(the)X
323672900(target)X
323683123(architecture.)X
32369576 4364(A)N
32370662(base)X
32371841(type)X
323721016(entry)X
323731220(has)X
323741361(a)X
323750 f
323761424(DW_AT_byte_size)X
323771 f
323782243(attribute,)X
323792584(whose)X
323802832(value)X
323813047(is)X
323823130(a)X
323833193(constant,)X
323843533(describing)X
323853924(the)X
32386576 4468(size)N
32387735(in)X
32388826(bytes)X
323891034(of)X
323901129(the)X
323911259(storage)X
323921535(unit)X
323931695(used)X
323941878(to)X
323951969(represent)X
323962313(an)X
323972418(object)X
323982656(of)X
323992751(the)X
324002881(given)X
324013099(type.)X
32402576 4624(If)N
32403658(the)X
32404790(value)X
324051005(of)X
324061102(an)X
324071209(object)X
324081450(of)X
324091548(the)X
324101681(given)X
324111902(type)X
324122079(does)X
324132265(not)X
324142403(fully)X
324152595(occupy)X
324162874(the)X
324173007(storage)X
324183286(unit)X
324193449(described)X
324203811(by)X
324213924(the)X
32422576 4728(byte)N
32423782(size)X
32424973(attribute,)X
324251344(the)X
324261506(base)X
324271715(type)X
324281920(entry)X
324292154(may)X
324302359(have)X
324312578(a)X
324320 f
324332670(DW_AT_bit_size)X
324341 f
324353465(attribute)X
324363813(and)X
324373993(a)X
324380 f
32439576 4832(DW_AT_bit_offset)N
324401 f
324411466(attribute,)X
324421825(both)X
324432024(of)X
324442140(whose)X
324452407(values)X
324462675(are)X
324472825(constants.)X
324483240(The)X
324493420(bit)X
324503557(size)X
324513737(attribute)X
32452576 4936(describes)N
32453944(the)X
324541093(actual)X
324551345(size)X
324561523(in)X
324571633(bits)X
324581802(used)X
324592004(to)X
324602114(represent)X
324612477(a)X
324622557(value)X
324632788(of)X
324642901(the)X
324653049(given)X
324663285(type.)X
324673521(The)X
324683698(bit)X
324693832(offset)X
32470576 5040(attribute)N
32471893(describes)X
324721242(the)X
324731372(offset)X
324741594(in)X
324751685(bits)X
324761835(of)X
324771930(the)X
324782060(high)X
324792239(order)X
324802446(bit)X
324812562(of)X
324822657(a)X
324832718(value)X
324842931(of)X
324853026(the)X
324863156(given)X
324873375(type)X
324883550(from)X
324893744(the)X
324903875(high)X
32491576 5144(order)N
32492783(bit)X
32493899(of)X
32494994(the)X
324951124(storage)X
324961400(unit)X
324971560(used)X
324981743(to)X
324991834(contain)X
325002116(that)X
325012271(value.)X
325022 f
32503576 5300(For)N
32504736(example,)X
325051079(the)X
325061215(C)X
325071302(type)X
325080 f
325091477(int)X
325102 f
325111664(on)X
325121780(a)X
325131852(machine)X
325142178(that)X
325152344(uses)X
325162523(32-bit)X
325172762(integers)X
325183075(would)X
325193320(be)X
325203432(represented)X
325213876(by)X
325223988(a)X
32523576 5404(base)N
32524773(type)X
32525956(entry)X
325261173(with)X
325271362(a)X
325281441(name)X
325291666(attribute)X
325302006(whose)X
325312261(value)X
325322487(was)X
325332659(``)X
325340 f
325352717(int)X
325362 f
325372876(,'')X
325382991(an)X
325393114(encoding)X
325403472(attribute)X
325413812(whose)X
32542576 5508(value)N
32543789(was)X
325440 f
32545948(DW_ATE_signed)X
325462 f
325471659(and)X
325481813(a)X
325491879(byte)X
325502048(size)X
325512202(attribute)X
325522529(whose)X
325532771(value)X
325542984(was)X
325550 f
325563143(4)X
325572 f
325583196(.)X
325591 f
3256010 s
32561576 5951(Revision:)N
32562902(2.0.0)X
325632176(Page)X
325642352(37)X
325653599(July)X
325663752(27,)X
325673872(1993)X
325681943 6055(Industry)N
325692230(Review)X
325702495(Draft)X
32571
3257238 p
32573%%Page: 38 40
325740(Courier)xf 0 f
3257510 s 0 xH 0 xS 0 f
3257611 s
325771 f
3257810 s
32579576 520(DWARF)N
32580885(Debugging)X
325811261(Information)X
325821664(Format)X
325833 f
3258412 s
32585576 832(5.2)N
32586744(Type)X
32587976(Modi\256er)X
325881358(Entries)X
325891 f
3259011 s
32591576 988(A)N
32592671(base)X
32593860(or)X
32594966(user-de\256ned)X
325951433(type)X
325961618(may)X
325971803(be)X
325981919(modi\256ed)X
325992266(in)X
326002368(different)X
326012704(ways)X
326022917(in)X
326033019(different)X
326043355(languages.)X
326053784(A)X
326063880(type)X
32607576 1092(modi\256er)N
32608903(is)X
32609990(represented)X
326101422(in)X
326111518(DWARF)X
326121862(by)X
326131977(a)X
326142043(debugging)X
326152442(information)X
326162886(entry)X
326173094(with)X
326183278(one)X
326193432(of)X
326203532(the)X
326213667(tags)X
326223836(given)X
32623576 1196(in)N
32624667(Figure)X
32625919(11.)X
3262610 f
32627582 1264(i)N
32628594(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
326291 f
32630626 1368(Tag)N
326311871(Meaning)X
3263210 f
32633582 1384(i)N
32634594(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
326350 f
32636626 1488 0.1992(DW_TAG_const_type)AN
326371 f
326381871(C)X
326391952(or)X
326402047(C++)X
326412228(const)X
326422436(quali\256ed)X
326432767(type)X
326440 f
32645626 1592 0.1985(DW_TAG_packed_type)AN
326461 f
326471871(Pascal)X
326482118(packed)X
326492389(type)X
326500 f
32651626 1696 0.1979(DW_TAG_pointer_type)AN
326521 f
326531871(The)X
326542030(address)X
326552315(of)X
326562410(the)X
326572540(object)X
326582778(whose)X
326593024(type)X
326603198(is)X
326613279(being)X
326623497(modi\256ed)X
326630 f
32664626 1800 0.1969(DW_TAG_reference_type)AN
326651 f
326661871(A)X
326671956(C++)X
326682137(reference)X
326692485(to)X
326702576(the)X
326712706(object)X
326722944(whose)X
326733190(type)X
326743364(is)X
326753445(being)X
326763663(modi\256ed)X
326770 f
32678626 1904 0.1974(DW_TAG_volatile_type)AN
326791 f
326801871(C)X
326811952(or)X
326822047(C++)X
326832228(volatile)X
326842516(quali\256ed)X
326852847(type)X
3268610 f
32687582 1920(i)N
32688594(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
32689582(c)X
326901880(c)Y
326911792(c)Y
326921704(c)Y
326931616(c)Y
326941528(c)Y
326951440(c)Y
326961352(c)Y
326974026 1920(c)N
326981880(c)Y
326991792(c)Y
327001704(c)Y
327011616(c)Y
327021528(c)Y
327031440(c)Y
327041352(c)Y
327053 f
327061758 2024(Figure)N
327072030(11.)X
327081 f
327092184(Type)X
327102387(modi\256er)X
327112708(tags)X
32712576 2180(Each)N
32713780(of)X
32714882(the)X
327151019(type)X
327161200(modi\256er)X
327171528(entries)X
327181792(has)X
327191938(a)X
327200 f
327212006(DW_AT_type)X
327221 f
327232565(attribute,)X
327242911(whose)X
327253164(value)X
327263384(is)X
327273472(a)X
327283540(reference)X
327293895(to)X
327303993(a)X
32731576 2284(debugging)N
32732970(information)X
327331409(entry)X
327341612(describing)X
327352001(a)X
327362062(base)X
327372240(type,)X
327382436(a)X
327392497(user-de\256ned)X
327402953(type)X
327413127(or)X
327423222(another)X
327433508(type)X
327443682(modi\256er.)X
32745576 2440(A)N
32746737(modi\256ed)X
327471149(type)X
327481399(entry)X
327491678(describing)X
327502143(a)X
327512280(pointer)X
327522629(or)X
327532801(reference)X
327543226(type)X
327553477(may)X
327563728(have)X
327573993(a)X
327580 f
32759576 2544 0.1979(DW_AT_address_class)AN
327601 f
327611636(attribute)X
327621984(to)X
327632106(describe)X
327642452(how)X
327652655(objects)X
327662957(having)X
327673249(the)X
327683409(given)X
327693657(pointer)X
327703959(or)X
32771576 2648(reference)N
32772924(type)X
327731098(ought)X
327741321(to)X
327751412(be)X
327761517(dereferenced.)X
32777576 2804(When)N
32778808(multiple)X
327791126(type)X
327801300(modi\256ers)X
327811655(are)X
327821784(chained)X
327832080(together)X
327842391(to)X
327852482(modify)X
327862759(a)X
327872821(base)X
327883000(or)X
327893096(user-de\256ned)X
327903553(type,)X
327913750(they)X
327923925(are)X
32793576 2908(ordered)N
32794866(as)X
32795961(if)X
327961037(part)X
327971196(of)X
327981291(a)X
327991352(right-associative)X
328001957(expression)X
328012355(involving)X
328022716(the)X
328032846(base)X
328043024(or)X
328053119(user-de\256ned)X
328063575(type.)X
328072 f
32808576 3064(As)N
32809686(examples)X
328101035(of)X
328111126(how)X
328121295(type)X
328131464(modi\256ers)X
328141813(are)X
328151952(ordered,)X
328162274(take)X
328172443(the)X
328182573(following)X
328192930(C)X
328203011(declarations:)X
328210 f
32822576 3220(const)N
32823894(char)X
328241159(*)X
328251265(volatile)X
328261742(p;)X
328272 f
32828752 3324(which)N
32829985(represents)X
328301373(a)X
328311439(volatile)X
328321727(pointer)X
328332004(to)X
328342095(a)X
328352161(constant)X
328362482(character.)X
32837752 3428(This)N
32838926(is)X
328391007(encoded)X
328401322(in)X
328411413(DWARF)X
328421733(as:)X
328430 f
32844752 3532 0.1974(DW_TAG_volatile_type)AN
328459 f
328461865 MX
32847(->)174 987 oc
328480 f
328491152 3636 0.1979(DW_TAG_pointer_type)AN
328509 f
328512212 MX
32852(->)174 987 oc
328530 f
328541440 3740 0.1992(DW_TAG_const_type)AN
328559 f
328562394 MX
32857(->)174 987 oc
328580 f
328591728 3844(DW_TAG_base_type)N
32860576 4052(volatile)N
328611053(char)X
328621318(*)X
328631424(const)X
328641742(p;)X
328652 f
32866752 4156(on)N
32867862(the)X
32868992(other)X
328691200(hand,)X
328701420(represents)X
328711808(a)X
328721874(constant)X
328732195(pointer)X
32874752 4260(to)N
32875843(a)X
32876909(volatile)X
328771197(character.)X
32878752 4364(This)N
32879926(is)X
328801007(encoded)X
328811322(as:)X
328820 f
32883752 4468 0.1992(DW_TAG_const_type)AN
328849 f
328851706 MX
32886(->)174 987 oc
328870 f
328881152 4572 0.1979(DW_TAG_pointer_type)AN
328899 f
328902212 MX
32891(->)174 987 oc
328920 f
328931440 4676 0.1974(DW_TAG_volatile_type)AN
328949 f
328952553 MX
32896(->)174 987 oc
328970 f
328981728 4780(DW_TAG_base_type)N
328993 f
3290012 s
32901576 5040(5.3)N
32902744(Typedef)X
329031104(Entries)X
329041 f
3290511 s
32906576 5196(Any)N
32907752(arbitrary)X
329081080(type)X
329091257(named)X
329101517(via)X
329111650(a)X
329121714(typedef)X
329132003(is)X
329142087(represented)X
329152517(by)X
329162630(a)X
329172694(debugging)X
329183091(information)X
329193534(entry)X
329203741(with)X
329213924(the)X
32922576 5300(tag)N
329230 f
32924709(DW_TAG_typedef)X
329251 f
329261451(.)X
329271520(The)X
329281682(typedef)X
329291971(entry)X
329302177(has)X
329312319(a)X
329320 f
329332383(DW_AT_name)X
329341 f
329352937(attribute)X
329363256(whose)X
329373504(value)X
329383719(is)X
329393802(a)X
329403865(null-)X
32941576 5404(terminated)N
32942986(string)X
329431219(containing)X
329441624(the)X
329451764(name)X
329461987(of)X
329472092(the)X
329482232(typedef)X
329492528(as)X
329502633(it)X
329512715(appears)X
329523015(in)X
329533117(the)X
329543258(source)X
329553520(program.)X
329563895(The)X
32957576 5508(typedef)N
32958862(entry)X
329591065(also)X
329601229(contains)X
329611545(a)X
329620 f
329631606(DW_AT_type)X
329641 f
329652158(attribute.)X
32966576 5664(If)N
32967664(the)X
32968802(debugging)X
329691204(information)X
329701651(entry)X
329711862(for)X
329721994(a)X
329732064(typedef)X
329742359(represents)X
329752746(a)X
329762816(declaration)X
329773239(of)X
329783343(the)X
329793482(type)X
329803665(that)X
329813829(is)X
329823919(not)X
32983576 5768(also)N
32984740(a)X
32985801(de\256nition,)X
329861184(it)X
329871256(does)X
329881439(not)X
329891574(contain)X
329901856(a)X
329911917(type)X
329922091(attribute.)X
3299310 s
32994576 5951(Revision:)N
32995902(2.0.0)X
329962176(Page)X
329972352(38)X
329983599(July)X
329993752(27,)X
330003872(1993)X
330011943 6055(Industry)N
330022230(Review)X
330032495(Draft)X
33004
3300539 p
33006%%Page: 39 41
330070(Courier)xf 0 f
3300810 s 0 xH 0 xS 0 f
3300911 s
330101 f
3301110 s
330123075 520(Programming)N
330133535(Languages)X
330143903(SIG)X
330153 f
3301612 s
33017576 832(5.4)N
33018744(Array)X
330191019(Type)X
330201251(Entries)X
330212 f
3302211 s
33023576 988(Many)N
33024807(languages)X
330251200(share)X
330261426(the)X
330271565(concept)X
330281870(of)X
330291970(an)X
330302089(``array,'')X
330312453(which)X
330322695(is)X
330332785(a)X
330342860(table)X
330353068(of)X
330363169(components)X
330373621(of)X
330383722(identical)X
33039576 1092(type.)N
330401 f
33041576 1248(An)N
33042773(array)X
330431043(type)X
330441285(is)X
330451434(represented)X
330461929(by)X
330472107(a)X
330482236(debugging)X
330492698(information)X
330503205(entry)X
330513477(with)X
330523725(the)X
330533924(tag)X
330540 f
33055576 1352 0.1992(DW_TAG_array_type)AN
330561 f
330571477(.)X
33058576 1508(If)N
33059664(a)X
33060733(name)X
33061954(has)X
330621101(been)X
330631297(given)X
330641523(to)X
330651622(the)X
330661760(array)X
330671970(type)X
330682152(in)X
330692251(the)X
330702389(source)X
330712648(program,)X
330722998(then)X
330733180(the)X
330743318(corresponding)X
330753852(array)X
33076576 1612(type)N
33077759(entry)X
33078971(has)X
330791119(a)X
330800 f
330811189(DW_AT_name)X
330821 f
330831750(attribute)X
330842076(whose)X
330852331(value)X
330862553(is)X
330872643(a)X
330882713(null-terminated)X
330893289(string)X
330903521(containing)X
330913924(the)X
33092576 1716(array)N
33093778(type)X
33094952(name)X
330951165(as)X
330961260(it)X
330971332(appears)X
330981622(in)X
330991713(the)X
331001843(source)X
331012094(program.)X
33102576 1872(The)N
33103758(array)X
33104983(type)X
331051180(entry)X
331061406(describing)X
331071818(a)X
331081903 0.2750(multidimensional)AX
331092569(array)X
331102795(may)X
331112993(have)X
331123205(a)X
331130 f
331143290(DW_AT_ordering)X
331151 f
33116576 1976(attribute)N
33117897(whose)X
331181147(constant)X
331191467(value)X
331201684(is)X
331211769(interpreted)X
331222177(to)X
331232272(mean)X
331242489(either)X
331252715(row-major)X
331263111(or)X
331273209(column-major)X
331283734(ordering)X
33129576 2080(of)N
33130681(array)X
33131893(elements.)X
331321283(The)X
331331452(set)X
331341582(of)X
331351687(values)X
331361944(and)X
331372103(their)X
331382297(meanings)X
331392667(for)X
331402801(the)X
331412941(ordering)X
331423271(attribute)X
331433598(are)X
331443738(listed)X
331453963(in)X
33146576 2184(Figure)N
33147831(12.)X
33148988(If)X
331491071(no)X
331501184(ordering)X
331511507(attribute)X
331521827(is)X
331531911(present,)X
331542212(the)X
331552344(default)X
331562613(ordering)X
331572935(for)X
331583061(the)X
331593193(source)X
331603446(language)X
331613788(\(which)X
33162576 2288(is)N
33163675(indicated)X
331641040(by)X
331651169(the)X
331660 f
331671318(DW_AT_language)X
331681 f
331692101(attribute)X
331702437(of)X
331712551(the)X
331722700(enclosing)X
331733079(compilation)X
331743543(unit)X
331753722(entry\))X
331763973(is)X
33177576 2392(assumed.)N
3317810 f
331791836 2460(i)N
331801848(iiiiiiiiiiiiiiiiiiiii)X
331810 f
331821880 2564(DW_ORD_col_major)N
331831880 2668(DW_ORD_row_major)N
331841 f
3318510 f
331861836 2684(i)N
331871848(iiiiiiiiiiiiiiiiiiiii)X
331881836(c)X
331892636(c)Y
331902548(c)Y
331912772 2684(c)N
331922636(c)Y
331932548(c)Y
331943 f
331951829 2788(Figure)N
331962101(12.)X
331971 f
331982255(Array)X
331992481(ordering)X
33200576 2944(The)N
33201735(ordering)X
332021055(attribute)X
332031372(may)X
332041546(optionally)X
332051927(appear)X
332062183(on)X
332072293(one-dimensional)X
332082903(arrays;)X
332093164(it)X
332103236(will)X
332113396(be)X
332123501(ignored.)X
33213576 3100(An)N
33214718(array)X
33215933(type)X
332161120(entry)X
332171336(has)X
332181488(a)X
332190 f
332201562(DW_AT_type)X
332211 f
332222127(attribute)X
332232458(describing)X
332242861(the)X
332253005(type)X
332263193(of)X
332273302(each)X
332283499(element)X
332293815(of)X
332303924(the)X
33231576 3204(array.)N
33232576 3360(If)N
33233665(the)X
33234804(amount)X
332351100(of)X
332361204(storage)X
332371490(allocated)X
332381841(to)X
332391942(hold)X
332402131(each)X
332412324(element)X
332422636(of)X
332432741(an)X
332442856(object)X
332453104(of)X
332463209(the)X
332473349(given)X
332483577(array)X
332493789(type)X
332503973(is)X
33251576 3464(different)N
33252904(from)X
332531100(the)X
332541233(amount)X
332551522(of)X
332561619(storage)X
332571897(that)X
332582054(is)X
332592137(normally)X
332602480(allocated)X
332612823(to)X
332622916(hold)X
332633097(an)X
332643204(individual)X
332653587(object)X
332663827(of)X
332673924(the)X
33268576 3568(indicated)N
33269925(element)X
332701230(type,)X
332711429(then)X
332721606(the)X
332731739(array)X
332741945(type)X
332752123(entry)X
332762330(has)X
332772473(a)X
332780 f
332792538 0.1992(DW_AT_stride_size)AX
332801 f
332813465(attribute,)X
332823808(whose)X
33283576 3672(constant)N
33284892(value)X
332851105(represents)X
332861483(the)X
332871613(size)X
332881772(in)X
332891863(bits)X
332902013(of)X
332912108(each)X
332922291(element)X
332932593(of)X
332942688(the)X
332952818(array.)X
33296576 3828(If)N
33297664(the)X
33298802(size)X
33299969(of)X
333001072(the)X
333011210(entire)X
333021441(array)X
333031651(can)X
333041803(be)X
333051917(determined)X
333062345(statically)X
333072696(at)X
333082791(compile)X
333093107(time,)X
333103318(the)X
333113457(array)X
333123668(type)X
333133851(entry)X
33314576 3932(may)N
33315766(have)X
33316970(a)X
333170 f
333181047(DW_AT_byte_size)X
333191 f
333201880(attribute,)X
333212235(whose)X
333222497(constant)X
333232828(value)X
333243056(represents)X
333253449(the)X
333263594(total)X
333273789(size)X
333283963(in)X
33329576 4036(bytes)N
33330784(of)X
33331879(an)X
33332984(instance)X
333331295(of)X
333341390(the)X
333351520(array)X
333361722(type.)X
333372 f
33338576 4192(Note)N
33339777(that)X
33340949(if)X
333411033(the)X
333421175(size)X
333431341(of)X
333441445(the)X
333451588(array)X
333461818(can)X
333471980(be)X
333482098(determined)X
333492529(statically)X
333502889(at)X
333512993(compile)X
333523307(time,)X
333533516(this)X
333543679(value)X
333553905(can)X
33356576 4296(usually)N
33357853(be)X
33358958(computed)X
333591322(by)X
333601427(multiplying)X
333611852(the)X
333621982(number)X
333632272(of)X
333642363(array)X
333652580(elements)X
333662910(by)X
333673015(the)X
333683145(size)X
333693299(of)X
333703390(each)X
333713578(element.)X
333721 f
33373576 4452(Each)N
33374803(array)X
333751034(dimension)X
333761453(is)X
333771563(described)X
333781951(by)X
333792090(a)X
333802180(debugging)X
333812603(information)X
333823071(entry)X
333833303(with)X
333843511(either)X
333853764(the)X
333863924(tag)X
333870 f
33388576 4556 0.1974(DW_TAG_subrange_type)AN
333891 f
333901678(or)X
333911793(the)X
333921943(tag)X
333930 f
333942093 0.1960(DW_TAG_enumeration_type)AX
333951 f
333963312(.)X
333973398(These)X
333983649(entries)X
333993925(are)X
33400576 4660(children)N
33401889(of)X
33402986(the)X
334031118(array)X
334041322(type)X
334051498(entry)X
334061703(and)X
334071855(are)X
334081987(ordered)X
334092280(to)X
334102374(re\257ect)X
334112619(the)X
334122752(appearance)X
334133172(of)X
334143270(the)X
334153403(dimensions)X
334163830(in)X
334173924(the)X
33418576 4764(source)N
33419827(program)X
334201147(\(i.e.)X
334211306(leftmost)X
334221618(dimension)X
334232008(\256rst,)X
334242189(next)X
334252363(to)X
334262454(leftmost)X
334272766(second,)X
334283054(and)X
334293203(so)X
334303303(on\).)X
334312 f
33432576 4920(In)N
33433678(languages,)X
334341091(such)X
334351281(as)X
334361388(ANSI-C,)X
334371713(in)X
334381811(which)X
334392051(there)X
334402261(is)X
334412349(no)X
334422466(concept)X
334432769(of)X
334442867(a)X
334452940(``multidimensional)X
334463640(array,'')X
334473944(an)X
33448576 5024(array)N
33449807(of)X
33450912(arrays)X
334511177(may)X
334521359(be)X
334531478(represented)X
334541929(by)X
334552048(a)X
334562127(debugging)X
334572534(information)X
334582986(entry)X
334593202(for)X
334603340(a)X
334613419(multidimensional)X
33462576 5128(array.)N
334633 f
3346412 s
33465576 5284(5.5)N
33466744(Structure,)X
334671187(Union,)X
334681485(and)X
334691663(Class)X
334701905(Type)X
334712137(Entries)X
334722 f
3347311 s
33474576 5440(The)N
33475730(languages)X
334761115(C,)X
334771219(C++,)X
334781441(and)X
334791596(Pascal,)X
334801881(among)X
334812143(others,)X
334822408(allow)X
334832628(the)X
334842759(programmer)X
334853225(to)X
334863317(de\256ne)X
334873550(types)X
334883754(that)X
334893915(are)X
33490576 5544(collections)N
33491986(of)X
334921082(related)X
334931359(components.)X
334941850(In)X
334951950(C)X
334962036(and)X
334972195(C++,)X
334982420(these)X
334992627(collections)X
335003036(are)X
335013179(called)X
335023421(``structures.'')X
335033959(In)X
33504576 5648(Pascal,)N
33505865(they)X
335061039(are)X
335071183(called)X
335081426(``records.'')X
335091881(The)X
335102041(components)X
335112489(may)X
335122663(be)X
335132774(of)X
335142871(different)X
335153199(types.)X
335163452(The)X
335173612(components)X
33518576 5752(are)N
33519715(called)X
33520953(``members'')X
335211407(in)X
335221498(C)X
335231579(and)X
335241733(C++,)X
335251954(and)X
335262108(``\256elds'')X
335272432(in)X
335282523(Pascal.)X
335291 f
3353010 s
33531576 5951(Revision:)N
33532902(2.0.0)X
335332176(Page)X
335342352(39)X
335353599(July)X
335363752(27,)X
335373872(1993)X
335381943 6055(Industry)N
335392230(Review)X
335402495(Draft)X
33541
3354240 p
33543%%Page: 40 42
335440(Courier)xf 0 f
3354510 s 0 xH 0 xS 0 f
3354611 s
335471 f
3354810 s
33549576 520(DWARF)N
33550885(Debugging)X
335511261(Information)X
335521664(Format)X
335532 f
3355411 s
33555576 832(The)N
33556743(components)X
335571198(of)X
335581302(these)X
335591519(collections)X
335601938(each)X
335612140(exist)X
335622338(in)X
335632443(their)X
335642646(own)X
335652829(space)X
335663065(in)X
335673170(computer)X
335683538(memory.)X
335693900(The)X
33570576 936(components)N
335711018(of)X
335721109(a)X
335731175(C)X
335741256(or)X
335751356(C++)X
335761555(``union'')X
335771894(all)X
335782010(coexist)X
335792277(in)X
335802368(the)X
335812498(same)X
335822700(memory.)X
33583576 1092(Pascal)N
33584855(and)X
335851026(other)X
335861251(languages)X
335871652(have)X
335881857(a)X
335891940(``discriminated)X
335902522(union,'')X
335912842(also)X
335923028(called)X
335933283(a)X
335943366(``variant)X
335953718(record.'')X
33596576 1196(Here,)N
33597801(selection)X
335981143(of)X
335991240(a)X
336001312(number)X
336011608(of)X
336021705(alternative)X
336032115(substructures)X
336042616(\(``variants''\))X
336053106(is)X
336063192(based)X
336073424(on)X
336083539(the)X
336093674(value)X
336103892(of)X
336113988(a)X
33612576 1300(component)N
33613984(that)X
336141144(is)X
336151225(not)X
336161360(part)X
336171529(of)X
336181620(any)X
336191769(of)X
336201860(those)X
336212068(substructures)X
336222564(\(the)X
336232723(``discriminant''\).)X
33624576 1456(Among)N
33625848(the)X
33626979(languages)X
336271364(discussed)X
336281724(in)X
336291816(this)X
336301967(document,)X
336312354(the)X
336322485(``class'')X
336332800(concept)X
336343097(is)X
336353179(unique)X
336363442(to)X
336373534(C++.)X
336383778(A)X
336393856(class)X
33640576 1560(is)N
33641669(similar)X
33642953(to)X
336431056(a)X
336441134(structure.)X
336451530(A)X
336461618(C++)X
336471829(class)X
336482039(or)X
336492151(structure)X
336502503(may)X
336512683(have)X
336522883(``member)X
336533256(functions'')X
336543671(which)X
336553915(are)X
33656576 1664(subroutines)N
336571009(that)X
336581169(are)X
336591308(within)X
336601552(the)X
336611682(scope)X
336621904(of)X
336631995(a)X
336642061(class)X
336652259(or)X
336662359(structure.)X
336673 f
33668576 1820(5.5.1)N
33669796(General)X
336701122(Structure)X
336711505(Description)X
336721 f
33673576 1976(Structure,)N
33674949(union,)X
336751200(and)X
336761355(class)X
336771554(types)X
336781769(are)X
336791905(represented)X
336802339(by)X
336812456(debugging)X
336822857(information)X
336833303(entries)X
336843567(with)X
336853753(the)X
336863890(tags)X
336870 f
33688576 2080 0.1969(DW_TAG_structure_type)AN
336891 f
336901689(,)X
336910 f
336921835 0.1992(DW_TAG_union_type)AX
336931 f
336942859(and)X
336950 f
336963109 0.1992(DW_TAG_class_type)AX
336971 f
336984010(,)X
33699576 2184(respectively.)N
337001078(If)X
337011168(a)X
337021239(name)X
337031462(has)X
337041611(been)X
337051809(given)X
337062037(to)X
337072138(the)X
337082278(structure,)X
337092641(union,)X
337102897(or)X
337113003(class)X
337123207(in)X
337133309(the)X
337143450(source)X
337153712(program,)X
33716576 2288(then)N
33717773(the)X
33718925(corresponding)X
337191472(structure)X
337201824(type,)X
337212042(union)X
337222287(type,)X
337232505(or)X
337242622(class)X
337252837(type)X
337263033(entry)X
337273258(has)X
337283419(a)X
337290 f
337303502(DW_AT_name)X
337311 f
33732576 2392(attribute)N
33733905(whose)X
337341163(value)X
337351388(is)X
337361481(a)X
337371554(null-terminated)X
337382133(string)X
337392368(containing)X
337402775(the)X
337412917(type)X
337423103(name)X
337433328(as)X
337443435(it)X
337453519(appears)X
337463821(in)X
337473924(the)X
33748576 2496(source)N
33749827(program.)X
33750576 2652(If)N
33751661(the)X
33752796(size)X
33753960(of)X
337541060(an)X
337551170(instance)X
337561486(of)X
337571586(the)X
337581721(structure)X
337592056(type,)X
337602257(union)X
337612485(type,)X
337622686(or)X
337632786(class)X
337642985(type)X
337653165(entry)X
337663374(can)X
337673524(be)X
337683635(determined)X
33769576 2756(statically)N
33770920(at)X
337711008(compile)X
337721317(time,)X
337731521(the)X
337741653(entry)X
337751857(has)X
337761997(a)X
337770 f
337782059(DW_AT_byte_size)X
337791 f
337802877(attribute)X
337813195(whose)X
337823442(constant)X
337833759(value)X
337843973(is)X
33785576 2860(the)N
33786707(number)X
33787999(of)X
337881095(bytes)X
337891304(required)X
337901620(to)X
337911712(hold)X
337921892(an)X
337931998(instance)X
337942310(of)X
337952406(the)X
337962537(structure,)X
337972890(union,)X
337983136(or)X
337993232(class,)X
338003448(and)X
338013598(any)X
338023748(padding)X
33803576 2964(bytes.)N
338042 f
33805576 3120(For)N
33806731(C)X
33807813(and)X
33808968(C++,)X
338091190(an)X
338101301(incomplete)X
338111711(structure,)X
338122074(union)X
338132298(or)X
338142399(class)X
338152599(type)X
338162770(is)X
338172853(represented)X
338183292(by)X
338193399(a)X
338203467(structure,)X
338213831(union)X
33822576 3224(or)N
33823686(class)X
33824894(entry)X
338251107(that)X
338261277(does)X
338271470(not)X
338281615(have)X
338291813(a)X
338301889(byte)X
338312068(size)X
338322232(attribute)X
338332569(and)X
338342733(that)X
338352903(has)X
338363056(a)X
338370 f
338383131 0.1992(DW_AT_declaration)AX
338392 f
33840576 3328(attribute.)N
338411 f
33842576 3484(The)N
33843736(members)X
338441082(of)X
338451178(a)X
338461240(structure,)X
338471593(union,)X
338481839(or)X
338491936(class)X
338502131(are)X
338512262(represented)X
338522691(by)X
338532803(debugging)X
338543199(information)X
338553640(entries)X
338563899(that)X
33857576 3588(are)N
33858711(owned)X
33859973(by)X
338601089(the)X
338611225(corresponding)X
338621756(structure)X
338632092(type,)X
338642294(union)X
338652523(type,)X
338662725(or)X
338672826(class)X
338683025(type)X
338693205(entry)X
338703413(and)X
338713567(appear)X
338723828(in)X
338733924(the)X
33874576 3692(same)N
33875779(order)X
33876986(as)X
338771081(the)X
338781211(corresponding)X
338791736(declarations)X
338802184(in)X
338812275(the)X
338822405(source)X
338832656(program.)X
338842 f
33885576 3848(Data)N
33886784(member)X
338871098(declarations)X
338881571(occurring)X
338891950(within)X
338902204(the)X
338912344(declaration)X
338922783(of)X
338932884(a)X
338942960(structure,)X
338953332(union)X
338963565(or)X
338973676(class)X
338983885(type)X
33899576 3952(are)N
33900723(considered)X
339011139(to)X
339021238(be)X
339031351(``de\256nitions'')X
339041865(of)X
339051964(those)X
339062180(members,)X
339072548(with)X
339082730(the)X
339092867(exception)X
339103234(of)X
339113332(C++)X
339123538(``static'')X
339133875(data)X
33914576 4056(members,)N
33915937(whose)X
339161180(de\256nitions)X
339171571(appear)X
339181843(outside)X
339192122(of)X
339202215(the)X
339212347(declaration)X
339222778(of)X
339232871(the)X
339243003(enclosing)X
339253365(structure,)X
339263729(union)X
339273954(or)X
33928576 4160(class)N
33929792(type.)X
339301023(Function)X
339311382(member)X
339321704(declarations)X
339332185(appearing)X
339342587(within)X
339352849(a)X
339362933(structure,)X
339373313(union)X
339383553(or)X
339393670(class)X
339403885(type)X
33941576 4264(declaration)N
339421033(are)X
339431200(de\256nitions)X
339441618(only)X
339451820(if)X
339461920(the)X
339472079(body)X
339482301(of)X
339492421(the)X
339502580(function)X
339512921(also)X
339523119(appears)X
339533453(within)X
339543726(the)X
339553885(type)X
33956576 4368(declaration.)N
339571 f
33958576 4524(If)N
33959665(the)X
33960804(de\256nition)X
339611174(for)X
339621307(a)X
339631377(given)X
339641604(member)X
339651924(of)X
339662028(the)X
339672167(structure,)X
339682528(union)X
339692760(or)X
339702864(class)X
339713066(does)X
339723258(not)X
339733402(appear)X
339743667(within)X
339753924(the)X
33976576 4628(body)N
33977794(of)X
33978909(the)X
339791059(declaration,)X
339801515(that)X
339811690(member)X
339822021(also)X
339832205(has)X
339842364(a)X
339852445(debugging)X
339862859(information)X
339873318(entry)X
339883540(describing)X
339893948(its)X
33990576 4732(de\256nition.)N
339911023(That)X
339921249(entry)X
339931494(will)X
339941696(have)X
339951926(a)X
339960 f
339972029 0.1979(DW_AT_specification)AX
339981 f
339993100(attribute)X
340003459(referencing)X
340013924(the)X
34002576 4836(debugging)N
34003996(entry)X
340041225(owned)X
340051507(by)X
340061642(the)X
340071797(body)X
340082020(of)X
340092140(the)X
340102295(structure,)X
340112672(union)X
340122920(or)X
340133040(class)X
340143258(debugging)X
340153677(entry)X
340163905(and)X
34017576 4940(representing)N
340181033(a)X
340191094(non-de\256ning)X
340201566(declaration)X
340211980(of)X
340222075(the)X
340232205(data)X
340242374(or)X
340252469(function)X
340262785(member.)X
340273140(The)X
340283299(referenced)X
340293691(entry)X
340303894(will)X
34031576 5044(not)N
34032718(have)X
34033913(information)X
340341359(about)X
340351583(the)X
340361719(location)X
340372032(of)X
340382133(that)X
340392294(member)X
340402611(\(low)X
340412800(and)X
340422955(high)X
340433140(pc)X
340443251(attributes)X
340453608(for)X
340463738(function)X
34047576 5148(members,)N
34048963(location)X
340491290(descriptions)X
340501759(for)X
340511904(data)X
340522094(members\))X
340532489(and)X
340542659(will)X
340552840(have)X
340563049(a)X
340570 f
340583131 0.1992(DW_AT_declaration)AX
340591 f
34060576 5252(attribute.)N
340613 f
34062576 5408(5.5.2)N
34063796(Derived)X
340641116(Classes)X
340651411(and)X
340661575(Structures)X
340671 f
34068576 5564(The)N
34069740(class)X
34070938(type)X
340711117(or)X
340721217(structure)X
340731552(type)X
340741731(entry)X
340751939(that)X
340762099(describes)X
340772453(a)X
340782519(derived)X
340792811(class)X
340803010(or)X
340813111(structure)X
340823447(owns)X
340833660(debugging)X
34084576 5668(information)N
340851019(entries)X
340861280(describing)X
340871672(each)X
340881858(of)X
340891956(the)X
340902089(classes)X
340912358(or)X
340922456(structures)X
340932823(it)X
340942898(is)X
340952982(derived)X
340963271(from,)X
340973489(ordered)X
340983782(as)X
340993880(they)X
34100576 5772(were)N
34101768(in)X
34102859(the)X
34103989(source)X
341041240(program.)X
341051604(Each)X
341061802(such)X
341071985(entry)X
341082188(has)X
341092327(the)X
341102457(tag)X
341110 f
341122587 0.1985(DW_TAG_inheritance)AX
341131 f
341143541(.)X
3411510 s
34116576 5951(Revision:)N
34117902(2.0.0)X
341182176(Page)X
341192352(40)X
341203599(July)X
341213752(27,)X
341223872(1993)X
341231943 6055(Industry)N
341242230(Review)X
341252495(Draft)X
34126
3412741 p
34128%%Page: 41 43
341290(Courier)xf 0 f
3413010 s 0 xH 0 xS 0 f
3413111 s
341321 f
3413310 s
341343075 520(Programming)N
341353535(Languages)X
341363903(SIG)X
3413711 s
34138576 832(An)N
34139712(inheritance)X
341401133(entry)X
341411343(has)X
341421489(a)X
341430 f
341441557(DW_AT_type)X
341451 f
341462116(attribute)X
341472440(whose)X
341482693(value)X
341492913(is)X
341503001(a)X
341513069(reference)X
341523424(to)X
341533522(the)X
341543660(debugging)X
34155576 936(information)N
341561019(entry)X
341571226(describing)X
341581619(the)X
341591753(structure)X
341602087(or)X
341612186(class)X
341622383(from)X
341632580(which)X
341642821(the)X
341652954(parent)X
341663199(structure)X
341673532(or)X
341683630(class)X
341693826(of)X
341703924(the)X
34171576 1040(inheritance)N
34172992(entry)X
341731197(is)X
341741280(derived.)X
341751612(It)X
341761690(also)X
341771857(has)X
341781999(a)X
341790 f
341802063 0.1950(DW_AT_data_member_location)AX
341811 f
341823466(attribute,)X
341833808(whose)X
34184576 1144(value)N
34185806(is)X
34186904(a)X
34187982(location)X
341881306(description)X
341891737(describing)X
341902143(the)X
341912290(location)X
341922614(of)X
341932726(the)X
341942873(beginning)X
341953265(of)X
341963377(the)X
341973524(data)X
341983709(members)X
34199576 1248(contributed)N
342001015(to)X
342011121(the)X
342021266(entire)X
342031504(class)X
342041712(by)X
342051838(this)X
342062004(subobject)X
342072380(relative)X
342082683(to)X
342092790(the)X
342102936(beginning)X
342113327(address)X
342123628(of)X
342133739(the)X
342143885(data)X
34215576 1352(members)N
34216921(of)X
342171016(the)X
342181146(entire)X
342191369(class.)X
34220576 1508(An)N
34221732(inheritance)X
342221173(entry)X
342231403(may)X
342241604(have)X
342251819(a)X
342260 f
342271907 0.1979(DW_AT_accessibility)AX
342281 f
342292963(attribute.)X
342303351(If)X
342313458(no)X
342323595(accessibility)X
34233576 1612(attribute)N
34234919(is)X
342351026(present,)X
342361350(private)X
342371643(access)X
342381915(is)X
342392022(assumed.)X
342402417(If)X
342412523(the)X
342422679(structure)X
342433034(or)X
342443154(class)X
342453372(referenced)X
342463789(by)X
342473924(the)X
34248576 1716(inheritance)N
34249990(entry)X
342501193(serves)X
342511434(as)X
342521529(a)X
342531590(virtual)X
342541843(base)X
342552021(class,)X
342562236(the)X
342572366(inheritance)X
342582780(entry)X
342592983(has)X
342603122(a)X
342610 f
342623184(DW_AT_virtuality)X
342631 f
34264576 1820(attribute.)N
342652 f
34266576 1976(In)N
34267696(C++,)X
34268942(a)X
342691033(derived)X
342701344(class)X
342711567(may)X
342721760(contain)X
342732072(access)X
342742348(declarations)X
342752836(that)X
342763021(change)X
342773322(the)X
342783478(accessibility)X
342793963(of)X
34280576 2080(individual)N
34281964(class)X
342821169(members)X
342831514(from)X
342841709(the)X
342851846(overall)X
342862125(accessibility)X
342872590(speci\256ed)X
342882926(by)X
342893037(the)X
342903173(inheritance)X
342913603(declaration.)X
34292576 2184(A)N
34293652(single)X
34294885(access)X
342951136(declaration)X
342961565(may)X
342971733(refer)X
342981926(to)X
342992017(a)X
343002083(set)X
343012203(of)X
343022294(overloaded)X
343032712(names.)X
343041 f
34305576 2340(If)N
34306682(a)X
34307769(derived)X
343081081(class)X
343091300(or)X
343101421(structure)X
343111777(contains)X
343122119(access)X
343132391(declarations,)X
343142887(each)X
343153097(such)X
343163307(declaration)X
343173748(may)X
343183949(be)X
34319576 2444(represented)N
343201007(by)X
343211121(a)X
343221186(debugging)X
343231584(information)X
343242027(entry)X
343252234(with)X
343262417(the)X
343272551(tag)X
343280 f
343292685 0.1953(DW_TAG_access_declaration)AX
343301 f
343314010(.)X
34332576 2548(Each)N
34333774(such)X
34334957(entry)X
343351160(is)X
343361241(a)X
343371302(child)X
343381501(of)X
343391596(the)X
343401726(structure)X
343412056(or)X
343422151(class)X
343432344(type)X
343442518(entry.)X
34345576 2704(An)N
34346705(access)X
34347951(declaration)X
343481365(entry)X
343491568(has)X
343501707(a)X
343510 f
343521768(DW_AT_name)X
343531 f
343542320(attribute,)X
343552659(whose)X
343562905(value)X
343573119(is)X
343583201(a)X
343593263(null-terminated)X
343603831(string)X
34361576 2808(representing)N
343621052(the)X
343631200(name)X
343641431(used)X
343651632(in)X
343661741(the)X
343671889(declaration)X
343682321(in)X
343692430(the)X
343702578(source)X
343712847(program,)X
343723207(including)X
343733581(any)X
343743748(class)X
343753959(or)X
34376576 2912(structure)N
34377906(quali\256ers.)X
34378576 3068(An)N
34379730(access)X
343801001(declaration)X
343811440(entry)X
343821669(also)X
343831859(has)X
343842024(a)X
343850 f
343862111 0.1979(DW_AT_accessibility)AX
343871 f
343883166(attribute)X
343893509(describing)X
343903924(the)X
34391576 3172(declared)N
34392896(accessibility)X
343931355(of)X
343941450(the)X
343951580(named)X
343961837(entities.)X
343973 f
34398576 3328(5.5.3)N
34399796(Friends)X
344001 f
34401576 3484(Each)N
34402782(``friend'')X
344031138(declared)X
344041467(by)X
344051586(a)X
344061656(structure,)X
344072017(union)X
344082249(or)X
344092353(class)X
344102555(type)X
344112738(may)X
344122921(be)X
344133035(represented)X
344143471(by)X
344153590(a)X
344163660(debugging)X
34417576 3588(information)N
344181016(entry)X
344191220(that)X
344201376(is)X
344211458(a)X
344221520(child)X
344231720(of)X
344241816(the)X
344251947(structure,)X
344262300(union)X
344272524(or)X
344282620(class)X
344292814(type)X
344302989(entry;)X
344313218(the)X
344323349(friend)X
344333582(entry)X
344343785(has)X
344353924(the)X
34436576 3692(tag)N
344370 f
34438706(DW_TAG_friend.)X
344391 f
34440576 3848(A)N
34441675(friend)X
34442921(entry)X
344431138(has)X
344441291(a)X
344450 f
344461366(DW_AT_friend)X
344471 f
344482038(attribute,)X
344492391(whose)X
344502651(value)X
344512878(is)X
344522973(a)X
344533048(reference)X
344543410(to)X
344553515(the)X
344563660(debugging)X
34457576 3952(information)N
344581015(entry)X
344591218(describing)X
344601607(the)X
344611737(declaration)X
344622151(of)X
344632246(the)X
344642376(friend.)X
344653 f
34466576 4108(5.5.4)N
34467796(Structure)X
344681179(Data)X
344691381(Member)X
344701725(Entries)X
344711 f
34472576 4264(A)N
34473672(data)X
34474852(member)X
344751174(\(as)X
344761309(opposed)X
344771635(to)X
344781737(a)X
344791809(member)X
344802131(function\))X
344812487(is)X
344822579(represented)X
344833017(by)X
344843138(a)X
344853210(debugging)X
344863615(information)X
34487576 4368(entry)N
34488814(with)X
344891028(the)X
344901193(tag)X
344910 f
344921358(DW_TAG_member)X
344931 f
344942047(.)X
344952148(The)X
344962342(member)X
344972688(entry)X
344982926(for)X
344993085(a)X
345003181(named)X
345013473(member)X
345023819(has)X
345033993(a)X
345040 f
34505576 4472(DW_AT_name)N
345061 f
345071128(attribute)X
345081445(whose)X
345091691(value)X
345101904(is)X
345111985(a)X
345122046(null-terminated)X
345132613(string)X
345142836(containing)X
345153231(the)X
345163361(member)X
345173672(name)X
345183886(as)X
345193982(it)X
34520576 4576(appears)N
34521868(in)X
34522961(the)X
345231093(source)X
345241346(program.)X
345251712(If)X
345261794(the)X
345271925(member)X
345282237(entry)X
345292441(describes)X
345302791(a)X
345312853(C++)X
345323035(anonymous)X
345333464(union,)X
345343710(the)X
345353841(name)X
34536576 4680(attribute)N
34537893(is)X
34538974(omitted)X
345391267(or)X
345401362(consists)X
345411663(of)X
345421758(a)X
345431819(single)X
345442052(zero)X
345452225(byte.)X
34546576 4836(The)N
34547735(structure)X
345481065(data)X
345491234(member)X
345501545(entry)X
345511748(has)X
345521887(a)X
345530 f
345541948(DW_AT_type)X
345551 f
345562500(attribute)X
345572817(to)X
345582908(denote)X
345593165(the)X
345603295(type)X
345613469(of)X
345623564(that)X
345633719(member.)X
34564576 4992(If)N
34565731(the)X
34566936(member)X
345671322(entry)X
345681601(is)X
345691758(de\256ned)X
345702115(in)X
345712282(the)X
345722488(structure)X
345732894(or)X
345743065(class)X
345753334(body,)X
345763630(it)X
345773778(has)X
345783993(a)X
345790 f
34580576 5096 0.1950(DW_AT_data_member_location)AN
345811 f
345822012(attribute)X
345832365(whose)X
345842647(value)X
345852896(is)X
345863012(a)X
345873108(location)X
345883450(description)X
345893899(that)X
34590576 5200(describes)N
34591928(the)X
345921061(location)X
345931371(of)X
345941469(that)X
345951627(member)X
345961941(relative)X
345972231(to)X
345982325(the)X
345992458(base)X
346002639(address)X
346012927(of)X
346023025(the)X
346033158(structure,)X
346043513(union,)X
346053762(or)X
346063861(class)X
34607576 5304(that)N
34608731(most)X
34609925(closely)X
346101197(encloses)X
346111517(the)X
346121647(corresponding)X
346132172(member)X
346142483(declaration.)X
346152 f
34616576 5460(The)N
34617738(addressing)X
346181154(expression)X
346191560(represented)X
346202005(by)X
346212118(the)X
346222256(location)X
346232576(description)X
346243004(for)X
346253138(a)X
346263213(structure)X
346273562(data)X
346283750(member)X
34629576 5564(expects)N
34630860(the)X
34631993(base)X
346321179(address)X
346331477(of)X
346341571(the)X
346351704(structure)X
346362047(data)X
346372229(member)X
346382536(to)X
346392630(be)X
346402738(on)X
346412850(the)X
346422982(expression)X
346433382(stack)X
346443587(before)X
346453836(being)X
34646576 5668(evaluated.)N
346471 f
3464810 s
34649576 5951(Revision:)N
34650902(2.0.0)X
346512176(Page)X
346522352(41)X
346533599(July)X
346543752(27,)X
346553872(1993)X
346561943 6055(Industry)N
346572230(Review)X
346582495(Draft)X
34659
3466042 p
34661%%Page: 42 44
346620(Courier)xf 0 f
3466310 s 0 xH 0 xS 0 f
3466411 s
346651 f
3466610 s
34667576 520(DWARF)N
34668885(Debugging)X
346691261(Information)X
346701664(Format)X
346712 f
3467211 s
34673576 832(The)N
34674731(location)X
346751044(description)X
346761464(for)X
346771590(a)X
346781658(data)X
346791839(member)X
346802145(of)X
346812238(a)X
346822306(union)X
346832531(may)X
346842701(be)X
346852808(omitted,)X
346863119(since)X
346873324(all)X
346883442(data)X
346893623(members)X
346903963(of)X
34691576 936(a)N
34692642(union)X
34693865(begin)X
346941083(at)X
346951174(the)X
346961304(same)X
346971506(address.)X
346981 f
34699576 1092(If)N
34700656(the)X
34701786(member)X
347021097(entry)X
347031300(describes)X
347041649(a)X
347051710(bit)X
347061826(\256eld,)X
347072027(then)X
347082201(that)X
347092356(entry)X
347102559(has)X
347112698(the)X
347122828(following)X
347133193(attributes:)X
34714642 1248(1.)N
34715796(A)X
347160 f
34717882(DW_AT_byte_size)X
347181 f
347191700(attribute)X
347202019(whose)X
347212267(constant)X
347222585(value)X
347232800(is)X
347242883(the)X
347253015(number)X
347263308(of)X
347273405(bytes)X
347283615(that)X
347293772(contain)X
34730796 1352(an)N
34731901(instance)X
347321212(of)X
347331307(the)X
347341437(bit)X
347351553(\256eld)X
347361732(and)X
347371881(any)X
347382030(padding)X
347392336(bits.)X
347402 f
34741796 1508(The)N
34742950(byte)X
347431119(size)X
347441273(attribute)X
347451600(may)X
347461768(be)X
347471873(omitted)X
347482160(if)X
347492232(the)X
347502362(size)X
347512516(of)X
347522607(the)X
347532737(object)X
347542975(containing)X
347553376(the)X
347563507(bit)X
347573624(\256eld)X
347583799(can)X
347593949(be)X
34760796 1612(inferred)N
347611102(from)X
347621290(the)X
347631420(type)X
347641589(attribute)X
347651916(of)X
347662007(the)X
347672137(data)X
347682316(member)X
347692620(containing)X
347703020(the)X
347713150(bit)X
347723266(\256eld.)X
347731 f
34774642 1768(2.)N
34775796(A)X
347760 f
34777881(DW_AT_bit_offset)X
347781 f
347791751(attribute)X
347802068(whose)X
347812314(constant)X
347822630(value)X
347832843(is)X
347842925(the)X
347853056(number)X
347863348(of)X
347873444(bits)X
347883595(to)X
347893687(the)X
347903818(left)X
347913959(of)X
34792796 1872(the)N
34793926(leftmost)X
347941238(\(most)X
347951461(signi\256cant\))X
347961880(bit)X
347971996(of)X
347982091(the)X
347992221(bit)X
348002337(\256eld)X
348012516(value.)X
34802642 2028(3.)N
34803796(A)X
348040 f
34805891(DW_AT_bit_size)X
348061 f
348071665(attribute)X
348081992(whose)X
348092248(constant)X
348102574(value)X
348112797(is)X
348122888(the)X
348133028(number)X
348143329(of)X
348153434(bits)X
348163594(occupied)X
348173944(by)X
34818796 2132(the)N
34819926(bit)X
348201042(\256eld)X
348211221(value.)X
34822576 2288(The)N
34823740(location)X
348241052(description)X
348251471(for)X
348261600(a)X
348271666(bit)X
348281787(\256eld)X
348291971(calculates)X
348302346(the)X
348312481(address)X
348322771(of)X
348332871(an)X
348342981(anonymous)X
348353415(object)X
348363659(containing)X
34837576 2392(the)N
34838708(bit)X
34839826(\256eld.)X
348401051(The)X
348411211(address)X
348421497(is)X
348431579(relative)X
348441867(to)X
348451959(the)X
348462090(structure,)X
348472443(union,)X
348482689(or)X
348492785(class)X
348502979(that)X
348513135(most)X
348523330(closely)X
348533603(encloses)X
348543924(the)X
34855576 2496(bit)N
34856696(\256eld)X
34857879(declaration.)X
348581342(The)X
348591506(number)X
348601802(of)X
348611902(bytes)X
348622115(in)X
348632211(this)X
348642366(anonymous)X
348652799(object)X
348663042(is)X
348673128(the)X
348683263(value)X
348693481(of)X
348703581(the)X
348713716(byte)X
348723895(size)X
34873576 2600(attribute)N
34874894(of)X
34875990(the)X
348761121(bit)X
348771237(\256eld.)X
348781460(The)X
348791619(offset)X
348801841(\(in)X
348811961(bits\))X
348822140(from)X
348832333(the)X
348842463(most)X
348852657(signi\256cant)X
348863047(bit)X
348873163(of)X
348883258(the)X
348893388(anonymous)X
348903816(object)X
34891576 2704(to)N
34892667(the)X
34893797(most)X
34894991(signi\256cant)X
348951381(bit)X
348961497(of)X
348971592(the)X
348981722(bit)X
348991838(\256eld)X
349002017(is)X
349012098(the)X
349022228(value)X
349032441(of)X
349042536(the)X
349052666(bit)X
349062782(offset)X
349073004(attribute.)X
349082 f
34909576 2860(For)N
34910741(example,)X
349111089(take)X
349121269(one)X
349131429(possible)X
349141751(representation)X
349152298(of)X
349162400(the)X
349172541(following)X
349182909(structure)X
349193260(de\256nition)X
349203627(in)X
349213729(both)X
349223919(big)X
34923576 2964(and)N
34924730(little)X
34925916(endian)X
349261178(byte)X
349271347(orders:)X
349280 f
34929576 3224(struct)N
34930947(S)X
349311053({)X
349321468 3328(int)N
349331786(j:5;)X
349341468 3432(int)N
349351786(k:6;)X
349361468 3536(int)N
349371786(m:5;)X
349381468 3640(int)N
349391786(n:8;)X
34940576 3744(};)N
349412 f
34942576 3900(In)N
34943676(both)X
34944860(cases,)X
349451099(the)X
349461234(location)X
349471551(descriptions)X
349482009(for)X
349492140(the)X
349502276(debugging)X
349512676(information)X
349523121(entries)X
349533389(for)X
349540 f
349553551(j)X
349562 f
349573604(,)X
349580 f
349593685(k)X
349602 f
349613738(,)X
349620 f
349633819(m)X
349642 f
349653900(and)X
349660 f
34967576 4004(n)N
349682 f
34969665(describe)X
34970999(the)X
349711143(address)X
349721452(of)X
349731557(the)X
349741701(same)X
349751917(32-bit)X
349762164(word)X
349772381(that)X
349782555(contains)X
349792890(all)X
349803020(three)X
349813237(members.)X
349823610(\(In)X
349833747(the)X
349843890(big-)X
34985576 4108(endian)N
34986838(case,)X
349871039(the)X
349881170(location)X
349891483(description)X
349901903(addresses)X
349912272(the)X
349922403(most)X
349932592(signi\256cant)X
349942983(byte,)X
349953175(in)X
349963267(the)X
349973398(little-endian)X
349983854(case,)X
34999576 4212(the)N
35000715(least)X
35001913(signi\256cant\).)X
350021363(The)X
350031526(following)X
350041892(diagram)X
350052221(shows)X
350062467(the)X
350072606(structure)X
350082955(layout)X
350093207(and)X
350103370(lists)X
350113544(the)X
350123682(bit)X
350133806(offsets)X
35014576 4316(for)N
35015701(each)X
35016889(case.)X
350171111(The)X
350181265(offsets)X
350191513(are)X
350201652(from)X
350211840(the)X
350221970(most)X
350232158(signi\256cant)X
350242548(bit)X
350252664(of)X
350262756(the)X
350272887(object)X
350283126(addressed)X
350293505(by)X
350303611(the)X
350313742(location)X
35032576 4420(description.)N
350331 f
35034576 4640(Bit)N
35035707(Offsets:)X
350360 f
35037788 4737(j:0)N
35038788 4833(k:5)N
35039788 4928(m:11)N
35040788 5025(n:16)N
350411 f
350421526 4640(Big-Endian)N
350430 f
350441619 4775(j)N
350451 f
3504610 f
350471526 4822(c)N
350484738(c)Y
350494672(h)Y
350501543(hhhhh)X
350514738(c)Y
350524822(c)Y
350531526 4844(h)N
350541543(hhhhh)X
350557 s
350561 f
350571535 4717(0)N
350581535 4833(31)N
350590 f
3506011 s
350611880 4775(k)N
350621 f
3506310 f
350641763 4822(c)N
350654738(c)Y
350664672(h)Y
350671784(hhhhhh)X
350684738(c)Y
350694822(c)Y
350701763 4844(h)N
350711784(hhhhhh)X
350727 s
350731 f
350741772 4833(26)N
350750 f
3507611 s
350772142 4775(m)N
350781 f
3507910 f
350802048 4822(c)N
350814738(c)Y
350824672(h)Y
350832065(hhhhh)X
350842286 4738(c)N
350854822(c)Y
350862049 4844(h)N
350872066(hhhhh)X
350887 s
350891 f
350902057 4833(20)N
350910 f
3509211 s
350932450 4775(n)N
350941 f
3509510 f
350962286 4822(c)N
350974738(c)Y
350984672(h)Y
350992314(hhhhhhhh)X
351004738(c)Y
351014822(c)Y
351022286 4844(h)N
351032314(hhhhhhhh)X
351047 s
351051 f
351062295 4833(15)N
351072 f
3510811 s
351092790 4775(pad)N
351101 f
3511110 f
351122666 4822(c)N
351134738(c)Y
351144672(h)Y
351152694(hhhhhhhh)X
351163047 4738(c)N
351174822(c)Y
351182667 4844(h)N
351192695(hhhhhhhh)X
351207 s
351211 f
351222675 4833(7)N
351233010(0)X
3512411 s
35125576 5275(Bit)N
35126707(Offsets:)X
351270 f
35128788 5372(j:27)N
35129788 5468(k:21)N
35130788 5563(m:16)N
35131788 5660(n:8)N
351321 f
351331526 5275(Little-Endian)N
351342 f
351351650 5410(pad)N
351361 f
3513710 f
351381526 5457(c)N
351395373(c)Y
351405307(h)Y
351411554(hhhhhhhh)X
351425373(c)Y
351435457(c)Y
351441526 5479(h)N
351451554(hhhhhhhh)X
351467 s
351471 f
351481535 5468(31)N
351490 f
3515011 s
351512070 5410(n)N
351521 f
3515310 f
351541906 5457(c)N
351555373(c)Y
351565307(h)Y
351571934(hhhhhhhh)X
351585373(c)Y
351595457(c)Y
351601906 5479(h)N
351611934(hhhhhhhh)X
351627 s
351631 f
351641915 5468(23)N
351650 f
3516611 s
351672379 5410(m)N
351681 f
3516910 f
351702286 5457(c)N
351715373(c)Y
351725307(h)Y
351732303(hhhhh)X
351742524 5373(c)N
351755457(c)Y
351762287 5479(h)N
351772304(hhhhh)X
351787 s
351791 f
351802295 5468(15)N
351810 f
3518211 s
351832640 5410(k)N
351841 f
3518510 f
351862524 5457(c)N
351875373(c)Y
351885307(h)Y
351892545(hhhhhh)X
351905373(c)Y
351915457(c)Y
351922524 5479(h)N
351932545(hhhhhh)X
351947 s
351951 f
351962533 5468(10)N
351970 f
3519811 s
351992902 5410(j)N
352001 f
3520110 f
352022809 5457(c)N
352035373(c)Y
352045307(h)Y
352052826(hhhhh)X
352063047 5373(c)N
352075457(c)Y
352082810 5479(h)N
352092827(hhhhh)X
352107 s
352111 f
352123019 5352(0)N
352132818 5468(4)N
352143010(0)X
3521510 s
35216576 5951(Revision:)N
35217902(2.0.0)X
352182176(Page)X
352192352(42)X
352203599(July)X
352213752(27,)X
352223872(1993)X
352231943 6055(Industry)N
352242230(Review)X
352252495(Draft)X
35226
3522743 p
35228%%Page: 43 45
352290(Courier)xf 0 f
3523010 s 0 xH 0 xS 0 f
3523111 s
352321 f
3523310 s
352343075 520(Programming)N
352353535(Languages)X
352363903(SIG)X
352373 f
3523811 s
35239576 832(5.5.5)N
35240796(Structure)X
352411179(Member)X
352421523(Function)X
352431883(Entries)X
352441 f
35245576 988(A)N
35246677(member)X
352471004(function)X
352481336(is)X
352491433(represented)X
352501877(in)X
352511985(the)X
352522132(debugging)X
352532543(information)X
352542999(by)X
352553126(a)X
352563204(debugging)X
352573615(information)X
35258576 1092(entry)N
35259787(with)X
35260974(the)X
352611112(tag)X
352620 f
352631250 0.1992(DW_TAG_subprogram)AX
352641 f
352652151(.)X
352662225(The)X
352672392(member)X
352682711(function)X
352693034(entry)X
352703244(may)X
352713425(contain)X
352723714(the)X
352733851(same)X
35274576 1196(attributes)N
35275927(and)X
352761076(follows)X
352771362(the)X
352781492(same)X
352791695(rules)X
352801888(as)X
352811983(non-member)X
352822455(global)X
352832698(subroutine)X
352843092(entries)X
352853349(\(see)X
352863512(section)X
352873784(3.3\).)X
35288576 1352(If)N
35289710(the)X
35290894(member)X
352911259(function)X
352921629(entry)X
352931886(describes)X
352942289(a)X
352952404(virtual)X
352962711(function,)X
352973103(then)X
352983331(that)X
352993541(entry)X
353003799(has)X
353013993(a)X
353020 f
35303576 1456(DW_AT_virtuality)N
353041 f
353051446(attribute.)X
35306576 1612(An)N
35307710(entry)X
35308919(for)X
353091049(a)X
353101116(virtual)X
353111375(function)X
353121697(also)X
353131867(has)X
353142012(a)X
353150 f
353162079 0.1950(DW_AT_vtable_elem_location)AX
353171 f
353183485(attribute)X
353193808(whose)X
35320576 1716(value)N
35321797(contains)X
353221121(a)X
353231190(location)X
353241505(description)X
353251927(yielding)X
353262247(the)X
353272385(address)X
353282678(of)X
353292781(the)X
353302919(slot)X
353313077(for)X
353323209(the)X
353333346(function)X
353343669(within)X
353353924(the)X
35336576 1820(virtual)N
35337829(function)X
353381145(table)X
353391339(for)X
353401463(the)X
353411593(enclosing)X
353421953(class)X
353432146(or)X
353442241(structure.)X
35345576 1976(If)N
35346660(a)X
35347725(subroutine)X
353481123(entry)X
353491330(represents)X
353501712(the)X
353511846(de\256ning)X
353522161(declaration)X
353532579(of)X
353542678(a)X
353552743(member)X
353563058(function)X
353573379(and)X
353583533(that)X
353593693(de\256nition)X
35360576 2080(appears)N
35361875(outside)X
353621161(of)X
353631265(the)X
353641404(body)X
353651611(of)X
353661715(the)X
353671854(enclosing)X
353682223(class)X
353692425(or)X
353702529(structure)X
353712867(declaration,)X
353723311(the)X
353733449(subroutine)X
353743851(entry)X
35375576 2184(has)N
35376746(a)X
353770 f
35378838 0.1979(DW_AT_specification)AX
353791 f
353801898(attribute,)X
353812268(whose)X
353822545(value)X
353832789(is)X
353842902(a)X
353852995(reference)X
353863375(to)X
353873498(the)X
353883660(debugging)X
35389576 2288(information)N
353901016(entry)X
353911220(representing)X
353921678(the)X
353931809(declaration)X
353942224(of)X
353952319(this)X
353962469(function)X
353972785(member.)X
353983140(The)X
353993299(referenced)X
354003691(entry)X
354013894(will)X
35402576 2392(be)N
35403681(a)X
35404742(child)X
35405941(of)X
354061036(some)X
354071244(class)X
354081437(or)X
354091532(structure)X
354101862(type)X
354112036(entry.)X
35412576 2548(Subroutine)N
35413992(entries)X
354141256(containing)X
354151658(the)X
354160 f
354171795 0.1979(DW_AT_specification)AX
354181 f
354192831(attribute)X
354203155(do)X
354213272(not)X
354223414(need)X
354233609(to)X
354243708(duplicate)X
35425576 2652(information)N
354261042(provided)X
354271404(by)X
354281541(the)X
354291698(declaration)X
354302139(entry)X
354312368(referenced)X
354322786(by)X
354332922(the)X
354343078(speci\256cation)X
354353572(attribute.)X
354363959(In)X
35437576 2756(particular,)N
35438977(such)X
354391179(entries)X
354401455(do)X
354411584(not)X
354421738(need)X
354431945(to)X
354442055(contain)X
354452356(attributes)X
354462726(for)X
354472869(the)X
354483018(name)X
354493250(or)X
354503364(return)X
354513615(type)X
354523809(of)X
354533924(the)X
35454576 2860(function)N
35455892(member)X
354561203(whose)X
354571449(de\256nition)X
354581810(they)X
354591984(represent.)X
354603 f
35461576 3016(5.5.6)N
35462796(Class)X
354631018(Template)X
354641397(Instantiations)X
354652 f
35466576 3172(In)N
35467671(C++)X
35468870(a)X
35469936(class)X
354701134(template)X
354711460(is)X
354721541(a)X
354731607(generic)X
354741893(de\256nition)X
354752249(of)X
354762340(a)X
354772406(class)X
354782605(type)X
354792775(that)X
354802936(is)X
354813018(instantiated)X
354823459(differently)X
354833846(when)X
35484576 3276(an)N
35485691(instance)X
354861012(of)X
354871108(the)X
354881243(class)X
354891446(is)X
354901532(declared)X
354911867(or)X
354921972(de\256ned.)X
354932297(The)X
354942456(generic)X
354952746(description)X
354963169(of)X
354973264(the)X
354983398(class)X
354993600(may)X
355003772(include)X
35501576 3380(both)N
35502768(parameterized)X
355031311(types)X
355041527(and)X
355051694(parameterized)X
355062237(constant)X
355072571(values.)X
355082876(DWARF)X
355093210(does)X
355103407(not)X
355113556(represent)X
355123924(the)X
35513576 3484(generic)N
35514862(template)X
355151188(de\256nition,)X
355161566(but)X
355171701(does)X
355181884(represent)X
355192238(each)X
355202426 0.2404(instantiation.)AX
355211 f
35522576 3640(A)N
35523699(class)X
35524930(template)X
355251295(instantiation)X
355261793(is)X
355271912(represented)X
355282377(by)X
355292526(a)X
355302626(debugging)X
355313059(information)X
355323537(with)X
355333755(the)X
355343924(tag)X
355350 f
35536576 3744 0.1992(DW_TAG_class_type)AN
355371 f
355381477(.)X
355391553(With)X
355401762(four)X
355411940(exceptions,)X
355422371(such)X
355432564(an)X
355442679(entry)X
355452892(will)X
355463061(contain)X
355473352(the)X
355483491(same)X
355493703(attributes)X
35550576 3848(and)N
35551725(have)X
35552913(the)X
355531043(same)X
355541246(types)X
355551454(of)X
355561549(child)X
355571748(entries)X
355582005(as)X
355592100(would)X
355602342(an)X
355612447(entry)X
355622650(for)X
355632774(a)X
355642835(class)X
355653028(type)X
355663202(de\256ned)X
355673483(explicitly)X
355683841(using)X
35569576 3952(the)N
35570706(instantiation)X
355711166(types)X
355721374(and)X
355731523(values.)X
355741814(The)X
355751973(exceptions)X
355762372(are:)X
35577642 4108(1.)N
35578796(Each)X
355791027(formal)X
355801317(parameterized)X
355811871(type)X
355822078(declaration)X
355832525(appearing)X
355842928(in)X
355853053(the)X
355863217(template)X
355873578(de\256nition)X
355883973(is)X
35589796 4212(represented)N
355901372(by)X
355911630(a)X
355921839(debugging)X
355932381(information)X
355942968(entry)X
355953319(with)X
355963646(the)X
355973924(tag)X
355980 f
35599796 4316 0.1940(DW_TAG_template_type_parameter)AN
356001 f
356012386(.)X
356022496(Each)X
356032738(such)X
356042965(entry)X
356053212(has)X
356063396(a)X
356070 f
356083502(DW_AT_name)X
356091 f
35610796 4420(attribute,)N
356111146(whose)X
356121403(value)X
356131627(is)X
356141719(a)X
356151790(null-terminated)X
356162367(string)X
356172600(containing)X
356183005(the)X
356193145(name)X
356203368(of)X
356213473(the)X
356223613(formal)X
356233880(type)X
35624796 4524(parameter)N
356251173(as)X
356261271(it)X
356271346(appears)X
356281639(in)X
356291733(the)X
356301867(source)X
356312122(program.)X
356322490(The)X
356332653(template)X
356342984(type)X
356353162(parameter)X
356363540(entry)X
356373747(also)X
356383915(has)X
35639796 4628(a)N
356400 f
35641868(DW_AT_type)X
356421 f
356431431(attribute)X
356441759(describing)X
356452159(the)X
356462300(actual)X
356472544(type)X
356482729(by)X
356492850(which)X
356503098(the)X
356513239(formal)X
356523507(is)X
356533599(replaced)X
356543930(for)X
35655796 4732(this)N
35656946(instantiation.)X
35657642 4888(2.)N
35658796(Each)X
356591019(formal)X
356601301(parameterized)X
356611847(value)X
356622085(declaration)X
356632524(appearing)X
356642918(in)X
356653034(the)X
356663189(templated)X
356673586(de\256nition)X
356683973(is)X
35669796 4992(represented)N
356701372(by)X
356711630(a)X
356721839(debugging)X
356732381(information)X
356742968(entry)X
356753319(with)X
356763646(the)X
356773924(tag)X
356780 f
35679796 5096 0.1937(DW_TAG_template_value_parameter)AN
356801 f
356812439(.)X
356822540(Each)X
356832773(such)X
356842991(entry)X
356853230(has)X
356863405(a)X
356870 f
356883502(DW_AT_name)X
356891 f
35690796 5200(attribute,)N
356911143(whose)X
356921397(value)X
356931618(is)X
356941707(a)X
356951775(null-terminated)X
356962349(string)X
356972579(containing)X
356982981(the)X
356993118(name)X
357003338(of)X
357013440(the)X
357023577(formal)X
357033841(value)X
35704796 5304(parameter)N
357051170(as)X
357061265(it)X
357071338(appears)X
357081629(in)X
357091721(the)X
357101852(source)X
357112104(program.)X
357122469(The)X
357132629(template)X
357142957(value)X
357153171(parameter)X
357163546(entry)X
357173750(also)X
357183915(has)X
35719796 5408(a)N
357200 f
35721876(DW_AT_type)X
357221 f
357231447(attribute)X
357241783(describing)X
357252191(the)X
357262340(type)X
357272533(of)X
357282647(the)X
357292796(parameterized)X
357303336(value.)X
357313611(Finally,)X
357323924(the)X
35733796 5512(template)N
357341123(value)X
357351336(parameter)X
357361711(entry)X
357371915(has)X
357382055(a)X
357390 f
357402117 0.1992(DW_AT_const_value)AX
357411 f
357423041(attribute,)X
357433381(whose)X
357443628(value)X
357453842(is)X
357463924(the)X
35747796 5616(actual)N
357481044(constant)X
357491375(value)X
357501603(of)X
357511713(the)X
357521858(value)X
357532086(parameter)X
357542474(for)X
357552612(this)X
357562776(instantiation)X
357573250(as)X
357583359(represented)X
357593800(on)X
357603924(the)X
35761796 5720(target)N
357621019(architecture.)X
3576310 s
35764576 5951(Revision:)N
35765902(2.0.0)X
357662176(Page)X
357672352(43)X
357683599(July)X
357693752(27,)X
357703872(1993)X
357711943 6055(Industry)N
357722230(Review)X
357732495(Draft)X
35774
3577544 p
35776%%Page: 44 46
357770(Courier)xf 0 f
3577810 s 0 xH 0 xS 0 f
3577911 s
357801 f
3578110 s
35782576 520(DWARF)N
35783885(Debugging)X
357841261(Information)X
357851664(Format)X
3578611 s
35787642 832(3.)N
35788796(If)X
35789882(the)X
357901018(compiler)X
357911361(has)X
357921507(generated)X
357931878(a)X
357941946(special)X
357952220(compilation)X
357962672(unit)X
357972839(to)X
357982937(hold)X
357993123(the)X
358003260(template)X
358013594(instantiation)X
35802796 936(and)N
35803958(that)X
358041126(compilation)X
358051583(unit)X
358061755(has)X
358071906(a)X
358081979(different)X
358092316(name)X
358102541(from)X
358112746(the)X
358122888(compilation)X
358133345(unit)X
358143517(containing)X
358153924(the)X
35816796 1040(template)N
358171165(de\256nition,)X
358181590(the)X
358191762(name)X
358202017(attribute)X
358212376(for)X
358222543(the)X
358232716(debugging)X
358243153(entry)X
358253399(representing)X
358263899(that)X
35827796 1144(compilation)N
358281241(unit)X
358291401(should)X
358301658(be)X
358311763(empty)X
358322006(or)X
358332101(omitted.)X
35834642 1300(4.)N
35835796(If)X
35836890(the)X
358371034(class)X
358381241(type)X
358391429(entry)X
358401646(representing)X
358412117(the)X
358422261(template)X
358432603(instantiation)X
358443078(or)X
358453188(any)X
358463352(of)X
358473462(its)X
358483583(child)X
358493797(entries)X
35850796 1404(contain)N
358511084(declaration)X
358521504(coordinate)X
358531904(attributes,)X
358542283(those)X
358552497(attributes)X
358562854(should)X
358573116(refer)X
358583308(to)X
358593404(the)X
358603539(source)X
358613795(for)X
358623924(the)X
35863796 1508(template)N
358641123(de\256nition,)X
358651506(not)X
358661641(to)X
358671732(any)X
358681881(source)X
358692132(generated)X
358702496(arti\256cially)X
358712882(by)X
358722992(the)X
358733122(compiler.)X
358743 f
35875576 1664(5.5.7)N
35876796(Variant)X
358771111(Entries)X
358781 f
35879576 1820(A)N
35880682(variant)X
35881970(part)X
358821150(of)X
358831267(a)X
358841350(structure)X
358851702(is)X
358861805(represented)X
358872254(by)X
358882386(a)X
358892469(debugging)X
358902885(information)X
358913346(entry)X
358923571(with)X
358933772(the)X
358943924(tag)X
358950 f
35896576 1924 0.1979(DW_TAG_variant_part)AN
358971 f
358981605(and)X
358991754(is)X
359001835(owned)X
359012091(by)X
359022201(the)X
359032331(corresponding)X
359042856(structure)X
359053186(type)X
359063360(entry.)X
35907576 2080(If)N
35908668(the)X
35909810(variant)X
359101089(part)X
359111261(has)X
359121413(a)X
359131487(discriminant,)X
359141986(the)X
359152129(discriminant)X
359162606(is)X
359172700(represented)X
359183140(by)X
359193263(a)X
359203337(separate)X
359213660(debugging)X
35922576 2184(information)N
359231017(entry)X
359241222(which)X
359251461(is)X
359261544(a)X
359271607(child)X
359281808(of)X
359291905(the)X
359302037(variant)X
359312306(part)X
359322467(entry.)X
359332716(This)X
359342897(entry)X
359353101(has)X
359363241(the)X
359373372(form)X
359383566(of)X
359393662(a)X
359403724(structure)X
35941576 2288(data)N
35942747(member)X
359431060(entry.)X
359441309(The)X
359451470(variant)X
359461739(part)X
359471900(entry)X
359482105(will)X
359492267(have)X
359502457(a)X
359510 f
359522520(DW_AT_discr)X
359531 f
359543127(attribute)X
359553446(whose)X
359563694(value)X
359573909(is)X
359583993(a)X
35959576 2392(reference)N
35960924(to)X
359611015(the)X
359621145(member)X
359631456(entry)X
359641659(for)X
359651783(the)X
359661913(discriminant.)X
35967576 2548(If)N
35968684(the)X
35969843(variant)X
359701139(part)X
359711327(does)X
359721539(not)X
359731703(have)X
359741920(a)X
359752010(discriminant)X
359762503(\(tag)X
359772691(\256eld\),)X
359782950(the)X
359793109(variant)X
359803405(part)X
359813593(entry)X
359823825(has)X
359833993(a)X
359840 f
35985576 2652(DW_AT_type)N
359861 f
359871128(attribute)X
359881445(to)X
359891536(represent)X
359901880(the)X
359912010(tag)X
359922140(type.)X
35993576 2808(Each)N
35994777(variant)X
359951047(of)X
359961145(a)X
359971209(particular)X
359981572(variant)X
359991842(part)X
360002004(is)X
360012088(represented)X
360022518(by)X
360032631(a)X
360042695(debugging)X
360053092(information)X
360063534(entry)X
360073741(with)X
360083924(the)X
36009576 2912(tag)N
360100 f
36011715(DW_TAG_variant)X
360121 f
360131488(and)X
360141646(is)X
360151736(a)X
360161806(child)X
360172013(of)X
360182116(the)X
360192254(variant)X
360202529(part)X
360212696(entry.)X
360222951(The)X
360233118(value)X
360243339(that)X
360253502(selects)X
360263767(a)X
360273836(given)X
36028576 3016(variant)N
36029891(may)X
360301113(be)X
360311266(represented)X
360321741(in)X
360331880(one)X
360342077(of)X
360352220(three)X
360362466(ways.)X
360372760(The)X
360382967(variant)X
360393282(entry)X
360403533(may)X
360413756(have)X
360423993(a)X
360430 f
36044576 3120 0.1992(DW_AT_discr_value)AN
360451 f
360461508(attribute)X
360471834(whose)X
360482089(value)X
360492311(represents)X
360502698(a)X
360512767(single)X
360523008(case)X
360533189(label.)X
360543413(The)X
360553580(value)X
360563801(of)X
360573904(this)X
36058576 3224(attribute)N
36059898(is)X
36060984(encoded)X
360611304(as)X
360621404(an)X
360631514(LEB128)X
360641840(number.)X
360652180(The)X
360662345(number)X
360672642(is)X
360682729(signed)X
360692987(if)X
360703069(the)X
360713205(tag)X
360723341(type)X
360733521(for)X
360743651(the)X
360753787(variant)X
36076576 3328(part)N
36077753(containing)X
360781166(this)X
360791334(variant)X
360801619(is)X
360811718(a)X
360821797(signed)X
360832067(type.)X
360842325(The)X
360852502(number)X
360862811(is)X
360872910(unsigned)X
360883268(if)X
360893362(the)X
360903510(tag)X
360913658(type)X
360923850(is)X
360933949(an)X
36094576 3432(unsigned)N
36095916(type.)X
36096576 3588(Alternatively,)N
360971104(the)X
360981252(variant)X
360991537(entry)X
361001758(may)X
361011950(contain)X
361022250(a)X
361030 f
361042329(DW_AT_discr_list)X
361051 f
361063218(attribute,)X
361073576(whose)X
361083841(value)X
36109576 3692(represents)N
36110965(a)X
361111037(list)X
361121178(of)X
361131283(discriminant)X
361141757(values.)X
361152058(This)X
361162247(list)X
361172388(is)X
361182479(represented)X
361192916(by)X
361203036(any)X
361213195(of)X
361223300(the)X
361233440(block)X
361243668(forms)X
361253905(and)X
36126576 3796(may)N
36127758(contain)X
361281048(a)X
361291117(mixture)X
361301422(of)X
361311525(case)X
361321706(labels)X
361331942(and)X
361342099(label)X
361352301(ranges.)X
361362604(Each)X
361372810(item)X
361382998(on)X
361393117(the)X
361403256(list)X
361413396(is)X
361423486(pre\256xed)X
361433805(with)X
361443993(a)X
36145576 3900(discriminant)N
361461047(value)X
361471267(descriptor)X
361481648(that)X
361491810(determines)X
361502226(whether)X
361512538(the)X
361522675(list)X
361532813(item)X
361543000(represents)X
361553385(a)X
361563453(single)X
361573692(label)X
361583892(or)X
361593993(a)X
36160576 4004(label)N
36161779(range.)X
361621049(A)X
361631143(single)X
361641385(case)X
361651568(label)X
361661772(is)X
361671863(represented)X
361682300(as)X
361692405(an)X
361702520(LEB128)X
361712851(number)X
361723152(as)X
361733257(de\256ned)X
361743548(above)X
361753790(for)X
361763924(the)X
361770 f
36178576 4108 0.1992(DW_AT_discr_value)AN
361791 f
361801511(attribute.)X
361811884(A)X
361821981(label)X
361832187(range)X
361842416(is)X
361852509(represented)X
361862948(by)X
361873069(two)X
361883234(LEB128)X
361893566(numbers,)X
361903924(the)X
36191576 4212(low)N
36192737(value)X
36193957(of)X
361941059(the)X
361951196(range)X
361961420(followed)X
361971762(by)X
361981879(the)X
361992016(high)X
362002202(value.)X
362012466(Both)X
362022667(values)X
362032921(follow)X
362043180(the)X
362053318(rules)X
362063519(for)X
362073651(signedness)X
36208576 4316(just)N
36209736(described.)X
362101127(The)X
362111296(discriminant)X
362121770(value)X
362131993(descriptor)X
362142377(is)X
362152467(a)X
362162537(constant)X
362172862(that)X
362183026(may)X
362193209(have)X
362203406(one)X
362213564(of)X
362223668(the)X
362233807(values)X
36224576 4420(given)N
36225794(in)X
36226885(Figure)X
362271137(13.)X
3622810 f
362291942 4488(i)N
362301962(iiiiiiiiiiiiiiii)X
362310 f
362321986 4592(DW_DSC_label)N
362331986 4696(DW_DSC_range)N
362341 f
3623510 f
362361942 4712(i)N
362371962(iiiiiiiiiiiiiiii)X
362381942(c)X
362394664(c)Y
362404576(c)Y
362412666 4712(c)N
362424664(c)Y
362434576(c)Y
362443 f
362451550 4816(Figure)N
362461822(13.)X
362471 f
362481976(Discriminant)X
362492459(descriptor)X
362502833(values)X
36251576 4972(If)N
36252664(a)X
36253733(variant)X
362541008(entry)X
362551219(has)X
362561366(neither)X
362571641(a)X
362580 f
362591710 0.1992(DW_AT_discr_value)AX
362601 f
362612641(attribute)X
362622966(nor)X
362633114(a)X
362640 f
362653184(DW_AT_discr_list)X
362661 f
36267576 5076(attribute,)N
36268934(or)X
362691048(if)X
362701143(it)X
362711234(has)X
362721392(a)X
362730 f
362741472(DW_AT_discr_list)X
362751 f
362762361(attribute)X
362772696(with)X
362782893(0)X
362792977(size,)X
362803176(the)X
362813324(variant)X
362823609(is)X
362833708(a)X
362843787(default)X
36285576 5180(variant.)N
36286576 5336(The)N
36287735(components)X
362881184(selected)X
362891491(by)X
362901602(a)X
362911664(particular)X
362922025(variant)X
362932293(are)X
362942423(represented)X
362952851(by)X
362962962(debugging)X
362973357(information)X
362983797(entries)X
36299576 5440(owned)N
36300847(by)X
36301972(the)X
363021117(corresponding)X
363031657(variant)X
363041939(entry)X
363052156(and)X
363062319(appear)X
363072589(in)X
363082694(the)X
363092838(same)X
363103055(order)X
363113276(as)X
363123385(the)X
363133529(corresponding)X
36314576 5544(declarations)N
363151024(in)X
363161115(the)X
363171245(source)X
363181496(program.)X
3631910 s
36320576 5951(Revision:)N
36321902(2.0.0)X
363222176(Page)X
363232352(44)X
363243599(July)X
363253752(27,)X
363263872(1993)X
363271943 6055(Industry)N
363282230(Review)X
363292495(Draft)X
36330
3633145 p
36332%%Page: 45 47
363330(Courier)xf 0 f
3633410 s 0 xH 0 xS 0 f
3633511 s
363361 f
3633710 s
363383075 520(Programming)N
363393535(Languages)X
363403903(SIG)X
363413 f
3634212 s
36343576 832(5.6)N
36344744(Enumeration)X
363451312(Type)X
363461544(Entries)X
363472 f
3634811 s
36349576 988(An)N
36350696(``enumeration)X
363511221(type'')X
363521448(is)X
363531529(a)X
363541595(scalar)X
363551837(that)X
363561997(can)X
363572146(assume)X
363582426(one)X
363592575(of)X
363602666(a)X
363612732(\256xed)X
363622920(number)X
363633210(of)X
363643301(symbolic)X
363653636(values.)X
363661 f
36367576 1144(An)N
36368751(enumeration)X
363691260(type)X
363701480(is)X
363711607(represented)X
363722080(by)X
363732236(a)X
363742344(debugging)X
363752785(information)X
363763271(entry)X
363773521(with)X
363783747(the)X
363793924(tag)X
363800 f
36381576 1248 0.1960(DW_TAG_enumeration_type)AN
363821 f
363831795(.)X
36384576 1404(If)N
36385660(a)X
36386725(name)X
36387943(has)X
363881087(been)X
363891280(given)X
363901503(to)X
363911599(the)X
363921734(enumeration)X
363932202(type)X
363942381(in)X
363952477(the)X
363962612(source)X
363972868(program,)X
363983215(then)X
363993394(the)X
364003529(corresponding)X
36401576 1508(enumeration)N
364021054(type)X
364031243(entry)X
364041461(has)X
364051615(a)X
364060 f
364071691(DW_AT_name)X
364081 f
364092258(attribute)X
364102590(whose)X
364112851(value)X
364123079(is)X
364133175(a)X
364143250(null-terminated)X
364153831(string)X
36416576 1612(containing)N
36417982(the)X
364181123(enumeration)X
364191597(type)X
364201782(name)X
364212006(as)X
364222112(it)X
364232195(appears)X
364242496(in)X
364252598(the)X
364262739(source)X
364273001(program.)X
364283377(These)X
364293621(entries)X
364303890(also)X
36431576 1716(have)N
36432773(a)X
364330 f
36434843(DW_AT_byte_size)X
364351 f
364361669(attribute)X
364371995(whose)X
364382250(constant)X
364392574(value)X
364402795(is)X
364412884(the)X
364423022(number)X
364433321(of)X
364443424(bytes)X
364453640(required)X
364463963(to)X
36447576 1820(hold)N
36448755(an)X
36449860(instance)X
364501171(of)X
364511266(the)X
364521396(enumeration.)X
36453576 1976(Each)N
36454810(enumeration)X
364551309(literal)X
364561574(is)X
364571691(represented)X
364582154(by)X
364592300(a)X
364602397(debugging)X
364612827(information)X
364623302(entry)X
364633541(with)X
364643757(the)X
364653924(tag)X
364660 f
36467576 2080 0.1992(DW_TAG_enumerator)AN
364681 f
364691477(.)X
364701560(Each)X
364711775(such)X
364721975(entry)X
364732195(is)X
364742293(a)X
364752371(child)X
364762587(of)X
364772699(the)X
364782846(enumeration)X
364793326(type)X
364803517(entry,)X
364813759(and)X
364823924(the)X
36483576 2184(enumerator)N
364841003(entries)X
364851264(appear)X
364861524(in)X
364871619(the)X
364881753(same)X
364891960(order)X
364902171(as)X
364912270(the)X
364922404(declarations)X
364932857(of)X
364942957(the)X
364953092(enumeration)X
364963560(literals)X
364973828(in)X
364983924(the)X
36499576 2288(source)N
36500827(program.)X
36501576 2444(Each)N
36502788(enumerator)X
365031225(entry)X
365041442(has)X
365051595(a)X
365060 f
365071670(DW_AT_name)X
365081 f
365092236(attribute,)X
365102589(whose)X
365112849(value)X
365123077(is)X
365133173(a)X
365143249(null-terminated)X
365153831(string)X
36516576 2548(containing)N
36517995(the)X
365181149(name)X
365191386(of)X
365201505(the)X
365211659(enumeration)X
365222146(literal)X
365232399(as)X
365242518(it)X
365252614(appears)X
365262928(in)X
365273042(the)X
365283195(source)X
365293469(program.)X
365303856(Each)X
36531576 2652(enumerator)N
365321000(entry)X
365331204(also)X
365341369(has)X
365351509(a)X
365360 f
365371571 0.1992(DW_AT_const_value)AX
365381 f
365392495(attribute,)X
365402835(whose)X
365413082(value)X
365423296(is)X
365433378(the)X
365443509(actual)X
365453743(numeric)X
36546576 2756(value)N
36547789(of)X
36548884(the)X
365491014(enumerator)X
365501437(as)X
365511532(represented)X
365521959(on)X
365532069(the)X
365542199(target)X
365552422(system.)X
365563 f
3655712 s
36558576 2912(5.7)N
36559744(Subroutine)X
365601226(Type)X
365611458(Entries)X
365622 f
3656311 s
36564576 3068(It)N
36565652(is)X
36566733(possible)X
365671044(in)X
365681135(C)X
365691217(to)X
365701309(declare)X
365711596(pointers)X
365721908(to)X
365732000(subroutines)X
365742434(that)X
365752595(return)X
365762838(a)X
365772905(value)X
365783119(of)X
365793211(a)X
365803278(speci\256c)X
365813565(type.)X
365823779(In)X
365833875(both)X
36584576 3172(ANSI)N
36585788(C)X
36586873(and)X
365871031(C++,)X
365881255(it)X
365891330(is)X
365901414(possible)X
365911728(to)X
365921822(declare)X
365932111(pointers)X
365942425(to)X
365952519(subroutines)X
365962955(that)X
365973118(not)X
365983256(only)X
365993433(return)X
366003678(a)X
366013747(value)X
366023963(of)X
36603576 3276(a)N
36604648(speci\256c)X
36605940(type,)X
366061137(but)X
366071278(accept)X
366081536(only)X
366091716(arguments)X
366102116(of)X
366112214(speci\256c)X
366122507(types.)X
366132761(The)X
366142922(type)X
366153098(of)X
366163196(such)X
366173386(pointers)X
366183704(would)X
366193949(be)X
36620576 3380(described)N
36621940(with)X
366221115(a)X
366231181(``pointer)X
366241516(to'')X
366251665(modi\256er)X
366261980(applied)X
366272267(to)X
366282358(a)X
366292424(user-de\256ned)X
366302880(type.)X
366311 f
36632576 3536(A)N
36633716(subroutine)X
366341166(type)X
366351396(is)X
366361533(represented)X
366372016(by)X
366382182(a)X
366392299(debugging)X
366402749(information)X
366413244(entry)X
366423503(with)X
366433738(the)X
366443924(tag)X
366450 f
36646576 3640 0.1964(DW_TAG_subroutine_type)AN
366471 f
366481742(.)X
366491815(If)X
366501902(a)X
366511970(name)X
366522190(has)X
366532336(been)X
366542531(given)X
366552756(to)X
366562854(the)X
366572990(subroutine)X
366583390(type)X
366593570(in)X
366603667(the)X
366613803(source)X
36662576 3744(program,)N
36663918(then)X
366641092(the)X
366651222(corresponding)X
366661747(subroutine)X
366672142(type)X
366682317(entry)X
366692521(has)X
366702661(a)X
366710 f
366722723(DW_AT_name)X
366731 f
366743276(attribute)X
366753594(whose)X
366763841(value)X
36677576 3848(is)N
36678680(a)X
36679764(null-terminated)X
366801354(string)X
366811599(containing)X
366822016(the)X
366832168(subroutine)X
366842584(type)X
366852780(name)X
366863015(as)X
366873132(it)X
366883226(appears)X
366893538(in)X
366903651(the)X
366913803(source)X
36692576 3952(program.)N
36693576 4108(If)N
36694658(the)X
36695790(subroutine)X
366961186(type)X
366971362(describes)X
366981713(a)X
366991777(function)X
367002096(that)X
367012254(returns)X
367022523(a)X
367032587(value,)X
367042825(then)X
367053002(the)X
367063135(subroutine)X
367073532(type)X
367083709(entry)X
367093915(has)X
36710576 4212(a)N
367110 f
36712655(DW_AT_type)X
367131 f
367141225(attribute)X
367151560(to)X
367161669(denote)X
367171944(the)X
367182091(type)X
367192282(returned)X
367202614(by)X
367212741(the)X
367222888(subroutine.)X
367233343(If)X
367243440(the)X
367253587(types)X
367263812(of)X
367273924(the)X
36728576 4316(arguments)N
36729971(are)X
367301106(necessary)X
367311475(to)X
367321572(describe)X
367331893(the)X
367342029(subroutine)X
367352429(type,)X
367362631(then)X
367372811(the)X
367382947(corresponding)X
367393479(subroutine)X
367403880(type)X
36741576 4420(entry)N
36742811(owns)X
367431050(debugging)X
367441476(information)X
367451947(entries)X
367462236(that)X
367472423(describe)X
367482770(the)X
367492932(arguments.)X
367503397(These)X
367513660(debugging)X
36752576 4524(information)N
367531034(entries)X
367541310(appear)X
367551585(in)X
367561695(the)X
367571844(order)X
367582070(that)X
367592244(the)X
367602393(corresponding)X
367612937(argument)X
367623311(types)X
367633538(appear)X
367643813(in)X
367653924(the)X
36766576 4628(source)N
36767827(program.)X
367682 f
36769576 4784(In)N
36770675(ANSI-C)X
36771975(there)X
367721182(is)X
367731267(a)X
367741338(difference)X
367751718(between)X
367762034(the)X
367772169(types)X
367782377(of)X
367792473(functions)X
367802824(declared)X
367813159(using)X
367823377(function)X
367833694(prototype)X
36784576 4888(style)N
36785760(declarations)X
367861223(and)X
367871377(those)X
367881585(declared)X
367891915(using)X
367902128(non-prototype)X
367912649(declarations.)X
367921 f
36793576 5044(A)N
36794705(subroutine)X
367951143(entry)X
367961390(declared)X
367971754(with)X
367981977(a)X
367992082(function)X
368002443(prototype)X
368012848(style)X
368023082(declaration)X
368033541(may)X
368043760(have)X
368053993(a)X
368060 f
36807576 5148(DW_AT_prototyped)N
368081 f
368091446(attribute,)X
368101785(whose)X
368112031(value)X
368122244(is)X
368132325(a)X
368142386(\257ag.)X
36815576 5304(Each)N
36816781(debugging)X
368171182(information)X
368181629(entry)X
368191840(owned)X
368202104(by)X
368212222(a)X
368222291(subroutine)X
368232693(type)X
368242875(entry)X
368253086(has)X
368263233(a)X
368273302(tag)X
368283440(whose)X
368293694(value)X
368303915(has)X
36831576 5408(one)N
36832725(of)X
36833820(two)X
36834974(possible)X
368351285(interpretations.)X
36836642 5564(1.)N
36837796(Each)X
36838995(debugging)X
368391390(information)X
368401830(entry)X
368412034(that)X
368422190(is)X
368432272(owned)X
368442529(by)X
368452640(a)X
368462702(subroutine)X
368473097(type)X
368483272(entry)X
368493476(and)X
368503626(that)X
368513783(de\256nes)X
36852796 5668(a)N
36853857(single)X
368541090(argument)X
368551445(of)X
368561540(a)X
368571601(speci\256c)X
368581892(type)X
368592066(has)X
368602205(the)X
368612335(tag)X
368620 f
368632465 0.1960(DW_TAG_formal_parameter)AX
368641 f
368653684(.)X
3686610 s
36867576 5951(Revision:)N
36868902(2.0.0)X
368692176(Page)X
368702352(45)X
368713599(July)X
368723752(27,)X
368733872(1993)X
368741943 6055(Industry)N
368752230(Review)X
368762495(Draft)X
36877
3687846 p
36879%%Page: 46 48
368800(Courier)xf 0 f
3688110 s 0 xH 0 xS 0 f
3688211 s
368831 f
3688410 s
36885576 520(DWARF)N
36886885(Debugging)X
368871261(Information)X
368881664(Format)X
3688911 s
36890796 832(The)N
36891967(formal)X
368921236(parameter)X
368931622(entry)X
368941837(has)X
368951988(a)X
368962061(type)X
368972247(attribute)X
368982576(to)X
368992679(denote)X
369002948(the)X
369013091(type)X
369023278(of)X
369033386(the)X
369043529(corresponding)X
36905796 936(formal)N
369061053(parameter.)X
36907642 1092(2.)N
36908796(The)X
36909970(unspeci\256ed)X
369101408(parameters)X
369111831(of)X
369121941(a)X
369132017(variable)X
369142338(parameter)X
369152727(list)X
369162873(are)X
369173017(represented)X
369183459(by)X
369193584(a)X
369203660(debugging)X
36921796 1196(information)N
369221326(entry)X
369231620(owned)X
369241967(by)X
369252168(the)X
369262389(subroutine)X
369272874(type)X
369283139(entry)X
369293433(with)X
369303703(the)X
369313924(tag)X
369320 f
36933796 1300 0.1942(DW_TAG_unspecified_parameters)AN
369341 f
369352333(.)X
369363 f
3693712 s
36938576 1456(5.8)N
36939744(String)X
369401024(Type)X
369411256(Entries)X
369422 f
3694311 s
36944576 1612(A)N
36945654(``string'')X
369461000(is)X
369471083(a)X
369481151(sequence)X
369491497(of)X
369501591(characters)X
369511992(that)X
369522155(have)X
369532346(speci\256c)X
369542635(semantics)X
369553007(and)X
369563164(operations)X
369573566(that)X
369583729(separate)X
36959576 1716(them)N
36960769(from)X
36961957(arrays)X
369621208(of)X
369631299(characters.)X
369641719(Fortran)X
369652020(is)X
369662101(one)X
369672250(of)X
369682341(the)X
369692471(languages)X
369702855(that)X
369713015(has)X
369723159(a)X
369733225(string)X
369743453(type.)X
369751 f
36976576 1872(A)N
36977731(string)X
369781024(type)X
369791268(is)X
369801419(represented)X
369811916(by)X
369822096(a)X
369832227(debugging)X
369842691(information)X
369853200(entry)X
369863473(with)X
369873723(the)X
369883924(tag)X
369890 f
36990576 1976 0.1985(DW_TAG_string_type)AN
369911 f
369921530(.)X
369931606(If)X
369941695(a)X
369951765(name)X
369961987(has)X
369972135(been)X
369982332(given)X
369992559(to)X
370002659(the)X
370012798(string)X
370023030(type)X
370033213(in)X
370043313(the)X
370053452(source)X
370063712(program,)X
37007576 2080(then)N
37008763(the)X
37009906(corresponding)X
370101444(string)X
370111680(type)X
370121867(entry)X
370132083(has)X
370142236(a)X
370150 f
370162311(DW_AT_name)X
370171 f
370182877(attribute)X
370193208(whose)X
370203468(value)X
370213695(is)X
370223790(a)X
370233865(null-)X
37024576 2184(terminated)N
37025976(string)X
370261199(containing)X
370271594(the)X
370281724(string)X
370291947(type)X
370302121(name)X
370312334(as)X
370322429(it)X
370332501(appears)X
370342791(in)X
370352882(the)X
370363012(source)X
370373263(program.)X
37038576 2340(The)N
37039738(string)X
37040964(type)X
370411141(entry)X
370421347(may)X
370431524(have)X
370441715(a)X
370450 f
370461779 0.1979(DW_AT_string_length)AX
370471 f
370482811(attribute)X
370493131(whose)X
370503380(value)X
370513597(is)X
370523682(a)X
370533747(location)X
37054576 2444(description)N
370551004(yielding)X
370561329(the)X
370571472(location)X
370581792(where)X
370592041(the)X
370602184(length)X
370612440(of)X
370622548(the)X
370632691(string)X
370642927(is)X
370653021(stored)X
370663271(in)X
370673375(the)X
370683518(program.)X
370693895(The)X
37070576 2548(string)N
37071810(type)X
37072995(entry)X
370731209(may)X
370741394(also)X
370751569(have)X
370761768(a)X
370770 f
370781840(DW_AT_byte_size)X
370791 f
370802669(attribute,)X
370813020(whose)X
370823278(constant)X
370833606(value)X
370843831(is)X
370853924(the)X
37086576 2652(size)N
37087737(in)X
37088830(bytes)X
370891040(of)X
370901137(the)X
370911269(data)X
370921440(to)X
370931533(be)X
370941640(retrieved)X
370951977(from)X
370962172(the)X
370972304(location)X
370982612(referenced)X
370993005(by)X
371003116(the)X
371013247(string)X
371023471(length)X
371033715(attribute.)X
37104576 2756(If)N
37105658(no)X
37106770(byte)X
37107946(size)X
371081107(attribute)X
371091426(is)X
371101509(present,)X
371111809(the)X
371121941(size)X
371132102(of)X
371142199(the)X
371152331(data)X
371162502(to)X
371172595(be)X
371182702(retrieved)X
371193039(is)X
371203122(the)X
371213254(same)X
371223459(as)X
371233556(the)X
371243689(size)X
371253851(of)X
371263949(an)X
37127576 2860(address)N
37128861(on)X
37129971(the)X
371301101(target)X
371311324(machine.)X
37132576 3016(If)N
37133667(no)X
37134788(string)X
371351022(length)X
371361276(attribute)X
371371604(is)X
371381696(present,)X
371392005(the)X
371402146(string)X
371412380(type)X
371422565(entry)X
371432779(may)X
371442964(have)X
371453164(a)X
371460 f
371473237(DW_AT_byte_size)X
371481 f
37149576 3120(attribute,)N
37150915(whose)X
371511161(constant)X
371521477(value)X
371531690(is)X
371541771(the)X
371551901(length)X
371562144(in)X
371572235(bytes)X
371582443(of)X
371592538(the)X
371602668(string.)X
371613 f
3716212 s
37163576 3276(5.9)N
37164744(Set)X
37165896(Entries)X
371662 f
3716711 s
37168576 3432(Pascal)N
37169838(provides)X
371701163(the)X
371711293(concept)X
371721589(of)X
371731680(a)X
371741746(``set,'')X
371752004(which)X
371762237(represents)X
371772625(a)X
371782691(group)X
371792923(of)X
371803014(values)X
371813261(of)X
371823352(ordinal)X
371833634(type.)X
371841 f
37185576 3588(A)N
37186669(set)X
37187797(is)X
37188886(represented)X
371891321(by)X
371901439(a)X
371911508(debugging)X
371921910(information)X
371932357(entry)X
371942568(with)X
371952756(the)X
371962895(tag)X
371970 f
371983034(DW_TAG_set_type)X
371991 f
372003829(.)X
372013904(If)X
372023993(a)X
37203576 3692(name)N
37204793(has)X
37205936(been)X
372061128(given)X
372071350(to)X
372081445(the)X
372091579(set)X
372101703(type,)X
372111903(then)X
372122081(the)X
372132215(set)X
372142339(type)X
372152517(entry)X
372162724(has)X
372172867(a)X
372180 f
372192932(DW_AT_name)X
372201 f
372213488(attribute)X
372223808(whose)X
37223576 3796(value)N
37224789(is)X
37225870(a)X
37226931(null-terminated)X
372271498(string)X
372281721(containing)X
372292116(the)X
372302246(set)X
372312366(type)X
372322540(name)X
372332753(as)X
372342848(it)X
372352920(appears)X
372363210(in)X
372373301(the)X
372383431(source)X
372393682(program.)X
37240576 3952(The)N
37241735(set)X
37242855(type)X
372431029(entry)X
372441232(has)X
372451371(a)X
372460 f
372471432(DW_AT_type)X
372481 f
372491984(attribute)X
372502301(to)X
372512392(denote)X
372522649(the)X
372532779(type)X
372542953(of)X
372553048(an)X
372563153(element)X
372573455(of)X
372583550(the)X
372593680(set.)X
37260576 4108(If)N
37261670(the)X
37262814(amount)X
372631115(of)X
372641224(storage)X
372651514(allocated)X
372661869(to)X
372671974(hold)X
372682167(each)X
372692364(element)X
372702680(of)X
372712789(an)X
372722908(object)X
372733161(of)X
372743271(the)X
372753416(given)X
372763649(set)X
372773784(type)X
372783973(is)X
37279576 4212(different)N
37280904(from)X
372811100(the)X
372821233(amount)X
372831522(of)X
372841619(storage)X
372851897(that)X
372862054(is)X
372872137(normally)X
372882480(allocated)X
372892823(to)X
372902916(hold)X
372913097(an)X
372923204(individual)X
372933587(object)X
372943827(of)X
372953924(the)X
37296576 4316(indicated)N
37297941(element)X
372981262(type,)X
372991477(then)X
373001670(the)X
373011819(set)X
373021958(type)X
373032151(entry)X
373042373(has)X
373052531(a)X
373060 f
373072612(DW_AT_byte_size)X
373081 f
373093449(attribute,)X
373103808(whose)X
37311576 4420(constant)N
37312892(value)X
373131105(represents)X
373141483(the)X
373151613(size)X
373161772(in)X
373171863(bytes)X
373182071(of)X
373192166(an)X
373202271(instance)X
373212582(of)X
373222677(the)X
373232807(set)X
373242927(type.)X
373253 f
3732612 s
37327576 4576(5.10)N
37328792(Subrange)X
373291210(Type)X
373301442(Entries)X
373312 f
3733211 s
37333576 4732(Several)N
37334863(languages)X
373351248(support)X
373361540(the)X
373371671(concept)X
373381968(of)X
373392060(a)X
373402127(``subrange'')X
373412593(type)X
373422763(object.)X
373433046(These)X
373443275(objects)X
373453549(can)X
373463700(represent)X
37347576 4836(a)N
37348648(subset)X
37349896(of)X
37350993(the)X
373511129(values)X
373521382(that)X
373531548(an)X
373541663(object)X
373551906(of)X
373562002(the)X
373572137(basis)X
373582345(type)X
373592519(for)X
373602649(the)X
373612784(subrange)X
373623138(can)X
373633292(represent.)X
373643695(Subrange)X
37365576 4940(type)N
37366745(entries)X
373671007(may)X
373681175(also)X
373691344(be)X
373701449(used)X
373711632(to)X
373721723(represent)X
373732077(the)X
373742207(bounds)X
373752483(of)X
373762574(array)X
373772791(dimensions.)X
373781 f
37379576 5096(A)N
37380721(subrange)X
373811120(type)X
373821354(is)X
373831495(represented)X
373841982(by)X
373852152(a)X
373862274(debugging)X
373872729(information)X
373883229(entry)X
373893493(with)X
373903733(the)X
373913924(tag)X
373920 f
37393576 5200 0.1974(DW_TAG_subrange_type)AN
373941 f
373951636(.)X
373961707(If)X
373971792(a)X
373981857(name)X
373992074(has)X
374002217(been)X
374012409(given)X
374022631(to)X
374032726(the)X
374042860(subrange)X
374053203(type,)X
374063403(then)X
374073581(the)X
374083715(subrange)X
37409576 5304(type)N
37410758(entry)X
37411970(has)X
374121118(a)X
374130 f
374141188(DW_AT_name)X
374151 f
374161749(attribute)X
374172075(whose)X
374182330(value)X
374192552(is)X
374202642(a)X
374212712(null-terminated)X
374223288(string)X
374233520(containing)X
374243924(the)X
37425576 5408(subrange)N
37426915(type)X
374271089(name)X
374281302(as)X
374291397(it)X
374301469(appears)X
374311759(in)X
374321850(the)X
374331980(source)X
374342231(program.)X
37435576 5564(The)N
37436741(subrange)X
374371086(entry)X
374381295(may)X
374391475(have)X
374401670(a)X
374410 f
374421738(DW_AT_type)X
374431 f
374442297(attribute)X
374452621(to)X
374462719(describe)X
374473041(the)X
374483178(type)X
374493359(of)X
374503461(object)X
374513706(of)X
374523808(whose)X
37453576 5668(values)N
37454823(this)X
37455973(subrange)X
374561312(is)X
374571393(a)X
374581454(subset.)X
3745910 s
37460576 5951(Revision:)N
37461902(2.0.0)X
374622176(Page)X
374632352(46)X
374643599(July)X
374653752(27,)X
374663872(1993)X
374671943 6055(Industry)N
374682230(Review)X
374692495(Draft)X
37470
3747147 p
37472%%Page: 47 49
374730(Courier)xf 0 f
3747410 s 0 xH 0 xS 0 f
3747511 s
374761 f
3747710 s
374783075 520(Programming)N
374793535(Languages)X
374803903(SIG)X
3748111 s
37482576 832(If)N
37483658(the)X
37484790(amount)X
374851079(of)X
374861176(storage)X
374871454(allocated)X
374881797(to)X
374891890(hold)X
374902071(each)X
374912256(element)X
374922560(of)X
374932657(an)X
374942764(object)X
374953004(of)X
374963101(the)X
374973233(given)X
374983454(subrange)X
374993796(type)X
375003973(is)X
37501576 936(different)N
37502904(from)X
375031100(the)X
375041233(amount)X
375051522(of)X
375061619(storage)X
375071897(that)X
375082054(is)X
375092137(normally)X
375102480(allocated)X
375112823(to)X
375122916(hold)X
375133097(an)X
375143204(individual)X
375153587(object)X
375163827(of)X
375173924(the)X
37518576 1040(indicated)N
37519923(element)X
375201226(type,)X
375211423(then)X
375221598(the)X
375231729(subrange)X
375242069(type)X
375252244(entry)X
375262448(has)X
375272588(a)X
375280 f
375292650(DW_AT_byte_size)X
375301 f
375313468(attribute,)X
375323808(whose)X
37533576 1144(constant)N
37534892(value)X
375351105(represents)X
375361483(the)X
375371613(size)X
375381772(in)X
375391863(bytes)X
375402071(of)X
375412166(each)X
375422349(element)X
375432651(of)X
375442746(the)X
375452876(subrange)X
375463215(type.)X
37547576 1300(The)N
37548842(subrange)X
375491288(entry)X
375501599(may)X
375511881(have)X
375522177(the)X
375532415(attributes)X
375540 f
375552874 0.1992(DW_AT_lower_bound)AX
375561 f
375573905(and)X
375580 f
37559576 1404 0.1992(DW_AT_upper_bound)AN
375601 f
375611519(to)X
375621630(describe,)X
375631987(respectively,)X
375642477(the)X
375652627(lower)X
375662869(and)X
375673038(upper)X
375683280(bound)X
375693542(values)X
375703809(of)X
375713924(the)X
37572576 1508(subrange.)N
37573994(The)X
375740 f
375751188 0.1992(DW_AT_upper_bound)AX
375761 f
375772146(attribute)X
375782499(may)X
375792709(be)X
375802850(replaced)X
375813206(by)X
375823352(a)X
375830 f
375843449(DW_AT_count)X
375851 f
37586576 1612(attribute,)N
37587921(whose)X
375881173(value)X
375891392(describes)X
375901747(the)X
375911883(number)X
375922179(of)X
375932279(elements)X
375942620(in)X
375952716(the)X
375962851(subrange)X
375973195(rather)X
375983427(than)X
375993606(the)X
376003741(value)X
376013959(of)X
37602576 1716(the)N
37603720(last)X
37604879(element.)X
376051239(If)X
376061333(a)X
376071408(bound)X
376081664(or)X
376091773(count)X
376102005(value)X
376112232(is)X
376122327(described)X
376132700(by)X
376142824(a)X
376152899(constant)X
376163229(not)X
376173378(represented)X
376183819(in)X
376193924(the)X
37620576 1820(program's)N
37621966(address)X
376221258(space)X
376231482(and)X
376241638(can)X
376251789(be)X
376261901(represented)X
376272335(by)X
376282452(one)X
376292607(of)X
376302708(the)X
376312844(constant)X
376323166(attribute)X
376333489(forms,)X
376343744(then)X
376353924(the)X
37636576 1924(value)N
37637789(of)X
37638884(the)X
376391014(lower)X
376401236(or)X
376411331(upper)X
376421553(bound)X
376431795(or)X
376441890(count)X
376452108(attribute)X
376462425(may)X
376472599(be)X
376482704(one)X
376492853(of)X
376502948(the)X
376513079(constant)X
376523396(types.)X
376533649(Otherwise,)X
37654576 2028(the)N
37655708(value)X
37656923(of)X
376571020(the)X
376581152(lower)X
376591376(or)X
376601473(upper)X
376611697(bound)X
376621940(or)X
376632036(count)X
376642255(attribute)X
376652573(is)X
376662655(a)X
376672717(reference)X
376683066(to)X
376693158(a)X
376703220(debugging)X
376713615(information)X
37672576 2132(entry)N
37673779(describing)X
376741168(an)X
376751273(object)X
376761511(containing)X
376771906(the)X
376782036(bound)X
376792278(value)X
376802491(or)X
376812586(itself)X
376822785(describing)X
376833174(a)X
376843235(constant)X
376853551(value.)X
37686576 2288(If)N
37687656(either)X
37688879(the)X
376891009(lower)X
376901231(or)X
376911326(upper)X
376921548(bound)X
376931790(or)X
376941885(count)X
376952103(values)X
376962350(are)X
376972479(missing,)X
376982799(the)X
376992930(bound)X
377003173(value)X
377013387(is)X
377023469(assumed)X
377033795(to)X
377043887(be)X
377053993(a)X
37706576 2392(language-dependent)N
377071307(default)X
377081574(constant.)X
377092 f
37710576 2548(The)N
37711734(default)X
377121007(lower)X
377131235(bound)X
377141482(value)X
377151700(for)X
377161830(C)X
377171916(or)X
377182021(C++)X
377192225(is)X
377202311(0.)X
377212426(For)X
377222585(Fortran,)X
377232913(it)X
377242990(is)X
377253076(1.)X
377263191(No)X
377273321(other)X
377283534(default)X
377293807(values)X
37730576 2652(are)N
37731715(currently)X
377321060(de\256ned)X
377331336(by)X
377341441(DWARF.)X
377351 f
37736576 2808(If)N
37737660(the)X
37738794(subrange)X
377391137(entry)X
377401344(has)X
377411487(no)X
377421601(type)X
377431779(attribute)X
377442100(describing)X
377452493(the)X
377462627(basis)X
377472829(type,)X
377483030(the)X
377493165(basis)X
377503368(type)X
377513547(is)X
377523633(assumed)X
377533963(to)X
37754576 2912(be)N
37755690(the)X
37756829(same)X
377571041(as)X
377581145(the)X
377591284(object)X
377601531(described)X
377611898(by)X
377622016(the)X
377632154(lower)X
377642384(bound)X
377652634(attribute)X
377662959(\(if)X
377673072(it)X
377683152(references)X
377693542(an)X
377703655(object\).)X
377713974(If)X
37772576 3016(there)N
37773779(is)X
37774865(no)X
37775980(lower)X
377761207(bound)X
377771454(attribute,)X
377781798(or)X
377791898(it)X
377801975(does)X
377812164(not)X
377822305(reference)X
377832659(an)X
377842770(object,)X
377853036(the)X
377863172(basis)X
377873376(type)X
377883556(is)X
377893643(the)X
377903779(type)X
377913959(of)X
37792576 3120(the)N
37793708(upper)X
37794932(bound)X
377951176(or)X
377961273(count)X
377971493(attribute)X
377981812(\(if)X
377991919(it)X
378001993(references)X
378012377(an)X
378022484(object\).)X
378032797(If)X
378042879(there)X
378053079(is)X
378063162(no)X
378073274(upper)X
378083497(bound)X
378093740(or)X
378103836(count)X
37811576 3224(attribute)N
37812895(or)X
37813993(it)X
378141068(does)X
378151254(not)X
378161392(reference)X
378171743(an)X
378181851(object,)X
378192114(the)X
378202247(type)X
378212424(is)X
378222508(assumed)X
378232836(to)X
378242930(be)X
378253038(the)X
378263171(same)X
378273377(type,)X
378283576(in)X
378293670(the)X
378303803(source)X
37831576 3328(language)N
37832919(of)X
378331017(the)X
378341149(compilation)X
378351596(unit)X
378361758(containing)X
378372155(the)X
378382287(subrange)X
378392628(entry,)X
378402855(as)X
378412952(a)X
378423015(signed)X
378433269(integer)X
378443538(with)X
378453719(the)X
378463851(same)X
37847576 3432(size)N
37848735(as)X
37849830(an)X
37850935(address)X
378511220(on)X
378521330(the)X
378531460(target)X
378541683(machine.)X
378553 f
3785612 s
37857576 3588(5.11)N
37858792(Pointer)X
378591121(to)X
378601225(Member)X
378611602(Type)X
378621834(Entries)X
378632 f
3786411 s
37865576 3744(In)N
37866671(C++,)X
37867892(a)X
37868958(pointer)X
378691235(to)X
378701326(a)X
378711392(data)X
378721571(or)X
378731671(function)X
378741983(member)X
378752287(of)X
378762378(a)X
378772444(class)X
378782642(or)X
378792742(structure)X
378803082(is)X
378813163(a)X
378823229(unique)X
378833491(type.)X
378841 f
37885576 3900(A)N
37886661(debugging)X
378871055(information)X
378881494(entry)X
378891697(representing)X
378902154(the)X
378912285(type)X
378922460(of)X
378932556(an)X
378942662(object)X
378952901(that)X
378963057(is)X
378973139(a)X
378983201(pointer)X
378993474(to)X
379003566(a)X
379013628(structure)X
379023959(or)X
37903576 4004(class)N
37904769(member)X
379051080(has)X
379061219(the)X
379071349(tag)X
379080 f
379091479 0.1953(DW_TAG_ptr_to_member_type)AX
379101 f
379112804(.)X
37912576 4160(If)N
37913670(the)X
37914814(pointer)X
379151100(to)X
379161205(member)X
379171530(type)X
379181718(has)X
379191871(a)X
379201946(name,)X
379212195(the)X
379222339(pointer)X
379232625(to)X
379242730(member)X
379253055(entry)X
379263272(has)X
379273426(a)X
379280 f
379293502(DW_AT_name)X
379301 f
37931576 4264(attribute,)N
37932926(whose)X
379331183(value)X
379341407(is)X
379351499(a)X
379361571(null-terminated)X
379372149(string)X
379382383(containing)X
379392789(the)X
379402929(type)X
379413113(name)X
379423336(as)X
379433441(it)X
379443523(appears)X
379453823(in)X
379463924(the)X
37947576 4368(source)N
37948827(program.)X
37949576 4524(The)N
37950744(pointer)X
379511025(to)X
379521125(member)X
379531445(entry)X
379541657(has)X
379551805(a)X
379560 f
379571875(DW_AT_type)X
379581 f
379592436(attribute)X
379602762(to)X
379612862(describe)X
379623187(the)X
379633327(type)X
379643511(of)X
379653616(the)X
379663756(class)X
379673959(or)X
37968576 4628(structure)N
37969906(member)X
379701217(to)X
379711308(which)X
379721545(objects)X
379731817(of)X
379741912(this)X
379752062(type)X
379762236(may)X
379772410(point.)X
37978576 4784(The)N
37979735(pointer)X
379801007(to)X
379811098(member)X
379821409(entry)X
379831612(also)X
379841776(has)X
379851915(a)X
379860 f
379871976 0.1969(DW_AT_containing_type)AX
379881 f
379893111(attribute,)X
379903450(whose)X
379913697(value)X
379923911(is)X
379933993(a)X
37994576 4888(reference)N
37995926(to)X
379961019(a)X
379971082(debugging)X
379981478(information)X
379991919(entry)X
380002124(for)X
380012249(the)X
380022380(class)X
380032574(or)X
380042670(structure)X
380053001(to)X
380063093(whose)X
380073340(members)X
380083686(objects)X
380093959(of)X
38010576 4992(this)N
38011726(type)X
38012900(may)X
380131074(point.)X
38014576 5148(Finally,)N
38015877(the)X
380161013(pointer)X
380171291(to)X
380181388(member)X
380191705(entry)X
380201914(has)X
380212059(a)X
380220 f
380232126 0.1985(DW_AT_use_location)AX
380241 f
380253108(attribute)X
380263432(whose)X
380273685(value)X
380283905(is)X
380293993(a)X
38030576 5252(location)N
38031891(description)X
380321313(that)X
380331476(computes)X
380341844(the)X
380351982(address)X
380362275(of)X
380372378(the)X
380382516(member)X
380392835(of)X
380402938(the)X
380413076(class)X
380423277(or)X
380433380(structure)X
380443718(to)X
380453817(which)X
38046576 5356(the)N
38047706(pointer)X
38048978(to)X
380491069(member)X
380501380(type)X
380511554(entry)X
380521757(can)X
380531901(point.)X
380542 f
38055576 5512(The)N
38056734(method)X
380571019(used)X
380581206(to)X
380591301(\256nd)X
380601459(the)X
380611593(address)X
380621892(of)X
380631987(a)X
380642057(given)X
380652274(member)X
380662582(of)X
380672677(a)X
380682747(class)X
380692949(or)X
380703054(structure)X
380713399(is)X
380723485(common)X
380733809(to)X
380743905(any)X
38075576 5616(instance)N
38076893(of)X
38077985(that)X
380781146(class)X
380791345(or)X
380801446(structure)X
380811787(and)X
380821942(to)X
380832034(any)X
380842184(instance)X
380852501(of)X
380862593(the)X
380872724(pointer)X
380883002(or)X
380893102(member)X
380903406(type.)X
380913619(The)X
380923773(method)X
38093576 5720(is)N
38094657(thus)X
38095826(associated)X
380961220(with)X
380971395(the)X
380981525(type)X
380991694(entry,)X
381001919(rather)X
381012161(than)X
381022340(with)X
381032515(each)X
381042703(instance)X
381053019(of)X
381063110(the)X
381073240(type.)X
381081 f
3810910 s
38110576 5951(Revision:)N
38111902(2.0.0)X
381122176(Page)X
381132352(47)X
381143599(July)X
381153752(27,)X
381163872(1993)X
381171943 6055(Industry)N
381182230(Review)X
381192495(Draft)X
38120
3812148 p
38122%%Page: 48 50
381230(Courier)xf 0 f
3812410 s 0 xH 0 xS 0 f
3812511 s
381261 f
3812710 s
38128576 520(DWARF)N
38129885(Debugging)X
381301261(Information)X
381311664(Format)X
381322 f
3813311 s
38134576 832(The)N
381350 f
38136731 0.1985(DW_AT_use_location)AX
381372 f
381381708(expression,)X
381392129(however,)X
381402472(cannot)X
381412735(be)X
381422841(used)X
381433025(on)X
381443136(its)X
381453244(own,)X
381463437(but)X
381473574(must)X
381483764(be)X
381493871(used)X
38150576 936(in)N
38151688(conjunction)X
381521148(with)X
381531344(the)X
381541495(location)X
381551828(expressions)X
381562281(for)X
381572427(a)X
381582514(particular)X
381592914(object)X
381603172(of)X
381613283(the)X
381623433(given)X
381633666(pointer)X
381643963(to)X
38165576 1040(member)N
38166893(type)X
381671075(and)X
381681243(for)X
381691382(a)X
381701462(particular)X
381711856(structure)X
381722210(or)X
381732324(class)X
381742536(instance.)X
381752910(The)X
381760 f
381773078 0.1985(DW_AT_use_location)AX
381782 f
38179576 1144(attribute)N
38180935(expects)X
381811248(two)X
381821430(values)X
381831709(to)X
381841831(be)X
381851967(pushed)X
381862269(onto)X
381872479(the)X
381882640(location)X
381892983(expression)X
381903412(stack)X
381913646(before)X
381923924(the)X
381930 f
38194576 1248 0.1985(DW_AT_use_location)AN
381952 f
381961553(expression)X
381971952(is)X
381982034(evaluated.)X
381992445(The)X
382002601(\256rst)X
382012762(value)X
382022977(pushed)X
382033250(should)X
382043509(be)X
382053616(the)X
382063748(value)X
382073963(of)X
38208576 1352(the)N
38209713(pointer)X
38210997(to)X
382111095(member)X
382121406(object)X
382131651(itself.)X
382141897(The)X
382152058(second)X
382162331(value)X
382172550(pushed)X
382182827(should)X
382193090(be)X
382203201(the)X
382213337(base)X
382223526(address)X
382233827(of)X
382243924(the)X
38225576 1456(entire)N
38226804(structure)X
382271144(or)X
382281244(union)X
382291467(instance)X
382301783(containing)X
382312183(the)X
382322313(member)X
382332617(whose)X
382342859(address)X
382353154(is)X
382363235(being)X
382373453(calculated.)X
38238576 1612(So,)N
38239708(for)X
38240833(an)X
38241943(expression)X
382421341(like)X
382430 f
382441256 1768(object.*mbr_ptr)N
382452 f
38246576 1924(where)N
382470 f
38248844(mbr_ptr)X
382492 f
382501237(has)X
382511381(some)X
382521583(pointer)X
382531860(to)X
382541951(member)X
382552255(type,)X
382562446(a)X
382572512(debugger)X
382582866(should:)X
38259642 2080(1.)N
38260796(Push)X
38261994(the)X
382621124(value)X
382631337(of)X
382640 f
382651428(mbr_ptr)X
382662 f
382671821(onto)X
382682000(the)X
382692130(location)X
382702442(expression)X
382712840(stack.)X
38272642 2236(2.)N
38273796(Push)X
38274994(the)X
382751124(base)X
382761307(address)X
382771602(of)X
382780 f
382791693(object)X
382802 f
382812033(onto)X
382822212(the)X
382832342(location)X
382842654(expression)X
382853052(stack.)X
38286642 2392(3.)N
38287796(Evaluate)X
382881132(the)X
382890 f
382901262 0.1985(DW_AT_use_location)AX
382912 f
382922238(expression)X
382932636(for)X
382942761(the)X
382952891(type)X
382963060(of)X
382970 f
382983151(mbr_ptr)X
382992 f
383003522(.)X
383013 f
3830212 s
38303576 2548(5.12)N
38304792(File)X
38305972(Type)X
383061204(Entries)X
383072 f
3830811 s
38309576 2704(Some)N
38310788(languages,)X
383111194(such)X
383121377(as)X
383131477(Pascal,)X
383141761(provide)X
383152052(a)X
383162118(\256rst)X
383172277(class)X
383182475(data)X
383192654(type)X
383202823(to)X
383212914(represent)X
383223268(\256les.)X
383231 f
38324576 2860(A)N
38325661(\256le)X
38326796(type)X
38327970(is)X
383281051(represented)X
383291478(by)X
383301588(a)X
383311650(debugging)X
383322045(information)X
383332485(entry)X
383342689(with)X
383352869(the)X
383363000(tag)X
383370 f
383383131 0.1992(DW_TAG_file_type.)AX
383391 f
38340576 2964(If)N
38341667(the)X
38342808(\256le)X
38343954(type)X
383441139(has)X
383451289(a)X
383461361(name,)X
383471607(the)X
383481748(\256le)X
383491894(type)X
383502079(entry)X
383512292(has)X
383522441(a)X
383530 f
383542512(DW_AT_name)X
383551 f
383563074(attribute,)X
383573423(whose)X
383583679(value)X
383593902(is)X
383603993(a)X
38361576 3068(null-terminated)N
383621143(string)X
383631366(containing)X
383641761(the)X
383651891(type)X
383662065(name)X
383672278(as)X
383682373(it)X
383692445(appears)X
383702735(in)X
383712826(the)X
383722956(source)X
383733207(program.)X
38374576 3224(The)N
38375741(\256le)X
38376882(type)X
383771062(entry)X
383781271(has)X
383791416(a)X
383800 f
383811483(DW_AT_type)X
383821 f
383832041(attribute)X
383842364(describing)X
383852759(the)X
383862895(type)X
383873075(of)X
383883176(the)X
383893312(objects)X
383903591(contained)X
383913963(in)X
38392576 3328(the)N
38393706(\256le.)X
38394576 3484(The)N
38395763(\256le)X
38396926(type)X
383971128(entry)X
383981359(also)X
383991551(has)X
384001718(a)X
384010 f
384021807(DW_AT_byte_size)X
384031 f
384042653(attribute,)X
384053021(whose)X
384063296(value)X
384073538(is)X
384083648(a)X
384093738(constant)X
38410576 3588(representing)N
384111033(the)X
384121163(size)X
384131322(in)X
384141413(bytes)X
384151621(of)X
384161716(an)X
384171821(instance)X
384182132(of)X
384192227(this)X
384202377(\256le)X
384212512(type.)X
3842210 s
38423576 5951(Revision:)N
38424902(2.0.0)X
384252176(Page)X
384262352(48)X
384273599(July)X
384283752(27,)X
384293872(1993)X
384301943 6055(Industry)N
384312230(Review)X
384322495(Draft)X
38433
3843449 p
38435%%Page: 49 51
384360(Courier)xf 0 f
3843710 s 0 xH 0 xS 0 f
3843811 s
384391 f
3844010 s
384413075 520(Programming)N
384423535(Languages)X
384433903(SIG)X
384443 f
3844512 s
38446576 832(6.)N
38447696(OTHER)X
384481067(DEBUGGING)X
384491688(INFORMATION)X
384501 f
3845111 s
38452576 988(This)N
38453766(section)X
384541049(describes)X
384551409(debugging)X
384561814(information)X
384572264(that)X
384582430(is)X
384592522(not)X
384602668(represented)X
384613106(in)X
384623208(the)X
384633349(form)X
384643553(of)X
384653660(debugging)X
38466576 1092(information)N
384671015(entries)X
384681272(and)X
384691421(is)X
384701502(not)X
384711637(contained)X
384722002(within)X
384732250(the)X
384740 f
384752380(.debug_info)X
384761 f
384772985(section.)X
384783 f
3847912 s
38480576 1248(6.1)N
38481744(Accelerated)X
384821255(Access)X
384832 f
3848411 s
38485576 1404(A)N
38486667(debugger)X
384871036(frequently)X
384881431(needs)X
384891668(to)X
384901775(\256nd)X
384911945(the)X
384922091(debugging)X
384932501(information)X
384942956(for)X
384953097(a)X
384963179(program)X
384973524(object)X
384983778(de\256ned)X
38499576 1508(outside)N
38500860(of)X
38501958(the)X
385021094(compilation)X
385031544(unit)X
385041710(where)X
385051953(the)X
385062089(debugged)X
385072459(program)X
385082794(is)X
385092881(currently)X
385103232(stopped.)X
385113578(Sometimes)X
385123982(it)X
38513576 1612(will)N
38514751(know)X
38515978(only)X
385161171(the)X
385171320(name)X
385181551(of)X
385191661(the)X
385201810(object;)X
385212096(sometimes)X
385222503(only)X
385232696(the)X
385242845(address.)X
385253203(To)X
385263337(\256nd)X
385273510(the)X
385283660(debugging)X
38529576 1716(information)N
385301022(associated)X
385311423(with)X
385321605(a)X
385331678(global)X
385341933(object)X
385352178(by)X
385362290(name,)X
385372531(using)X
385382751(the)X
385392888(DWARF)X
385403215(debugging)X
385413615(information)X
38542576 1820(entries)N
38543842(alone,)X
385441086(a)X
385451156(debugger)X
385461514(would)X
385471756(need)X
385481948(to)X
385492043(run)X
385502191(through)X
385512496(all)X
385522616(entries)X
385532882(at)X
385542977(the)X
385553111(highest)X
385563392(scope)X
385573618(within)X
385583866(each)X
38559576 1924(compilation)N
385601024(unit.)X
385611232(For)X
385621390(lookup)X
385631656(by)X
385641765(address,)X
385652086(for)X
385662215(a)X
385672285(subroutine,)X
385682710(a)X
385692780(debugger)X
385703138(can)X
385713290(use)X
385723432(the)X
385733565(low)X
385743718(and)X
385753875(high)X
38576576 2028(pc)N
38577703(attributes)X
385781086(of)X
385791199(the)X
385801351(compilation)X
385811817(unit)X
385822000(entries)X
385832285(to)X
385842399(quickly)X
385852699(narrow)X
385863003(down)X
385873239(the)X
385883392(search,)X
385893693(but)X
385903851(these)X
38591576 2132(attributes)N
38592940(only)X
385931117(cover)X
385941337(the)X
385951470(range)X
385961700(of)X
385971794(addresses)X
385982165(for)X
385992293(the)X
386002426(text)X
386012579(associated)X
386022976(with)X
386033153(a)X
386043221(compilation)X
386053667(unit)X
386063829(entry.)X
38607576 2236(To)N
38608695(\256nd)X
38609854(the)X
38610989(debugging)X
386111388(information)X
386121832(associated)X
386132231(with)X
386142411(a)X
386152482(data)X
386162666(object,)X
386172931(an)X
386183046(exhaustive)X
386193445(search)X
386203706(would)X
386213949(be)X
38622576 2340(needed.)N
38623938(Furthermore,)X
386241483(any)X
386251679(search)X
386261981(through)X
386272328(debugging)X
386282768(information)X
386293253(entries)X
386303561(for)X
386313732(different)X
38632576 2444(compilation)N
386331026(units)X
386341226(within)X
386351476(a)X
386361548(large)X
386371762(program)X
386382097(would)X
386392342(potentially)X
386402750(require)X
386413038(the)X
386423175(access)X
386433433(of)X
386443531(many)X
386453750(memory)X
38646576 2548(pages,)N
38647825(probably)X
386481165(hurting)X
386491447(debugger)X
386501801(performance.)X
386511 f
38652576 2704(To)N
38653714(make)X
38654945(lookups)X
386551264(of)X
386561377(program)X
386571715(objects)X
386582005(by)X
386592133(name)X
386602364(or)X
386612477(by)X
386622606(address)X
386632910(faster,)X
386643168(a)X
386653248(producer)X
386663601(of)X
386673715(DWARF)X
38668576 2808(information)N
386691050(may)X
386701259(provide)X
386711585(two)X
386721774(different)X
386732134(types)X
386742377(of)X
386752507(tables)X
386762770(containing)X
386773199(information)X
386783672(about)X
386793924(the)X
38680576 2912(debugging)N
38681973(information)X
386821415(entries)X
386831675(owned)X
386841934(by)X
386852047(a)X
386862111(particular)X
386872474(compilation)X
386882923(unit)X
386893087(entry)X
386903294(in)X
386913389(a)X
386923454(more)X
386933661(condensed)X
38694576 3016(format.)N
386953 f
38696576 3172(6.1.1)N
38697796(Lookup)X
386981112(by)X
386991227(Name)X
387001 f
38701576 3328(For)N
38702765(lookup)X
387031077(by)X
387041232(name,)X
387051512(a)X
387061618(table)X
387071857(is)X
387081983(maintained)X
387092443(in)X
387102579(a)X
387112685(separate)X
387123040(object)X
387133323(\256le)X
387143503(section)X
387153821(called)X
387160 f
38717576 3432(.debug_pubnames)N
387181 f
387191371(.)X
387201446(The)X
387211614(table)X
387221817(consists)X
387232126(of)X
387242229(sets)X
387252391(of)X
387262494(variable)X
387272808(length)X
387283059(entries,)X
387293346(each)X
387303537(set)X
387313665(describing)X
38732576 3536(the)N
38733726(names)X
38734993(of)X
387351108(global)X
387361371(objects)X
387371663(whose)X
387381930(de\256nitions)X
387392346(or)X
387402462(declarations)X
387412931(are)X
387423081(represented)X
387433529(by)X
387443660(debugging)X
38745576 3640(information)N
387461016(entries)X
387471274(owned)X
387481531(by)X
387491642(a)X
387501704(single)X
387511938(compilation)X
387522384(unit.)X
387532589(Each)X
387542788(set)X
387552909(begins)X
387563162(with)X
387573342(a)X
387583403(header)X
387593659(containing)X
38760576 3744(four)N
38761759(values:)X
387621046(the)X
387631191(total)X
387641386(length)X
387651644(of)X
387661754(the)X
387671899(entries)X
387682171(for)X
387692310(that)X
387702480(set,)X
387712637(not)X
387722787(including)X
387733158(the)X
387743303(length)X
387753561(\256eld)X
387763756(itself,)X
387773993(a)X
38778576 3848(version)N
38779862(number,)X
387801180(the)X
387811315(offset)X
387821542(from)X
387831740(the)X
387841875(beginning)X
387852255(of)X
387862355(the)X
387870 f
387882490(.debug_info)X
387891 f
387903100(section)X
387913376(of)X
387923475(the)X
387933609(compilation)X
38794576 3952(unit)N
38795751(entry)X
38796970(referenced)X
387971378(by)X
387981504(the)X
387991650(set)X
388001786(and)X
388011951(the)X
388022097(size)X
388032272(in)X
388042379(bytes)X
388052603(of)X
388062714(the)X
388072860(contents)X
388083192(of)X
388093303(the)X
388100 f
388113449(.debug_info)X
388121 f
38813576 4056(section)N
38814849(generated)X
388151214(to)X
388161306(represent)X
388171651(that)X
388181807(compilation)X
388192253(unit.)X
388202435(This)X
388212614(header)X
388222870(is)X
388232951(followed)X
388243286(by)X
388253396(a)X
388263457(variable)X
388273763(number)X
38828576 4160(of)N
38829676(offset/name)X
388301119(pairs.)X
388311361(Each)X
388321564(pair)X
388331728(consists)X
388342034(of)X
388352134(the)X
388362269(offset)X
388372496(from)X
388382694(the)X
388392829(beginning)X
388403209(of)X
388413309(the)X
388423444(compilation)X
388433894(unit)X
38844576 4264(entry)N
38845790(corresponding)X
388461326(to)X
388471428(the)X
388481569(current)X
388491851(set)X
388501982(to)X
388512084(the)X
388522225(debugging)X
388532630(information)X
388543079(entry)X
388553292(for)X
388563426(the)X
388573566(given)X
388583794(object,)X
38859576 4368(followed)N
38860912(by)X
388611023(a)X
388621085(null-terminated)X
388631653(character)X
388641998(string)X
388652222(representing)X
388662680(the)X
388672811(name)X
388683026(of)X
388693123(the)X
388703255(object)X
388713495(as)X
388723592(given)X
388733812(by)X
388743924(the)X
388750 f
38876576 4472(DW_AT_name)N
388771 f
388781136(attribute)X
388791461(of)X
388801564(the)X
388811702(referenced)X
388822102(debugging)X
388832504(entry.)X
388842759(Each)X
388852965(set)X
388863093(of)X
388873195(names)X
388883449(is)X
388893537(terminated)X
388903944(by)X
38891576 4576(zero.)N
38892576 4732(In)N
38893676(the)X
38894811(case)X
38895989(of)X
388961089(the)X
388971224(name)X
388981442(of)X
388991542(a)X
389001608(static)X
389011822(data)X
389021996(member)X
389032312(or)X
389042412(function)X
389052733(member)X
389063049(of)X
389073149(a)X
389083215(C++)X
389093402(structure,)X
389103760(class)X
389113959(or)X
38912576 4836(union,)N
38913827(the)X
38914963(name)X
389151182(presented)X
389161547(in)X
389171644(the)X
389180 f
389191780(.debug_pubnames)X
389201 f
389212602(section)X
389222879(is)X
389232965(not)X
389243105(the)X
389253240(simple)X
389263503(name)X
389273721(given)X
389283944(by)X
38929576 4940(the)N
389300 f
38931708(DW_AT_name)X
389321 f
389331263(attribute)X
389341583(of)X
389351681(the)X
389361814(referenced)X
389372209(debugging)X
389382606(entry,)X
389392834(but)X
389402972(rather)X
389413202(the)X
389423335(fully)X
389433527(class)X
389443723(quali\256ed)X
38945576 5044(name)N
38946789(of)X
38947884(the)X
389481014(data)X
389491183(or)X
389501278(function)X
389511594(member.)X
389523 f
38953576 5200(6.1.2)N
38954796(Lookup)X
389551112(by)X
389561227(Address)X
389571 f
38958576 5356(For)N
38959759(lookup)X
389601066(by)X
389611216(address,)X
389621563(a)X
389631664(table)X
389641898(is)X
389652019(maintained)X
389662474(in)X
389672605(a)X
389682706(separate)X
389693056(object)X
389703334(\256le)X
389713509(section)X
389723821(called)X
389730 f
38974576 5460(.debug_aranges)N
389751 f
389761318(.)X
389771386(The)X
389781547(table)X
389791743(consists)X
389802046(of)X
389812143(sets)X
389822299(of)X
389832396(variable)X
389842704(length)X
389852949(entries,)X
389863229(each)X
389873413(set)X
389883534(describing)X
389893924(the)X
38990576 5564(portion)N
38991865(of)X
38992972(the)X
389931114(program's)X
389941509(address)X
389951806(space)X
389962035(that)X
389972202(is)X
389982295(covered)X
389992607(by)X
390002729(a)X
390012802(single)X
390023048(compilation)X
390033506(unit.)X
390043723(Each)X
390053934(set)X
39006576 5668(begins)N
39007828(with)X
390081007(a)X
390091068(header)X
390101324(containing)X
390111719(\256ve)X
390121873(values:)X
3901310 s
39014576 5951(Revision:)N
39015902(2.0.0)X
390162176(Page)X
390172352(49)X
390183599(July)X
390193752(27,)X
390203872(1993)X
390211943 6055(Industry)N
390222230(Review)X
390232495(Draft)X
39024
3902550 p
39026%%Page: 50 52
390270(Courier)xf 0 f
3902810 s 0 xH 0 xS 0 f
3902911 s
390301 f
3903110 s
39032576 520(DWARF)N
39033885(Debugging)X
390341261(Information)X
390351664(Format)X
3903611 s
39037642 832(1.)N
39038796(The)X
39039955(total)X
390401135(length)X
390411378(of)X
390421473(the)X
390431603(entries)X
390441860(for)X
390451984(that)X
390462139(set,)X
390472281(not)X
390482416(including)X
390492772(the)X
390502902(length)X
390513145(\256eld)X
390523324(itself.)X
39053642 988(2.)N
39054796(A)X
39055881(version)X
390561162(number.)X
39057642 1144(3.)N
39058796(The)X
39059958(offset)X
390601183(from)X
390611379(the)X
390621512(beginning)X
390631890(of)X
390641988(the)X
390650 f
390662121(.debug_info)X
390671 f
390682729(section)X
390693005(of)X
390703104(the)X
390713238(compilation)X
390723687(unit)X
390733851(entry)X
39074796 1248(referenced)N
390751188(by)X
390761298(the)X
390771428(set.)X
39078642 1404(4.)N
39079796(The)X
39080956(size)X
390811116(in)X
390821208(bytes)X
390831417(of)X
390841513(an)X
390851619(address)X
390861905(on)X
390872016(the)X
390882147(target)X
390892371(architecture.)X
390902854(For)X
390912999(segmented)X
390923399(addressing,)X
390933821(this)X
390943973(is)X
39095796 1508(the)N
39096926(size)X
390971085(of)X
390981180(the)X
390991310(offset)X
391001532(portion)X
391011809(of)X
391021904(the)X
391032034(address.)X
39104642 1664(5.)N
39105796(The)X
39106965(size)X
391071134(in)X
391081235(bytes)X
391091453(of)X
391101558(a)X
391111629(segment)X
391121955(descriptor)X
391132339(on)X
391142459(the)X
391152599(target)X
391162832(architecture.)X
391173324(If)X
391183414(the)X
391193554(target)X
391203787(system)X
39121796 1768(uses)N
39122969(a)X
391231030(\257at)X
391241165(address)X
391251450(space,)X
391261689(this)X
391271839(value)X
391282052(is)X
391292133(0.)X
39130576 1924(This)N
39131761(header)X
391321023(is)X
391331110(followed)X
391341451(by)X
391351567(a)X
391361634(variable)X
391371946(number)X
391382243(of)X
391392344(address)X
391402636(range)X
391412860(descriptors.)X
391423319(Each)X
391433524(descriptor)X
391443905(is)X
391453993(a)X
39146576 2028(pair)N
39147741(consisting)X
391481127(of)X
391491228(the)X
391501364(beginning)X
391511745(address)X
391522035(of)X
391532135(a)X
391542201(range)X
391552423(of)X
391562523(text)X
391572683(or)X
391582783(data)X
391592957(covered)X
391603262(by)X
391613377(some)X
391623590(entry)X
391633798(owned)X
39164576 2132(by)N
39165693(the)X
39166830(corresponding)X
391671362(compilation)X
391681815(unit)X
391691983(entry,)X
391702216(followed)X
391712559(by)X
391722677(the)X
391732815(length)X
391743066(of)X
391753169(that)X
391763332(range.)X
391773601(A)X
391783694(particular)X
39179576 2236(set)N
39180708(is)X
39181801(terminated)X
391821213(by)X
391831335(an)X
391841451(entry)X
391851665(consisting)X
391862056(of)X
391872162(two)X
391882327(zeroes.)X
391892628(By)X
391902764(scanning)X
391913110(the)X
391923251(table,)X
391933478(a)X
391943550(debugger)X
391953910(can)X
39196576 2340(quickly)N
39197866(decide)X
391981121(which)X
391991361(compilation)X
392001809(unit)X
392011973(to)X
392022068(look)X
392032251(in)X
392042346(to)X
392052441(\256nd)X
392062604(the)X
392072738(debugging)X
392083136(information)X
392093579(for)X
392103707(an)X
392113816(object)X
39212576 2444(that)N
39213731(has)X
39214870(a)X
39215931(given)X
392161149(address.)X
392173 f
3921812 s
39219576 2600(6.2)N
39220744(Line)X
39221955(Number)X
392221320(Information)X
392232 f
3922411 s
39225576 2756(A)N
39226652(source-level)X
392271104(debugger)X
392281458(will)X
392291614(need)X
392301802(to)X
392311893(know)X
392322101(how)X
392332270(to)X
392342361(associate)X
392352711(statements)X
392363105(in)X
392373196(the)X
392383326(source)X
392393583(\256les)X
392403748(with)X
392413924(the)X
39242576 2860(corresponding)N
392431115(machine)X
392441439(instruction)X
392451848(addresses)X
392462220(in)X
392472315(the)X
392482449(executable)X
392492852(object)X
392503094(or)X
392513198(the)X
392523332(shared)X
392533596(objects)X
392543871(used)X
39255576 2964(by)N
39256687(that)X
39257854(executable)X
392581260(object.)X
392591549(Such)X
392601749(an)X
392611866(association)X
392622297(would)X
392632542(make)X
392642756(it)X
392652835(possible)X
392663153(for)X
392673285(the)X
392683422(debugger)X
392693783(user)X
392703963(to)X
39271576 3068(specify)N
39272860(machine)X
392731197(instruction)X
392741618(addresses)X
392752002(in)X
392762109(terms)X
392772342(of)X
392782449(source)X
392792721(statements.)X
392803175(This)X
392813365(would)X
392823619(be)X
392833740(done)X
392843949(by)X
39285576 3172(specifying)N
39286962(the)X
392871098(line)X
392881259(number)X
392891555(and)X
392901715(the)X
392911852(source)X
392922115(\256le)X
392932252(containing)X
392942659(the)X
392952796(statement.)X
392963207(The)X
392973368(debugger)X
392983729(can)X
392993885(also)X
39300576 3276(use)N
39301732(this)X
39302898(information)X
393031353(to)X
393041460(display)X
393051753(locations)X
393062115(in)X
393072222(terms)X
393082455(of)X
393092562(the)X
393102708(source)X
393112980(\256les)X
393123160(and)X
393133330(to)X
393143437(single)X
393153686(step)X
393163866(from)X
39317576 3380(statement)N
39318936(to)X
393191027(statement.)X
393201 f
39321576 3536(As)N
39322696(mentioned)X
393231092(in)X
393241184(section)X
393251457(3.1,)X
393261613(above,)X
393271869(the)X
393282001(line)X
393292158(number)X
393302451(information)X
393312892(generated)X
393323258(for)X
393333384(a)X
393343447(compilation)X
393353894(unit)X
39336576 3640(is)N
39337691(represented)X
393381152(in)X
393391277(the)X
393400 f
393411472(.debug_line)X
393421 f
393432111(section)X
393442417(of)X
393452546(an)X
393462685(object)X
393472957(\256le)X
393483126(and)X
393493309(is)X
393503424(referenced)X
393513850(by)X
393523993(a)X
39353576 3744(corresponding)N
393541101(compilation)X
393551546(unit)X
393561706(debugging)X
393572100(information)X
393582539(entry)X
393592742(in)X
393602833(the)X
393610 f
393622994(.debug_info)X
393631 f
393643599(section.)X
393652 f
39366576 3900(If)N
39367654(space)X
39368878(were)X
393691074(not)X
393701212(a)X
393711281(consideration,)X
393721813(the)X
393731946(information)X
393742388(provided)X
393752726(in)X
393762820(the)X
393770 f
393782953(.debug_line)X
393792 f
393803561(section)X
393813836(could)X
39382576 4004(be)N
39383690(represented)X
393841136(as)X
393851245(a)X
393861320(large)X
393871537(matrix,)X
393881820(with)X
393892004(one)X
393902162(row)X
393912329(for)X
393922462(each)X
393932658(instruction)X
393943071(in)X
393953170(the)X
393963308(emitted)X
393973598(object)X
393983844(code.)X
39399576 4108(The)N
39400730(matrix)X
39401982(would)X
394021220(have)X
394031408(columns)X
394041723(for:)X
39405586 4264(\320)N
39406708(the)X
39407838(source)X
394081094(\256le)X
394091224(name)X
39410586 4420(\320)N
39411708(the)X
39412838(source)X
394131094(line)X
394141249(number)X
39415586 4576(\320)N
39416708(the)X
39417838(source)X
394181094(column)X
394191375(number)X
39420586 4732(\320)N
39421708(whether)X
394221014(this)X
394231164(instruction)X
394241569(is)X
394251650(the)X
394261780(beginning)X
394272155(of)X
394282246(a)X
394292312(source)X
394302568(statement)X
39431586 4888(\320)N
39432708(whether)X
394331014(this)X
394341164(instruction)X
394351569(is)X
394361650(the)X
394371780(beginning)X
394382155(of)X
394392246(a)X
394402312(basic)X
394412520(block.)X
39442576 5044(Such)N
39443774(a)X
39444846(matrix,)X
394451126(however,)X
394461474(would)X
394471718(be)X
394481829(impractically)X
394492328(large.)X
394502586(We)X
394512726(shrink)X
394522974(it)X
394533052(with)X
394543233(two)X
394553389(techniques.)X
394563838(First,)X
39457576 5148(we)N
39458704(delete)X
39459945(from)X
394601141(the)X
394611279(matrix)X
394621539(each)X
394631735(row)X
394641902(whose)X
394652152(\256le,)X
394662312(line)X
394672475(and)X
394682637(source)X
394692900(column)X
394703188(information)X
394713634(is)X
394723722(identical)X
39473576 5252(with)N
39474755(that)X
39475920(of)X
394761016(its)X
394771127(predecessors.)X
394781656(Second,)X
394791959(we)X
394802084(design)X
394812341(a)X
394822412(byte-coded)X
394832825(language)X
394843180(for)X
394853310(a)X
394863381(state)X
394873575(machine)X
394883900(and)X
39489576 5356(store)N
39490779(a)X
39491850(stream)X
394921116(of)X
394931212(bytes)X
394941420(in)X
394951516(the)X
394961651(object)X
394971894(\256le)X
394982029(instead)X
394992311(of)X
395002407(the)X
395012542(matrix.)X
395022842(This)X
395033020(language)X
395043374(can)X
395053527(be)X
395063636(much)X
395073852(more)X
39508576 5460(compact)N
39509897(than)X
395101077(the)X
395111208(matrix.)X
395121505(When)X
395131728(a)X
395141795(consumer)X
395152159(of)X
395162251(the)X
395172383(statement)X
395182745(information)X
395193186(executes,)X
395203530(it)X
395213604(must)X
395223794(``run'')X
39523576 5564(the)N
39524707(state)X
39525897(machine)X
395261218(to)X
395271310(generate)X
395281641(the)X
395291772(matrix)X
395302025(for)X
395312151(each)X
395322340(compilation)X
395332785(unit)X
395342946(it)X
395353018(is)X
395363099(interested)X
395373469(in.)X
395383604(The)X
395393758(concept)X
39540576 5668(of)N
39541669(an)X
39542781(encoded)X
395431098(matrix)X
395441352(also)X
395451523(leaves)X
395461767(room)X
395471976(for)X
395482103(expansion.)X
395492528(In)X
395502625(the)X
395512757(future,)X
395523014(columns)X
395533331(can)X
395543482(be)X
395553590(added)X
395563830(to)X
395573924(the)X
39558576 5772(matrix)N
39559828(to)X
39560919(encode)X
395611190(other)X
395621398(things)X
395631636(that)X
395641796(are)X
395651935(related)X
395662207(to)X
395672298(individual)X
395682679(instruction)X
395693084(addresses.)X
395701 f
3957110 s
39572576 5951(Revision:)N
39573902(2.0.0)X
395742176(Page)X
395752352(50)X
395763599(July)X
395773752(27,)X
395783872(1993)X
395791943 6055(Industry)N
395802230(Review)X
395812495(Draft)X
39582
3958351 p
39584%%Page: 51 53
395850(Courier)xf 0 f
3958610 s 0 xH 0 xS 0 f
3958711 s
395881 f
3958910 s
395903075 520(Programming)N
395913535(Languages)X
395923903(SIG)X
395933 f
3959411 s
39595576 832(6.2.1)N
39596796(De\256nitions)X
395971 f
39598576 988(The)N
39599735(following)X
396001100(terms)X
396011318(are)X
396021447(used)X
396031630(in)X
396041721(the)X
396051851(description)X
396062265(of)X
396072360(the)X
396082490(line)X
396092645(number)X
396102936(information)X
396113375(format:)X
39612576 1144(state)N
39613784(machine)X
396141480(The)X
396151663(hypothetical)X
396162146(machine)X
396172491(used)X
396182698(by)X
396192833(a)X
396202919(consumer)X
396213308(of)X
396223428(the)X
396233583(line)X
396243763(number)X
396251456 1248(information)N
396261898(to)X
396271992(expand)X
396282271(the)X
396292403(byte-coded)X
396302818(instruction)X
396313220(stream)X
396323479(into)X
396333641(a)X
396343704(matrix)X
396353959(of)X
396361456 1352(line)N
396371611(number)X
396381902(information.)X
39639576 1508(statement)N
39640937(program)X
396411456(A)X
396421541(series)X
396431764(of)X
396441860(byte-coded)X
396452274(line)X
396462430(number)X
396472722(information)X
396483162(instructions)X
396493597(representing)X
396501456 1612(one)N
396511605(compilation)X
396522050(unit.)X
39653576 1768(basic)N
39654780(block)X
396551457(A)X
396561543(sequence)X
396571888(of)X
396581984(instructions)X
396592419(that)X
396602575(is)X
396612658(entered)X
396622941(only)X
396633122(at)X
396643210(the)X
396653342(\256rst)X
396663503(instruction)X
396673905(and)X
396681456 1872(exited)N
396691701(only)X
396701887(at)X
396711980(the)X
396722117(last)X
396732269(instruction.)X
396742720(We)X
396752871(de\256ne)X
396763115(a)X
396773183(procedure)X
396783562(invocation)X
396793963(to)X
396801456 1976(be)N
396811561(an)X
396821666(exit)X
396831821(from)X
396842014(a)X
396852075(basic)X
396862278(block.)X
39687576 2132(sequence)N
396881456(A)X
396891560(series)X
396901801(of)X
396911915(contiguous)X
396922343(target)X
396932585(machine)X
396942925(instructions.)X
396953422(One)X
396963609(compilation)X
396971456 2236(unit)N
396981627(may)X
396991812(emit)X
397002002(multiple)X
397012330(sequences)X
397022718(\(that)X
397032912(is,)X
397043025(not)X
397053170(all)X
397063291(instructions)X
397073735(within)X
397083993(a)X
397091456 2340(compilation)N
397101901(unit)X
397112061(are)X
397122190(assumed)X
397132515(to)X
397142606(be)X
397152711(contiguous\).)X
39716576 2496(sbyte)N
397171456(Small)X
397181685(signed)X
397191937(integer.)X
39720576 2652(ubyte)N
397211456(Small)X
397221685(unsigned)X
397232025(integer.)X
39724576 2808(uhalf)N
397251456(Medium)X
397261777(unsigned)X
397272117(integer.)X
39728576 2964(sword)N
397291456(Large)X
397301683(signed)X
397311935(integer.)X
39732576 3120(uword)N
397331456(Large)X
397341683(unsigned)X
397352023(integer.)X
39736576 3276(LEB128)N
397371456(Variable)X
397381781(length)X
397392024(signed)X
397402276(and)X
397412425(unsigned)X
397422765(data.)X
397432978(See)X
397443127(section)X
397453399(7.6.)X
397463 f
39747576 3432(6.2.2)N
39748796(State)X
397491008(Machine)X
397501358(Registers)X
397511 f
39752576 3588(The)N
39753735(statement)X
397541096(information)X
397551535(state)X
397561719(machine)X
397572040(has)X
397582179(the)X
397592309(following)X
397602674(registers:)X
397610 f
39762576 3744(address)N
397631 f
397641456(The)X
397651645(program-counter)X
397662288(value)X
397672532(corresponding)X
397683088(to)X
397693210(a)X
397703302(machine)X
397713654(instruction)X
397721456 3848(generated)N
397731820(by)X
397741930(the)X
397752060(compiler.)X
397760 f
39777576 4004(file)N
397781 f
397791456(An)X
397801635(unsigned)X
397812025(integer)X
397822342(indicating)X
397832768(the)X
397842948(identity)X
397853291(of)X
397863436(the)X
397873617(source)X
397883919(\256le)X
397891456 4108(corresponding)N
397901981(to)X
397912072(a)X
397922133(machine)X
397932454(instruction.)X
397940 f
39795576 4264(line)N
397961 f
397971456(An)X
397981622(unsigned)X
397991999(integer)X
398002303(indicating)X
398012716(a)X
398022814(source)X
398033103(line)X
398043296(number.)X
398053669(Lines)X
398063925(are)X
398071456 4368(numbered)N
398081839(beginning)X
398092222(at)X
398102316(1.)X
398112434(The)X
398122601(compiler)X
398132945(may)X
398143127(emit)X
398153315(the)X
398163453(value)X
398173674(0)X
398183748(in)X
398193847(cases)X
398201456 4472(where)N
398211692(an)X
398221797(instruction)X
398232197(cannot)X
398242454(be)X
398252559(attributed)X
398262920(to)X
398273011(any)X
398283160(source)X
398293411(line.)X
398300 f
39831576 4628(column)N
398321 f
398331456(An)X
398341596(unsigned)X
398351947(integer)X
398362225(indicating)X
398372612(a)X
398382684(column)X
398392982(number)X
398403284(within)X
398413543(a)X
398423615(source)X
398433877(line.)X
398441456 4732(Columns)N
398451821(are)X
398461973(numbered)X
398472370(beginning)X
398482768(at)X
398492877(1.)X
398503010(The)X
398513192(value)X
398523428(0)X
398533517(is)X
398543621(reserved)X
398553963(to)X
398561456 4836(indicate)N
398571758(that)X
398581913(a)X
398591974(statement)X
398602335(begins)X
398612587(at)X
398622673(the)X
398632803(``left)X
398643001(edge'')X
398653247(of)X
398663342(the)X
398673472(line.)X
398680 f
39869576 4992(is_stmt)N
398701 f
398711456(A)X
398721553(boolean)X
398731866(indicating)X
398742254(that)X
398752421(the)X
398762563(current)X
398772847(instruction)X
398783260(is)X
398793354(the)X
398803497(beginning)X
398813885(of)X
398823993(a)X
398831456 5096(statement.)N
398840 f
39885576 5252(basic_block)N
398861 f
398871456(A)X
398881553(boolean)X
398891866(indicating)X
398902254(that)X
398912421(the)X
398922563(current)X
398932847(instruction)X
398943260(is)X
398953354(the)X
398963497(beginning)X
398973885(of)X
398983993(a)X
398991456 5356(basic)N
399001659(block.)X
399010 f
39902576 5512(end_sequence)N
399031 f
399041456(A)X
399051542(boolean)X
399061844(indicating)X
399072221(that)X
399082377(the)X
399092508(current)X
399102780(address)X
399113066(is)X
399123148(that)X
399133305(of)X
399143402(the)X
399153534(\256rst)X
399163695(byte)X
399173871(after)X
399181456 5616(the)N
399191586(end)X
399201735(of)X
399211830(a)X
399221891(sequence)X
399232235(of)X
399242330(target)X
399252553(machine)X
399262874(instructions.)X
3992710 s
39928576 5951(Revision:)N
39929902(2.0.0)X
399302176(Page)X
399312352(51)X
399323599(July)X
399333752(27,)X
399343872(1993)X
399351943 6055(Industry)N
399362230(Review)X
399372495(Draft)X
39938
3993952 p
39940%%Page: 52 54
399410(Courier)xf 0 f
3994210 s 0 xH 0 xS 0 f
3994311 s
399441 f
3994510 s
39946576 520(DWARF)N
39947885(Debugging)X
399481261(Information)X
399491664(Format)X
3995011 s
39951576 832(At)N
39952686(the)X
39953816(beginning)X
399541191(of)X
399551286(each)X
399561469(sequence)X
399571813(within)X
399582061(a)X
399592122(statement)X
399602483(program,)X
399612825(the)X
399622955(state)X
399633139(of)X
399643234(the)X
399653364(registers)X
399663684(is:)X
399670 f
39968576 988(address)N
399691 f
399701344(0)X
399710 f
39972576 1092(file)N
399731 f
399741344(1)X
399750 f
39976576 1196(line)N
399771 f
399781344(1)X
399790 f
39980576 1300(column)N
399811 f
399821344(0)X
399830 f
39984576 1404(is_stmt)N
399851 f
399861344(determined)X
399871763(by)X
399880 f
399891873(default_is_stmt)X
399901 f
399912690(in)X
399922781(the)X
399932911(statement)X
399943272(program)X
399953592(prologue)X
399960 f
39997576 1508(basic_block)N
399981 f
399991344(``false'')X
400000 f
40001576 1612(end_sequence)N
400021 f
400031344(``false'')X
400043 f
40005576 1768(6.2.3)N
40006796(Statement)X
400071198(Program)X
400081557(Instructions)X
400091 f
40010576 1924(The)N
40011735(state)X
40012919(machine)X
400131240(instructions)X
400141674(in)X
400151765(a)X
400161826(statement)X
400172187(program)X
400182507(belong)X
400192769(to)X
400202860(one)X
400213009(of)X
400223104(three)X
400233302(categories:)X
40024576 2080(special)N
40025871(opcodes)X
400261484(These)X
400271744(have)X
400281961(a)X
400292051(ubyte)X
400302298(opcode)X
400312603(\256eld)X
400322811(and)X
400332989(no)X
400343128(arguments.)X
400353568(Most)X
400363800(of)X
400373924(the)X
400381456 2184(instructions)N
400391890(in)X
400401981(a)X
400412042(statement)X
400422403(program)X
400432723(are)X
400442852(special)X
400453119(opcodes.)X
40046576 2340(standard)N
40047896(opcodes)X
400481456(These)X
400491688(have)X
400501877(a)X
400511939(ubyte)X
400522158(opcode)X
400532435(\256eld)X
400542615(which)X
400552853(may)X
400563028(be)X
400573134(followed)X
400583470(by)X
400593581(zero)X
400603755(or)X
400613851(more)X
400621456 2444(LEB128)N
400631795(arguments)X
400642201(\(except)X
400652499(for)X
400660 f
400672640 0.1960(DW_LNS_fixed_advance_pc)AX
400681 f
400693859(,)X
400703920(see)X
400711456 2548(below\).)N
400721802(The)X
400731998(opcode)X
400742311(implies)X
400752631(the)X
400762798(number)X
400773126(of)X
400783258(arguments)X
400793684(and)X
400803870(their)X
400811456 2652(meanings,)N
400821841(but)X
400831979(the)X
400842112(statement)X
400852476(program)X
400862799(prologue)X
400873137(also)X
400883304(speci\256es)X
400893631(the)X
400903763(number)X
400911456 2756(of)N
400921551(arguments)X
400931940(for)X
400942064(each)X
400952247(standard)X
400962567(opcode.)X
40097576 2912(extended)N
40098918(opcodes)X
400991458(These)X
401001693(have)X
401011884(a)X
401021948(multiple)X
401032269(byte)X
401042446(format.)X
401052750(The)X
401062912(\256rst)X
401073074(byte)X
401083251(is)X
401093335(zero;)X
401103536(the)X
401113669(next)X
401123846(bytes)X
401131456 3016(are)N
401141608(an)X
401151735(unsigned)X
401162097(LEB128)X
401172440(integer)X
401182729(giving)X
401192999(the)X
401203151(number)X
401213464(of)X
401223581(bytes)X
401233811(in)X
401243924(the)X
401251456 3120(instruction)N
401261865(itself)X
401272073(\(does)X
401282295(not)X
401292440(include)X
401302732(the)X
401312872(\256rst)X
401323041(zero)X
401333224(byte)X
401343408(or)X
401353513(the)X
401363653(size\).)X
401373895(The)X
401381456 3224(remaining)N
401391836(bytes)X
401402044(are)X
401412173(the)X
401422303(instruction)X
401432703(itself.)X
401443 f
40145576 3380(6.2.4)N
40146796(The)X
40147965(Statement)X
401481367(Program)X
401491726(Prologue)X
401501 f
40151576 3536(The)N
40152765(optimal)X
401531088(encoding)X
401541463(of)X
401551588(line)X
401561773(number)X
401572094(information)X
401582563(depends)X
401592903(to)X
401603024(a)X
401613115(certain)X
401623408(degree)X
401633695(upon)X
401643924(the)X
40165576 3640(architecture)N
401661024(of)X
401671129(the)X
401681269(target)X
401691502(machine.)X
401701877(The)X
401712046(statement)X
401722416(program)X
401732745(prologue)X
401743089(provides)X
401753423(information)X
401763871(used)X
40177576 3744(by)N
40178697(consumers)X
401791106(in)X
401801208(decoding)X
401811564(the)X
401821705(statement)X
401832078(program)X
401842410(instructions)X
401852856(for)X
401862992(a)X
401873065(particular)X
401883437(compilation)X
401893894(unit)X
40190576 3848(and)N
40191730(also)X
40192899(provides)X
401931229(information)X
401941673(used)X
401951861(throughout)X
401962275(the)X
401972410(rest)X
401982564(of)X
401992663(the)X
402002797(statement)X
402013162(program.)X
402023530(The)X
402033693(statement)X
40204576 3952(program)N
40205913(for)X
402061054(each)X
402071254(compilation)X
402081716(unit)X
402091893(begins)X
402102162(with)X
402112358(a)X
402122436(prologue)X
402132788(containing)X
402143201(the)X
402153349(following)X
402163732(\256elds)X
402173963(in)X
40218576 4056(order:)N
40219642 4212(1.)N
402200 f
40221796(total_length)X
402221 f
402231454(\(uword\))X
40224796 4316(The)N
40225961(size)X
402261126(in)X
402271223(bytes)X
402281437(of)X
402291538(the)X
402301674(statement)X
402312041(information)X
402322486(for)X
402332616(this)X
402342772(compilation)X
402353223(unit)X
402363390(\(not)X
402373561(including)X
402383924(the)X
402390 f
40240796 4420(total_length)N
402411 f
402421454(\256eld)X
402431633(itself\).)X
40244642 4576(2.)N
402450 f
40246796(version)X
402471 f
402481189(\(uhalf\))X
40249796 4680(Version)N
402501096(identi\256er)X
402511437(for)X
402521561(the)X
402531691(statement)X
402542052(information)X
402552491(format.)X
40256642 4836(3.)N
402570 f
40258796(prologue_length)X
402591 f
402601613(\(uword\))X
40261796 4940(The)N
40262957(number)X
402631250(of)X
402641347(bytes)X
402651557(following)X
402661924(the)X
402670 f
402682057(prologue_length)X
402691 f
402702877(\256eld)X
402713059(to)X
402723153(the)X
402733286(beginning)X
402743664(of)X
402753762(the)X
402763895(\256rst)X
40277796 5044(byte)N
40278970(of)X
402791065(the)X
402801195(statement)X
402811556(program)X
402821876(itself.)X
40283642 5200(4.)N
402840 f
40285796 0.1950(minimum_instruction_length)AX
402861 f
402872196(\(ubyte\))X
40288796 5304(The)N
40289964(size)X
402901132(in)X
402911232(bytes)X
402921449(of)X
402931553(the)X
402941692(smallest)X
402952013(target)X
402962245(machine)X
402972575(instruction.)X
402983028(Statement)X
402993414(program)X
403003744(opcodes)X
40301796 5408(that)N
40302951(alter)X
403031130(the)X
403040 f
403051260(address)X
403061 f
403071653(register)X
403081939(\256rst)X
403092098(multiply)X
403102421(their)X
403112605(operands)X
403122944(by)X
403133054(this)X
403143204(value.)X
40315642 5564(5.)N
403160 f
40317796(default_is_stmt)X
403181 f
403191613(\(ubyte\))X
40320796 5668(The)N
40321955(initial)X
403221185(value)X
403231398(of)X
403241493(the)X
403250 f
403261623(is_stmt)X
403271 f
403282016(register.)X
4032910 s
40330576 5951(Revision:)N
40331902(2.0.0)X
403322176(Page)X
403332352(52)X
403343599(July)X
403353752(27,)X
403363872(1993)X
403371943 6055(Industry)N
403382230(Review)X
403392495(Draft)X
40340
4034153 p
40342%%Page: 53 55
403430(Courier)xf 0 f
4034410 s 0 xH 0 xS 0 f
4034511 s
403461 f
4034710 s
403483075 520(Programming)N
403493535(Languages)X
403503903(SIG)X
403512 f
4035211 s
40353796 832(A)N
40354874(simple)X
403551128(code)X
403561318(generator)X
403571689(that)X
403581851(emits)X
403592061(machine)X
403602383(instructions)X
403612824(in)X
403622917(the)X
403633049(order)X
403643268(implied)X
403653557(by)X
403663665(the)X
403673798(source)X
40368796 936(program)N
403691149(would)X
403701411(set)X
403711555(this)X
403721729(to)X
403731844(``true,'')X
403742170(and)X
403752347(every)X
403762582(entry)X
403772808(in)X
403782922(the)X
403793075(matrix)X
403803350(would)X
403813611(represent)X
403823988(a)X
40383796 1040(statement)N
403841163(boundary.)X
403851573(A)X
403861656(pipeline)X
403871971(scheduling)X
403882383(code)X
403892579(generator)X
403902956(would)X
403913202(set)X
403923330(this)X
403933488(to)X
403943587(``false'')X
403953900(and)X
40396796 1144(emit)N
40397973(a)X
403981042(speci\256c)X
403991330(statement)X
404001692(program)X
404012023(opcode)X
404022301(for)X
404032428(each)X
404042618(instruction)X
404053025(that)X
404063187(represented)X
404073626(a)X
404083694(statement)X
40409796 1248(boundary.)N
404101 f
40411642 1404(6.)N
404120 f
40413796(line_base)X
404141 f
404151295(\(sbyte\))X
40416796 1508(This)N
40417975(parameter)X
404181349(affects)X
404191605(the)X
404201735(meaning)X
404212061(of)X
404222156(the)X
404232286(special)X
404242553(opcodes.)X
404252907(See)X
404263056(below.)X
40427642 1664(7.)N
404280 f
40429796(line_range)X
404301 f
404311348(\(ubyte\))X
40432796 1768(This)N
40433975(parameter)X
404341349(affects)X
404351605(the)X
404361735(meaning)X
404372061(of)X
404382156(the)X
404392286(special)X
404402553(opcodes.)X
404412907(See)X
404423056(below.)X
40443642 1924(8.)N
404440 f
40445796(opcode_base)X
404461 f
404471401(\(ubyte\))X
40448796 2028(The)N
40449955(number)X
404501246(assigned)X
404511571(to)X
404521662(the)X
404531792(\256rst)X
404541951(special)X
404552218(opcode.)X
40456642 2184(9.)N
404570 f
40458796 0.1960(standard_opcode_lengths)AX
404591 f
404602037(\(array)X
404612268(of)X
404622363(ubyte\))X
40463796 2288(This)N
40464975(array)X
404651177(speci\256es)X
404661502(the)X
404671633(number)X
404681925(of)X
404692021(LEB128)X
404702343(operands)X
404712683(for)X
404722808(each)X
404732992(of)X
404743088(the)X
404753219(standard)X
404763540(opcodes.)X
404773895(The)X
40478796 2392(\256rst)N
40479960(element)X
404801267(of)X
404811367(the)X
404821502(array)X
404831709(corresponds)X
404842160(to)X
404852256(the)X
404862391(opcode)X
404872672(whose)X
404882922(value)X
404893139(is)X
404903224(1,)X
404913316(and)X
404923469(the)X
404933603(last)X
404943752(element)X
40495796 2496(corresponds)N
404961278(to)X
404971405(the)X
404981572(opcode)X
404991885(whose)X
405002168(value)X
405012418(is)X
405020 f
405032536(opcode_base)X
405043209(-)X
405053352(1)X
405061 f
405073405(.)X
405083508(By)X
405093670(increasing)X
405100 f
40511796 2600(opcode_base)N
405121 f
405131379(,)X
405141433(and)X
405151592(adding)X
405161864(elements)X
405172210(to)X
405182311(this)X
405192471(array,)X
405202705(new)X
405212883(standard)X
405223213(opcodes)X
405233533(can)X
405243686(be)X
405253800(added,)X
40526796 2704(while)N
405271024(allowing)X
405281365(consumers)X
405291773(who)X
405301956(do)X
405312076(not)X
405322221(know)X
405332448(about)X
405342676(these)X
405352889(new)X
405363067(opcodes)X
405373387(to)X
405383488(be)X
405393603(able)X
405403783(to)X
405413885(skip)X
40542796 2808(them.)N
40543598 2964(10.)N
405440 f
40545796 0.1979(include_directories)AX
405461 f
405471825(\(sequence)X
405482198(of)X
405492293(path)X
405502467(names\))X
40551796 3068(The)N
40552958(sequence)X
405531305(contains)X
405541624(an)X
405551732(entry)X
405561938(for)X
405572065(each)X
405582251(path)X
405592428(that)X
405602586(was)X
405612747(searched)X
405623079(for)X
405633206(included)X
405643535(source)X
405653790(\256les)X
405663963(in)X
40567796 3172(this)N
40568956(compilation.)X
405691455(\(The)X
405701653(paths)X
405711871(include)X
405722163(those)X
405732381(directories)X
405742785(speci\256ed)X
405753129(explicitly)X
405763495(by)X
405773614(the)X
405783753(user)X
405793930(for)X
40580796 3276(the)N
40581936(compiler)X
405821282(to)X
405831383(search)X
405841639(and)X
405851798(those)X
405862016(the)X
405872157(compiler)X
405882504(searches)X
405892834(without)X
405903137(explicit)X
405913436(direction\).)X
405923856(Each)X
40593796 3380(path)N
40594999(entry)X
405951231(is)X
405961341(either)X
405971593(a)X
405981683(full)X
405991857(path)X
406002060(name)X
406012302(or)X
406022426(is)X
406032536(relative)X
406042852(to)X
406052972(the)X
406063131(current)X
406073431(directory)X
406083800(of)X
406093924(the)X
40610796 3484(compilation.)N
406111296(The)X
406121466(current)X
406131748(directory)X
406142099(of)X
406152205(the)X
406162346(compilation)X
406172802(is)X
406182894(understood)X
406193318(to)X
406203421(be)X
406213538(the)X
406223680(\256rst)X
406233851(entry)X
40624796 3588(and)N
40625957(is)X
406261050(not)X
406271197(explicitly)X
406281566(represented.)X
406292027(Each)X
406302237(entry)X
406312452(is)X
406322545(a)X
406332618(null-terminated)X
406343197(string)X
406353431(containing)X
406363837(a)X
406373909(full)X
40638796 3692(path)N
40639970(name.)X
406401227(The)X
406411386(last)X
406421531(entry)X
406431734(is)X
406441815(followed)X
406452150(by)X
406462260(a)X
406472321(single)X
406482554(null)X
406492714(byte.)X
40650598 3848(11.)N
406510 f
40652796(file_names)X
406531 f
406541348(\(sequence)X
406551721(of)X
406561816(\256le)X
406571951(entries\))X
40658796 3952(The)N
40659976(sequence)X
406601341(contains)X
406611678(an)X
406621804(entry)X
406632028(for)X
406642173(each)X
406652377(source)X
406662649(\256le)X
406672805(that)X
406682982(contributed)X
406693428(to)X
406703541(the)X
406713693(statement)X
40672796 4056(information)N
406731242(for)X
406741373(this)X
406751530(compilation)X
406761982(unit)X
406772149(or)X
406782251(is)X
406792339(used)X
406802529(in)X
406812627(other)X
406822837(contexts,)X
406833182(such)X
406843372(as)X
406853474(in)X
406863572(a)X
406873640(declaration)X
40688796 4160(coordinate)N
406891191(or)X
406901288(a)X
406911351(macro)X
406921595(\256le)X
406931732(inclusion.)X
406942124(Each)X
406952324(entry)X
406962529(has)X
406972670(a)X
406982733(null-terminated)X
406993302(string)X
407003527(containing)X
407013924(the)X
40702796 4264(\256le)N
40703934(name,)X
407041172(an)X
407051280(unsigned)X
407061623(LEB128)X
407071946(number)X
407082239(representing)X
407092698(the)X
407102830(directory)X
407113172(index)X
407123392(of)X
407133489(the)X
407143621(directory)X
407153963(in)X
40716796 4368(which)N
407171054(the)X
407181206(\256le)X
407191363(was)X
407201543(found,)X
407211814(an)X
407221941(unsigned)X
407232303(LEB128)X
407242646(number)X
407252959(representing)X
407263438(the)X
407273590(time)X
407283792(of)X
407293909(last)X
40730796 4472(modi\256cation)N
407311270(for)X
407321399(the)X
407331534(\256le)X
407341674(and)X
407351828(an)X
407361938(unsigned)X
407372283(LEB128)X
407382609(number)X
407392905(representing)X
407403367(the)X
407413502(length)X
407423750(in)X
407433846(bytes)X
40744796 4576(of)N
40745901(the)X
407461041(\256le.)X
407471230(A)X
407481325(compiler)X
407491671(may)X
407501855(choose)X
407512131(to)X
407522233(emit)X
407532424(LEB128\(0\))X
407542858(for)X
407552993(the)X
407563134(time)X
407573325(and)X
407583485(length)X
407593739(\256elds)X
407603963(to)X
40761796 4680(indicate)N
407621107(that)X
407631271(this)X
407641430(information)X
407651878(is)X
407661967(not)X
407672110(available.)X
407682503(The)X
407692670(last)X
407702823(entry)X
407713034(is)X
407723123(followed)X
407733466(by)X
407743584(a)X
407753653(single)X
407763894(null)X
40777796 4784(byte.)N
40778796 4940(The)N
40779968(directory)X
407801321(index)X
407811552(represents)X
407821943(an)X
407832061(entry)X
407842277(in)X
407852381(the)X
407860 f
407872524 0.1979(include_directories)AX
407881 f
407893566(section.)X
407903895(The)X
40791796 5044(index)N
407921035(is)X
407931137(LEB128\(0\))X
407941581(if)X
407951678(the)X
407961829(\256le)X
407971985(was)X
407982163(found)X
407992410(in)X
408002521(the)X
408012671(current)X
408022962(directory)X
408033322(of)X
408043437(the)X
408053587(compilation,)X
40806796 5148(LEB128\(1\))N
408071222(if)X
408081301(it)X
408091376(was)X
408101537(found)X
408111767(in)X
408121861(the)X
408131994(\256rst)X
408142156(directory)X
408152499(in)X
408162593(the)X
408170 f
408182727 0.1979(include_directories)AX
408191 f
408203760(section,)X
40821796 5252(and)N
40822945(so)X
408231045(on.)X
408241199(The)X
408251358(directory)X
408261698(index)X
408271916(is)X
408281997(ignored)X
408292288(for)X
408302412(\256le)X
408312547(names)X
408322794(that)X
408332949(represent)X
408343293(full)X
408353438(path)X
408363612(names.)X
40837796 5408(The)N
40838958(statement)X
408391322(program)X
408401645(assigns)X
408411924(numbers)X
408422253(to)X
408432348(each)X
408442535(of)X
408452634(the)X
408462768(\256le)X
408472907(entries)X
408483168(in)X
408493263(order,)X
408503496(beginning)X
408513875(with)X
40852796 5512(1,)N
40853884(and)X
408541033(uses)X
408551206(those)X
408561414(numbers)X
408571739(instead)X
408582011(of)X
408592106(\256le)X
408602241(names)X
408612488(in)X
408622579(the)X
408630 f
408642709(file)X
408651 f
408662943(register.)X
40867796 5668(A)N
40868889(compiler)X
408691233(may)X
408701415(generate)X
408711743(a)X
408721812(single)X
408732053(null)X
408742221(byte)X
408752403(for)X
408762535(the)X
408772673(\256le)X
408782816(names)X
408793071(\256eld)X
408803259(and)X
408813417(de\256ne)X
408823663(\256le)X
408833807(names)X
40884796 5772(using)N
408851009(the)X
408861139(extended)X
408871479(opcode)X
408880 f
408891755(DEFINE_FILE)X
408901 f
408912338(.)X
4089210 s
40893576 5951(Revision:)N
40894902(2.0.0)X
408952176(Page)X
408962352(53)X
408973599(July)X
408983752(27,)X
408993872(1993)X
409001943 6055(Industry)N
409012230(Review)X
409022495(Draft)X
40903
4090454 p
40905%%Page: 54 56
409060(Courier)xf 0 f
4090710 s 0 xH 0 xS 0 f
4090811 s
409091 f
4091010 s
40911576 520(DWARF)N
40912885(Debugging)X
409131261(Information)X
409141664(Format)X
409153 f
4091611 s
40917576 832(6.2.5)N
40918796(The)X
40919965(Statement)X
409201367(Program)X
409211 f
40922576 988(As)N
40923723(stated)X
40924979(before,)X
409251275(the)X
409261433(goal)X
409271635(of)X
409281758(a)X
409291847(statement)X
409302236(program)X
409312584(is)X
409322694(to)X
409332814(build)X
409343047(a)X
409353137(matrix)X
409363419(representing)X
409373905(one)X
40938576 1092(compilation)N
409391032(unit,)X
409401225(which)X
409411473(may)X
409421658(have)X
409431857(produced)X
409442216(multiple)X
409452544(sequences)X
409462932(of)X
409473037(target-machine)X
409483598(instructions.)X
40949576 1196(Within)N
40950866(a)X
40951949(sequence,)X
409521337(addresses)X
409531717(may)X
409541913(only)X
409552114(increase.)X
409562490(\(Line)X
409572725(numbers)X
409583072(may)X
409593268(decrease)X
409603615(in)X
409613729(cases)X
409623959(of)X
40963576 1300(pipeline)N
40964883(scheduling.\))X
409653 f
4096610 s
40967576 1456(6.2.5.1)N
40968836(Special)X
409691100(Opcodes)X
409701 f
4097111 s
40972576 1612(Each)N
40973774(1-byte)X
409741021(special)X
409751288(opcode)X
409761564(has)X
409771703(the)X
409781833(following)X
409792198(effect)X
409802420(on)X
409812530(the)X
409822660(state)X
409832844(machine:)X
40984642 1768(1.)N
40985796(Add)X
40986969(a)X
409871030(signed)X
409881282(integer)X
409891549(to)X
409901640(the)X
409910 f
409921770(line)X
409931 f
409942004(register.)X
40995642 1924(2.)N
40996796(Multiply)X
409971146(an)X
409981270(unsigned)X
409991629(integer)X
410001915(by)X
410012044(the)X
410020 f
410032193 0.1950(minimum_instruction_length)AX
410041 f
410053612(\256eld)X
410063810(of)X
410073924(the)X
41008796 2028(statement)N
410091157(program)X
410101477(prologue)X
410111812(and)X
410121961(add)X
410132110(the)X
410142240(result)X
410152458(to)X
410162549(the)X
410170 f
410182679(address)X
410191 f
410203072(register.)X
41021642 2184(3.)N
41022796(Append)X
410231096(a)X
410241157(row)X
410251315(to)X
410261406(the)X
410271536(matrix)X
410281789(using)X
410292002(the)X
410302132(current)X
410312403(values)X
410322650(of)X
410332745(the)X
410342875(state)X
410353059(machine)X
410363380(registers.)X
41037642 2340(4.)N
41038796(Set)X
41039931(the)X
410400 f
410411061(basic_block)X
410421 f
410431666(register)X
410441952(to)X
410452043(``false.'')X
41046576 2496(All)N
41047717(of)X
41048818(the)X
41049954(special)X
410501227(opcodes)X
410511543(do)X
410521659(those)X
410531873(same)X
410542082(four)X
410552256(things;)X
410562525(they)X
410572705(differ)X
410582928(from)X
410593128(one)X
410603284(another)X
410613577(only)X
410623763(in)X
410633861(what)X
41064576 2600(values)N
41065823(they)X
41066997(add)X
410671146(to)X
410681237(the)X
410690 f
410701367(line)X
410711 f
410721601(and)X
410730 f
410741750(address)X
410751 f
410762143(registers.)X
410772 f
41078576 2756(Instead)N
41079860(of)X
41080954(assigning)X
410811317(a)X
410821386(\256xed)X
410831577(meaning)X
410841905(to)X
410852000(each)X
410862192(special)X
410872468(opcode,)X
410882770(the)X
410892904(statement)X
410903268(program)X
410913601(uses)X
410923778(several)X
41093576 2860(parameters)N
410941000(in)X
410951093(the)X
410961225(prologue)X
410971567(to)X
410981660(con\256gure)X
410992016(the)X
411002148(instruction)X
411012555(set.)X
411022699(There)X
411032928(are)X
411043069(two)X
411053221(reasons)X
411063517(for)X
411073643(this.)X
411083838(First,)X
41109576 2964(although)N
41110920(the)X
411111058(opcode)X
411121342(space)X
411131572(available)X
411141931(for)X
411152065(special)X
411162346(opcodes)X
411172665(now)X
411182843(ranges)X
411193113(from)X
411203310(10)X
411213429(through)X
411223739(255,)X
411233924(the)X
41124576 3068(lower)N
41125804(bound)X
411261051(may)X
411271224(increase)X
411281549(if)X
411291626(one)X
411301780(adds)X
411311973(new)X
411322142(standard)X
411332482(opcodes.)X
411342819(Thus,)X
411353039(the)X
411360 f
411373174(opcode_base)X
411382 f
411393784(\256eld)X
411403963(of)X
41141576 3172(the)N
41142720(statement)X
411431095(program)X
411441439(prologue)X
411451794(gives)X
411462012(the)X
411472157(value)X
411482385(of)X
411492491(the)X
411502636(\256rst)X
411512810(special)X
411523097(opcode.)X
411533432(Second,)X
411543745(the)X
411553890(best)X
41156576 3276(choice)N
41157832(of)X
41158927(special-opcode)X
411591486(meanings)X
411601849(depends)X
411612163(on)X
411622277(the)X
411632411(target)X
411642648(architecture.)X
411653149(For)X
411663307(example,)X
411673648(for)X
411683777(a)X
411693846(RISC)X
41170576 3380(machine)N
41171920(where)X
411721182(the)X
411731337(compiler-generated)X
411742078(code)X
411752291(interleaves)X
411762725(instructions)X
411773189(from)X
411783402(different)X
411793749(lines)X
411803963(to)X
41181576 3484(schedule)N
41182913(the)X
411831049(pipeline,)X
411841384(it)X
411851462(is)X
411861549(important)X
411871925(to)X
411882022(be)X
411892133(able)X
411902313(to)X
411912410(add)X
411922570(a)X
411932642(negative)X
411942969(value)X
411953188(to)X
411963285(the)X
411970 f
411983421(line)X
411992 f
412003661(register)X
412013963(to)X
41202576 3588(express)N
41203866(the)X
412041001(fact)X
412051161(that)X
412061326(a)X
412071397(later)X
412081591(instruction)X
412092001(may)X
412102174(have)X
412112367(been)X
412122560(emitted)X
412132847(for)X
412142977(an)X
412153093(earlier)X
412163361(source)X
412173623(line.)X
412183828(For)X
412193988(a)X
41220576 3692(machine)N
41221902(where)X
412221145(pipeline)X
412231458(scheduling)X
412241868(never)X
412252090(occurs,)X
412262373(it)X
412272450(is)X
412282536(advantageous)X
412293052(to)X
412303148(trade)X
412313361(away)X
412323574(the)X
412333709(ability)X
412343963(to)X
41235576 3796(decrease)N
41236919(the)X
412370 f
412381058(line)X
412392 f
412401301(register)X
412411606(\(a)X
412421710(standard)X
412432054(opcode)X
412442339(provides)X
412452673(an)X
412462792(alternate)X
412473142(way)X
412483315(to)X
412493415(decrease)X
412503759(the)X
412513899(line)X
41252576 3900(number\))N
41253910(in)X
412541016(return)X
412551273(for)X
412561413(the)X
412571558(ability)X
412581822(to)X
412591928(add)X
412602097(larger)X
412612354(positive)X
412622666(values)X
412632928(to)X
412643034(the)X
412650 f
412663178(address)X
412672 f
412683585(register.)X
412693939(To)X
41270576 4004(permit)N
41271828(this)X
41272978(variety)X
412731245(of)X
412741336(strategies,)X
412751723(the)X
412761853(statement)X
412772214(program)X
412782544(prologue)X
412792885(de\256nes)X
412803152(a)X
412810 f
412823219(line_base)X
412832 f
412843719(\256eld)X
412853894(that)X
41286576 4108(speci\256es)N
41287919(the)X
412881072(minimum)X
412891444(value)X
412901680(which)X
412911936(a)X
412922025(special)X
412932320(opcode)X
412942619(can)X
412952791(add)X
412962968(to)X
412973082(the)X
412980 f
412993235(line)X
413002 f
413013492(register)X
413023811(and)X
413033988(a)X
413040 f
41305576 4212(line_range)N
413062 f
413071128(\256eld)X
413081302(that)X
413091462(de\256nes)X
413101728(the)X
413111858(range)X
413122085(of)X
413132176(values)X
413142423(it)X
413152495(can)X
413162644(add)X
413172798(to)X
413182889(the)X
413190 f
413203019(line)X
413212 f
413223253(register.)X
413231 f
41324576 4368(A)N
41325668(special)X
41326942(opcode)X
413271225(value)X
413281445(is)X
413291533(chosen)X
413301806(based)X
413312035(on)X
413322152(the)X
413332289(amount)X
413342583(that)X
413352745(needs)X
413362974(to)X
413373073(be)X
413383186(added)X
413393426(to)X
413403525(the)X
413410 f
413423663(line)X
413431 f
413443905(and)X
413450 f
41346576 4472(address)N
413471 f
41348989(registers.)X
413491373(The)X
413501552(maximum)X
413511953(line)X
413522128(increment)X
413532523(for)X
413542667(a)X
413552748(special)X
413563034(opcode)X
413573329(is)X
413583429(the)X
413593578(value)X
413603810(of)X
413613924(the)X
413620 f
41363576 4576(line_base)N
413641 f
413651086(\256eld)X
413661276(in)X
413671378(the)X
413681520(prologue,)X
413691889(plus)X
413702070(the)X
413712212(value)X
413722437(of)X
413732544(the)X
413740 f
413752686(line_range)X
413761 f
413773250(\256eld,)X
413783463(minus)X
413793713(1)X
413803791(\()X
413810 f
413823820(line)X
41383576 4680(base)N
41384846(+)X
41385957(line)X
413861227(range)X
413871549(-)X
413881659(1)X
413891 f
413901712(\).)X
413911811(If)X
413921895(the)X
413932029(desired)X
413942309(line)X
413952468(increment)X
413962847(is)X
413972932(greater)X
413983202(than)X
413993380(the)X
414003514(maximum)X
414013899(line)X
41402576 4784(increment,)N
41403977(a)X
414041042(standard)X
414051366(opcode)X
414061646(must)X
414071844(be)X
414081953(used)X
414092140(instead)X
414102416(of)X
414112515(a)X
414122580(special)X
414132851(opcode.)X
414143175(The)X
414153338(``address)X
414163686(advance'')X
41417576 4888(is)N
41418800(calculated)X
414191323(by)X
414201576(dividing)X
414212036(the)X
414222309(desired)X
414232728(address)X
414243155(increment)X
414253672(by)X
414263924(the)X
414270 f
41428576 4992 0.1950(minimum_instruction_length)AN
414291 f
414302002(\256eld)X
414312207(from)X
414322426(the)X
414332583(prologue.)X
414342989(The)X
414353175(special)X
414363469(opcode)X
414373772(is)X
414383880(then)X
41439576 5096(calculated)N
41440956(using)X
414411169(the)X
414421299(following)X
414431664(formula:)X
414440 f
414451000 5200(opcode)N
414461371(=)X
414471477(\(desired)X
414481954(line)X
414492219(increment)X
414502749(-)X
414512855(line_base\))X
414523438(+)X
414531424 5304(\(line_range)N
414542060(*)X
414552166(address)X
414562590(advance\))X
414573067(+)X
414583173(opcode_base)X
414591 f
41460576 5408(If)N
41461656(the)X
41462786(resulting)X
414631117(opcode)X
414641393(is)X
414651474(greater)X
414661740(than)X
414671914(255,)X
414682090(a)X
414692151(standard)X
414702471(opcode)X
414712747(must)X
414722941(be)X
414733046(used)X
414743229(instead.)X
41475576 5564(To)N
41476699(decode)X
41477973(a)X
414781037(special)X
414791307(opcode,)X
414801608(subtract)X
414811912(the)X
414820 f
414832045(opcode_base)X
414841 f
414852653(from)X
414862849(the)X
414872982(opcode)X
414883262(itself.)X
414893509(The)X
414903672(amount)X
414913963(to)X
41492576 5668(increment)N
41493969(the)X
414940 f
414951117(address)X
414961 f
414971528(register)X
414981832(is)X
414991931(the)X
415002078(adjusted)X
415012411(opcode)X
415022704(divided)X
415033008(by)X
415043135(the)X
415050 f
415063282(line_range)X
415071 f
415083812(.)X
415093895(The)X
41510576 5772(amount)N
41511865(to)X
41512958(increment)X
415131335(the)X
415140 f
415151467(line)X
415161 f
415171703(register)X
415181991(is)X
415192074(the)X
415200 f
415212206(line_base)X
415221 f
415232707(plus)X
415242878(the)X
415253010(result)X
415263230(of)X
415273327(the)X
415283459(adjusted)X
415293778(opcode)X
4153010 s
41531576 5951(Revision:)N
41532902(2.0.0)X
415332176(Page)X
415342352(54)X
415353599(July)X
415363752(27,)X
415373872(1993)X
415381943 6055(Industry)N
415392230(Review)X
415402495(Draft)X
41541
4154255 p
41543%%Page: 55 57
415440(Courier)xf 0 f
4154510 s 0 xH 0 xS 0 f
4154611 s
415471 f
4154810 s
415493075 520(Programming)N
415503535(Languages)X
415513903(SIG)X
4155211 s
41553576 832(modulo)N
41554868(the)X
415550 f
41556998(line_range)X
415571 f
415581528(.)X
415591594(That)X
415601778(is,)X
415610 f
41562864 936(line)N
415631129(increment)X
415641659(=)X
415651765(line_base)X
415662295(+)X
415672401(\(adjusted)X
415682931(opcode)X
415693302(%)X
415703408(line_range\))X
415712 f
41572576 1092(As)N
41573689(an)X
41574802(example,)X
415751142(suppose)X
415761450(that)X
415771613(the)X
415780 f
415791746(opcode_base)X
415802 f
415812354(is)X
415822438(16,)X
415830 f
415842573(line_base)X
415852 f
415863075(is)X
415873160(-1)X
415883259(and)X
415890 f
415903417(line_range)X
415912 f
415923973(is)X
41593576 1196(4.)N
41594687(This)X
41595862(means)X
415961109(that)X
415971270(we)X
415981391(can)X
415991541(use)X
416001681(a)X
416011748(special)X
416022021(opcode)X
416032298(whenever)X
416042658(two)X
416052809(successive)X
416063198(rows)X
416073392(in)X
416083484(the)X
416093614(matrix)X
416103866(have)X
41611576 1300(source)N
41612838(line)X
41613999(numbers)X
416141329(differing)X
416151662(by)X
416161773(any)X
416171928(value)X
416182147(within)X
416192397(the)X
416202533(range)X
416212766([-1,)X
416222923(2])X
416233029(\(and,)X
416243240(because)X
416253551(of)X
416263649(the)X
416273786(limited)X
41628576 1404(number)N
41629866(of)X
41630957(opcodes)X
416311267(available,)X
416321640(when)X
416331848(the)X
416341978(difference)X
416352353(between)X
416362664(addresses)X
416373032(is)X
416383113(within)X
416393357(the)X
416403487(range)X
416413714([0,)X
416423836(59]\).)X
41643576 1560(The)N
41644730(opcode)X
416451006(mapping)X
416461336(would)X
416471574(be:)X
416481 f
4164910 f
416501457 1628(i)N
416511479(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
416521 f
416531501 1732(Opcode)N
416541906(Line)X
416552090(advance)X
416562510(Address)X
416572819(advance)X
4165810 f
416591457 1748(i)N
416601479(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
416610 f
416621611 1852(16)N
416632089(-1)X
416642808(0)X
416651611 1956(17)N
416662142(0)X
416672808(0)X
416681611 2060(18)N
416692142(1)X
416702808(0)X
416711611 2164(19)N
416722142(2)X
416732808(0)X
416741611 2268(20)N
416752089(-1)X
416762808(1)X
416771611 2372(21)N
416782142(0)X
416792808(1)X
416801611 2476(22)N
416812142(1)X
416822808(1)X
416831611 2580(23)N
416842142(2)X
416852808(1)X
416861558 2684(253)N
416872142(0)X
416882755(59)X
416891558 2788(254)N
416902142(1)X
416912755(59)X
416921558 2892(255)N
416932142(2)X
416942755(59)X
416951 f
4169610 f
416971457 2908(i)N
416981479(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
416991457(c)X
417002860(c)Y
417012772(c)Y
417022684(c)Y
417032596(c)Y
417042508(c)Y
417052420(c)Y
417062332(c)Y
417072244(c)Y
417082156(c)Y
417092068(c)Y
417101980(c)Y
417111892(c)Y
417121804(c)Y
417131716(c)Y
417143151 2908(c)N
417152860(c)Y
417162772(c)Y
417172684(c)Y
417182596(c)Y
417192508(c)Y
417202420(c)Y
417212332(c)Y
417222244(c)Y
417232156(c)Y
417242068(c)Y
417251980(c)Y
417261892(c)Y
417271804(c)Y
417281716(c)Y
417291 f
41730576 3064(There)N
41731806(is)X
41732890(no)X
417331003(requirement)X
417341454(that)X
417351612(the)X
417361745(expression)X
417370 f
417382177(255)X
417392392(-)X
417402501(line_base)X
417413034(+)X
417423143(1)X
417431 f
417443222(be)X
417453331(an)X
417463440(integral)X
417473736(multiple)X
41748576 3168(of)N
417490 f
41750671(line_range)X
417511 f
417521201(.)X
417533 f
4175410 s
41755576 3324(6.2.5.2)N
41756836(Standard)X
417571175(Opcodes)X
417581 f
4175911 s
41760576 3480(There)N
41761816(are)X
41762958(currently)X
417631311(9)X
417641390(standard)X
417651723(ubyte)X
417661954(opcodes.)X
417672321(In)X
417682429(the)X
417692572(future)X
417702817(additional)X
417713206(ubyte)X
417723437(opcodes)X
417733761(may)X
417743949(be)X
41775576 3584(de\256ned)N
41776861(by)X
41777975(setting)X
417781237(the)X
417790 f
417801371(opcode_base)X
417811 f
417821980(\256eld)X
417832162(in)X
417842256(the)X
417852389(statement)X
417862753(program)X
417873076(prologue)X
417883414(to)X
417893508(a)X
417903572(value)X
417913788(greater)X
41792576 3688(than)N
41793750(10.)X
41794642 3844(1.)N
417950 f
41796796(DW_LNS_copy)X
417971 f
41798796 3948(Takes)N
417991040(no)X
418001162(arguments.)X
418011607(Append)X
418021919(a)X
418031993(row)X
418042164(to)X
418052268(the)X
418062411(matrix)X
418072677(using)X
418082903(the)X
418093046(current)X
418103330(values)X
418113590(of)X
418123698(the)X
418133841(state-)X
41814796 4052(machine)N
418151117(registers.)X
418161481(Then)X
418171684(set)X
418181804(the)X
418190 f
418201934(basic_block)X
418211 f
418222539(register)X
418232825(to)X
418242916(``false.'')X
41825642 4208(2.)N
418260 f
41827796 0.1992(DW_LNS_advance_pc)AX
418281 f
41829796 4312(Takes)N
418301145(a)X
418311323(single)X
418321673(unsigned)X
418332130(LEB128)X
418342568(operand,)X
418353012 0.3403(multiplies)AX
418363506(it)X
418373696(by)X
418383924(the)X
418390 f
41840796 4416 0.1950(minimum_instruction_length)AN
418411 f
418422216(\256eld)X
418432415(of)X
418442530(the)X
418452680(prologue,)X
418463057(and)X
418473226(adds)X
418483428(the)X
418493577(result)X
418503814(to)X
418513924(the)X
418520 f
41853796 4520(address)N
418541 f
418551189(register)X
418561475(of)X
418571570(the)X
418581700(state)X
418591884(machine.)X
41860642 4676(3.)N
418610 f
41862796 0.1979(DW_LNS_advance_line)AX
418631 f
41864796 4780(Takes)N
418651028(a)X
418661089(single)X
418671322(signed)X
418681574(LEB128)X
418691895(operand)X
418702200(and)X
418712349(adds)X
418722532(that)X
418732687(value)X
418742900(to)X
418752991(the)X
418760 f
418773121(line)X
418781 f
418793356(register)X
418803643(of)X
418813739(the)X
418823870(state)X
41883796 4884(machine.)N
41884642 5040(4.)N
418850 f
41886796(DW_LNS_set_file)X
418871 f
41888796 5144(Takes)N
418891039(a)X
418901111(single)X
418911355(unsigned)X
418921706(LEB128)X
418932038(operand)X
418942354(and)X
418952514(stores)X
418962752(it)X
418972835(in)X
418982937(the)X
418990 f
419003078(file)X
419011 f
419023323(register)X
419033621(of)X
419043728(the)X
419053870(state)X
41906796 5248(machine.)N
41907642 5404(5.)N
419080 f
41909796 0.1992(DW_LNS_set_column)AX
419101 f
41911796 5508(Takes)N
419121032(a)X
419131097(single)X
419141334(unsigned)X
419151678(LEB128)X
419162003(operand)X
419172312(and)X
419182465(stores)X
419192696(it)X
419202772(in)X
419212867(the)X
419220 f
419233001(column)X
419241 f
419253345(register)X
419263635(of)X
419273735(the)X
419283870(state)X
41929796 5612(machine.)N
4193010 s
41931576 5951(Revision:)N
41932902(2.0.0)X
419332176(Page)X
419342352(55)X
419353599(July)X
419363752(27,)X
419373872(1993)X
419381943 6055(Industry)N
419392230(Review)X
419402495(Draft)X
41941
4194256 p
41943%%Page: 56 58
419440(Courier)xf 0 f
4194510 s 0 xH 0 xS 0 f
4194611 s
419471 f
4194810 s
41949576 520(DWARF)N
41950885(Debugging)X
419511261(Information)X
419521664(Format)X
4195311 s
41954642 832(6.)N
419550 f
41956796 0.1985(DW_LNS_negate_stmt)AX
419571 f
41958796 936(Takes)N
419591053(no)X
419601188(arguments.)X
419611646(Set)X
419621806(the)X
419630 f
419641961(is_stmt)X
419651 f
419662379(register)X
419672690(of)X
419682810(the)X
419692965(state)X
419703174(machine)X
419713520(to)X
419723636(the)X
419733791(logical)X
41974796 1040(negation)N
419751122(of)X
419761217(its)X
419771323(current)X
419781594(value.)X
41979642 1196(7.)N
419800 f
41981796 0.1964(DW_LNS_set_basic_block)AX
419821 f
41983796 1300(Takes)N
419841028(no)X
419851138(arguments.)X
419861571(Set)X
419871706(the)X
419880 f
419891836(basic_block)X
419901 f
419912441(register)X
419922727(of)X
419932822(the)X
419942952(state)X
419953136(machine)X
419963457(to)X
419973548(``true.'')X
41998642 1456(8.)N
419990 f
42000796 0.1979(DW_LNS_const_add_pc)AX
420011 f
42002796 1560(Takes)N
420031048(no)X
420041178(arguments.)X
420051631(Add)X
420061824(to)X
420071935(the)X
420080 f
420092085(address)X
420101 f
420112498(register)X
420122804(of)X
420132920(the)X
420143071(state)X
420153276(machine)X
420163618(the)X
420173769(address)X
42018796 1664(increment)N
420191171(value)X
420201384(corresponding)X
420211909(to)X
420222000(special)X
420232267(opcode)X
420242543(255.)X
420252 f
42026796 1820(The)N
42027951(motivation)X
420281353(for)X
420290 f
420301480 0.1979(DW_LNS_const_add_pc)AX
420312 f
420322511(is)X
420332594(this:)X
420342797(when)X
420353007(the)X
420363139(statement)X
420373501(program)X
420383832(needs)X
42039796 1924(to)N
42040906(advance)X
420411240(the)X
420421389(address)X
420431702(by)X
420441825(a)X
420451909(small)X
420462140(amount,)X
420472466(it)X
420482556(can)X
420492723(use)X
420502880(a)X
420512964(single)X
420523215(special)X
420533505(opcode,)X
420543821(which)X
42055796 2028(occupies)N
420561132(a)X
420571204(single)X
420581443(byte.)X
420591662(When)X
420601890(it)X
420611968(needs)X
420622196(to)X
420632293(advance)X
420642614(the)X
420652750(address)X
420663051(by)X
420673162(up)X
420683278(to)X
420693376(twice)X
420703592(the)X
420713729(range)X
420723963(of)X
42073796 2132(the)N
42074949(last)X
420751122(special)X
420761417(opcode,)X
420771738(it)X
420781833(can)X
420792005(use)X
420800 f
420812167 0.1979(DW_LNS_const_add_pc)AX
420822 f
420833218(followed)X
420843567(by)X
420853694(a)X
420863782(special)X
42087796 2236(opcode,)N
420881094(for)X
420891219(a)X
420901285(total)X
420911470(of)X
420921561(two)X
420931711(bytes.)X
420941958(Only)X
420952152(if)X
420962225(it)X
420972298(needs)X
420982521(to)X
420992613(advance)X
421002929(the)X
421013060(address)X
421023356(by)X
421033462(more)X
421043665(than)X
421053845(twice)X
42106796 2340(that)N
42107984(range)X
421081239(will)X
421091423(it)X
421101523(need)X
421111739(to)X
421121858(use)X
421132025(both)X
421140 f
421152232 0.1992(DW_LNS_advance_pc)AX
421162 f
421173183(and)X
421183364(a)X
421193457(special)X
421203756(opcode,)X
42121796 2444(requiring)N
421221151(three)X
421231354(or)X
421241454(more)X
421251656(bytes.)X
421261 f
42127642 2600(9.)N
421280 f
42129796 0.1960(DW_LNS_fixed_advance_pc)AX
421301 f
42131796 2704(Takes)N
421321030(a)X
421331093(single)X
421341328(uhalf)X
421351533(operand.)X
421361884(Add)X
421372059(to)X
421382152(the)X
421390 f
421402284(address)X
421411 f
421422679(register)X
421432967(of)X
421443064(the)X
421453197(state)X
421463384(machine)X
421473708(the)X
421483841(value)X
42149796 2808(of)N
42150896(the)X
421511031(\(unencoded\))X
421521497(operand.)X
421531851(This)X
421542035(is)X
421552121(the)X
421562256(only)X
421572440(extended)X
421582785(opcode)X
421593065(that)X
421603224(takes)X
421613431(an)X
421623540(argument)X
421633899(that)X
42164796 2912(is)N
42165877(not)X
421661012(a)X
421671073(variable)X
421681379(length)X
421691622(number.)X
421702 f
42171796 3068(The)N
42172960(motivation)X
421731370(for)X
421740 f
421751505 0.1960(DW_LNS_fixed_advance_pc)AX
421762 f
421772757(is)X
421782849(this:)X
421793061(existing)X
421803369(assemblers)X
421813792(cannot)X
42182796 3172(emit)N
421830 f
42184988 0.1992(DW_LNS_advance_pc)AX
421852 f
421861929(or)X
421872047(special)X
421882337(opcodes)X
421892665(because)X
421902988(they)X
421913175(cannot)X
421923455(encode)X
421933743(LEB128)X
42194796 3276(numbers)N
421951120(or)X
421961221(judge)X
421971440(when)X
421981649(the)X
421991780(computation)X
422002244(of)X
422012336(a)X
422022403(special)X
422032676(opcode)X
422042953(over\257ows)X
422053313(and)X
422063468(requires)X
422073784(the)X
422083915(use)X
42209796 3380(of)N
422100 f
422111041 0.1992(DW_LNS_advance_pc)AX
422122 f
422131942(.)X
422142162(Such)X
422152509(assemblers,)X
422163096(however,)X
422173613(can)X
422183915(use)X
422190 f
42220796 3484 0.1960(DW_LNS_fixed_advance_pc)AN
422212 f
422222037(instead,)X
422232336(sacri\256cing)X
422242730(compression.)X
422253 f
4222610 s
42227576 3640(6.2.5.3)N
42228836(Extended)X
422291180(Opcodes)X
422301 f
4223111 s
42232576 3796(There)N
42233810(are)X
42234946(three)X
422351151(extended)X
422361498(opcodes)X
422371815(currently)X
422382162(de\256ned.)X
422392494(The)X
422402661(\256rst)X
422412828(byte)X
422423010(following)X
422433383(the)X
422443521(length)X
422453772(\256eld)X
422463959(of)X
42247576 3900(the)N
42248706(encoding)X
422491051(for)X
422501175(each)X
422511358(contains)X
422521674(a)X
422531735(sub-opcode.)X
42254642 4056(1.)N
422550 f
42256796 0.1979(DW_LNE_end_sequence)AX
422571 f
42258796 4160(Set)N
42259936(the)X
422600 f
422611071(end_sequence)X
422621 f
422631735(register)X
422642027(of)X
422652128(the)X
422662264(state)X
422672454(machine)X
422682781(to)X
422692878(``true'')X
422703159(and)X
422713314(append)X
422723596(a)X
422733663(row)X
422743827(to)X
422753924(the)X
42276796 4264(matrix)N
422771058(using)X
422781280(the)X
422791419(current)X
422801699(values)X
422811955(of)X
422822059(the)X
422832198(state-machine)X
422842718(registers.)X
422853090(Then)X
422863301(reset)X
422873497(the)X
422883635(registers)X
422893963(to)X
42290796 4368(the)N
42291926(initial)X
422921156(values)X
422931403(speci\256ed)X
422941738(above.)X
42295796 4524(Every)N
422961076(statement)X
422971485(program)X
422981853(sequence)X
422992246(must)X
423002489(end)X
423012687(with)X
423022915(a)X
423030 f
423043025 0.1979(DW_LNE_end_sequence)AX
423051 f
42306796 4628(instruction)N
423071216(which)X
423081473(creates)X
423091759(a)X
423101840(row)X
423112017(whose)X
423122282(address)X
423132586(is)X
423142686(that)X
423152860(of)X
423162974(the)X
423173123(byte)X
423183316(after)X
423193518(the)X
423203667(last)X
423213831(target)X
42322796 4732(machine)N
423231117(instruction)X
423241517(of)X
423251612(the)X
423261742(sequence.)X
42327642 4888(2.)N
423280 f
42329796 0.1985(DW_LNE_set_address)AX
423301 f
42331796 4992(Takes)N
423321046(a)X
423331125(single)X
423341376(relocatable)X
423351803(address)X
423362106(as)X
423372219(an)X
423382342(operand.)X
423392709(The)X
423402886(size)X
423413063(of)X
423423176(the)X
423433324(operand)X
423443647(is)X
423453746(the)X
423463895(size)X
42347796 5096(appropriate)N
423481232(to)X
423491336(hold)X
423501528(an)X
423511646(address)X
423521944(on)X
423532067(the)X
423542210(target)X
423552446(machine.)X
423562824(Set)X
423572972(the)X
423580 f
423593115(address)X
423601 f
423613521(register)X
423623820(to)X
423633924(the)X
42364796 5200(value)N
423651009(given)X
423661227(by)X
423671337(the)X
423681467(relocatable)X
423691876(address.)X
423702 f
42371796 5356(All)N
42372928(of)X
423731025(the)X
423741161(other)X
423751375(statement)X
423761741(program)X
423772076(opcodes)X
423782392(that)X
423792558(affect)X
423802783(the)X
423810 f
423822919(address)X
423832 f
423843318(register)X
423853621(add)X
423863782(a)X
423873855(delta)X
42388796 5460(to)N
42389887(it.)X
42390981(This)X
423911155(instruction)X
423921560(stores)X
423931792(a)X
423941858(relocatable)X
423952282(value)X
423962495(into)X
423972655(it)X
423982727(instead.)X
423991 f
42400642 5616(3.)N
424010 f
42402796 0.1985(DW_LNE_define_file)AX
424031 f
42404796 5720(Takes)N
424051029(4)X
424061096(arguments.)X
424071530(The)X
424081690(\256rst)X
424091851(is)X
424101934(a)X
424111997(null)X
424122159(terminated)X
424132561(string)X
424142786(containing)X
424153183(a)X
424163246(source)X
424173499(\256le)X
424183636(name.)X
424193895(The)X
42420796 5824(second)N
424211067(is)X
424221152(an)X
424231261(unsigned)X
424241605(LEB128)X
424251930(number)X
424262225(representing)X
424272686(the)X
424282820(directory)X
424293164(index)X
424303386(of)X
424313485(the)X
424323619(directory)X
424333963(in)X
4243410 s
42435576 5951(Revision:)N
42436902(2.0.0)X
424372176(Page)X
424382352(56)X
424393599(July)X
424403752(27,)X
424413872(1993)X
424421943 6055(Industry)N
424432230(Review)X
424442495(Draft)X
42445
4244657 p
42447%%Page: 57 59
424480(Courier)xf 0 f
4244910 s 0 xH 0 xS 0 f
4245011 s
424511 f
4245210 s
424533075 520(Programming)N
424543535(Languages)X
424553903(SIG)X
4245611 s
42457796 832(which)N
424581038(the)X
424591173(\256le)X
424601313(was)X
424611476(found.)X
424621752(The)X
424631916(third)X
424642110(is)X
424652196(an)X
424662306(unsigned)X
424672651(LEB128)X
424682978(number)X
424693275(representing)X
424703738(the)X
424713874(time)X
42472796 936(of)N
42473893(last)X
424741040(modi\256cation)X
424751511(of)X
424761608(the)X
424771740(\256le.)X
424781921(The)X
424792082(fourth)X
424802321(is)X
424812404(an)X
424822511(unsigned)X
424832852(LEB128)X
424843174(number)X
424853466(representing)X
424863924(the)X
42487796 1040(length)N
424881057(in)X
424891166(bytes)X
424901393(of)X
424911507(the)X
424921656(\256le.)X
424931854(The)X
424942032(time)X
424952231(and)X
424962399(length)X
424972661(\256elds)X
424982893(may)X
424993086(contain)X
425003387(LEB128\(0\))X
425013829(if)X
425023924(the)X
42503796 1144(information)N
425041235(is)X
425051316(not)X
425061451(available.)X
42507796 1300(The)N
42508964(directory)X
425091313(index)X
425101541(represents)X
425111929(an)X
425122044(entry)X
425132257(in)X
425142358(the)X
425150 f
425162498 0.1979(include_directories)AX
425171 f
425183537(section)X
425193819(of)X
425203924(the)X
42521796 1404(statement)N
425221166(program)X
425231495(prologue.)X
425241861(The)X
425252029(index)X
425262256(is)X
425272346(LEB128\(0\))X
425282778(if)X
425292863(the)X
425303002(\256le)X
425313145(was)X
425323311(found)X
425333546(in)X
425343645(the)X
425353783(current)X
42536796 1508(directory)N
425371159(of)X
425381277(the)X
425391430(compilation,)X
425401920(LEB128\(1\))X
425412366(if)X
425422465(it)X
425432560(was)X
425442742(found)X
425452993(in)X
425463108(the)X
425473262(\256rst)X
425483445(directory)X
425493809(in)X
425503924(the)X
425510 f
42552796 1612 0.1979(include_directories)AN
425531 f
425541842(section,)X
425552153(and)X
425562319(so)X
425572436(on.)X
425582607(The)X
425592783(directory)X
425603140(index)X
425613375(is)X
425623472(ignored)X
425633779(for)X
425643919(\256le)X
42565796 1716(names)N
425661043(that)X
425671198(represent)X
425681542(full)X
425691687(path)X
425701861(names.)X
42571796 1872(The)N
42572962(\256les)X
425731139(are)X
425741276(numbered,)X
425751680(starting)X
425761975(at)X
425772069(1,)X
425782165(in)X
425792264(the)X
425802402(order)X
425812617(in)X
425822716(which)X
425832961(they)X
425843143(appear;)X
425853432(the)X
425863570(names)X
425873825(in)X
425883924(the)X
42589796 1976(prologue)N
425901136(come)X
425911354(before)X
425921605(names)X
425931857(de\256ned)X
425942143(by)X
425952258(the)X
425960 f
425972393 0.1985(DW_LNE_define_file)AX
425981 f
425993374(instruction.)X
426003822(These)X
42601796 2080(numbers)N
426021121(are)X
426031250(used)X
426041433(in)X
426051524(the)X
426061654(the)X
426070 f
426081784(file)X
426091 f
426102018(register)X
426112304(of)X
426122399(the)X
426132529(state)X
426142713(machine.)X
426152 f
42616576 2236(Appendix)N
42617931(3)X
42618997(gives)X
426191200(some)X
426201402(sample)X
426211673(statement)X
426222033(programs.)X
426233 f
4262412 s
42625576 2392(6.3)N
42626744(Macro)X
426271041(Information)X
426282 f
4262911 s
42630576 2548(Some)N
42631793(languages,)X
426321204(such)X
426331392(as)X
426341497(C)X
426351583(and)X
426361742(C++,)X
426371968(provide)X
426382264(a)X
426392335(way)X
426402504(to)X
426412601(replace)X
426422893(text)X
426433049(in)X
426443146(the)X
426453282(source)X
426463544(program)X
426473879(with)X
42648576 2652(macros)N
42649874(de\256ned)X
426501168(either)X
426511414(in)X
426521523(the)X
426531671(source)X
426541945(\256le)X
426552093(itself,)X
426562328(or)X
426572446(in)X
426582555(another)X
426592869(\256le)X
426603017(included)X
426613360(by)X
426623482(the)X
426633629(source)X
426643902(\256le.)X
42665576 2756(Because)N
42666891(these)X
426671094(macros)X
426681374(are)X
426691513(not)X
426701648(themselves)X
426712052(de\256ned)X
426722329(in)X
426732421(the)X
426742552(target)X
426752786(language,)X
426763159(it)X
426773232(is)X
426783314(dif\256cult)X
426793608(to)X
426803700(represent)X
42681576 2860(their)N
42682770(de\256nitions)X
426831164(using)X
426841381(the)X
426851515(standard)X
426861854(language)X
426872208(constructs)X
426882596(of)X
426892691(DWARF.)X
426903059(The)X
426913217(debugging)X
426923615(information)X
42693576 2964(therefore)N
42694921(re\257ects)X
426951197(the)X
426961327(state)X
426971516(of)X
426981607(the)X
426991737(source)X
427001993(after)X
427012182(the)X
427022312(macro)X
427032559(de\256nition)X
427042916(has)X
427053061(been)X
427063250(expanded,)X
427073632(rather)X
427083875(than)X
42709576 3068(as)N
42710693(the)X
42711840(programmer)X
427121322(wrote)X
427131562(it.)X
427141695(The)X
427151866(macro)X
427162129(information)X
427172585(table)X
427182800(provides)X
427193141(a)X
427203223(way)X
427213403(of)X
427223510(preserving)X
427233924(the)X
42724576 3172(original)N
42725883(source)X
427261139(in)X
427271230(the)X
427281360(debugging)X
427291754(information.)X
427301 f
42731576 3328(As)N
42732699(described)X
427331062(in)X
427341157(section)X
427351433(3.1,)X
427361591(the)X
427371725(macro)X
427381971(information)X
427392414(for)X
427402542(a)X
427412607(given)X
427422830(compilation)X
427433280(unit)X
427443445(is)X
427453531(represented)X
427463963(in)X
42747576 3432(the)N
427480 f
42749715(.debug_macinfo)X
427501 f
427511488(section)X
427521769(of)X
427531873(an)X
427541987(object)X
427552234(\256le.)X
427562422(The)X
427572589(macro)X
427582839(information)X
427593286(for)X
427603418(each)X
427613609(compilation)X
42762576 3536(unit)N
42763749(is)X
42764843(represented)X
427651284(as)X
427661393(a)X
427671468(series)X
427681704(of)X
427691813(``macinfo'')X
427702254(entries.)X
427712569(Each)X
427722781(macinfo)X
427733106(entry)X
427743323(consists)X
427753638(of)X
427763747(a)X
427773822(``type)X
42778576 3640(code'')N
42779825(and)X
42780977(up)X
427811090(to)X
427821184(two)X
427831341(additional)X
427841720(operands.)X
427852106(The)X
427862268(series)X
427872493(of)X
427882591(entries)X
427892851(for)X
427902978(a)X
427913042(given)X
427923262(compilation)X
427933709(unit)X
427943871(ends)X
42795576 3744(with)N
42796755(an)X
42797860(entry)X
427981063(containing)X
427991458(a)X
428001519(type)X
428011693(code)X
428021881(of)X
428031976(0.)X
428043 f
42805576 3900(6.3.1)N
42806796(Macinfo)X
428071131(Types)X
428081 f
42809576 4056(The)N
42810735(valid)X
42811934(macinfo)X
428121245(types)X
428131453(are)X
428141582(as)X
428151677(follows:)X
428160 f
42817576 4212 0.1992(DW_MACINFO_define)AN
428181 f
428191896(A)X
428201981(macro)X
428212223(de\256nition.)X
428220 f
42823576 4368(DW_MACINFO_undef)N
428241 f
428251896(A)X
428261981(macro)X
428272223(un-de\256nition.)X
428280 f
42829576 4524 0.1969(DW_MACINFO_start_file)AN
428301 f
428311896(The)X
428322055(start)X
428332229(of)X
428342324(a)X
428352385(new)X
428362553(source)X
428372804(\256le)X
428382939(inclusion.)X
428390 f
42840576 4680 0.1979(DW_MACINFO_end_file)AN
428411 f
428421896(The)X
428432055(end)X
428442204(of)X
428452299(the)X
428462429(current)X
428472700(source)X
428482951(\256le)X
428493086(inclusion.)X
428500 f
42851576 4836 0.1969(DW_MACINFO_vendor_ext)AN
428521 f
428531896(Vendor)X
428542186(speci\256c)X
428552482(macro)X
428562729(information)X
428573173(directives)X
428583543(that)X
428593703(do)X
428603818(not)X
428613958(\256t)X
428621896 4940(into)N
428632056(one)X
428642205(of)X
428652300(the)X
428662430(standard)X
428672750(categories.)X
428683 f
4286910 s
42870576 5096(6.3.1.1)N
42871836(De\256ne)X
428721074(and)X
428731222(Unde\256ne)X
428741548(Entries)X
428751 f
4287611 s
42877576 5252(All)N
428780 f
42879722 0.1992(DW_MACINFO_define)AX
428801 f
428811656(and)X
428820 f
428831816(DW_MACINFO_undef)X
428841 f
428852697(entries)X
428862965(have)X
428873164(two)X
428883329(operands.)X
428893724(The)X
428903895(\256rst)X
42891576 5356(operand)N
42892886(encodes)X
428931196(the)X
428941331(line)X
428951491(number)X
428961787(of)X
428971887(the)X
428982022(source)X
428992278(line)X
429002438(on)X
429012553(which)X
429022795(the)X
429032930(relevant)X
429043241(de\256ning)X
429053556(or)X
429063655(unde\256ning)X
42907576 5460(pre-processor)N
429081075(directives)X
429091440(appeared.)X
42910576 5616(The)N
42911778(second)X
429121087(operand)X
429131435(consists)X
429141779(of)X
429151917(a)X
429162021(null-terminated)X
429172631(character)X
429183018(string.)X
429193328(In)X
429203466(the)X
429213639(case)X
429223855(of)X
429233993(a)X
429240 f
42925576 5720(DW_MACINFO_undef)N
429261 f
429271469(entry,)X
429281717(the)X
429291870(value)X
429302106(of)X
429312224(this)X
429322396(string)X
429332641(will)X
429342823(be)X
429352950(simply)X
429363235(the)X
429373387(name)X
429383622(of)X
429393739(the)X
429403891(pre-)X
42941576 5824(processor)N
42942934(symbol)X
429431216(which)X
429441453(was)X
429451611(unde\256ned)X
429461980(at)X
429472066(the)X
429482196(indicated)X
429492542(source)X
429502793(line.)X
4295110 s
42952576 5951(Revision:)N
42953902(2.0.0)X
429542176(Page)X
429552352(57)X
429563599(July)X
429573752(27,)X
429583872(1993)X
429591943 6055(Industry)N
429602230(Review)X
429612495(Draft)X
42962
4296358 p
42964%%Page: 58 60
429650(Courier)xf 0 f
4296610 s 0 xH 0 xS 0 f
4296711 s
429681 f
4296910 s
42970576 520(DWARF)N
42971885(Debugging)X
429721261(Information)X
429731664(Format)X
4297411 s
42975576 832(In)N
42976678(the)X
42977815(case)X
42978995(of)X
429791097(a)X
429800 f
429811166 0.1992(DW_MACINFO_define)AX
429821 f
429832097(entry,)X
429842330(the)X
429852468(value)X
429862689(of)X
429872792(this)X
429882950(string)X
429893181(will)X
429903349(be)X
429913462(the)X
429923600(name)X
429933821(of)X
429943924(the)X
42995576 936(pre-processor)N
429961081(symbol)X
429971369(that)X
429981530(was)X
429991694(de\256ned)X
430001981(at)X
430012073(the)X
430022209(indicated)X
430032561(source)X
430042817(line,)X
430052999(followed)X
430063339 0.3187(immediately)AX
430073809(by)X
430083924(the)X
43009576 1040(macro)N
43010822(formal)X
430111083(parameter)X
430121461(list)X
430131596(including)X
430141956(the)X
430152090(surrounding)X
430162541(parentheses)X
430172977(\(in)X
430183101(the)X
430193235(case)X
430203412(of)X
430213511(a)X
430223576(function-like)X
43023576 1144(macro\))N
43024853(followed)X
430251193(by)X
430261308(the)X
430271443(de\256nition)X
430281809(string)X
430292037(for)X
430302166(the)X
430312301(macro.)X
430322592(If)X
430332677(there)X
430342880(is)X
430352966(no)X
430363081(formal)X
430373343(parameter)X
430383722(list,)X
430393880(then)X
43040576 1248(the)N
43041706(name)X
43042919(of)X
430431014(the)X
430441144(de\256ned)X
430451425(macro)X
430461667(is)X
430471748(followed)X
430482083(directly)X
430492375(by)X
430502485(its)X
430512591(de\256nition)X
430522952(string.)X
43053576 1404(In)N
43054678(the)X
43055815(case)X
43056995(of)X
430571097(a)X
430581165(function-like)X
430591650(macro)X
430601899(de\256nition,)X
430612289(no)X
430622406(whitespace)X
430632826(characters)X
430643211(should)X
430653475(appear)X
430663739(between)X
43067576 1508(the)N
43068709(name)X
43069925(of)X
430701022(the)X
430711154(de\256ned)X
430721437(macro)X
430731681(and)X
430741832(the)X
430751964(following)X
430762331(left)X
430772473(parenthesis.)X
430782937(Also,)X
430793149(no)X
430803261(whitespace)X
430813676(characters)X
43082576 1612(should)N
43083844(appear)X
430841111(between)X
430851437(successive)X
430861841(formal)X
430872110(parameters)X
430882530(in)X
430892633(the)X
430902775(formal)X
430913044(parameter)X
430923430(list.)X
430933617(\(Successive)X
43094576 1716(formal)N
43095836(parameters)X
430961247(should,)X
430971529(however,)X
430981878(be)X
430991986(separated)X
431002343(by)X
431012456(commas.\))X
431022848(Also,)X
431033061(exactly)X
431043340(one)X
431053491(space)X
431063710(character)X
43107576 1820(should)N
43108833(separate)X
431091143(the)X
431101274(right)X
431111464(parenthesis)X
431121883(which)X
431132121(terminates)X
431142512(the)X
431152643(formal)X
431162901(parameter)X
431173276(list)X
431183408(and)X
431193558(the)X
431203689(following)X
43121576 1924(de\256nition)N
43122937(string.)X
43123576 2080(In)N
43124678(the)X
43125815(case)X
43126995(of)X
431271097(a)X
431281165(``normal'')X
431291560(\(i.e.)X
431301726(non-function-like\))X
431312402(macro)X
431322652(de\256nition,)X
431333043(exactly)X
431343328(one)X
431353485(space)X
431363710(character)X
43137576 2184(should)N
43138833(separate)X
431391143(the)X
431401273(name)X
431411486(of)X
431421581(the)X
431431711(de\256ned)X
431441992(macro)X
431452234(from)X
431462427(the)X
431472557(following)X
431482922(de\256nition)X
431493283(text.)X
431503 f
4315110 s
43152576 2340(6.3.1.2)N
43153836(Start)X
431541030(File)X
431551179(Entries)X
431561 f
4315711 s
43158576 2496(Each)N
431590 f
43160778 0.1969(DW_MACINFO_start_file)AX
431611 f
431621917(entry)X
431632124(also)X
431642292(has)X
431652435(two)X
431662593(operands.)X
431672980(The)X
431683143(\256rst)X
431693306(operand)X
431703615(encodes)X
431713924(the)X
43172576 2600(line)N
43173731(number)X
431741022(of)X
431751117(the)X
431761247(source)X
431771498(line)X
431781653(on)X
431791763(which)X
431802000(the)X
431812130(inclusion)X
431822476(pre-processor)X
431832975(directive)X
431843306(occurred.)X
43185576 2756(The)N
43186735(second)X
431871001(operand)X
431881306(encodes)X
431891611(a)X
431901672(source)X
431911923(\256le)X
431922058(name)X
431932272(index.)X
431942535(This)X
431952715(index)X
431962934(corresponds)X
431973381(to)X
431983473(a)X
431993535(\256le)X
432003671(number)X
432013963(in)X
43202576 2860(the)N
43203744(statement)X
432041143(information)X
432051620(table)X
432061852(for)X
432072014(the)X
432082181(relevant)X
432092524(compilation)X
432103006(unit.)X
432113247(This)X
432123463(index)X
432133718(indicates)X
43214576 2964(\(indirectly\))N
432151017(the)X
432161169(name)X
432171404(of)X
432181521(the)X
432191673(\256le)X
432201830(which)X
432212089(is)X
432222192(being)X
432232433(included)X
432242782(by)X
432252915(the)X
432263068(inclusion)X
432273437(directive)X
432283791(on)X
432293924(the)X
43230576 3068(indicated)N
43231922(source)X
432321173(line.)X
432333 f
4323410 s
43235576 3224(6.3.1.3)N
43236836(End)X
43237997(File)X
432381146(Entries)X
432391 f
4324011 s
43241576 3380(A)N
432420 f
43243661 0.1979(DW_MACINFO_end_file)AX
432441 f
432451690(entry)X
432461893(has)X
432472032(no)X
432482142(operands.)X
432492525(The)X
432502684(presence)X
432513013(of)X
432523108(the)X
432533238(entry)X
432543441(marks)X
432553678(the)X
432563809(end)X
432573959(of)X
43258576 3484(the)N
43259706(current)X
43260977(source)X
432611228(\256le)X
432621363(inclusion.)X
432633 f
4326410 s
43265576 3640(6.3.1.4)N
43266836(Vendor)X
432671114(Extension)X
432681471(Entries)X
432691 f
4327011 s
43271576 3796(A)N
432720 f
43273665 0.1969(DW_MACINFO_vendor_ext)AX
432741 f
432751804(entry)X
432762011(has)X
432772154(two)X
432782312(operands.)X
432792699(The)X
432802862(\256rst)X
432813025(is)X
432823110(a)X
432833175(constant.)X
432843539(The)X
432853702(second)X
432863973(is)X
43287576 3900(a)N
43288669(null-terminated)X
432891268(character)X
432901644(string.)X
432911943(The)X
432922134(meaning)X
432932491(and/or)X
432942769(signi\256cance)X
432953243(of)X
432963369(these)X
432973603(operands)X
432983973(is)X
43299576 4004 0.2708(intentionally)AN
433001046(left)X
433011186(unde\256ned)X
433021555(by)X
433031665(this)X
433041815(speci\256cation.)X
43305576 4160(A)N
43306665(consumer)X
433071033(must)X
433081231(be)X
433091340(able)X
433101514(to)X
433111610(totally)X
433121864(ignore)X
433132116(all)X
433140 f
433152232 0.1969(DW_MACINFO_vendor_ext)AX
433161 f
433173372(entries)X
433183634(that)X
433193794(it)X
433203871(does)X
43321576 4264(not)N
43322711(understand.)X
433233 f
43324576 4420(6.3.2)N
43325796(Base)X
43326994(Source)X
433271275(Entries)X
433281 f
43329576 4576(In)N
43330746(addition)X
433311133(to)X
433321299(producing)X
433331754(a)X
433341891(matched)X
433352288(pair)X
433362523(of)X
433370 f
433382694 0.1969(DW_MACINFO_start_file)AX
433391 f
433403905(and)X
433410 f
43342576 4680 0.1979(DW_MACINFO_end_file)AN
433431 f
433441641(entries)X
433451934(for)X
433462094(each)X
433472313(inclusion)X
433482695(directive)X
433493062(actually)X
433503399(processed)X
433513802(during)X
43352576 4784(compilation,)N
433531058(a)X
433541134(producer)X
433551483(should)X
433561755(generate)X
433572090(such)X
433582288(a)X
433592364(matched)X
433602701(pair)X
433612876(also)X
433623056(for)X
433633196(the)X
433643342(``base'')X
433653652(source)X
433663919(\256le)X
43367576 4888(submitted)N
43368953(to)X
433691050(the)X
433701186(compiler)X
433711528(for)X
433721658(compilation.)X
433732153(If)X
433742238(the)X
433752373(base)X
433762556(source)X
433772812(\256le)X
433782952(for)X
433793081(a)X
433803147(compilation)X
433813597(is)X
433823683(submitted)X
43383576 4992(to)N
43384681(the)X
43385825(compiler)X
433861175(via)X
433871319(some)X
433881541(means)X
433891802(other)X
433902019(than)X
433912207(via)X
433922351(a)X
433932426(named)X
433942698(disk)X
433952882(\256le)X
433963032(\(e.g.)X
433973225(via)X
433983370(the)X
433993515(standard)X
434003850(input)X
434012 f
43402576 5096(stream)N
434031 f
43404868(on)X
434051009(a)X
434061101(UNIX)X
434071372(system\))X
434081699(then)X
434091904(the)X
434102065(compiler)X
434112431(should)X
434122718(still)X
434132904(produce)X
434143239(this)X
434153419(matched)X
434163770(pair)X
434173959(of)X
434180 f
43419576 5200 0.1969(DW_MACINFO_start_file)AN
434201 f
434211719(and)X
434220 f
434231876 0.1979(DW_MACINFO_end_file)AX
434241 f
434252913(entries)X
434263178(for)X
434273311(the)X
434283450(base)X
434293637(source)X
434303897(\256le,)X
43431576 5304(however,)N
43432930(the)X
434331068(\256le)X
434341211(name)X
434351432(indicated)X
434361786(\(indirectly\))X
434372213(by)X
434382331(the)X
434390 f
434402469 0.1969(DW_MACINFO_start_file)AX
434411 f
434423612(entry)X
434433822(of)X
434443924(the)X
43445576 5408(pair)N
43446735(should)X
43447992(reference)X
434481340(a)X
434491401(statement)X
434501762(information)X
434512201(\256le)X
434522336(name)X
434532549(entry)X
434542752(consisting)X
434553132(of)X
434563227(a)X
434573288(null)X
434583448(string.)X
434593 f
43460576 5564(6.3.3)N
43461796(Macinfo)X
434621131(Entries)X
434631427(for)X
434641561(Command)X
434651978(Line)X
434662172(Options)X
434671 f
43468576 5720(In)N
43469671(addition)X
43470983(to)X
434711074(producing)X
434720 f
434731453 0.1992(DW_MACINFO_define)AX
434741 f
434752376(and)X
434760 f
434772525(DW_MACINFO_undef)X
434781 f
434793395(entries)X
434803652(for)X
434813776(each)X
434823959(of)X
43483576 5824(the)N
43484718(de\256ne)X
43485967(and)X
434861128(unde\256ne)X
434871465(directives)X
434881841(processed)X
434892220(during)X
434902483(compilation,)X
434912961(the)X
434923102(DWARF)X
434933452(producer)X
434943797(should)X
4349510 s
43496576 5951(Revision:)N
43497902(2.0.0)X
434982176(Page)X
434992352(58)X
435003599(July)X
435013752(27,)X
435023872(1993)X
435031943 6055(Industry)N
435042230(Review)X
435052495(Draft)X
43506
4350759 p
43508%%Page: 59 61
435090(Courier)xf 0 f
4351010 s 0 xH 0 xS 0 f
4351111 s
435121 f
4351310 s
435143075 520(Programming)N
435153535(Languages)X
435163903(SIG)X
4351711 s
43518576 832(generate)N
43519921(a)X
435200 f
435211007 0.1992(DW_MACINFO_define)AX
435221 f
435231955(or)X
435240 f
435252075(DW_MACINFO_undef)X
435261 f
435272970(entry)X
435283198(for)X
435293347(each)X
435303555(pre-processor)X
43531576 936(symbol)N
43532859(which)X
435331097(is)X
435341179(de\256ned)X
435351461(or)X
435361557(unde\256ned)X
435371927(by)X
435382038(some)X
435392247(means)X
435402495(other)X
435412699(than)X
435422874(via)X
435433005(a)X
435443066(de\256ne)X
435453303(or)X
435463398(unde\256ne)X
435473723(directive)X
43548576 1040(within)N
43549856(the)X
435501018(compiled)X
435511401(source)X
435521684(text.)X
435531915(In)X
435542043(particular,)X
435552458(pre-processor)X
435562990(symbol)X
435573305(de\256nitions)X
435583733(and)X
435593915(un-)X
43560576 1144(de\256nitions)N
43561973(which)X
435621212(occur)X
435631431(as)X
435641528(a)X
435651591(result)X
435661811(of)X
435671908(command)X
435682280(line)X
435692437(options)X
435702721(\(when)X
435712963(invoking)X
435723300(the)X
435733431(compiler\))X
435743797(should)X
43575576 1248(be)N
43576681(represented)X
435771108(by)X
435781218(their)X
435791402(own)X
435800 f
435811575 0.1992(DW_MACINFO_define)AX
435821 f
435832498(and)X
435840 f
435852647(DW_MACINFO_undef)X
435861 f
435873517(entries.)X
43588576 1404(All)N
43589719(such)X
435900 f
43591910 0.1992(DW_MACINFO_define)AX
435921 f
435931841(and)X
435940 f
435951998(DW_MACINFO_undef)X
435961 f
435972877(entries)X
435983143(representing)X
435993609(compilation)X
43600576 1508(options)N
43601867(should)X
436021133(appear)X
436031398(before)X
436041653(the)X
436051792(\256rst)X
436060 f
436071960 0.1969(DW_MACINFO_start_file)AX
436081 f
436093103(entry)X
436103314(for)X
436113446(that)X
436123609(compilation)X
43613576 1612(unit)N
43614736(and)X
43615885(should)X
436161142(encode)X
436171413(the)X
436181543(value)X
436191756(0)X
436201822(in)X
436211913(their)X
436222097(line)X
436232252(number)X
436242543(operands.)X
436253 f
43626576 1768(6.3.4)N
43627818(General)X
436281144(Rules)X
436291376(and)X
436301540(Restrictions)X
436311 f
43632576 1924(All)N
43633724(macinfo)X
436341048(entries)X
436351318(within)X
436361580(a)X
436370 f
436381655(.debug_macinfo)X
436391 f
436402433(section)X
436412719(for)X
436422857(a)X
436432932(given)X
436443164(compilation)X
436453623(unit)X
436463797(should)X
43647576 2028(appear)N
43648832(in)X
43649923(the)X
436501053(same)X
436511256(order)X
436521463(in)X
436531554(which)X
436541791(the)X
436551921(directives)X
436562286(were)X
436572478(processed)X
436582846(by)X
436592956(the)X
436603086(compiler.)X
43661576 2184(All)N
43662721(macinfo)X
436631042(entries)X
436641309(representing)X
436651776(command)X
436662156(line)X
436672321(options)X
436682613(should)X
436692880(appear)X
436703146(in)X
436713247(the)X
436723387(same)X
436733600(order)X
436743818(as)X
436753924(the)X
43676576 2288(relevant)N
43677886(command)X
436781260(line)X
436791419(options)X
436801705(were)X
436811901(given)X
436822123(to)X
436832218(the)X
436842352(compiler.)X
436852736(In)X
436862835(the)X
436872968(case)X
436883144(where)X
436893383(the)X
436903516(compiler)X
436913855(itself)X
43692576 2392 0.4306(implicitly)AN
43693957(supplies)X
436941281(one)X
436951443(or)X
436961551(more)X
436971767(macro)X
436982022(de\256nitions)X
436992430(or)X
437002538(un-de\256nitions)X
437013063(in)X
437023167(addition)X
437033492(to)X
437043596(those)X
437053817(which)X
43706576 2496(may)N
43707751(be)X
43708857(speci\256ed)X
437091193(on)X
437101304(the)X
437111435(command)X
437121806(line,)X
437131984(macinfo)X
437142296(entries)X
437152553(should)X
437162810(also)X
437172974(be)X
437183079(produced)X
437193428(for)X
437203552(these)X
437213755 0.4732(implicit)AX
43722576 2600(de\256nitions)N
43723975(and)X
437241128(un-de\256nitions,)X
437251666(and)X
437261819(these)X
437272026(entries)X
437282287(should)X
437292548(also)X
437302716(appear)X
437312976(in)X
437323071(the)X
437333205(proper)X
437343460(order)X
437353671(relative)X
437363963(to)X
43737576 2704(each)N
43738769(other)X
43739982(and)X
437401140(to)X
437411240(any)X
437421398(de\256nitions)X
437431802(or)X
437441906(unde\256nitions)X
437452398(given)X
437462625(explicitly)X
437472991(by)X
437483110(the)X
437493249(user)X
437503426(on)X
437513545(the)X
437523684(command)X
43753576 2808(line.)N
437543 f
4375512 s
43756576 2964(6.4)N
43757744(Call)X
43758939(Frame)X
437591236(Information)X
437602 f
4376111 s
43762576 3120(Debuggers)N
43763985(often)X
437641186(need)X
437651376(to)X
437661470(be)X
437671578(able)X
437681755(to)X
437691849(view)X
437702036(and)X
437712193(modify)X
437722458(the)X
437732591(state)X
437742783(of)X
437752877(any)X
437763029(subroutine)X
437773431(activation)X
437783810(that)X
437793973(is)X
43780576 3224(on)N
43781686(the)X
43782816(call)X
43783971(stack.)X
437841218(An)X
437851338(activation)X
437861714(consists)X
437872015(of:)X
437889 s
4378910 f
43790639 3380(g)N
4379111 s
437922 f
43793708(A)X
43794797(code)X
43795998(location)X
437961323(that)X
437971497(is)X
437981592(within)X
437991850(the)X
438001994(subroutine.)X
438012451(This)X
438022639(location)X
438032965(is)X
438043060(either)X
438053302(the)X
438063446(place)X
438073673(where)X
438083924(the)X
43809708 3484(program)N
438101048(stopped)X
438111355(when)X
438121574(the)X
438131715(debugger)X
438142080(got)X
438152225(control)X
438162512(\(e.g.)X
438172700(a)X
438182776(breakpoint\),)X
438193241(or)X
438203351(is)X
438213442(a)X
438223518(place)X
438233741(where)X
438243988(a)X
43825708 3588(subroutine)N
438261107(made)X
438271319(a)X
438281385(call)X
438291540(or)X
438301640(was)X
438311799(interrupted)X
438322218(by)X
438332323(an)X
438342433(asynchronous)X
438352943(event)X
438363151(\(e.g.)X
438373329(a)X
438383395(signal\).)X
438399 s
4384010 f
43841639 3744(g)N
4384211 s
438432 f
43844708(An)X
43845840(area)X
438461035(of)X
438471138(memory)X
438481454(that)X
438491626(is)X
438501719(allocated)X
438512082(on)X
438522205(a)X
438532284(stack)X
438542500(called)X
438552751(a)X
438562830(``call)X
438573056(frame.'')X
438583398(The)X
438593565(call)X
438603733(frame)X
438613973(is)X
43862708 3848(identi\256ed)N
438631077(by)X
438641200(an)X
438651328(address)X
438661641(on)X
438671768(the)X
438681915(stack.)X
438692179(We)X
438702330(refer)X
438712540(to)X
438722648(this)X
438732815(address)X
438743127(as)X
438753244(the)X
438763391(Canonical)X
438773798(Frame)X
43878708 3952(Address)N
438791013(or)X
438801113(CFA.)X
438819 s
4388210 f
43883639 4108(g)N
4388411 s
438852 f
43886708(A)X
43887784(set)X
43888904(of)X
43889995(registers)X
438901325(that)X
438911485(are)X
438921624(in)X
438931715(use)X
438941854(by)X
438951959(the)X
438962089(subroutine)X
438972488(at)X
438982579(the)X
438992709(code)X
439002897(location.)X
43901576 4264(Typically,)N
43902949(a)X
439031015(set)X
439041135(of)X
439051226(registers)X
439061556(are)X
439071696(designated)X
439082101(to)X
439092193(be)X
439102299(preserved)X
439112668(across)X
439122920(a)X
439132987(call.)X
439143187(If)X
439153264(a)X
439163331(callee)X
439173565(wishes)X
439183823(to)X
439193915(use)X
43920576 4368(such)N
43921761(a)X
43922829(register,)X
439231149(it)X
439241223(saves)X
439251437(the)X
439261569(value)X
439271784(that)X
439281946(the)X
439292078(register)X
439302376(had)X
439312532(at)X
439322625(entry)X
439332830(time)X
439343006(in)X
439353099(its)X
439363207(call)X
439373364(frame)X
439383593(and)X
439393749(restores)X
43940576 4472(it)N
43941650(on)X
43942762(exit.)X
43943958(The)X
439441114(code)X
439451304(that)X
439461467(allocates)X
439471811(space)X
439482036(on)X
439492149(the)X
439502282(call)X
439512440(frame)X
439522670(stack)X
439532876(and)X
439543033(performs)X
439553375(the)X
439563508(save)X
439573689(operation)X
43958576 4576(is)N
43959682(called)X
43960945(the)X
439611099(subroutine's)X
439621585(prologue,)X
439631971(and)X
439642149(the)X
439652303(code)X
439662515(that)X
439672699(performs)X
439683062(the)X
439693216(restore)X
439703511(operation)X
439713900(and)X
43972576 4680(deallocates)N
439731013(the)X
439741156(frame)X
439751396(is)X
439761490(called)X
439771741(its)X
439781860(epilogue.)X
439792243(Typically,)X
439802630(the)X
439812774(prologue)X
439823128(code)X
439833330(is)X
439843425(physically)X
439853819(at)X
439863924(the)X
43987576 4784(beginning)N
43988951(of)X
439891042(a)X
439901108(subroutine)X
439911507(and)X
439921661(the)X
439931791(epilogue)X
439942117(code)X
439952305(is)X
439962386(at)X
439972477(the)X
439982607(end.)X
43999576 4940(To)N
44000703(be)X
44001820(able)X
440021006(to)X
440031109(view)X
440041305(or)X
440051417(modify)X
440061691(an)X
440071813(activation)X
440082202(that)X
440092375(is)X
440102469(not)X
440112617(on)X
440122740(the)X
440132883(top)X
440143031(of)X
440153135(the)X
440163278(call)X
440173446(frame)X
440183686(stack,)X
440193924(the)X
44020576 5044(debugger)N
44021933(must)X
440221124(``virtually)X
440231507(unwind'')X
440241849(the)X
440251981(stack)X
440262186(of)X
440272279(activations)X
440282691(until)X
440292878(it)X
440302952(\256nds)X
440313142(the)X
440323274(activation)X
440333652(of)X
440343745(interest.)X
44035576 5148(A)N
44036652(debugger)X
440371006(unwinds)X
440381322(a)X
440391388(stack)X
440401591(in)X
440411682(steps.)X
440421924(Starting)X
440432231(with)X
440442406(the)X
440452536(current)X
440462818(activation)X
440473195(it)X
440483268(restores)X
440493574(any)X
440503724(registers)X
44051576 5252(that)N
44052751(were)X
44053959(preserved)X
440541342(by)X
440551462(the)X
440561607(current)X
440571902(activation)X
440582292(and)X
440592460(computes)X
440602828(the)X
440612972(predecessor's)X
440623495(CFA)X
440633698(and)X
440643866(code)X
44065576 5356(location.)N
44066937(This)X
440671117(has)X
440681267(the)X
440691403(logical)X
440701677(effect)X
440711897(of)X
440721994(returning)X
440732355(from)X
440742549(the)X
440752685(current)X
440762972(subroutine)X
440773377(to)X
440783474(its)X
440793586(predecessor.)X
44080576 5460(We)N
44081714(say)X
44082857(that)X
440831020(the)X
440841153(debugger)X
440851510(virtually)X
440861835(unwinds)X
440872154(the)X
440882287(stack)X
440892493(because)X
440902801(it)X
440912876(preserves)X
440923237(enough)X
440933521(information)X
440943963(to)X
44095576 5564(be)N
44096681(able)X
44097855(to)X
44098946(``rewind'')X
440991329(the)X
441001459(stack)X
441011662(back)X
441021850(to)X
441031941(the)X
441042071(state)X
441052260(it)X
441062332(was)X
441072491(in)X
441082582(before)X
441092829(it)X
441102901(attempted)X
441113271(to)X
441123362(unwind)X
441133644(it.)X
44114576 5720(The)N
44115747(unwinding)X
441161160(operation)X
441171543(needs)X
441181783(to)X
441191892(know)X
441202118(where)X
441212373(registers)X
441222721(are)X
441232878(saved)X
441243118(and)X
441253290(how)X
441263477(to)X
441273586(compute)X
441283924(the)X
44129576 5824(predecessor's)N
441301100(CFA)X
441311304(and)X
441321473(code)X
441331676(location.)X
441342046(When)X
441352282(considering)X
441362734(an)X
441372858(architecture-independent)X
441383785(way)X
441393963(of)X
441401 f
4414110 s
44142576 5951(Revision:)N
44143902(2.0.0)X
441442176(Page)X
441452352(59)X
441463599(July)X
441473752(27,)X
441483872(1993)X
441491943 6055(Industry)N
441502230(Review)X
441512495(Draft)X
44152
4415360 p
44154%%Page: 60 62
441550(Courier)xf 0 f
4415610 s 0 xH 0 xS 0 f
4415711 s
441581 f
4415910 s
44160576 520(DWARF)N
44161885(Debugging)X
441621261(Information)X
441631664(Format)X
441642 f
4416511 s
44166576 832(encoding)N
44167921(this)X
441681071(information)X
441691510(one)X
441701659(has)X
441711803(to)X
441721894(consider)X
441732219(a)X
441742285(number)X
441752575(of)X
441762666(special)X
441772938(things.)X
441789 s
4417910 f
44180639 988(g)N
4418111 s
441822 f
44183708(Prologue)X
441841068(and)X
441851232(epilogue)X
441861568(code)X
441871766(is)X
441881857(not)X
441892002(always)X
441902279(in)X
441912380(distinct)X
441922674(blocks)X
441932932(at)X
441943034(the)X
441953175(beginning)X
441963561(and)X
441973726(end)X
441983886(of)X
441993988(a)X
44200708 1092(subroutine.)N
442011160(It)X
442021245(is)X
442031335(common)X
442041663(to)X
442051763(duplicate)X
442062123(the)X
442072262(epilogue)X
442082597(code)X
442092793(at)X
442102892(the)X
442113030(site)X
442123183(of)X
442133282(each)X
442143478(return)X
442153728(from)X
442163924(the)X
44217708 1196(code.)N
44218947(Sometimes)X
442191352(a)X
442201425(compiler)X
442211767(breaks)X
442222030(up)X
442232147(the)X
442242284(register)X
442252588(save/unsave)X
442263043(operations)X
442273450(and)X
442283612(moves)X
442293861(them)X
44230708 1300(into)N
44231868(the)X
44232998(body)X
442331191(of)X
442341282(the)X
442351412(subroutine)X
442361811(to)X
442371902(just)X
442382052(where)X
442392289(they)X
442402458(are)X
442412597(needed.)X
442429 s
4424310 f
44244639 1456(g)N
4424511 s
442462 f
44247708(Compilers)X
442481102(use)X
442491246(different)X
442501573(ways)X
442511776(to)X
442521872(manage)X
442532177(the)X
442542312(call)X
442552472(frame.)X
442562748(Sometimes)X
442573152(they)X
442583327(use)X
442593472(a)X
442603544(frame)X
442613777(pointer)X
44262708 1560(register,)N
442631026(sometimes)X
442641414(not.)X
442659 s
4426610 f
44267639 1716(g)N
4426811 s
442692 f
44270708(The)X
44271883(algorithm)X
442721274(to)X
442731386(compute)X
442741727(the)X
442751878(CFA)X
442762088(changes)X
442772419(as)X
442782541(you)X
442792712(progress)X
442803063(through)X
442813386(the)X
442823538(prologue)X
442833900(and)X
44284708 1820(epilogue)N
442851034(code.)X
442861266(\(By)X
442871410(de\256nition,)X
442881788(the)X
442891918(CFA)X
442902107(value)X
442912320(does)X
442922503(not)X
442932638(change.\))X
442949 s
4429510 f
44296639 1976(g)N
4429711 s
442982 f
44299708(Some)X
44300920(subroutines)X
443011353(have)X
443021541(no)X
443031651(call)X
443041806(frame.)X
443059 s
4430610 f
44307639 2132(g)N
4430811 s
443092 f
44310708(Sometimes)X
443111120(a)X
443121201(register)X
443131512(is)X
443141608(saved)X
443151845(in)X
443161951(another)X
443172262(register)X
443182573(that)X
443192748(by)X
443202868(convention)X
443213292(does)X
443223490(not)X
443233640(need)X
443243843(to)X
443253949(be)X
44326708 2236(saved.)N
443279 s
4432810 f
44329639 2392(g)N
4433011 s
443312 f
44332708(Some)X
44333949(architectures)X
443341465(have)X
443351682(special)X
443361983(instructions)X
443372451(that)X
443382640(perform)X
443392974(some)X
443403205(or)X
443413334(all)X
443423479(of)X
443433599(the)X
443443758(register)X
44345708 2496(management)N
443461188(in)X
443471288(one)X
443481446(instruction,)X
443491882(leaving)X
443502173(special)X
443512454(information)X
443522901(on)X
443533019(the)X
443543157(stack)X
443553368(that)X
443563536(indicates)X
443573885(how)X
44358708 2600(registers)N
443591038(are)X
443601177(saved.)X
443619 s
4436210 f
44363639 2756(g)N
4436411 s
443652 f
44366708(Some)X
44367928(architectures)X
443681423(treat)X
443691620(return)X
443701870(address)X
443712173(values)X
443722428(specially.)X
443732816(For)X
443742978(example,)X
443753323(in)X
443763422(one)X
443773579(architecture,)X
44378708 2860(the)N
44379860(call)X
443801037(instruction)X
443811464(guarantees)X
443821899(that)X
443832081(the)X
443842233(low)X
443852405(order)X
443862644(two)X
443872816(bits)X
443882988(will)X
443893166(be)X
443903292(zero)X
443913486(and)X
443923661(the)X
443933812(return)X
44394708 2964(instruction)N
443951115(ignores)X
443961403(those)X
443971613(bits.)X
443981809(This)X
443991985(leaves)X
444002229(two)X
444012381(bits)X
444022534(of)X
444032628(storage)X
444042917(that)X
444053080(are)X
444063222(available)X
444073576(to)X
444083670(other)X
444093881(uses)X
44410708 3068(that)N
44411868(must)X
444121056(be)X
444131161(treated)X
444141433(specially.)X
444153 f
44416576 3224(6.4.1)N
44417796(Structure)X
444181179(of)X
444191274(Call)X
444201453(Frame)X
444211724(Information)X
444221 f
44423576 3380(DWARF)N
44424921(supports)X
444251247(virtual)X
444261506(unwinding)X
444271911(by)X
444282027(de\256ning)X
444292344(an)X
444302455(architecture)X
444312899(independent)X
444323359(basis)X
444333564(for)X
444343695(recording)X
44435576 3484(how)N
44436778(procedures)X
444371214(save)X
444381421(and)X
444391599(restore)X
444401889(registers)X
444412238(throughout)X
444422676(their)X
444432889(lifetimes.)X
444443294(This)X
444453501(basis)X
444463727(must)X
444473949(be)X
44448576 3588(augmented)N
44449992(on)X
444501109(some)X
444511324(machines)X
444521686(with)X
444531872(speci\256c)X
444542170(information)X
444552616(that)X
444562778(is)X
444572866(de\256ned)X
444583154(by)X
444593272(either)X
444603503(an)X
444613616(architecture)X
44462576 3692(speci\256c)N
44463868(ABI)X
444641041(authoring)X
444651401(committee,)X
444661819(a)X
444671880(hardware)X
444682228(vendor,)X
444692516(or)X
444702611(a)X
444712672(compiler)X
444723008(producer.)X
444733386(The)X
444743545(body)X
444753743(de\256ning)X
44476576 3796(a)N
44477637(speci\256c)X
44478928(augmentation)X
444791431(is)X
444801512(referred)X
444811811(to)X
444821902(below)X
444832139(as)X
444842234(the)X
444852364(``augmenter.'')X
44486576 3952(Abstractly,)N
44487987(this)X
444881137(mechanism)X
444891561(describes)X
444901910(a)X
444911971(very)X
444922149(large)X
444932347(table)X
444942541(that)X
444952696(has)X
444962835(the)X
444972965(following)X
444983330(structure:)X
444991460 4160(LOC)N
445001680(CFA)X
445011917(R0)X
445022086(R1)X
445032255(...)X
445042365(RN)X
445051460 4264(L0)N
445061460 4368(L1)N
445071460 4472(...)N
445081460 4576(LN)N
44509576 4784(The)N
44510748(\256rst)X
44511920(column)X
445121220(indicates)X
445131569(an)X
445141687(address)X
445151985(for)X
445162122(every)X
445172352(location)X
445182672(that)X
445192840(contains)X
445203170(code)X
445213372(in)X
445223477(a)X
445233552(program.)X
445243930(\(In)X
44525576 4888(shared)N
44526862(objects,)X
445271190(this)X
445281374(is)X
445291489(an)X
445301628(object-relative)X
445312194(offset.\))X
445322523(The)X
445332716(remaining)X
445343130(columns)X
445353485(contain)X
445363801(virtual)X
44537576 4992(unwinding)N
44538988(rules)X
445391194(that)X
445401362(are)X
445411504(associated)X
445421901(with)X
445432093(the)X
445442236(indicated)X
445452596(location.)X
445462961(The)X
445473134(\256rst)X
445483307(column)X
445493608(of)X
445503717(the)X
445513861(rules)X
44552576 5096(de\256nes)N
44553848(the)X
44554979(CFA)X
445551172(rule)X
445561331(which)X
445571568(is)X
445581649(a)X
445591710(register)X
445601996(and)X
445612145(a)X
445622206(signed)X
445632458(offset)X
445642680(that)X
445652835(are)X
445662964(added)X
445673196(together)X
445683507(to)X
445693598(compute)X
445703924(the)X
44571576 5200(CFA)N
44572769(value.)X
44573576 5356(The)N
44574743(remaining)X
445751131(columns)X
445761461(are)X
445771599(labeled)X
445781885(by)X
445792004(register)X
445802299(number.)X
445812643(This)X
445822831(includes)X
445833156(some)X
445843373(registers)X
445853702(that)X
445863866(have)X
44587576 5460(special)N
44588856(designation)X
445891298(on)X
445901421(some)X
445911642(architectures)X
445922127(such)X
445932323(as)X
445942431(the)X
445952574(PC)X
445962717(and)X
445972879(the)X
445983022(stack)X
445993238(pointer)X
446003523(register.)X
446013866(\(The)X
44602576 5564(actual)N
44603822(mapping)X
446041167(of)X
446051276(registers)X
446061610(for)X
446071748(a)X
446081823(particular)X
446092197(architecture)X
446102649(is)X
446112744(performed)X
446123146(by)X
446133270(the)X
446143414(augmenter.\))X
446153895(The)X
44616576 5668(register)N
44617867(columns)X
446181193(contain)X
446191480(rules)X
446201678(that)X
446211838(describe)X
446222158(whether)X
446232468(a)X
446242534(given)X
446252757(register)X
446263047(has)X
446273190(been)X
446283382(saved)X
446293608(and)X
446303761(the)X
446313895(rule)X
44632576 5772(to)N
44633667(\256nd)X
44634826(the)X
44635956(value)X
446361169(for)X
446371293(the)X
446381423(register)X
446391709(in)X
446401800(the)X
446411930(previous)X
446422255(frame.)X
4464310 s
44644576 5951(Revision:)N
44645902(2.0.0)X
446462176(Page)X
446472352(60)X
446483599(July)X
446493752(27,)X
446503872(1993)X
446511943 6055(Industry)N
446522230(Review)X
446532495(Draft)X
44654
4465561 p
44656%%Page: 61 63
446570(Courier)xf 0 f
4465810 s 0 xH 0 xS 0 f
4465911 s
446601 f
4466110 s
446623075 520(Programming)N
446633535(Languages)X
446643903(SIG)X
4466511 s
44666576 832(The)N
44667735(register)X
446681021(rules)X
446691214(are:)X
44670576 988(unde\256ned)N
446711451(A)X
446721551(register)X
446731852(that)X
446742022(has)X
446752176(this)X
446762341(rule)X
446772515(has)X
446782669(no)X
446792794(value)X
446803022(in)X
446813128(the)X
446823273(previous)X
446833613(frame.)X
446843900(\(By)X
446851456 1092(convention,)N
446861892(it)X
446871964(is)X
446882045(not)X
446892180(preserved)X
446902543(by)X
446912653(a)X
446922714(callee.\))X
44693576 1248(same)N
44694802(value)X
446951479(This)X
446961681(register)X
446971991(has)X
446982154(not)X
446992313(been)X
447002525(modi\256ed)X
447012885(from)X
447023102(the)X
447033256(previous)X
447043605(frame.)X
447053900(\(By)X
447061456 1352(convention,)N
447071897(it)X
447081974(is)X
447092060(preserved)X
447102428(by)X
447112543(the)X
447122677(callee,)X
447132931(but)X
447143070(the)X
447153204(callee)X
447163436(has)X
447173579(not)X
447183718(modi\256ed)X
447191456 1456(it.\))N
44720576 1612(offset\(N\))N
447211456(The)X
447221617(previous)X
447231944(value)X
447242159(of)X
447252256(this)X
447262408(register)X
447272696(is)X
447282779(saved)X
447293003(at)X
447303091(the)X
447313223(address)X
447323510(CFA+N)X
447333818(where)X
447341456 1716(CFA)N
447351649(is)X
447361730(the)X
447371860(current)X
447382131(CFA)X
447392324(value)X
447402537(and)X
447412686(N)X
447422771(is)X
447432852(a)X
447442913(signed)X
447453165(offset.)X
44746576 1872(register\(R\))N
447471456(The)X
447481616(previous)X
447491942(value)X
447502156(of)X
447512252(this)X
447522403(register)X
447532690(is)X
447542772(stored)X
447553011(in)X
447563104(another)X
447573392(register)X
447583680(numbered)X
447591456 1976(R.)N
44760576 2132(architectural)N
447611456(The)X
447621615(rule)X
447631774(is)X
447641855(de\256ned)X
447652136(externally)X
447662511(to)X
447672602(this)X
447682752(speci\256cation)X
447693220(by)X
447703330(the)X
447713460(augmenter.)X
447722 f
44773576 2288(This)N
44774756(table)X
44775961(would)X
447761205(be)X
447771316(extremely)X
447781686(large)X
447791900(if)X
447801978(actually)X
447812292(constructed)X
447822732(as)X
447832839(described.)X
447843254(Most)X
447853459(of)X
447863557(the)X
447873694(entries)X
447883963(at)X
44789576 2392(any)N
44790730(point)X
44791939(in)X
447921035(the)X
447931170(table)X
447941374(are)X
447951518(identical)X
447961855(to)X
447971951(the)X
447982086(ones)X
447992274(above)X
448002511(them.)X
448012753(The)X
448022912(whole)X
448033150(table)X
448043354(can)X
448053508(be)X
448063617(represented)X
44807576 2496(quite)N
44808795(compactly)X
448091199(by)X
448101324(recording)X
448111713(just)X
448121883(the)X
448132033(differences)X
448142462(starting)X
448152779(at)X
448162891(the)X
448173042(beginning)X
448183438(address)X
448193754(of)X
448203866(each)X
44821576 2600(subroutine)N
44822975(in)X
448231066(the)X
448241196(program.)X
448251 f
44826576 2756(The)N
44827742(virtual)X
448281003(unwind)X
448291297(information)X
448301744(is)X
448311833(encoded)X
448322156(in)X
448332255(a)X
448342324(self-contained)X
448352853(section)X
448363133(called)X
448370 f
448383374(.debug_frame)X
448391 f
448404010(.)X
44841576 2860(Entries)N
44842858(in)X
44843959(a)X
448440 f
448451030(.debug_frame)X
448461 f
448471698(section)X
448481980(are)X
448492119(aligned)X
448502411(on)X
448512530(an)X
448522644(addressing)X
448533051(unit)X
448543220(boundary)X
448553583(and)X
448563741(come)X
448573963(in)X
44858576 2964(two)N
44859733(forms:)X
44860988(A)X
448611076(Common)X
448621430(Information)X
448631877(Entry)X
448642099(\(CIE\))X
448652325(and)X
448662478(a)X
448672543(Frame)X
448682794(Description)X
448693231(Entry)X
448703453(\(FDE\).)X
448713747(Sizes)X
448723959(of)X
44873576 3068(data)N
44874753(objects)X
448751033(used)X
448761224(in)X
448771323(the)X
448781461(encoding)X
448791814(of)X
448801916(the)X
448810 f
448822053(.debug_frame)X
448831 f
448842718(section)X
448852997(are)X
448863133(described)X
448873499(in)X
448883597(terms)X
448893822(of)X
448903924(the)X
44891576 3172(same)N
44892779(data)X
44893948(de\256nitions)X
448941343(used)X
448951526(for)X
448961650(the)X
448971780(line)X
448981935(number)X
448992226(information)X
449002665(\(see)X
449012828(section)X
449023100(6.2.1\).)X
44903576 3328(A)N
44904666(Common)X
449051022(Information)X
449061470(Entry)X
449071693(holds)X
449081911(information)X
449092355(that)X
449102516(is)X
449112603(shared)X
449122860(among)X
449133128(many)X
449143352(Frame)X
449153605(Descriptors.)X
44916576 3432(There)N
44917818(is)X
44918914(at)X
449191015(least)X
449201214(one)X
449211378(CIE)X
449221557(in)X
449231663(every)X
449241895(non-empty)X
449250 f
449262314(.debug_frame)X
449271 f
449282987(section.)X
449293317(A)X
449303416(CIE)X
449313594(contains)X
449323924(the)X
44933576 3536(following)N
44934941(\256elds,)X
449351176(in)X
449361267(order:)X
44937642 3692(1.)N
449380 f
44939796(length)X
449401 f
44941796 3796(A)N
44942891(uword)X
449431147(constant)X
449441473(that)X
449451639(gives)X
449461858(the)X
449471999(number)X
449482301(of)X
449492407(bytes)X
449502626(of)X
449512732(the)X
449522873(CIE)X
449533048(structure,)X
449543411(not)X
449553557(including)X
449563924(the)X
44957796 3900(length)N
449581039(\256eld,)X
449591240(itself)X
449601439(\(length)X
449611711(mod)X
449621890(<addressing)X
449632338(unit)X
449642498(size>)X
449652707(==)X
449662829(0\).)X
44967642 4056(2.)N
449680 f
44969796(CIE_id)X
449701 f
44971796 4160(A)N
44972881(uword)X
449731127(constant)X
449741443(that)X
449751598(is)X
449761679(used)X
449771862(to)X
449781953(distinguish)X
449792363(CIEs)X
449802561(from)X
449812754(FDEs.)X
44982642 4316(3.)N
449830 f
44984796(version)X
449851 f
44986796 4420(A)N
44987897(ubyte)X
449881131(version)X
449891428(number.)X
449901779(This)X
449911974(number)X
449922281(is)X
449932378(speci\256c)X
449942685(to)X
449952793(the)X
449962940(call)X
449973107(frame)X
449983351(information)X
449993807(and)X
450003973(is)X
45001796 4524(independent)N
450021249(of)X
450031344(the)X
450041474(DWARF)X
450051813(version)X
450062094(number.)X
45007642 4680(4.)N
450080 f
45009796(augmentation)X
450101 f
45011796 4784(A)N
45012882(null)X
450131043(terminated)X
450141444(string)X
450151668(that)X
450161824(identi\256es)X
450172171(the)X
450182302(augmentation)X
450192806(to)X
450202898(this)X
450213049(CIE)X
450223214(or)X
450233310(to)X
450243402(the)X
450253534(FDEs)X
450263758(that)X
450273915(use)X
45028796 4888(it.)N
45029940(If)X
450301048(a)X
450311137(reader)X
450321406(encounters)X
450331837(an)X
450341970(augmentation)X
450352501(string)X
450362752(that)X
450372935(is)X
450383044(unexpected,)X
450393517(then)X
450403718(only)X
450413924(the)X
45042796 4992(following)N
450431183(\256elds)X
450441418(can)X
450451584(be)X
450461711(read:)X
450471953(CIE:)X
450480 f
450492164(length)X
450501 f
450512482(,)X
450520 f
450532548(CIE_id)X
450541 f
450552866(,)X
450560 f
450572933(version)X
450581 f
450593304(,)X
450600 f
450613371(augmentation)X
450621 f
450634007(;)X
45064796 5096(FDE:)N
450650 f
450661035(length)X
450671 f
450681353(,)X
450690 f
450701401(CIE_pointer)X
450711 f
450721984(,)X
450730 f
450742032(initial_location)X
450751 f
450762880(,)X
450770 f
450782928(address_range)X
450791 f
450803617(.)X
450813687(If)X
450823771(there)X
450833973(is)X
45084796 5200(no)N
45085906(augmentation,)X
450861431(this)X
450871581(value)X
450881794(is)X
450891875(a)X
450901936(zero)X
450912109(byte.)X
45092642 5356(5.)N
450930 f
45094796 0.1969(code_alignment_factor)AX
450951 f
45096796 5460(An)N
45097928(unsigned)X
450981272(LEB128)X
450991597(constant)X
451001917(that)X
451012076(is)X
451022161(factored)X
451032475(out)X
451042614(of)X
451052713(all)X
451062828(advance)X
451073142(location)X
451083453(instructions)X
451093891(\(see)X
45110796 5564(below\).)N
45111642 5720(6.)N
451120 f
45113796 0.1969(data_alignment_factor)AX
451141 f
45115796 5824(A)N
45116881(signed)X
451171133(LEB128)X
451181454(constant)X
451191770(that)X
451201925(is)X
451212006(factored)X
451222316(out)X
451232451(of)X
451242546(all)X
451252657(offset)X
451262879(instructions)X
451273313(\(see)X
451283476(below.\))X
4512910 s
45130576 5951(Revision:)N
45131902(2.0.0)X
451322176(Page)X
451332352(61)X
451343599(July)X
451353752(27,)X
451363872(1993)X
451371943 6055(Industry)N
451382230(Review)X
451392495(Draft)X
45140
4514162 p
45142%%Page: 62 64
451430(Courier)xf 0 f
4514410 s 0 xH 0 xS 0 f
4514511 s
451461 f
4514710 s
45148576 520(DWARF)N
45149885(Debugging)X
451501261(Information)X
451511664(Format)X
4515211 s
45153642 832(7.)N
451540 f
45155796 0.1960(return_address_register)AX
451561 f
45157796 936(A)N
45158882(ubyte)X
451591101(constant)X
451601418(that)X
451611575(indicates)X
451621913(which)X
451632152(column)X
451642441(in)X
451652534(the)X
451662666(rule)X
451672827(table)X
451683023(represents)X
451693403(the)X
451703535(return)X
451713769(address)X
45172796 1040(of)N
45173891(the)X
451741021(function.)X
451751381(Note)X
451761574(that)X
451771729(this)X
451781879(column)X
451792166(might)X
451802395(not)X
451812530(correspond)X
451822942(to)X
451833033(an)X
451843138(actual)X
451853371(machine)X
451863692(register.)X
45187642 1196(8.)N
451880 f
45189796 0.1974(initial_instructions)AX
451901 f
45191796 1300(A)N
45192888(sequence)X
451931239(of)X
451941342(rules)X
451951543(that)X
451961706(are)X
451971843(interpreted)X
451982255(to)X
451992354(create)X
452002594(the)X
452012732(initial)X
452022970(setting)X
452033236(of)X
452043339(each)X
452053530(column)X
452063825(in)X
452073924(the)X
45208796 1404(table.)N
45209642 1560(9.)N
452100 f
45211796(padding)X
452121 f
45213796 1664(Enough)N
452140 f
452151093(DW_CFA_nop)X
452161 f
452171646(instructions)X
452182081(to)X
452192173(make)X
452202387(the)X
452212518(size)X
452222678(of)X
452232774(this)X
452242925(entry)X
452253129(match)X
452263368(the)X
452270 f
452283499(length)X
452291 f
452303841(value)X
45231796 1768(above.)N
45232576 1924(An)N
45233705(FDE)X
45234893(contains)X
452351209(the)X
452361339(following)X
452371704(\256elds,)X
452381939(in)X
452392030(order:)X
45240642 2080(1.)N
452410 f
45242796(length)X
452431 f
45244796 2184(A)N
45245888(uword)X
452461141(constant)X
452471464(that)X
452481626(gives)X
452491841(the)X
452501978(number)X
452512276(of)X
452522379(bytes)X
452532595(of)X
452542698(the)X
452552836(header)X
452563100(and)X
452573257(instruction)X
452583665(stream)X
452593930(for)X
45260796 2288(this)N
45261954(function)X
452621278(\(not)X
452631450(including)X
452641814(the)X
452651952(length)X
452662203(\256eld)X
452672390(itself\))X
452682626(\(length)X
452692906(mod)X
452703093(<addressing)X
452713549(unit)X
452723716(size>)X
452733932(==)X
45274796 2392(0\).)N
45275642 2548(2.)N
452760 f
45277796(CIE_pointer)X
452781 f
45279796 2652(A)N
45280895(uword)X
452811155(constant)X
452821486(offset)X
452831723(into)X
452841898(the)X
452850 f
452862043(.debug_frame)X
452871 f
452882716(section)X
452893003(that)X
452903173(denotes)X
452913479(the)X
452923624(CIE)X
452933803(that)X
452943973(is)X
45295796 2756(associated)N
452961180(with)X
452971359(this)X
452981509(FDE.)X
45299642 2912(3.)N
453000 f
45301796(initial_location)X
453021 f
453031666(An)X
453041795(addressing-unit)X
453052360(sized)X
453062563(constant)X
453072879(indicating)X
453083255(the)X
453093385(address)X
453103670(of)X
453113765(the)X
453123895(\256rst)X
45313796 3016(location)N
453141103(associated)X
453151487(with)X
453161666(this)X
453171816(table)X
453182010(entry.)X
45319642 3172(4.)N
453200 f
45321796(address_range)X
453221 f
45323796 3276(An)N
45324933(addressing)X
453251339(unit)X
453261507(sized)X
453271718(constant)X
453282042(indicating)X
453292427(the)X
453302566(number)X
453312866(of)X
453322970(bytes)X
453333187(of)X
453343291(program)X
453353620(instructions)X
45336796 3380(described)N
453371155(by)X
453381265(this)X
453391415(entry.)X
45340642 3536(5.)N
453410 f
45342796(instructions)X
453431 f
45344796 3640(A)N
45345881(sequence)X
453461225(of)X
453471320(table)X
453481514(de\256ning)X
453491825(instructions)X
453502259(that)X
453512414(are)X
453522543(described)X
453532902(below.)X
453543 f
45355576 3796(6.4.2)N
45356796(Call)X
45357975(Frame)X
453581246(Instructions)X
453591 f
45360576 3952(Each)N
45361778(call)X
45362932(frame)X
453631163(instruction)X
453641567(is)X
453651652(de\256ned)X
453661937(to)X
453672032(take)X
453682205(0)X
453692275(or)X
453702374(more)X
453712581(operands.)X
453722968(Some)X
453733195(of)X
453743294(the)X
453753428(operands)X
453763771(may)X
453773949(be)X
45378576 4056(encoded)N
45379891(as)X
45380986(part)X
453811145(of)X
453821240(the)X
453831370(opcode)X
453841646(\(see)X
453851809(section)X
453862081(7.23\).)X
453872330(The)X
453882489(instructions)X
453892923(are)X
453903052(as)X
453913147(follows:)X
45392642 4212(1.)N
453930 f
45394796 0.1985(DW_CFA_advance_loc)AX
453951 f
453961784(takes)X
453971999(a)X
453982072(single)X
453992317(argument)X
454002684(that)X
454012851(represents)X
454023241(a)X
454033315(constant)X
454043644(delta.)X
454053895(The)X
45406796 4316(required)N
454071112(action)X
454081350(is)X
454091431(to)X
454101522(create)X
454111754(a)X
454121815(new)X
454131983(table)X
454142177(row)X
454152335(with)X
454162514(a)X
454172575(location)X
454182882(value)X
454193095(that)X
454203250(is)X
454213331(computed)X
454223701(by)X
454233811(taking)X
45424796 4420(the)N
45425943(current)X
454261231(entry's)X
454271514(location)X
454281838(value)X
454292068(and)X
454302234(adding)X
454312513(\(delta)X
454322753(*)X
454330 f
454342868 0.1969(code_alignment_factor)AX
454351 f
454363981(\).)X
45437796 4524(All)N
45438931(other)X
454391134(values)X
454401381(in)X
454411472(the)X
454421602(new)X
454431770(row)X
454441928(are)X
454452057 0.4141(initially)AX
454462356(identical)X
454472683(to)X
454482774(the)X
454492904(current)X
454503175(row.)X
45451642 4680(2.)N
454520 f
45453796(DW_CFA_offset)X
454541 f
454551526(takes)X
454561748(two)X
454571921(arguments:)X
454582354(an)X
454592479(unsigned)X
454602839(LEB128)X
454613180(constant)X
454623516(representing)X
454633993(a)X
45464796 4784(factored)N
454651120(offset)X
454661356(and)X
454671518(a)X
454681592(register)X
454691891(number.)X
454702239(The)X
454712411(required)X
454722739(action)X
454732990(is)X
454743084(to)X
454753188(change)X
454763472(the)X
454773615(rule)X
454783787(for)X
454793924(the)X
45480796 4888(register)N
454811099(indicated)X
454821462(by)X
454831589(the)X
454841736(register)X
454852039(number)X
454862347(to)X
454872455(be)X
454882577(an)X
454892699(offset\(N\))X
454903059(rule)X
454913235(with)X
454923431(a)X
454933509(value)X
454943739(of)X
454953851(\(N)X
454963982(=)X
45497796 4992(factored)N
454981106(offset)X
454991328(*)X
455000 f
455011425 0.1969(data_alignment_factor)AX
455021 f
455032538(\).)X
45504642 5148(3.)N
455050 f
45506796(DW_CFA_restore)X
455071 f
455081586(takes)X
455091815(a)X
455101903(single)X
455112163(argument)X
455122545(that)X
455132727(represents)X
455143132(a)X
455153220(register)X
455163533(number.)X
455173895(The)X
45518796 5252(required)N
455191116(action)X
455201359(is)X
455211444(to)X
455221539(change)X
455231814(the)X
455241948(rule)X
455252111(for)X
455262239(the)X
455272373(indicated)X
455282723(register)X
455293013(to)X
455303108(the)X
455313242(rule)X
455323405(assigned)X
455333734(it)X
455343810(by)X
455353924(the)X
455360 f
45537796 5356 0.1974(initial_instructions)AN
455381 f
455391878(in)X
455401969(the)X
455412099(CIE.)X
45542642 5512(4.)N
455430 f
45544796(DW_CFA_set_loc)X
455451 f
455461580(takes)X
455471803(a)X
455481884(single)X
455492137(argument)X
455502512(that)X
455512687(represents)X
455523085(an)X
455533210(address.)X
455543559(The)X
455553739(required)X
45556796 5616(action)N
455571046(is)X
455581139(to)X
455591242(create)X
455601486(a)X
455611558(new)X
455621737(table)X
455631942(row)X
455642111(using)X
455652335(the)X
455662476(speci\256ed)X
455672822(address)X
455683118(as)X
455693224(the)X
455703365(location.)X
455713705(All)X
455723851(other)X
45573796 5720(values)N
455741054(in)X
455751156(the)X
455761297(new)X
455771476(row)X
455781645(are)X
455791785 0.4141(initially)AX
455802095(identical)X
455812433(to)X
455822535(the)X
455832676(current)X
455842958(row.)X
455853171(The)X
455863342(new)X
455873522(location)X
455883841(value)X
45589796 5824(should)N
455901053(always)X
455911319(be)X
455921424(greater)X
455931690(than)X
455941864(the)X
455951994(current)X
455962265(one.)X
4559710 s
45598576 5951(Revision:)N
45599902(2.0.0)X
456002176(Page)X
456012352(62)X
456023599(July)X
456033752(27,)X
456043872(1993)X
456051943 6055(Industry)N
456062230(Review)X
456072495(Draft)X
45608
4560963 p
45610%%Page: 63 65
456110(Courier)xf 0 f
4561210 s 0 xH 0 xS 0 f
4561311 s
456141 f
4561510 s
456163075 520(Programming)N
456173535(Languages)X
456183903(SIG)X
4561911 s
45620642 832(5.)N
456210 f
45622796 0.1979(DW_CFA_advance_loc1)AX
456231 f
456241828(takes)X
456252034(a)X
456262098(single)X
456272334(ubyte)X
456282555(argument)X
456292913(that)X
456303071(represents)X
456313453(a)X
456323518(constant)X
456333838(delta.)X
45634796 936(This)N
45635980(instruction)X
456361384(is)X
456371469(identical)X
456381800(to)X
456390 f
456401895 0.1985(DW_CFA_advance_loc)AX
456411 f
456422875(except)X
456433131(for)X
456443259(the)X
456453393(encoding)X
456463742(and)X
456473895(size)X
45648796 1040(of)N
45649891(the)X
456501021(delta)X
456511215(argument.)X
45652642 1196(6.)N
456530 f
45654796 0.1979(DW_CFA_advance_loc2)AX
456551 f
456561829(takes)X
456572036(a)X
456582102(single)X
456592340(uhalf)X
456602548(argument)X
456612908(that)X
456623068(represents)X
456633451(a)X
456643517(constant)X
456653838(delta.)X
45666796 1300(This)N
45667980(instruction)X
456681384(is)X
456691469(identical)X
456701800(to)X
456710 f
456721895 0.1985(DW_CFA_advance_loc)AX
456731 f
456742875(except)X
456753131(for)X
456763259(the)X
456773393(encoding)X
456783742(and)X
456793895(size)X
45680796 1404(of)N
45681891(the)X
456821021(delta)X
456831215(argument.)X
45684642 1560(7.)N
456850 f
45686796 0.1979(DW_CFA_advance_loc4)AX
456871 f
456881825(takes)X
456892028(a)X
456902089(single)X
456912322(uword)X
456922568(argument)X
456932924(that)X
456943080(represents)X
456953459(a)X
456963521(constant)X
456973838(delta.)X
45698796 1664(This)N
45699980(instruction)X
457001384(is)X
457011469(identical)X
457021800(to)X
457030 f
457041895 0.1985(DW_CFA_advance_loc)AX
457051 f
457062875(except)X
457073131(for)X
457083259(the)X
457093393(encoding)X
457103742(and)X
457113895(size)X
45712796 1768(of)N
45713891(the)X
457141021(delta)X
457151215(argument.)X
45716642 1924(8.)N
457170 f
45718796 0.1964(DW_CFA_offset_extended)AX
457191 f
457202004(takes)X
457212227(two)X
457222402(unsigned)X
457232763(LEB128)X
457243105(arguments)X
457253515(representing)X
457263993(a)X
45727796 2028(register)N
457281092(number)X
457291393(and)X
457301552(a)X
457311623(factored)X
457321943(offset.)X
457332219(This)X
457342408(instruction)X
457352817(is)X
457362907(identical)X
457373243(to)X
457380 f
457393343(DW_CFA_offset)X
457401 f
45741796 2132(except)N
457421048(for)X
457431172(the)X
457441302(encoding)X
457451647(and)X
457461796(size)X
457471955(of)X
457482050(the)X
457492180(register)X
457502466(argument.)X
45751642 2288(9.)N
457520 f
45753796 0.1960(DW_CFA_restore_extended)AX
457541 f
457552086(takes)X
457562339(a)X
457572450(single)X
457582733(unsigned)X
457593123(LEB128)X
457603494(argument)X
457613899(that)X
45762796 2392(represents)N
457631185(a)X
457641257(register)X
457651554(number.)X
457661900(This)X
457672089(instruction)X
457682499(is)X
457692590(identical)X
457702927(to)X
457710 f
457723028(DW_CFA_restore)X
457731 f
457743802(except)X
45775796 2496(for)N
45776920(the)X
457771050(encoding)X
457781395(and)X
457791544(size)X
457801703(of)X
457811798(the)X
457821928(register)X
457832214(argument.)X
45784598 2652(10.)N
457850 f
45786796(DW_CFA_undefined)X
457871 f
457881697(takes)X
457891931(a)X
457902023(single)X
457912287(unsigned)X
457922658(LEB128)X
457933010(argument)X
457943396(that)X
457953583(represents)X
457963993(a)X
45797796 2756(register)N
457981109(number.)X
457991471(The)X
458001657(required)X
458011999(action)X
458022264(is)X
458032372(to)X
458042490(set)X
458052637(the)X
458062794(rule)X
458072980(for)X
458083131(the)X
458093288(speci\256ed)X
458103650(register)X
458113963(to)X
45812796 2860(``unde\256ned.'')N
45813598 3016(11.)N
458140 f
45815796 0.1992(DW_CFA_same_value)AX
458161 f
458171744(takes)X
458181972(a)X
458192058(single)X
458202316(unsigned)X
458212681(LEB128)X
458223027(argument)X
458233408(that)X
458243589(represents)X
458253993(a)X
45826796 3120(register)N
458271090(number.)X
458281433(The)X
458291600(required)X
458301923(action)X
458312169(is)X
458322258(to)X
458332357(set)X
458342485(the)X
458352623(rule)X
458362790(for)X
458372922(the)X
458383060(speci\256ed)X
458393402(register)X
458403695(to)X
458413793(``same)X
45842796 3224(value.'')N
45843598 3380(12.)N
458440 f
45845796(DW_CFA_register)X
458461 f
458471654(takes)X
458481898(two)X
458492093(unsigned)X
458502475(LEB128)X
458512838(arguments)X
458523269(representing)X
458533768(register)X
45854796 3484(numbers.)N
458551185(The)X
458561363(required)X
458571697(action)X
458581954(is)X
458592054(to)X
458602164(set)X
458612303(the)X
458622452(rule)X
458632630(for)X
458642773(the)X
458652922(\256rst)X
458663100(register)X
458673405(to)X
458683515(be)X
458693639(the)X
458703788(second)X
45871796 3588(register.)N
45872598 3744(13.)N
458730 f
45874796 0.1969(DW_CFA_remember_state)AX
458751 f
45876598 3900(14.)N
458770 f
45878796 0.1974(DW_CFA_restore_state)AX
458791 f
45880796 4004(These)N
458811138(instructions)X
458821682(de\256ne)X
458832030(a)X
458842202(stack)X
458852516(of)X
458862722(information.)X
458873316(Encountering)X
458883924(the)X
458890 f
45890796 4108 0.1969(DW_CFA_remember_state)AN
458911 f
458921933(instruction)X
458932335(means)X
458942584(to)X
458952677(save)X
458962857(the)X
458972989(rules)X
458983183(for)X
458993308(every)X
459003526(register)X
459013813(on)X
459023924(the)X
45903796 4212(current)N
459041096(row)X
459051283(on)X
459061422(the)X
459071581(stack.)X
459081857(Encountering)X
459092383(the)X
459100 f
459112542 0.1974(DW_CFA_restore_state)AX
459121 f
459133654(instruction)X
45914796 4316(means)N
459151063(to)X
459161174(pop)X
459171348(the)X
459181498(set)X
459191638(of)X
459201753(rules)X
459211966(off)X
459222110(the)X
459232260(stack)X
459242483(and)X
459252652(place)X
459262880(them)X
459273099(in)X
459283210(the)X
459293360(current)X
459303651(row.)X
459312 f
459323851(\(This)X
45933796 4420(operation)N
459341161(is)X
459351242(useful)X
459361475(for)X
459371600(compilers)X
459381969(that)X
459392129(move)X
459402336(epilogue)X
459412662(code)X
459422850(into)X
459433010(the)X
459443140(body)X
459453333(of)X
459463424(a)X
459473490(function.\))X
459481 f
45949598 4576(15.)N
459500 f
45951796(DW_CFA_def_cfa)X
459521 f
459531595(takes)X
459541833(two)X
459552022(unsigned)X
459562397(LEB128)X
459572753(arguments)X
459583178(representing)X
459593671(a)X
459603768(register)X
45961796 4680(number)N
459621101(and)X
459631264(an)X
459641383(offset.)X
459651663(The)X
459661836(required)X
459672164(action)X
459682415(is)X
459692509(to)X
459702613(de\256ne)X
459712863(the)X
459723006(current)X
459733290(CFA)X
459743496(rule)X
459753668(to)X
459763772(use)X
459773924(the)X
45978796 4784(provided)N
459791131(register)X
459801417(and)X
459811566(offset.)X
45982598 4940(16.)N
459830 f
45984796 0.1960(DW_CFA_def_cfa_register)AX
459851 f
459862043(takes)X
459872252(a)X
459882320(single)X
459892560(unsigned)X
459902907(LEB128)X
459913235(argument)X
459923597(representing)X
45993796 5044(a)N
45994858(register)X
459951145(number.)X
459961481(The)X
459971641(required)X
459981957(action)X
459992196(is)X
460002278(to)X
460012369(de\256ne)X
460022606(the)X
460032736(current)X
460043007(CFA)X
460053200(rule)X
460063359(to)X
460073450(use)X
460083589(the)X
460093719(provided)X
46010796 5148(register)N
460111082(\(but)X
460121246(to)X
460131337(keep)X
460141525(the)X
460151655(old)X
460161790(offset\).)X
46017598 5304(17.)N
460180 f
46019796 0.1969(DW_CFA_def_cfa_offset)AX
460201 f
460211937(takes)X
460222146(a)X
460232213(single)X
460242452(unsigned)X
460252798(LEB128)X
460263125(argument)X
460273486(representing)X
460283949(an)X
46029796 5408(offset.)N
460301065(The)X
460311227(required)X
460321545(action)X
460331786(is)X
460341870(to)X
460351963(de\256ne)X
460362202(the)X
460372334(current)X
460382607(CFA)X
460392802(rule)X
460402963(to)X
460413056(use)X
460423197(the)X
460433329(provided)X
460443666(offset)X
460453890(\(but)X
46046796 5512(to)N
46047887(keep)X
460481075(the)X
460491205(old)X
460501340(register\).)X
46051598 5668(18.)N
460520 f
46053796(DW_CFA_nop)X
460541 f
460551348(has)X
460561487(no)X
460571597(arguments)X
460581986(and)X
460592135(no)X
460602245(required)X
460612560(actions.)X
460622876(It)X
460632952(is)X
460643033(used)X
460653216(as)X
460663311(padding)X
460673618(to)X
460683710(make)X
460693924(the)X
46070796 5772(FDE)N
46071984(an)X
460721089(appropriate)X
460731512(size.)X
4607410 s
46075576 5951(Revision:)N
46076902(2.0.0)X
460772176(Page)X
460782352(63)X
460793599(July)X
460803752(27,)X
460813872(1993)X
460821943 6055(Industry)N
460832230(Review)X
460842495(Draft)X
46085
4608664 p
46087%%Page: 64 66
460880(Courier)xf 0 f
4608910 s 0 xH 0 xS 0 f
4609011 s
460911 f
4609210 s
46093576 520(DWARF)N
46094885(Debugging)X
460951261(Information)X
460961664(Format)X
460973 f
4609811 s
46099576 832(6.4.3)N
46100796(Call)X
46101975(Frame)X
461021246(Instruction)X
461031688(Usage)X
461042 f
46105576 988(To)N
46106692(determine)X
461071067(the)X
461081198(virtual)X
461091457(unwind)X
461101740(rule)X
461111905(set)X
461122026(for)X
461132152(a)X
461142219(given)X
461152433(location)X
461162747(\(L1\),)X
461172944(one)X
461183095(searches)X
461193426(through)X
461203729(the)X
461213861(FDE)X
46122576 1092(headers)N
46123893(looking)X
461241197(at)X
461251305(the)X
461260 f
461271451(initial_location)X
461282 f
461292337(and)X
461300 f
461312507(address_range)X
461322 f
461333234(values)X
461343497(to)X
461353604(see)X
461363754(if)X
461373842(L1)X
461383973(is)X
46139576 1196(contained)N
46140946(in)X
461411037(the)X
461421167(FDE.)X
461431404(If)X
461441480(so,)X
461451602(then:)X
46146642 1352(1.)N
46147796(Initialize)X
461481136(a)X
461491205(register)X
461501504(set)X
461511627(by)X
461521735(reading)X
461532034(the)X
461540 f
461552167 0.1974(initial_instructions)AX
461562 f
461573253(\256eld)X
461583431(of)X
461593526(the)X
461603660(associated)X
46161796 1456(CIE.)N
46162642 1612(2.)N
46163796(Read)X
461641024(and)X
461651203(process)X
461661518(the)X
461671673(FDE's)X
461681954(instruction)X
461692384(sequence)X
461702753(until)X
461712964(a)X
461720 f
461733056 0.1985(DW_CFA_advance_loc)AX
461742 f
461754010(,)X
461760 f
46177796 1716(DW_CFA_set_loc)N
461782 f
461791538(,)X
461801582(or)X
461811682(the)X
461821812(end)X
461831961(of)X
461842052(the)X
461852182(instruction)X
461862587(stream)X
461872848(is)X
461882929(encountered.)X
46189642 1872(3.)N
46190796(If)X
46191879(a)X
461920 f
46193952 0.1985(DW_CFA_advance_loc)AX
461942 f
461951935(or)X
461960 f
461972042(DW_CFA_set_loc)X
461982 f
461992813(instruction)X
462003226(was)X
462013393(encountered,)X
462023880(then)X
46203796 1976(compute)N
462041121(a)X
462051192(new)X
462061361(location)X
462071678(value)X
462081896(\(L2\).)X
462092117(If)X
462102197(L1)X
462112316(>=)X
462122460(L2)X
462132579(then)X
462142757(process)X
462153051(the)X
462163185(instruction)X
462173594(and)X
462183752(go)X
462193866(back)X
46220796 2080(to)N
46221887(step)X
462221051(2.)X
46223642 2236(4.)N
46224796(The)X
46225950(end)X
462261099(of)X
462271190(the)X
462281320(instruction)X
462291725(stream)X
462301986(can)X
462312135(be)X
462322240(thought)X
462332532(of)X
462342623(as)X
462352723(a)X
462360 f
46237796 2340(DW_CFA_set_loc\()N
462381644(initial_location)X
462392545(+)X
462402651(address_range)X
462413393(\))X
462422 f
46243796 2444(instruction.)N
462441223(Unless)X
462451484(the)X
462461614(FDE)X
462471807(is)X
462481888(ill-formed,)X
462492285(L1)X
462502400(should)X
462512657(be)X
462522762(less)X
462532916(than)X
462543095(L2)X
462553210(at)X
462563301(this)X
462573451(point.)X
46258576 2600(The)N
46259730(rules)X
46260928(in)X
462611019(the)X
462621149(register)X
462631445(set)X
462641565(now)X
462651734(apply)X
462661952(to)X
462672043(location)X
462682355(L1.)X
46269576 2756(For)N
46270730(an)X
46271840(example,)X
462721177(see)X
462731311(Appendix)X
462741666(5.)X
462751 f
4627610 s
46277576 5951(Revision:)N
46278902(2.0.0)X
462792176(Page)X
462802352(64)X
462813599(July)X
462823752(27,)X
462833872(1993)X
462841943 6055(Industry)N
462852230(Review)X
462862495(Draft)X
46287
4628865 p
46289%%Page: 65 67
462900(Courier)xf 0 f
4629110 s 0 xH 0 xS 0 f
4629211 s
462931 f
4629410 s
462953075 520(Programming)N
462963535(Languages)X
462973903(SIG)X
462983 f
4629912 s
46300576 832(7.)N
46301696(DATA)X
46302991(REPRESENTATION)X
463031 f
4630411 s
46305576 988(This)N
46306760(section)X
463071037(describes)X
463081391(the)X
463091526(binary)X
463101778(representation)X
463112305(of)X
463122406(the)X
463132542(debugging)X
463142942(information)X
463153387(entry)X
463163596(itself,)X
463173823(of)X
463183924(the)X
46319576 1092(attribute)N
46320893(types)X
463211101(and)X
463221250(of)X
463231345(other)X
463241548(fundamental)X
463252011(elements)X
463262347(described)X
463272706(above.)X
463283 f
4632912 s
46330576 1248(7.1)N
46331744(Vendor)X
463321077(Extensibility)X
463331 f
4633411 s
46335576 1404(To)N
46336705(reserve)X
46337990(a)X
463381061(portion)X
463391348(of)X
463401453(the)X
463411593(DWARF)X
463421942(name)X
463432165(space)X
463442392(and)X
463452551(ranges)X
463462812(of)X
463472917(enumeration)X
463483390(values)X
463493647(for)X
463503781(use)X
463513930(for)X
46352576 1508(vendor)N
46353850(speci\256c)X
463541149(extensions,)X
463551573(special)X
463561848(labels)X
463572084(are)X
463582221(reserved)X
463592548(for)X
463602680(tag)X
463612818(names,)X
463623095(attribute)X
463633419(names,)X
463643695(base)X
463653880(type)X
46366576 1612(encodings,)N
46367982(location)X
463681294(operations,)X
463691710(language)X
463702056(names,)X
463712331(calling)X
463722600(conventions)X
463733054(and)X
463743209(call)X
463753365(frame)X
463763598(instructions.)X
46377576 1716(The)N
46378757(labels)X
463791007(denoting)X
463801360(the)X
463811512(beginning)X
463821909(and)X
463832080(end)X
463842251(of)X
463852368(the)X
463862519(reserved)X
463872859(value)X
463883093(range)X
463893331(for)X
463903476(vendor)X
463913763(speci\256c)X
46392576 1820(extensions)N
46393973(consist)X
463941243(of)X
463951341(the)X
463961474(appropriate)X
463971900(pre\256x)X
463982130(\()X
463990 f
464002184(DW_TAG)X
464011 f
464022502(,)X
464030 f
464042549(DW_AT)X
464051 f
464062814(,)X
464070 f
464082861(DW_ATE)X
464091 f
464103179(,)X
464110 f
464123227(DW_OP)X
464131 f
464143492(,)X
464150 f
464163540(DW_LANG)X
464171 f
464183911(,)X
464193959(or)X
464200 f
46421576 1924(DW_CFA)N
464221 f
46423921(respectively\))X
464241403(followed)X
464251743(by)X
464260 f
464271858(_lo_user)X
464281 f
464292309(or)X
464300 f
464312409(_hi_user)X
464321 f
464332833(.)X
464342904(For)X
464353052(example,)X
464363399(for)X
464373527(entry)X
464383734(tags,)X
464393924(the)X
46440576 2028(special)N
46441854(labels)X
464421093(are)X
464430 f
464441233(DW_TAG_lo_user)X
464451 f
464462008(and)X
464470 f
464482168(DW_TAG_hi_user)X
464491 f
464502910(.)X
464512987(Values)X
464523265(in)X
464533368(the)X
464543510(range)X
464553739(between)X
464562 f
46457576 2132(pre\256x)N
464580 f
46459776(_lo_user)X
464601 f
464611237(and)X
464622 f
464631401(pre\256x)X
464640 f
464651601(_hi_user)X
464661 f
464672062(inclusive,)X
464682439(are)X
464692582(reserved)X
464702915(for)X
464713053(vendor)X
464723333(speci\256c)X
464733638(extensions.)X
46474576 2236(Vendors)N
46475904(may)X
464761087(use)X
464771235(values)X
464781491(in)X
464791591(this)X
464801750(range)X
464811976(without)X
464822277(con\257icting)X
464832686(with)X
464842874(current)X
464853154(or)X
464863258(future)X
464873499(system-de\256ned)X
46488576 2340(values.)N
46489867(All)X
464901002(other)X
464911205(values)X
464921452(are)X
464931581(reserved)X
464941900(for)X
464952024(use)X
464962163(by)X
464972273(the)X
464982403(system.)X
46499576 2496(Vendor)N
46500876(de\256ned)X
465011172(tags,)X
465021373(attributes,)X
465031761(base)X
465041954(type)X
465052143(encodings,)X
465062559(location)X
465072881(atoms,)X
465083151(language)X
465093506(names,)X
465103791(calling)X
46511576 2600(conventions)N
465121040(and)X
465131205(call)X
465141371(frame)X
465151614(instructions,)X
465162086(conventionally)X
465172649(use)X
465182804(the)X
465192949(form)X
465202 f
465213157(pre\256x)X
465220 f
465233357(_)X
465242 f
465253410(vendor_id)X
465260 f
465273767(_)X
465282 f
465293820(name)X
465301 f
465314010(,)X
46532576 2704(where)N
465332 f
46534812(vendor_id)X
465351 f
465361191(is)X
465371272(some)X
465381480(identifying)X
465391890(character)X
465402234(sequence)X
465412578(chosen)X
465422844(so)X
465432944(as)X
465443039(to)X
465453130(avoid)X
465463349(con\257icts)X
465473671(with)X
465483851(other)X
46549576 2808(vendors.)N
46550576 2964(To)N
46551701(ensure)X
46552957(that)X
465531117(extensions)X
465541516(added)X
465551753(by)X
465561869(one)X
465572024(vendor)X
465582296(may)X
465592476(be)X
465602587(safely)X
465612825(ignored)X
465623122(by)X
465633238(consumers)X
465643642(that)X
465653803(do)X
465663919(not)X
46567576 3068(understand)N
46568984(those)X
465691192(extensions,)X
465701608(the)X
465711738(following)X
465722103(rules)X
465732296(should)X
465742553(be)X
465752658(followed:)X
46576642 3224(1.)N
46577796(New)X
46578985(attributes)X
465791338(should)X
465801597(be)X
465811704(added)X
465821938(in)X
465832031(such)X
465842216(a)X
465852279(way)X
465862449(that)X
465872606(a)X
465882670(debugger)X
465893022(may)X
465903199(recognize)X
465913566(the)X
465923699(format)X
465933959(of)X
46594796 3328(a)N
46595857(new)X
465961025(attribute)X
465971342(value)X
465981555(without)X
465991847(knowing)X
466002177(the)X
466012307(content)X
466022589(of)X
466032684(that)X
466042839(attribute)X
466053156(value.)X
46606642 3484(2.)N
46607796(The)X
46608963(semantics)X
466091341(of)X
466101444(any)X
466111601(new)X
466121777(attributes)X
466132136(should)X
466142401(not)X
466152544(alter)X
466162731(the)X
466172869(semantics)X
466183247(of)X
466193350(previously)X
466203752(existing)X
46621796 3588(attributes.)N
46622642 3744(3.)N
46623796(The)X
46624955(semantics)X
466251325(of)X
466261420(any)X
466271569(new)X
466281737(tags)X
466291901(should)X
466302158(not)X
466312293(con\257ict)X
466322580(with)X
466332759(the)X
466342890(semantics)X
466353261(of)X
466363357(previously)X
466373752(existing)X
46638796 3848(tags.)N
466393 f
4664012 s
46641576 4004(7.2)N
46642744(Reserved)X
466431147(Error)X
466441412(Values)X
466451 f
4664611 s
46647576 4160(As)N
46648695(a)X
46649756(convenience)X
466501218(for)X
466511342(consumers)X
466521740(of)X
466531836(DWARF)X
466542176(information,)X
466552638(the)X
466562769(value)X
466572983(0)X
466583050(is)X
466593132(reserved)X
466603452(in)X
466613544(the)X
466623675(encodings)X
46663576 4264(for)N
46664734(attribute)X
466651085(names,)X
466661388(attribute)X
466671739(forms,)X
466682022(base)X
466692233(type)X
466702440(encodings,)X
466712874(location)X
466723214(operations,)X
466733658(languages,)X
46674576 4368(statement)N
46675959(program)X
466761301(opcodes,)X
466771655(macro)X
466781919(information)X
466792380(entries)X
466802659(and)X
466812830(tag)X
466822983(names)X
466833253(to)X
466843367(represent)X
466853734(an)X
466863862(error)X
46687576 4472(condition)N
46688942(or)X
466891047(unknown)X
466901406(value.)X
466911673(DWARF)X
466922022(does)X
466932215(not)X
466942359(specify)X
466952644(names)X
466962900(for)X
466973033(these)X
466983245(reserved)X
466993573(values,)X
467003851(since)X
46701576 4576(they)N
46702767(do)X
46703894(not)X
467041046(represent)X
467051407(valid)X
467061623(encodings)X
467072019(for)X
467082161(the)X
467092309(given)X
467102545(type)X
467112737(and)X
467122904(should)X
467133179(not)X
467143332(appear)X
467153606(in)X
467163715(DWARF)X
46717576 4680(debugging)N
46718970(information.)X
467193 f
4672012 s
46721576 4836(7.3)N
46722744(Executable)X
467231222(Objects)X
467241561(and)X
467251739(Shared)X
467262056(Objects)X
467271 f
4672811 s
46729576 4992(The)N
46730761(relocated)X
467311132(addresses)X
467321516(in)X
467331633(the)X
467341789(debugging)X
467352209(information)X
467362674(for)X
467372824(an)X
467382955(executable)X
467393380(object)X
467403645(are)X
467413801(virtual)X
46742576 5096(addresses)N
46743936(and)X
467441087(the)X
467451219(relocated)X
467461566(addresses)X
467471926(in)X
467482019(the)X
467492151(debugging)X
467502547(information)X
467512988(for)X
467523114(a)X
467533177(shared)X
467543429(object)X
467553668(are)X
467563798(offsets)X
46757576 5200(relative)N
46758863(to)X
46759954(the)X
467601084(start)X
467611258(of)X
467621353(the)X
467631483(lowest)X
467641735(segment)X
467652051(used)X
467662234(by)X
467672344(that)X
467682499(shared)X
467692750(object.)X
467702 f
46771576 5356(This)N
46772770(requirement)X
467731242(makes)X
467741504(the)X
467751655(debugging)X
467762070(information)X
467772530(for)X
467782676(shared)X
467792958(objects)X
467803251(position)X
467813579(independent.)X
46782576 5460(Virtual)N
46783850(addresses)X
467841219(in)X
467851311(a)X
467861378(shared)X
467871640(object)X
467881879(may)X
467892048(be)X
467902154(calculated)X
467912545(by)X
467922651(adding)X
467932919(the)X
467943050(offset)X
467953264(to)X
467963355(the)X
467973485(base)X
467983668(address)X
467993963(at)X
46800576 5564(which)N
46801809(the)X
46802939(object)X
468031177(was)X
468041336(attached.)X
468051706(This)X
468061880(offset)X
468072094(is)X
468082175(available)X
468092526(in)X
468102617(the)X
468112747(run-time)X
468123072(linker's)X
468133363(data)X
468143542(structures.)X
468151 f
4681610 s
46817576 5951(Revision:)N
46818902(2.0.0)X
468192176(Page)X
468202352(65)X
468213599(July)X
468223752(27,)X
468233872(1993)X
468241943 6055(Industry)N
468252230(Review)X
468262495(Draft)X
46827
4682866 p
46829%%Page: 66 68
468300(Courier)xf 0 f
4683110 s 0 xH 0 xS 0 f
4683211 s
468331 f
4683410 s
46835576 520(DWARF)N
46836885(Debugging)X
468371261(Information)X
468381664(Format)X
468393 f
4684012 s
46841576 832(7.4)N
46842744(File)X
46843924(Constraints)X
468441 f
4684511 s
46846576 988(All)N
46847716(debugging)X
468481115(information)X
468491560(entries)X
468501823(in)X
468511920(a)X
468521987(relocatable)X
468532402(object)X
468542646(\256le,)X
468552809(executable)X
468563214(object)X
468573458(or)X
468583559(shared)X
468593816(object)X
46860576 1092(are)N
46861705(required)X
468621020(to)X
468631111(be)X
468641216(physically)X
468651601(contiguous.)X
468663 f
4686712 s
46868576 1248(7.5)N
46869744(Format)X
468701078(of)X
468711182(Debugging)X
468721648(Information)X
468731 f
4687411 s
46875576 1404(For)N
46876726(each)X
46877915(compilation)X
468781366(unit)X
468791532(compiled)X
468801889(with)X
468812074(a)X
468822141(DWARF)X
468832486(Version)X
468842792(2)X
468852864(producer,)X
468863226(a)X
468873293(contribution)X
468883753(is)X
468893841(made)X
46890576 1508(to)N
46891668(the)X
468920 f
46893798(.debug_info)X
468941 f
468951403(section)X
468961675(of)X
468971770(the)X
468981900(object)X
468992138(\256le.)X
469002317(Each)X
469012515(such)X
469022698(contribution)X
469033152(consists)X
469043453(of)X
469053548(a)X
469063609(compilation)X
46907576 1612(unit)N
46908758(header)X
469091036(followed)X
469101394(by)X
469111527(a)X
469121611(series)X
469131856(of)X
469141974(debugging)X
469152391(information)X
469162853(entries.)X
469173177(Unlike)X
469183462(the)X
469193615(information)X
46920576 1716(encoding)N
46921935(for)X
469221073(DWARF)X
469231426(Version)X
469241740(1,)X
469251842(Version)X
469262156(2)X
469272236(debugging)X
469282644(information)X
469293097(entries)X
469303368(do)X
469313492(not)X
469323640(themselves)X
46933576 1820(contain)N
46934866(the)X
469351004(debugging)X
469361406(information)X
469371853(entry)X
469382064(tag)X
469392202(or)X
469402305(the)X
469412443(attribute)X
469422768(name)X
469432990(and)X
469443148(form)X
469453350(encodings)X
469463738(for)X
469473871(each)X
46948576 1924(attribute.)N
46949944(Instead,)X
469501248(each)X
469511437(debugging)X
469521837(information)X
469532282(entry)X
469542491(begins)X
469552749(with)X
469562934(a)X
469573001(code)X
469583195(that)X
469593356(represents)X
469603740(an)X
469613851(entry)X
46962576 2028(in)N
46963675(a)X
46964744(separate)X
469651062(abbreviations)X
469661568(table.)X
469671815(This)X
469682003(code)X
469692200(is)X
469702290(followed)X
469712634(directly)X
469722935(by)X
469733054(a)X
469743124(series)X
469753355(of)X
469763459(attribute)X
469773785(values.)X
46978576 2132(The)N
46979755(appropriate)X
469801198(entry)X
469811421(in)X
469821532(the)X
469831682(abbreviations)X
469842199(table)X
469852413(guides)X
469862685(the)X
469872835(interpretation)X
469883352(of)X
469893466(the)X
469903615(information)X
46991576 2236(contained)N
46992955(directly)X
469931261(in)X
469941366(the)X
469950 f
469961510(.debug_info)X
469971 f
469982129(section.)X
469992459(Each)X
470002671(compilation)X
470013130(unit)X
470023304(is)X
470033400(associated)X
470043799(with)X
470053993(a)X
47006576 2340(particular)N
47007936(abbreviation)X
470081399(table,)X
470091615(but)X
470101750(multiple)X
470112068(compilation)X
470122513(units)X
470132707(may)X
470142881(share)X
470153088(the)X
470163218(same)X
470173421(table.)X
470182 f
47019576 2496(This)N
47020767(encoding)X
470211129(was)X
470221305(based)X
470231549(on)X
470241676(the)X
470251823(observation)X
470262278(that)X
470272455(typical)X
470282735(DWARF)X
470293073(producers)X
470303469(produce)X
470313797(a)X
470323881(very)X
47033576 2600(limited)N
47034855(number)X
470351156(of)X
470361258(different)X
470371591(types)X
470381805(of)X
470391907(debugging)X
470402312(information)X
470412762(entries.)X
470423079(By)X
470433205(extracting)X
470443595(the)X
470453735(common)X
47046576 2704(information)N
470471031(from)X
470481235(those)X
470491459(entries)X
470501737(into)X
470511913(a)X
470521995(separate)X
470532336(table,)X
470542573(we)X
470552709(are)X
470562864(able)X
470573055(to)X
470583163(compress)X
470593533(the)X
470603680(generated)X
47061576 2808(information.)N
470623 f
47063576 2964(7.5.1)N
47064796(Compilation)X
470651288(Unit)X
470661476(Header)X
470671 f
47068576 3120(The)N
47069744(header)X
470701010(for)X
470711144(the)X
470721284(series)X
470731516(of)X
470741621(debugging)X
470752025(information)X
470762474(entries)X
470772741(contributed)X
470783175(by)X
470793295(a)X
470803366(single)X
470813609(compilation)X
47082576 3224(unit)N
47083736(consists)X
470841037(of)X
470851132(the)X
470861262(following)X
470871627(information:)X
47088642 3380(1.)N
47089796(A)X
47090888(4-byte)X
470911142(unsigned)X
470921489(integer)X
470931763(representing)X
470942227(the)X
470952364(length)X
470962614(of)X
470972717(the)X
470980 f
470992855(.debug_info)X
471001 f
471013468(contribution)X
471023930(for)X
47103796 3484(that)N
47104951(compilation)X
471051396(unit,)X
471061578(not)X
471071713(including)X
471082069(the)X
471092199(length)X
471102442(\256eld)X
471112621(itself.)X
47112642 3640(2.)N
47113796(A)X
47114895(2-byte)X
471151156(unsigned)X
471161510(integer)X
471171791(representing)X
471182262(the)X
471192406(version)X
471202701(of)X
471212810(the)X
471222954(DWARF)X
471233307(information)X
471243760(for)X
471253899(that)X
47126796 3744(compilation)N
471271241(unit.)X
471281445(For)X
471291589(DWARF)X
471301928(Version)X
471312228(2,)X
471322316(the)X
471332446(value)X
471342659(in)X
471352750(this)X
471362900(\256eld)X
471373079(is)X
471383160(2.)X
47139642 3900(3.)N
47140796(A)X
47141893(4-byte)X
471421153(unsigned)X
471431506(offset)X
471441741(into)X
471451914(the)X
471460 f
471472057(.debug_abbrev)X
471481 f
471492781(section.)X
471503110(This)X
471513302(offset)X
471523537(associates)X
471533924(the)X
47154796 4004(compilation)N
471551241(unit)X
471561401(with)X
471571580(a)X
471581641(particular)X
471592001(set)X
471602121(of)X
471612216(debugging)X
471622610(information)X
471633049(entry)X
471643252(abbreviations.)X
47165642 4160(4.)N
47166796(A)X
47167904(1-byte)X
471681174(unsigned)X
471691537(integer)X
471701827(representing)X
471712307(the)X
471722460(size)X
471732642(in)X
471742756(bytes)X
471752987(of)X
471763105(an)X
471773234(address)X
471783543(on)X
471793677(the)X
471803831(target)X
47181796 4264(architecture.)N
471821282(If)X
471831366(the)X
471841500(system)X
471851771(uses)X
471861948(segmented)X
471872351(addressing,)X
471882775(this)X
471892929(value)X
471903146(represents)X
471913528(the)X
471923662(size)X
471933825(of)X
471943924(the)X
47195796 4368(offset)N
471961018(portion)X
471971295(of)X
471981390(an)X
471991495(address.)X
472002 f
47201576 4524(The)N
47202763(compilation)X
472031240(unit)X
472041433(header)X
472051732(does)X
472061948(not)X
472072116(replace)X
472082435(the)X
472090 f
472102598 0.1979(DW_TAG_compile_unit)AX
472112 f
472123660(debugging)X
47213576 4628(information)N
472141021(entry.)X
472151274(It)X
472161356(is)X
472171443(additional)X
472181835(information)X
472192280(that)X
472202446(is)X
472212533(represented)X
472222976(outside)X
472233259(the)X
472243394(standard)X
472253734(DWARF)X
47226576 4732(tag/attributes)N
472271075(format.)X
472283 f
47229576 4888(7.5.2)N
47230796(Debugging)X
472311224(Information)X
472321705(Entry)X
472331 f
47234576 5044(Each)N
47235795(debugging)X
472361210(information)X
472371670(entry)X
472381894(begins)X
472392167(with)X
472402367(an)X
472412493(unsigned)X
472422854(LEB128)X
472433196(number)X
472443508(containing)X
472453924(the)X
47246576 5148(abbreviation)N
472471058(code)X
472481265(for)X
472491408(the)X
472501557(entry.)X
472511822(This)X
472522019(code)X
472532225(represents)X
472542621(an)X
472552744(entry)X
472562965(within)X
472573231(the)X
472583379(abbreviation)X
472593860(table)X
47260576 5252(associated)N
47261964(with)X
472621147(the)X
472631281(compilation)X
472641730(unit)X
472651894(containing)X
472662293(this)X
472672447(entry.)X
472682698(The)X
472692861(abbreviation)X
472703328(code)X
472713520(is)X
472723605(followed)X
472733944(by)X
47274576 5356(a)N
47275637(series)X
47276859(of)X
47277954(attribute)X
472781271(values.)X
47279576 5512(On)N
47280710(some)X
47281923(architectures,)X
472821422(there)X
472831625(are)X
472841760(alignment)X
472852142(constraints)X
472862552(on)X
472872668(section)X
472882946(boundaries.)X
472893404(To)X
472903530(make)X
472913749(it)X
472923827(easier)X
47293576 5616(to)N
47294684(pad)X
47295850(debugging)X
472961261(information)X
472971717(sections)X
472982040(to)X
472992148(satisfy)X
473002417(such)X
473012617(constraints,)X
473023060(the)X
473033207(abbreviation)X
473043687(code)X
473053891(0)X
473063973(is)X
47307576 5720(reserved.)N
47308973(Debugging)X
473091420(information)X
473101893(entries)X
473112184(consisting)X
473122598(of)X
473132727(only)X
473142940(the)X
473153104(0)X
473163204(abbreviation)X
473173702(code)X
473183925(are)X
47319576 5824(considered)N
47320979(null)X
473211139(entries.)X
4732210 s
47323576 5951(Revision:)N
47324902(2.0.0)X
473252176(Page)X
473262352(66)X
473273599(July)X
473283752(27,)X
473293872(1993)X
473301943 6055(Industry)N
473312230(Review)X
473322495(Draft)X
47333
4733467 p
47335%%Page: 67 69
473360(Courier)xf 0 f
4733710 s 0 xH 0 xS 0 f
4733811 s
473391 f
4734010 s
473413075 520(Programming)N
473423535(Languages)X
473433903(SIG)X
473443 f
4734511 s
47346576 832(7.5.3)N
47347796(Abbreviation)X
473481317(Tables)X
473491 f
47350576 988(The)N
47351745(abbreviation)X
473521219(tables)X
473531458(for)X
473541593(all)X
473551715(compilation)X
473562171(units)X
473572376(are)X
473582516(contained)X
473592892(in)X
473602994(a)X
473613066(separate)X
473623387(object)X
473633636(\256le)X
473643782(section)X
47365576 1092(called)N
473660 f
47367813(.debug_abbrev)X
473681 f
473691502(.)X
473701572(As)X
473711695(mentioned)X
473722094(before,)X
473732365(multiple)X
473742686(compilation)X
473753134(units)X
473763331(may)X
473773508(share)X
473783718(the)X
473793851(same)X
47380576 1196(abbreviation)N
473811039(table.)X
47382576 1352(The)N
47383765(abbreviation)X
473841259(table)X
473851484(for)X
473861639(a)X
473871731(single)X
473881995(compilation)X
473892471(unit)X
473902662(consists)X
473912994(of)X
473923120(a)X
473933212(series)X
473943465(of)X
473953591(abbreviation)X
47396576 1456(declarations.)N
473971073(Each)X
473981276(declaration)X
473991695(speci\256es)X
474002025(the)X
474012160(tag)X
474022295(and)X
474032449(attributes)X
474042805(for)X
474052934(a)X
474063000(particular)X
474073364(form)X
474083561(of)X
474093660(debugging)X
47410576 1560(information)N
474111024(entry.)X
474121280(Each)X
474131487(declaration)X
474141910(begins)X
474152171(with)X
474162360(an)X
474172475(unsigned)X
474182825(LEB128)X
474193156(number)X
474203457(representing)X
474213924(the)X
47422576 1664(abbreviation)N
474231044(code)X
474241237(itself.)X
474251485(It)X
474261566(is)X
474271651(this)X
474281805(code)X
474291997(that)X
474302156(appears)X
474312450(at)X
474322540(the)X
474332674(beginning)X
474343053(of)X
474353152(a)X
474363217(debugging)X
474373615(information)X
47438576 1768(entry)N
47439781(in)X
47440874(the)X
474410 f
474421006(.debug_info)X
474431 f
474441613(section.)X
474451931(As)X
474462052(described)X
474472413(above,)X
474482669(the)X
474492801(abbreviation)X
474503266(code)X
474513456(0)X
474523524(is)X
474533608(reserved)X
474543930(for)X
47455576 1872(null)N
47456757(debugging)X
474571172(information)X
474581631(entries.)X
474591952(The)X
474602131(abbreviation)X
474612614(code)X
474622822(is)X
474632923(followed)X
474643278(by)X
474653408(another)X
474663714(unsigned)X
47467576 1976(LEB128)N
47468912(number)X
474691218(that)X
474701388(encodes)X
474711708(the)X
474721853(entry's)X
474732134(tag.)X
474742323(The)X
474752497(encodings)X
474762891(for)X
474773030(the)X
474783175(tag)X
474793321(names)X
474803584(are)X
474813729(given)X
474823963(in)X
47483576 2080(Figures)N
47484862(14)X
47485972(and)X
474861121(15.)X
47487576 2236(Following)N
47488970(the)X
474891109(tag)X
474901248(encoding)X
474911602(is)X
474921692(a)X
474931762(1-byte)X
474942018(value)X
474952241(that)X
474962406(determines)X
474972825(whether)X
474983140(a)X
474993211(debugging)X
475003615(information)X
47501576 2340(entry)N
47502787(using)X
475031008(this)X
475041166(abbreviation)X
475051637(has)X
475061784(child)X
475071991(entries)X
475082256(or)X
475092359(not.)X
475102546(If)X
475112633(the)X
475122770(value)X
475132990(is)X
475140 f
475153078(DW_CHILDREN_yes)X
475161 f
475173873(,)X
475183924(the)X
47519576 2444(next)N
47520759(physically)X
475211153(succeeding)X
475221575(entry)X
475231787(of)X
475241892(any)X
475252051(debugging)X
475262455(information)X
475272904(entry)X
475283117(using)X
475293340(this)X
475303500(abbreviation)X
475313973(is)X
47532576 2548(the)N
47533711(\256rst)X
47534875(child)X
475351079(of)X
475361179(the)X
475371314(prior)X
475381512(entry.)X
475391764(If)X
475401849(the)X
475411984(1-byte)X
475422236(value)X
475432454(following)X
475442824(the)X
475452959(abbreviation's)X
475463490(tag)X
475473624(encoding)X
475483973(is)X
475490 f
47550576 2652(DW_CHILDREN_no)N
475511 f
475521318(,)X
475531372(the)X
475541512(next)X
475551696(physically)X
475562092(succeeding)X
475572516(entry)X
475582730(of)X
475592836(any)X
475602996(debugging)X
475613401(information)X
475623851(entry)X
47563576 2756(using)N
47564792(this)X
47565945(abbreviation)X
475661411(is)X
475671495(a)X
475681558(sibling)X
475691823(of)X
475701920(the)X
475712052(prior)X
475722247(entry.)X
475732496(\(Either)X
475742765(the)X
475752897(\256rst)X
475763058(child)X
475773259(or)X
475783356(sibling)X
475793621(entries)X
475803880(may)X
47581576 2860(be)N
47582695(null)X
47583869(entries\).)X
475841213(The)X
475851386(encodings)X
475861779(for)X
475871917(the)X
475882061(child)X
475892274(determination)X
475902801(byte)X
475912989(are)X
475923132(given)X
475933364(in)X
475943470(Figure)X
475953737(16.)X
475963906(\(As)X
47597576 2964(mentioned)N
47598971(in)X
475991062(section)X
476001334(2.3,)X
476011488(each)X
476021671(chain)X
476031884(of)X
476041979(sibling)X
476052242(entries)X
476062499(is)X
476072580(terminated)X
476082980(by)X
476093090(a)X
476103151(null)X
476113311(entry\).)X
47612576 3120(Finally,)N
47613888(the)X
476141035(child)X
476151251(encoding)X
476161613(is)X
476171711(followed)X
476182063(by)X
476192190(a)X
476202269(series)X
476212509(of)X
476222622(attribute)X
476232957(speci\256cations.)X
476243521(Each)X
476253737(attribute)X
47626576 3224(speci\256cation)N
476271046(consists)X
476281349(of)X
476291446(two)X
476301602(parts.)X
476311841(The)X
476322002(\256rst)X
476332163(part)X
476342323(is)X
476352405(an)X
476362511(unsigned)X
476372852(LEB128)X
476383174(number)X
476393466(representing)X
476403924(the)X
47641576 3328(attribute's)N
47642968(name.)X
476431237(The)X
476441408(second)X
476451686(part)X
476461858(is)X
476471952(an)X
476482070(unsigned)X
476492423(LEB128)X
476502757(number)X
476513061(representing)X
476523531(the)X
476533674(attribute's)X
47654576 3432(form.)N
47655814(The)X
47656974(series)X
476571197(of)X
476581293(attribute)X
476591611(speci\256cations)X
476602114(ends)X
476612298(with)X
476622478(an)X
476632584(entry)X
476642787(containing)X
476653182(0)X
476663248(for)X
476673372(the)X
476683502(name)X
476693715(and)X
476703864(0)X
476713930(for)X
47672576 3536(the)N
47673706(form.)X
47674576 3692(The)N
47675746(attribute)X
476761074(form)X
476770 f
476781278(DW_FORM_indirect)X
476791 f
476802159(is)X
476812251(a)X
476822323(special)X
476832601(case.)X
476842829(For)X
476852984(attributes)X
476863346(with)X
476873536(this)X
476883697(form,)X
476893924(the)X
47690576 3796(attribute)N
47691894(value)X
476921108(itself)X
476931308(in)X
476941400(the)X
476950 f
476961531(.debug_info)X
476971 f
476982137(section)X
476992410(begins)X
477002663(with)X
477012842(an)X
477022947(unsigned)X
477033287(LEB128)X
477043608(number)X
477053899(that)X
47706576 3900(represents)N
47707958(its)X
477081068(form.)X
477091310(This)X
477101494(allows)X
477111751(producers)X
477122124(to)X
477132220(choose)X
477142491(forms)X
477152723(for)X
477162852(particular)X
477173217(attributes)X
477183573(dynamically,)X
47719576 4004(without)N
47720868(having)X
477211130(to)X
477221221(add)X
477231370(a)X
477241431(new)X
477251599(entry)X
477261802(to)X
477271893(the)X
477282023(abbreviation)X
477292486(table.)X
47730576 4160(The)N
47731743(abbreviations)X
477321248(for)X
477331380(a)X
477341449(given)X
477351675(compilation)X
477362129(unit)X
477372298(end)X
477382456(with)X
477392644(an)X
477402758(entry)X
477412970(consisting)X
477423359(of)X
477433463(a)X
477443533(0)X
477453608(byte)X
477463791(for)X
477473924(the)X
47748576 4264(abbreviation)N
477491039(code.)X
477502 f
47751576 4420(See)N
47752720(Appendix)X
477531075(2)X
477541141(for)X
477551266(a)X
477561332(depiction)X
477571683(of)X
477581774(the)X
477591904(organization)X
477602377(of)X
477612468(the)X
477622598(debugging)X
477632992(information.)X
477643 f
47765576 4576(7.5.4)N
47766796(Attribute)X
477671169(Encodings)X
477681 f
47769576 4732(The)N
47770735(encodings)X
477711114(for)X
477721238(the)X
477731368(attribute)X
477741685(names)X
477751932(are)X
477762061(given)X
477772279(in)X
477782370(Figures)X
477792656(17)X
477802766(and)X
477812915(18.)X
47782576 4888(The)N
47783744(attribute)X
477841070(form)X
477851272(governs)X
477861581(how)X
477871763(the)X
477881902(value)X
477892124(of)X
477902228(the)X
477912367(attribute)X
477922693(is)X
477932784(encoded.)X
477943153(The)X
477953322(possible)X
477963643(forms)X
477973880(may)X
47798576 4992(belong)N
47799838(to)X
47800929(one)X
478011078(of)X
478021173(the)X
478031303(following)X
478041668(form)X
478051861(classes:)X
47806576 5148(address)N
478071368(Represented)X
478081842(as)X
478091954(an)X
478102077(object)X
478112333(of)X
478122446(appropriate)X
478132887(size)X
478143064(to)X
478153173(hold)X
478163370(an)X
478173493(address)X
478183796(on)X
478193924(the)X
478201368 5252(target)N
478211626(machine)X
478221982(\()X
478230 f
478242011(DW_FORM_addr)X
478251 f
478262647(\).)X
478272777(This)X
478282991(address)X
478293310(is)X
478303425(relocatable)X
478313868(in)X
478323993(a)X
478331368 5356(relocatable)N
478341800(object)X
478352061(\256le)X
478362219(and)X
478372391(is)X
478382495(relocated)X
478392863(in)X
478402977(an)X
478413105(executable)X
478423527(\256le)X
478433685(or)X
478443803(shared)X
478451368 5460(object.)N
47846576 5616(block)N
478471368(Blocks)X
478481641(come)X
478491860(in)X
478501957(four)X
478512131(forms.)X
478522408(The)X
478532573(\256rst)X
478542738(consists)X
478553045(of)X
478563147(a)X
478573215(1-byte)X
478583469(length)X
478593719(followed)X
478601368 5720(by)N
478611501(0)X
478621590(to)X
478631704(255)X
478641881(contiguous)X
478652313(information)X
478662775(bytes)X
478673028(\()X
478680 f
478693057(DW_FORM_block1)X
478701 f
478713799(\).)X
478723895(The)X
478731368 5824(second)N
478741652(consists)X
478751971(of)X
478762084(a)X
478772163(2-byte)X
478782428(length)X
478792689(followed)X
478803042(by)X
478813170(0)X
478823254(to)X
478833363(65,535)X
478843645(contiguous)X
4788510 s
47886576 5951(Revision:)N
47887902(2.0.0)X
478882176(Page)X
478892352(67)X
478903599(July)X
478913752(27,)X
478923872(1993)X
478931943 6055(Industry)N
478942230(Review)X
478952495(Draft)X
47896
4789768 p
47898%%Page: 68 70
478990(Courier)xf 0 f
4790010 s 0 xH 0 xS 0 f
4790111 s
479021 f
4790310 s
47904576 520(DWARF)N
47905885(Debugging)X
479061261(Information)X
479071664(Format)X
4790811 s
4790910 f
479101054 744(i)N
479111089(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
479121 f
479131098 848(Tag)N
479141257(name)X
479152767(Value)X
4791610 f
479171054 864(i)N
479181089(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
479190 f
479201098 968 0.1992(DW_TAG_array_type)AN
479212767(0x01)X
479221098 1072 0.1992(DW_TAG_class_type)AN
479232767(0x02)X
479241098 1176 0.1985(DW_TAG_entry_point)AN
479252767(0x03)X
479261098 1280 0.1960(DW_TAG_enumeration_type)AN
479272767(0x04)X
479281098 1384 0.1960(DW_TAG_formal_parameter)AN
479292767(0x05)X
479301098 1488 0.1947(DW_TAG_imported_declaration)AN
479312767(0x08)X
479321098 1592(DW_TAG_label)N
479332767(0x0a)X
479341098 1696 0.1974(DW_TAG_lexical_block)AN
479352767(0x0b)X
479361098 1800(DW_TAG_member)N
479372767(0x0d)X
479381098 1904 0.1979(DW_TAG_pointer_type)AN
479392767(0x0f)X
479401098 2008 0.1969(DW_TAG_reference_type)AN
479412767(0x10)X
479421098 2112 0.1979(DW_TAG_compile_unit)AN
479432767(0x11)X
479441098 2216 0.1985(DW_TAG_string_type)AN
479452767(0x12)X
479461098 2320 0.1969(DW_TAG_structure_type)AN
479472767(0x13)X
479481098 2424 0.1964(DW_TAG_subroutine_type)AN
479492767(0x15)X
479501098 2528(DW_TAG_typedef)N
479512767(0x16)X
479521098 2632 0.1992(DW_TAG_union_type)AN
479532767(0x17)X
479541098 2736 0.1942(DW_TAG_unspecified_parameters)AN
479552767(0x18)X
479561098 2840(DW_TAG_variant)N
479572767(0x19)X
479581098 2944 0.1979(DW_TAG_common_block)AN
479592767(0x1a)X
479601098 3048 0.1960(DW_TAG_common_inclusion)AN
479612767(0x1b)X
479621098 3152 0.1985(DW_TAG_inheritance)AN
479632767(0x1c)X
479641098 3256 0.1953(DW_TAG_inlined_subroutine)AN
479652767(0x1d)X
479661098 3360(DW_TAG_module)N
479672767(0x1e)X
479681098 3464 0.1953(DW_TAG_ptr_to_member_type)AN
479692767(0x1f)X
479701098 3568(DW_TAG_set_type)N
479712767(0x20)X
479721098 3672 0.1974(DW_TAG_subrange_type)AN
479732767(0x21)X
479741098 3776(DW_TAG_with_stmt)N
479752767(0x22)X
479761098 3880 0.1953(DW_TAG_access_declaration)AN
479772767(0x23)X
479781098 3984(DW_TAG_base_type)N
479792767(0x24)X
479801098 4088 0.1985(DW_TAG_catch_block)AN
479812767(0x25)X
479821098 4192 0.1992(DW_TAG_const_type)AN
479832767(0x26)X
479841098 4296(DW_TAG_constant)N
479852767(0x27)X
479861098 4400 0.1992(DW_TAG_enumerator)AN
479872767(0x28)X
479881098 4504(DW_TAG_file_type)N
479892767(0x29)X
479901 f
4799110 f
479921054 4520(i)N
479931089(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
479941054(c)X
479954440(c)Y
479964352(c)Y
479974264(c)Y
479984176(c)Y
479994088(c)Y
480004000(c)Y
480013912(c)Y
480023824(c)Y
480033736(c)Y
480043648(c)Y
480053560(c)Y
480063472(c)Y
480073384(c)Y
480083296(c)Y
480093208(c)Y
480103120(c)Y
480113032(c)Y
480122944(c)Y
480132856(c)Y
480142768(c)Y
480152680(c)Y
480162592(c)Y
480172504(c)Y
480182416(c)Y
480192328(c)Y
480202240(c)Y
480212152(c)Y
480222064(c)Y
480231976(c)Y
480241888(c)Y
480251800(c)Y
480261712(c)Y
480271624(c)Y
480281536(c)Y
480291448(c)Y
480301360(c)Y
480311272(c)Y
480321184(c)Y
480331096(c)Y
480341008(c)Y
48035920(c)Y
48036832(c)Y
480373553 4520(c)N
480384440(c)Y
480394352(c)Y
480404264(c)Y
480414176(c)Y
480424088(c)Y
480434000(c)Y
480443912(c)Y
480453824(c)Y
480463736(c)Y
480473648(c)Y
480483560(c)Y
480493472(c)Y
480503384(c)Y
480513296(c)Y
480523208(c)Y
480533120(c)Y
480543032(c)Y
480552944(c)Y
480562856(c)Y
480572768(c)Y
480582680(c)Y
480592592(c)Y
480602504(c)Y
480612416(c)Y
480622328(c)Y
480632240(c)Y
480642152(c)Y
480652064(c)Y
480661976(c)Y
480671888(c)Y
480681800(c)Y
480691712(c)Y
480701624(c)Y
480711536(c)Y
480721448(c)Y
480731360(c)Y
480741272(c)Y
480751184(c)Y
480761096(c)Y
480771008(c)Y
48078920(c)Y
48079832(c)Y
480803 f
480811691 4624(Figure)N
480821963(14.)X
480831 f
480842117(Tag)X
480852276(encodings)X
480862655(\(part)X
480872843(1\))X
480881368 4780(information)N
480891822(bytes)X
480902067(\()X
480910 f
480922096(DW_FORM_block2)X
480931 f
480942838(\).)X
480952926(The)X
480963100(third)X
480973304(consists)X
480983620(of)X
480993730(a)X
481003807(4-byte)X
481011368 4884(length)N
481021644(followed)X
481032011(by)X
481042153(0)X
481052251(to)X
481062374(4,294,967,295)X
481072934(contiguous)X
481083375(information)X
481093846(bytes)X
481101368 4988(\()N
481110 f
481121397(DW_FORM_block4)X
481131 f
481142139(\).)X
481152217(The)X
481162381(fourth)X
481172623(consists)X
481182929(of)X
481193029(an)X
481203139(unsigned)X
481213484(LEB128)X
481223811(length)X
481231368 5092(followed)N
481241781(by)X
481251969(the)X
481262177(number)X
481272546(of)X
481282719(bytes)X
481293005(speci\256ed)X
481303417(by)X
481313604(the)X
481323811(length)X
481331368 5196(\()N
481340 f
481351397(DW_FORM_block)X
481361 f
481372086(\).)X
481382181(In)X
481392277(all)X
481402389(forms,)X
481412639(the)X
481422770(length)X
481433014(is)X
481443096(the)X
481453227(number)X
481463519(of)X
481473615(information)X
481481368 5300(bytes)N
481491599(that)X
481501777(follow.)X
481512096(The)X
481522278(information)X
481532739(bytes)X
481542969(may)X
481553165(contain)X
481563469(any)X
481573640(mixture)X
481583959(of)X
481591368 5404(relocated)N
481601760(\(or)X
481611931(relocatable\))X
481622416(addresses,)X
481632843(references)X
481643272(to)X
481653410(other)X
481663660(debugging)X
481671368 5508(information)N
481681807(entries)X
481692064(or)X
481702159(data)X
481712328(bytes.)X
48172576 5664(constant)N
481731368(There)X
481741611(are)X
481751756(six)X
481761898(forms)X
481772142(of)X
481782254(constants:)X
481792668(one,)X
481802856(two,)X
481813049(four)X
481823234(and)X
481833400(eight)X
481843616(byte)X
481853807(values)X
481861368 5768(\(respectively,)N
481870 f
481882228(DW_FORM_data1)X
481891 f
481902917(,)X
481910 f
481923321(DW_FORM_data2)X
481931 f
481944010(,)X
4819510 s
48196576 5951(Revision:)N
48197902(2.0.0)X
481982176(Page)X
481992352(68)X
482003599(July)X
482013752(27,)X
482023872(1993)X
482031943 6055(Industry)N
482042230(Review)X
482052495(Draft)X
48206
4820769 p
48208%%Page: 69 71
482090(Courier)xf 0 f
4821010 s 0 xH 0 xS 0 f
4821111 s
482121 f
4821310 s
482143075 520(Programming)N
482153535(Languages)X
482163903(SIG)X
4821711 s
4821810 f
482191319 744(i)N
482201352(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
482211 f
482221363 848(Tag)N
482231522(name)X
482242926(Value)X
4822510 f
482261319 864(i)N
482271352(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
482280 f
482291363 968(DW_TAG_friend)N
482302926(0x2a)X
482311363 1072(DW_TAG_namelist)N
482322926(0x2b)X
482331363 1176 0.1974(DW_TAG_namelist_item)AN
482342926(0x2c)X
482351363 1280 0.1985(DW_TAG_packed_type)AN
482362926(0x2d)X
482371363 1384 0.1992(DW_TAG_subprogram)AN
482382926(0x2e)X
482391363 1488 0.1950(DW_TAG_template_type_param)AN
482402926(0x2f)X
482411363 1592 0.1947(DW_TAG_template_value_param)AN
482422926(0x30)X
482431363 1696 0.1985(DW_TAG_thrown_type)AN
482442926(0x31)X
482451363 1800(DW_TAG_try_block)N
482462926(0x32)X
482471363 1904 0.1979(DW_TAG_variant_part)AN
482482926(0x33)X
482491363 2008(DW_TAG_variable)N
482502926(0x34)X
482511363 2112 0.1974(DW_TAG_volatile_type)AN
482522926(0x35)X
482531363 2216(DW_TAG_lo_user)N
482542926(0x4080)X
482551363 2320(DW_TAG_hi_user)N
482562926(0xffff)X
482571 f
4825810 f
482591319 2336(i)N
482601352(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
482611319(c)X
482622328(c)Y
482632240(c)Y
482642152(c)Y
482652064(c)Y
482661976(c)Y
482671888(c)Y
482681800(c)Y
482691712(c)Y
482701624(c)Y
482711536(c)Y
482721448(c)Y
482731360(c)Y
482741272(c)Y
482751184(c)Y
482761096(c)Y
482771008(c)Y
48278920(c)Y
48279832(c)Y
482803288 2336(c)N
482812328(c)Y
482822240(c)Y
482832152(c)Y
482842064(c)Y
482851976(c)Y
482861888(c)Y
482871800(c)Y
482881712(c)Y
482891624(c)Y
482901536(c)Y
482911448(c)Y
482921360(c)Y
482931272(c)Y
482941184(c)Y
482951096(c)Y
482961008(c)Y
48297920(c)Y
48298832(c)Y
482993 f
483001691 2440(Figure)N
483011963(15.)X
483021 f
483032117(Tag)X
483042276(encodings)X
483052655(\(part)X
483062843(2\))X
4830710 f
483081627 2508(i)N
483091660(iiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
483101 f
483111671 2612(Child)N
483121890(determination)X
483132403(name)X
483142726(Value)X
4831510 f
483161627 2628(i)N
483171660(iiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
483180 f
483191671 2732(DW_CHILDREN_no)N
483202726(0)X
483211671 2836(DW_CHILDREN_yes)N
483222726(1)X
483231 f
4832410 f
483251627 2852(i)N
483261660(iiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
483271627(c)X
483282772(c)Y
483292684(c)Y
483302596(c)Y
483312980 2852(c)N
483322772(c)Y
483332684(c)Y
483342596(c)Y
483353 f
483361546 2956(Figure)N
483371818(16.)X
483381 f
483391972(Child)X
483402191(determination)X
483412704(encodings)X
483420 f
483431368 3112(DW_FORM_data4)N
483441 f
483452057(,)X
483462133(and)X
483470 f
483482314(DW_FORM_data8)X
483491 f
483503003(\).)X
483513130(There)X
483523389(are)X
483533551(also)X
483543748(variable)X
483551368 3216(length)N
483561623(constant)X
483571951(data)X
483582132(forms)X
483592371(encoded)X
483602698(using)X
483612923(LEB128)X
483623256(numbers)X
483633592(\(see)X
483643766(below\).)X
483651368 3320(Both)N
483661604(signed)X
483671898(\()X
483680 f
483691927(DW_FORM_sdata)X
483701 f
483712616(\))X
483722710(and)X
483732902(unsigned)X
483743285(\()X
483750 f
483763314(DW_FORM_udata)X
483771 f
483784003(\))X
483791368 3424(variable)N
483801674(length)X
483811917(constants)X
483822267(are)X
483832396(available.)X
48384576 3580(\257ag)N
483851363(A)X
483861449(\257ag)X
483871604(is)X
483881686(represented)X
483892114(as)X
483902210(a)X
483912272(single)X
483922506(byte)X
483932681(of)X
483942777(data)X
483952947(\()X
483960 f
483972976(DW_FORM_flag)X
483981 f
483993612(\).)X
484003686(If)X
484013768(the)X
484023900(\257ag)X
484031368 3684(has)N
484041518(value)X
484051742(zero,)X
484061948(it)X
484072031(indicates)X
484082378(the)X
484092519(absence)X
484102830(of)X
484112936(the)X
484123077(attribute.)X
484133449(If)X
484143540(the)X
484153680(\257ag)X
484163844(has)X
484173993(a)X
484181368 3788(non-zero)N
484191702(value,)X
484201937(it)X
484212009(indicates)X
484222345(the)X
484232475(presence)X
484242804(of)X
484252899(the)X
484263029(attribute.)X
48427576 3944(reference)N
484281368(There)X
484291601(are)X
484301736(two)X
484311896(types)X
484322110(of)X
484332211(reference.)X
484342609(The)X
484352774(\256rst)X
484362939(is)X
484373026(an)X
484383137(offset)X
484393366(relative)X
484403660(to)X
484413758(the)X
484423895(\256rst)X
484431368 4048(byte)N
484441546(of)X
484451645(the)X
484461779(compilation)X
484472228(unit)X
484482392(header)X
484492652(for)X
484502780(the)X
484512914(compilation)X
484523363(unit)X
484533526(containing)X
484543924(the)X
484551368 4152(reference.)N
484561767(The)X
484571933(offset)X
484582162(must)X
484592363(refer)X
484602557(to)X
484612655(an)X
484622768(entry)X
484632979(within)X
484643235(that)X
484653398(same)X
484663609(compilation)X
484671368 4256(unit.)N
484681583(There)X
484691821(are)X
484701961(\256ve)X
484712126(forms)X
484722364(for)X
484732499(this)X
484742660(type)X
484752845(of)X
484762951(reference:)X
484773357(one,)X
484783539(two,)X
484793726(four)X
484803905(and)X
484811368 4360(eight)N
484821606(byte)X
484831819(offsets)X
484842115(\(respectively,)X
484850 f
484862654(DW_FORM_ref1)X
484871 f
484883290(,)X
484890 f
484903374(DW_FORM_ref2)X
484911 f
484924010(,)X
484930 f
484941368 4464(DW_FORM_ref4)N
484951 f
484962004(,)X
484972058(and)X
484980 f
484992217(DW_FORM_ref8)X
485001 f
485012853(\).)X
485022958(There)X
485033195(are)X
485043334(is)X
485053425(also)X
485063599(an)X
485073714(unsigned)X
485081368 4568(variable)N
485091797(length)X
485102163(offset)X
485112508(encoded)X
485122947(using)X
485133284(LEB128)X
485143729(numbers)X
485151368 4672(\()N
485160 f
485171397 0.1992(DW_FORM_ref_udata)AX
485181 f
485192298(\).)X
485201368 4828(The)N
485211533(second)X
485221805(type)X
485231985(of)X
485242086(reference)X
485252440(is)X
485262527(the)X
485272664(address)X
485282956(of)X
485293058(any)X
485303214(debugging)X
485313615(information)X
485321368 4932(entry)N
485331576(within)X
485341829(the)X
485351964(same)X
485362172(executable)X
485372576(or)X
485382676(shared)X
485392932(object;)X
485403200(it)X
485413277(may)X
485423456(refer)X
485433647(to)X
485443742(an)X
485453851(entry)X
485461368 5036(in)N
485471461(a)X
485481524(different)X
485491851(compilation)X
485502298(unit)X
485512460(from)X
485522655(the)X
485532787(unit)X
485542949(containing)X
485553347(the)X
485563480(reference.)X
485573875(This)X
485581368 5140(type)N
485591547(of)X
485601647(reference)X
485611999(\()X
485620 f
485632028(DW_FORM_ref_addr)X
485641 f
485652876(\))X
485662931(is)X
485673016(the)X
485683150(size)X
485693313(of)X
485703412(an)X
485713521(address)X
485723810(on)X
485733924(the)X
485741368 5244(target)N
485751591(architecture;)X
485762055(it)X
485772128(is)X
485782210(relocatable)X
485792620(in)X
485802712(a)X
485812774(relocatable)X
485823184(object)X
485833423(\256le)X
485843559(and)X
485853709(relocated)X
485861368 5348(in)N
485871459(an)X
485881564(executable)X
485891963(\256le)X
485902098(or)X
485912193(shared)X
485922444(object.)X
485932 f
485941368 5504(The)N
485951530(use)X
485961677(of)X
485971776(compilation)X
485982228(unit)X
485992396(relative)X
486002696(references)X
486013092(will)X
486023256(reduce)X
486033525(the)X
486043664(number)X
486053963(of)X
486061368 5608(link-time)N
486071704(relocations)X
486082123(and)X
486092277(so)X
486102377(speed)X
486112599(up)X
486122709(linking.)X
486131 f
4861410 s
48615576 5951(Revision:)N
48616902(2.0.0)X
486172176(Page)X
486182352(69)X
486193599(July)X
486203752(27,)X
486213872(1993)X
486221943 6055(Industry)N
486232230(Review)X
486242495(Draft)X
48625
4862670 p
48627%%Page: 70 72
486280(Courier)xf 0 f
4862910 s 0 xH 0 xS 0 f
4863011 s
486311 f
4863210 s
48633576 520(DWARF)N
48634885(Debugging)X
486351261(Information)X
486361664(Format)X
4863711 s
4863810 f
486391049 744(i)N
486401050(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
486411 f
486421093 848(Attribute)N
486431434(name)X
486442391(Value)X
486452735(Classes)X
4864610 f
486471049 864(i)N
486481050(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
486490 f
486501093 968(DW_AT_sibling)N
486512391(0x01)X
486521 f
486532735(reference)X
486540 f
486551093 1072(DW_AT_location)N
486562391(0x02)X
486571 f
486582735(block,)X
486592975(constant)X
486600 f
486611093 1176(DW_AT_name)N
486622391(0x03)X
486631 f
486642735(string)X
486650 f
486661093 1280(DW_AT_ordering)N
486672391(0x09)X
486681 f
486692735(constant)X
486700 f
486711093 1384(DW_AT_byte_size)N
486722391(0x0b)X
486731 f
486742735(constant)X
486750 f
486761093 1488(DW_AT_bit_offset)N
486772391(0x0c)X
486781 f
486792735(constant)X
486800 f
486811093 1592(DW_AT_bit_size)N
486822391(0x0d)X
486831 f
486842735(constant)X
486850 f
486861093 1696(DW_AT_stmt_list)N
486872391(0x10)X
486881 f
486892735(constant)X
486900 f
486911093 1800(DW_AT_low_pc)N
486922391(0x11)X
486931 f
486942735(address)X
486950 f
486961093 1904(DW_AT_high_pc)N
486972391(0x12)X
486981 f
486992735(address)X
487000 f
487011093 2008(DW_AT_language)N
487022391(0x13)X
487031 f
487042735(constant)X
487050 f
487061093 2112(DW_AT_discr)N
487072391(0x15)X
487081 f
487092735(reference)X
487100 f
487111093 2216 0.1992(DW_AT_discr_value)AN
487122391(0x16)X
487131 f
487142735(constant)X
487150 f
487161093 2320(DW_AT_visibility)N
487172391(0x17)X
487181 f
487192735(constant)X
487200 f
487211093 2424(DW_AT_import)N
487222391(0x18)X
487231 f
487242735(reference)X
487250 f
487261093 2528 0.1979(DW_AT_string_length)AN
487272391(0x19)X
487281 f
487292735(block,)X
487302975(constant)X
487310 f
487321093 2632 0.1964(DW_AT_common_reference)AN
487332391(0x1a)X
487341 f
487352735(reference)X
487360 f
487371093 2736(DW_AT_comp_dir)N
487382391(0x1b)X
487391 f
487402735(string)X
487410 f
487421093 2840 0.1992(DW_AT_const_value)AN
487432391(0x1c)X
487441 f
487452735(string,)X
487462980(constant,)X
487473318(block)X
487480 f
487491093 2944 0.1969(DW_AT_containing_type)AN
487502391(0x1d)X
487511 f
487522735(reference)X
487530 f
487541093 3048 0.1979(DW_AT_default_value)AN
487552391(0x1e)X
487561 f
487572735(reference)X
487580 f
487591093 3152(DW_AT_inline)N
487602391(0x20)X
487611 f
487622735(constant)X
487630 f
487641093 3256 0.1992(DW_AT_is_optional)AN
487652391(0x21)X
487661 f
487672735(\257ag)X
487680 f
487691093 3360 0.1992(DW_AT_lower_bound)AN
487702391(0x22)X
487711 f
487722735(constant,)X
487733073(reference)X
487740 f
487751093 3464(DW_AT_producer)N
487762391(0x25)X
487771 f
487782735(string)X
487790 f
487801093 3568(DW_AT_prototyped)N
487812391(0x27)X
487821 f
487832735(\257ag)X
487840 f
487851093 3672 0.1992(DW_AT_return_addr)AN
487862391(0x2a)X
487871 f
487882735(block,)X
487892975(constant)X
487900 f
487911093 3776 0.1992(DW_AT_start_scope)AN
487922391(0x2c)X
487931 f
487942735(constant)X
487950 f
487961093 3880 0.1992(DW_AT_stride_size)AN
487972391(0x2e)X
487981 f
487992735(constant)X
488000 f
488011093 3984 0.1992(DW_AT_upper_bound)AN
488022391(0x2f)X
488031 f
488042735(constant,)X
488053073(reference)X
4880610 f
488071049 4000(i)N
488081050(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
488091049(c)X
488103912(c)Y
488113824(c)Y
488123736(c)Y
488133648(c)Y
488143560(c)Y
488153472(c)Y
488163384(c)Y
488173296(c)Y
488183208(c)Y
488193120(c)Y
488203032(c)Y
488212944(c)Y
488222856(c)Y
488232768(c)Y
488242680(c)Y
488252592(c)Y
488262504(c)Y
488272416(c)Y
488282328(c)Y
488292240(c)Y
488302152(c)Y
488312064(c)Y
488321976(c)Y
488331888(c)Y
488341800(c)Y
488351712(c)Y
488361624(c)Y
488371536(c)Y
488381448(c)Y
488391360(c)Y
488401272(c)Y
488411184(c)Y
488421096(c)Y
488431008(c)Y
48844920(c)Y
48845832(c)Y
488463558 4000(c)N
488473912(c)Y
488483824(c)Y
488493736(c)Y
488503648(c)Y
488513560(c)Y
488523472(c)Y
488533384(c)Y
488543296(c)Y
488553208(c)Y
488563120(c)Y
488573032(c)Y
488582944(c)Y
488592856(c)Y
488602768(c)Y
488612680(c)Y
488622592(c)Y
488632504(c)Y
488642416(c)Y
488652328(c)Y
488662240(c)Y
488672152(c)Y
488682064(c)Y
488691976(c)Y
488701888(c)Y
488711800(c)Y
488721712(c)Y
488731624(c)Y
488741536(c)Y
488751448(c)Y
488761360(c)Y
488771272(c)Y
488781184(c)Y
488791096(c)Y
488801008(c)Y
48881920(c)Y
48882832(c)Y
488833 f
488841618 4104(Figure)N
488851890(17.)X
488861 f
488872044(Attribute)X
488882385(encodings,)X
488892786(part)X
488902945(1)X
488912 f
488921368 4260(The)N
488931553(use)X
488941723(of)X
488951845(address-type)X
488962347(references)X
488972767(allows)X
488983052(for)X
488993209(the)X
489003371(commonization)X
489013963(of)X
489021368 4364(information,)N
489031829(such)X
489042012(as)X
489052112(types,)X
489062337(across)X
489072588(compilation)X
489083032(units.)X
489091 f
48910576 4520(string)N
489111368(A)X
489121461(string)X
489131692(is)X
489141781(a)X
489151851(sequence)X
489162204(of)X
489172308(contiguous)X
489182726(non-null)X
489193056(bytes)X
489203273(followed)X
489213617(by)X
489223736(one)X
489233894(null)X
489241368 4624(byte.)N
489251628(A)X
489261755(string)X
489272020(may)X
489282236(be)X
489292383(represented)X
489302851 0.3187(immediately)AX
489313357(in)X
489323489(the)X
489333660(debugging)X
489341368 4728(information)N
489351811(entry)X
489362019(itself)X
489372223(\()X
489380 f
489392252(DW_FORM_string)X
489401 f
489412994(\),)X
489423072(or)X
489433172(may)X
489443351(be)X
489453461(represented)X
489463893(as)X
489473993(a)X
489481368 4832(4-byte)N
489491622(offset)X
489501851(into)X
489512018(a)X
489522086(string)X
489532316(table)X
489542517(contained)X
489552889(in)X
489562987(the)X
489570 f
489583123(.debug_str)X
489591 f
489603681(section)X
489613959(of)X
489621368 4936(the)N
489631498(object)X
489641736(\256le)X
489651871(\()X
489660 f
489671900(DW_FORM_strp)X
489681 f
489692536(\).)X
48970576 5092(The)N
48971735(form)X
48972928(encodings)X
489731307(are)X
489741436(listed)X
489751650(in)X
489761741(Figure)X
489771993(19.)X
489783 f
4897912 s
48980576 5248(7.6)N
48981744(Variable)X
489821126(Length)X
489831443(Data)X
489841 f
4898511 s
48986576 5404(The)N
48987746(special)X
489881024(constant)X
489891351(data)X
489901531(forms)X
489910 f
489921769(DW_FORM_sdata)X
489931 f
489942491(and)X
489950 f
489962651(DW_FORM_udata)X
489971 f
489983373(are)X
489993514(encoded)X
490003841(using)X
49001576 5508(``Little)N
49002873(Endian)X
490031169(Base)X
490041386(128'')X
490051622(\(LEB128\))X
490062025(numbers.)X
490072396(LEB128)X
490082741(is)X
490092845(a)X
490102929(scheme)X
490113238(for)X
490123385(encoding)X
490133753(integers)X
49014576 5612(densely)N
49015868(that)X
490161024(exploits)X
490171327(the)X
490181458(assumption)X
490191883(that)X
490202039(most)X
490212234(integers)X
490222536(are)X
490232666(small)X
490242882(in)X
490252975(magnitude.)X
490263416(\(This)X
490273626(encoding)X
490283973(is)X
49029576 5716(equally)N
49030870(suitable)X
490311179(whether)X
490321496(the)X
490331637(target)X
490341871(machine)X
490352203(architecture)X
490362652(represents)X
490373041(data)X
490383221(in)X
490393323(big-endian)X
490403733(or)X
490413839(little-)X
49042576 5820(endian)N
49043842(order.)X
490441102(It)X
490451188(is)X
490461279(``little)X
490471533(endian'')X
490481858(only)X
490492047(in)X
490502148(the)X
490512288(sense)X
490522510(that)X
490532675(it)X
490542757(avoids)X
490553019(using)X
490563242(space)X
490573469(to)X
490583570(represent)X
490593924(the)X
4906010 s
49061576 5951(Revision:)N
49062902(2.0.0)X
490632176(Page)X
490642352(70)X
490653599(July)X
490663752(27,)X
490673872(1993)X
490681943 6055(Industry)N
490692230(Review)X
490702495(Draft)X
49071
4907271 p
49073%%Page: 71 73
490740(Courier)xf 0 f
4907510 s 0 xH 0 xS 0 f
4907611 s
490771 f
4907810 s
490793075 520(Programming)N
490803535(Languages)X
490813903(SIG)X
4908211 s
4908310 f
49084948 744(i)N
49085976(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
490861 f
49087992 848(Attribute)N
490881333(name)X
490892502(Value)X
490902952(Classes)X
4909110 f
49092948 864(i)N
49093976(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
490940 f
49095992 968 0.1969(DW_AT_abstract_origin)AN
490962502(0x31)X
490971 f
490982952(reference)X
490990 f
49100992 1072 0.1979(DW_AT_accessibility)AN
491012502(0x32)X
491021 f
491032952(constant)X
491040 f
49105992 1176 0.1979(DW_AT_address_class)AN
491062502(0x33)X
491071 f
491082952(constant)X
491090 f
49110992 1280(DW_AT_artificial)N
491112502(0x34)X
491121 f
491132952(\257ag)X
491140 f
49115992 1384(DW_AT_base_types)N
491162502(0x35)X
491171 f
491182952(reference)X
491190 f
49120992 1488 0.1957(DW_AT_calling_convention)AN
491212502(0x36)X
491221 f
491232952(constant)X
491240 f
49125992 1592(DW_AT_count)N
491262502(0x37)X
491271 f
491282952(constant,)X
491293290(reference)X
491300 f
49131992 1696 0.1950(DW_AT_data_member_location)AN
491322502(0x38)X
491331 f
491342952(block,)X
491353192(reference)X
491360 f
49137992 1800 0.1992(DW_AT_decl_column)AN
491382502(0x39)X
491391 f
491402952(constant)X
491410 f
49142992 1904(DW_AT_decl_file)N
491432502(0x3a)X
491441 f
491452952(constant)X
491460 f
49147992 2008(DW_AT_decl_line)N
491482502(0x3b)X
491491 f
491502952(constant)X
491510 f
49152992 2112 0.1992(DW_AT_declaration)AN
491532502(0x3c)X
491541 f
491552952(\257ag)X
491560 f
49157992 2216(DW_AT_discr_list)N
491582502(0x3d)X
491591 f
491602952(block)X
491610 f
49162992 2320(DW_AT_encoding)N
491632502(0x3e)X
491641 f
491652952(constant)X
491660 f
49167992 2424(DW_AT_external)N
491682502(0x3f)X
491691 f
491702952(\257ag)X
491710 f
49172992 2528(DW_AT_frame_base)N
491732502(0x40)X
491741 f
491752952(block,)X
491763192(constant)X
491770 f
49178992 2632(DW_AT_friend)N
491792502(0x41)X
491801 f
491812952(reference)X
491820 f
49183992 2736 0.1969(DW_AT_identifier_case)AN
491842502(0x42)X
491851 f
491862952(constant)X
491870 f
49188992 2840(DW_AT_macro_info)N
491892502(0x43)X
491901 f
491912952(constant)X
491920 f
49193992 2944 0.1979(DW_AT_namelist_item)AN
491942502(0x44)X
491951 f
491962952(block)X
491970 f
49198992 3048(DW_AT_priority)N
491992502(0x45)X
492001 f
492012952(reference)X
492020 f
49203992 3152(DW_AT_segment)N
492042502(0x46)X
492051 f
492062952(block,)X
492073192(constant)X
492080 f
49209992 3256 0.1979(DW_AT_specification)AN
492102502(0x47)X
492111 f
492122952(reference)X
492130 f
49214992 3360 0.1992(DW_AT_static_link)AN
492152502(0x48)X
492161 f
492172952(block,)X
492183192(constant)X
492190 f
49220992 3464(DW_AT_type)N
492212502(0x49)X
492221 f
492232952(reference)X
492240 f
49225992 3568 0.1985(DW_AT_use_location)AN
492262502(0x4a)X
492271 f
492282952(block,)X
492293192(constant)X
492300 f
49231992 3672 0.1957(DW_AT_variable_parameter)AN
492322502(0x4b)X
492331 f
492342952(\257ag)X
492350 f
49236992 3776(DW_AT_virtuality)N
492372502(0x4c)X
492381 f
492392952(constant)X
492400 f
49241992 3880 0.1950(DW_AT_vtable_elem_location)AN
492422502(0x4d)X
492431 f
492442952(block,)X
492453192(reference)X
492460 f
49247992 3984(DW_AT_lo_user)N
492482502(0x2000)X
492491 f
492502952(\320)X
492510 f
49252992 4088(DW_AT_hi_user)N
492532502(0x3fff)X
492541 f
492552952(\320)X
4925610 f
49257948 4104(i)N
49258976(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
49259948(c)X
492604088(c)Y
492614000(c)Y
492623912(c)Y
492633824(c)Y
492643736(c)Y
492653648(c)Y
492663560(c)Y
492673472(c)Y
492683384(c)Y
492693296(c)Y
492703208(c)Y
492713120(c)Y
492723032(c)Y
492732944(c)Y
492742856(c)Y
492752768(c)Y
492762680(c)Y
492772592(c)Y
492782504(c)Y
492792416(c)Y
492802328(c)Y
492812240(c)Y
492822152(c)Y
492832064(c)Y
492841976(c)Y
492851888(c)Y
492861800(c)Y
492871712(c)Y
492881624(c)Y
492891536(c)Y
492901448(c)Y
492911360(c)Y
492921272(c)Y
492931184(c)Y
492941096(c)Y
492951008(c)Y
49296920(c)Y
49297832(c)Y
492983660 4104(c)N
492994088(c)Y
493004000(c)Y
493013912(c)Y
493023824(c)Y
493033736(c)Y
493043648(c)Y
493053560(c)Y
493063472(c)Y
493073384(c)Y
493083296(c)Y
493093208(c)Y
493103120(c)Y
493113032(c)Y
493122944(c)Y
493132856(c)Y
493142768(c)Y
493152680(c)Y
493162592(c)Y
493172504(c)Y
493182416(c)Y
493192328(c)Y
493202240(c)Y
493212152(c)Y
493222064(c)Y
493231976(c)Y
493241888(c)Y
493251800(c)Y
493261712(c)Y
493271624(c)Y
493281536(c)Y
493291448(c)Y
493301360(c)Y
493311272(c)Y
493321184(c)Y
493331096(c)Y
493341008(c)Y
49335920(c)Y
49336832(c)Y
493373 f
493381618 4208(Figure)N
493391890(18.)X
493401 f
493412044(Attribute)X
493422385(encodings,)X
493432786(part)X
493442945(2)X
49345576 4364(``big'')N
49346827(end)X
49347976(of)X
493481071(an)X
493491176(unsigned)X
493501516(integer,)X
493511805(when)X
493522017(the)X
493532147(big)X
493542282(end)X
493552431(is)X
493562512(all)X
493572623(zeroes)X
493582869(or)X
493592964(sign)X
493603133(extension)X
493613493(bits\).)X
493620 f
49363576 4520(DW_FORM_udata)N
493641 f
493651295(\(unsigned)X
493661672(LEB128\))X
493672030(numbers)X
493682363(are)X
493692500(encoded)X
493702823(as)X
493712926(follows:)X
493723267(start)X
493733450(at)X
493743545(the)X
493753684(low)X
493763847(order)X
49377576 4624(end)N
49378731(of)X
49379832(an)X
49380943(unsigned)X
493811289(integer)X
493821561(and)X
493831715(chop)X
493841913(it)X
493851990(into)X
493862155(7-bit)X
493872349(chunks.)X
493882669(Place)X
493892887(each)X
493903075(chunk)X
493913317(into)X
493923482(the)X
493933617(low)X
493943776(order)X
493953988(7)X
49396576 4728(bits)N
49397736(of)X
49398841(a)X
49399912(byte.)X
494001140(Typically,)X
494011533(several)X
494021814(of)X
494031919(the)X
494042059(high)X
494052248(order)X
494062465(bytes)X
494072683(will)X
494082853(be)X
494092968(zero;)X
494103177(discard)X
494113464(them.)X
494123718(Emit)X
494133924(the)X
49414576 4832(remaining)N
49415961(bytes)X
494161174(in)X
494171270(a)X
494181336(stream,)X
494191620(starting)X
494201912(with)X
494212096(the)X
494222231(low)X
494232390(order)X
494242602(byte;)X
494252806(set)X
494262931(the)X
494273065(high)X
494283248(order)X
494293459(bit)X
494303579(on)X
494313693(each)X
494323880(byte)X
49433576 4936(except)N
49434832(the)X
49435966(last)X
494361115(emitted)X
494371407(byte.)X
494381629(The)X
494391792(high)X
494401975(bit)X
494412095(of)X
494422194(zero)X
494432371(on)X
494442485(the)X
494452619(last)X
494462768(byte)X
494472946(indicates)X
494483286(to)X
494493382(the)X
494503517(decoder)X
494513822(that)X
494523982(it)X
49453576 5040(has)N
49454715(encountered)X
494551167(the)X
494561297(last)X
494571442(byte.)X
49458576 5196(The)N
49459735(integer)X
494601002(zero)X
494611175(is)X
494621256(a)X
494631317(special)X
494641584(case,)X
494651779(consisting)X
494662159(of)X
494672254(a)X
494682315(single)X
494692548(zero)X
494702721(byte.)X
494712 f
49472576 5352(Figure)N
49473847(20)X
49474966(gives)X
494751178(some)X
494761389(examples)X
494771747(of)X
494780 f
494791847(DW_FORM_udata)X
494802 f
494812567(numbers.)X
494822944(The)X
494830 f
494843107(0x80)X
494852 f
494863350(in)X
494873450(each)X
494883647(case)X
494893834(is)X
494903924(the)X
49491576 5456(high)N
49492755(order)X
49493972(bit)X
494941088(of)X
494951179(the)X
494961309(byte,)X
494971500(indicating)X
494981881(that)X
494992041(an)X
495002151(additional)X
495012537(byte)X
495022706(follows:)X
495031 f
49504576 5612(The)N
49505758(encoding)X
495061126(for)X
495070 f
495081273(DW_FORM_sdata)X
495091 f
495102007(\(signed,)X
495112333(2s)X
495122456(complement)X
495132938(LEB128\))X
495143311(numbers)X
495153659(is)X
495163764(similar,)X
49517576 5716(except)N
49518832(that)X
49519991(the)X
495201125(criterion)X
495211450(for)X
495221578(discarding)X
495231971(high)X
495242153(order)X
495252363(bytes)X
495262574(is)X
495272658(not)X
495282796(whether)X
495293104(they)X
495303281(are)X
495313413(zero,)X
495323611(but)X
495333749(whether)X
49534576 5820(they)N
49535753(consist)X
495361023(entirely)X
495371318(of)X
495381416(sign)X
495391588(extension)X
495401952(bits.)X
495412150(Consider)X
495422494(the)X
495432628(32-bit)X
495442865(integer)X
495450 f
495463136(-2)X
495471 f
495483242(.)X
495493312(The)X
495503475(three)X
495513677(high)X
495523860(level)X
4955310 s
49554576 5951(Revision:)N
49555902(2.0.0)X
495562176(Page)X
495572352(71)X
495583599(July)X
495593752(27,)X
495603872(1993)X
495611943 6055(Industry)N
495622230(Review)X
495632495(Draft)X
49564
4956572 p
49566%%Page: 72 74
495670(Courier)xf 0 f
4956810 s 0 xH 0 xS 0 f
4956911 s
495701 f
4957110 s
49572576 520(DWARF)N
49573885(Debugging)X
495741261(Information)X
495751664(Format)X
4957611 s
4957710 f
495781251 744(i)N
495791288(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
495801 f
495811295 848(Form)N
495821508(name)X
495832328(Value)X
495842672(Class)X
4958510 f
495861251 864(i)N
495871288(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
495880 f
495891295 968(DW_FORM_addr)N
495902328(0x01)X
495911 f
495922672(address)X
495930 f
495941295 1072(DW_FORM_block2)N
495952328(0x03)X
495961 f
495972672(block)X
495980 f
495991295 1176(DW_FORM_block4)N
496002328(0x04)X
496011 f
496022672(block)X
496030 f
496041295 1280(DW_FORM_data2)N
496052328(0x05)X
496061 f
496072672(constant)X
496080 f
496091295 1384(DW_FORM_data4)N
496102328(0x06)X
496111 f
496122672(constant)X
496130 f
496141295 1488(DW_FORM_data8)N
496152328(0x07)X
496161 f
496172672(constant)X
496180 f
496191295 1592(DW_FORM_string)N
496202328(0x08)X
496211 f
496222672(string)X
496230 f
496241295 1696(DW_FORM_block)N
496252328(0x09)X
496261 f
496272672(block)X
496280 f
496291295 1800(DW_FORM_block1)N
496302328(0x0a)X
496311 f
496322672(block)X
496330 f
496341295 1904(DW_FORM_data1)N
496352328(0x0b)X
496361 f
496372672(constant)X
496380 f
496391295 2008(DW_FORM_flag)N
496402328(0x0c)X
496411 f
496422672(\257ag)X
496430 f
496441295 2112(DW_FORM_sdata)N
496452328(0x0d)X
496461 f
496472672(constant)X
496480 f
496491295 2216(DW_FORM_strp)N
496502328(0x0e)X
496511 f
496522672(string)X
496530 f
496541295 2320(DW_FORM_udata)N
496552328(0x0f)X
496561 f
496572672(constant)X
496580 f
496591295 2424(DW_FORM_ref_addr)N
496602328(0x10)X
496611 f
496622672(reference)X
496630 f
496641295 2528(DW_FORM_ref1)N
496652328(0x11)X
496661 f
496672672(reference)X
496680 f
496691295 2632(DW_FORM_ref2)N
496702328(0x12)X
496711 f
496722672(reference)X
496730 f
496741295 2736(DW_FORM_ref4)N
496752328(0x13)X
496761 f
496772672(reference)X
496780 f
496791295 2840(DW_FORM_ref8)N
496802328(0x14)X
496811 f
496822672(reference)X
496830 f
496841295 2944 0.1992(DW_FORM_ref_udata)AN
496852328(0x15)X
496861 f
496872672(reference)X
496880 f
496891295 3048(DW_FORM_indirect)N
496902328(0x16)X
496911 f
496922672(\(see)X
496932835(section)X
496943107(7.5.3\))X
4969510 f
496961251 3064(i)N
496971288(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
496981251(c)X
496993032(c)Y
497002944(c)Y
497012856(c)Y
497022768(c)Y
497032680(c)Y
497042592(c)Y
497052504(c)Y
497062416(c)Y
497072328(c)Y
497082240(c)Y
497092152(c)Y
497102064(c)Y
497111976(c)Y
497121888(c)Y
497131800(c)Y
497141712(c)Y
497151624(c)Y
497161536(c)Y
497171448(c)Y
497181360(c)Y
497191272(c)Y
497201184(c)Y
497211096(c)Y
497221008(c)Y
49723920(c)Y
49724832(c)Y
497253356 3064(c)N
497263032(c)Y
497272944(c)Y
497282856(c)Y
497292768(c)Y
497302680(c)Y
497312592(c)Y
497322504(c)Y
497332416(c)Y
497342328(c)Y
497352240(c)Y
497362152(c)Y
497372064(c)Y
497381976(c)Y
497391888(c)Y
497401800(c)Y
497411712(c)Y
497421624(c)Y
497431536(c)Y
497441448(c)Y
497451360(c)Y
497461272(c)Y
497471184(c)Y
497481096(c)Y
497491008(c)Y
49750920(c)Y
49751832(c)Y
497523 f
497531645 3168(Figure)N
497541917(19.)X
497551 f
497562071(Attribute)X
497572412(form)X
497582605(encodings)X
4975910 f
497601582 3236(i)N
497611618(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
497621 f
497631626 3340(Number)N
497642046(First)X
497652230(byte)X
497662549(Second)X
497672830(byte)X
4976810 f
497691582 3356(i)N
497701618(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
497710 f
497721849 3460(2)N
497732046(2)X
497742549(\320)X
497751743 3564(127)N
497762046(127)X
497772549(\320)X
497781743 3668(128)N
497792046(0+0x80)X
497802549(1)X
497811743 3772(129)N
497822046(1+0x80)X
497832549(1)X
497841743 3876(130)N
497852046(2+0x80)X
497862549(1)X
497871637 3980(12857)N
497882046(57+0x80)X
497892549(100)X
497901 f
4979110 f
497921582 3996(i)N
497931618(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
497941582(c)X
497953940(c)Y
497963852(c)Y
497973764(c)Y
497983676(c)Y
497993588(c)Y
498003500(c)Y
498013412(c)Y
498023324(c)Y
498033026 3996(c)N
498043940(c)Y
498053852(c)Y
498063764(c)Y
498073676(c)Y
498083588(c)Y
498093500(c)Y
498103412(c)Y
498113324(c)Y
498123 f
498131349 4100(Figure)N
498141621(20.)X
498151 f
498161775(Examples)X
498172145(of)X
498182240(unsigned)X
498192580(LEB128)X
498202901(encodings)X
49821576 4256(bytes)N
49822808(of)X
49823927(the)X
498241081(number)X
498251396(are)X
498261549(sign)X
498271742(extension,)X
498282148(thus)X
498292341(LEB128)X
498302686(would)X
498312952(represent)X
498323320(it)X
498333416(as)X
498343536(a)X
498353622(single)X
498363880(byte)X
49837576 4360(containing)N
49838982(the)X
498391123(low)X
498401288(order)X
498411506(7)X
498421583(bits,)X
498431766(with)X
498441956(the)X
498452097(high)X
498462287(order)X
498472505(bit)X
498482632(cleared)X
498492919(to)X
498503021(indicate)X
498513334(the)X
498523475(end)X
498533635(of)X
498543740(the)X
498553880(byte)X
49856576 4464(stream.)N
49857887(Note)X
498581090(that)X
498591255(there)X
498601463(is)X
498611554(nothing)X
498621856(within)X
498632115(the)X
498642256(LEB128)X
498652588(representation)X
498663120(that)X
498673286(indicates)X
498683633(whether)X
498693949(an)X
49870576 4568(encoded)N
49871891(number)X
498721182(is)X
498731263(signed)X
498741515(or)X
498751610(unsigned.)X
498761994(The)X
498772153(decoder)X
498782453(must)X
498792647(know)X
498802864(what)X
498813057(type)X
498823231(of)X
498833326(number)X
498843617(to)X
498853708(expect.)X
498862 f
49887576 4724(Figure)N
49888838(21)X
49889948(gives)X
498901151(some)X
498911353(examples)X
498921702(of)X
498930 f
498941793(DW_FORM_sdata)X
498952 f
498962504(numbers.)X
49897576 4880(Appendix)N
49898931(4)X
49899997(gives)X
499001200(algorithms)X
499011604(for)X
499021729(encoding)X
499032074(and)X
499042228(decoding)X
499052573(these)X
499062776(forms.)X
499073 f
4990812 s
49909576 5036(7.7)N
49910744(Location)X
499111131(Descriptions)X
4991211 s
49913576 5192(7.7.1)N
49914796(Location)X
499151151(Expressions)X
499161 f
49917576 5348(A)N
49918686(location)X
499191018(expression)X
499201441(is)X
499211547(stored)X
499221809(in)X
499231925(a)X
499242011(block)X
499252254(of)X
499262375(contiguous)X
499272810(bytes.)X
499283088(The)X
499293273(bytes)X
499303507(form)X
499313726(a)X
499323813(set)X
499333959(of)X
49934576 5452(operations.)N
499351017(Each)X
499361223(location)X
499371538(operation)X
499381900(has)X
499392046(a)X
499402114(1-byte)X
499412368(code)X
499422563(that)X
499432725(identi\256es)X
499443078(that)X
499453240(operation.)X
499463646(Operations)X
49947576 5556(can)N
49948724(be)X
49949833(followed)X
499501172(by)X
499511286(one)X
499521439(or)X
499531538(more)X
499541745(bytes)X
499551957(of)X
499562056(additional)X
499572436(data.)X
499582653(All)X
499592792(operations)X
499603185(in)X
499613280(a)X
499623345(location)X
499633656(expression)X
49964576 5660(are)N
49965708(concatenated)X
499661193(from)X
499671389(left)X
499681532(to)X
499691626(right.)X
499701862(The)X
499712024(encodings)X
499722406(for)X
499732533(the)X
499742666(operations)X
499753058(in)X
499763152(a)X
499773216(location)X
499783525(expression)X
499793925(are)X
49980576 5764(described)N
49981935(in)X
499821026(Figures)X
499831312(22)X
499841422(and)X
499851571(23.)X
4998610 s
49987576 5951(Revision:)N
49988902(2.0.0)X
499892176(Page)X
499902352(72)X
499913599(July)X
499923752(27,)X
499933872(1993)X
499941943 6055(Industry)N
499952230(Review)X
499962495(Draft)X
49997
4999873 p
49999%%Page: 73 75
500000(Courier)xf 0 f
5000110 s 0 xH 0 xS 0 f
5000211 s
500031 f
5000410 s
500053075 520(Programming)N
500063535(Languages)X
500073903(SIG)X
5000811 s
5000910 f
500101529 744(i)N
500111539(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
500121 f
500131573 848(Number)N
500141993(First)X
500152177(byte)X
500162602(Second)X
500172883(byte)X
5001810 f
500191529 864(i)N
500201539(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
500210 f
500221770 968(2)N
500231993(2)X
500242602(\320)X
500251717 1072(-2)N
500261993(0x7e)X
500272602(\320)X
500281664 1176(127)N
500291993(127+0x80)X
500302602(0)X
500311611 1280(-127)N
500321993(1+0x80)X
500332602(0x7f)X
500341664 1384(128)N
500351993(0+0x80)X
500362602(1)X
500371611 1488(-128)N
500381993(0+0x80)X
500392602(0x7f)X
500401664 1592(129)N
500411993(1+0x80)X
500422602(1)X
500431611 1696(-129)N
500441993(0x7f+0x80)X
500452602(0x7e)X
500461 f
5004710 f
500481529 1712(i)N
500491539(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
500501529(c)X
500511624(c)Y
500521536(c)Y
500531448(c)Y
500541360(c)Y
500551272(c)Y
500561184(c)Y
500571096(c)Y
500581008(c)Y
50059920(c)Y
50060832(c)Y
500613079 1712(c)N
500621624(c)Y
500631536(c)Y
500641448(c)Y
500651360(c)Y
500661272(c)Y
500671184(c)Y
500681096(c)Y
500691008(c)Y
50070920(c)Y
50071832(c)Y
500723 f
500731393 1816(Figure)N
500741665(21.)X
500751 f
500761819(Examples)X
500772189(of)X
500782284(signed)X
500792536(LEB128)X
500802857(encodings)X
5008110 f
50082576 1884(i)N
50083594(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
500841 f
50085620 1988(Operation)N
500861653(Code)X
500871997(No.)X
500882148(of)X
500892243(Operands)X
500902711(Notes)X
5009110 f
50092576 2004(i)N
50093594(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
500940 f
50095620 2108(DW_OP_addr)N
500961653(0x03)X
500971 f
500981997(1)X
500992711(constant)X
501003027(address)X
501013312(\(size)X
501023500(target)X
501033723(speci\256c\))X
501040 f
50105620 2212(DW_OP_deref)N
501061653(0x06)X
501071 f
501081997(0)X
501090 f
50110620 2316(DW_OP_const1u)N
501111653(0x08)X
501121 f
501131997(1)X
501142711(1-byte)X
501152958(constant)X
501160 f
50117620 2420(DW_OP_const1s)N
501181653(0x09)X
501191 f
501201997(1)X
501212711(1-byte)X
501222958(constant)X
501230 f
50124620 2524(DW_OP_const2u)N
501251653(0x0a)X
501261 f
501271997(1)X
501282711(2-byte)X
501292958(constant)X
501300 f
50131620 2628(DW_OP_const2s)N
501321653(0x0b)X
501331 f
501341997(1)X
501352711(2-byte)X
501362958(constant)X
501370 f
50138620 2732(DW_OP_const4u)N
501391653(0x0c)X
501401 f
501411997(1)X
501422711(4-byte)X
501432958(constant)X
501440 f
50145620 2836(DW_OP_const4s)N
501461653(0x0d)X
501471 f
501481997(1)X
501492711(4-byte)X
501502958(constant)X
501510 f
50152620 2940(DW_OP_const8u)N
501531653(0x0e)X
501541 f
501551997(1)X
501562711(8-byte)X
501572958(constant)X
501580 f
50159620 3044(DW_OP_const8s)N
501601653(0x0f)X
501611 f
501621997(1)X
501632711(8-byte)X
501642958(constant)X
501650 f
50166620 3148(DW_OP_constu)N
501671653(0x10)X
501681 f
501691997(1)X
501702711(ULEB128)X
501713095(constant)X
501720 f
50173620 3252(DW_OP_consts)N
501741653(0x11)X
501751 f
501761997(1)X
501772711(SLEB128)X
501783081(constant)X
501790 f
50180620 3356(DW_OP_dup)N
501811653(0x12)X
501821 f
501831997(0)X
501840 f
50185620 3460(DW_OP_drop)N
501861653(0x13)X
501871 f
501881997(0)X
501890 f
50190620 3564(DW_OP_over)N
501911653(0x14)X
501921 f
501931997(0)X
501940 f
50195620 3668(DW_OP_pick)N
501961653(0x15)X
501971 f
501981997(1)X
501992711(1-byte)X
502002958(stack)X
502013161(index)X
502020 f
50203620 3772(DW_OP_swap)N
502041653(0x16)X
502051 f
502061997(0)X
502070 f
50208620 3876(DW_OP_rot)N
502091653(0x17)X
502101 f
502111997(0)X
502120 f
50213620 3980(DW_OP_xderef)N
502141653(0x18)X
502151 f
502161997(0)X
502170 f
50218620 4084(DW_OP_abs)N
502191653(0x19)X
502201 f
502211997(0)X
502220 f
50223620 4188(DW_OP_and)N
502241653(0x1a)X
502251 f
502261997(0)X
502270 f
50228620 4292(DW_OP_div)N
502291653(0x1b)X
502301 f
502311997(0)X
502320 f
50233620 4396(DW_OP_minus)N
502341653(0x1c)X
502351 f
502361997(0)X
502370 f
50238620 4500(DW_OP_mod)N
502391653(0x1d)X
502401 f
502411997(0)X
502420 f
50243620 4604(DW_OP_mul)N
502441653(0x1e)X
502451 f
502461997(0)X
502470 f
50248620 4708(DW_OP_neg)N
502491653(0x1f)X
502501 f
502511997(0)X
502520 f
50253620 4812(DW_OP_not)N
502541653(0x20)X
502551 f
502561997(0)X
502570 f
50258620 4916(DW_OP_or)N
502591653(0x21)X
502601 f
502611997(0)X
502620 f
50263620 5020(DW_OP_plus)N
502641653(0x22)X
502651 f
502661997(0)X
502670 f
50268620 5124 0.1992(DW_OP_plus_uconst)AN
502691653(0x23)X
502701 f
502711997(1)X
502722711(ULEB128)X
502733095(addend)X
502740 f
50275620 5228(DW_OP_shl)N
502761653(0x24)X
502771 f
502781997(0)X
502790 f
50280620 5332(DW_OP_shr)N
502811653(0x25)X
502821 f
502831997(0)X
502840 f
50285620 5436(DW_OP_shra)N
502861653(0x26)X
502871 f
502881997(0)X
5028910 f
50290576 5452(i)N
50291594(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
50292576(c)X
502935404(c)Y
502945316(c)Y
502955228(c)Y
502965140(c)Y
502975052(c)Y
502984964(c)Y
502994876(c)Y
503004788(c)Y
503014700(c)Y
503024612(c)Y
503034524(c)Y
503044436(c)Y
503054348(c)Y
503064260(c)Y
503074172(c)Y
503084084(c)Y
503093996(c)Y
503103908(c)Y
503113820(c)Y
503123732(c)Y
503133644(c)Y
503143556(c)Y
503153468(c)Y
503163380(c)Y
503173292(c)Y
503183204(c)Y
503193116(c)Y
503203028(c)Y
503212940(c)Y
503222852(c)Y
503232764(c)Y
503242676(c)Y
503252588(c)Y
503262500(c)Y
503272412(c)Y
503282324(c)Y
503292236(c)Y
503302148(c)Y
503312060(c)Y
503321972(c)Y
503334070 5452(c)N
503345404(c)Y
503355316(c)Y
503365228(c)Y
503375140(c)Y
503385052(c)Y
503394964(c)Y
503404876(c)Y
503414788(c)Y
503424700(c)Y
503434612(c)Y
503444524(c)Y
503454436(c)Y
503464348(c)Y
503474260(c)Y
503484172(c)Y
503494084(c)Y
503503996(c)Y
503513908(c)Y
503523820(c)Y
503533732(c)Y
503543644(c)Y
503553556(c)Y
503563468(c)Y
503573380(c)Y
503583292(c)Y
503593204(c)Y
503603116(c)Y
503613028(c)Y
503622940(c)Y
503632852(c)Y
503642764(c)Y
503652676(c)Y
503662588(c)Y
503672500(c)Y
503682412(c)Y
503692324(c)Y
503702236(c)Y
503712148(c)Y
503722060(c)Y
503731972(c)Y
503743 f
503751443 5556(Figure)N
503761715(22.)X
503771 f
503781869(Location)X
503792205(operation)X
503802560(encodings,)X
503812961(part)X
503823120(1)X
5038310 s
50384576 5951(Revision:)N
50385902(2.0.0)X
503862176(Page)X
503872352(73)X
503883599(July)X
503893752(27,)X
503903872(1993)X
503911943 6055(Industry)N
503922230(Review)X
503932495(Draft)X
50394
5039574 p
50396%%Page: 74 76
503970(Courier)xf 0 f
5039810 s 0 xH 0 xS 0 f
5039911 s
504001 f
5040110 s
50402576 520(DWARF)N
50403885(Debugging)X
504041261(Information)X
504051664(Format)X
5040611 s
5040710 f
50408576 744(i)N
50409612(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
504101 f
50411620 848(Operation)N
504121653(Code)X
504131997(No.)X
504142148(of)X
504152243(Operands)X
504162711(Notes)X
5041710 f
50418576 864(i)N
50419612(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
504200 f
50421620 968(DW_OP_xor)N
504221653(0x27)X
504231 f
504241997(0)X
504250 f
50426620 1072(DW_OP_skip)N
504271653(0x2f)X
504281 f
504291997(1)X
504302711(signed)X
504312963(2-byte)X
504323210(constant)X
504330 f
50434620 1176(DW_OP_bra)N
504351653(0x28)X
504361 f
504371997(1)X
504382711(signed)X
504392963(2-byte)X
504403210(constant)X
504410 f
50442620 1280(DW_OP_eq)N
504431653(0x29)X
504441 f
504451997(0)X
504460 f
50447620 1384(DW_OP_ge)N
504481653(0x2a)X
504491 f
504501997(0)X
504510 f
50452620 1488(DW_OP_gt)N
504531653(0x2b)X
504541 f
504551997(0)X
504560 f
50457620 1592(DW_OP_le)N
504581653(0x2c)X
504591 f
504601997(0)X
504610 f
50462620 1696(DW_OP_lt)N
504631653(0x2d)X
504641 f
504651997(0)X
504660 f
50467620 1800(DW_OP_ne)N
504681653(0x2e)X
504691 f
504701997(0)X
504710 f
50472620 1904(DW_OP_lit0)N
504731653(0x30)X
504741 f
504751997(0)X
504762711(literals)X
504772974(0..31)X
504783172(=)X
504793244(\(DW_OP_LIT0)X
504809 f
504813800(|)X
504821 f
504833818(literal\))X
504840 f
50485620 2008(DW_OP_lit1)N
504861653(0x31)X
504871 f
504881997(0)X
504890 f
50490620 2112(...)N
50491620 2216(DW_OP_lit31)N
504921653(0x4f)X
504931 f
504941997(0)X
504950 f
50496620 2320(DW_OP_reg0)N
504971653(0x50)X
504981 f
504991997(0)X
505002711(reg)X
505012845(0..31)X
505023043(=)X
505033115(\(DW_OP_REG0)X
505049 f
505053710(|)X
505061 f
505073728(regnum\))X
505080 f
50509620 2424(DW_OP_reg1)N
505101653(0x51)X
505111 f
505121997(0)X
505130 f
50514620 2528(...)N
50515620 2632(DW_OP_reg31)N
505161653(0x6f)X
505171 f
505181997(0)X
505190 f
50520620 2736(DW_OP_breg0)N
505211653(0x70)X
505221 f
505231997(1)X
505242711(SLEB128)X
505253081(offset)X
505260 f
50527620 2840(DW_OP_breg1)N
505281653(0x71)X
505291 f
505301997(1)X
505312711(base)X
505322889(reg)X
505333023(0..31)X
505343221(=)X
505353293(\(DW_OP_BREG0)X
505369 f
505373947(|)X
505381 f
505393965(regnum\))X
505400 f
50541620 2944(...)N
50542620 3048(DW_OP_breg31)N
505431653(0x8f)X
505441 f
505451997(1)X
505460 f
50547620 3152(DW_OP_regx)N
505481653(0x90)X
505491 f
505501997(1)X
505512711(ULEB128)X
505523095(register)X
505530 f
50554620 3256(DW_OP_fbreg)N
505551653(0x91)X
505561 f
505571997(1)X
505582711(SLEB128)X
505593081(offset)X
505600 f
50561620 3360(DW_OP_bregx)N
505621653(0x92)X
505631 f
505641997(2)X
505652711(ULEB128)X
505663095(register)X
505673381(followed)X
505683716(by)X
505693826(SLEB128)X
505704196(offset)X
505710 f
50572620 3464(DW_OP_piece)N
505731653(0x93)X
505741 f
505751997(1)X
505762711(ULEB128)X
505773095(size)X
505783254(of)X
505793349(piece)X
505803557(addressed)X
505810 f
50582620 3568(DW_OP_deref_size)N
505831653(0x94)X
505841 f
505851997(1)X
505862711(1-byte)X
505872958(size)X
505883117(of)X
505893212(data)X
505903381(retrieved)X
505910 f
50592620 3672 0.1992(DW_OP_xderef_size)AN
505931653(0x95)X
505941 f
505951997(1)X
505962711(1-byte)X
505972958(size)X
505983117(of)X
505993212(data)X
506003381(retrieved)X
506010 f
50602620 3776(DW_OP_nop)N
506031653(0x96)X
506041 f
506051997(0)X
506060 f
50607620 3880(DW_OP_lo_user)N
506081653(0xe0)X
50609620 3984(DW_OP_hi_user)N
506101653(0xff)X
506111 f
5061210 f
50613576 4000(i)N
50614612(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
50615576(c)X
506163912(c)Y
506173824(c)Y
506183736(c)Y
506193648(c)Y
506203560(c)Y
506213472(c)Y
506223384(c)Y
506233296(c)Y
506243208(c)Y
506253120(c)Y
506263032(c)Y
506272944(c)Y
506282856(c)Y
506292768(c)Y
506302680(c)Y
506312592(c)Y
506322504(c)Y
506332416(c)Y
506342328(c)Y
506352240(c)Y
506362152(c)Y
506372064(c)Y
506381976(c)Y
506391888(c)Y
506401800(c)Y
506411712(c)Y
506421624(c)Y
506431536(c)Y
506441448(c)Y
506451360(c)Y
506461272(c)Y
506471184(c)Y
506481096(c)Y
506491008(c)Y
50650920(c)Y
50651832(c)Y
506524440 4000(c)N
506533912(c)Y
506543824(c)Y
506553736(c)Y
506563648(c)Y
506573560(c)Y
506583472(c)Y
506593384(c)Y
506603296(c)Y
506613208(c)Y
506623120(c)Y
506633032(c)Y
506642944(c)Y
506652856(c)Y
506662768(c)Y
506672680(c)Y
506682592(c)Y
506692504(c)Y
506702416(c)Y
506712328(c)Y
506722240(c)Y
506732152(c)Y
506742064(c)Y
506751976(c)Y
506761888(c)Y
506771800(c)Y
506781712(c)Y
506791624(c)Y
506801536(c)Y
506811448(c)Y
506821360(c)Y
506831272(c)Y
506841184(c)Y
506851096(c)Y
506861008(c)Y
50687920(c)Y
50688832(c)Y
506893 f
506901443 4104(Figure)N
506911715(23.)X
506921 f
506931869(Location)X
506942205(operation)X
506952560(encodings,)X
506962961(part)X
506973120(2)X
506983 f
50699576 4260(7.7.2)N
50700796(Location)X
507011151(Lists)X
507021 f
50703576 4416(Each)N
50704792(entry)X
507051013(in)X
507061122(a)X
507071201(location)X
507081526(list)X
507091675(consists)X
507101994(of)X
507112107(two)X
507122279(relative)X
507132584(addresses)X
507142960(followed)X
507153314(by)X
507163443(a)X
507173523(2-byte)X
507183789(length,)X
50719576 4520(followed)N
50720918(by)X
507211035(a)X
507221103(block)X
507231328(of)X
507241430(contiguous)X
507251846(bytes.)X
507262105(The)X
507272271(length)X
507282521(speci\256es)X
507292853(the)X
507302990(number)X
507313288(of)X
507323389(bytes)X
507333603(in)X
507343700(the)X
507353836(block)X
50736576 4624(that)N
50737743(follows.)X
507381085(The)X
507391256(two)X
507401423(addresses)X
507411794(are)X
507421936(the)X
507432079(same)X
507442295(size)X
507452467(as)X
507462575(used)X
507472771(by)X
507480 f
507492894(DW_FORM_addr)X
507501 f
507513565(on)X
507523688(the)X
507533831(target)X
50754576 4728(machine.)N
507553 f
5075612 s
50757576 4884(7.8)N
50758744(Base)X
50759960(Type)X
507601192(Encodings)X
507611 f
5076211 s
50763576 5040(The)N
50764735(values)X
50765982(of)X
507661077(the)X
507671207(constants)X
507681557(used)X
507691740(in)X
507701831(the)X
507710 f
507721961(DW_AT_encoding)X
507731 f
507742725(attribute)X
507753042(are)X
507763171(given)X
507773389(in)X
507783480(Figure)X
507793732(24.)X
507803 f
5078112 s
50782576 5196(7.9)N
50783744(Accessibility)X
507841281(Codes)X
507851 f
5078611 s
50787576 5352(The)N
50788749(encodings)X
507891142(of)X
507901251(the)X
507911396(constants)X
507921761(used)X
507931959(in)X
507942065(the)X
507950 f
507962210 0.1979(DW_AT_accessibility)AX
507971 f
507983254(attribute)X
507993586(are)X
508003730(given)X
508013963(in)X
50802576 5456(Figure)N
50803828(25.)X
5080410 s
50805576 5951(Revision:)N
50806902(2.0.0)X
508072176(Page)X
508082352(74)X
508093599(July)X
508103752(27,)X
508113872(1993)X
508121943 6055(Industry)N
508132230(Review)X
508142495(Draft)X
50815
5081675 p
50817%%Page: 75 77
508180(Courier)xf 0 f
5081910 s 0 xH 0 xS 0 f
5082011 s
508211 f
5082210 s
508233075 520(Programming)N
508243535(Languages)X
508253903(SIG)X
5082611 s
5082710 f
508281558 744 -0.1212(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)AN
508291 f
508301602 848(Base)N
508311795(type)X
508321969(encoding)X
508332314(name)X
508342794(Value)X
5083510 f
508361558 864 -0.1212(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)AN
508370 f
508381602 968(DW_ATE_address)N
508392794(0x1)X
508401602 1072(DW_ATE_boolean)N
508412794(0x2)X
508421602 1176 0.1974(DW_ATE_complex_float)AN
508432794(0x3)X
508441602 1280(DW_ATE_float)N
508452794(0x4)X
508461602 1384(DW_ATE_signed)N
508472794(0x5)X
508481602 1488 0.1985(DW_ATE_signed_char)AN
508492794(0x6)X
508501602 1592(DW_ATE_unsigned)N
508512794(0x7)X
508521602 1696 0.1974(DW_ATE_unsigned_char)AN
508532794(0x8)X
508541602 1800(DW_ATE_lo_user)N
508552794(0x80)X
508561602 1904(DW_ATE_hi_user)N
508572794(0xff)X
508581 f
5085910 f
508601558 1920 -0.1212(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)AN
508611558(c)X
508621888(c)Y
508631800(c)Y
508641712(c)Y
508651624(c)Y
508661536(c)Y
508671448(c)Y
508681360(c)Y
508691272(c)Y
508701184(c)Y
508711096(c)Y
508721008(c)Y
50873920(c)Y
50874832(c)Y
508753050 1920(c)N
508761888(c)Y
508771800(c)Y
508781712(c)Y
508791624(c)Y
508801536(c)Y
508811448(c)Y
508821360(c)Y
508831272(c)Y
508841184(c)Y
508851096(c)Y
508861008(c)Y
50887920(c)Y
50888832(c)Y
508893 f
508901622 2024(Figure)N
508911894(24.)X
508921 f
508932048(Base)X
508942241(type)X
508952415(encoding)X
508962760(values)X
5089710 f
508981585 2092(i)N
508991614(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
509001 f
509011629 2196(Accessibility)N
509022112(code)X
509032300(name)X
509042768(Value)X
5090510 f
509061585 2212(i)N
509071614(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
509080 f
509091629 2316(DW_ACCESS_public)N
509102768(1)X
509111629 2420 0.1979(DW_ACCESS_protected)AN
509122768(2)X
509131629 2524 0.1992(DW_ACCESS_private)AN
509142768(3)X
509151 f
5091610 f
509171585 2540(i)N
509181614(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
509191585(c)X
509202532(c)Y
509212444(c)Y
509222356(c)Y
509232268(c)Y
509242180(c)Y
509253022 2540(c)N
509262532(c)Y
509272444(c)Y
509282356(c)Y
509292268(c)Y
509302180(c)Y
509313 f
509321671 2644(Figure)N
509331943(25.)X
509341 f
509352097(Accessibility)X
509362580(encodings)X
509373 f
5093812 s
50939576 2800(7.10)N
50940792(Visibility)X
509411190(Codes)X
509421 f
5094311 s
50944576 2956(The)N
50945741(encodings)X
509461126(of)X
509471227(the)X
509481363(constants)X
509491719(used)X
509501908(in)X
509512005(the)X
509520 f
509532142(DW_AT_visibility)X
509541 f
509553019(attribute)X
509563343(are)X
509573479(given)X
509583704(in)X
509593802(Figure)X
50960576 3060(26.)N
5096110 f
509621665 3128(i)N
509631667(iiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
509641 f
509651709 3232(Visibility)N
509662066(code)X
509672254(name)X
509682689(Value)X
5096910 f
509701665 3248(i)N
509711667(iiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
509720 f
509731709 3352(DW_VIS_local)N
509742689(1)X
509751709 3456(DW_VIS_exported)N
509762689(2)X
509771709 3560(DW_VIS_qualified)N
509782689(3)X
509791 f
5098010 f
509811665 3576(i)N
509821667(iiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
509831665(c)X
509843568(c)Y
509853480(c)Y
509863392(c)Y
509873304(c)Y
509883216(c)Y
509892943 3576(c)N
509903568(c)Y
509913480(c)Y
509923392(c)Y
509933304(c)Y
509943216(c)Y
509953 f
509961734 3680(Figure)N
509972006(26.)X
509981 f
509992160(Visibility)X
510002517(encodings)X
510013 f
5100212 s
51003576 3836(7.11)N
51004792(Virtuality)X
510051222(Codes)X
510061 f
5100711 s
51008576 3992(The)N
51009741(encodings)X
510101126(of)X
510111227(the)X
510121363(constants)X
510131719(used)X
510141908(in)X
510152005(the)X
510160 f
510172142(DW_AT_virtuality)X
510181 f
510193019(attribute)X
510203343(are)X
510213479(given)X
510223704(in)X
510233802(Figure)X
51024576 4096(27.)N
5102510 f
510261400 4164(i)N
510271404(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
510281 f
510291444 4268(Virtuality)N
510301810(code)X
510311998(name)X
510322954(Value)X
5103310 f
510341400 4284(i)N
510351404(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
510360 f
510371444 4388 0.1985(DW_VIRTUALITY_none)AN
510382954(0)X
510391444 4492 0.1969(DW_VIRTUALITY_virtual)AN
510402954(1)X
510411444 4596 0.1950(DW_VIRTUALITY_pure_virtual)AN
510422954(2)X
510431 f
5104410 f
510451400 4612(i)N
510461404(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
510471400(c)X
510484604(c)Y
510494516(c)Y
510504428(c)Y
510514340(c)Y
510524252(c)Y
510533208 4612(c)N
510544604(c)Y
510554516(c)Y
510564428(c)Y
510574340(c)Y
510584252(c)Y
510593 f
510601729 4716(Figure)N
510612001(27.)X
510621 f
510632155(Virtuality)X
510642521(encodings)X
510653 f
5106612 s
51067576 4872(7.12)N
51068792(Source)X
510691099(Languages)X
510701 f
5107111 s
51072576 5028(The)N
51073749(encodings)X
510741142(for)X
510751280(source)X
510761545(languages)X
510771933(are)X
510782076(given)X
510792308(in)X
510802413(Figure)X
510812680(28.)X
510822849(Names)X
510833130(marked)X
510843431(with)X
510853625(\262)X
510863706(and)X
510873870(their)X
51088576 5132(associated)N
51089973(values)X
510901232(are)X
510911373(reserved,)X
510921726(but)X
510931873(the)X
510942015(languages)X
510952401(they)X
510962587(represent)X
510972943(are)X
510983084(not)X
510993231(supported)X
511003612(in)X
511013715(DWARF)X
51102576 5236(Version)N
51103876(2.)X
511043 f
5110512 s
51106576 5392(7.13)N
51107792(Address)X
511081151(Class)X
511091393(Encodings)X
511101 f
5111111 s
51112576 5548(The)N
51113735(value)X
51114948(of)X
511151043(the)X
511161173(common)X
511171504(address)X
511181789(class)X
511191982(encoding)X
511200 f
511212327(DW_ADDR_none)X
511221 f
511232985(is)X
511243066(0.)X
5112510 s
51126576 5951(Revision:)N
51127902(2.0.0)X
511282176(Page)X
511292352(75)X
511303599(July)X
511313752(27,)X
511323872(1993)X
511331943 6055(Industry)N
511342230(Review)X
511352495(Draft)X
51136
5113776 p
51138%%Page: 76 78
511390(Courier)xf 0 f
5114010 s 0 xH 0 xS 0 f
5114111 s
511421 f
5114310 s
51144576 520(DWARF)N
51145885(Debugging)X
511461261(Information)X
511471664(Format)X
5114811 s
5114910 f
511501531 744(i)N
511511536(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
511521 f
511531575 848(Language)N
511541944(name)X
511552714(Value)X
5115610 f
511571531 864(i)N
511581536(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
511590 f
511601575 968(DW_LANG_C89)N
511612714(0x0001)X
511621575 1072(DW_LANG_C)N
511632714(0x0002)X
511641575 1176(DW_LANG_Ada83\262)N
511652714(0x0003)X
511661575 1280 0.1979(DW_LANG_C_plus_plus)AN
511672714(0x0004)X
511681575 1384(DW_LANG_Cobol74\262)N
511692714(0x0005)X
511701575 1488(DW_LANG_Cobol85\262)N
511712714(0x0006)X
511721575 1592 0.1992(DW_LANG_Fortran77)AN
511732714(0x0007)X
511741575 1696 0.1992(DW_LANG_Fortran90)AN
511752714(0x0008)X
511761575 1800(DW_LANG_Pascal83)N
511772714(0x0009)X
511781575 1904(DW_LANG_Modula2)N
511792714(0x000a)X
511801575 2008(DW_LANG_lo_user)N
511812714(0x8000)X
511821575 2112(DW_LANG_hi_user)N
511832714(0xffff)X
511841 f
5118510 f
511861531 2128(i)N
511871536(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
511881531(c)X
511892064(c)Y
511901976(c)Y
511911888(c)Y
511921800(c)Y
511931712(c)Y
511941624(c)Y
511951536(c)Y
511961448(c)Y
511971360(c)Y
511981272(c)Y
511991184(c)Y
512001096(c)Y
512011008(c)Y
51202920(c)Y
51203832(c)Y
512043076 2128(c)N
512052064(c)Y
512061976(c)Y
512071888(c)Y
512081800(c)Y
512091712(c)Y
512101624(c)Y
512111536(c)Y
512121448(c)Y
512131360(c)Y
512141272(c)Y
512151184(c)Y
512161096(c)Y
512171008(c)Y
51218920(c)Y
51219832(c)Y
512203 f
512211728 2232(Figure)N
512222000(28.)X
512231 f
512242154(Language)X
512252523(encodings)X
512263 f
5122712 s
51228576 2388(7.14)N
51229792(Identi\256er)X
512301200(Case)X
512311 f
5123211 s
51233576 2544(The)N
51234740(encodings)X
512351125(of)X
512361226(the)X
512371362(constants)X
512381718(used)X
512391907(in)X
512402004(the)X
512410 f
512422140 0.1969(DW_AT_identifier_case)AX
512431 f
512443281(attribute)X
512453604(are)X
512463739(given)X
512473963(in)X
51248576 2648(Figure)N
51249828(29.)X
5125010 f
512511506 2716(i)N
512521518(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
512531 f
512541550 2820(Identi\256er)N
512551895(Case)X
512562088(Name)X
512572848(Value)X
5125810 f
512591506 2836(i)N
512601518(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
512610 f
512621550 2940 0.1974(DW_ID_case_sensitive)AN
512632848(0)X
512641550 3044(DW_ID_up_case)N
512652848(1)X
512661550 3148(DW_ID_down_case)N
512672848(2)X
512681550 3252 0.1964(DW_ID_case_insensitive)AN
512692848(3)X
512701 f
5127110 f
512721506 3268(i)N
512731518(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
512741506(c)X
512753244(c)Y
512763156(c)Y
512773068(c)Y
512782980(c)Y
512792892(c)Y
512802804(c)Y
512813102 3268(c)N
512823244(c)Y
512833156(c)Y
512843068(c)Y
512852980(c)Y
512862892(c)Y
512872804(c)Y
512883 f
512891653 3372(Figure)N
512901925(29.)X
512911 f
512922079(Identi\256er)X
512932424(case)X
512942597(encodings)X
512953 f
5129612 s
51297576 3528(7.15)N
51298792(Calling)X
512991115(Convention)X
513001613(Encodings)X
513011 f
5130211 s
51303576 3684(The)N
51304750(encodings)X
513051144(for)X
513061283(the)X
513071428(values)X
513081690(of)X
513091800(the)X
513100 f
513111945 0.1957(DW_AT_calling_convention)AX
513121 f
513133254(attribute)X
513143586(are)X
513153730(given)X
513163963(in)X
51317576 3788(Figure)N
51318828(30.)X
5131910 f
513201624 3856(i)N
513211663(iiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
513221 f
513231668 3960(Calling)N
513241951(Convention)X
513252385(Name)X
513262727(Value)X
5132710 f
513281624 3976(i)N
513291663(iiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
513300 f
513311668 4080(DW_CC_normal)N
513322727(0x1)X
513331668 4184(DW_CC_program)N
513342727(0x2)X
513351668 4288(DW_CC_nocall)N
513362727(0x3)X
513371668 4392(DW_CC_lo_user)N
513382727(0x40)X
513391668 4496(DW_CC_hi_user)N
513402727(0xff)X
513411 f
5134210 f
513431624 4512(i)N
513441663(iiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
513451624(c)X
513464472(c)Y
513474384(c)Y
513484296(c)Y
513494208(c)Y
513504120(c)Y
513514032(c)Y
513523944(c)Y
513532983 4512(c)N
513544472(c)Y
513554384(c)Y
513564296(c)Y
513574208(c)Y
513584120(c)Y
513594032(c)Y
513603944(c)Y
513613 f
513621564 4616(Figure)N
513631836(30.)X
513641 f
513651990(Calling)X
513662273(convention)X
513672687(encodings)X
513683 f
5136912 s
51370576 4772(7.16)N
51371792(Inline)X
513721056(Codes)X
513731 f
5137411 s
51375576 4928(The)N
51376735(encodings)X
513771114(of)X
513781209(the)X
513791339(constants)X
513801689(used)X
513811872(in)X
513821963(the)X
513830 f
513842093(DW_AT_inline)X
513851 f
513862751(attribute)X
513873068(are)X
513883197(given)X
513893415(in)X
513903506(Figure)X
513913758(31.)X
5139210 f
513931373 4996(i)N
513941386(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
513951 f
513961417 5100(Inline)N
513971645(Code)X
513981853(Name)X
513992980(Value)X
5140010 f
514011373 5116(i)N
514021386(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
514030 f
514041417 5220 0.1985(DW_INL_not_inlined)AN
514052980(0)X
514061417 5324(DW_INL_inlined)N
514072980(1)X
514081417 5428 0.1947(DW_INL_declared_not_inlined)AN
514092980(2)X
514101417 5532 0.1960(DW_INL_declared_inlined)AN
514112980(3)X
514121 f
5141310 f
514141373 5548(i)N
514151386(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
514161373(c)X
514175524(c)Y
514185436(c)Y
514195348(c)Y
514205260(c)Y
514215172(c)Y
514225084(c)Y
514233234 5548(c)N
514245524(c)Y
514255436(c)Y
514265348(c)Y
514275260(c)Y
514285172(c)Y
514295084(c)Y
514303 f
514311798 5652(Figure)N
514322070(31.)X
514331 f
514342224(Inline)X
514352452(encodings)X
5143610 s
51437576 5951(Revision:)N
51438902(2.0.0)X
514392176(Page)X
514402352(76)X
514413599(July)X
514423752(27,)X
514433872(1993)X
514441943 6055(Industry)N
514452230(Review)X
514462495(Draft)X
51447
5144877 p
51449%%Page: 77 79
514500(Courier)xf 0 f
5145110 s 0 xH 0 xS 0 f
5145211 s
514531 f
5145410 s
514553075 520(Programming)N
514563535(Languages)X
514573903(SIG)X
514583 f
5145912 s
51460576 832(7.17)N
51461792(Array)X
514621067(Ordering)X
514631 f
5146411 s
51465576 988(The)N
51466735(encodings)X
514671114(for)X
514681238(the)X
514691368(values)X
514701615(of)X
514711710(the)X
514721840(order)X
514732047(attributes)X
514742398(of)X
514752493(arrays)X
514762729(is)X
514772810(given)X
514783028(in)X
514793119(Figure)X
514803371(32.)X
5148110 f
514821665 1056(i)N
514831667(iiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
514841 f
514851709 1160(Ordering)N
514862048(name)X
514872689(Value)X
5148810 f
514891665 1176(i)N
514901667(iiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
514910 f
514921709 1280(DW_ORD_row_major)N
514932689(0)X
514941709 1384(DW_ORD_col_major)N
514952689(1)X
514961 f
5149710 f
514981665 1400(i)N
514991667(iiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
515001665(c)X
515011320(c)Y
515021232(c)Y
515031144(c)Y
515042943 1400(c)N
515051320(c)Y
515061232(c)Y
515071144(c)Y
515083 f
515091743 1504(Figure)N
515102015(32.)X
515111 f
515122169(Ordering)X
515132508(encodings)X
515143 f
5151512 s
51516576 1660(7.18)N
51517792(Discriminant)X
515181355(Lists)X
515191 f
5152011 s
51521576 1816(The)N
51522749(descriptors)X
515231171(used)X
515241368(in)X
515251474(the)X
515260 f
515271619(DW_AT_dicsr_list)X
515281 f
515292504(attribute)X
515302836(are)X
515312980(encoded)X
515323310(as)X
515333420(1-byte)X
515343682(constants.)X
51535576 1920(The)N
51536735(de\256ned)X
515371016(values)X
515381263(are)X
515391392(presented)X
515401751(in)X
515411842(Figure)X
515422094(33.)X
5154310 f
515441771 1988(i)N
515451781(iiiiiiiiiiiiiiiiiiiiiiii)X
515461 f
515471815 2092(Descriptor)N
515482208(Name)X
515492583(Value)X
5155010 f
515511771 2108(i)N
515521781(iiiiiiiiiiiiiiiiiiiiiiii)X
515530 f
515541815 2212(DW_DSC_label)N
515552583(0)X
515561815 2316(DW_DSC_range)N
515572583(1)X
515581 f
5155910 f
515601771 2332(i)N
515611781(iiiiiiiiiiiiiiiiiiiiiiii)X
515621771(c)X
515632252(c)Y
515642164(c)Y
515652076(c)Y
515662837 2332(c)N
515672252(c)Y
515682164(c)Y
515692076(c)Y
515703 f
515711484 2436(Figure)N
515721756(33.)X
515731 f
515741910(Discriminant)X
515752393(descriptor)X
515762767(encodings)X
515773 f
5157812 s
51579576 2592(7.19)N
51580792(Name)X
515811056(Lookup)X
515821399(Table)X
515831 f
5158411 s
51585576 2748(Each)N
51586783(set)X
51587912(of)X
515881016(entries)X
515891282(in)X
515901382(the)X
515911521(table)X
515921724(of)X
515931829(global)X
515942082(names)X
515952339(contained)X
515962714(in)X
515972815(the)X
515980 f
515992955(.debug_pubnames)X
516001 f
516013782(section)X
51602576 2852(begins)N
51603834(with)X
516041019(a)X
516051086(header)X
516061348(consisting)X
516071734(of:)X
516081859(a)X
516091925(4-byte)X
516102177(length)X
516112425(containing)X
516122825(the)X
516132960(length)X
516143208(of)X
516153308(the)X
516163443(set)X
516173568(of)X
516183668(entries)X
516193930(for)X
51620576 2956(this)N
51621734(compilation)X
516221187(unit,)X
516231377(not)X
516241520(including)X
516251884(the)X
516262022(length)X
516272273(\256eld)X
516282460(itself;)X
516292693(a)X
516302763(2-byte)X
516313019(version)X
516323309(identi\256er)X
516333659(containing)X
51634576 3060(the)N
51635709(value)X
51636925(2)X
51637994(for)X
516381121(DWARF)X
516391462(Version)X
516401764(2;)X
516411857(a)X
516421920(4-byte)X
516432169(offset)X
516442393(into)X
516452555(the)X
516460 f
516472687(.debug_info)X
516481 f
516493294(section;)X
516503593(and)X
516513744(a)X
516523807(4-byte)X
51653576 3164(length)N
51654830(containing)X
516551236(the)X
516561377(size)X
516571547(in)X
516581649(bytes)X
516591868(of)X
516601974(the)X
516612115(contents)X
516622442(of)X
516632548(the)X
516640 f
516652689(.debug_info)X
516661 f
516673305(section)X
516683588(generated)X
516693963(to)X
51670576 3268(represent)N
51671923(this)X
516721076(compilation)X
516731524(unit.)X
516741731(This)X
516751913(header)X
516762172(is)X
516772256(followed)X
516782594(by)X
516792707(a)X
516802771(series)X
516812996(of)X
516823094(tuples.)X
516833352(Each)X
516843552(tuple)X
516853753(consists)X
51686576 3372(of)N
51687674(a)X
51688738(4-byte)X
51689988(offset)X
516901213(followed)X
516911551(by)X
516921664(a)X
516931728(string)X
516941954(of)X
516952053(non-null)X
516962378(bytes)X
516972590(terminated)X
516982994(by)X
516993108(one)X
517003261(null)X
517013425(byte.)X
517023647(Each)X
517033849(set)X
517043973(is)X
51705576 3476(terminated)N
51706976(by)X
517071086(a)X
517081147(4-byte)X
517091394(word)X
517101596(containing)X
517111991(the)X
517122121(value)X
517132334(0.)X
517143 f
5171512 s
51716576 3632(7.20)N
51717792(Address)X
517181151(Range)X
517191436(Table)X
517201 f
5172111 s
51722576 3788(Each)N
51723784(set)X
51724914(of)X
517251019(entries)X
517261286(in)X
517271387(the)X
517281527(table)X
517291731(of)X
517301836(address)X
517312131(ranges)X
517322392(contained)X
517332767(in)X
517342868(the)X
517350 f
517363008(.debug_aranges)X
517371 f
517383782(section)X
51739576 3892(begins)N
51740834(with)X
517411019(a)X
517421086(header)X
517431348(consisting)X
517441734(of:)X
517451859(a)X
517461925(4-byte)X
517472177(length)X
517482425(containing)X
517492825(the)X
517502960(length)X
517513208(of)X
517523308(the)X
517533443(set)X
517543568(of)X
517553668(entries)X
517563930(for)X
51757576 3996(this)N
51758734(compilation)X
517591187(unit,)X
517601377(not)X
517611520(including)X
517621884(the)X
517632022(length)X
517642273(\256eld)X
517652460(itself;)X
517662693(a)X
517672763(2-byte)X
517683019(version)X
517693309(identi\256er)X
517703659(containing)X
51771576 4100(the)N
51772717(value)X
51773941(2)X
517741018(for)X
517751153(DWARF)X
517761503(Version)X
517771814(2;)X
517781916(a)X
517791988(4-byte)X
517802246(offset)X
517812479(into)X
517822650(the)X
517830 f
517842791(.debug_info)X
517851 f
517863407(section;)X
517873736(a)X
517883807(1-byte)X
51789576 4204(unsigned)N
51790918(integer)X
517911187(containing)X
517921584(the)X
517931716(size)X
517941877(in)X
517951970(bytes)X
517962180(of)X
517972277(an)X
517982384(address)X
517992671(\(or)X
518002798(the)X
518012931(offset)X
518023156(portion)X
518033436(of)X
518043534(an)X
518053642(address)X
518063930(for)X
51807576 4308(segmented)N
51808980(addressing\))X
518091412(on)X
518101526(the)X
518111660(target)X
518121887(system;)X
518132183(and)X
518142336(a)X
518152401(1-byte)X
518162652(unsigned)X
518172996(integer)X
518183267(containing)X
518193666(the)X
518203800(size)X
518213963(in)X
51822576 4412(bytes)N
51823787(of)X
51824885(a)X
51825949(segment)X
518261268(descriptor)X
518271645(on)X
518281758(the)X
518291891(target)X
518302117(system.)X
518312431(This)X
518322613(header)X
518332872(is)X
518342956(followed)X
518353295(by)X
518363409(a)X
518373474(series)X
518383700(of)X
518393799(tuples.)X
51840576 4516(Each)N
51841779(tuple)X
51842983(consists)X
518431289(of)X
518441389(an)X
518451499(address)X
518461789(and)X
518471943(a)X
518482009(length,)X
518492278(each)X
518502465(in)X
518512560(the)X
518522694(size)X
518532857(appropriate)X
518543284(for)X
518553412(an)X
518563521(address)X
518573810(on)X
518583924(the)X
51859576 4620(target)N
51860807(architecture.)X
518611297(The)X
518621464(\256rst)X
518631631(tuple)X
518641839(following)X
518652213(the)X
518662352(header)X
518672617(in)X
518682717(each)X
518692909(set)X
518703038(begins)X
518713299(at)X
518723394(an)X
518733508(offset)X
518743739(that)X
518753903(is)X
518763993(a)X
51877576 4724(multiple)N
51878897(of)X
51879995(the)X
518801128(size)X
518811290(of)X
518821388(a)X
518831452(single)X
518841688(tuple)X
518851890(\(that)X
518862077(is,)X
518872182(twice)X
518882397(the)X
518892529(size)X
518902690(of)X
518912787(an)X
518922894(address\).)X
518933254(The)X
518943415(header)X
518953673(is)X
518963756(padded,)X
51897576 4828(if)N
51898656(necessary,)X
518991045(to)X
519001140(the)X
519011274(appropriate)X
519021701(boundary.)X
519032103(Each)X
519042305(set)X
519052429(of)X
519062528(tuples)X
519072765(is)X
519082850(terminated)X
519093254(by)X
519103368(a)X
519113434(0)X
519123505(for)X
519133634(the)X
519143769(address)X
51915576 4932(and)N
51916725(0)X
51917791(for)X
51918915(the)X
519191045(length.)X
519203 f
5192112 s
51922576 5088(7.21)N
51923792(Line)X
519241003(Number)X
519251368(Information)X
519261 f
5192711 s
51928576 5244(The)N
51929750(sizes)X
51930959(of)X
519311070(the)X
519321216(integers)X
519331533(used)X
519341732(in)X
519351839(the)X
519361985(line)X
519372156(number)X
519382463(and)X
519392628(call)X
519402794(frame)X
519413037(information)X
519423492(sections)X
519433814(are)X
519443959(as)X
51945576 5348(follows:)N
51946576 5504(sbyte)N
519471236(Signed)X
519481503(1-byte)X
519491750(value.)X
51950576 5660(ubyte)N
519511236(Unsigned)X
519521595(1-byte)X
519531842(value.)X
5195410 s
51955576 5951(Revision:)N
51956902(2.0.0)X
519572176(Page)X
519582352(77)X
519593599(July)X
519603752(27,)X
519613872(1993)X
519621943 6055(Industry)N
519632230(Review)X
519642495(Draft)X
51965
5196678 p
51967%%Page: 78 80
519680(Courier)xf 0 f
5196910 s 0 xH 0 xS 0 f
5197011 s
519711 f
5197210 s
51973576 520(DWARF)N
51974885(Debugging)X
519751261(Information)X
519761664(Format)X
5197711 s
51978576 832(uhalf)N
519791236(Unsigned)X
519801595(2-byte)X
519811842(value.)X
51982576 988(sword)N
519831236(Signed)X
519841503(4-byte)X
519851750(value.)X
51986576 1144(uword)N
519871236(Unsigned)X
519881595(4-byte)X
519891842(value.)X
51990576 1300(The)N
51991737(version)X
519921020(number)X
519931313(in)X
519941406(the)X
519951538(statement)X
519961901(program)X
519972223(prologue)X
519982560(is)X
519992643(2)X
520002711(for)X
520012837(DWARF)X
520023178(Version)X
520033480(2.)X
520043592(The)X
520053753(boolean)X
52006576 1404(values)N
52007833(``true'')X
520081117(and)X
520091275(``false'')X
520101588(used)X
520111780(by)X
520121899(the)X
520132038(statement)X
520142408(information)X
520152856(program)X
520163185(are)X
520173323(encoded)X
520183647(as)X
520193751(a)X
520203821(single)X
52021576 1508(byte)N
52022753(containing)X
520231151(the)X
520241284(value)X
520251500(0)X
520261569(for)X
520271696(``false,'')X
520282026(and)X
520292179(a)X
520302244(non-zero)X
520312582(value)X
520322799(for)X
520332927(``true.'')X
520343250(The)X
520353413(encodings)X
520363796(for)X
520373924(the)X
52038576 1612(pre-de\256ned)N
52039998(standard)X
520401318(opcodes)X
520411628(are)X
520421757(given)X
520431975(in)X
520442066(Figure)X
520452318(34.)X
5204610 f
520471479 1680(i)N
520481500(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
520491 f
520501523 1784(Opcode)N
520511818(Name)X
520522874(Value)X
5205310 f
520541479 1800(i)N
520551500(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
520560 f
520571523 1904(DW_LNS_copy)N
520582874(1)X
520591523 2008 0.1992(DW_LNS_advance_pc)AN
520602874(2)X
520611523 2112 0.1979(DW_LNS_advance_line)AN
520622874(3)X
520631523 2216(DW_LNS_set_file)N
520642874(4)X
520651523 2320 0.1992(DW_LNS_set_column)AN
520662874(5)X
520671523 2424 0.1985(DW_LNS_negate_stmt)AN
520682874(6)X
520691523 2528 0.1964(DW_LNS_set_basic_block)AN
520702874(7)X
520711523 2632 0.1979(DW_LNS_const_add_pc)AN
520722874(8)X
520731523 2736 0.1960(DW_LNS_fixed_advance_pc)AN
520742874(9)X
520751 f
5207610 f
520771479 2752(i)N
520781500(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
520791479(c)X
520802736(c)Y
520812648(c)Y
520822560(c)Y
520832472(c)Y
520842384(c)Y
520852296(c)Y
520862208(c)Y
520872120(c)Y
520882032(c)Y
520891944(c)Y
520901856(c)Y
520911768(c)Y
520923128 2752(c)N
520932736(c)Y
520942648(c)Y
520952560(c)Y
520962472(c)Y
520972384(c)Y
520982296(c)Y
520992208(c)Y
521002120(c)Y
521012032(c)Y
521021944(c)Y
521031856(c)Y
521041768(c)Y
521053 f
521061590 2856(Figure)N
521071862(34.)X
521081 f
521092016(Standard)X
521102351(Opcode)X
521112646(Encodings)X
52112576 3012(The)N
52113735(encodings)X
521141114(for)X
521151238(the)X
521161368(pre-de\256ned)X
521171790(extended)X
521182130(opcodes)X
521192440(are)X
521202569(given)X
521212787(in)X
521222878(Figure)X
521233130(35.)X
5212410 f
521251585 3080(i)N
521261614(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
521271 f
521281629 3184(Opcode)N
521291924(Name)X
521302768(Value)X
5213110 f
521321585 3200(i)N
521331614(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
521340 f
521351629 3304 0.1979(DW_LNE_end_sequence)AN
521362768(1)X
521371629 3408 0.1985(DW_LNE_set_address)AN
521382768(2)X
521391629 3512 0.1985(DW_LNE_define_file)AN
521402768(3)X
521411 f
5214210 f
521431585 3528(i)N
521441614(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
521451585(c)X
521463520(c)Y
521473432(c)Y
521483344(c)Y
521493256(c)Y
521503168(c)Y
521513022 3528(c)N
521523520(c)Y
521533432(c)Y
521543344(c)Y
521553256(c)Y
521563168(c)Y
521573 f
521581580 3632(Figure)N
521591852(35.)X
521601 f
521612006(Extended)X
521622361(Opcode)X
521632656(Encodings)X
521643 f
5216512 s
52166576 3788(7.22)N
52167792(Macro)X
521681089(Information)X
521691 f
5217011 s
52171576 3944(The)N
52172746(source)X
521731008(line)X
521741174(numbers)X
521751510(and)X
521761670(source)X
521771933(\256le)X
521782080(indices)X
521792364(encoded)X
521802691(in)X
521812794(the)X
521822936(macro)X
521833190(information)X
521843641(section)X
521853925(are)X
52186576 4048(represented)N
521871110(as)X
521881312(unsigned)X
521891759(LEB128)X
521902187(numbers)X
521912619(as)X
521922821(are)X
521933057(the)X
521943294(constants)X
521953751(in)X
521963949(an)X
521970 f
52198576 4152 0.1969(DW_MACINFO_vendor_ext)AN
521991 f
522001737(entry.)X
522012010(The)X
522022195(macinfo)X
522032532(type)X
522042732(is)X
522052839(encoded)X
522063180(as)X
522073302(a)X
522083390(single)X
522093650(byte.)X
522103895(The)X
52211576 4256(encodings)N
52212955(are)X
522131084(given)X
522141302(in)X
522151393(Figure)X
522161645(36.)X
5221710 f
522181532 4324(i)N
522191535(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
522201 f
522211576 4428(Macinfo)N
522221896(Type)X
522232099(Name)X
522242821(Value)X
5222510 f
522261532 4444(i)N
522271535(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
522280 f
522291576 4548 0.1992(DW_MACINFO_define)AN
522302821(1)X
522311576 4652(DW_MACINFO_undef)N
522322821(2)X
522331576 4756 0.1969(DW_MACINFO_start_file)AN
522342821(3)X
522351576 4860 0.1979(DW_MACINFO_end_file)AN
522362821(4)X
522371576 4964 0.1969(DW_MACINFO_vendor_ext)AN
522382821(255)X
522391 f
5224010 f
522411532 4980(i)N
522421535(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
522431532(c)X
522444940(c)Y
522454852(c)Y
522464764(c)Y
522474676(c)Y
522484588(c)Y
522494500(c)Y
522504412(c)Y
522513075 4980(c)N
522524940(c)Y
522534852(c)Y
522544764(c)Y
522554676(c)Y
522564588(c)Y
522574500(c)Y
522584412(c)Y
522593 f
522601643 5084(Figure)N
522611915(36.)X
522621 f
522632069(Macinfo)X
522642389(Type)X
522652592(Encodings)X
522663 f
5226712 s
52268576 5240(7.23)N
52269792(Call)X
52270987(Frame)X
522711284(Information)X
522721 f
5227311 s
52274576 5396(The)N
52275737(value)X
52276952(of)X
522771049(the)X
522781181(CIE)X
522791347(id)X
522801440(in)X
522811533(the)X
522821665(CIE)X
522831831(header)X
522842089(is)X
522850 f
522862172(0xffffffff)X
522871 f
522882702(.)X
522892770(The)X
522902931(initial)X
522913163(value)X
522923378(of)X
522933475(the)X
522943607(CIE)X
522953773(version)X
52296576 5500(number)N
52297867(is)X
52298948(1.)X
52299576 5656(Call)N
52300749(frame)X
52301979(instructions)X
523021416(are)X
523031548(encoded)X
523041867(in)X
523051962(one)X
523062115(or)X
523072214(more)X
523082421(bytes.)X
523092677(The)X
523102840(primary)X
523113145(opcode)X
523123425(is)X
523133510(encoded)X
523143829(in)X
523153924(the)X
52316576 5760(high)N
52317756(order)X
52318964(two)X
523191119(bits)X
523201270(of)X
523211366(the)X
523221497(\256rst)X
523231657(byte)X
523241832(\(that)X
523252017(is,)X
523262121(opcode)X
523272398(=)X
523282471(byte)X
523292646(>>)X
523302769(6\).)X
523312909(An)X
523323038(operand)X
523333343(or)X
523343438(extended)X
523353778(opcode)X
5233610 s
52337576 5951(Revision:)N
52338902(2.0.0)X
523392176(Page)X
523402352(78)X
523413599(July)X
523423752(27,)X
523433872(1993)X
523441943 6055(Industry)N
523452230(Review)X
523462495(Draft)X
52347
5234879 p
52349%%Page: 79 81
523500(Courier)xf 0 f
5235110 s 0 xH 0 xS 0 f
5235211 s
523531 f
5235410 s
523553075 520(Programming)N
523563535(Languages)X
523573903(SIG)X
5235811 s
52359576 832(may)N
52360756(be)X
52361867(encoded)X
523621189(in)X
523631287(the)X
523641424(low)X
523651585(order)X
523661799(6)X
523671872(bits.)X
523682095(Additional)X
523692502(operands)X
523702848(are)X
523712984(encoded)X
523723306(in)X
523733404(subsequent)X
523743824(bytes.)X
52375576 936(The)N
52376735(instructions)X
523771169(and)X
523781318(their)X
523791502(encodings)X
523801881(are)X
523812010(presented)X
523822369(in)X
523832460(Figure)X
523842712(37.)X
5238510 f
52386576 1004(i)N
52387590(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
523881 f
52389620 1108(Instruction)N
523901971(High)X
523912169(2)X
523922235(Bits)X
523932510(Low)X
523942693(6)X
523952759(Bits)X
523963034(Operand)X
523973358(1)X
523983814(Operand)X
523994138(2)X
5240010 f
52401576 1124(i)N
52402590(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
524030 f
52404620 1228 0.1985(DW_CFA_advance_loc)AN
524051971(0x1)X
524061 f
524072510(delta)X
524080 f
52409620 1332(DW_CFA_offset)N
524101971(0x2)X
524111 f
524122510(register)X
524133034(ULEB128)X
524143418(offset)X
524150 f
52416620 1436(DW_CFA_restore)N
524171971(0x3)X
524181 f
524192510(register)X
524200 f
52421620 1540(DW_CFA_set_loc)N
524221971(0)X
524232510(0x01)X
524241 f
524253034(address)X
524260 f
52427620 1644 0.1979(DW_CFA_advance_loc1)AN
524281971(0)X
524292510(0x02)X
524301 f
524313034(1-byte)X
524323281(delta)X
524330 f
52434620 1748 0.1979(DW_CFA_advance_loc2)AN
524351971(0)X
524362510(0x03)X
524371 f
524383034(2-byte)X
524393281(delta)X
524400 f
52441620 1852 0.1979(DW_CFA_advance_loc4)AN
524421971(0)X
524432510(0x04)X
524441 f
524453034(4-byte)X
524463281(delta)X
524470 f
52448620 1956 0.1964(DW_CFA_offset_extended)AN
524491971(0)X
524502510(0x05)X
524511 f
524523034(ULEB128)X
524533418(register)X
524543814(ULEB128)X
524554198(offset)X
524560 f
52457620 2060 0.1960(DW_CFA_restore_extended)AN
524581971(0)X
524592510(0x06)X
524601 f
524613034(ULEB128)X
524623418(register)X
524630 f
52464620 2164(DW_CFA_undefined)N
524651971(0)X
524662510(0x07)X
524671 f
524683034(ULEB128)X
524693418(register)X
524700 f
52471620 2268 0.1992(DW_CFA_same_value)AN
524721971(0)X
524732510(0x08)X
524741 f
524753034(ULEB128)X
524763418(register)X
524770 f
52478620 2372(DW_CFA_register)N
524791971(0)X
524802510(0x09)X
524811 f
524823034(ULEB128)X
524833418(register)X
524843814(ULEB128)X
524854198(register)X
524860 f
52487620 2476 0.1969(DW_CFA_remember_state)AN
524881971(0)X
524892510(0x0a)X
52490620 2580 0.1974(DW_CFA_restore_state)AN
524911971(0)X
524922510(0x0b)X
52493620 2684(DW_CFA_def_cfa)N
524941971(0)X
524952510(0x0c)X
524961 f
524973034(ULEB128)X
524983418(register)X
524993814(ULEB128)X
525004198(offset)X
525010 f
52502620 2788 0.1960(DW_CFA_def_cfa_register)AN
525031971(0)X
525042510(0x0d)X
525051 f
525063034(ULEB128)X
525073418(register)X
525080 f
52509620 2892 0.1969(DW_CFA_def_cfa_offset)AN
525101971(0)X
525112510(0x0e)X
525121 f
525133034(ULEB128)X
525143418(offset)X
525150 f
52516620 2996(DW_CFA_nop)N
525171971(0)X
525182510(0)X
52519620 3100(DW_CFA_lo_user)N
525201971(0)X
525212510(0x1c)X
52522620 3204(DW_CFA_hi_user)N
525231971(0)X
525242510(0x3f)X
525251 f
5252610 f
52527576 3220(i)N
52528590(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
52529576(c)X
525303204(c)Y
525313116(c)Y
525323028(c)Y
525332940(c)Y
525342852(c)Y
525352764(c)Y
525362676(c)Y
525372588(c)Y
525382500(c)Y
525392412(c)Y
525402324(c)Y
525412236(c)Y
525422148(c)Y
525432060(c)Y
525441972(c)Y
525451884(c)Y
525461796(c)Y
525471708(c)Y
525481620(c)Y
525491532(c)Y
525501444(c)Y
525511356(c)Y
525521268(c)Y
525531180(c)Y
525541092(c)Y
525554506 3220(c)N
525563204(c)Y
525573116(c)Y
525583028(c)Y
525592940(c)Y
525602852(c)Y
525612764(c)Y
525622676(c)Y
525632588(c)Y
525642500(c)Y
525652412(c)Y
525662324(c)Y
525672236(c)Y
525682148(c)Y
525692060(c)Y
525701972(c)Y
525711884(c)Y
525721796(c)Y
525731708(c)Y
525741620(c)Y
525751532(c)Y
525761444(c)Y
525771356(c)Y
525781268(c)Y
525791180(c)Y
525801092(c)Y
525813 f
525821514 3324(Figure)N
525831786(37.)X
525841 f
525851940(Call)X
525862110(frame)X
525872337(instruction)X
525882737(encodings)X
525893 f
5259012 s
52591576 3480(7.24)N
52592792(Dependencies)X
525931 f
5259411 s
52595576 3636(The)N
52596763(debugging)X
525971186(information)X
525981654(in)X
525991774(this)X
526001953(format)X
526012239(is)X
526022349(intended)X
526032704(to)X
526042824(exist)X
526053042(in)X
526063162(the)X
526070 f
526083321(.debug_abbrev)X
526091 f
526104010(,)X
526110 f
52612576 3740(.debug_aranges)N
526131 f
526141318(,)X
526150 f
526161408(.debug_frame)X
526171 f
526182044(,)X
526190 f
526202134(.debug_info)X
526211 f
526222717(,)X
526230 f
526242807(.debug_line)X
526251 f
526263390(,)X
526270 f
526283480(.debug_loc)X
526291 f
526304010(,)X
526310 f
52632576 3844(.debug_macinfo)N
526331 f
526341318(,)X
526350 f
526361372(.debug_pubnames)X
526371 f
526382199(and)X
526390 f
526402358(.debug_str)X
526411 f
526422920(sections)X
526433236(of)X
526443341(an)X
526453456(object)X
526463705(\256le.)X
526473895(The)X
52648576 3948(information)N
526491016(is)X
526501098(not)X
526511234(word-aligned,)X
526521748(so)X
526531849(the)X
526541980(assembler)X
526552354(must)X
526562548(provide)X
526572839(a)X
526582900(way)X
526593068(for)X
526603192(the)X
526613322(compiler)X
526623658(to)X
526633749(produce)X
52664576 4052(2-byte)N
52665846(and)X
526661018(4-byte)X
526671288(quantities)X
526681677(without)X
526691992(alignment)X
526702391(restrictions,)X
526712850(and)X
526723022(the)X
526733175(linker)X
526743426(must)X
526753643(be)X
526763771(able)X
526773963(to)X
52678576 4156(relocate)N
52679878(a)X
52680940(4-byte)X
526811188(reference)X
526821536(at)X
526831622(an)X
526841727(arbitrary)X
526852052(alignment.)X
526862472(In)X
526872567(target)X
526882790(architectures)X
526893262(with)X
526903441(64-bit)X
526913674(addresses,)X
52692576 4260(the)N
52693706(assembler)X
526941080(and)X
526951229(linker)X
526961457(must)X
526971651(similarly)X
526981988(handle)X
526992245(8-byte)X
527002492(references)X
527012874(at)X
527022960(arbitrary)X
527033285(alignments.)X
5270410 s
52705576 5951(Revision:)N
52706902(2.0.0)X
527072176(Page)X
527082352(79)X
527093599(July)X
527103752(27,)X
527113872(1993)X
527121943 6055(Industry)N
527132230(Review)X
527142495(Draft)X
52715
5271680 p
52717%%Page: 80 82
527180(Courier)xf 0 f
5271910 s 0 xH 0 xS 0 f
5272011 s
527211 f
5272210 s
52723576 520(DWARF)N
52724885(Debugging)X
527251261(Information)X
527261664(Format)X
52727576 5951(Revision:)N
52728902(2.0.0)X
527292176(Page)X
527302352(80)X
527313599(July)X
527323752(27,)X
527333872(1993)X
527341943 6055(Industry)N
527352230(Review)X
527362495(Draft)X
52737
5273881 p
52739%%Page: 81 83
527400(Courier)xf 0 f
5274110 s 0 xH 0 xS 0 f
5274211 s
527431 f
5274410 s
527453075 520(Programming)N
527463535(Languages)X
527473903(SIG)X
527483 f
5274912 s
52750576 832(8.)N
52751696(FUTURE)X
527521114(DIRECTIONS)X
527531 f
5275411 s
52755576 988(The)N
52756743(U)X
527579 s
52758806(NIX)X
5275911 s
52760965(International)X
527611447(Programming)X
527621963(Languages)X
527632375(SIG)X
527642547(is)X
527652637(working)X
527662961(on)X
527673080(a)X
527683150(speci\256cation)X
527693627(for)X
527703760(a)X
527713830(set)X
527723959(of)X
52773576 1092(interfaces)N
52774950(for)X
527751083(reading)X
527761378(DWARF)X
527771726(information,)X
527782196(that)X
527792360(will)X
527802529(hide)X
527812712(changes)X
527823026(in)X
527833126(the)X
527843265(representation)X
527853795(of)X
527863899(that)X
52787576 1196(information)N
527881022(from)X
527891222(its)X
527901336(consumers.)X
527911786(It)X
527921870(is)X
527931959(hoped)X
527942204(that)X
527952367(using)X
527962588(these)X
527972799(interfaces)X
527983171(will)X
527993339(make)X
528003560(the)X
528013698(transition)X
52802576 1300(from)N
52803770(DWARF)X
528041110(Version)X
528051411(1)X
528061478(to)X
528071570(Version)X
528081871(2)X
528091938(much)X
528102157(simpler)X
528112445(and)X
528122595(will)X
528132756(make)X
528142970(it)X
528153043(easier)X
528163271(for)X
528173396(a)X
528183457(single)X
528193690(consumer)X
52820576 1404(to)N
52821667(support)X
52822953(objects)X
528231225(using)X
528241438(either)X
528251661(Version)X
528261961(1)X
528272027(or)X
528282122(Version)X
528292422(2)X
528302488(DWARF.)X
52831576 1560(A)N
52832670(draft)X
52833867(of)X
52834971(this)X
528351130(speci\256cation)X
528361607(is)X
528371697(available)X
528382047(for)X
528392180(review)X
528402450(from)X
528412652(U)X
528429 s
528432715(NIX)X
5284411 s
528452874(International.)X
528463378(The)X
528473547(Programming)X
52848576 1664(Languages)N
52849979(SIG)X
528501142(wishes)X
528511403(to)X
528521494(stress,)X
528531733(however,)X
528542079(that)X
528552234(the)X
528562364(speci\256cation)X
528572832(is)X
528582913(still)X
528593069(in)X
528603160(\257ux.)X
5286110 s
52862576 5951(Revision:)N
52863902(2.0.0)X
528642176(Page)X
528652352(81)X
528663599(July)X
528673752(27,)X
528683872(1993)X
528691943 6055(Industry)N
528702230(Review)X
528712495(Draft)X
52872
5287382 p
52874%%Page: 82 84
528750(Courier)xf 0 f
5287610 s 0 xH 0 xS 0 f
5287711 s
528781 f
5287910 s
52880576 520(DWARF)N
52881885(Debugging)X
528821261(Information)X
528831664(Format)X
52884576 5951(Revision:)N
52885902(2.0.0)X
528862176(Page)X
528872352(82)X
528883599(July)X
528893752(27,)X
528903872(1993)X
528911943 6055(Industry)N
528922230(Review)X
528932495(Draft)X
52894
5289583 p
52896%%Page: 83 85
528970(Courier)xf 0 f
5289810 s 0 xH 0 xS 0 f
5289911 s
529001 f
5290110 s
529023075 520(Programming)N
529033535(Languages)X
529043903(SIG)X
529053 f
5290612 s
52907576 832(Appendix)N
52908999(1)X
529091071(--)X
529101159(Current)X
529111519(Attributes)X
529121964(by)X
529132089(Tag)X
529142273(Value)X
529151 f
5291611 s
52917576 988(The)N
52918752(list)X
52919900(below)X
529201154(enumerates)X
529211594(the)X
529221741(attributes)X
529232110(that)X
529242283(are)X
529252430(most)X
529262642(applicable)X
529273045(to)X
529283154(each)X
529293355(type)X
529303547(of)X
529313660(debugging)X
52932576 1092(information)N
529331017(entry.)X
529341266(DWARF)X
529351607(does)X
529361792(not)X
529371929(in)X
529382022(general)X
529392305(require)X
529402578(that)X
529412735(a)X
529422797(given)X
529433016(debugging)X
529443411(information)X
529453851(entry)X
52946576 1196(contain)N
52947862(a)X
52948927(particular)X
529491291(attribute)X
529501612(or)X
529511712(set)X
529521837(of)X
529531937(attributes.)X
529542337(Instead,)X
529552640(a)X
529562706(DWARF)X
529573050(producer)X
529583389(is)X
529593475(free)X
529603638(to)X
529613734(generate)X
52962576 1300(any,)N
52963750(all,)X
52964886(or)X
52965983(none)X
529661178(of)X
529671275(the)X
529681407(attributes)X
529691760(described)X
529702121(in)X
529712214(the)X
529722346(text)X
529732503(as)X
529742600(being)X
529752820(applicable)X
529763207(to)X
529773300(a)X
529783363(given)X
529793583(entry.)X
529803832(Other)X
52981576 1404(attributes)N
52982930(\(both)X
529831141(those)X
529841352(de\256ned)X
529851636(within)X
529861887(this)X
529872040(document)X
529882413(but)X
529892551(not)X
529902690(explicitly)X
529913051(associated)X
529923439(with)X
529933622(the)X
529943756(entry)X
529953963(in)X
52996576 1508(question,)N
52997922(and)X
529981074(new,)X
529991267(vendor-de\256ned)X
530001824(ones\))X
530012039(may)X
530022216(also)X
530032383(appear)X
530042642(in)X
530052736(a)X
530062799(given)X
530073019(debugging)X
530083415(entry.)X
530093664(Therefore,)X
53010576 1612(the)N
53011706(list)X
53012837(may)X
530131011(be)X
530141116(taken)X
530151329(as)X
530161424(instructive,)X
530171841(but)X
530181976(cannot)X
530192233(be)X
530202338(considered)X
530212741(de\256nitive.)X
5302210 f
53023576 1888(i)N
53024593(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
530253 f
53026620 1992(TAG)N
53027833(NAME)X
530282077(APPLICABLE)X
530292666(ATTRIBUTES)X
530301 f
5303110 f
53032576 2008(i)N
53033593(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
530340 f
53035620 2112 0.1953(DW_TAG_access_declaration)AN
530362077(DECL\262)X
530372077 2216 0.1979(DW_AT_accessibility)AN
530382077 2320(DW_AT_name)N
530392077 2424(DW_AT_sibling)N
530401 f
5304110 f
53042576 2440(i)N
53043593(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
530440 f
53045620 2544 0.1992(DW_TAG_array_type)AN
530462077(DECL)X
530472077 2648 0.1969(DW_AT_abstract_origin)AN
530482077 2752 0.1979(DW_AT_accessibility)AN
530492077 2856(DW_AT_byte_size)N
530502077 2960 0.1992(DW_AT_declaration)AN
530512077 3064(DW_AT_name)N
530522077 3168(DW_AT_ordering)N
530532077 3272(DW_AT_sibling)N
530542077 3376 0.1992(DW_AT_start_scope)AN
530552077 3480 0.1992(DW_AT_stride_size)AN
530562077 3584(DW_AT_type)N
530572077 3688(DW_AT_visibility)N
530581 f
5305910 f
53060576 3704(i)N
53061593(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
530620 f
53063620 3808(DW_TAG_base_type)N
530642077(DW_AT_bit_offset)X
530652077 3912(DW_AT_bit_size)N
530662077 4016(DW_AT_byte_size)N
530672077 4120(DW_AT_encoding)N
530682077 4224(DW_AT_name)N
530692077 4328(DW_AT_sibling)N
530701 f
5307110 f
53072576 4344(i)N
53073593(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
530740 f
53075620 4448 0.1985(DW_TAG_catch_block)AN
530762077 0.1969(DW_AT_abstract_origin)AX
530772077 4552(DW_AT_high_pc)N
530782077 4656(DW_AT_low_pc)N
530792077 4760(DW_AT_segment)N
530802077 4864(DW_AT_sibling)N
530811 f
5308210 f
53083576 4880(i)N
53084593(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
53085576(c)X
530864792(c)Y
530874704(c)Y
530884616(c)Y
530894528(c)Y
530904440(c)Y
530914352(c)Y
530924264(c)Y
530934176(c)Y
530944088(c)Y
530954000(c)Y
530963912(c)Y
530973824(c)Y
530983736(c)Y
530993648(c)Y
531003560(c)Y
531013472(c)Y
531023384(c)Y
531033296(c)Y
531043208(c)Y
531053120(c)Y
531063032(c)Y
531072944(c)Y
531082856(c)Y
531092768(c)Y
531102680(c)Y
531112592(c)Y
531122504(c)Y
531132416(c)Y
531142328(c)Y
531152240(c)Y
531162152(c)Y
531172064(c)Y
531181976(c)Y
531193277 4880(c)N
531204792(c)Y
531214704(c)Y
531224616(c)Y
531234528(c)Y
531244440(c)Y
531254352(c)Y
531264264(c)Y
531274176(c)Y
531284088(c)Y
531294000(c)Y
531303912(c)Y
531313824(c)Y
531323736(c)Y
531333648(c)Y
531343560(c)Y
531353472(c)Y
531363384(c)Y
531373296(c)Y
531383208(c)Y
531393120(c)Y
531403032(c)Y
531412944(c)Y
531422856(c)Y
531432768(c)Y
531442680(c)Y
531452592(c)Y
531462504(c)Y
531472416(c)Y
531482328(c)Y
531492240(c)Y
531502152(c)Y
531512064(c)Y
531521976(c)Y
531531 f
53154576 5036(\262)N
531550 f
53156642 0.1992(DW_AT_decl_column)AX
531571 f
531581543(,)X
531590 f
531601587(DW_AT_decl_file)X
531611 f
531622382(,)X
531630 f
531642426(DW_AT_decl_line)X
531651 f
531663221(.)X
5316710 s
53168576 5951(Revision:)N
53169902(2.0.0)X
531702176(Page)X
531712352(83)X
531723599(July)X
531733752(27,)X
531743872(1993)X
531751943 6055(Industry)N
531762230(Review)X
531772495(Draft)X
53178
5317984 p
53180%%Page: 84 86
531810(Courier)xf 0 f
5318210 s 0 xH 0 xS 0 f
5318311 s
531841 f
5318510 s
53186576 520(DWARF)N
53187885(Debugging)X
531881261(Information)X
531891664(Format)X
531903 f
5319111 s
53192576 832(Appendix)N
53193965(1)X
531941031(\(cont'd\))X
531951350(--)X
531961430(Current)X
531971759(Attributes)X
531982166(by)X
531992281(Tag)X
532002450(Value)X
532011 f
5320210 f
53203576 1160(i)N
53204585(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
532053 f
53206620 1264(TAG)N
53207833(NAME)X
532081971(APPLICABLE)X
532092560(ATTRIBUTES)X
532101 f
5321110 f
53212576 1280(i)N
53213585(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
532140 f
53215620 1384 0.1992(DW_TAG_class_type)AN
532161971(DECL)X
532171971 1488 0.1969(DW_AT_abstract_origin)AN
532181971 1592 0.1979(DW_AT_accessibility)AN
532191971 1696(DW_AT_byte_size)N
532201971 1800 0.1992(DW_AT_declaration)AN
532211971 1904(DW_AT_name)N
532221971 2008(DW_AT_sibling)N
532231971 2112 0.1992(DW_AT_start_scope)AN
532241971 2216(DW_AT_visibility)N
532251 f
5322610 f
53227576 2232(i)N
53228585(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
532290 f
53230620 2336 0.1979(DW_TAG_common_block)AN
532311971(DECL)X
532321971 2440 0.1992(DW_AT_declaration)AN
532331971 2544(DW_AT_location)N
532341971 2648(DW_AT_name)N
532351971 2752(DW_AT_sibling)N
532361971 2856(DW_AT_visibility)N
532371 f
5323810 f
53239576 2872(i)N
53240585(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
532410 f
53242620 2976 0.1960(DW_TAG_common_inclusion)AN
532431971(DECL)X
532441971 3080 0.1964(DW_AT_common_reference)AN
532451971 3184 0.1992(DW_AT_declaration)AN
532461971 3288(DW_AT_sibling)N
532471971 3392(DW_AT_visibility)N
532481 f
5324910 f
53250576 3408(i)N
53251585(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
532520 f
53253620 3512 0.1979(DW_TAG_compile_unit)AN
532541971(DW_AT_base_types)X
532551971 3616(DW_AT_comp_dir)N
532561971 3720 0.1969(DW_AT_identifier_case)AN
532571971 3824(DW_AT_high_pc)N
532581971 3928(DW_AT_language)N
532591971 4032(DW_AT_low_pc)N
532601971 4136(DW_AT_macro_info)N
532611971 4240(DW_AT_name)N
532621971 4344(DW_AT_producer)N
532631971 4448(DW_AT_sibling)N
532641971 4552(DW_AT_stmt_list)N
532651 f
5326610 f
53267576 4568(i)N
53268585(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
532690 f
53270620 4672 0.1992(DW_TAG_const_type)AN
532711971(DW_AT_sibling)X
532721971 4776(DW_AT_type)N
532731 f
5327410 f
53275576 4792(i)N
53276585(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
53277576(c)X
532784768(c)Y
532794680(c)Y
532804592(c)Y
532814504(c)Y
532824416(c)Y
532834328(c)Y
532844240(c)Y
532854152(c)Y
532864064(c)Y
532873976(c)Y
532883888(c)Y
532893800(c)Y
532903712(c)Y
532913624(c)Y
532923536(c)Y
532933448(c)Y
532943360(c)Y
532953272(c)Y
532963184(c)Y
532973096(c)Y
532983008(c)Y
532992920(c)Y
533002832(c)Y
533012744(c)Y
533022656(c)Y
533032568(c)Y
533042480(c)Y
533052392(c)Y
533062304(c)Y
533072216(c)Y
533082128(c)Y
533092040(c)Y
533101952(c)Y
533111864(c)Y
533121776(c)Y
533131688(c)Y
533141600(c)Y
533151512(c)Y
533161424(c)Y
533171336(c)Y
533181248(c)Y
533193181 4792(c)N
533204768(c)Y
533214680(c)Y
533224592(c)Y
533234504(c)Y
533244416(c)Y
533254328(c)Y
533264240(c)Y
533274152(c)Y
533284064(c)Y
533293976(c)Y
533303888(c)Y
533313800(c)Y
533323712(c)Y
533333624(c)Y
533343536(c)Y
533353448(c)Y
533363360(c)Y
533373272(c)Y
533383184(c)Y
533393096(c)Y
533403008(c)Y
533412920(c)Y
533422832(c)Y
533432744(c)Y
533442656(c)Y
533452568(c)Y
533462480(c)Y
533472392(c)Y
533482304(c)Y
533492216(c)Y
533502128(c)Y
533512040(c)Y
533521952(c)Y
533531864(c)Y
533541776(c)Y
533551688(c)Y
533561600(c)Y
533571512(c)Y
533581424(c)Y
533591336(c)Y
533601248(c)Y
5336110 s
533621 f
53363576 5951(Revision:)N
53364902(2.0.0)X
533652176(Page)X
533662352(84)X
533673599(July)X
533683752(27,)X
533693872(1993)X
533701943 6055(Industry)N
533712230(Review)X
533722495(Draft)X
53373
5337485 p
53375%%Page: 85 87
533760(Courier)xf 0 f
5337710 s 0 xH 0 xS 0 f
5337811 s
533791 f
5338010 s
533813075 520(Programming)N
533823535(Languages)X
533833903(SIG)X
533843 f
5338511 s
53386576 832(Appendix)N
53387965(1)X
533881031(\(cont'd\))X
533891350(--)X
533901430(Current)X
533911759(Attributes)X
533922166(by)X
533932281(Tag)X
533942450(Value)X
533951 f
5339610 f
53397576 1160(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N
533983 f
53399620 1264(TAG)N
53400833(NAME)X
534011971(APPLICABLE)X
534022560(ATTRIBUTES)X
534031 f
5340410 f
53405576 1280(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N
534060 f
53407620 1384(DW_TAG_constant)N
534081971(DECL)X
534091971 1488 0.1979(DW_AT_accessibility)AN
534101971 1592 0.1974(DW_AT_constant_value)AN
534111971 1696 0.1992(DW_AT_declaration)AN
534121971 1800(DW_AT_external)N
534131971 1904(DW_AT_name)N
534141971 2008(DW_AT_sibling)N
534151971 2112 0.1992(DW_AT_start_scope)AN
534161971 2216(DW_AT_type)N
534171971 2320(DW_AT_visibility)N
534181 f
5341910 f
53420576 2336(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N
534210 f
53422620 2440 0.1985(DW_TAG_entry_point)AN
534231971 0.1979(DW_AT_address_class)AX
534241971 2544(DW_AT_low_pc)N
534251971 2648(DW_AT_name)N
534261971 2752 0.1992(DW_AT_return_addr)AN
534271971 2856(DW_AT_segment)N
534281971 2960(DW_AT_sibling)N
534291971 3064 0.1992(DW_AT_static_link)AN
534301971 3168(DW_AT_type)N
534311 f
5343210 f
53433576 3184(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N
534340 f
53435620 3288 0.1960(DW_TAG_enumeration_type)AN
534361971(DECL)X
534371971 3392 0.1969(DW_AT_abstract_origin)AN
534381971 3496 0.1979(DW_AT_accessibility)AN
534391971 3600(DW_AT_byte_size)N
534401971 3704 0.1992(DW_AT_declaration)AN
534411971 3808(DW_AT_name)N
534421971 3912(DW_AT_sibling)N
534431971 4016 0.1992(DW_AT_start_scope)AN
534441971 4120(DW_AT_visibility)N
534451 f
5344610 f
53447576 4136(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N
534480 f
53449620 4240 0.1992(DW_TAG_enumerator)AN
534501971(DECL)X
534511971 4344 0.1992(DW_AT_const_value)AN
534521971 4448(DW_AT_name)N
534531971 4552(DW_AT_sibling)N
534541 f
5345510 f
53456576 4568(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N
534570 f
53458620 4672(DW_TAG_file_type)N
534591971(DECL)X
534601971 4776 0.1969(DW_AT_abstract_origin)AN
534611971 4880(DW_AT_byte_size)N
534621971 4984(DW_AT_name)N
534631971 5088(DW_AT_sibling)N
534641971 5192 0.1992(DW_AT_start_scope)AN
534651971 5296(DW_AT_type)N
534661971 5400(DW_AT_visibility)N
534671 f
5346810 f
53469576 5416(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N
53470576(c)X
534715384(c)Y
534725296(c)Y
534735208(c)Y
534745120(c)Y
534755032(c)Y
534764944(c)Y
534774856(c)Y
534784768(c)Y
534794680(c)Y
534804592(c)Y
534814504(c)Y
534824416(c)Y
534834328(c)Y
534844240(c)Y
534854152(c)Y
534864064(c)Y
534873976(c)Y
534883888(c)Y
534893800(c)Y
534903712(c)Y
534913624(c)Y
534923536(c)Y
534933448(c)Y
534943360(c)Y
534953272(c)Y
534963184(c)Y
534973096(c)Y
534983008(c)Y
534992920(c)Y
535002832(c)Y
535012744(c)Y
535022656(c)Y
535032568(c)Y
535042480(c)Y
535052392(c)Y
535062304(c)Y
535072216(c)Y
535082128(c)Y
535092040(c)Y
535101952(c)Y
535111864(c)Y
535121776(c)Y
535131688(c)Y
535141600(c)Y
535151512(c)Y
535161424(c)Y
535171336(c)Y
535181248(c)Y
535193171 5416(c)N
535205384(c)Y
535215296(c)Y
535225208(c)Y
535235120(c)Y
535245032(c)Y
535254944(c)Y
535264856(c)Y
535274768(c)Y
535284680(c)Y
535294592(c)Y
535304504(c)Y
535314416(c)Y
535324328(c)Y
535334240(c)Y
535344152(c)Y
535354064(c)Y
535363976(c)Y
535373888(c)Y
535383800(c)Y
535393712(c)Y
535403624(c)Y
535413536(c)Y
535423448(c)Y
535433360(c)Y
535443272(c)Y
535453184(c)Y
535463096(c)Y
535473008(c)Y
535482920(c)Y
535492832(c)Y
535502744(c)Y
535512656(c)Y
535522568(c)Y
535532480(c)Y
535542392(c)Y
535552304(c)Y
535562216(c)Y
535572128(c)Y
535582040(c)Y
535591952(c)Y
535601864(c)Y
535611776(c)Y
535621688(c)Y
535631600(c)Y
535641512(c)Y
535651424(c)Y
535661336(c)Y
535671248(c)Y
5356810 s
535691 f
53570576 5951(Revision:)N
53571902(2.0.0)X
535722176(Page)X
535732352(85)X
535743599(July)X
535753752(27,)X
535763872(1993)X
535771943 6055(Industry)N
535782230(Review)X
535792495(Draft)X
53580
5358186 p
53582%%Page: 86 88
535830(Courier)xf 0 f
5358410 s 0 xH 0 xS 0 f
5358511 s
535861 f
5358710 s
53588576 520(DWARF)N
53589885(Debugging)X
535901261(Information)X
535911664(Format)X
535923 f
5359311 s
53594576 832(Appendix)N
53595965(1)X
535961031(\(cont'd\))X
535971350(--)X
535981430(Current)X
535991759(Attributes)X
536002166(by)X
536012281(Tag)X
536022450(Value)X
536031 f
5360410 f
53605576 1160(i)N
53606613(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
536073 f
53608620 1264(TAG)N
53609833(NAME)X
536102183(APPLICABLE)X
536112772(ATTRIBUTES)X
536121 f
5361310 f
53614576 1280(i)N
53615613(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
536160 f
53617620 1384 0.1960(DW_TAG_formal_parameter)AN
536182183(DECL)X
536192183 1488 0.1969(DW_AT_abstract_origin)AN
536202183 1592(DW_AT_artificial)N
536212183 1696 0.1979(DW_AT_default_value)AN
536222183 1800 0.1992(DW_AT_is_optional)AN
536232183 1904(DW_AT_location)N
536242183 2008(DW_AT_name)N
536252183 2112(DW_AT_segment)N
536262183 2216(DW_AT_sibling)N
536272183 2320(DW_AT_type)N
536282183 2424 0.1957(DW_AT_variable_parameter)AN
536291 f
5363010 f
53631576 2440(i)N
53632613(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
536330 f
53634620 2544(DW_TAG_friend)N
536352183(DECL)X
536362183 2648 0.1969(DW_AT_abstract_origin)AN
536372183 2752(DW_AT_friend)N
536382183 2856(DW_AT_sibling)N
536391 f
5364010 f
53641576 2872(i)N
53642613(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
536430 f
53644620 2976 0.1947(DW_TAG_imported_declaration)AN
536452183(DECL)X
536462183 3080 0.1979(DW_AT_accessibility)AN
536472183 3184(DW_AT_import)N
536482183 3288(DW_AT_name)N
536492183 3392(DW_AT_sibling)N
536502183 3496 0.1992(DW_AT_start_scope)AN
536511 f
5365210 f
53653576 3512(i)N
53654613(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
536550 f
53656620 3616 0.1985(DW_TAG_inheritance)AN
536572183(DECL)X
536582183 3720 0.1979(DW_AT_accessibility)AN
536592183 3824 0.1950(DW_AT_data_member_location)AN
536602183 3928(DW_AT_sibling)N
536612183 4032(DW_AT_type)N
536622183 4136(DW_AT_virtuality)N
536631 f
5366410 f
53665576 4152(i)N
53666613(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
536670 f
53668620 4256 0.1953(DW_TAG_inlined_subroutine)AN
536692183(DECL)X
536702183 4360 0.1969(DW_AT_abstract_origin)AN
536712183 4464(DW_AT_high_pc)N
536722183 4568(DW_AT_low_pc)N
536732183 4672(DW_AT_segment)N
536742183 4776(DW_AT_sibling)N
536752183 4880 0.1992(DW_AT_return_addr)AN
536762183 4984 0.1992(DW_AT_start_scope)AN
536771 f
5367810 f
53679576 5000(i)N
53680613(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
536810 f
53682620 5104(DW_TAG_label)N
536832183 0.1969(DW_AT_abstract_origin)AX
536842183 5208(DW_AT_low_pc)N
536852183 5312(DW_AT_name)N
536862183 5416(DW_AT_segment)N
536872183 5520 0.1992(DW_AT_start_scope)AN
536882183 5624(DW_AT_sibling)N
536891 f
5369010 f
53691576 5640(i)N
53692613(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
53693576(c)X
536945560(c)Y
536955472(c)Y
536965384(c)Y
536975296(c)Y
536985208(c)Y
536995120(c)Y
537005032(c)Y
537014944(c)Y
537024856(c)Y
537034768(c)Y
537044680(c)Y
537054592(c)Y
537064504(c)Y
537074416(c)Y
537084328(c)Y
537094240(c)Y
537104152(c)Y
537114064(c)Y
537123976(c)Y
537133888(c)Y
537143800(c)Y
537153712(c)Y
537163624(c)Y
537173536(c)Y
537183448(c)Y
537193360(c)Y
537203272(c)Y
537213184(c)Y
537223096(c)Y
537233008(c)Y
537242920(c)Y
537252832(c)Y
537262744(c)Y
537272656(c)Y
537282568(c)Y
537292480(c)Y
537302392(c)Y
537312304(c)Y
537322216(c)Y
537332128(c)Y
537342040(c)Y
537351952(c)Y
537361864(c)Y
537371776(c)Y
537381688(c)Y
537391600(c)Y
537401512(c)Y
537411424(c)Y
537421336(c)Y
537431248(c)Y
537443605 5640(c)N
537455560(c)Y
537465472(c)Y
537475384(c)Y
537485296(c)Y
537495208(c)Y
537505120(c)Y
537515032(c)Y
537524944(c)Y
537534856(c)Y
537544768(c)Y
537554680(c)Y
537564592(c)Y
537574504(c)Y
537584416(c)Y
537594328(c)Y
537604240(c)Y
537614152(c)Y
537624064(c)Y
537633976(c)Y
537643888(c)Y
537653800(c)Y
537663712(c)Y
537673624(c)Y
537683536(c)Y
537693448(c)Y
537703360(c)Y
537713272(c)Y
537723184(c)Y
537733096(c)Y
537743008(c)Y
537752920(c)Y
537762832(c)Y
537772744(c)Y
537782656(c)Y
537792568(c)Y
537802480(c)Y
537812392(c)Y
537822304(c)Y
537832216(c)Y
537842128(c)Y
537852040(c)Y
537861952(c)Y
537871864(c)Y
537881776(c)Y
537891688(c)Y
537901600(c)Y
537911512(c)Y
537921424(c)Y
537931336(c)Y
537941248(c)Y
5379510 s
537961 f
53797576 5951(Revision:)N
53798902(2.0.0)X
537992176(Page)X
538002352(86)X
538013599(July)X
538023752(27,)X
538033872(1993)X
538041943 6055(Industry)N
538052230(Review)X
538062495(Draft)X
53807
5380887 p
53809%%Page: 87 89
538100(Courier)xf 0 f
5381110 s 0 xH 0 xS 0 f
5381211 s
538131 f
5381410 s
538153075 520(Programming)N
538163535(Languages)X
538173903(SIG)X
538183 f
5381911 s
53820576 832(Appendix)N
53821965(1)X
538221031(\(cont'd\))X
538231350(--)X
538241430(Current)X
538251759(Attributes)X
538262166(by)X
538272281(Tag)X
538282450(Value)X
538291 f
5383010 f
53831576 1160(i)N
53832594(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
538333 f
53834620 1264(TAG)N
53835833(NAME)X
538361812(APPLICABLE)X
538372401(ATTRIBUTES)X
538381 f
5383910 f
53840576 1280(i)N
53841594(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
538420 f
53843620 1384 0.1974(DW_TAG_lexical_block)AN
538441812 0.1969(DW_AT_abstract_origin)AX
538451812 1488(DW_AT_high_pc)N
538461812 1592(DW_AT_low_pc)N
538471812 1696(DW_AT_name)N
538481812 1800(DW_AT_segment)N
538491812 1904(DW_AT_sibling)N
538501 f
5385110 f
53852576 1920(i)N
53853594(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
538540 f
53855620 2024(DW_TAG_member)N
538561812(DECL)X
538571812 2128 0.1979(DW_AT_accessibility)AN
538581812 2232(DW_AT_byte_size)N
538591812 2336(DW_AT_bit_offset)N
538601812 2440(DW_AT_bit_size)N
538611812 2544 0.1950(DW_AT_data_member_location)AN
538621812 2648 0.1992(DW_AT_declaration)AN
538631812 2752(DW_AT_name)N
538641812 2856(DW_AT_sibling)N
538651812 2960(DW_AT_type)N
538661812 3064(DW_AT_visibility)N
538671 f
5386810 f
53869576 3080(i)N
53870594(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
538710 f
53872620 3184(DW_TAG_module)N
538731812(DECL)X
538741812 3288 0.1979(DW_AT_accessibility)AN
538751812 3392 0.1992(DW_AT_declaration)AN
538761812 3496(DW_AT_high_pc)N
538771812 3600(DW_AT_low_pc)N
538781812 3704(DW_AT_name)N
538791812 3808(DW_AT_priority)N
538801812 3912(DW_AT_segment)N
538811812 4016(DW_AT_sibling)N
538821812 4120(DW_AT_visibility)N
538831 f
5388410 f
53885576 4136(i)N
53886594(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
538870 f
53888620 4240(DW_TAG_namelist)N
538891812(DECL)X
538901812 4344 0.1979(DW_AT_accessibility)AN
538911812 4448 0.1969(DW_AT_abstract_origin)AN
538921812 4552 0.1992(DW_AT_declaration)AN
538931812 4656(DW_AT_sibling)N
538941812 4760(DW_AT_visibility)N
538951 f
5389610 f
53897576 4776(i)N
53898594(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
538990 f
53900620 4880 0.1974(DW_TAG_namelist_item)AN
539011812(DECL)X
539021812 4984 0.1979(DW_AT_namelist_item)AN
539031812 5088(DW_AT_sibling)N
539041 f
5390510 f
53906576 5104(i)N
53907594(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
539080 f
53909620 5208 0.1985(DW_TAG_packed_type)AN
539101812(DW_AT_sibling)X
539111812 5312(DW_AT_type)N
539121 f
5391310 f
53914576 5328(i)N
53915594(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
53916576(c)X
539175296(c)Y
539185208(c)Y
539195120(c)Y
539205032(c)Y
539214944(c)Y
539224856(c)Y
539234768(c)Y
539244680(c)Y
539254592(c)Y
539264504(c)Y
539274416(c)Y
539284328(c)Y
539294240(c)Y
539304152(c)Y
539314064(c)Y
539323976(c)Y
539333888(c)Y
539343800(c)Y
539353712(c)Y
539363624(c)Y
539373536(c)Y
539383448(c)Y
539393360(c)Y
539403272(c)Y
539413184(c)Y
539423096(c)Y
539433008(c)Y
539442920(c)Y
539452832(c)Y
539462744(c)Y
539472656(c)Y
539482568(c)Y
539492480(c)Y
539502392(c)Y
539512304(c)Y
539522216(c)Y
539532128(c)Y
539542040(c)Y
539551952(c)Y
539561864(c)Y
539571776(c)Y
539581688(c)Y
539591600(c)Y
539601512(c)Y
539611424(c)Y
539621336(c)Y
539631248(c)Y
539643234 5328(c)N
539655296(c)Y
539665208(c)Y
539675120(c)Y
539685032(c)Y
539694944(c)Y
539704856(c)Y
539714768(c)Y
539724680(c)Y
539734592(c)Y
539744504(c)Y
539754416(c)Y
539764328(c)Y
539774240(c)Y
539784152(c)Y
539794064(c)Y
539803976(c)Y
539813888(c)Y
539823800(c)Y
539833712(c)Y
539843624(c)Y
539853536(c)Y
539863448(c)Y
539873360(c)Y
539883272(c)Y
539893184(c)Y
539903096(c)Y
539913008(c)Y
539922920(c)Y
539932832(c)Y
539942744(c)Y
539952656(c)Y
539962568(c)Y
539972480(c)Y
539982392(c)Y
539992304(c)Y
540002216(c)Y
540012128(c)Y
540022040(c)Y
540031952(c)Y
540041864(c)Y
540051776(c)Y
540061688(c)Y
540071600(c)Y
540081512(c)Y
540091424(c)Y
540101336(c)Y
540111248(c)Y
5401210 s
540131 f
54014576 5951(Revision:)N
54015902(2.0.0)X
540162176(Page)X
540172352(87)X
540183599(July)X
540193752(27,)X
540203872(1993)X
540211943 6055(Industry)N
540222230(Review)X
540232495(Draft)X
54024
5402588 p
54026%%Page: 88 90
540270(Courier)xf 0 f
5402810 s 0 xH 0 xS 0 f
5402911 s
540301 f
5403110 s
54032576 520(DWARF)N
54033885(Debugging)X
540341261(Information)X
540351664(Format)X
540363 f
5403711 s
54038576 832(Appendix)N
54039965(1)X
540401031(\(cont'd\))X
540411350(--)X
540421430(Current)X
540431759(Attributes)X
540442166(by)X
540452281(Tag)X
540462450(Value)X
540471 f
5404810 f
54049576 1160(i)N
54050593(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
540513 f
54052620 1264(TAG)N
54053833(NAME)X
540542077(APPLICABLE)X
540552666(ATTRIBUTES)X
540561 f
5405710 f
54058576 1280(i)N
54059593(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
540600 f
54061620 1384 0.1979(DW_TAG_pointer_type)AN
540622077 0.1979(DW_AT_address_class)AX
540632077 1488(DW_AT_sibling)N
540642077 1592(DW_AT_type)N
540651 f
5406610 f
54067576 1608(i)N
54068593(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
540690 f
54070620 1712 0.1953(DW_TAG_ptr_to_member_type)AN
540712077(DECL)X
540722077 1816 0.1969(DW_AT_abstract_origin)AN
540732077 1920 0.1979(DW_AT_address_class)AN
540742077 2024 0.1969(DW_AT_containing_type)AN
540752077 2128 0.1992(DW_AT_declaration)AN
540762077 2232(DW_AT_name)N
540772077 2336(DW_AT_sibling)N
540782077 2440(DW_AT_type)N
540792077 2544 0.1985(DW_AT_use_location)AN
540802077 2648(DW_AT_visibility)N
540811 f
5408210 f
54083576 2664(i)N
54084593(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
540850 f
54086620 2768 0.1969(DW_TAG_reference_type)AN
540872077 0.1979(DW_AT_address_class)AX
540882077 2872(DW_AT_sibling)N
540892077 2976(DW_AT_type)N
540901 f
5409110 f
54092576 2992(i)N
54093593(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
540940 f
54095620 3096(DW_TAG_set_type)N
540962077(DECL)X
540972077 3200 0.1969(DW_AT_abstract_origin)AN
540982077 3304 0.1979(DW_AT_accessibility)AN
540992077 3408(DW_AT_byte_size)N
541002077 3512 0.1992(DW_AT_declaration)AN
541012077 3616(DW_AT_name)N
541022077 3720 0.1992(DW_AT_start_scope)AN
541032077 3824(DW_AT_sibling)N
541042077 3928(DW_AT_type)N
541052077 4032(DW_AT_visibility)N
541061 f
5410710 f
54108576 4048(i)N
54109593(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
541100 f
54111620 4152 0.1985(DW_TAG_string_type)AN
541122077(DECL)X
541132077 4256 0.1979(DW_AT_accessibility)AN
541142077 4360 0.1969(DW_AT_abstract_origin)AN
541152077 4464(DW_AT_byte_size)N
541162077 4568 0.1992(DW_AT_declaration)AN
541172077 4672(DW_AT_name)N
541182077 4776(DW_AT_segment)N
541192077 4880(DW_AT_sibling)N
541202077 4984 0.1992(DW_AT_start_scope)AN
541212077 5088 0.1979(DW_AT_string_length)AN
541222077 5192(DW_AT_visibility)N
541231 f
5412410 f
54125576 5208(i)N
54126593(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
54127576(c)X
541285120(c)Y
541295032(c)Y
541304944(c)Y
541314856(c)Y
541324768(c)Y
541334680(c)Y
541344592(c)Y
541354504(c)Y
541364416(c)Y
541374328(c)Y
541384240(c)Y
541394152(c)Y
541404064(c)Y
541413976(c)Y
541423888(c)Y
541433800(c)Y
541443712(c)Y
541453624(c)Y
541463536(c)Y
541473448(c)Y
541483360(c)Y
541493272(c)Y
541503184(c)Y
541513096(c)Y
541523008(c)Y
541532920(c)Y
541542832(c)Y
541552744(c)Y
541562656(c)Y
541572568(c)Y
541582480(c)Y
541592392(c)Y
541602304(c)Y
541612216(c)Y
541622128(c)Y
541632040(c)Y
541641952(c)Y
541651864(c)Y
541661776(c)Y
541671688(c)Y
541681600(c)Y
541691512(c)Y
541701424(c)Y
541711336(c)Y
541721248(c)Y
541733277 5208(c)N
541745120(c)Y
541755032(c)Y
541764944(c)Y
541774856(c)Y
541784768(c)Y
541794680(c)Y
541804592(c)Y
541814504(c)Y
541824416(c)Y
541834328(c)Y
541844240(c)Y
541854152(c)Y
541864064(c)Y
541873976(c)Y
541883888(c)Y
541893800(c)Y
541903712(c)Y
541913624(c)Y
541923536(c)Y
541933448(c)Y
541943360(c)Y
541953272(c)Y
541963184(c)Y
541973096(c)Y
541983008(c)Y
541992920(c)Y
542002832(c)Y
542012744(c)Y
542022656(c)Y
542032568(c)Y
542042480(c)Y
542052392(c)Y
542062304(c)Y
542072216(c)Y
542082128(c)Y
542092040(c)Y
542101952(c)Y
542111864(c)Y
542121776(c)Y
542131688(c)Y
542141600(c)Y
542151512(c)Y
542161424(c)Y
542171336(c)Y
542181248(c)Y
5421910 s
542201 f
54221576 5951(Revision:)N
54222902(2.0.0)X
542232176(Page)X
542242352(88)X
542253599(July)X
542263752(27,)X
542273872(1993)X
542281943 6055(Industry)N
542292230(Review)X
542302495(Draft)X
54231
5423289 p
54233%%Page: 89 91
542340(Courier)xf 0 f
5423510 s 0 xH 0 xS 0 f
5423611 s
542371 f
5423810 s
542393075 520(Programming)N
542403535(Languages)X
542413903(SIG)X
542423 f
5424311 s
54244576 832(Appendix)N
54245965(1)X
542461031(\(cont'd\))X
542471350(--)X
542481430(Current)X
542491759(Attributes)X
542502166(by)X
542512281(Tag)X
542522450(Value)X
542531 f
5425410 f
54255576 1160(i)N
54256603(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
542573 f
54258620 1264(TAG)N
54259833(NAME)X
542601865(APPLICABLE)X
542612454(ATTRIBUTES)X
542621 f
5426310 f
54264576 1280(i)N
54265603(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
542660 f
54267620 1384 0.1969(DW_TAG_structure_type)AN
542681865(DECL)X
542691865 1488 0.1969(DW_AT_abstract_origin)AN
542701865 1592 0.1979(DW_AT_accessibility)AN
542711865 1696(DW_AT_byte_size)N
542721865 1800 0.1992(DW_AT_declaration)AN
542731865 1904(DW_AT_name)N
542741865 2008(DW_AT_sibling)N
542751865 2112 0.1992(DW_AT_start_scope)AN
542761865 2216(DW_AT_visibility)N
542771 f
5427810 f
54279576 2232(i)N
54280603(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
542810 f
54282620 2336 0.1992(DW_TAG_subprogram)AN
542831865(DECL)X
542841865 2440 0.1969(DW_AT_abstract_origin)AN
542851865 2544 0.1979(DW_AT_accessibility)AN
542861865 2648 0.1979(DW_AT_address_class)AN
542871865 2752(DW_AT_artificial)N
542881865 2856 0.1957(DW_AT_calling_convention)AN
542891865 2960 0.1992(DW_AT_declaration)AN
542901865 3064(DW_AT_external)N
542911865 3168(DW_AT_frame_base)N
542921865 3272(DW_AT_high_pc)N
542931865 3376(DW_AT_inline)N
542941865 3480(DW_AT_low_pc)N
542951865 3584(DW_AT_name)N
542961865 3688(DW_AT_prototyped)N
542971865 3792 0.1992(DW_AT_return_addr)AN
542981865 3896(DW_AT_segment)N
542991865 4000(DW_AT_sibling)N
543001865 4104 0.1979(DW_AT_specification)AN
543011865 4208 0.1992(DW_AT_start_scope)AN
543021865 4312 0.1992(DW_AT_static_link)AN
543031865 4416(DW_AT_type)N
543041865 4520(DW_AT_visibility)N
543051865 4624(DW_AT_virtuality)N
543061865 4728 0.1950(DW_AT_vtable_elem_location)AN
543071 f
5430810 f
54309576 4744(i)N
54310603(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
54311576(c)X
543124680(c)Y
543134592(c)Y
543144504(c)Y
543154416(c)Y
543164328(c)Y
543174240(c)Y
543184152(c)Y
543194064(c)Y
543203976(c)Y
543213888(c)Y
543223800(c)Y
543233712(c)Y
543243624(c)Y
543253536(c)Y
543263448(c)Y
543273360(c)Y
543283272(c)Y
543293184(c)Y
543303096(c)Y
543313008(c)Y
543322920(c)Y
543332832(c)Y
543342744(c)Y
543352656(c)Y
543362568(c)Y
543372480(c)Y
543382392(c)Y
543392304(c)Y
543402216(c)Y
543412128(c)Y
543422040(c)Y
543431952(c)Y
543441864(c)Y
543451776(c)Y
543461688(c)Y
543471600(c)Y
543481512(c)Y
543491424(c)Y
543501336(c)Y
543511248(c)Y
543523287 4744(c)N
543534680(c)Y
543544592(c)Y
543554504(c)Y
543564416(c)Y
543574328(c)Y
543584240(c)Y
543594152(c)Y
543604064(c)Y
543613976(c)Y
543623888(c)Y
543633800(c)Y
543643712(c)Y
543653624(c)Y
543663536(c)Y
543673448(c)Y
543683360(c)Y
543693272(c)Y
543703184(c)Y
543713096(c)Y
543723008(c)Y
543732920(c)Y
543742832(c)Y
543752744(c)Y
543762656(c)Y
543772568(c)Y
543782480(c)Y
543792392(c)Y
543802304(c)Y
543812216(c)Y
543822128(c)Y
543832040(c)Y
543841952(c)Y
543851864(c)Y
543861776(c)Y
543871688(c)Y
543881600(c)Y
543891512(c)Y
543901424(c)Y
543911336(c)Y
543921248(c)Y
5439310 s
543941 f
54395576 5951(Revision:)N
54396902(2.0.0)X
543972176(Page)X
543982352(89)X
543993599(July)X
544003752(27,)X
544013872(1993)X
544021943 6055(Industry)N
544032230(Review)X
544042495(Draft)X
54405
5440690 p
54407%%Page: 90 92
544080(Courier)xf 0 f
5440910 s 0 xH 0 xS 0 f
5441011 s
544111 f
5441210 s
54413576 520(DWARF)N
54414885(Debugging)X
544151261(Information)X
544161664(Format)X
544173 f
5441811 s
54419576 832(Appendix)N
54420965(1)X
544211031(\(cont'd\))X
544221350(--)X
544231430(Current)X
544241759(Attributes)X
544252166(by)X
544262281(Tag)X
544272450(Value)X
544281 f
5442910 f
54430576 1160(i)N
54431611(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
544323 f
54433620 1264(TAG)N
54434833(NAME)X
544352183(APPLICABLE)X
544362772(ATTRIBUTES)X
544371 f
5443810 f
54439576 1280(i)N
54440611(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
544410 f
54442620 1384 0.1974(DW_TAG_subrange_type)AN
544432183(DECL)X
544442183 1488 0.1969(DW_AT_abstract_origin)AN
544452183 1592 0.1979(DW_AT_accessibility)AN
544462183 1696(DW_AT_byte_size)N
544472183 1800(DW_AT_count)N
544482183 1904 0.1992(DW_AT_declaration)AN
544492183 2008 0.1992(DW_AT_lower_bound)AN
544502183 2112(DW_AT_name)N
544512183 2216(DW_AT_sibling)N
544522183 2320(DW_AT_type)N
544532183 2424 0.1992(DW_AT_upper_bound)AN
544542183 2528(DW_AT_visibility)N
544551 f
5445610 f
54457576 2544(i)N
54458611(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
544590 f
54460620 2648 0.1964(DW_TAG_subroutine_type)AN
544612183(DECL)X
544622183 2752 0.1969(DW_AT_abstract_origin)AN
544632183 2856 0.1979(DW_AT_accessibility)AN
544642183 2960 0.1979(DW_AT_address_class)AN
544652183 3064 0.1992(DW_AT_declaration)AN
544662183 3168(DW_AT_name)N
544672183 3272(DW_AT_prototyped)N
544682183 3376(DW_AT_sibling)N
544692183 3480 0.1992(DW_AT_start_scope)AN
544702183 3584(DW_AT_type)N
544712183 3688(DW_AT_visibility)N
544721 f
5447310 f
54474576 3704(i)N
54475611(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
544760 f
54477620 3808 0.1950(DW_TAG_template_type_param)AN
544782183(DECL)X
544792183 3912(DW_AT_name)N
544802183 4016(DW_AT_sibling)N
544812183 4120(DW_AT_type)N
544821 f
5448310 f
54484576 4136(i)N
54485611(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
544860 f
54487620 4240 0.1947(DW_TAG_template_value_param)AN
544882183(DECL)X
544892183 4344(DW_AT_name)N
544902183 4448 0.1992(DW_AT_const_value)AN
544912183 4552(DW_AT_sibling)N
544922183 4656(DW_AT_type)N
544931 f
5449410 f
54495576 4672(i)N
54496611(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
544970 f
54498620 4776 0.1985(DW_TAG_thrown_type)AN
544992183(DECL)X
545002183 4880(DW_AT_sibling)N
545012183 4984(DW_AT_type)N
545021 f
5450310 f
54504576 5000(i)N
54505611(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
545060 f
54507620 5104(DW_TAG_try_block)N
545082183 0.1969(DW_AT_abstract_origin)AX
545092183 5208(DW_AT_high_pc)N
545102183 5312(DW_AT_low_pc)N
545112183 5416(DW_AT_segment)N
545122183 5520(DW_AT_sibling)N
545131 f
5451410 f
54515576 5536(i)N
54516611(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
54517576(c)X
545185472(c)Y
545195384(c)Y
545205296(c)Y
545215208(c)Y
545225120(c)Y
545235032(c)Y
545244944(c)Y
545254856(c)Y
545264768(c)Y
545274680(c)Y
545284592(c)Y
545294504(c)Y
545304416(c)Y
545314328(c)Y
545324240(c)Y
545334152(c)Y
545344064(c)Y
545353976(c)Y
545363888(c)Y
545373800(c)Y
545383712(c)Y
545393624(c)Y
545403536(c)Y
545413448(c)Y
545423360(c)Y
545433272(c)Y
545443184(c)Y
545453096(c)Y
545463008(c)Y
545472920(c)Y
545482832(c)Y
545492744(c)Y
545502656(c)Y
545512568(c)Y
545522480(c)Y
545532392(c)Y
545542304(c)Y
545552216(c)Y
545562128(c)Y
545572040(c)Y
545581952(c)Y
545591864(c)Y
545601776(c)Y
545611688(c)Y
545621600(c)Y
545631512(c)Y
545641424(c)Y
545651336(c)Y
545661248(c)Y
545673383 5536(c)N
545685472(c)Y
545695384(c)Y
545705296(c)Y
545715208(c)Y
545725120(c)Y
545735032(c)Y
545744944(c)Y
545754856(c)Y
545764768(c)Y
545774680(c)Y
545784592(c)Y
545794504(c)Y
545804416(c)Y
545814328(c)Y
545824240(c)Y
545834152(c)Y
545844064(c)Y
545853976(c)Y
545863888(c)Y
545873800(c)Y
545883712(c)Y
545893624(c)Y
545903536(c)Y
545913448(c)Y
545923360(c)Y
545933272(c)Y
545943184(c)Y
545953096(c)Y
545963008(c)Y
545972920(c)Y
545982832(c)Y
545992744(c)Y
546002656(c)Y
546012568(c)Y
546022480(c)Y
546032392(c)Y
546042304(c)Y
546052216(c)Y
546062128(c)Y
546072040(c)Y
546081952(c)Y
546091864(c)Y
546101776(c)Y
546111688(c)Y
546121600(c)Y
546131512(c)Y
546141424(c)Y
546151336(c)Y
546161248(c)Y
5461710 s
546181 f
54619576 5951(Revision:)N
54620902(2.0.0)X
546212176(Page)X
546222352(90)X
546233599(July)X
546243752(27,)X
546253872(1993)X
546261943 6055(Industry)N
546272230(Review)X
546282495(Draft)X
54629
5463091 p
54631%%Page: 91 93
546320(Courier)xf 0 f
5463310 s 0 xH 0 xS 0 f
5463411 s
546351 f
5463610 s
546373075 520(Programming)N
546383535(Languages)X
546393903(SIG)X
546403 f
5464111 s
54642576 832(Appendix)N
54643965(1)X
546441031(\(cont'd\))X
546451350(--)X
546461430(Current)X
546471759(Attributes)X
546482166(by)X
546492281(Tag)X
546502450(Value)X
546511 f
5465210 f
54653576 1160(i)N
54654585(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
546553 f
54656620 1264(TAG)N
54657833(NAME)X
546582289(APPLICABLE)X
546592878(ATTRIBUTES)X
546601 f
5466110 f
54662576 1280(i)N
54663585(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
546640 f
54665620 1384(DW_TAG_typedef)N
546662289(DECL)X
546672289 1488 0.1969(DW_AT_abstract_origin)AN
546682289 1592 0.1979(DW_AT_accessibility)AN
546692289 1696 0.1992(DW_AT_declaration)AN
546702289 1800(DW_AT_name)N
546712289 1904(DW_AT_sibling)N
546722289 2008 0.1992(DW_AT_start_scope)AN
546732289 2112(DW_AT_type)N
546742289 2216(DW_AT_visibility)N
546751 f
5467610 f
54677576 2232(i)N
54678585(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
546790 f
54680620 2336 0.1992(DW_TAG_union_type)AN
546812289(DECL)X
546822289 2440 0.1969(DW_AT_abstract_origin)AN
546832289 2544 0.1979(DW_AT_accessibility)AN
546842289 2648(DW_AT_byte_size)N
546852289 2752 0.1992(DW_AT_declaration)AN
546862289 2856(DW_AT_friends)N
546872289 2960(DW_AT_name)N
546882289 3064(DW_AT_sibling)N
546892289 3168 0.1992(DW_AT_start_scope)AN
546902289 3272(DW_AT_visibility)N
546911 f
5469210 f
54693576 3288(i)N
54694585(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
546950 f
54696620 3392 0.1942(DW_TAG_unspecified_parameters)AN
546972289(DECL)X
546982289 3496 0.1969(DW_AT_abstract_origin)AN
546992289 3600(DW_AT_artificial)N
547002289 3704(DW_AT_sibling)N
547011 f
5470210 f
54703576 3720(i)N
54704585(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
547050 f
54706620 3824(DW_TAG_variable)N
547072289(DECL)X
547082289 3928 0.1979(DW_AT_accessibility)AN
547092289 4032 0.1974(DW_AT_constant_value)AN
547102289 4136 0.1992(DW_AT_declaration)AN
547112289 4240(DW_AT_external)N
547122289 4344(DW_AT_location)N
547132289 4448(DW_AT_name)N
547142289 4552(DW_AT_segment)N
547152289 4656(DW_AT_sibling)N
547162289 4760 0.1979(DW_AT_specification)AN
547172289 4864 0.1992(DW_AT_start_scope)AN
547182289 4968(DW_AT_type)N
547192289 5072(DW_AT_visibility)N
547201 f
5472110 f
54722576 5088(i)N
54723585(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
54724576(c)X
547255032(c)Y
547264944(c)Y
547274856(c)Y
547284768(c)Y
547294680(c)Y
547304592(c)Y
547314504(c)Y
547324416(c)Y
547334328(c)Y
547344240(c)Y
547354152(c)Y
547364064(c)Y
547373976(c)Y
547383888(c)Y
547393800(c)Y
547403712(c)Y
547413624(c)Y
547423536(c)Y
547433448(c)Y
547443360(c)Y
547453272(c)Y
547463184(c)Y
547473096(c)Y
547483008(c)Y
547492920(c)Y
547502832(c)Y
547512744(c)Y
547522656(c)Y
547532568(c)Y
547542480(c)Y
547552392(c)Y
547562304(c)Y
547572216(c)Y
547582128(c)Y
547592040(c)Y
547601952(c)Y
547611864(c)Y
547621776(c)Y
547631688(c)Y
547641600(c)Y
547651512(c)Y
547661424(c)Y
547671336(c)Y
547681248(c)Y
547693489 5088(c)N
547705032(c)Y
547714944(c)Y
547724856(c)Y
547734768(c)Y
547744680(c)Y
547754592(c)Y
547764504(c)Y
547774416(c)Y
547784328(c)Y
547794240(c)Y
547804152(c)Y
547814064(c)Y
547823976(c)Y
547833888(c)Y
547843800(c)Y
547853712(c)Y
547863624(c)Y
547873536(c)Y
547883448(c)Y
547893360(c)Y
547903272(c)Y
547913184(c)Y
547923096(c)Y
547933008(c)Y
547942920(c)Y
547952832(c)Y
547962744(c)Y
547972656(c)Y
547982568(c)Y
547992480(c)Y
548002392(c)Y
548012304(c)Y
548022216(c)Y
548032128(c)Y
548042040(c)Y
548051952(c)Y
548061864(c)Y
548071776(c)Y
548081688(c)Y
548091600(c)Y
548101512(c)Y
548111424(c)Y
548121336(c)Y
548131248(c)Y
5481410 s
548151 f
54816576 5951(Revision:)N
54817902(2.0.0)X
548182176(Page)X
548192352(91)X
548203599(July)X
548213752(27,)X
548223872(1993)X
548231943 6055(Industry)N
548242230(Review)X
548252495(Draft)X
54826
5482792 p
54828%%Page: 92 94
548290(Courier)xf 0 f
5483010 s 0 xH 0 xS 0 f
5483111 s
548321 f
5483310 s
54834576 520(DWARF)N
54835885(Debugging)X
548361261(Information)X
548371664(Format)X
548383 f
5483911 s
54840576 832(Appendix)N
54841965(1)X
548421031(\(cont'd\))X
548431350(--)X
548441430(Current)X
548451759(Attributes)X
548462166(by)X
548472281(Tag)X
548482450(Value)X
548491 f
5485010 f
54851576 1160(i)N
54852601(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
548533 f
54854620 1264(TAG)N
54855833(NAME)X
548561865(APPLICABLE)X
548572454(ATTRIBUTES)X
548581 f
5485910 f
54860576 1280(i)N
54861601(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
548620 f
54863620 1384(DW_TAG_variant)N
548641865(DECL)X
548651865 1488 0.1979(DW_AT_accessibility)AN
548661865 1592 0.1969(DW_AT_abstract_origin)AN
548671865 1696 0.1992(DW_AT_declaration)AN
548681865 1800(DW_AT_discr_list)N
548691865 1904 0.1992(DW_AT_discr_value)AN
548701865 2008(DW_AT_sibling)N
548711 f
5487210 f
54873576 2024(i)N
54874601(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
548750 f
54876620 2128 0.1979(DW_TAG_variant_part)AN
548771865(DECL)X
548781865 2232 0.1979(DW_AT_accessibility)AN
548791865 2336 0.1969(DW_AT_abstract_origin)AN
548801865 2440 0.1992(DW_AT_declaration)AN
548811865 2544(DW_AT_discr)N
548821865 2648(DW_AT_sibling)N
548831865 2752(DW_AT_type)N
548841 f
5488510 f
54886576 2768(i)N
54887601(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
548880 f
54889620 2872 0.1974(DW_TAG_volatile_type)AN
548901865(DW_AT_sibling)X
548911865 2976(DW_AT_type)N
548921 f
5489310 f
54894576 2992(i)N
54895601(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
548960 f
54897620 3096 0.1969(DW_TAG_with_statement)AN
548981865 0.1979(DW_AT_accessibility)AX
548991865 3200 0.1979(DW_AT_address_class)AN
549001865 3304 0.1992(DW_AT_declaration)AN
549011865 3408(DW_AT_high_pc)N
549021865 3512(DW_AT_location)N
549031865 3616(DW_AT_low_pc)N
549041865 3720(DW_AT_segment)N
549051865 3824(DW_AT_sibling)N
549061865 3928(DW_AT_type)N
549071865 4032(DW_AT_visibility)N
549081 f
5490910 f
54910576 4048(i)N
54911601(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
54912576(c)X
549133976(c)Y
549143888(c)Y
549153800(c)Y
549163712(c)Y
549173624(c)Y
549183536(c)Y
549193448(c)Y
549203360(c)Y
549213272(c)Y
549223184(c)Y
549233096(c)Y
549243008(c)Y
549252920(c)Y
549262832(c)Y
549272744(c)Y
549282656(c)Y
549292568(c)Y
549302480(c)Y
549312392(c)Y
549322304(c)Y
549332216(c)Y
549342128(c)Y
549352040(c)Y
549361952(c)Y
549371864(c)Y
549381776(c)Y
549391688(c)Y
549401600(c)Y
549411512(c)Y
549421424(c)Y
549431336(c)Y
549441248(c)Y
549453065 4048(c)N
549463976(c)Y
549473888(c)Y
549483800(c)Y
549493712(c)Y
549503624(c)Y
549513536(c)Y
549523448(c)Y
549533360(c)Y
549543272(c)Y
549553184(c)Y
549563096(c)Y
549573008(c)Y
549582920(c)Y
549592832(c)Y
549602744(c)Y
549612656(c)Y
549622568(c)Y
549632480(c)Y
549642392(c)Y
549652304(c)Y
549662216(c)Y
549672128(c)Y
549682040(c)Y
549691952(c)Y
549701864(c)Y
549711776(c)Y
549721688(c)Y
549731600(c)Y
549741512(c)Y
549751424(c)Y
549761336(c)Y
549771248(c)Y
5497810 s
549791 f
54980576 5951(Revision:)N
54981902(2.0.0)X
549822176(Page)X
549832352(92)X
549843599(July)X
549853752(27,)X
549863872(1993)X
549871943 6055(Industry)N
549882230(Review)X
549892495(Draft)X
54990
5499193 p
54992%%Page: 93 95
549930(Courier)xf 0 f
5499410 s 0 xH 0 xS 0 f
5499511 s
549961 f
5499710 s
549983075 520(Programming)N
549993535(Languages)X
550003903(SIG)X
550013 f
5500212 s
55003576 832(Appendix)N
55004999(2)X
550051071(--)X
550061159(Organization)X
550071728(of)X
550081832(Debugging)X
550092298(Information)X
550101 f
5501111 s
55012576 988(The)N
55013760(following)X
550141150(diagram)X
550151486(depicts)X
550161783(the)X
550171938(relationship)X
550182402(of)X
550192522(the)X
550202677(abbreviation)X
550213165(tables)X
550223418(contained)X
550233808(in)X
550243924(the)X
550250 f
55026576 1092(.debug_abbrev)N
550271 f
550281294(section)X
550291573(to)X
550301670(the)X
550311806(information)X
550322251(contained)X
550332622(in)X
550342719(the)X
550350 f
550362855(.debug_info)X
550371 f
550383466(section.)X
550393788(Values)X
55040576 1196(are)N
55041705(given)X
55042923(in)X
550431014(symbolic)X
550441360(form,)X
550451575(where)X
550461811(possible.)X
550470 f
550489 s
550492741 1680(1)N
550502741 1760 -0.1979(DW_TAG_compile_unit)AN
550512741 1841(DW_CHILDREN_yes)N
550522741 1921(DW_AT_name)N
550533601(DW_FORM_string)X
550542741 2002(DW_AT_producer)N
550553601(DW_FORM_string)X
550562741 2083(DW_AT_compdir)N
550573601(DW_FORM_string)X
550582741 2163(DW_AT_language)N
550593601(DW_FORM_data1)X
550602741 2244(DW_AT_low_poc)N
550613601(DW_FORM_addr)X
550622741 2325(DW_AT_high_pc)N
550633601(DW_FORM_addr)X
550642741 2405(DW_AT_stmt_list)N
550653601(DW_FORM_indirect)X
550662741 2486(0)N
550673601(0)X
550681 f
5506911 s
5507010 f
550712649 4509(c)N
550724506(c)Y
550734418(c)Y
550744330(c)Y
550754242(c)Y
550764154(c)Y
550774066(c)Y
550783978(c)Y
550793890(c)Y
550803802(c)Y
550813714(c)Y
550823626(c)Y
550833538(c)Y
550843450(c)Y
550853362(c)Y
550863274(c)Y
550873186(c)Y
550883098(c)Y
550893010(c)Y
550902922(c)Y
550912834(c)Y
550922746(c)Y
550932658(c)Y
550942570(c)Y
550952482(c)Y
550962394(c)Y
550972306(c)Y
550982218(c)Y
550992130(c)Y
551002042(c)Y
551011954(c)Y
551021866(c)Y
551031778(c)Y
551041690(c)Y
551051602(c)Y
551061536(h)Y
551072688(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
551081602(c)Y
551091605(c)Y
551101693(c)Y
551111781(c)Y
551121869(c)Y
551131957(c)Y
551142045(c)Y
551152133(c)Y
551162221(c)Y
551172309(c)Y
551182397(c)Y
551192485(c)Y
551202573(c)Y
551212661(c)Y
551222749(c)Y
551232837(c)Y
551242925(c)Y
551253013(c)Y
551263101(c)Y
551273189(c)Y
551283277(c)Y
551293365(c)Y
551303453(c)Y
551313541(c)Y
551323629(c)Y
551333717(c)Y
551343805(c)Y
551353893(c)Y
551363981(c)Y
551374069(c)Y
551384157(c)Y
551394245(c)Y
551404333(c)Y
551414421(c)Y
551424509(c)Y
551432649 4531(h)N
551442688(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
55145714 5385(c)N
551465331(c)Y
551475243(c)Y
551485155(c)Y
551495067(c)Y
551504979(c)Y
551514891(c)Y
551524803(c)Y
551534715(c)Y
551544627(c)Y
551554539(c)Y
551564451(c)Y
551574363(c)Y
551584275(c)Y
551594208(h)Y
55160742(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
551612327 4274(c)N
551624328(c)Y
551634416(c)Y
551644504(c)Y
551654592(c)Y
551664680(c)Y
551674768(c)Y
551684856(c)Y
551694944(c)Y
551705032(c)Y
551715120(c)Y
551725208(c)Y
551735296(c)Y
551745384(c)Y
55175715 5407(h)N
55176743(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
551770 f
551789 s
55179806 3431(4)N
55180806 3511("POINTER")N
55181806 3171(3)N
551821 f
5518311 s
5518410 f
551852649 4393(h)N
551862688(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
551872649 3794(h)N
551882688(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
551892649 3287(h)N
551902688(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
551912649 2596(h)N
551922688(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
551930 f
551949 s
551952741 3909(4)N
551962741 3989(DW_TAG_typedef)N
551972741 4070(DW_CHILDREN_no)N
551982741 4151(DW_AT_name)N
551993601(DW_FORM_string)X
552002741 4231(DW_AT_type)N
552013601(DW_FORM_ref4)X
552022741 4312(0)N
552033601(0)X
552042741 4479(0)N
55205806 3759(0)N
552062 f
55207806 3598(e2)N
55208576 3183(e2:)N
552090 f
55210829 4410(2)N
552111 f
5521211 s
5521310 f
55214714 4669(h)N
55215742(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
552160 f
552179 s
55218829 4773(...)N
55219829 4957(4)N
55220829 5038("strp")N
552212 f
55222829 5141(e2)N
552230 f
55224829 5326(...)N
552251 f
5522611 s
5522710 f
55228714 3818(c)N
552293798(c)Y
552303710(c)Y
552313622(c)Y
552323534(c)Y
552333446(c)Y
552343358(c)Y
552353270(c)Y
552363182(c)Y
552373094(c)Y
552383006(c)Y
552392918(c)Y
552402830(c)Y
552412742(c)Y
552422654(c)Y
552432566(c)Y
552442478(c)Y
552452390(c)Y
552462302(c)Y
552472214(c)Y
552482126(c)Y
552492038(c)Y
552501950(c)Y
552511862(c)Y
552521774(c)Y
552531686(c)Y
552541598(c)Y
552551510(c)Y
552561444(h)Y
55257742(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
552582327 1510(c)N
552591530(c)Y
552601618(c)Y
552611706(c)Y
552621794(c)Y
552631882(c)Y
552641970(c)Y
552652058(c)Y
552662146(c)Y
552672234(c)Y
552682322(c)Y
552692410(c)Y
552702498(c)Y
552712586(c)Y
552722674(c)Y
552732762(c)Y
552742850(c)Y
552752938(c)Y
552763026(c)Y
552773114(c)Y
552783202(c)Y
552793290(c)Y
552803378(c)Y
552813466(c)Y
552823554(c)Y
552833642(c)Y
552843730(c)Y
552853818(c)Y
55286715 3840(h)N
55287743(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
552882 f
552899 s
55290829 4318(length)N
552910 f
55292831 4617(4)N
552932 f
55294829 4502(a1)N
55295937(\(abbreviation)X
552961347(table)X
552971509(offset\))X
552980 f
55299808 1829(4)N
553002 f
55301806 1737(a1)N
55302914(\(abbreviation)X
553031324(table)X
553041486(offset\))X
553050 f
553062741 2716(2)N
553072741 2797(DW_TAG_base_type)N
553082741 2878(DW_CHILDREN_no)N
553092741 2958(DW_AT_name)N
553103601(DW_FORM_string)X
553112741 3039(DW_AT_encoding)N
553123601(DW_FORM_data1)X
553132741 3120(DW_AT_byte_size)N
553143601(DW_FORM_data1)X
553152741 3200(0)N
553163601(0)X
553172 f
553182484 1639(a1:)N
55319806 1553(length)N
553201 f
5532110 s
553222787 1518(Abbreviation)N
553233230(Table)X
553243433(-)X
553253480(.debug_abbrev)X
55326967 1426(Compilation)N
553271386(Unit)X
553281548(1)X
553291608(-)X
553301655(.debug_info)X
55331944 4168(Compilation)N
553321363(Unit)X
553331525(2)X
553341585(-)X
553351632(.debug_info)X
553360 f
553379 s
55338808 1645(2)N
55339808 1939(1)N
55340783 2014("myfile.c")N
55341783 2094("Best)N
553421041(Compiler)X
553431428(Corp:)X
553441686(Version)X
553452030(1.3")X
55346783 2175 -0.1944("mymachine:/home/mydir/src:")AN
55347783 2256(DW_LANG_C89)N
55348783 2336(0x0)N
55349783 2417(0x55)N
55350783 2497(DW_FORM_data4)N
55351783 2578(0x0)N
553521 f
5535311 s
5535410 f
55355714 1858(h)N
55356742(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
553570 f
553589 s
55359806 2768(2)N
553602741 3396(3)N
553612741 3477 -0.1979(DW_TAG_pointer_type)AN
553622741 3557(DW_CHILDREN_no)N
553632741 3638(DW_AT_type)N
553643601(DW_FORM_ref4)X
553652741 3719(0)N
553663601(0)X
553671 f
5536811 s
5536910 f
55370714 4854(h)N
55371742(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
55372714 5222(h)N
55373742(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
553740 f
553759 s
55376806 2878("char")N
55377806 2958 -0.1974(DW_ATE_unsigned_char)AN
55378806 3039(1)N
553792 f
55380806 3275(e1)N
55381576 2768(e1:)N
553821 f
5538311 s
5538410 f
55385714 2642(h)N
55386742(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
55387714 3103(h)N
55388742(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
55389714 3333(h)N
55390742(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
55391714 3656(h)N
55392742(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
5539310 s
553941 f
55395576 5951(Revision:)N
55396902(2.0.0)X
553972176(Page)X
553982352(93)X
553993599(July)X
554003752(27,)X
554013872(1993)X
554021943 6055(Industry)N
554032230(Review)X
554042495(Draft)X
55405
5540694 p
55407%%Page: 94 96
554080(Courier)xf 0 f
5540910 s 0 xH 0 xS 0 f
5541011 s
554111 f
5541210 s
55413576 520(DWARF)N
55414885(Debugging)X
554151261(Information)X
554161664(Format)X
55417576 5951(Revision:)N
55418902(2.0.0)X
554192176(Page)X
554202352(94)X
554213599(July)X
554223752(27,)X
554233872(1993)X
554241943 6055(Industry)N
554252230(Review)X
554262495(Draft)X
55427
5542895 p
55429%%Page: 95 97
554300(Courier)xf 0 f
5543110 s 0 xH 0 xS 0 f
5543211 s
554331 f
5543410 s
554353075 520(Programming)N
554363535(Languages)X
554373903(SIG)X
554383 f
5543912 s
55440576 832(Appendix)N
55441999(3)X
554421071(--)X
554431159(Statement)X
554441599(Program)X
554451992(Examples)X
554461 f
5544711 s
55448576 988(Consider)N
55449916(this)X
554501066(simple)X
554511324(source)X
554521575(\256le)X
554531710(and)X
554541859(the)X
554551989(resulting)X
554562320(machine)X
554572641(code)X
554582829(for)X
554592953(the)X
554603083(Intel)X
554613267(8086)X
554623465(processor:)X
554630 f
554649 s
55465576 1128(1:)N
55466770(int)X
55467576 1216(2:)N
55468770(main\(\))X
55469770 1304(0x239:)N
554701630(push)X
554711845(pb)X
55472770 1392(0x23a:)N
554731630(mov)X
554741802(bp,sp)X
55475576 1480(3:)N
55476770({)X
55477576 1568(4:)N
55478770(printf\("Omit)X
554791329(needless)X
554801716(words\\n"\);)X
55481770 1656(0x23c:)N
554821630(mov)X
554831802(ax,0xaa)X
55484770 1744(0x23f:)N
554851630(push)X
554861845(ax)X
55487770 1832(0x240:)N
554881630(call)X
554891845(_printf)X
55490770 1920(0x243:)N
554911630(pop)X
554921802(cx)X
55493576 2008(5:)N
55494770(exit\(0\);)X
55495770 2096(0x244:)N
554961630(xor)X
554971802(ax,ax)X
55498770 2184(0x246:)N
554991630(push)X
555001845(ax)X
55501770 2272(0x247:)N
555021630(call)X
555031845(_exit)X
55504770 2360(0x24a:)N
555051630(pop)X
555061802(cx)X
55507576 2448(6:)N
55508770(})X
55509770 2536(0x24b:)N
555101630(pop)X
555111802(bp)X
55512770 2624(0x24c:)N
555131630(ret)X
55514576 2712(7:)N
55515770 2800(0x24d:)N
555161 f
5551711 s
55518576 2956(If)N
55519656(the)X
55520786(statement)X
555211147(program)X
555221467(prologue)X
555231802(speci\256es)X
555242127(the)X
555252257(following:)X
555260 f
555279 s
55528576 3096 -0.1950(minimum_instruction_length)AN
555291802(1)X
55530576 3184(opcode_base)N
555311802(10)X
55532576 3272(line_base)N
555331802(1)X
55534576 3360(line_range)N
555351802(15)X
555361 f
5553711 s
55538576 3516(Then)N
55539779(one)X
55540928(encoding)X
555411274(of)X
555421370(the)X
555431501(statement)X
555441863(program)X
555452184(would)X
555462427(occupy)X
555472704(12)X
555482815(bytes)X
555493024(\(the)X
555503184(opcode)X
555510 f
555523492(SPECIAL\()X
555532 f
555543916(m)X
555550 f
555563979(,)X
555572 f
55558576 3620(n)N
555590 f
55560(\))S
555611 f
55562701(indicates)X
555631043(the)X
555641178(special)X
555651450(opcode)X
555661731(generated)X
555672100(for)X
555682229(a)X
555692295(line)X
555702455(increment)X
555712835(of)X
555722 f
555732935(m)X
555741 f
555753025(and)X
555763179(an)X
555773289(address)X
555783579(increment)X
555793959(of)X
555802 f
55581576 3724(n)N
555821 f
55583(\):)S
555849 s
55585576 3864(Opcode)N
555861501(Operand)X
555872168(Byte)X
555882322(Stream)X
5558910 f
55590576 3880(i)N
55591581(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
555920 f
55593576 3968 -0.1992(DW_LNS_advance_pc)AN
555941501(LEB128\(0x239\))X
555952168(0x2,)X
555962383(0xb9,)X
555972641(0x04)X
55598576 4056(SPECIAL\(2,)N
555991049(0\))X
556002168(0xb)X
55601576 4144(SPECIAL\(2,)N
556021049(3\))X
556032168(0x38)X
55604576 4232(SPECIAL\(1,)N
556051049(8\))X
556062168(0x82)X
55607576 4320(SPECIAL\(1,)N
556081049(7\))X
556092168(0x73)X
55610576 4408 -0.1992(DW_LNS_advance_pc)AN
556111501(LEB128\(2\))X
556122168(0x2,)X
556132383(0x2)X
55614576 4496 -0.1979(DW_LNE_end_sequence)AN
556152168(0x0,)X
556162383(0x1,)X
556172598(0x1)X
556181 f
5561911 s
55620576 4652(An)N
55621723(alternate)X
556221067(encoding)X
556231430(of)X
556241543(the)X
556251691(same)X
556261912(program)X
556272250(using)X
556282481(standard)X
556292819(opcodes)X
556303147(to)X
556313256(advance)X
556323585(the)X
556333734(program)X
55634576 4756(counter)N
55635862(would)X
556361104(occupy)X
556371380(22)X
556381490(bytes:)X
5563910 s
55640576 5951(Revision:)N
55641902(2.0.0)X
556422176(Page)X
556432352(95)X
556443599(July)X
556453752(27,)X
556463872(1993)X
556471943 6055(Industry)N
556482230(Review)X
556492495(Draft)X
55650
5565196 p
55652%%Page: 96 98
556530(Courier)xf 0 f
5565410 s 0 xH 0 xS 0 f
5565511 s
556561 f
5565710 s
55658576 520(DWARF)N
55659885(Debugging)X
556601261(Information)X
556611664(Format)X
556629 s
55663576 816(Opcode)N
556641673(Operand)X
556652029(Byte)X
556662183(Stream)X
5566710 f
55668576 832(i)N
55669579(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
556700 f
55671576 920 -0.1960(DW_LNS_fixed_advance_pc)AN
556721673(0x239)X
556732029(0x9,)X
556742244(0x39,)X
556752502(0x2)X
55676576 1008(SPECIAL\(2,)N
556771049(0\))X
556782029(0xb)X
55679576 1096 -0.1960(DW_LNS_fixed_advance_pc)AN
556801673(0x3)X
556812029(0x9,)X
556822244(0x3,)X
556832459(0x0)X
55684576 1184(SPECIAL\(2,)N
556851049(0\))X
556862029(0xb)X
55687576 1272 -0.1960(DW_LNS_fixed_advance_pc)AN
556881673(0x8)X
556892029(0x9,)X
556902244(0x8,)X
556912459(0x0)X
55692576 1360(SPECIAL\(1,)N
556931049(0\))X
556942029(0xa)X
55695576 1448 -0.1960(DW_LNS_fixed_advance_pc)AN
556961673(0x7)X
556972029(0x9,)X
556982244(0x7,)X
556992459(0x0)X
55700576 1536(SPECIAL\(1,)N
557011049(0\))X
557022029(0xa)X
55703576 1624 -0.1960(DW_LNS_fixed_advance_pc)AN
557041673(0x2)X
557052029(0x9,)X
557062244(0x2,)X
557072459(0x0)X
55708576 1712 -0.1979(DW_LNE_end_sequence)AN
557092029(0x0,)X
557102244(0x1,)X
557112459(0x1)X
557121 f
5571310 s
55714576 5951(Revision:)N
55715902(2.0.0)X
557162176(Page)X
557172352(96)X
557183599(July)X
557193752(27,)X
557203872(1993)X
557211943 6055(Industry)N
557222230(Review)X
557232495(Draft)X
55724
5572597 p
55726%%Page: 97 99
557270(Courier)xf 0 f
5572810 s 0 xH 0 xS 0 f
5572911 s
557301 f
5573110 s
557323075 520(Programming)N
557333535(Languages)X
557343903(SIG)X
557353 f
5573612 s
55737576 832(Appendix)N
55738999(4)X
557391071(--)X
557401159(Encoding)X
557411572(and)X
557421750(decoding)X
557432142(variable)X
557442503(length)X
557452783(data)X
557461 f
5574711 s
55748576 988(Here)N
55749768(are)X
55750897(algorithms)X
557511297(expressed)X
557521665(in)X
557531756(a)X
557541817(C-like)X
557552060(pseudo-code)X
557562526(to)X
557572617(encode)X
557582889(and)X
557593039(decode)X
557603311(signed)X
557613564(and)X
557623714(unsigned)X
55763576 1092(numbers)N
55764901(in)X
55765992(LEB128:)X
557663 f
55767576 1248(Encode)N
55768877(an)X
55769992(unsigned)X
557701352(integer:)X
557710 f
557729 s
55773576 1388(do)N
55774576 1476({)N
557751565 1564(byte)N
557761780(=)X
557771866(low)X
557782038(order)X
557792296(7)X
557802382(bits)X
557812597(of)X
557822726(value;)X
557831565 1652(value)N
557841823(>>=)X
557851995(7;)X
557861565 1740(if)N
557871694(\(value)X
557881995(!=)X
557892124(0\))X
557902631(/*)X
557912760(more)X
557922975(bytes)X
557933233(to)X
557943362(come)X
557953577(*/)X
557961921 1828(set)N
557972093(high)X
557982308(order)X
557992566(bit)X
558002738(of)X
558012867(byte;)X
558021565 1916(emit)N
558031780(byte;)X
55804576 2004(})N
55805662(while)X
55806920(\(value)X
558071221(!=)X
558081350(0\);)X
558093 f
5581011 s
55811576 2160(Encode)N
55812877(a)X
55813943(signed)X
558141205(integer:)X
558150 f
558169 s
55817576 2300(more)N
55818791(=)X
55819877(1;)X
55820576 2388(negative)N
55821963(=)X
558221049(\(value)X
558231350(<)X
558241436(0\);)X
55825576 2476(size)N
55826791(=)X
55827877(no.)X
558281049(of)X
558291178(bits)X
558301393(in)X
558311522(signed)X
558321823(integer;)X
55833576 2564(while\(more\))N
55834576 2652({)N
558351565 2740(byte)N
558361780(=)X
558371866(low)X
558382038(order)X
558392296(7)X
558402382(bits)X
558412597(of)X
558422726(value;)X
558431565 2828(value)N
558441823(>>=)X
558451995(7;)X
558461565 2916(/*)N
558471694(the)X
558481866(following)X
558492296(is)X
558502425(unnecessary)X
558512941(if)X
558523070(the)X
558533242(implementation)X
558543887(of)X
558554016(>>=)X
558561608 3004(*)N
558571694(uses)X
558581909(an)X
558592038(arithmetic)X
558602511(rather)X
558612812(than)X
558623027(logical)X
558633371(shift)X
558643629(for)X
558653801(a)X
558663887(signed)X
558671608 3092(*)N
558681694(left)X
558691909(operand)X
558701608 3180(*/)N
558711565 3268(if)N
558721694(\(negative\))X
558731921 3356(/*)N
558742050(sign)X
558752265(extend)X
558762566(*/)X
558771921 3444(value)N
558789 f
558792179(|)X
558800 f
558812193(=)X
558822279(-)X
558832365(\(1)X
558842494(<<)X
558852623(\(size)X
558862881(-)X
558872967(7\)\);)X
558881565 3532(/*)N
558891694(sign)X
558901909(bit)X
558912081(of)X
558922210(byte)X
558932425(is)X
558942554(2nd)X
558952726(high)X
558962941(order)X
558973199(bit)X
558983371(\(0x40\))X
558993672(*/)X
559001565 3620(if)N
559011694(\(\(value)X
559022038(==)X
559032167(0)X
559042253(&&)X
559052382(sign)X
559062597(bit)X
559072769(of)X
559082898(byte)X
559093113(is)X
559103242(clear\))X
559119 f
559123543(||)X
559130 f
559141921 3708(\(value)N
559152222(==)X
559162351(-1)X
559172480(&&)X
559182609(sign)X
559192824(bit)X
559202996(of)X
559213125(byte)X
559223340(is)X
559233469(set\)\))X
559241921 3796(more)N
559252136(=)X
559262222(0;)X
559271565 3884(else)N
559281921 3972(set)N
559292093(high)X
559302308(order)X
559312566(bit)X
559322738(of)X
559332867(byte;)X
559341565 4060(emit)N
559351780(byte;)X
55936576 4148(})N
559371 f
5593810 s
55939576 5951(Revision:)N
55940902(2.0.0)X
559412176(Page)X
559422352(97)X
559433599(July)X
559443752(27,)X
559453872(1993)X
559461943 6055(Industry)N
559472230(Review)X
559482495(Draft)X
55949
5595098 p
55951%%Page: 98 100
559520(Courier)xf 0 f
5595310 s 0 xH 0 xS 0 f
5595411 s
559551 f
5595610 s
55957576 520(DWARF)N
55958885(Debugging)X
559591261(Information)X
559601664(Format)X
559613 f
5596211 s
55963576 832(Decode)N
55964871(unsigned)X
559651231(LEB128)X
559661562(number:)X
559670 f
559689 s
55969576 972(result)N
55970877(=)X
55971963(0;)X
55972576 1060(shift)N
55973834(=)X
55974920(0;)X
55975576 1148(while\(true\))N
55976576 1236({)N
559771565 1324(byte)N
559781780(=)X
559791866(next)X
559802081(byte)X
559812296(in)X
559822425(input;)X
559831565 1412(result)N
559849 f
559851866(|)X
559860 f
559871880(=)X
559881966(\(low)X
559892181(order)X
559902439(7)X
559912525(bits)X
559922740(of)X
559932869(byte)X
559943084(<<)X
559953213(shift\);)X
559961565 1500(if)N
559971694(\(high)X
559981952(order)X
559992210(bit)X
560002382(of)X
560012511(byte)X
560022726(==)X
560032855(0\))X
560041921 1588(break;)N
560051565 1676(shift)N
560061823(+=)X
560071952(7;)X
56008576 1764(})N
560093 f
5601011 s
56011576 1920(Decode)N
56012871(signed)X
560131133(LEB128)X
560141464(number:)X
560150 f
560169 s
56017576 2060(result)N
56018877(=)X
56019963(0;)X
56020576 2148(shift)N
56021834(=)X
56022920(0;)X
56023576 2236(size)N
56024791(=)X
56025877(no.)X
560261049(of)X
560271178(bits)X
560281393(in)X
560291522(signed)X
560301823(integer;)X
56031576 2324(while\(true\))N
56032576 2412({)N
560331565 2500(byte)N
560341780(=)X
560351866(next)X
560362081(byte)X
560372296(in)X
560382425(input;)X
560391565 2588(result)N
560409 f
560411866(|)X
560420 f
560431880(=)X
560441966(\(low)X
560452181(order)X
560462439(7)X
560472525(bits)X
560482740(of)X
560492869(byte)X
560503084(<<)X
560513213(shift\);)X
560521565 2676(shift)N
560531823(+=)X
560541952(7;)X
560551565 2764(/*)N
560561694(sign)X
560571909(bit)X
560582081(of)X
560592210(byte)X
560602425(is)X
560612554(2nd)X
560622726(high)X
560632941(order)X
560643199(bit)X
560653371(\(0x40\))X
560663672(*/)X
560671565 2852(if)N
560681694(\(high)X
560691952(order)X
560702210(bit)X
560712382(of)X
560722511(byte)X
560732726(==)X
560742855(0\))X
560751921 2940(break;)N
56076576 3028(})N
56077576 3116(if)N
56078705(\(\(shift)X
560791049(<)X
560801135(size\))X
560811393(&&)X
560821522(\(sign)X
560831780(bit)X
560841952(of)X
560852081(byte)X
560862296(is)X
560872425(set\)\))X
560881565 3204(/*)N
560891694(sign)X
560901909(extend)X
560912210(*/)X
560921565 3292(result)N
560939 f
560941866(|)X
560950 f
560961880(=)X
560971966(-)X
560982052(\(1)X
560992181(<<)X
561002310(shift\);)X
561011 f
5610210 s
56103576 5951(Revision:)N
56104902(2.0.0)X
561052176(Page)X
561062352(98)X
561073599(July)X
561083752(27,)X
561093872(1993)X
561101943 6055(Industry)N
561112230(Review)X
561122495(Draft)X
56113
5611499 p
56115%%Page: 99 101
561160(Courier)xf 0 f
5611710 s 0 xH 0 xS 0 f
5611811 s
561191 f
5612010 s
561213075 520(Programming)N
561223535(Languages)X
561233903(SIG)X
561243 f
5612512 s
56126576 832(Appendix)N
56127999(5)X
561281071(--)X
561291159(Call)X
561301354(Frame)X
561311651(Information)X
561322176(Examples)X
561331 f
5613411 s
56135576 988(The)N
56136735(following)X
561371100(example)X
561381421(uses)X
561391594(a)X
561401655(hypothetical)X
561412114(RISC)X
561422332(machine)X
561432653(in)X
561442744(the)X
561452874(style)X
561463063(of)X
561473158(the)X
561483288(Motorola)X
561493638(88000.)X
561509 s
5615110 f
56152639 1144(g)N
5615311 s
561541 f
56155708(Memory)X
561561033(is)X
561571114(byte)X
561581288(addressed.)X
561599 s
5616010 f
56161639 1300(g)N
5616211 s
561631 f
56164708(Instructions)X
561651146(are)X
561661275(all)X
561671386(4-bytes)X
561681667(each)X
561691850(and)X
561701999(word)X
561712201(aligned.)X
561729 s
5617310 f
56174639 1456(g)N
5617511 s
561761 f
56177708(Instruction)X
561781112(operands)X
561791451(are)X
561801580(typically)X
561811912(of)X
561822007(the)X
561832137(form:)X
561841697 1612(<destination)N
561852157(reg>)X
561862341(<source)X
561872642(reg>)X
561882826(<constant>)X
561899 s
5619010 f
56191639 1768(g)N
5619211 s
561931 f
56194708(The)X
56195880(address)X
561961178(for)X
561971315(the)X
561981458(load)X
561991645(and)X
562001807(store)X
562012014(instructions)X
562022462(is)X
562032557(computed)X
562042941(by)X
562053065(adding)X
562063341(the)X
562073485(contents)X
562083815(of)X
562093924(the)X
56210708 1872(source)N
56211959(register)X
562121245(with)X
562131424(the)X
562141554(constant.)X
562159 s
5621610 f
56217639 2028(g)N
5621811 s
562191 f
56220708(There)X
56221935(are)X
562221064(8)X
562231130(4-byte)X
562241377(registers:)X
562251697 2184(R0)N
562261822(always)X
562272088(0)X
562281697 2288(R1)N
562291822(holds)X
562302035(return)X
562312267(address)X
562322552(on)X
562332662(call)X
562341697 2392(R2-R3)N
562351954(temp)X
562362153(registers)X
562372473(\(not)X
562382637(preserved)X
562393000(on)X
562403110(call\))X
562411697 2496(R4-R6)N
562421954(preserved)X
562432317(on)X
562442427(call)X
562451697 2600(R7)N
562461822(stack)X
562472025(pointer.)X
562489 s
5624910 f
56250639 2756(g)N
5625111 s
562521 f
56253708(The)X
56254867(stack)X
562551070(grows)X
562561306(in)X
562571397(the)X
562581527(negative)X
562591848(direction.)X
56260576 2912(The)N
56261735(following)X
562621100(are)X
562631229(two)X
562641383(code)X
562651571(fragments)X
562661945(from)X
562672138(a)X
562682199(subroutine)X
562692594(called)X
562700 f
562712859(foo)X
562721 f
562733041(that)X
562743197(uses)X
562753371(a)X
562763433(frame)X
562773661(pointer)X
562783934(\(in)X
56279576 3016(addition)N
56280888(to)X
56281979(the)X
562821109(stack)X
562831312(pointer.\))X
562841657(The)X
562851816(\256rst)X
562861975(column)X
562872262(values)X
562882509(are)X
562892638(byte)X
562902812(addresses.)X
562910 f
562929 s
56293942 3156(;;)N
562941071(start)X
562951329(prologue)X
56296576 3244(foo)N
56297942(sub)X
562981265(R7,)X
562991437(R7,)X
563001609(<fsize>)X
563012297(;)X
563022383(Allocate)X
563032770(frame)X
56304576 3332(foo+4)N
56305942(store)X
563061265(R1,)X
563071437(R7,)X
563081609(\(<fsize>-4\))X
563092297(;)X
563102383(Save)X
563112598(the)X
563122770(return)X
563133071(address)X
56314576 3420(foo+8)N
56315942(store)X
563161265(R6,)X
563171437(R7,)X
563181609(\(<fsize>-8\))X
563192297(;)X
563202383(Save)X
563212598(R6)X
56322576 3508(foo+12)N
56323942(add)X
563241265(R6,)X
563251437(R7,)X
563261609(0)X
563272297(;)X
563282383(R6)X
563292512(is)X
563302641(now)X
563312813(the)X
563322985(Frame)X
563333243(ptr)X
56334576 3596(foo+16)N
56335942(store)X
563361265(R4,)X
563371437(R6,)X
563381609(\(<fsize>-12\))X
563392297(;)X
563402383(Save)X
563412598(a)X
563422684(preserve)X
563433071(reg.)X
56344942 3684(;;)N
563451071(This)X
563461286(subroutine)X
563471759(does)X
563481974(not)X
563492146(change)X
563502447(R5)X
56351942 3772(...)N
56352942 3860(;;)N
563531071(Start)X
563541329(epilogue)X
563551716(\(R7)X
563561888(has)X
563572060(been)X
563582275(returned)X
563592662(to)X
563602791(entry)X
563613049(value\))X
56362576 3948(foo+64)N
56363942(load)X
563641265(R4,)X
563651437(R6,)X
563661609(\(<fsize>-12\))X
563672297(;)X
563682383(Restore)X
563692727(R4)X
56370576 4036(foo+68)N
56371942(load)X
563721265(R6,)X
563731437(R7,)X
563741609(\(<fsize>-8\))X
563752297(;)X
563762383(Restore)X
563772727(R6)X
56378576 4124(foo+72)N
56379942(load)X
563801265(R1,)X
563811437(R7,)X
563821609(\(<fsize>-4\))X
563832297(;)X
563842383(Restore)X
563852727(return)X
563863028(address)X
56387576 4212(foo+76)N
56388942(add)X
563891265(R7,)X
563901437(R7,)X
563911609(<fsize>)X
563922297(;)X
563932383(Deallocate)X
563942856(frame)X
56395576 4300(foo+80)N
56396942(jump)X
563971265(R)X
563983480(;)X
563993566(Return)X
56400576 4388(foo+84)N
564011 f
5640210 s
56403576 5951(Revision:)N
56404902(2.0.0)X
564052176(Page)X
564062352(99)X
564073599(July)X
564083752(27,)X
564093872(1993)X
564101943 6055(Industry)N
564112230(Review)X
564122495(Draft)X
56413
56414100 p
56415%%Page: 100 102
564160(Courier)xf 0 f
5641710 s 0 xH 0 xS 0 f
5641811 s
564191 f
5642010 s
56421576 520(DWARF)N
56422885(Debugging)X
564231261(Information)X
564241664(Format)X
5642511 s
56426576 832(The)N
56427745(table)X
56428949(for)X
564291083(the)X
564300 f
564311254(foo)X
564321 f
564331445(subroutine)X
564341849(is)X
564351940(as)X
564362045(follows.)X
564372363(It)X
564382449(is)X
564392540(followed)X
564402885(by)X
564413005(the)X
564423145(corresponding)X
564433680(fragments)X
56444576 936(from)N
56445769(the)X
564460 f
56447899(.debug_frame)X
564481 f
564491557(section.)X
564500 f
564519 s
56452576 1076(Loc)N
56453942(CFA)X
564541480(R0)X
564551674(R1)X
564561868(R2)X
564572062(R3)X
564582256(R4)X
564592493(R5)X
564602687(R6)X
564612881(R7)X
564623075(R8)X
56463576 1164(foo)N
56464942([R7]+0)X
564651480(s)X
564661674(u)X
564671868(u)X
564682062(u)X
564692256(s)X
564702493(s)X
564712687(s)X
564722881(s)X
564733075(r1)X
56474576 1252(foo+4)N
56475942([R7]+fsize)X
564761480(s)X
564771674(u)X
564781868(u)X
564792062(u)X
564802256(s)X
564812493(s)X
564822687(s)X
564832881(s)X
564843075(r1)X
56485576 1340(foo+8)N
56486942([R7]+fsize)X
564871480(s)X
564881674(u)X
564891868(u)X
564902062(u)X
564912256(s)X
564922493(s)X
564932687(s)X
564942881(s)X
564953075(c4)X
56496576 1428(foo+12)N
56497942([R7]+fsize)X
564981480(s)X
564991674(u)X
565001868(u)X
565012062(u)X
565022256(s)X
565032493(s)X
565042687(c8)X
565052881(s)X
565063075(c4)X
56507576 1516(foo+16)N
56508942([R6]+fsize)X
565091480(s)X
565101674(u)X
565111868(u)X
565122062(u)X
565132256(s)X
565142493(s)X
565152687(c8)X
565162881(s)X
565173075(c4)X
56518576 1604(foo+20)N
56519942([R6]+fsize)X
565201480(s)X
565211674(u)X
565221868(u)X
565232062(u)X
565242256(c12)X
565252493(s)X
565262687(c8)X
565272881(s)X
565283075(c4)X
56529576 1692(foo+64)N
56530942([R6]+fsize)X
565311480(s)X
565321674(u)X
565331868(u)X
565342062(u)X
565352256(c12)X
565362493(s)X
565372687(c8)X
565382881(s)X
565393075(c4)X
56540576 1780(foo+68)N
56541942([R6]+fsize)X
565421480(s)X
565431674(u)X
565441868(u)X
565452062(u)X
565462256(s)X
565472493(s)X
565482687(c8)X
565492881(s)X
565503075(c4)X
56551576 1868(foo+72)N
56552942([R7]+fsize)X
565531480(s)X
565541674(u)X
565551868(u)X
565562062(u)X
565572256(s)X
565582493(s)X
565592687(s)X
565602881(s)X
565613075(c4)X
56562576 1956(foo+76)N
56563942([R7]+fsize)X
565641480(s)X
565651674(u)X
565661868(u)X
565672062(u)X
565682256(s)X
565692493(s)X
565702687(s)X
565712881(s)X
565723075(r1)X
56573576 2044(foo+80)N
56574942([R7]+0)X
565751480(s)X
565761674(u)X
565771868(u)X
565782062(u)X
565792256(s)X
565802493(s)X
565812687(s)X
565822881(s)X
565833075(r1)X
565841 f
56585576 2132(notes:)N
56586576 2220(1.)N
56587738(R8)X
56588840(is)X
56589906(the)X
565901012(return)X
565911202(address)X
56592576 2308(2.)N
56593738(s)X
56594784(=)X
56595843(same_value)X
565961201(rule)X
56597576 2396(3.)N
56598738(u)X
56599792(=)X
56600851(unde\256ned)X
566011153(rule)X
56602576 2484(4.)N
56603738(rN)X
56604832(=)X
56605891(register\(N\))X
566061225(rule)X
56607576 2572(5.)N
56608738(cN)X
56609840(=)X
56610899(offset\(N\))X
566111181(rule)X
5661211 s
56613576 2904(Common)N
56614927(Information)X
566151370(Entry)X
566161588(\(CIE\):)X
566170 f
566189 s
56619576 3044(cie)N
56620942(32)X
566211996(;)X
566222082(length)X
56623576 3132(cie+4)N
56624942(0xffffffff)X
566251996(;)X
566262082(CIE_id)X
56627576 3220(cie+8)N
56628942(1)X
566291996(;)X
566302082(version)X
56631576 3308(cie+9)N
56632942(0)X
566331996(;)X
566342082(augmentation)X
56635576 3396(cie+10)N
56636942(4)X
566371996(;)X
566382082 -0.1969(code_alignment_factor)AX
56639576 3484(cie+11)N
56640942(4)X
566411996(;)X
566422082 -0.1969(data_alignment_factor)AX
56643576 3572(cie+12)N
56644942(8)X
566451996(;)X
566462082(R8)X
566472211(is)X
566482340(the)X
566492512(return)X
566502813(addr.)X
56651576 3660(cie+13)N
56652942(DW_CFA_def_cfa)X
566531587(\(7,)X
566541759(0\))X
566551996(;)X
566562082(CFA)X
566572254(=)X
566582340([R7]+0)X
56659576 3748(cie+16)N
56660942 -0.1992(DW_CFA_same_value)AX
566611716(\(0\))X
566621996(;)X
566632082(R0)X
566642211(not)X
566652383(modified)X
566662770(\(=0\))X
56667576 3836(cie+18)N
56668942(DW_CFA_undefined)X
566691673(\(1\))X
566701996(;)X
566712082(R1)X
566722211(scratch)X
56673576 3924(cie+20)N
56674942(DW_CFA_undefined)X
566751673(\(2\))X
566761996(;)X
566772082(R2)X
566782211(scratch)X
56679576 4012(cie+22)N
56680942(DW_CFA_undefined)X
566811673(\(3\))X
566821996(;)X
566832082(R3)X
566842211(scratch)X
56685576 4100(cie+24)N
56686942 -0.1992(DW_CFA_same_value)AX
566871716(\(4\))X
566881996(;)X
566892082(R4)X
566902211(preserve)X
56691576 4188(cie+26)N
56692942 -0.1992(DW_CFA_same_value)AX
566931716(\(5\))X
566941996(;)X
566952082(R5)X
566962211(preserve)X
56697576 4276(cie+28)N
56698942 -0.1992(DW_CFA_same_value)AX
566991716(\(6\))X
567001996(;)X
567012082(R6)X
567022211(preserve)X
56703576 4364(cie+30)N
56704942 -0.1992(DW_CFA_same_value)AX
567051716(\(7\))X
567061996(;)X
567072082(R7)X
567082211(preserve)X
56709576 4452(cie+32)N
56710942(DW_CFA_register)X
567111630(\(8,)X
567121802(1\))X
567131996(;)X
567142082(R8)X
567152211(is)X
567162340(in)X
567172469(R1)X
56718576 4540(cie+35)N
56719942(DW_CFA_nop)X
567201996(;)X
567212082(padding)X
56722576 4628(cie+36)N
567231 f
5672410 s
56725576 5951(Revision:)N
56726902(2.0.0)X
567272156(Page)X
567282332(100)X
567293599(July)X
567303752(27,)X
567313872(1993)X
567321943 6055(Industry)N
567332230(Review)X
567342495(Draft)X
56735
56736101 p
56737%%Page: 101 103
567380(Courier)xf 0 f
5673910 s 0 xH 0 xS 0 f
5674011 s
567411 f
5674210 s
567433075 520(Programming)N
567443535(Languages)X
567453903(SIG)X
5674611 s
56747576 832(Frame)N
56748823(Description)X
567491256(Entry)X
567501474(\(FDE\):)X
567510 f
567529 s
56753576 972(fde)N
56754942(40)X
567552426(;)X
567562512(length)X
56757576 1060(fde+4)N
56758942(cie)X
567592426(;)X
567602512(CIE_ptr)X
56761576 1148(fde+8)N
56762942(foo)X
567632426(;)X
567642512(initial_location)X
56765576 1236(fde+12)N
56766942(84)X
567672426(;)X
567682512(address_range)X
56769576 1324(fde+16)N
56770942 -0.1969(DW_CFA_advance_loc\(1\))AX
567712426(;)X
567722512(instructions)X
56773576 1412(fde+17)N
56774942 -0.1935(DW_CFA_def_cfa_offset\(<fsize>/4\))AX
567752426(;)X
567762512(assuming)X
567772899(<fsize>)X
567783243(<)X
567793329(512)X
56780576 1500(fde+19)N
56781942 -0.1969(DW_CFA_advance_loc\(1\))AX
56782576 1588(fde+20)N
56783942 -0.1985(DW_CFA_offset\(8,1\))AX
56784576 1676(fde+22)N
56785942 -0.1969(DW_CFA_advance_loc\(1\))AX
56786576 1764(fde+23)N
56787942 -0.1985(DW_CFA_offset\(6,2\))AX
56788576 1852(fde+25)N
56789942 -0.1969(DW_CFA_advance_loc\(1\))AX
56790576 1940(fde+26)N
56791942 -0.1950(DW_CFA_def_cfa_register\(6\))AX
56792576 2028(fde+28)N
56793942 -0.1969(DW_CFA_advance_loc\(1\))AX
56794576 2116(fde+29)N
56795942 -0.1985(DW_CFA_offset\(4,3\))AX
56796576 2204(fde+31)N
56797942 -0.1964(DW_CFA_advance_loc\(11\))AX
56798576 2292(fde+32)N
56799942 -0.1992(DW_CFA_restore\(4\))AX
56800576 2380(fde+33)N
56801942 -0.1969(DW_CFA_advance_loc\(1\))AX
56802576 2468(fde+34)N
56803942 -0.1992(DW_CFA_restore\(6\))AX
56804576 2556(fde+35)N
56805942 -0.1950(DW_CFA_def_cfa_register\(7\))AX
56806576 2644(fde+37)N
56807942 -0.1969(DW_CFA_advance_loc\(1\))AX
56808576 2732(fde+38)N
56809942 -0.1992(DW_CFA_restore\(8\))AX
56810576 2820(fde+39)N
56811942 -0.1969(DW_CFA_advance_loc\(1\))AX
56812576 2908(fde+40)N
56813942 -0.1957(DW_CFA_def_cfa_offset\(0\))AX
56814576 2996(fde+42)N
56815942(DW_CFA_nop)X
568162426(;)X
568172512(padding)X
56818576 3084(fde+43)N
56819942(DW_CFA_nop)X
568202426(;)X
568212512(padding)X
56822576 3172(fde+44)N
568231 f
5682410 s
56825576 5956(Revision:)N
56826902(2.0.0)X
568272156(Page)X
568282332(101)X
568293599(July)X
568303752(27,)X
568313872(1993)X
568321943 6068(Industry)N
568332230(Review)X
568342495(Draft)X
56835
56836102 p
56837%%Page: 102 104
568380(Courier)xf 0 f
5683910 s 0 xH 0 xS 0 f
5684012 s
568411 f
5684210 s
56843576 5956(Revision:)N
56844902(2.0.0)X
568452156(Page)X
568462332(102)X
568473599(July)X
568483752(27,)X
568493872(1993)X
568501943 6068(Industry)N
568512230(Review)X
568522495(Draft)X
56853
56854103 p
56855%%Page: 103 105
568560(Courier)xf 0 f
5685710 s 0 xH 0 xS 0 f
5685812 s
568591 f
568601959 560(Table)N
568612203(of)X
568622307(Contents)X
56863576 952(FOREWORD)N
568643 f
568651204(.)X
568661332(.)X
568671460(.)X
568681588(.)X
568691716(.)X
568701844(.)X
568711972(.)X
568722100(.)X
568732228(.)X
568742356(.)X
568752484(.)X
568762612(.)X
568772740(.)X
568782868(.)X
568792996(.)X
568803124(.)X
568813252(.)X
568823380(.)X
568833508(.)X
568843636(.)X
568853764(.)X
568861 f
568873984(1)X
56888576 1120(1.)N
56889696(INTRODUCTION)X
568903 f
568911588(.)X
568921716(.)X
568931844(.)X
568941972(.)X
568952100(.)X
568962228(.)X
568972356(.)X
568982484(.)X
568992612(.)X
569002740(.)X
569012868(.)X
569022996(.)X
569033124(.)X
569043252(.)X
569053380(.)X
569063508(.)X
569073636(.)X
569083764(.)X
569091 f
569103984(3)X
56911696 1232(1.1)N
56912912(Purpose)X
569131245(and)X
569141408(Scope)X
569153 f
569161716(.)X
569171844(.)X
569181972(.)X
569192100(.)X
569202228(.)X
569212356(.)X
569222484(.)X
569232612(.)X
569242740(.)X
569252868(.)X
569262996(.)X
569273124(.)X
569283252(.)X
569293380(.)X
569303508(.)X
569313636(.)X
569323764(.)X
569331 f
569343984(3)X
56935696 1344(1.2)N
56936912(Overview)X
569373 f
569381460(.)X
569391588(.)X
569401716(.)X
569411844(.)X
569421972(.)X
569432100(.)X
569442228(.)X
569452356(.)X
569462484(.)X
569472612(.)X
569482740(.)X
569492868(.)X
569502996(.)X
569513124(.)X
569523252(.)X
569533380(.)X
569543508(.)X
569553636(.)X
569563764(.)X
569571 f
569583984(3)X
56959696 1456(1.3)N
56960912(Vendor)X
569611224(Extensibility)X
569623 f
569631844(.)X
569641972(.)X
569652100(.)X
569662228(.)X
569672356(.)X
569682484(.)X
569692612(.)X
569702740(.)X
569712868(.)X
569722996(.)X
569733124(.)X
569743252(.)X
569753380(.)X
569763508(.)X
569773636(.)X
569783764(.)X
569791 f
569803984(4)X
56981696 1568(1.4)N
56982912(Changes)X
569831267(from)X
569841478(Version)X
569851806(1)X
569863 f
569871972(.)X
569882100(.)X
569892228(.)X
569902356(.)X
569912484(.)X
569922612(.)X
569932740(.)X
569942868(.)X
569952996(.)X
569963124(.)X
569973252(.)X
569983380(.)X
569993508(.)X
570003636(.)X
570013764(.)X
570021 f
570033984(4)X
57004576 1736(2.)N
57005696(GENERAL)X
570061168(DESCRIPTION)X
570073 f
570081844(.)X
570091972(.)X
570102100(.)X
570112228(.)X
570122356(.)X
570132484(.)X
570142612(.)X
570152740(.)X
570162868(.)X
570172996(.)X
570183124(.)X
570193252(.)X
570203380(.)X
570213508(.)X
570223636(.)X
570233764(.)X
570241 f
570253984(7)X
57026696 1848(2.1)N
57027912(The)X
570281086(Debugging)X
570291537(Information)X
570302021(Entry)X
570313 f
570322356(.)X
570332484(.)X
570342612(.)X
570352740(.)X
570362868(.)X
570372996(.)X
570383124(.)X
570393252(.)X
570403380(.)X
570413508(.)X
570423636(.)X
570433764(.)X
570441 f
570453984(7)X
57046696 1960(2.2)N
57047912(Attribute)X
570481284(Types)X
570493 f
570501588(.)X
570511716(.)X
570521844(.)X
570531972(.)X
570542100(.)X
570552228(.)X
570562356(.)X
570572484(.)X
570582612(.)X
570592740(.)X
570602868(.)X
570612996(.)X
570623124(.)X
570633252(.)X
570643380(.)X
570653508(.)X
570663636(.)X
570673764(.)X
570681 f
570693984(7)X
57070696 2072(2.3)N
57071912(Relationship)X
570721423(of)X
570731527(Debugging)X
570741978(Information)X
570752462(Entries)X
570763 f
570772868(.)X
570782996(.)X
570793124(.)X
570803252(.)X
570813380(.)X
570823508(.)X
570833636(.)X
570843764(.)X
570851 f
570863984(9)X
57087696 2184(2.4)N
57088912(Location)X
570891279(Descriptions)X
570903 f
570911844(.)X
570921972(.)X
570932100(.)X
570942228(.)X
570952356(.)X
570962484(.)X
570972612(.)X
570982740(.)X
570992868(.)X
571002996(.)X
571013124(.)X
571023252(.)X
571033380(.)X
571043508(.)X
571053636(.)X
571063764(.)X
571071 f
571083984(9)X
57109696 2296(2.5)N
57110912(Types)X
571111171(of)X
571121275(Declarations)X
571133 f
571141844(.)X
571151972(.)X
571162100(.)X
571172228(.)X
571182356(.)X
571192484(.)X
571202612(.)X
571212740(.)X
571222868(.)X
571232996(.)X
571243124(.)X
571253252(.)X
571263380(.)X
571273508(.)X
571283636(.)X
571293764(.)X
571301 f
571313936(18)X
57132696 2408(2.6)N
57133912(Accessibility)X
571341439(of)X
571351543(Declarations)X
571363 f
571372100(.)X
571382228(.)X
571392356(.)X
571402484(.)X
571412612(.)X
571422740(.)X
571432868(.)X
571442996(.)X
571453124(.)X
571463252(.)X
571473380(.)X
571483508(.)X
571493636(.)X
571503764(.)X
571511 f
571523936(18)X
57153696 2520(2.7)N
57154912(Visibility)X
571551300(of)X
571561404(Declarations)X
571573 f
571581972(.)X
571592100(.)X
571602228(.)X
571612356(.)X
571622484(.)X
571632612(.)X
571642740(.)X
571652868(.)X
571662996(.)X
571673124(.)X
571683252(.)X
571693380(.)X
571703508(.)X
571713636(.)X
571723764(.)X
571731 f
571743936(18)X
57175696 2632(2.8)N
57176912(Virtuality)X
571771311(of)X
571781415(Declarations)X
571793 f
571801972(.)X
571812100(.)X
571822228(.)X
571832356(.)X
571842484(.)X
571852612(.)X
571862740(.)X
571872868(.)X
571882996(.)X
571893124(.)X
571903252(.)X
571913380(.)X
571923508(.)X
571933636(.)X
571943764(.)X
571951 f
571963936(19)X
57197696 2744(2.9)N
57198912(Arti\256cial)X
571991284(Entries)X
572003 f
572011716(.)X
572021844(.)X
572031972(.)X
572042100(.)X
572052228(.)X
572062356(.)X
572072484(.)X
572082612(.)X
572092740(.)X
572102868(.)X
572112996(.)X
572123124(.)X
572133252(.)X
572143380(.)X
572153508(.)X
572163636(.)X
572173764(.)X
572181 f
572193936(19)X
57220696 2856(2.10)N
57221912(Target-Speci\256c)X
572221530(Addressing)X
572231991(Information)X
572243 f
572252612(.)X
572262740(.)X
572272868(.)X
572282996(.)X
572293124(.)X
572303252(.)X
572313380(.)X
572323508(.)X
572333636(.)X
572343764(.)X
572351 f
572363936(19)X
57237696 2968(2.11)N
57238912(Non-De\256ning)X
572391469(Declarations)X
572403 f
572412100(.)X
572422228(.)X
572432356(.)X
572442484(.)X
572452612(.)X
572462740(.)X
572472868(.)X
572482996(.)X
572493124(.)X
572503252(.)X
572513380(.)X
572523508(.)X
572533636(.)X
572543764(.)X
572551 f
572563936(20)X
57257696 3080(2.12)N
57258912(Declaration)X
572591386(Coordinates)X
572603 f
572611972(.)X
572622100(.)X
572632228(.)X
572642356(.)X
572652484(.)X
572662612(.)X
572672740(.)X
572682868(.)X
572692996(.)X
572703124(.)X
572713252(.)X
572723380(.)X
572733508(.)X
572743636(.)X
572753764(.)X
572761 f
572773936(20)X
57278696 3192(2.13)N
57279912(Identi\256er)X
572801289(Names)X
572813 f
572821716(.)X
572831844(.)X
572841972(.)X
572852100(.)X
572862228(.)X
572872356(.)X
572882484(.)X
572892612(.)X
572902740(.)X
572912868(.)X
572922996(.)X
572933124(.)X
572943252(.)X
572953380(.)X
572963508(.)X
572973636(.)X
572983764(.)X
572991 f
573003936(21)X
57301576 3360(3.)N
57302696(PROGRAM)X
573031193(SCOPE)X
573041515(ENTRIES)X
573053 f
573061972(.)X
573072100(.)X
573082228(.)X
573092356(.)X
573102484(.)X
573112612(.)X
573122740(.)X
573132868(.)X
573142996(.)X
573153124(.)X
573163252(.)X
573173380(.)X
573183508(.)X
573193636(.)X
573203764(.)X
573211 f
573223936(23)X
57323696 3472(3.1)N
57324912(Compilation)X
573251418(Unit)X
573261613(Entries)X
573273 f
573281972(.)X
573292100(.)X
573302228(.)X
573312356(.)X
573322484(.)X
573332612(.)X
573342740(.)X
573352868(.)X
573362996(.)X
573373124(.)X
573383252(.)X
573393380(.)X
573403508(.)X
573413636(.)X
573423764(.)X
573431 f
573443936(23)X
57345696 3584(3.2)N
57346912(Module)X
573471235(Entries)X
573483 f
573491588(.)X
573501716(.)X
573511844(.)X
573521972(.)X
573532100(.)X
573542228(.)X
573552356(.)X
573562484(.)X
573572612(.)X
573582740(.)X
573592868(.)X
573602996(.)X
573613124(.)X
573623252(.)X
573633380(.)X
573643508(.)X
573653636(.)X
573663764(.)X
573671 f
573683936(25)X
57369696 3696(3.3)N
57370912(Subroutine)X
573711358(and)X
573721521(Entry)X
573731759(Point)X
573741986(Entries)X
573753 f
573762356(.)X
573772484(.)X
573782612(.)X
573792740(.)X
573802868(.)X
573812996(.)X
573823124(.)X
573833252(.)X
573843380(.)X
573853508(.)X
573863636(.)X
573873764(.)X
573881 f
573893936(25)X
57390696 3808(3.4)N
57391912(Lexical)X
573921226(Block)X
573931480(Entries)X
573943 f
573951844(.)X
573961972(.)X
573972100(.)X
573982228(.)X
573992356(.)X
574002484(.)X
574012612(.)X
574022740(.)X
574032868(.)X
574042996(.)X
574053124(.)X
574063252(.)X
574073380(.)X
574083508(.)X
574093636(.)X
574103764(.)X
574111 f
574123936(31)X
57413696 3920(3.5)N
57414912(Label)X
574151156(Entries)X
574163 f
574171588(.)X
574181716(.)X
574191844(.)X
574201972(.)X
574212100(.)X
574222228(.)X
574232356(.)X
574242484(.)X
574252612(.)X
574262740(.)X
574272868(.)X
574282996(.)X
574293124(.)X
574303252(.)X
574313380(.)X
574323508(.)X
574333636(.)X
574343764(.)X
574351 f
574363936(31)X
57437696 4032(3.6)N
57438912(With)X
574391129(Statement)X
574401539(Entries)X
574413 f
574421972(.)X
574432100(.)X
574442228(.)X
574452356(.)X
574462484(.)X
574472612(.)X
574482740(.)X
574492868(.)X
574502996(.)X
574513124(.)X
574523252(.)X
574533380(.)X
574543508(.)X
574553636(.)X
574563764(.)X
574571 f
574583936(32)X
57459696 4144(3.7)N
57460912(Try)X
574611075(and)X
574621238(Catch)X
574631487(Block)X
574641741(Entries)X
574653 f
574662100(.)X
574672228(.)X
574682356(.)X
574692484(.)X
574702612(.)X
574712740(.)X
574722868(.)X
574732996(.)X
574743124(.)X
574753252(.)X
574763380(.)X
574773508(.)X
574783636(.)X
574793764(.)X
574801 f
574813936(32)X
57482576 4312(4.)N
57483696(DATA)X
57484986(OBJECT)X
574851362(AND)X
574861593(OBJECT)X
574871969(LIST)X
574882196(ENTRIES)X
574893 f
574902740(.)X
574912868(.)X
574922996(.)X
574933124(.)X
574943252(.)X
574953380(.)X
574963508(.)X
574973636(.)X
574983764(.)X
574991 f
575003936(33)X
57501696 4424(4.1)N
57502912(Data)X
575031118(Object)X
575041399(Entries)X
575053 f
575061844(.)X
575071972(.)X
575082100(.)X
575092228(.)X
575102356(.)X
575112484(.)X
575122612(.)X
575132740(.)X
575142868(.)X
575152996(.)X
575163124(.)X
575173252(.)X
575183380(.)X
575193508(.)X
575203636(.)X
575213764(.)X
575221 f
575233936(33)X
57524696 4536(4.2)N
57525912(Common)X
575261294(Block)X
575271548(Entries)X
575283 f
575291972(.)X
575302100(.)X
575312228(.)X
575322356(.)X
575332484(.)X
575342612(.)X
575352740(.)X
575362868(.)X
575372996(.)X
575383124(.)X
575393252(.)X
575403380(.)X
575413508(.)X
575423636(.)X
575433764(.)X
575441 f
575453936(35)X
57546696 4648(4.3)N
57547912(Imported)X
575481289(Declaration)X
575491763(Entries)X
575503 f
575512100(.)X
575522228(.)X
575532356(.)X
575542484(.)X
575552612(.)X
575562740(.)X
575572868(.)X
575582996(.)X
575593124(.)X
575603252(.)X
575613380(.)X
575623508(.)X
575633636(.)X
575643764(.)X
575651 f
575663936(35)X
57567696 4760(4.4)N
57568912(Namelist)X
575691284(Entries)X
575703 f
575711716(.)X
575721844(.)X
575731972(.)X
575742100(.)X
575752228(.)X
575762356(.)X
575772484(.)X
575782612(.)X
575792740(.)X
575802868(.)X
575812996(.)X
575823124(.)X
575833252(.)X
575843380(.)X
575853508(.)X
575863636(.)X
575873764(.)X
575881 f
575893936(35)X
57590576 4928(5.)N
57591696(TYPE)X
57592960(ENTRIES)X
575933 f
575941460(.)X
575951588(.)X
575961716(.)X
575971844(.)X
575981972(.)X
575992100(.)X
576002228(.)X
576012356(.)X
576022484(.)X
576032612(.)X
576042740(.)X
576052868(.)X
576062996(.)X
576073124(.)X
576083252(.)X
576093380(.)X
576103508(.)X
576113636(.)X
576123764(.)X
576131 f
576143936(37)X
57615696 5040(5.1)N
57616912(Base)X
576171123(Type)X
576181345(Entries)X
576193 f
576201716(.)X
576211844(.)X
576221972(.)X
576232100(.)X
576242228(.)X
576252356(.)X
576262484(.)X
576272612(.)X
576282740(.)X
576292868(.)X
576302996(.)X
576313124(.)X
576323252(.)X
576333380(.)X
576343508(.)X
576353636(.)X
576363764(.)X
576371 f
576383936(37)X
57639696 5152(5.2)N
57640912(Type)X
576411134(Modi\256er)X
576421494(Entries)X
576433 f
576441844(.)X
576451972(.)X
576462100(.)X
576472228(.)X
576482356(.)X
576492484(.)X
576502612(.)X
576512740(.)X
576522868(.)X
576532996(.)X
576543124(.)X
576553252(.)X
576563380(.)X
576573508(.)X
576583636(.)X
576593764(.)X
576601 f
576613936(38)X
57662696 5264(5.3)N
57663912(Typedef)X
576641257(Entries)X
576653 f
576661588(.)X
576671716(.)X
576681844(.)X
576691972(.)X
576702100(.)X
576712228(.)X
576722356(.)X
576732484(.)X
576742612(.)X
576752740(.)X
576762868(.)X
576772996(.)X
576783124(.)X
576793252(.)X
576803380(.)X
576813508(.)X
576823636(.)X
576833764(.)X
576841 f
576853936(38)X
57686696 5376(5.4)N
57687912(Array)X
576881160(Type)X
576891382(Entries)X
576903 f
576911716(.)X
576921844(.)X
576931972(.)X
576942100(.)X
576952228(.)X
576962356(.)X
576972484(.)X
576982612(.)X
576992740(.)X
577002868(.)X
577012996(.)X
577023124(.)X
577033252(.)X
577043380(.)X
577053508(.)X
577063636(.)X
577073764(.)X
577081 f
577093936(39)X
57710696 5488(5.5)N
57711912(Structure,)X
577121313(Union,)X
577131601(and)X
577141764(Class)X
577151996(Type)X
577162218(Entries)X
577173 f
577182612(.)X
577192740(.)X
577202868(.)X
577212996(.)X
577223124(.)X
577233252(.)X
577243380(.)X
577253508(.)X
577263636(.)X
577273764(.)X
577281 f
577293936(39)X
57730696 5600(5.6)N
57731912(Enumeration)X
577321434(Type)X
577331656(Entries)X
577343 f
577352100(.)X
577362228(.)X
577372356(.)X
577382484(.)X
577392612(.)X
577402740(.)X
577412868(.)X
577422996(.)X
577433124(.)X
577443252(.)X
577453380(.)X
577463508(.)X
577473636(.)X
577483764(.)X
577491 f
577503936(45)X
57751696 5712(5.7)N
57752912(Subroutine)X
577531358(Type)X
577541580(Entries)X
577553 f
577561972(.)X
577572100(.)X
577582228(.)X
577592356(.)X
577602484(.)X
577612612(.)X
577622740(.)X
577632868(.)X
577642996(.)X
577653124(.)X
577663252(.)X
577673380(.)X
577683508(.)X
577693636(.)X
577703764(.)X
577711 f
577723936(45)X
577732234 6068(-)N
577742290(i)X
577752341(-)X
57776
57777104 p
57778%%Page: 104 106
577790(Courier)xf 0 f
5778012 s 0 xH 0 xS 0 f
577811 f
57782696 560(5.8)N
57783912(String)X
577841171(Type)X
577851393(Entries)X
577863 f
577871844(.)X
577881972(.)X
577892100(.)X
577902228(.)X
577912356(.)X
577922484(.)X
577932612(.)X
577942740(.)X
577952868(.)X
577962996(.)X
577973124(.)X
577983252(.)X
577993380(.)X
578003508(.)X
578013636(.)X
578023764(.)X
578031 f
578043936(46)X
57805696 672(5.9)N
57806912(Set)X
578071059(Entries)X
578083 f
578091460(.)X
578101588(.)X
578111716(.)X
578121844(.)X
578131972(.)X
578142100(.)X
578152228(.)X
578162356(.)X
578172484(.)X
578182612(.)X
578192740(.)X
578202868(.)X
578212996(.)X
578223124(.)X
578233252(.)X
578243380(.)X
578253508(.)X
578263636(.)X
578273764(.)X
578281 f
578293936(46)X
57830696 784(5.10)N
57831912(Subrange)X
578321299(Type)X
578331521(Entries)X
578343 f
578351972(.)X
578362100(.)X
578372228(.)X
578382356(.)X
578392484(.)X
578402612(.)X
578412740(.)X
578422868(.)X
578432996(.)X
578443124(.)X
578453252(.)X
578463380(.)X
578473508(.)X
578483636(.)X
578493764(.)X
578501 f
578513936(46)X
57852696 896(5.11)N
57853912(Pointer)X
578541214(to)X
578551313(Member)X
578561663(Type)X
578571885(Entries)X
578583 f
578592228(.)X
578602356(.)X
578612484(.)X
578622612(.)X
578632740(.)X
578642868(.)X
578652996(.)X
578663124(.)X
578673252(.)X
578683380(.)X
578693508(.)X
578703636(.)X
578713764(.)X
578721 f
578733936(47)X
57874696 1008(5.12)N
57875912(File)X
578761086(Type)X
578771308(Entries)X
578783 f
578791716(.)X
578801844(.)X
578811972(.)X
578822100(.)X
578832228(.)X
578842356(.)X
578852484(.)X
578862612(.)X
578872740(.)X
578882868(.)X
578892996(.)X
578903124(.)X
578913252(.)X
578923380(.)X
578933508(.)X
578943636(.)X
578953764(.)X
578961 f
578973936(48)X
57898576 1176(6.)N
57899696(OTHER)X
579001040(DEBUGGING)X
579011633(INFORMATION)X
579023 f
579032356(.)X
579042484(.)X
579052612(.)X
579062740(.)X
579072868(.)X
579082996(.)X
579093124(.)X
579103252(.)X
579113380(.)X
579123508(.)X
579133636(.)X
579143764(.)X
579151 f
579163936(49)X
57917696 1288(6.1)N
57918912(Accelerated)X
579191397(Access)X
579203 f
579211844(.)X
579221972(.)X
579232100(.)X
579242228(.)X
579252356(.)X
579262484(.)X
579272612(.)X
579282740(.)X
579292868(.)X
579302996(.)X
579313124(.)X
579323252(.)X
579333380(.)X
579343508(.)X
579353636(.)X
579363764(.)X
579371 f
579383936(49)X
57939696 1400(6.2)N
57940912(Line)X
579411113(Number)X
579421452(Information)X
579433 f
579441972(.)X
579452100(.)X
579462228(.)X
579472356(.)X
579482484(.)X
579492612(.)X
579502740(.)X
579512868(.)X
579522996(.)X
579533124(.)X
579543252(.)X
579553380(.)X
579563508(.)X
579573636(.)X
579583764(.)X
579591 f
579603936(50)X
57961696 1512(6.3)N
57962912(Macro)X
579631187(Information)X
579643 f
579651716(.)X
579661844(.)X
579671972(.)X
579682100(.)X
579692228(.)X
579702356(.)X
579712484(.)X
579722612(.)X
579732740(.)X
579742868(.)X
579752996(.)X
579763124(.)X
579773252(.)X
579783380(.)X
579793508(.)X
579803636(.)X
579813764(.)X
579821 f
579833936(57)X
57984696 1624(6.4)N
57985912(Call)X
579861097(Frame)X
579871367(Information)X
579883 f
579891972(.)X
579902100(.)X
579912228(.)X
579922356(.)X
579932484(.)X
579942612(.)X
579952740(.)X
579962868(.)X
579972996(.)X
579983124(.)X
579993252(.)X
580003380(.)X
580013508(.)X
580023636(.)X
580033764(.)X
580041 f
580053936(59)X
58006576 1792(7.)N
58007696(DATA)X
58008986(REPRESENTATION)X
580093 f
580101972(.)X
580112100(.)X
580122228(.)X
580132356(.)X
580142484(.)X
580152612(.)X
580162740(.)X
580172868(.)X
580182996(.)X
580193124(.)X
580203252(.)X
580213380(.)X
580223508(.)X
580233636(.)X
580243764(.)X
580251 f
580263936(65)X
58027696 1904(7.1)N
58028912(Vendor)X
580291224(Extensibility)X
580303 f
580311844(.)X
580321972(.)X
580332100(.)X
580342228(.)X
580352356(.)X
580362484(.)X
580372612(.)X
580382740(.)X
580392868(.)X
580402996(.)X
580413124(.)X
580423252(.)X
580433380(.)X
580443508(.)X
580453636(.)X
580463764(.)X
580471 f
580483936(65)X
58049696 2016(7.2)N
58050912(Reserved)X
580511294(Error)X
580521521(Values)X
580533 f
580541844(.)X
580551972(.)X
580562100(.)X
580572228(.)X
580582356(.)X
580592484(.)X
580602612(.)X
580612740(.)X
580622868(.)X
580632996(.)X
580643124(.)X
580653252(.)X
580663380(.)X
580673508(.)X
580683636(.)X
580693764(.)X
580701 f
580713936(65)X
58072696 2128(7.3)N
58073912(Executable)X
580741365(Objects)X
580751683(and)X
580761846(Shared)X
580772137(Objects)X
580783 f
580792484(.)X
580802612(.)X
580812740(.)X
580822868(.)X
580832996(.)X
580843124(.)X
580853252(.)X
580863380(.)X
580873508(.)X
580883636(.)X
580893764(.)X
580901 f
580913936(65)X
58092696 2240(7.4)N
58093912(File)X
580941086(Constraints)X
580953 f
580961588(.)X
580971716(.)X
580981844(.)X
580991972(.)X
581002100(.)X
581012228(.)X
581022356(.)X
581032484(.)X
581042612(.)X
581052740(.)X
581062868(.)X
581072996(.)X
581083124(.)X
581093252(.)X
581103380(.)X
581113508(.)X
581123636(.)X
581133764(.)X
581141 f
581153936(66)X
58116696 2352(7.5)N
58117912(Format)X
581181214(of)X
581191318(Debugging)X
581201769(Information)X
581213 f
581222356(.)X
581232484(.)X
581242612(.)X
581252740(.)X
581262868(.)X
581272996(.)X
581283124(.)X
581293252(.)X
581303380(.)X
581313508(.)X
581323636(.)X
581333764(.)X
581341 f
581353936(66)X
58136696 2464(7.6)N
58137912(Variable)X
581381268(Length)X
581391565(Data)X
581403 f
581411844(.)X
581421972(.)X
581432100(.)X
581442228(.)X
581452356(.)X
581462484(.)X
581472612(.)X
581482740(.)X
581492868(.)X
581502996(.)X
581513124(.)X
581523252(.)X
581533380(.)X
581543508(.)X
581553636(.)X
581563764(.)X
581571 f
581583936(70)X
58159696 2576(7.7)N
58160912(Location)X
581611279(Descriptions)X
581623 f
581631844(.)X
581641972(.)X
581652100(.)X
581662228(.)X
581672356(.)X
581682484(.)X
581692612(.)X
581702740(.)X
581712868(.)X
581722996(.)X
581733124(.)X
581743252(.)X
581753380(.)X
581763508(.)X
581773636(.)X
581783764(.)X
581791 f
581803936(72)X
58181696 2688(7.8)N
58182912(Base)X
581831123(Type)X
581841345(Encodings)X
581853 f
581861844(.)X
581871972(.)X
581882100(.)X
581892228(.)X
581902356(.)X
581912484(.)X
581922612(.)X
581932740(.)X
581942868(.)X
581952996(.)X
581963124(.)X
581973252(.)X
581983380(.)X
581993508(.)X
582003636(.)X
582013764(.)X
582021 f
582033936(74)X
58204696 2800(7.9)N
58205912(Accessibility)X
582061439(Codes)X
582073 f
582081844(.)X
582091972(.)X
582102100(.)X
582112228(.)X
582122356(.)X
582132484(.)X
582142612(.)X
582152740(.)X
582162868(.)X
582172996(.)X
582183124(.)X
582193252(.)X
582203380(.)X
582213508(.)X
582223636(.)X
582233764(.)X
582241 f
582253936(74)X
58226696 2912(7.10)N
58227912(Visibility)X
582281300(Codes)X
582293 f
582301716(.)X
582311844(.)X
582321972(.)X
582332100(.)X
582342228(.)X
582352356(.)X
582362484(.)X
582372612(.)X
582382740(.)X
582392868(.)X
582402996(.)X
582413124(.)X
582423252(.)X
582433380(.)X
582443508(.)X
582453636(.)X
582463764(.)X
582471 f
582483936(75)X
58249696 3024(7.11)N
58250912(Virtuality)X
582511311(Codes)X
582523 f
582531716(.)X
582541844(.)X
582551972(.)X
582562100(.)X
582572228(.)X
582582356(.)X
582592484(.)X
582602612(.)X
582612740(.)X
582622868(.)X
582632996(.)X
582643124(.)X
582653252(.)X
582663380(.)X
582673508(.)X
582683636(.)X
582693764(.)X
582701 f
582713936(75)X
58272696 3136(7.12)N
58273912(Source)X
582741203(Languages)X
582753 f
582761716(.)X
582771844(.)X
582781972(.)X
582792100(.)X
582802228(.)X
582812356(.)X
582822484(.)X
582832612(.)X
582842740(.)X
582852868(.)X
582862996(.)X
582873124(.)X
582883252(.)X
582893380(.)X
582903508(.)X
582913636(.)X
582923764(.)X
582931 f
582943936(75)X
58295696 3248(7.13)N
58296912(Address)X
582971250(Class)X
582981482(Encodings)X
582993 f
583001972(.)X
583012100(.)X
583022228(.)X
583032356(.)X
583042484(.)X
583052612(.)X
583062740(.)X
583072868(.)X
583082996(.)X
583093124(.)X
583103252(.)X
583113380(.)X
583123508(.)X
583133636(.)X
583143764(.)X
583151 f
583163936(75)X
58317696 3360(7.14)N
58318912(Identi\256er)X
583191289(Case)X
583203 f
583211588(.)X
583221716(.)X
583231844(.)X
583241972(.)X
583252100(.)X
583262228(.)X
583272356(.)X
583282484(.)X
583292612(.)X
583302740(.)X
583312868(.)X
583322996(.)X
583333124(.)X
583343252(.)X
583353380(.)X
583363508(.)X
583373636(.)X
583383764(.)X
583391 f
583403936(76)X
58341696 3472(7.15)N
58342912(Calling)X
583431220(Convention)X
583441693(Encodings)X
583453 f
583462228(.)X
583472356(.)X
583482484(.)X
583492612(.)X
583502740(.)X
583512868(.)X
583522996(.)X
583533124(.)X
583543252(.)X
583553380(.)X
583563508(.)X
583573636(.)X
583583764(.)X
583591 f
583603936(76)X
58361696 3584(7.16)N
58362912(Inline)X
583631161(Codes)X
583643 f
583651460(.)X
583661588(.)X
583671716(.)X
583681844(.)X
583691972(.)X
583702100(.)X
583712228(.)X
583722356(.)X
583732484(.)X
583742612(.)X
583752740(.)X
583762868(.)X
583772996(.)X
583783124(.)X
583793252(.)X
583803380(.)X
583813508(.)X
583823636(.)X
583833764(.)X
583841 f
583853936(76)X
58386696 3696(7.17)N
58387912(Array)X
583881160(Ordering)X
583893 f
583901588(.)X
583911716(.)X
583921844(.)X
583931972(.)X
583942100(.)X
583952228(.)X
583962356(.)X
583972484(.)X
583982612(.)X
583992740(.)X
584002868(.)X
584012996(.)X
584023124(.)X
584033252(.)X
584043380(.)X
584053508(.)X
584063636(.)X
584073764(.)X
584081 f
584093936(77)X
58410696 3808(7.18)N
58411912(Discriminant)X
584121439(Lists)X
584133 f
584141716(.)X
584151844(.)X
584161972(.)X
584172100(.)X
584182228(.)X
584192356(.)X
584202484(.)X
584212612(.)X
584222740(.)X
584232868(.)X
584242996(.)X
584253124(.)X
584263252(.)X
584273380(.)X
584283508(.)X
584293636(.)X
584303764(.)X
584311 f
584323936(77)X
58433696 3920(7.19)N
58434912(Name)X
584351166(Lookup)X
584361489(Table)X
584373 f
584381844(.)X
584391972(.)X
584402100(.)X
584412228(.)X
584422356(.)X
584432484(.)X
584442612(.)X
584452740(.)X
584462868(.)X
584472996(.)X
584483124(.)X
584493252(.)X
584503380(.)X
584513508(.)X
584523636(.)X
584533764(.)X
584541 f
584553936(77)X
58456696 4032(7.20)N
58457912(Address)X
584581250(Range)X
584591520(Table)X
584603 f
584611844(.)X
584621972(.)X
584632100(.)X
584642228(.)X
584652356(.)X
584662484(.)X
584672612(.)X
584682740(.)X
584692868(.)X
584702996(.)X
584713124(.)X
584723252(.)X
584733380(.)X
584743508(.)X
584753636(.)X
584763764(.)X
584771 f
584783936(77)X
58479696 4144(7.21)N
58480912(Line)X
584811113(Number)X
584821452(Information)X
584833 f
584841972(.)X
584852100(.)X
584862228(.)X
584872356(.)X
584882484(.)X
584892612(.)X
584902740(.)X
584912868(.)X
584922996(.)X
584933124(.)X
584943252(.)X
584953380(.)X
584963508(.)X
584973636(.)X
584983764(.)X
584991 f
585003936(77)X
58501696 4256(7.22)N
58502912(Macro)X
585031187(Information)X
585043 f
585051716(.)X
585061844(.)X
585071972(.)X
585082100(.)X
585092228(.)X
585102356(.)X
585112484(.)X
585122612(.)X
585132740(.)X
585142868(.)X
585152996(.)X
585163124(.)X
585173252(.)X
585183380(.)X
585193508(.)X
585203636(.)X
585213764(.)X
585221 f
585233936(78)X
58524696 4368(7.23)N
58525912(Call)X
585261097(Frame)X
585271367(Information)X
585283 f
585291972(.)X
585302100(.)X
585312228(.)X
585322356(.)X
585332484(.)X
585342612(.)X
585352740(.)X
585362868(.)X
585372996(.)X
585383124(.)X
585393252(.)X
585403380(.)X
585413508(.)X
585423636(.)X
585433764(.)X
585441 f
585453936(78)X
58546696 4480(7.24)N
58547912(Dependencies)X
585483 f
585491588(.)X
585501716(.)X
585511844(.)X
585521972(.)X
585532100(.)X
585542228(.)X
585552356(.)X
585562484(.)X
585572612(.)X
585582740(.)X
585592868(.)X
585602996(.)X
585613124(.)X
585623252(.)X
585633380(.)X
585643508(.)X
585653636(.)X
585663764(.)X
585671 f
585683936(79)X
58569576 4648(8.)N
58570696(FUTURE)X
585711093(DIRECTIONS)X
585723 f
585731716(.)X
585741844(.)X
585751972(.)X
585762100(.)X
585772228(.)X
585782356(.)X
585792484(.)X
585802612(.)X
585812740(.)X
585822868(.)X
585832996(.)X
585843124(.)X
585853252(.)X
585863380(.)X
585873508(.)X
585883636(.)X
585893764(.)X
585901 f
585913936(81)X
58592576 4816(Appendix)N
58593979(1)X
585941051(--)X
585951139(Current)X
585961457(Attributes)X
585971866(by)X
585981986(Tag)X
585992160(Value)X
586003 f
586012484(.)X
586022612(.)X
586032740(.)X
586042868(.)X
586052996(.)X
586063124(.)X
586073252(.)X
586083380(.)X
586093508(.)X
586103636(.)X
586113764(.)X
586121 f
586133936(83)X
58614576 4984(Appendix)N
58615979(2)X
586161051(--)X
586171139(Organization)X
586181666(of)X
586191770(Debugging)X
586202221(Information)X
586213 f
586222740(.)X
586232868(.)X
586242996(.)X
586253124(.)X
586263252(.)X
586273380(.)X
586283508(.)X
586293636(.)X
586303764(.)X
586311 f
586323936(93)X
58633576 5152(Appendix)N
58634979(3)X
586351051(--)X
586361139(Statement)X
586371549(Program)X
586381904(Examples)X
586393 f
586402356(.)X
586412484(.)X
586422612(.)X
586432740(.)X
586442868(.)X
586452996(.)X
586463124(.)X
586473252(.)X
586483380(.)X
586493508(.)X
586503636(.)X
586513764(.)X
586521 f
586533936(95)X
58654576 5320(Appendix)N
58655979(4)X
586561051(--)X
586571139(Encoding)X
586581532(and)X
586591695(decoding)X
586602072(variable)X
586612407(length)X
586622672(data)X
586633 f
586642996(.)X
586653124(.)X
586663252(.)X
586673380(.)X
586683508(.)X
586693636(.)X
586703764(.)X
586711 f
586723936(97)X
58673576 5488(Appendix)N
58674979(5)X
586751051(--)X
586761139(Call)X
586771324(Frame)X
586781594(Information)X
586792078(Examples)X
586803 f
586812612(.)X
586822740(.)X
586832868(.)X
586842996(.)X
586853124(.)X
586863252(.)X
586873380(.)X
586883508(.)X
586893636(.)X
586903764(.)X
586911 f
586923936(99)X
586932221 6068(-)N
586942277(ii)X
586952355(-)X
58696
58697105 p
58698%%Page: 105 107
586990(Courier)xf 0 f
5870012 s 0 xH 0 xS 0 f
587011 f
587022021 896(List)N
587032195(of)X
587042299(Figures)X
58705624 1176(Figure)N
58706899(1.)X
587071019(Tag)X
587081193(names)X
587093 f
587101588(.)X
587111716(.)X
587121844(.)X
587131972(.)X
587142100(.)X
587152228(.)X
587162356(.)X
587172484(.)X
587182612(.)X
587192740(.)X
587202868(.)X
587212996(.)X
587223124(.)X
587233252(.)X
587243380(.)X
587253508(.)X
587263636(.)X
587273764(.)X
587281 f
587293984(7)X
58730624 1344(Figure)N
58731899(2.)X
587321019(Attribute)X
587331391(names)X
587343 f
587351716(.)X
587361844(.)X
587371972(.)X
587382100(.)X
587392228(.)X
587402356(.)X
587412484(.)X
587422612(.)X
587432740(.)X
587442868(.)X
587452996(.)X
587463124(.)X
587473252(.)X
587483380(.)X
587493508(.)X
587503636(.)X
587513764(.)X
587521 f
587533984(8)X
58754624 1512(Figure)N
58755899(3.)X
587561019(Accessibility)X
587571546(codes)X
587583 f
587591844(.)X
587601972(.)X
587612100(.)X
587622228(.)X
587632356(.)X
587642484(.)X
587652612(.)X
587662740(.)X
587672868(.)X
587682996(.)X
587693124(.)X
587703252(.)X
587713380(.)X
587723508(.)X
587733636(.)X
587743764(.)X
587751 f
587763936(18)X
58777624 1680(Figure)N
58778899(4.)X
587791019(Visibility)X
587801407(codes)X
587813 f
587821716(.)X
587831844(.)X
587841972(.)X
587852100(.)X
587862228(.)X
587872356(.)X
587882484(.)X
587892612(.)X
587902740(.)X
587912868(.)X
587922996(.)X
587933124(.)X
587943252(.)X
587953380(.)X
587963508(.)X
587973636(.)X
587983764(.)X
587991 f
588003936(19)X
58801624 1848(Figure)N
58802899(5.)X
588031019(Virtuality)X
588041418(codes)X
588053 f
588061716(.)X
588071844(.)X
588081972(.)X
588092100(.)X
588102228(.)X
588112356(.)X
588122484(.)X
588132612(.)X
588142740(.)X
588152868(.)X
588162996(.)X
588173124(.)X
588183252(.)X
588193380(.)X
588203508(.)X
588213636(.)X
588223764(.)X
588231 f
588243936(19)X
58825624 2016(Figure)N
58826899(6.)X
588271019(Example)X
588281386(address)X
588291698(class)X
588301909(codes)X
588313 f
588322228(.)X
588332356(.)X
588342484(.)X
588352612(.)X
588362740(.)X
588372868(.)X
588382996(.)X
588393124(.)X
588403252(.)X
588413380(.)X
588423508(.)X
588433636(.)X
588443764(.)X
588451 f
588463936(20)X
58847624 2184(Figure)N
58848899(7.)X
588491019(Language)X
588501423(names)X
588513 f
588521844(.)X
588531972(.)X
588542100(.)X
588552228(.)X
588562356(.)X
588572484(.)X
588582612(.)X
588592740(.)X
588602868(.)X
588612996(.)X
588623124(.)X
588633252(.)X
588643380(.)X
588653508(.)X
588663636(.)X
588673764(.)X
588681 f
588693936(23)X
58870624 2352(Figure)N
58871899(8.)X
588721019(Identi\256er)X
588731396(case)X
588741586(codes)X
588753 f
588761972(.)X
588772100(.)X
588782228(.)X
588792356(.)X
588802484(.)X
588812612(.)X
588822740(.)X
588832868(.)X
588842996(.)X
588853124(.)X
588863252(.)X
588873380(.)X
588883508(.)X
588893636(.)X
588903764(.)X
588911 f
588923936(24)X
58893624 2520(Figure)N
58894899(9.)X
588951019(Inline)X
588961268(codes)X
588973 f
588981588(.)X
588991716(.)X
589001844(.)X
589011972(.)X
589022100(.)X
589032228(.)X
589042356(.)X
589052484(.)X
589062612(.)X
589072740(.)X
589082868(.)X
589092996(.)X
589103124(.)X
589113252(.)X
589123380(.)X
589133508(.)X
589143636(.)X
589153764(.)X
589161 f
589173936(29)X
58918576 2688(Figure)N
58919851(10.)X
589201019(Encoding)X
589211412(attribute)X
589221758(values)X
589233 f
589242100(.)X
589252228(.)X
589262356(.)X
589272484(.)X
589282612(.)X
589292740(.)X
589302868(.)X
589312996(.)X
589323124(.)X
589333252(.)X
589343380(.)X
589353508(.)X
589363636(.)X
589373764(.)X
589381 f
589393936(37)X
58940576 2856(Figure)N
58941851(11.)X
589421019(Type)X
589431241(modi\256er)X
589441591(tags)X
589453 f
589461844(.)X
589471972(.)X
589482100(.)X
589492228(.)X
589502356(.)X
589512484(.)X
589522612(.)X
589532740(.)X
589542868(.)X
589552996(.)X
589563124(.)X
589573252(.)X
589583380(.)X
589593508(.)X
589603636(.)X
589613764(.)X
589621 f
589633936(38)X
58964576 3024(Figure)N
58965851(12.)X
589661019(Array)X
589671267(ordering)X
589683 f
589691716(.)X
589701844(.)X
589711972(.)X
589722100(.)X
589732228(.)X
589742356(.)X
589752484(.)X
589762612(.)X
589772740(.)X
589782868(.)X
589792996(.)X
589803124(.)X
589813252(.)X
589823380(.)X
589833508(.)X
589843636(.)X
589853764(.)X
589861 f
589873936(39)X
58988576 3192(Figure)N
58989851(13.)X
589901019(Discriminant)X
589911546(descriptor)X
589921955(values)X
589933 f
589942356(.)X
589952484(.)X
589962612(.)X
589972740(.)X
589982868(.)X
589992996(.)X
590003124(.)X
590013252(.)X
590023380(.)X
590033508(.)X
590043636(.)X
590053764(.)X
590061 f
590073936(44)X
59008576 3360(Figure)N
59009851(14.)X
590101019(Tag)X
590111193(encodings)X
590121607(\(part)X
590131813(1\))X
590143 f
590151972(.)X
590162100(.)X
590172228(.)X
590182356(.)X
590192484(.)X
590202612(.)X
590212740(.)X
590222868(.)X
590232996(.)X
590243124(.)X
590253252(.)X
590263380(.)X
590273508(.)X
590283636(.)X
590293764(.)X
590301 f
590313936(68)X
59032576 3528(Figure)N
59033851(15.)X
590341019(Tag)X
590351193(encodings)X
590361607(\(part)X
590371813(2\))X
590383 f
590391972(.)X
590402100(.)X
590412228(.)X
590422356(.)X
590432484(.)X
590442612(.)X
590452740(.)X
590462868(.)X
590472996(.)X
590483124(.)X
590493252(.)X
590503380(.)X
590513508(.)X
590523636(.)X
590533764(.)X
590541 f
590553936(69)X
59056576 3696(Figure)N
59057851(16.)X
590581019(Child)X
590591257(determination)X
590601817(encodings)X
590613 f
590622356(.)X
590632484(.)X
590642612(.)X
590652740(.)X
590662868(.)X
590672996(.)X
590683124(.)X
590693252(.)X
590703380(.)X
590713508(.)X
590723636(.)X
590733764(.)X
590741 f
590753936(69)X
59076576 3864(Figure)N
59077851(17.)X
590781019(Attribute)X
590791391(encodings,)X
590801829(part)X
590812003(1)X
590823 f
590832228(.)X
590842356(.)X
590852484(.)X
590862612(.)X
590872740(.)X
590882868(.)X
590892996(.)X
590903124(.)X
590913252(.)X
590923380(.)X
590933508(.)X
590943636(.)X
590953764(.)X
590961 f
590973936(70)X
59098576 4032(Figure)N
59099851(18.)X
591001019(Attribute)X
591011391(encodings,)X
591021829(part)X
591032003(2)X
591043 f
591052228(.)X
591062356(.)X
591072484(.)X
591082612(.)X
591092740(.)X
591102868(.)X
591112996(.)X
591123124(.)X
591133252(.)X
591143380(.)X
591153508(.)X
591163636(.)X
591173764(.)X
591181 f
591193936(71)X
59120576 4200(Figure)N
59121851(19.)X
591221019(Attribute)X
591231391(form)X
591241602(encodings)X
591253 f
591262100(.)X
591272228(.)X
591282356(.)X
591292484(.)X
591302612(.)X
591312740(.)X
591322868(.)X
591332996(.)X
591343124(.)X
591353252(.)X
591363380(.)X
591373508(.)X
591383636(.)X
591393764(.)X
591401 f
591413936(72)X
59142576 4368(Figure)N
59143851(20.)X
591441019(Examples)X
591451423(of)X
591461527(unsigned)X
591471898(LEB128)X
591482248(encodings)X
591493 f
591502740(.)X
591512868(.)X
591522996(.)X
591533124(.)X
591543252(.)X
591553380(.)X
591563508(.)X
591573636(.)X
591583764(.)X
591591 f
591603936(72)X
59161576 4536(Figure)N
59162851(21.)X
591631019(Examples)X
591641423(of)X
591651527(signed)X
591661802(LEB128)X
591672152(encodings)X
591683 f
591692612(.)X
591702740(.)X
591712868(.)X
591722996(.)X
591733124(.)X
591743252(.)X
591753380(.)X
591763508(.)X
591773636(.)X
591783764(.)X
591791 f
591803936(73)X
59181576 4704(Figure)N
59182851(22.)X
591831019(Location)X
591841386(operation)X
591851774(encodings,)X
591862212(part)X
591872386(1)X
591883 f
591892612(.)X
591902740(.)X
591912868(.)X
591922996(.)X
591933124(.)X
591943252(.)X
591953380(.)X
591963508(.)X
591973636(.)X
591983764(.)X
591991 f
592003936(73)X
59201576 4872(Figure)N
59202851(23.)X
592031019(Location)X
592041386(operation)X
592051774(encodings,)X
592062212(part)X
592072386(2)X
592083 f
592092612(.)X
592102740(.)X
592112868(.)X
592122996(.)X
592133124(.)X
592143252(.)X
592153380(.)X
592163508(.)X
592173636(.)X
592183764(.)X
592191 f
592203936(74)X
59221576 5040(Figure)N
59222851(24.)X
592231019(Base)X
592241230(type)X
592251420(encoding)X
592261797(values)X
592273 f
592282100(.)X
592292228(.)X
592302356(.)X
592312484(.)X
592322612(.)X
592332740(.)X
592342868(.)X
592352996(.)X
592363124(.)X
592373252(.)X
592383380(.)X
592393508(.)X
592403636(.)X
592413764(.)X
592421 f
592433936(75)X
59244576 5208(Figure)N
59245851(25.)X
592461019(Accessibility)X
592471546(encodings)X
592483 f
592492100(.)X
592502228(.)X
592512356(.)X
592522484(.)X
592532612(.)X
592542740(.)X
592552868(.)X
592562996(.)X
592573124(.)X
592583252(.)X
592593380(.)X
592603508(.)X
592613636(.)X
592623764(.)X
592631 f
592643936(75)X
59265576 5376(Figure)N
59266851(26.)X
592671019(Visibility)X
592681407(encodings)X
592693 f
592701972(.)X
592712100(.)X
592722228(.)X
592732356(.)X
592742484(.)X
592752612(.)X
592762740(.)X
592772868(.)X
592782996(.)X
592793124(.)X
592803252(.)X
592813380(.)X
592823508(.)X
592833636(.)X
592843764(.)X
592851 f
592863936(75)X
59287576 5544(Figure)N
59288851(27.)X
592891019(Virtuality)X
592901418(encodings)X
592913 f
592921972(.)X
592932100(.)X
592942228(.)X
592952356(.)X
592962484(.)X
592972612(.)X
592982740(.)X
592992868(.)X
593002996(.)X
593013124(.)X
593023252(.)X
593033380(.)X
593043508(.)X
593053636(.)X
593063764(.)X
593071 f
593083936(75)X
59309576 5712(Figure)N
59310851(28.)X
593111019(Language)X
593121423(encodings)X
593133 f
593141972(.)X
593152100(.)X
593162228(.)X
593172356(.)X
593182484(.)X
593192612(.)X
593202740(.)X
593212868(.)X
593222996(.)X
593233124(.)X
593243252(.)X
593253380(.)X
593263508(.)X
593273636(.)X
593283764(.)X
593291 f
593303936(76)X
593312207 6068(-)N
593322263(iii)X
593332368(-)X
59334
59335106 p
59336%%Page: 106 108
593370(Courier)xf 0 f
5933812 s 0 xH 0 xS 0 f
593391 f
59340576 560(Figure)N
59341851(29.)X
593421019(Identi\256er)X
593431396(case)X
593441586(encodings)X
593453 f
593462100(.)X
593472228(.)X
593482356(.)X
593492484(.)X
593502612(.)X
593512740(.)X
593522868(.)X
593532996(.)X
593543124(.)X
593553252(.)X
593563380(.)X
593573508(.)X
593583636(.)X
593593764(.)X
593601 f
593613936(76)X
59362576 728(Figure)N
59363851(30.)X
593641019(Calling)X
593651327(convention)X
593661779(encodings)X
593673 f
593682228(.)X
593692356(.)X
593702484(.)X
593712612(.)X
593722740(.)X
593732868(.)X
593742996(.)X
593753124(.)X
593763252(.)X
593773380(.)X
593783508(.)X
593793636(.)X
593803764(.)X
593811 f
593823936(76)X
59383576 896(Figure)N
59384851(31.)X
593851019(Inline)X
593861268(encodings)X
593873 f
593881716(.)X
593891844(.)X
593901972(.)X
593912100(.)X
593922228(.)X
593932356(.)X
593942484(.)X
593952612(.)X
593962740(.)X
593972868(.)X
593982996(.)X
593993124(.)X
594003252(.)X
594013380(.)X
594023508(.)X
594033636(.)X
594043764(.)X
594051 f
594063936(76)X
59407576 1064(Figure)N
59408851(32.)X
594091019(Ordering)X
594101390(encodings)X
594113 f
594121844(.)X
594131972(.)X
594142100(.)X
594152228(.)X
594162356(.)X
594172484(.)X
594182612(.)X
594192740(.)X
594202868(.)X
594212996(.)X
594223124(.)X
594233252(.)X
594243380(.)X
594253508(.)X
594263636(.)X
594273764(.)X
594281 f
594293936(77)X
59430576 1232(Figure)N
59431851(33.)X
594321019(Discriminant)X
594331546(descriptor)X
594341955(encodings)X
594353 f
594362484(.)X
594372612(.)X
594382740(.)X
594392868(.)X
594402996(.)X
594413124(.)X
594423252(.)X
594433380(.)X
594443508(.)X
594453636(.)X
594463764(.)X
594471 f
594483936(77)X
59449576 1400(Figure)N
59450851(34.)X
594511019(Standard)X
594521385(Opcode)X
594531708(Encodings)X
594543 f
594552228(.)X
594562356(.)X
594572484(.)X
594582612(.)X
594592740(.)X
594602868(.)X
594612996(.)X
594623124(.)X
594633252(.)X
594643380(.)X
594653508(.)X
594663636(.)X
594673764(.)X
594681 f
594693936(78)X
59470576 1568(Figure)N
59471851(35.)X
594721019(Extended)X
594731407(Opcode)X
594741730(Encodings)X
594753 f
594762228(.)X
594772356(.)X
594782484(.)X
594792612(.)X
594802740(.)X
594812868(.)X
594822996(.)X
594833124(.)X
594843252(.)X
594853380(.)X
594863508(.)X
594873636(.)X
594883764(.)X
594891 f
594903936(78)X
59491576 1736(Figure)N
59492851(36.)X
594931019(Macinfo)X
594941369(Type)X
594951591(Encodings)X
594963 f
594972100(.)X
594982228(.)X
594992356(.)X
595002484(.)X
595012612(.)X
595022740(.)X
595032868(.)X
595042996(.)X
595053124(.)X
595063252(.)X
595073380(.)X
595083508(.)X
595093636(.)X
595103764(.)X
595111 f
595123936(78)X
59513576 1904(Figure)N
59514851(37.)X
595151019(Call)X
595161204(frame)X
595171453(instruction)X
595181889(encodings)X
595193 f
595202356(.)X
595212484(.)X
595222612(.)X
595232740(.)X
595242868(.)X
595252996(.)X
595263124(.)X
595273252(.)X
595283380(.)X
595293508(.)X
595303636(.)X
595313764(.)X
595321 f
595333936(79)X
595342210 6068(-)N
595352266(iv)X
595362365(-)X
59537
59538108 p
59539%%Trailer
59540xt
59541
59542xs
59543���0707010001ad5f0000812400011e740000000a000000014020682700001808000000660000000000000000000000000000001800000000libdwarf/dwarf_abbrev.c���/*
59544
59545  Copyright (C) 2000,2001 Silicon Graphics, Inc.  All Rights Reserved.
59546
59547  This program is free software; you can redistribute it and/or modify it
59548  under the terms of version 2.1 of the GNU Lesser General Public License
59549  as published by the Free Software Foundation.
59550
59551  This program is distributed in the hope that it would be useful, but
59552  WITHOUT ANY WARRANTY; without even the implied warranty of
59553  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
59554
59555  Further, this software is distributed without any warranty that it is
59556  free of the rightful claim of any third person regarding infringement
59557  or the like.  Any license provided herein, whether implied or
59558  otherwise, applies only to this software file.  Patent licenses, if
59559  any, provided herein do not apply to combinations of this program with
59560  other software, or any other product whatsoever.
59561
59562  You should have received a copy of the GNU Lesser General Public
59563  License along with this program; if not, write the Free Software
59564  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
59565  USA.
59566
59567  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
59568  Mountain View, CA 94043, or:
59569
59570  http://www.sgi.com
59571
59572  For further information regarding this notice, see:
59573
59574  http://oss.sgi.com/projects/GenInfo/NoticeExplan
59575
59576*/
59577
59578
59579
59580#include "config.h"
59581#include "dwarf_incl.h"
59582#include <stdio.h>
59583#include "dwarf_abbrev.h"
59584
59585int
59586dwarf_get_abbrev(Dwarf_Debug dbg,
59587		 Dwarf_Unsigned offset,
59588		 Dwarf_Abbrev * returned_abbrev,
59589		 Dwarf_Unsigned * length,
59590		 Dwarf_Unsigned * abbr_count, Dwarf_Error * error)
59591{
59592    Dwarf_Small *abbrev_ptr;
59593    Dwarf_Small *abbrev_section_end;
59594    Dwarf_Half attr;
59595    Dwarf_Half attr_form;
59596    Dwarf_Abbrev ret_abbrev;
59597    Dwarf_Unsigned labbr_count = 0;
59598    Dwarf_Unsigned utmp;
59599
59600
59601    if (dbg == NULL) {
59602	_dwarf_error(NULL, error, DW_DLE_DBG_NULL);
59603	return (DW_DLV_ERROR);
59604    }
59605    if (dbg->de_debug_abbrev == 0) {
59606	/* Loads abbrev section (and .debug_info as we do those
59607	   together). */
59608	int res = _dwarf_load_debug_info(dbg, error);
59609
59610	if (res != DW_DLV_OK) {
59611	    return res;
59612	}
59613    }
59614
59615    if (offset >= dbg->de_debug_abbrev_size) {
59616	return (DW_DLV_NO_ENTRY);
59617    }
59618
59619
59620    ret_abbrev = (Dwarf_Abbrev) _dwarf_get_alloc(dbg, DW_DLA_ABBREV, 1);
59621    if (ret_abbrev == NULL) {
59622	_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
59623	return (DW_DLV_ERROR);
59624    }
59625    ret_abbrev->ab_dbg = dbg;
59626    if (returned_abbrev == 0 || abbr_count == 0) {
59627	_dwarf_error(dbg, error, DW_DLE_DWARF_ABBREV_NULL);
59628	return (DW_DLV_ERROR);
59629    }
59630
59631
59632    *abbr_count = 0;
59633    if (length != NULL)
59634	*length = 1;
59635
59636    abbrev_ptr = dbg->de_debug_abbrev + offset;
59637    abbrev_section_end =
59638	dbg->de_debug_abbrev + dbg->de_debug_abbrev_size;
59639
59640    DECODE_LEB128_UWORD(abbrev_ptr, utmp);
59641    ret_abbrev->ab_code = (Dwarf_Word) utmp;
59642    if (ret_abbrev->ab_code == 0) {
59643	*returned_abbrev = ret_abbrev;
59644	*abbr_count = 0;
59645	if (length) {
59646	    *length = 1;
59647	}
59648	return (DW_DLV_OK);
59649    }
59650
59651    DECODE_LEB128_UWORD(abbrev_ptr, utmp);
59652    ret_abbrev->ab_tag = utmp;
59653    ret_abbrev->ab_has_child = *(abbrev_ptr++);
59654    ret_abbrev->ab_abbrev_ptr = abbrev_ptr;
59655
59656    do {
59657	Dwarf_Unsigned utmp2;
59658
59659	DECODE_LEB128_UWORD(abbrev_ptr, utmp2)
59660	    attr = (Dwarf_Half) utmp2;
59661	DECODE_LEB128_UWORD(abbrev_ptr, utmp2)
59662	    attr_form = (Dwarf_Half) utmp2;
59663
59664	if (attr != 0)
59665	    (labbr_count)++;
59666
59667    } while (abbrev_ptr < abbrev_section_end &&
59668	     (attr != 0 || attr_form != 0));
59669
59670    if (abbrev_ptr > abbrev_section_end) {
59671	_dwarf_error(dbg, error, DW_DLE_ABBREV_DECODE_ERROR);
59672	return (DW_DLV_ERROR);
59673    }
59674
59675    if (length != NULL)
59676	*length = abbrev_ptr - dbg->de_debug_abbrev - offset;
59677
59678    *returned_abbrev = ret_abbrev;
59679    *abbr_count = labbr_count;
59680    return (DW_DLV_OK);
59681}
59682
59683int
59684dwarf_get_abbrev_code(Dwarf_Abbrev abbrev,
59685		      Dwarf_Unsigned * returned_code,
59686		      Dwarf_Error * error)
59687{
59688    if (abbrev == NULL) {
59689	_dwarf_error(NULL, error, DW_DLE_DWARF_ABBREV_NULL);
59690	return (DW_DLV_ERROR);
59691    }
59692
59693    *returned_code = abbrev->ab_code;
59694    return (DW_DLV_OK);
59695}
59696
59697int
59698dwarf_get_abbrev_tag(Dwarf_Abbrev abbrev,
59699		     Dwarf_Half * returned_tag, Dwarf_Error * error)
59700{
59701    if (abbrev == NULL) {
59702	_dwarf_error(NULL, error, DW_DLE_DWARF_ABBREV_NULL);
59703	return (DW_DLV_ERROR);
59704    }
59705
59706    *returned_tag = abbrev->ab_tag;
59707    return (DW_DLV_OK);
59708}
59709
59710
59711int
59712dwarf_get_abbrev_children_flag(Dwarf_Abbrev abbrev,
59713			       Dwarf_Signed * returned_flag,
59714			       Dwarf_Error * error)
59715{
59716    if (abbrev == NULL) {
59717	_dwarf_error(NULL, error, DW_DLE_DWARF_ABBREV_NULL);
59718	return (DW_DLV_ERROR);
59719    }
59720
59721    *returned_flag = abbrev->ab_has_child;
59722    return (DW_DLV_OK);
59723}
59724
59725
59726int
59727dwarf_get_abbrev_entry(Dwarf_Abbrev abbrev,
59728		       Dwarf_Signed index,
59729		       Dwarf_Half * returned_attr_num,
59730		       Dwarf_Signed * form,
59731		       Dwarf_Off * offset, Dwarf_Error * error)
59732{
59733    Dwarf_Byte_Ptr abbrev_ptr;
59734    Dwarf_Byte_Ptr abbrev_end;
59735    Dwarf_Byte_Ptr mark_abbrev_ptr;
59736    Dwarf_Half attr;
59737    Dwarf_Half attr_form;
59738
59739    if (index < 0)
59740	return (DW_DLV_NO_ENTRY);
59741
59742    if (abbrev == NULL) {
59743	_dwarf_error(NULL, error, DW_DLE_DWARF_ABBREV_NULL);
59744	return (DW_DLV_ERROR);
59745    }
59746
59747    if (abbrev->ab_code == 0) {
59748	return (DW_DLV_NO_ENTRY);
59749    }
59750
59751    if (abbrev->ab_dbg == NULL) {
59752	_dwarf_error(NULL, error, DW_DLE_DBG_NULL);
59753	return (DW_DLV_ERROR);
59754    }
59755
59756    abbrev_ptr = abbrev->ab_abbrev_ptr;
59757    abbrev_end =
59758	abbrev->ab_dbg->de_debug_abbrev +
59759	abbrev->ab_dbg->de_debug_abbrev_size;
59760
59761    for (attr = 1, attr_form = 1;
59762	 index >= 0 && abbrev_ptr < abbrev_end && (attr != 0 ||
59763						   attr_form != 0);
59764	 index--) {
59765	Dwarf_Unsigned utmp4;
59766
59767	mark_abbrev_ptr = abbrev_ptr;
59768	DECODE_LEB128_UWORD(abbrev_ptr, utmp4)
59769	    attr = (Dwarf_Half) utmp4;
59770	DECODE_LEB128_UWORD(abbrev_ptr, utmp4)
59771	    attr_form = (Dwarf_Half) utmp4;
59772    }
59773
59774    if (abbrev_ptr >= abbrev_end) {
59775	_dwarf_error(abbrev->ab_dbg, error, DW_DLE_ABBREV_DECODE_ERROR);
59776	return (DW_DLV_ERROR);
59777    }
59778
59779    if (index >= 0) {
59780	return (DW_DLV_NO_ENTRY);
59781    }
59782
59783    if (form != NULL)
59784	*form = attr_form;
59785    if (offset != NULL)
59786	*offset = mark_abbrev_ptr - abbrev->ab_dbg->de_debug_abbrev;
59787
59788    *returned_attr_num = (attr);
59789    return DW_DLV_OK;
59790}
597910707010001ad600000812400011e740000000a0000000140206827000005cc000000660000000000000000000000000000001800000000libdwarf/dwarf_abbrev.h���/*
59792
59793  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
59794
59795  This program is free software; you can redistribute it and/or modify it
59796  under the terms of version 2.1 of the GNU Lesser General Public License
59797  as published by the Free Software Foundation.
59798
59799  This program is distributed in the hope that it would be useful, but
59800  WITHOUT ANY WARRANTY; without even the implied warranty of
59801  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
59802
59803  Further, this software is distributed without any warranty that it is
59804  free of the rightful claim of any third person regarding infringement
59805  or the like.  Any license provided herein, whether implied or
59806  otherwise, applies only to this software file.  Patent licenses, if
59807  any, provided herein do not apply to combinations of this program with
59808  other software, or any other product whatsoever.
59809
59810  You should have received a copy of the GNU Lesser General Public
59811  License along with this program; if not, write the Free Software
59812  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
59813  USA.
59814
59815  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
59816  Mountain View, CA 94043, or:
59817
59818  http://www.sgi.com
59819
59820  For further information regarding this notice, see:
59821
59822  http://oss.sgi.com/projects/GenInfo/NoticeExplan
59823
59824*/
59825
59826
59827
59828
59829struct Dwarf_Abbrev_s {
59830    Dwarf_Word ab_code;
59831    Dwarf_Half ab_tag;
59832    Dwarf_Small ab_has_child;
59833    Dwarf_Byte_Ptr ab_abbrev_ptr;
59834    Dwarf_Debug ab_dbg;
59835};
598360707010001ad610000812400011e740000000a000000014020682800003cfa000000660000000000000000000000000000001d00000000libdwarf/dwarf_addr_finder.c��/*
59837
59838  Copyright (C) 2000, 2002 Silicon Graphics, Inc.  All Rights Reserved.
59839
59840  This program is free software; you can redistribute it and/or modify it
59841  under the terms of version 2.1 of the GNU Lesser General Public License
59842  as published by the Free Software Foundation.
59843
59844  This program is distributed in the hope that it would be useful, but
59845  WITHOUT ANY WARRANTY; without even the implied warranty of
59846  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
59847
59848  Further, this software is distributed without any warranty that it is
59849  free of the rightful claim of any third person regarding infringement
59850  or the like.  Any license provided herein, whether implied or
59851  otherwise, applies only to this software file.  Patent licenses, if
59852  any, provided herein do not apply to combinations of this program with
59853  other software, or any other product whatsoever.
59854
59855  You should have received a copy of the GNU Lesser General Public
59856  License along with this program; if not, write the Free Software
59857  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
59858  USA.
59859
59860  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
59861  Mountain View, CA 94043, or:
59862
59863  http://www.sgi.com
59864
59865  For further information regarding this notice, see:
59866
59867  http://oss.sgi.com/projects/GenInfo/NoticeExplan
59868
59869*/
59870
59871
59872#include "config.h"
59873#include "libdwarfdefs.h"
59874#ifdef HAVE_ELF_H
59875#include <elf.h>
59876#endif
59877#include <dwarf.h>
59878#include <libdwarf.h>
59879#include "dwarf_base_types.h"
59880#include "dwarf_alloc.h"
59881#include "dwarf_opaque.h"
59882#include "dwarf_arange.h"
59883#include "dwarf_line.h"
59884#include "dwarf_frame.h"
59885#include <cmplrs/dwarf_addr_finder.h>
59886#include "dwarf_error.h"
59887
59888typedef unsigned long long ull;
59889
59890static int do_this_die_and_dealloc(Dwarf_Debug dbg, Dwarf_Die die,
59891				   int *errval);
59892static int
59893  handle_debug_info(Dwarf_Debug dbg, int *errval);
59894static int
59895  handle_debug_frame(Dwarf_Debug dbg, Dwarf_addr_callback_func cb_func, int *errval);
59896static int
59897  handle_debug_aranges(Dwarf_Debug dbg, Dwarf_addr_callback_func cb_func, int *errval);
59898static int
59899  handle_debug_line(Dwarf_Debug dbg, Dwarf_Die cu_die, Dwarf_addr_callback_func cb_func, int *errval);
59900static int
59901  handle_debug_loc(void);
59902
59903
59904static Dwarf_addr_callback_func send_addr_note;
59905
59906int
59907_dwarf_addr_finder(dwarf_elf_handle elf_file_ptr,
59908		   Dwarf_addr_callback_func cb_func, int *dwerr)
59909{
59910
59911    Dwarf_Error err = 0;
59912    Dwarf_Debug dbg = 0;
59913    int res = 0;
59914    int errval = 0;
59915    int sections_found = 0;
59916
59917    res = dwarf_elf_init(elf_file_ptr, DW_DLC_READ, /* errhand */ 0,
59918			 /* errarg */ 0, &dbg, &err);
59919    if (res == DW_DLV_ERROR) {
59920	int errv = (int) dwarf_errno(err);
59921
59922	return errv;
59923    }
59924    if (res == DW_DLV_NO_ENTRY) {
59925	return res;
59926    }
59927
59928    send_addr_note = cb_func;
59929
59930    res = handle_debug_info(dbg, &errval);
59931    switch (res) {
59932    case DW_DLV_OK:
59933	++sections_found;
59934	break;
59935    case DW_DLV_NO_ENTRY:
59936
59937	break;
59938    default:
59939    case DW_DLV_ERROR:
59940	dwarf_finish(dbg, &err);
59941	*dwerr = errval;
59942	return res;
59943    }
59944
59945    res = handle_debug_aranges(dbg, cb_func, &errval);
59946    switch (res) {
59947    case DW_DLV_OK:
59948	++sections_found;
59949	break;
59950    case DW_DLV_NO_ENTRY:
59951	break;
59952    default:
59953    case DW_DLV_ERROR:
59954	dwarf_finish(dbg, &err);
59955	*dwerr = errval;
59956	return res;
59957    }
59958    res = handle_debug_frame(dbg, cb_func, &errval);
59959    switch (res) {
59960    case DW_DLV_OK:
59961	++sections_found;
59962	break;
59963    case DW_DLV_NO_ENTRY:
59964	break;
59965    default:
59966    case DW_DLV_ERROR:
59967	dwarf_finish(dbg, &err);
59968	*dwerr = errval;
59969	return res;
59970    }
59971
59972    res = handle_debug_loc();	/* does nothing */
59973    switch (res) {
59974    case DW_DLV_OK:
59975	++sections_found;
59976	break;
59977    case DW_DLV_NO_ENTRY:
59978	break;
59979    default:
59980    case DW_DLV_ERROR:
59981	/* IMPOSSIBLE : handle_debug_loc cannot return this */
59982	dwarf_finish(dbg, &err);
59983	*dwerr = errval;
59984	return res;
59985    }
59986
59987
59988
59989    *dwerr = 0;
59990    res = dwarf_finish(dbg, &err);
59991    if (res == DW_DLV_ERROR) {
59992	*dwerr = (int) dwarf_errno(err);
59993	return DW_DLV_ERROR;
59994    }
59995    if (sections_found == 0) {
59996	return DW_DLV_NO_ENTRY;
59997    }
59998    return DW_DLV_OK;
59999
60000}
60001
60002/*
60003	Return DW_DLV_OK, ERROR, or NO_ENTRY.
60004*/
60005static int
60006handle_debug_info(Dwarf_Debug dbg, int *errval)
60007{
60008    Dwarf_Unsigned nxtoff = 1;
60009    Dwarf_Unsigned hdr_length;
60010    Dwarf_Half version_stamp;
60011    Dwarf_Unsigned abbrev_offset;
60012    Dwarf_Half addr_size;
60013    Dwarf_Error err;
60014    int terminate_now = 0;
60015    int res = 0;
60016    Dwarf_Die sibdie;
60017    int sibres;
60018    int nres = DW_DLV_OK;
60019
60020
60021    for (nres = dwarf_next_cu_header(dbg, &hdr_length, &version_stamp,
60022				     &abbrev_offset,
60023				     &addr_size, &nxtoff, &err);
60024	 terminate_now == 0 && nres == DW_DLV_OK;
60025	 nres = dwarf_next_cu_header(dbg, &hdr_length, &version_stamp,
60026				     &abbrev_offset,
60027				     &addr_size, &nxtoff, &err)
60028	) {
60029
60030	Dwarf_Die curdie = 0;
60031
60032	/* try to get the compilation unit die */
60033	sibres = dwarf_siblingof(dbg, curdie, &sibdie, &err);
60034	if (sibres == DW_DLV_OK) {
60035	    res = do_this_die_and_dealloc(dbg, sibdie, errval);
60036	    switch (res) {
60037	    case DW_DLV_OK:
60038		break;
60039	    case DW_DLV_NO_ENTRY:
60040		break;
60041	    default:
60042	    case DW_DLV_ERROR:
60043		return DW_DLV_ERROR;
60044	    }
60045	} else if (sibres == DW_DLV_ERROR) {
60046	    *errval = (int) dwarf_errno(err);
60047	    return DW_DLV_ERROR;
60048	} else {
60049	    /* NO ENTRY! */
60050	    /* impossible? */
60051	}
60052
60053    }
60054    if (nres == DW_DLV_ERROR) {
60055	int localerr = (int) dwarf_errno(err);
60056
60057	*errval = localerr;
60058	return DW_DLV_ERROR;
60059    }
60060    return DW_DLV_OK;
60061}
60062
60063static int
60064  might_have_addr[] = {
60065    DW_AT_high_pc,
60066    DW_AT_low_pc,
60067};
60068static int
60069  might_have_locdesc[] = {
60070    DW_AT_segment,
60071    DW_AT_return_addr,
60072    DW_AT_frame_base,
60073    DW_AT_static_link,
60074    DW_AT_data_member_location,
60075    DW_AT_string_length,
60076    DW_AT_location,
60077    DW_AT_use_location,
60078    DW_AT_vtable_elem_location,
60079};
60080
60081/*
60082	Return DW_DLV_OK if handling this went ok.
60083*/
60084static int
60085handle_attr_addr(Dwarf_Debug dbg, Dwarf_Die die, Dwarf_Half attrnum,
60086		 Dwarf_Error * perr)
60087{
60088    int res = DW_DLV_OK;
60089    Dwarf_Off offset;
60090    Dwarf_Addr addr;
60091    Dwarf_Half form;
60092    int ares;
60093
60094    Dwarf_Attribute attr;
60095
60096    ares = dwarf_attr(die, attrnum, &attr, perr);
60097    if (ares == DW_DLV_OK) {
60098	int formres = dwarf_whatform(attr, &form, perr);
60099
60100	switch (formres) {
60101	case DW_DLV_OK:
60102	    break;
60103	case DW_DLV_ERROR:
60104	case DW_DLV_NO_ENTRY:	/* impossible. */
60105	    return formres;
60106
60107	}
60108
60109	switch (form) {
60110	case DW_FORM_ref_addr:
60111	case DW_FORM_addr:
60112	    res = dwarf_attr_offset(die, attr, &offset, perr);
60113	    if (res == DW_DLV_OK) {
60114		ares = dwarf_formaddr(attr, &addr, perr);
60115		if (ares == DW_DLV_OK) {
60116		    send_addr_note(DW_SECTION_INFO, offset, addr);
60117		} else if (ares == DW_DLV_ERROR) {
60118		    return ares;
60119		}		/* no entry: ok. */
60120	    } else {
60121		res = DW_DLV_ERROR;	/* NO_ENTRY is impossible. */
60122	    }
60123	    break;
60124
60125	default:
60126	    /* surprising! An error? */
60127
60128	    ;			/* do nothing */
60129	}
60130	dwarf_dealloc(dbg, attr, DW_DLA_ATTR);
60131
60132    } else {
60133	res = ares;
60134    }
60135    return res;
60136}
60137
60138/*
60139	Return DW_DLV_OK if handling this went ok.
60140*/
60141static int
60142handle_attr_locdesc(Dwarf_Debug dbg, Dwarf_Die die, Dwarf_Half attrnum,
60143		    Dwarf_Error * perr)
60144{
60145    int retval = DW_DLV_OK;
60146    Dwarf_Attribute attr;
60147    Dwarf_Locdesc *llbuf;
60148    Dwarf_Signed i;
60149    Dwarf_Off offset;
60150    Dwarf_Loc *locp;
60151    unsigned int entindx;
60152    int res;
60153    int ares;
60154
60155
60156    ares = dwarf_attr(die, attrnum, &attr, perr);
60157    if (ares == DW_DLV_OK) {
60158	Dwarf_Half form;
60159	int fres = dwarf_whatform(attr, &form, perr);
60160
60161	if (fres == DW_DLV_OK) {
60162	    switch (form) {
60163	    case DW_FORM_block1:
60164	    case DW_FORM_block2:
60165	    case DW_FORM_block4:
60166		/* must be location description */
60167		res = dwarf_attr_offset(die, attr, &offset, perr);
60168		llbuf = 0;
60169		if (res == DW_DLV_OK) {
60170		    Dwarf_Signed count;
60171		    int lres =
60172			dwarf_loclist(attr, &llbuf, &count, perr);
60173		    if (lres != DW_DLV_OK) {
60174			return lres;
60175		    }
60176		    if (count != 1) {
60177			/* this cannot happen! */
60178			/* perr? */
60179			_dwarf_error(dbg, perr,
60180				     DW_DLE_LOCDESC_COUNT_WRONG);
60181			retval = DW_DLV_ERROR;
60182			return retval;
60183		    }
60184		    for (i = 0; i < count; ++i) {
60185			unsigned int ents = llbuf[i].ld_cents;
60186
60187			locp = llbuf[i].ld_s;
60188			for (entindx = 0; entindx < ents; entindx++) {
60189			    Dwarf_Loc *llocp;
60190
60191			    llocp = locp + entindx;
60192			    if (llocp->lr_atom == DW_OP_addr) {
60193				send_addr_note(DW_SECTION_INFO, offset +
60194					       llocp->lr_offset + 1
60195					       /* The offset is the
60196					          offset of the atom,
60197					          ** and we know the
60198					          addr is 1 past it. */
60199					       , llocp->lr_number);
60200			    }
60201			}
60202		    }
60203
60204
60205		    if (count > 0) {
60206			for (i = 0; i < count; ++i) {
60207			    dwarf_dealloc(dbg, llbuf[i].ld_s,
60208					  DW_DLA_LOC_BLOCK);
60209			}
60210			dwarf_dealloc(dbg, llbuf, DW_DLA_LOCDESC);
60211		    }
60212		} else {
60213		    retval = res;
60214		}
60215		break;
60216
60217	    default:
60218		/* must be a const offset in debug_loc */
60219		;		/* do nothing */
60220	    }
60221	    dwarf_dealloc(dbg, attr, DW_DLA_ATTR);
60222	}			/* else error or no entry */
60223	retval = fres;
60224    } else {
60225	retval = ares;
60226    }
60227    return retval;
60228}
60229
60230/*
60231  Return DW_DLV_OK, or DW_DLV_ERROR
60232
60233  Handle the addrs in a single die.
60234*/
60235static int
60236process_this_die_attrs(Dwarf_Debug dbg, Dwarf_Die newdie, int *errval)
60237{
60238    Dwarf_Error err;
60239    Dwarf_Half i;
60240    Dwarf_Half newattrnum;
60241    int res;
60242    int tres;
60243    Dwarf_Half ltag;
60244
60245    Dwarf_Off doff;
60246    int doffres = dwarf_dieoffset(newdie, &doff, &err);
60247
60248    if (doffres != DW_DLV_OK) {
60249	if (doffres == DW_DLV_ERROR) {
60250	    *errval = (int) dwarf_errno(err);
60251	}
60252	return doffres;
60253    }
60254    tres = dwarf_tag(newdie, &ltag, &err);
60255    if (tres != DW_DLV_OK) {
60256	return tres;
60257    }
60258    if (DW_TAG_compile_unit == ltag) {
60259	/* because of the way the dwarf_line code works, we ** do lines
60260	   only per compile unit. ** This may turn out to be wrong if
60261	   we have lines ** left unconnected to a CU. ** of course such
60262	   lines will not, at present, be ** used by gnome ** This is
60263	   not ideal as coded due to the dwarf_line.c issue. */
60264	int lres;
60265
60266	lres = handle_debug_line(dbg, newdie, send_addr_note, errval);
60267	if (lres == DW_DLV_ERROR) {
60268	    return lres;
60269	}
60270    }
60271
60272    for (i = 0; i < sizeof(might_have_addr) / sizeof(int); i++) {
60273	int resattr;
60274	Dwarf_Bool hasattr;
60275
60276	newattrnum = might_have_addr[i];
60277	err = 0;
60278	resattr = dwarf_hasattr(newdie, newattrnum, &hasattr, &err);
60279	if (DW_DLV_OK == resattr) {
60280	    if (hasattr) {
60281		res = handle_attr_addr(dbg, newdie, newattrnum, &err);
60282		if (res != DW_DLV_OK) {
60283		    *errval = (int) dwarf_errno(err);
60284		    return DW_DLV_ERROR;
60285		}
60286	    }
60287	} else {
60288	    if (resattr == DW_DLV_ERROR) {
60289		*errval = (int) dwarf_errno(err);
60290		return resattr;
60291	    }
60292	}
60293    }
60294    for (i = 0; i < sizeof(might_have_locdesc) / sizeof(int); i++) {
60295	int resattr;
60296	Dwarf_Bool hasattr;
60297
60298	newattrnum = might_have_locdesc[i];
60299	err = 0;
60300	resattr = dwarf_hasattr(newdie, newattrnum, &hasattr, &err);
60301	if (DW_DLV_OK == resattr) {
60302	    if (hasattr) {
60303		res =
60304		    handle_attr_locdesc(dbg, newdie, newattrnum, &err);
60305		if (res != DW_DLV_OK) {
60306		    *errval = (int) dwarf_errno(err);
60307		    return DW_DLV_ERROR;
60308		}
60309	    }
60310	} else {
60311	    if (resattr == DW_DLV_ERROR) {
60312		*errval = (int) dwarf_errno(err);
60313		return resattr;
60314	    }
60315	}
60316    }
60317
60318    return DW_DLV_OK;
60319}
60320
60321/*
60322	Handle siblings as a list,
60323	Do children by recursing.
60324	Effectively this is walking the tree preorder.
60325
60326	This dealloc's any die passed to it, so the
60327	caller should not do that dealloc.
60328	It seems more logical to have the one causing
60329	the alloc to do the dealloc, but that way this
60330	routine became a mess.
60331
60332*/
60333static int
60334do_this_die_and_dealloc(Dwarf_Debug dbg, Dwarf_Die die, int *errval)
60335{
60336
60337    Dwarf_Die prevdie = 0;
60338    Dwarf_Die newdie = die;
60339    Dwarf_Error err = 0;
60340    int res = 0;
60341    int sibres = DW_DLV_OK;
60342    int tres = DW_DLV_OK;
60343    Dwarf_Die sibdie;
60344
60345    while (sibres == DW_DLV_OK) {
60346	Dwarf_Die ch_die;
60347
60348
60349	res = process_this_die_attrs(dbg, newdie, errval);
60350	switch (res) {
60351	case DW_DLV_OK:
60352	    break;
60353	case DW_DLV_NO_ENTRY:
60354	    break;
60355	default:
60356	case DW_DLV_ERROR:
60357	    if (prevdie) {
60358		dwarf_dealloc(dbg, prevdie, DW_DLA_DIE);
60359		prevdie = 0;
60360	    }
60361	    return DW_DLV_ERROR;
60362	}
60363
60364	tres = dwarf_child(newdie, &ch_die, &err);
60365
60366	if (tres == DW_DLV_OK) {
60367	    res = do_this_die_and_dealloc(dbg, ch_die, errval);
60368	    switch (res) {
60369	    case DW_DLV_OK:
60370		break;
60371	    case DW_DLV_NO_ENTRY:
60372		break;
60373	    default:
60374	    case DW_DLV_ERROR:
60375		if (prevdie) {
60376		    dwarf_dealloc(dbg, prevdie, DW_DLA_DIE);
60377		    prevdie = 0;
60378		}
60379		return DW_DLV_ERROR;
60380	    }
60381	} else if (tres == DW_DLV_ERROR) {
60382	    /* An error! */
60383	    *errval = (int) dwarf_errno(err);
60384	    if (prevdie) {
60385		dwarf_dealloc(dbg, prevdie, DW_DLA_DIE);
60386		prevdie = 0;
60387	    }
60388	    dwarf_dealloc(dbg, err, DW_DLA_ERROR);
60389	    return DW_DLV_ERROR;
60390	}			/* else was NO ENTRY */
60391	prevdie = newdie;
60392	sibdie = 0;
60393	sibres = dwarf_siblingof(dbg, newdie, &sibdie, &err);
60394	if (prevdie) {
60395	    dwarf_dealloc(dbg, prevdie, DW_DLA_DIE);
60396	    prevdie = 0;
60397	}
60398	newdie = sibdie;
60399
60400    }
60401    if (sibres == DW_DLV_NO_ENTRY) {
60402	return DW_DLV_OK;
60403    }
60404    /* error. */
60405    *errval = (int) dwarf_errno(err);
60406    if (prevdie) {
60407	dwarf_dealloc(dbg, prevdie, DW_DLA_DIE);
60408	prevdie = 0;
60409    }
60410    dwarf_dealloc(dbg, err, DW_DLA_ERROR);
60411    return DW_DLV_ERROR;
60412
60413}
60414
60415
60416static int
60417handle_debug_frame(Dwarf_Debug dbg, Dwarf_addr_callback_func cb_func,
60418		   int *errval)
60419{
60420    int retval = DW_DLV_OK;
60421    int res;
60422    Dwarf_Error err;
60423    Dwarf_Addr *addrlist;
60424    Dwarf_Off *offsetlist;
60425    Dwarf_Signed count;
60426    int i;
60427
60428    res =
60429	_dwarf_frame_address_offsets(dbg, &addrlist, &offsetlist,
60430				     &count, &err);
60431    if (res == DW_DLV_OK) {
60432	for (i = 0; i < count; i++) {
60433	    cb_func(DW_SECTION_FRAME, offsetlist[i], addrlist[i]);
60434	}
60435	dwarf_dealloc(dbg, offsetlist, DW_DLA_ADDR);
60436	dwarf_dealloc(dbg, addrlist, DW_DLA_ADDR);
60437    } else if (res == DW_DLV_NO_ENTRY) {
60438	retval = res;
60439    } else {
60440	*errval = (int) dwarf_errno(err);
60441	retval = DW_DLV_ERROR;
60442    }
60443    return retval;
60444
60445}
60446static int
60447handle_debug_aranges(Dwarf_Debug dbg, Dwarf_addr_callback_func cb_func,
60448		     int *errval)
60449{
60450    int retval = DW_DLV_OK;
60451    Dwarf_Error err;
60452    Dwarf_Addr *aranges;
60453    Dwarf_Signed count;
60454    int indx;
60455    Dwarf_Off *offsets;
60456
60457    retval =
60458	_dwarf_get_aranges_addr_offsets(dbg, &aranges, &offsets, &count,
60459					&err);
60460    if (retval == DW_DLV_OK) {
60461	if (count == 0) {
60462	    retval = DW_DLV_NO_ENTRY;
60463	} else {
60464	    for (indx = 0; indx < count; indx++) {
60465		cb_func(DW_SECTION_ARANGES, offsets[indx],
60466			aranges[indx]);
60467	    }
60468	}
60469	dwarf_dealloc(dbg, aranges, DW_DLA_ADDR);
60470	dwarf_dealloc(dbg, offsets, DW_DLA_ADDR);
60471    } else if (retval == DW_DLV_NO_ENTRY) {
60472	;			/* do nothing */
60473    } else {
60474	*errval = (int) dwarf_errno(err);
60475	retval = DW_DLV_ERROR;
60476    }
60477    return retval;
60478}
60479static int
60480handle_debug_line(Dwarf_Debug dbg, Dwarf_Die cu_die,
60481		  Dwarf_addr_callback_func cb_func, int *errval)
60482{
60483    int retval = DW_DLV_OK;
60484    int res;
60485    Dwarf_Error err;
60486    Dwarf_Addr *addrlist;
60487    Dwarf_Off *offsetlist;
60488    Dwarf_Unsigned count;
60489    Dwarf_Unsigned i;
60490
60491    res =
60492	_dwarf_line_address_offsets(dbg, cu_die, &addrlist, &offsetlist,
60493				    &count, &err);
60494    if (res == DW_DLV_OK) {
60495	for (i = 0; i < count; i++) {
60496	    cb_func(DW_SECTION_LINE, offsetlist[i], addrlist[i]);
60497
60498	}
60499	dwarf_dealloc(dbg, offsetlist, DW_DLA_ADDR);
60500	dwarf_dealloc(dbg, addrlist, DW_DLA_ADDR);
60501    } else if (res == DW_DLV_NO_ENTRY) {
60502	retval = res;
60503    } else {
60504	*errval = (int) dwarf_errno(err);
60505	retval = DW_DLV_ERROR;
60506    }
60507    return retval;
60508}
60509
60510/*
60511	We need to add support for this. Currently we do not
60512	generate this section.
60513	FIX!
60514*/
60515static int
60516handle_debug_loc(void)
60517{
60518    int retval = DW_DLV_NO_ENTRY;
60519
60520    return retval;
60521}
60522��0707010001ad620000812400011e740000000a0000000140206828000080cb000000660000000000000000000000000000001700000000libdwarf/dwarf_alloc.c����/*
60523
60524  Copyright (C) 2000,2002,2004 Silicon Graphics, Inc.  All Rights Reserved.
60525
60526  This program is free software; you can redistribute it and/or modify it
60527  under the terms of version 2.1 of the GNU Lesser General Public License
60528  as published by the Free Software Foundation.
60529
60530  This program is distributed in the hope that it would be useful, but
60531  WITHOUT ANY WARRANTY; without even the implied warranty of
60532  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
60533
60534  Further, this software is distributed without any warranty that it is
60535  free of the rightful claim of any third person regarding infringement
60536  or the like.  Any license provided herein, whether implied or
60537  otherwise, applies only to this software file.  Patent licenses, if
60538  any, provided herein do not apply to combinations of this program with
60539  other software, or any other product whatsoever.
60540
60541  You should have received a copy of the GNU Lesser General Public
60542  License along with this program; if not, write the Free Software
60543  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
60544  USA.
60545
60546  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
60547  Mountain View, CA 94043, or:
60548
60549  http://www.sgi.com
60550
60551  For further information regarding this notice, see:
60552
60553  http://oss.sgi.com/projects/GenInfo/NoticeExplan
60554
60555*/
60556
60557
60558
60559#include "config.h"
60560#include "dwarf_incl.h"
60561#include <sys/types.h>
60562
60563#include <stdlib.h>
60564#include <stdio.h>
60565#include <malloc.h>
60566
60567/*
60568    These files are included to get the sizes
60569    of structs to set the ah_bytes_one_struct field
60570    of the Dwarf_Alloc_Hdr_s structs for each
60571    allocation type.
60572*/
60573#include "dwarf_line.h"
60574#include "dwarf_global.h"
60575#include "dwarf_arange.h"
60576#include "dwarf_abbrev.h"
60577#include "dwarf_die_deliv.h"
60578#include "dwarf_frame.h"
60579#include "dwarf_loc.h"
60580#include "dwarf_funcs.h"
60581#include "dwarf_types.h"
60582#include "dwarf_vars.h"
60583#include "dwarf_weaks.h"
60584
60585static void _dwarf_free_special_error(Dwarf_Ptr space);
60586#ifdef DWARF_SIMPLE_MALLOC
60587static void _dwarf_simple_malloc_add_to_list(Dwarf_Debug dbg,
60588		Dwarf_Ptr addr,
60589		unsigned long size,
60590        	short alloc_type);
60591static void _dwarf_simple_malloc_delete_from_list(Dwarf_Debug dbg,
60592		Dwarf_Ptr space,
60593		short alloc_type);
60594void _dwarf_simple_malloc_botch(int err);
60595
60596#endif /* DWARF_SIMPLE_MALLOC */
60597
60598
60599
60600
60601/*
60602    This macro adds the size of a pointer to the size of a
60603    struct that is given to it.  It rounds up the size to
60604    be a multiple of the size of a pointer.  This is done
60605    so that every struct returned by _dwarf_get_alloc()
60606    can be preceded by a pointer to the chunk it came from.
60607    Before, it checks if the size of struct is less than
60608    the size of a pointer.  If yes, it returns the size
60609    of 2 pointers.  The returned size should be at least
60610    the size of 2 pointers, since the first points to the
60611    chunk the struct was allocated from, and the second
60612    is used to link the free list.
60613
60614    If this is n32, we want the sizes to be 64-bit aligned
60615    so that longlong in the structure we return to user
60616    is aligned properly. Thus the _dw_fac of 2
60617
60618    Only long longs need to be properly aligned: we don't
60619    have long double and don't align for that.
60620
60621*/
60622#if _MIPS_SIM == _MIPS_SIM_NABI32
60623#define _DW_FAC 2
60624#define _DW_PS sizeof(void *)
60625#else
60626#define _DW_FAC 1
60627#define _DW_PS sizeof(void *)
60628#endif
60629#define _DW_RESERVE (_DW_FAC * _DW_PS)
60630
60631/* Round size up to the next multiple of _DW_RESERVE bytes
60632*/
60633#define ROUND_SIZE(inputsize)                 \
60634        (((inputsize) % (_DW_RESERVE)) == 0 ? \
60635            (inputsize):                      \
60636            ((inputsize)  +                   \
60637               (_DW_RESERVE) - ((inputsize) % (_DW_RESERVE)) ))
60638
60639#define ROUND_SIZE_WITH_POINTER(i_size) (ROUND_SIZE(i_size) + _DW_RESERVE)
60640#define BASE_ALLOC 64
60641#define BIG_ALLOC  128
60642
60643/* This translates into de_alloc_hdr index
60644** the 0,1,1 entries are special: they don't use the
60645** table values at all.
60646** Rearranging the DW_DLA values would break binary compatibility
60647** so that is not an option.
60648*/
60649struct ial_s {
60650    int ia_al_num;		/* Index into de_alloc_hdr table. */
60651
60652    /* In bytes, one struct instance. This does not account for extra
60653       space needed per block, but that (_DW_RESERVE) will be added in
60654       later where it is needed (_DW_RESERVE space never added in
60655       here). */
60656    int ia_struct_size;
60657
60658
60659    /* Number of instances per alloc block. MUST be > 0. */
60660    int ia_base_count;
60661};
60662
60663static const
60664struct ial_s index_into_allocated[ALLOC_AREA_INDEX_TABLE_MAX] = {
60665    {0, 1, 1},			/* none */
60666    {0, 1, 1,},			/* 1 DW_DLA_STRING */
60667    {1, sizeof(Dwarf_Loc), BASE_ALLOC}
60668    ,				/* 2 DW_DLA_LOC */
60669    {2, sizeof(Dwarf_Locdesc), BASE_ALLOC}
60670    ,				/* 3 DW_DLA_LOCDESC */
60671    {0, 1, 1}
60672    ,				/* not used *//* 4 DW_DLA_ELLIST */
60673    {0, 1, 1}
60674    ,				/* not used *//* 5 DW_DLA_BOUNDS */
60675    {3, sizeof(Dwarf_Block), BASE_ALLOC}
60676    ,				/* 6 DW_DLA_BLOCK */
60677    {0, 1, 1}
60678    ,				/* the actual dwarf_debug structure *//* 7 DW_DLA_DEBUG */
60679    {4, sizeof(struct Dwarf_Die_s), BIG_ALLOC},	/* 8 DW_DLA_DIE */
60680    {5, sizeof(struct Dwarf_Line_s), BIG_ALLOC},	/* 9
60681							   DW_DLA_LINE */
60682    {6, sizeof(struct Dwarf_Attribute_s), BIG_ALLOC * 2},
60683    /* 10 DW_DLA_ATTR */
60684    {0, 1, 1},			/* not used *//* 11 DW_DLA_TYPE */
60685    {0, 1, 1},			/* not used *//* 12 DW_DLA_SUBSCR */
60686    {7, sizeof(struct Dwarf_Global_s), BIG_ALLOC},	/* 13
60687							   DW_DLA_GLOBAL
60688							 */
60689    {8, sizeof(struct Dwarf_Error_s), BASE_ALLOC},	/* 14
60690							   DW_DLA_ERROR
60691							 */
60692    {0, 1, 1},			/* 15 DW_DLA_LIST */
60693    {0, 1, 1},			/* not used *//* 16 DW_DLA_LINEBUF */
60694    {9, sizeof(struct Dwarf_Arange_s), BASE_ALLOC},	/* 17
60695							   DW_DLA_ARANGE
60696							 */
60697    {10, sizeof(struct Dwarf_Abbrev_s), BIG_ALLOC},	/* 18
60698							   DW_DLA_ABBREV
60699							 */
60700    {11, sizeof(Dwarf_Frame_Op), BIG_ALLOC}
60701    ,				/* 19 DW_DLA_FRAME_OP */
60702    {12, sizeof(struct Dwarf_Cie_s), BASE_ALLOC},	/* 20
60703							   DW_DLA_CIE */
60704    {13, sizeof(struct Dwarf_Fde_s), BASE_ALLOC},	/* 21
60705							   DW_DLA_FDE */
60706    {0, 1, 1},			/* 22 DW_DLA_LOC_BLOCK */
60707    {0, 1, 1},			/* 23 DW_DLA_FRAME_BLOCK */
60708    {14, sizeof(struct Dwarf_Global_s), BIG_ALLOC},	/* 24
60709							   DW_DLA_FUNC */
60710    {15, sizeof(struct Dwarf_Global_s), BIG_ALLOC},	/* 25
60711							   DW_DLA_TYPENAME
60712							 */
60713    {16, sizeof(struct Dwarf_Global_s), BIG_ALLOC},	/* 26
60714							   DW_DLA_VAR */
60715    {17, sizeof(struct Dwarf_Global_s), BASE_ALLOC},	/* 27
60716							   DW_DLA_WEAK */
60717    {0, 1, 1},			/* 28 DW_DLA_ADDR */
60718    {18, sizeof(struct Dwarf_Abbrev_List_s), BIG_ALLOC},
60719    /* 29 DW_DLA_ABBREV_LIST */
60720    {19, sizeof(struct Dwarf_Chain_s), BIG_ALLOC},	/* 30
60721							   DW_DLA_CHAIN
60722							 */
60723    {20, sizeof(struct Dwarf_CU_Context_s), BASE_ALLOC},
60724    /* 31 DW_DLA_CU_CONTEXT */
60725    {21, sizeof(struct Dwarf_Frame_s), BASE_ALLOC},	/* 32
60726							   DW_DLA_FRAME
60727							 */
60728    {22, sizeof(struct Dwarf_Global_Context_s), BASE_ALLOC},
60729    /* 33 DW_DLA_GLOBAL_CONTEXT */
60730    {23, sizeof(struct Dwarf_File_Entry_s), BASE_ALLOC},
60731    /* 34 DW_DLA_FILE_ENTRY */
60732    {24, sizeof(struct Dwarf_Line_Context_s), BASE_ALLOC},
60733    /* 35 DW_DLA_LINE_CONTEXT */
60734    {25, sizeof(struct Dwarf_Loc_Chain_s), BASE_ALLOC},
60735    /* 36 DW_DLA_LOC_CHAIN */
60736    {26, ABBREV_HASH_TABLE_SIZE * 2 * sizeof(Dwarf_Abbrev_List),
60737     BASE_ALLOC}
60738    ,
60739    /* 37 DW_DLA_HASH_TABLE */
60740
60741/* The following really use Global struct: used to be unique struct
60742   per type, but now merged (11/99).  The opaque types
60743   are visible in the interface. The types are left in existence,
60744   with unchanged numbers.
60745*/
60746    {27, sizeof(struct Dwarf_Global_Context_s), BASE_ALLOC},
60747    /* 38 DW_DLA_FUNC_CONTEXT */
60748    {28, sizeof(struct Dwarf_Global_Context_s), BASE_ALLOC},
60749    /* 39 DW_DLA_TYPENAME_CONTEXT */
60750    {29, sizeof(struct Dwarf_Global_Context_s), BASE_ALLOC},
60751    /* 40 DW_DLA_VAR_CONTEXT */
60752    {30, sizeof(struct Dwarf_Global_Context_s), BASE_ALLOC},
60753    /* 41 DW_DLA_WEAK_CONTEXT */
60754};
60755
60756#ifndef DWARF_SIMPLE_MALLOC
60757
60758/*
60759    This function is given a pointer to the header
60760    structure that is used to allocate 1 struct of
60761    the type given by alloc_type.  It first checks
60762    if a struct is available in its free list.  If
60763    not, it checks if 1 is available in its blob,
60764    which is a chunk of memory that is reserved for
60765    its use.  If not, it malloc's a chunk.  The
60766    initial part of it is used to store the end
60767    address of the chunk, and also to keep track
60768    of the number of free structs in that chunk.
60769    This information is used for freeing the chunk
60770    when all the structs in it are free.
60771
60772    Assume all input arguments have been validated.
60773
60774    This function can be used only to allocate 1
60775    struct of the given type.
60776
60777    It returns a pointer to the struct that the
60778    user can use.  It returns NULL only when it
60779    is out of free structs, and cannot malloc
60780    any more.  The struct returned is zero-ed.
60781
60782    A pointer to the chunk that the struct belongs
60783    to is stored in the bytes preceding the
60784    returned address.  Since this pointer it
60785    never overwritten, when a struct is allocated
60786    from the free_list this pointer does not
60787    have to be written.  In the 2 other cases,
60788    where the struct is allocated from a new
60789    chunk, or the blob, a pointer to the chunk
60790    is written.
60791*/
60792static Dwarf_Ptr
60793_dwarf_find_memory(Dwarf_Alloc_Hdr alloc_hdr)
60794{
60795    /* Pointer to the struct allocated. */
60796    Dwarf_Small *ret_mem = 0;
60797
60798    /* Pointer to info about chunks allocated. */
60799    Dwarf_Alloc_Area alloc_area;
60800
60801    /* Size of chunk malloc'ed when no free structs left. */
60802    Dwarf_Signed mem_block_size;
60803
60804    /* Pointer to block malloc'ed. */
60805    Dwarf_Small *mem_block;
60806
60807    /*
60808       Check the alloc_area from which the last allocation was made
60809       (most recent new block). If that is not successful, then
60810       search the list of alloc_area's from alloc_header. */
60811    alloc_area = alloc_hdr->ah_last_alloc_area;
60812    if (alloc_area == NULL || alloc_area->aa_free_structs_in_chunk == 0)
60813	for (alloc_area = alloc_hdr->ah_alloc_area_head;
60814	     alloc_area != NULL; alloc_area = alloc_area->aa_next) {
60815
60816	    if (alloc_area->aa_free_structs_in_chunk > 0) {
60817		break;		/* found a free entry! */
60818	    }
60819
60820	}
60821
60822    if (alloc_area != NULL) {
60823	alloc_area->aa_free_structs_in_chunk--;
60824
60825	if (alloc_area->aa_free_list != NULL) {
60826	    ret_mem = alloc_area->aa_free_list;
60827
60828	    /*
60829	       Update the free list.  The initial part of the struct is
60830	       used to hold a pointer to the next struct on the free
60831	       list.  In this way, the free list chain is maintained at
60832	       0 memory cost. */
60833	    alloc_area->aa_free_list =
60834		((Dwarf_Free_List) ret_mem)->fl_next;
60835	} else if (alloc_area->aa_blob_start < alloc_area->aa_blob_end) {
60836	    ret_mem = alloc_area->aa_blob_start;
60837
60838	    /*
60839	       Store pointer to chunk this struct belongs to in the
60840	       first few bytes.  Return pointer to bytes after this
60841	       pointer storage. */
60842	    *(Dwarf_Alloc_Area *) ret_mem = alloc_area;
60843	    ret_mem += _DW_RESERVE;
60844
60845	    alloc_area->aa_blob_start += alloc_hdr->ah_bytes_one_struct;
60846	} else {
60847	    /* else fall thru , though it should be impossible to fall
60848	       thru. And represents a disastrous programming error if
60849	       we get here. */
60850#ifdef DEBUG
60851	    fprintf(stderr, "libdwarf Internal error start %x end %x\n",
60852		    (int) alloc_area->aa_blob_start,
60853		    (int) alloc_area->aa_blob_end);
60854#endif
60855	}
60856    }
60857
60858    /* New memory has to malloc'ed since there are no free structs. */
60859    if (ret_mem == 0) {
60860	Dwarf_Word rounded_area_hdr_size;
60861
60862	alloc_hdr->ah_chunks_allocated++;
60863
60864	{			/* this nonsense avoids a warning */
60865	    /* CONSTCOND would be better */
60866	    unsigned long v = sizeof(struct Dwarf_Alloc_Area_s);
60867
60868	    rounded_area_hdr_size = ROUND_SIZE(v);
60869	}
60870
60871	/*
60872	   Allocate memory to contain the required number of structs
60873	   and the Dwarf_Alloc_Area_s to control it. */
60874	mem_block_size = alloc_hdr->ah_bytes_malloc_per_chunk +
60875	    rounded_area_hdr_size;
60876
60877	mem_block = malloc(mem_block_size);
60878	if (mem_block == NULL) {
60879	    return (NULL);
60880	}
60881
60882
60883	/*
60884	   Attach the Dwarf_Alloc_Area_s struct to the list of chunks
60885	   malloc'ed for this struct type. Also initialize the fields
60886	   of the Dwarf_Alloc_Area_s. */
60887	alloc_area = (Dwarf_Alloc_Area) mem_block;
60888	alloc_area->aa_prev = 0;
60889	if (alloc_hdr->ah_alloc_area_head != NULL) {
60890	    alloc_hdr->ah_alloc_area_head->aa_prev = alloc_area;
60891	}
60892	alloc_area->aa_free_list = 0;
60893	alloc_area->aa_next = alloc_hdr->ah_alloc_area_head;
60894	alloc_hdr->ah_alloc_area_head = alloc_area;
60895
60896	alloc_area->aa_alloc_hdr = alloc_hdr;
60897	alloc_area->aa_free_structs_in_chunk =
60898	    (Dwarf_Sword) alloc_hdr->ah_structs_per_chunk - 1;
60899	if (alloc_area->aa_free_structs_in_chunk < 1) {
60900	    /* If we get here, there is a disastrous programming error
60901	       somewhere. */
60902#ifdef DEBUG
60903	    fprintf(stderr,
60904		    "libdwarf Internal error: free structs in chunk %d\n",
60905		    (int) alloc_area->aa_free_structs_in_chunk);
60906#endif
60907	    return NULL;
60908	}
60909
60910	/*
60911	   The struct returned begins immediately after the
60912	   Dwarf_Alloc_Area_s struct. */
60913	ret_mem = mem_block + rounded_area_hdr_size;
60914	alloc_area->aa_blob_start =
60915	    ret_mem + alloc_hdr->ah_bytes_one_struct;
60916	alloc_area->aa_blob_end = mem_block + mem_block_size;
60917
60918	/*
60919	   Store pointer to chunk this struct belongs to in the first
60920	   few bytes.  Return pointer to bytes after this pointer
60921	   storage. */
60922	*(Dwarf_Alloc_Area *) ret_mem = alloc_area;
60923	ret_mem += _DW_RESERVE;
60924    }
60925
60926    alloc_hdr->ah_last_alloc_area = alloc_area;
60927    alloc_hdr->ah_struct_user_holds++;
60928    memset(ret_mem,0, alloc_hdr->ah_bytes_one_struct - _DW_RESERVE);
60929    return (ret_mem);
60930}
60931
60932#endif /* ndef DWARF_SIMPLE_MALLOC */
60933
60934/*
60935    This function returns a pointer to a region
60936    of memory.  For alloc_types that are not
60937    strings or lists of pointers, only 1 struct
60938    can be requested at a time.  This is indicated
60939    by an input count of 1.  For strings, count
60940    equals the length of the string it will
60941    contain, i.e it the length of the string
60942    plus 1 for the terminating null.  For lists
60943    of pointers, count is equal to the number of
60944    pointers.  For DW_DLA_FRAME_BLOCK, and
60945    DW_DLA_LOC_BLOCK allocation types also, count
60946    is the count of the number of structs needed.
60947
60948    This function cannot be used to allocate a
60949    Dwarf_Debug_s struct.
60950*/
60951Dwarf_Ptr
60952_dwarf_get_alloc(Dwarf_Debug dbg,
60953		 Dwarf_Small alloc_type, Dwarf_Unsigned count)
60954{
60955    Dwarf_Alloc_Hdr alloc_hdr;
60956
60957    Dwarf_Ptr ret_mem;
60958
60959    Dwarf_Signed size = 0;
60960    unsigned int index;
60961    unsigned int type = alloc_type;
60962
60963    if (dbg == NULL) {
60964	return (NULL);
60965    }
60966
60967    if (type >= ALLOC_AREA_INDEX_TABLE_MAX) {
60968	/* internal error */
60969	return NULL;
60970    }
60971    index = index_into_allocated[type].ia_al_num;
60972    /* zero also illegal but not tested for */
60973
60974    /* If the Dwarf_Debug is not fully set up, we will get index 0 for
60975       any type and must do something.  'Not fully set up' can only
60976       happen for DW_DLA_ERROR, I (davea) believe, and for that we call
60977       special code here.. */
60978
60979    if (index == 0) {
60980	if (alloc_type == DW_DLA_STRING) {
60981	    size = count;
60982	} else if (alloc_type == DW_DLA_LIST) {
60983	    size = count * sizeof(Dwarf_Ptr);
60984	} else if (alloc_type == DW_DLA_FRAME_BLOCK) {
60985	    size = count * sizeof(Dwarf_Frame_Op);
60986	} else if (alloc_type == DW_DLA_LOC_BLOCK) {
60987	    size = count * sizeof(Dwarf_Loc);
60988	} else if (alloc_type == DW_DLA_ADDR) {
60989	    size = count *
60990		(sizeof(Dwarf_Addr) > sizeof(Dwarf_Off) ?
60991		 sizeof(Dwarf_Addr) : sizeof(Dwarf_Off));
60992	} else if (alloc_type == DW_DLA_ERROR) {
60993	    return _dwarf_special_no_dbg_error_malloc();
60994	} else {
60995	    /* If we get here, there is a disastrous programming error
60996	       somewhere. */
60997#ifdef DEBUG
60998	    fprintf(stderr,
60999		    "libdwarf Internal error: type %d  unexpected\n",
61000		    (int) type);
61001#endif
61002	}
61003    } else {
61004	alloc_hdr = &dbg->de_alloc_hdr[index];
61005	if (alloc_hdr->ah_bytes_one_struct > 0) {
61006#ifdef DWARF_SIMPLE_MALLOC
61007	    size = alloc_hdr->ah_bytes_one_struct;
61008#else
61009	    return (_dwarf_find_memory(alloc_hdr));
61010#endif
61011
61012	} else {
61013	    /* Special case: should not really happen at all. */
61014	    if (type == DW_DLA_ERROR) {
61015		/* dwarf_init failure. Because dbg is incomplete we
61016		   won't use it to record the malloc. */
61017		return _dwarf_special_no_dbg_error_malloc();
61018	    } else {
61019		/* If we get here, there is a disastrous programming
61020		   error somewhere. */
61021#ifdef DWARF_SIMPLE_MALLOC
61022		_dwarf_simple_malloc_botch(3);
61023#endif
61024#ifdef DEBUG
61025		fprintf(stderr,
61026			"libdwarf Internal error: Type %d  unexpected\n",
61027			(int) type);
61028#endif
61029	    }
61030	}
61031    }
61032
61033    ret_mem = malloc(size);
61034#ifdef DWARF_SIMPLE_MALLOC
61035    _dwarf_simple_malloc_add_to_list(dbg,ret_mem,(unsigned long)size,
61036		alloc_type);
61037#endif
61038    if (ret_mem != NULL)
61039	memset(ret_mem,0, size);
61040
61041    return (ret_mem);
61042}
61043
61044
61045/*
61046    This function is used to deallocate a region of memory
61047    that was obtained by a call to _dwarf_get_alloc.  Note
61048    that though dwarf_dealloc() is a public function,
61049    _dwarf_get_alloc() isn't.
61050
61051    For lists, typically arrays of pointers, it is assumed
61052    that the space was allocated by a direct call to malloc,
61053    and so a straight free() is done.  This is also the case
61054    for variable length blocks such as DW_DLA_FRAME_BLOCK
61055    and DW_DLA_LOC_BLOCK.
61056
61057    For strings, the pointer might point to a string in
61058    .debug_info or .debug_string.  After this is checked,
61059    and if found not to be the case, a free() is done,
61060    again on the assumption that a malloc was used to
61061    obtain the space.
61062
61063    For other types of structs, a pointer to the chunk that
61064    the struct was allocated out of, is present in the bytes
61065    preceding the pointer passed in.  For this chunk it is
61066    checked whether all the structs in that chunk are now free.
61067    If so, the entire chunk is free_ed.  Otherwise, the space
61068    is added to the free list for that chunk, and the free count
61069    incremented.
61070
61071    This function does not return anything.
61072*/
61073void
61074dwarf_dealloc(Dwarf_Debug dbg,
61075	      Dwarf_Ptr space, Dwarf_Unsigned alloc_type)
61076{
61077    Dwarf_Alloc_Hdr alloc_hdr;
61078    Dwarf_Alloc_Area alloc_area;
61079    unsigned int type = alloc_type;
61080    unsigned int index;
61081
61082    if (space == NULL) {
61083	return;
61084    }
61085    if (alloc_type == DW_DLA_ERROR) {
61086	/* Get pointer to Dwarf_Alloc_Area this struct came from. See
61087	   dwarf_alloc.h ROUND_SIZE_WITH_POINTER stuff */
61088	alloc_area =
61089	    *(Dwarf_Alloc_Area *) ((char *) space - _DW_RESERVE);
61090	if (alloc_area == 0) {
61091	    /* This is the special case of a failed dwarf_init(). Also
61092	       (and more signficantly) there are a variety of other
61093	       situations where libdwarf does not *know* what dbg is
61094	       involved (because of a libdwarf-caller-error) so
61095	       libdwarf uses NULL as the dbg. Those too wind up here. */
61096	    _dwarf_free_special_error(space);
61097	    return;
61098	}
61099
61100    }
61101    if (dbg == NULL) {
61102	/* App error, or an app that failed to succeed in a
61103	   dwarf_init() call. */
61104	return;
61105    }
61106    if (type >= ALLOC_AREA_INDEX_TABLE_MAX) {
61107	/* internal or user app error */
61108	return;
61109    }
61110
61111    index = index_into_allocated[alloc_type].ia_al_num;
61112    /*
61113       A string pointer may point into .debug_info or .debug_string.
61114       Otherwise, they are directly malloc'ed. */
61115    if (index == 0) {
61116	if (alloc_type == DW_DLA_STRING) {
61117	    if ((Dwarf_Small *) space >= dbg->de_debug_info &&
61118		(Dwarf_Small *) space <
61119		dbg->de_debug_info + dbg->de_debug_info_size)
61120		return;
61121
61122	    if (dbg->de_debug_line != NULL &&
61123		(Dwarf_Small *) space >= dbg->de_debug_line &&
61124		(Dwarf_Small *) space <
61125		dbg->de_debug_line + dbg->de_debug_line_size)
61126		return;
61127
61128	    if (dbg->de_debug_pubnames != NULL &&
61129		(Dwarf_Small *) space >= dbg->de_debug_pubnames &&
61130		(Dwarf_Small *) space <
61131		dbg->de_debug_pubnames + dbg->de_debug_pubnames_size)
61132		return;
61133
61134	    if (dbg->de_debug_frame != NULL &&
61135		(Dwarf_Small *) space >= dbg->de_debug_frame &&
61136		(Dwarf_Small *) space <
61137		dbg->de_debug_frame + dbg->de_debug_frame_size)
61138		return;
61139
61140	    if (dbg->de_debug_str != NULL &&
61141		(Dwarf_Small *) space >= dbg->de_debug_str &&
61142		(Dwarf_Small *) space <
61143		dbg->de_debug_str + dbg->de_debug_str_size)
61144		return;
61145
61146	    if (dbg->de_debug_funcnames != NULL &&
61147		(Dwarf_Small *) space >= dbg->de_debug_funcnames &&
61148		(Dwarf_Small *) space <
61149		dbg->de_debug_funcnames + dbg->de_debug_funcnames_size)
61150		return;
61151
61152	    if (dbg->de_debug_typenames != NULL &&
61153		(Dwarf_Small *) space >= dbg->de_debug_typenames &&
61154		(Dwarf_Small *) space <
61155		dbg->de_debug_typenames + dbg->de_debug_typenames_size)
61156		return;
61157
61158	    if (dbg->de_debug_varnames != NULL &&
61159		(Dwarf_Small *) space >= dbg->de_debug_varnames &&
61160		(Dwarf_Small *) space <
61161		dbg->de_debug_varnames + dbg->de_debug_varnames_size)
61162		return;
61163
61164	    if (dbg->de_debug_weaknames != NULL &&
61165		(Dwarf_Small *) space >= dbg->de_debug_weaknames &&
61166		(Dwarf_Small *) space <
61167		dbg->de_debug_weaknames + dbg->de_debug_weaknames_size)
61168		return;
61169
61170	    free(space);
61171	    return;
61172	}
61173
61174	if (alloc_type == DW_DLA_LIST ||
61175	    alloc_type == DW_DLA_FRAME_BLOCK ||
61176	    alloc_type == DW_DLA_LOC_BLOCK ||
61177	    alloc_type == DW_DLA_ADDR) {
61178
61179	    free(space);
61180	    return;
61181	}
61182	/* else is an alloc type that is not used */
61183	/* app or internal error */
61184#ifdef DWARF_SIMPLE_MALLOC
61185        _dwarf_simple_malloc_botch(4);
61186#endif
61187	return;
61188
61189    }
61190
61191#ifdef DWARF_SIMPLE_MALLOC
61192    _dwarf_simple_malloc_delete_from_list(dbg, space, alloc_type);
61193    free(space);
61194#else  /* !DWARF_SIMPLE_MALLOC */
61195    alloc_hdr = &dbg->de_alloc_hdr[index];
61196
61197    /* Get pointer to Dwarf_Alloc_Area this struct came from. See
61198       dwarf_alloc.h ROUND_SIZE_WITH_POINTER stuff */
61199    alloc_area = *(Dwarf_Alloc_Area *) ((char *) space - _DW_RESERVE);
61200
61201    /* ASSERT: alloc_area != NULL
61202       If NULL we could abort, let it coredump below,
61203       or return, pretending all is well. We go
61204       on, letting program crash. Is caller error. */
61205
61206    /*
61207       Check that the alloc_hdr field of the alloc_area we have is
61208       pointing to the right alloc_hdr.  This is used to catch use of
61209       incorrect deallocation code by the user. */
61210    if (alloc_area->aa_alloc_hdr != alloc_hdr) {
61211	/* If we get here, the user has called dwarf_dealloc wrongly or
61212	   there is some other disastrous error. By leaking mem here we
61213	   try to be safe... */
61214#ifdef DEBUG
61215	fprintf(stderr,
61216		"libdwarf Internal error: type %d hdr mismatch %x %x area ptr %x\n",
61217		(int) alloc_type,
61218		(int) alloc_area->aa_alloc_hdr,
61219		(int) alloc_hdr, (int) alloc_area);
61220#endif
61221	return;
61222    }
61223
61224    alloc_hdr->ah_struct_user_holds--;
61225    alloc_area->aa_free_structs_in_chunk++;
61226
61227    /*
61228       Give chunk back to malloc only when every struct is freed */
61229    if (alloc_area->aa_free_structs_in_chunk ==
61230	alloc_hdr->ah_structs_per_chunk) {
61231	if (alloc_area->aa_prev != NULL) {
61232	    alloc_area->aa_prev->aa_next = alloc_area->aa_next;
61233	} else {
61234	    alloc_hdr->ah_alloc_area_head = alloc_area->aa_next;
61235	}
61236
61237	if (alloc_area->aa_next != NULL) {
61238	    alloc_area->aa_next->aa_prev = alloc_area->aa_prev;
61239	}
61240
61241	alloc_hdr->ah_chunks_allocated--;
61242
61243	if (alloc_area == alloc_hdr->ah_last_alloc_area) {
61244	    alloc_hdr->ah_last_alloc_area = NULL;
61245	}
61246	memset(alloc_area,0, sizeof(*alloc_area));
61247	free(alloc_area);
61248    }
61249
61250    else {
61251	((Dwarf_Free_List) space)->fl_next = alloc_area->aa_free_list;
61252	alloc_area->aa_free_list = space;
61253    }
61254#endif /* !DWARF_SIMPLE_MALLOC */
61255}
61256
61257
61258/*
61259    Allocates space for a Dwarf_Debug_s struct,
61260    since one does not exist.
61261*/
61262Dwarf_Debug
61263_dwarf_get_debug(void
61264    )
61265{
61266    Dwarf_Debug dbg;
61267
61268    dbg = (Dwarf_Debug) malloc(sizeof(struct Dwarf_Debug_s));
61269    if (dbg == NULL)
61270	return (NULL);
61271    else
61272	memset(dbg,0, sizeof(struct Dwarf_Debug_s));
61273
61274    return (dbg);
61275}
61276
61277
61278/*
61279    Sets up the Dwarf_Debug_s struct for all the
61280    allocation types currently defined.
61281    Allocation types DW_DLA_STRING, DW_DLA_LIST,
61282    DW_DLA_FRAME_BLOCK, DW_DLA_LOC_BLOCK are
61283    malloc'ed directly.
61284
61285    This routine should be called after _dwarf_setup(),
61286    so that information about the sizes of the Dwarf
61287    sections can be used to decide the number of
61288    structs of each type malloc'ed.
61289
61290    Also DW_DLA_ELLIST, DW_DLA_BOUNDS, DW_DLA_TYPE,
61291    DW_DLA_SUBSCR, DW_DLA_LINEBUF allocation types
61292    are currently not used.
61293    The ah_bytes_one_struct and ah_structs_per_chunk fields for
61294    these types have been set to 1 for efficiency
61295    in dwarf_get_alloc().
61296
61297    Ah_alloc_num should be greater than 1 for all
61298    types that are currently being used.
61299
61300    Therefore, for these allocation types the
61301    ah_bytes_one_struct, and ah_structs_per_chunk fields do not
61302    need to be initialized.
61303
61304    Being an internal routine, assume proper dbg.
61305
61306
61307
61308
61309*/
61310/*
61311**  Set up all the Dwarf_Alloc_Hdr records.
61312*/
61313
61314Dwarf_Debug
61315_dwarf_setup_debug(Dwarf_Debug dbg)
61316{
61317    int i;
61318
61319    for (i = 1; i <= MAX_DW_DLA; i++) {
61320	const struct ial_s *ialp = &index_into_allocated[i];
61321	unsigned int hdr_index = ialp->ia_al_num;
61322	Dwarf_Word str_size = ialp->ia_struct_size;
61323	Dwarf_Word str_count = ialp->ia_base_count;
61324	Dwarf_Word rnded_size = ROUND_SIZE_WITH_POINTER(str_size);
61325
61326	Dwarf_Alloc_Hdr alloc_hdr = &dbg->de_alloc_hdr[hdr_index];
61327
61328	alloc_hdr->ah_bytes_one_struct = (Dwarf_Half) rnded_size;
61329
61330	/* ah_structs_per_chunk must be >0 else we are in trouble */
61331	alloc_hdr->ah_structs_per_chunk = str_count;
61332	alloc_hdr->ah_bytes_malloc_per_chunk = rnded_size * str_count;
61333    }
61334    return (dbg);
61335}
61336
61337/*
61338    This function prints out the statistics
61339    collected on allocation of memory chunks.
61340*/
61341void
61342dwarf_print_memory_stats(Dwarf_Debug dbg)
61343{
61344    Dwarf_Alloc_Hdr alloc_hdr;
61345    Dwarf_Shalf i;
61346
61347    /*
61348       Alloc types start at 1, not 0. Hence, the first NULL string,
61349       and also a size of MAX_DW_DLA + 1. */
61350    char *alloc_type_name[MAX_DW_DLA + 1] = {
61351	"",
61352	"DW_DLA_STRING",
61353	"DW_DLA_LOC",
61354	"DW_DLA_LOCDESC",
61355	"DW_DLA_ELLIST",
61356	"DW_DLA_BOUNDS",
61357	"DW_DLA_BLOCK",
61358	"DW_DLA_DEBUG",
61359	"DW_DLA_DIE",
61360	"DW_DLA_LINE",
61361	"DW_DLA_ATTR",
61362	"DW_DLA_TYPE",
61363	"DW_DLA_SUBSCR",
61364	"DW_DLA_GLOBAL",
61365	"DW_DLA_ERROR",
61366	"DW_DLA_LIST",
61367	"DW_DLA_LINEBUF",
61368	"DW_DLA_ARANGE",
61369	"DW_DLA_ABBREV",
61370	"DW_DLA_FRAME_OP",
61371	"DW_DLA_CIE",
61372	"DW_DLA_FDE",
61373	"DW_DLA_LOC_BLOCK",
61374	"DW_DLA_FRAME_BLOCK",
61375	"DW_DLA_FUNC",
61376	"DW_DLA_TYPENAME",
61377	"DW_DLA_VAR",
61378	"DW_DLA_WEAK",
61379	"DW_DLA_ADDR",
61380	"DW_DLA_ABBREV_LIST",
61381	"DW_DLA_CHAIN",
61382	"DW_DLA_CU_CONTEXT",
61383	"DW_DLA_FRAME",
61384	"DW_DLA_GLOBAL_CONTEXT",
61385	"DW_DLA_FILE_ENTRY",
61386	"DW_DLA_LINE_CONTEXT",
61387	"DW_DLA_LOC_CHAIN",
61388	"DW_DLA_HASH_TABLE",
61389	"DW_DLA_FUNC_CONTEXT",
61390	"DW_DLA_TYPENAME_CONTEXT",
61391	"DW_DLA_VAR_CONTEXT",
61392	"DW_DLA_WEAK_CONTEXT"
61393    };
61394
61395    if (dbg == NULL)
61396	return;
61397
61398    printf("Size of Dwarf_Debug        %4ld bytes\n",
61399	   (long) sizeof(*dbg));
61400    printf("Size of Dwarf_Alloc_Hdr_s  %4ld bytes\n",
61401	   (long) sizeof(struct Dwarf_Alloc_Hdr_s));
61402    printf("size of Dwarf_Alloc_Area_s %4ld bytes\n",
61403	   (long) sizeof(struct Dwarf_Alloc_Area_s));
61404
61405    printf("   Alloc Type                   Curr  Structs byt   str\n");
61406    printf("   ----------                   ----  ------- per   per\n");
61407    for (i = 1; i <= MAX_DW_DLA; i++) {
61408	int indx = index_into_allocated[i].ia_al_num;
61409
61410	alloc_hdr = &dbg->de_alloc_hdr[indx];
61411	if (alloc_hdr->ah_bytes_one_struct != 1) {
61412	    printf("%2d %-25s   %6d %8d %6d %6d\n",
61413		   (int) i,
61414		   alloc_type_name[i],
61415		   (int) alloc_hdr->ah_chunks_allocated,
61416		   (int) alloc_hdr->ah_struct_user_holds,
61417		   (int) alloc_hdr->ah_bytes_malloc_per_chunk,
61418		   (int) alloc_hdr->ah_structs_per_chunk);
61419	}
61420    }
61421}
61422
61423
61424#ifndef DWARF_SIMPLE_MALLOC
61425/*
61426    This function is used to recursively
61427    free the chunks still allocated, and
61428    forward chained through the aa_next
61429    pointer.
61430*/
61431static void
61432_dwarf_recursive_free(Dwarf_Alloc_Area alloc_area)
61433{
61434    if (alloc_area->aa_next != NULL) {
61435	_dwarf_recursive_free(alloc_area->aa_next);
61436    }
61437
61438    alloc_area->aa_next = 0;
61439    alloc_area->aa_prev = 0;
61440    free(alloc_area);
61441}
61442#endif
61443
61444/*
61445    Used to free all space allocated for this Dwarf_Debug.
61446    The caller should assume that the Dwarf_Debug pointer
61447    itself is no longer valid upon return from this function.
61448
61449    In case of difficulty, this function simply returns quietly.
61450*/
61451int
61452_dwarf_free_all_of_one_debug(Dwarf_Debug dbg)
61453{
61454    Dwarf_Alloc_Hdr alloc_hdr;
61455    Dwarf_Shalf i;
61456
61457    if (dbg == NULL)
61458	return (DW_DLV_ERROR);
61459
61460#ifdef DWARF_SIMPLE_MALLOC
61461    if(dbg->de_simple_malloc_base) {
61462	struct simple_malloc_record_s *smp = dbg->de_simple_malloc_base;
61463	while( smp)
61464	{
61465	    int i;
61466	    struct simple_malloc_record_s *prev_smp = 0;
61467
61468	    for(i = 0; i < smp->sr_used; ++i) {
61469	        struct simple_malloc_entry_s *cur;
61470		cur = &smp->sr_entry[i];
61471		if(cur->se_addr != 0) {
61472		     free(cur->se_addr);
61473		     cur->se_addr = 0;
61474	        }
61475	    }
61476	    prev_smp = smp;
61477	    smp = smp->sr_next;
61478	    free(prev_smp);
61479	}
61480	dbg->de_simple_malloc_base = 0;
61481	dbg->de_simple_malloc_current = 0;
61482    }
61483#else
61484    for (i = 1; i < ALLOC_AREA_REAL_TABLE_MAX; i++) {
61485	int indx = i;
61486
61487	alloc_hdr = &dbg->de_alloc_hdr[indx];
61488	if (alloc_hdr->ah_alloc_area_head != NULL) {
61489	    _dwarf_recursive_free(alloc_hdr->ah_alloc_area_head);
61490	}
61491    }
61492
61493#endif
61494
61495    memset(dbg,0, sizeof(*dbg));	/* prevent accidental use later */
61496    free(dbg);
61497    return (DW_DLV_OK);
61498}
61499
61500/* A special case: we have no dbg, no alloc header etc.
61501   So create something out of thin air that we can recognize
61502   in dwarf_dealloc.
61503   Something with the prefix (prefix space hidden from caller).
61504
61505   Only applies to DW_DLA_ERROR, making up an error record.
61506*/
61507
61508struct Dwarf_Error_s *
61509_dwarf_special_no_dbg_error_malloc(void)
61510{
61511    /* the union unused things are to guarantee proper alignment */
61512    union u {
61513	Dwarf_Alloc_Area ptr_not_used;
61514	struct Dwarf_Error_s base_not_used;
61515	char data_space[sizeof(struct Dwarf_Error_s) +
61516			(_DW_RESERVE * 2)];
61517    };
61518    char *mem;
61519
61520    mem = malloc(sizeof(union u));
61521
61522    if (mem == 0) {
61523	return 0;
61524
61525    }
61526    memset(mem,0, sizeof(union u));
61527    mem += _DW_RESERVE;
61528    return (struct Dwarf_Error_s *) mem;
61529}
61530
61531/* The free side of  _dwarf_special_no_dbg_error_malloc()
61532*/
61533static void
61534_dwarf_free_special_error(Dwarf_Ptr space)
61535{
61536    char *mem = (char *) space;
61537
61538    mem -= _DW_RESERVE;
61539    free(mem);
61540}
61541
61542
61543#ifdef DWARF_SIMPLE_MALLOC
61544/* here solely for planting a breakpoint. */
61545/* ARGSUSED */
61546void
61547_dwarf_simple_malloc_botch(int err)
61548{
61549}
61550static void
61551_dwarf_simple_malloc_add_to_list(Dwarf_Debug dbg,
61552	Dwarf_Ptr addr,
61553	unsigned long size,
61554	short alloc_type)
61555{
61556	struct simple_malloc_record_s *cur;
61557	struct simple_malloc_entry_s *newentry;
61558	if (!dbg->de_simple_malloc_current) {
61559	  /* First entry to this routine. */
61560	  dbg->de_simple_malloc_current =
61561		malloc(sizeof(struct simple_malloc_record_s));
61562	  if(!dbg->de_simple_malloc_current) {
61563		return; /* no memory, give up */
61564	  }
61565	  memset(dbg->de_simple_malloc_current,
61566		0,
61567		sizeof(struct simple_malloc_record_s));
61568	  dbg->de_simple_malloc_base = dbg->de_simple_malloc_current;
61569	}
61570	cur = dbg->de_simple_malloc_current;
61571
61572	if(cur->sr_used >= DSM_BLOCK_COUNT) {
61573	    /* better not be > than as that means chaos */
61574
61575	    /* Create a new block to link at the head. */
61576
61577	    struct simple_malloc_record_s *newblock =
61578	        malloc(sizeof(struct simple_malloc_record_s));
61579	    if(!newblock) {
61580		return; /* Can do nothing, out of memory */
61581	    }
61582	    memset(newblock,0, sizeof(struct simple_malloc_record_s));
61583	    /* Link the new block at the head of the chain,
61584	       and make it 'current'
61585	    */
61586	    dbg->de_simple_malloc_current = newblock;
61587	    newblock->sr_next = cur;
61588	    cur = newblock;
61589	}
61590	newentry = &cur->sr_entry[cur->sr_used];
61591	newentry->se_addr = addr;
61592	newentry->se_size = size;
61593	newentry->se_type = alloc_type;
61594	++cur->sr_used;
61595}
61596/*
61597   DWARF_SIMPLE_MALLOC is for testing the hypothesis that the existing
61598   complex malloc scheme in libdwarf is pointless complexity.
61599
61600   DWARF_SIMPLE_MALLOC also makes it easy for a malloc-tracing
61601   tool to verify libdwarf malloc has no botches (though of course
61602   such does not test the complicated standard-libdwarf-alloc code).
61603
61604   To properly answer the question, the simple-malloc allocate
61605   and delete should be something other than a simple list.
61606   Perhaps a heap, or perhaps a red-black tree.
61607
61608*/
61609static void
61610_dwarf_simple_malloc_delete_from_list(Dwarf_Debug dbg,
61611	Dwarf_Ptr space,
61612	short alloc_type)
61613{
61614    if(space == 0) {
61615	_dwarf_simple_malloc_botch(6);
61616    }
61617    if(dbg->de_simple_malloc_base) {
61618        struct simple_malloc_record_s *smp = dbg->de_simple_malloc_base;
61619        while( smp)
61620        {
61621            int i;
61622
61623            for(i = 0; i < smp->sr_used; ++i) {
61624                struct simple_malloc_entry_s *cur;
61625                cur = &smp->sr_entry[i];
61626                if(cur->se_addr == space) {
61627		     if(cur->se_type != alloc_type ) {
61628			 _dwarf_simple_malloc_botch(0);
61629		     }
61630                     cur->se_addr = 0;
61631		     return;
61632                }
61633            }
61634            smp = smp->sr_next;
61635        }
61636    }
61637    /* Never found the space */
61638    _dwarf_simple_malloc_botch(1);
61639    return;
61640
61641}
61642#endif
61643
61644�0707010001ad630000812400011e740000000a000000014020682800001512000000660000000000000000000000000000001700000000libdwarf/dwarf_alloc.h����/*
61645
61646  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
61647
61648  This program is free software; you can redistribute it and/or modify it
61649  under the terms of version 2.1 of the GNU Lesser General Public License
61650  as published by the Free Software Foundation.
61651
61652  This program is distributed in the hope that it would be useful, but
61653  WITHOUT ANY WARRANTY; without even the implied warranty of
61654  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
61655
61656  Further, this software is distributed without any warranty that it is
61657  free of the rightful claim of any third person regarding infringement
61658  or the like.  Any license provided herein, whether implied or
61659  otherwise, applies only to this software file.  Patent licenses, if
61660  any, provided herein do not apply to combinations of this program with
61661  other software, or any other product whatsoever.
61662
61663  You should have received a copy of the GNU Lesser General Public
61664  License along with this program; if not, write the Free Software
61665  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
61666  USA.
61667
61668  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
61669  Mountain View, CA 94043, or:
61670
61671  http://www.sgi.com
61672
61673  For further information regarding this notice, see:
61674
61675  http://oss.sgi.com/projects/GenInfo/NoticeExplan
61676
61677*/
61678
61679
61680
61681Dwarf_Ptr _dwarf_get_alloc(Dwarf_Debug, Dwarf_Small, Dwarf_Unsigned);
61682Dwarf_Debug _dwarf_get_debug(void);
61683Dwarf_Debug _dwarf_setup_debug(Dwarf_Debug);
61684int _dwarf_free_all_of_one_debug(Dwarf_Debug);
61685
61686typedef struct Dwarf_Alloc_Area_s *Dwarf_Alloc_Area;
61687typedef struct Dwarf_Free_List_s *Dwarf_Free_List;
61688
61689#define ALLOC_AREA_INDEX_TABLE_MAX 42
61690#define ALLOC_AREA_REAL_TABLE_MAX 31
61691
61692/*
61693    This struct is used to chain all the deallocated
61694    structs on the free list of each chain.  The structs
61695    are chained internally, by using the memory they
61696    contain.
61697*/
61698struct Dwarf_Free_List_s {
61699    Dwarf_Free_List fl_next;
61700};
61701
61702
61703/*
61704    This struct is used to manage all the chunks malloc'ed
61705    for a particular alloc_type.  Many of the fields are
61706    initialized by dwarf_init().
61707*/
61708struct Dwarf_Alloc_Hdr_s {
61709
61710    /* Count of actual number of structs user app holds pointers to
61711       currently. */
61712    Dwarf_Sword ah_struct_user_holds;
61713
61714    /*
61715       Size of each struct that will be allocated for this alloc_type.
61716       Initialized by dwarf_init(). */
61717    Dwarf_Half ah_bytes_one_struct;
61718
61719    /*
61720       Number of structs of this alloc_type that will be contained in
61721       each chunk that is malloc'ed. Initialized by dwarf_init(). */
61722    Dwarf_Word ah_structs_per_chunk;
61723
61724    /*
61725       Number of bytes malloc'ed per chunk which is basically
61726       (ah_bytes_one_struct+_DWARF_RESERVE) * ah_alloc_num. */
61727    Dwarf_Word ah_bytes_malloc_per_chunk;
61728
61729    /* Count of chunks currently allocated for type. */
61730    Dwarf_Sword ah_chunks_allocated;
61731
61732    /*
61733       Points to a chain of Dwarf_Alloc_Area_s structs that represent
61734       all the chunks currently allocated for the alloc_type. */
61735    Dwarf_Alloc_Area ah_alloc_area_head;
61736
61737    /* Last Alloc Area that was allocated by malloc. The
61738       free-space-search area looks here first and only if it is full
61739       goes thru the list pointed to by ah_alloc_area_head. */
61740    Dwarf_Alloc_Area ah_last_alloc_area;
61741};
61742
61743
61744/*
61745    This struct is used to manage each chunk that is
61746    malloc'ed for a particular alloc_type.  For each
61747    allocation type, the allocation header points to
61748    a list of all the chunks malloc'ed for that type.
61749*/
61750struct Dwarf_Alloc_Area_s {
61751
61752    /* Points to the free list of structs in the chunk. */
61753    Dwarf_Ptr aa_free_list;
61754
61755    /*
61756       Count of the number of free structs in the chunk. This includes
61757       both those on the free list, and in the blob. */
61758    Dwarf_Sword aa_free_structs_in_chunk;
61759
61760    /*
61761       Points to the first byte of the blob from which struct will be
61762       allocated.  A struct is put on the free_list only when it
61763       dwarf_deallocated.  Initial allocations are from the blob. */
61764    Dwarf_Small *aa_blob_start;
61765
61766    /* Points just past the last byte of the blob. */
61767    Dwarf_Small *aa_blob_end;
61768
61769    /* Points to alloc_hdr this alloc_area is linked to: The owner, in
61770       other words. */
61771    Dwarf_Alloc_Hdr aa_alloc_hdr;
61772
61773    /*
61774       Used for chaining Dwarf_Alloc_Area_s atructs. Alloc areas are
61775       doubly linked to enable deletion from the list in constant time. */
61776    Dwarf_Alloc_Area aa_next;
61777    Dwarf_Alloc_Area aa_prev;
61778};
61779
61780struct Dwarf_Error_s *_dwarf_special_no_dbg_error_malloc(void);
61781
61782#ifdef DWARF_SIMPLE_MALLOC
61783/*
61784   DWARF_SIMPLE_MALLOC is for testing the hypothesis that the existing
61785   complex malloc scheme in libdwarf is pointless complexity.
61786
61787   DWARF_SIMPLE_MALLOC also makes it easy for a malloc-tracing
61788   tool to verify libdwarf malloc has no botches (though of course
61789   such does not test the complicated standard-libdwarf-alloc code).
61790
61791*/
61792
61793struct simple_malloc_entry_s {
61794    Dwarf_Small   *se_addr;
61795    unsigned long  se_size;
61796    short          se_type;
61797};
61798#define DSM_BLOCK_COUNT (1000)
61799#define DSM_BLOCK_SIZE (sizeof(struct simple_malloc_entry_s)*DSM_BLOCK_COUNT)
61800
61801/* we do this so dwarf_dealloc can really free everything */
61802struct simple_malloc_record_s {
61803	struct simple_malloc_record_s *sr_next;
61804	int 			       sr_used;
61805	struct simple_malloc_entry_s   sr_entry[DSM_BLOCK_COUNT];
61806};
61807
61808
61809
61810#endif /* DWARF_SIMPLE_MALLOC */
61811��0707010001ad640000812400011e740000000a000000014020682800004195000000660000000000000000000000000000001800000000libdwarf/dwarf_arange.c���/*
61812
61813  Copyright (C) 2000, 2002 Silicon Graphics, Inc.  All Rights Reserved.
61814
61815  This program is free software; you can redistribute it and/or modify it
61816  under the terms of version 2.1 of the GNU Lesser General Public License
61817  as published by the Free Software Foundation.
61818
61819  This program is distributed in the hope that it would be useful, but
61820  WITHOUT ANY WARRANTY; without even the implied warranty of
61821  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
61822
61823  Further, this software is distributed without any warranty that it is
61824  free of the rightful claim of any third person regarding infringement
61825  or the like.  Any license provided herein, whether implied or
61826  otherwise, applies only to this software file.  Patent licenses, if
61827  any, provided herein do not apply to combinations of this program with
61828  other software, or any other product whatsoever.
61829
61830  You should have received a copy of the GNU Lesser General Public
61831  License along with this program; if not, write the Free Software
61832  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
61833  USA.
61834
61835  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
61836  Mountain View, CA 94043, or:
61837
61838  http://www.sgi.com
61839
61840  For further information regarding this notice, see:
61841
61842  http://oss.sgi.com/projects/GenInfo/NoticeExplan
61843
61844*/
61845
61846
61847
61848
61849#include "config.h"
61850#include "dwarf_incl.h"
61851#include <stdio.h>
61852#include "dwarf_arange.h"
61853
61854
61855/*
61856    This function returns the count of the number of
61857    aranges in the .debug_aranges section.  It sets
61858    aranges to point to a block of Dwarf_Arange's
61859    describing the arange's.  It returns DW_DLV_ERROR
61860    on error.
61861
61862    Must be identical in most aspects to
61863	dwarf_get_aranges_addr_offsets!
61864*/
61865int
61866dwarf_get_aranges(Dwarf_Debug dbg,
61867		  Dwarf_Arange ** aranges,
61868		  Dwarf_Signed * returned_count, Dwarf_Error * error)
61869{
61870    /* Sweeps the .debug_aranges section. */
61871    Dwarf_Small *arange_ptr;
61872
61873    /*
61874       Start of arange header.  Used for rounding offset of arange_ptr
61875       to twice the tuple size.  Libdwarf requirement. */
61876    Dwarf_Small *header_ptr;
61877
61878
61879    /* Version of .debug_aranges header. */
61880    Dwarf_Half version;
61881
61882    /* Offset of current set of aranges into .debug_info. */
61883    Dwarf_Off info_offset;
61884
61885    /* Size in bytes of addresses in target. */
61886    Dwarf_Small address_size;
61887
61888    /* Size in bytes of segment offsets in target. */
61889    Dwarf_Small segment_size;
61890
61891    Dwarf_Small remainder;
61892
61893    /* Count of total number of aranges. */
61894    Dwarf_Unsigned arange_count = 0;
61895
61896    /* Start address of arange. */
61897    Dwarf_Addr range_address;
61898
61899    /* Length of arange. */
61900    Dwarf_Unsigned range_length;
61901
61902    Dwarf_Arange arange, *arange_block;
61903
61904    Dwarf_Unsigned i;
61905
61906    /* Used to chain Dwarf_Aranges structs. */
61907    Dwarf_Chain curr_chain, prev_chain, head_chain = NULL;
61908
61909    int res;
61910
61911    /* ***** BEGIN CODE ***** */
61912
61913    if (dbg == NULL) {
61914	_dwarf_error(NULL, error, DW_DLE_DBG_NULL);
61915	return (DW_DLV_ERROR);
61916    }
61917
61918    res =
61919        _dwarf_load_section(dbg,
61920			    dbg->de_debug_aranges_index,
61921			    &dbg->de_debug_aranges,
61922			    error);
61923    if (res != DW_DLV_OK) {
61924        return res;
61925    }
61926
61927    arange_ptr = dbg->de_debug_aranges;
61928    do {
61929        /* Length of current set of aranges. */
61930        Dwarf_Unsigned length;
61931	Dwarf_Small *arange_ptr_past_end = 0;
61932
61933	int local_length_size;
61934	/*REFERENCED*/ /* Not used in this instance of the macro */
61935	int local_extension_size;
61936
61937	header_ptr = arange_ptr;
61938
61939	/* READ_AREA_LENGTH updates arange_ptr for consumed bytes */
61940	READ_AREA_LENGTH(dbg, length, Dwarf_Unsigned,
61941			 arange_ptr, local_length_size,
61942			 local_extension_size);
61943	arange_ptr_past_end = arange_ptr + length;
61944
61945
61946	READ_UNALIGNED(dbg, version, Dwarf_Half,
61947		       arange_ptr, sizeof(Dwarf_Half));
61948	arange_ptr += sizeof(Dwarf_Half);
61949	length = length - sizeof(Dwarf_Half);
61950	if (version != CURRENT_VERSION_STAMP) {
61951	    _dwarf_error(dbg, error, DW_DLE_VERSION_STAMP_ERROR);
61952	    return (DW_DLV_ERROR);
61953	}
61954
61955	READ_UNALIGNED(dbg, info_offset, Dwarf_Off,
61956		       arange_ptr, local_length_size);
61957	arange_ptr += local_length_size;
61958	length = length - local_length_size;
61959	if (info_offset >= dbg->de_debug_info_size) {
61960	    _dwarf_error(dbg, error, DW_DLE_ARANGE_OFFSET_BAD);
61961	    return (DW_DLV_ERROR);
61962	}
61963
61964	address_size = *(Dwarf_Small *) arange_ptr;
61965	if (address_size != dbg->de_pointer_size) {
61966	    /* Internal error of some kind */
61967	    _dwarf_error(dbg, error, DW_DLE_BADBITC);
61968	    return (DW_DLV_ERROR);
61969	}
61970	arange_ptr = arange_ptr + sizeof(Dwarf_Small);
61971	length = length - sizeof(Dwarf_Small);
61972
61973	segment_size = *(Dwarf_Small *) arange_ptr;
61974	arange_ptr = arange_ptr + sizeof(Dwarf_Small);
61975	length = length - sizeof(Dwarf_Small);
61976	if (segment_size != 0) {
61977	    _dwarf_error(dbg, error, DW_DLE_SEGMENT_SIZE_BAD);
61978	    return (DW_DLV_ERROR);
61979	}
61980
61981	/* Round arange_ptr offset to next multiple of address_size. */
61982	remainder = (Dwarf_Unsigned) (arange_ptr - header_ptr) %
61983	    (2 * address_size);
61984	if (remainder != 0) {
61985	    arange_ptr = arange_ptr + (2 * address_size) - remainder;
61986	    length = length - ((2 * address_size) - remainder);
61987	}
61988
61989	do {
61990	    READ_UNALIGNED(dbg, range_address, Dwarf_Addr,
61991			   arange_ptr, address_size);
61992	    arange_ptr += address_size;
61993	    length = length - address_size;
61994
61995	    READ_UNALIGNED(dbg, range_length, Dwarf_Unsigned,
61996			   arange_ptr, address_size);
61997	    arange_ptr += address_size;
61998	    length = length - address_size;
61999
62000	    if (range_address != 0 || range_length != 0) {
62001
62002		arange = (Dwarf_Arange)
62003		    _dwarf_get_alloc(dbg, DW_DLA_ARANGE, 1);
62004		if (arange == NULL) {
62005		    _dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
62006		    return (DW_DLV_ERROR);
62007		}
62008
62009		arange->ar_address = range_address;
62010		arange->ar_length = range_length;
62011		arange->ar_info_offset = info_offset;
62012		arange->ar_dbg = dbg;
62013		arange_count++;
62014
62015		curr_chain = (Dwarf_Chain)
62016		    _dwarf_get_alloc(dbg, DW_DLA_CHAIN, 1);
62017		if (curr_chain == NULL) {
62018		    _dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
62019		    return (DW_DLV_ERROR);
62020		}
62021
62022		curr_chain->ch_item = arange;
62023		if (head_chain == NULL)
62024		    head_chain = prev_chain = curr_chain;
62025		else {
62026		    prev_chain->ch_next = curr_chain;
62027		    prev_chain = curr_chain;
62028		}
62029	    }
62030	} while (range_address != 0 || range_length != 0);
62031
62032	/* A compiler could emit some padding bytes here.
62033	   dwarf2/3 (dwarf3 draft8 sec 7.20) does not clearly make
62034	   extra padding bytes illegal. */
62035	if(arange_ptr_past_end < arange_ptr) {
62036	    _dwarf_error(dbg, error, DW_DLE_ARANGE_LENGTH_BAD);
62037	    return (DW_DLV_ERROR);
62038	}
62039	/* For most compilers, arange_ptr == arange_ptr_past_end
62040	   at this point. But not if there were padding bytes */
62041	arange_ptr = arange_ptr_past_end;
62042
62043    } while (arange_ptr <
62044	     dbg->de_debug_aranges + dbg->de_debug_aranges_size);
62045
62046    if (arange_ptr !=
62047	dbg->de_debug_aranges + dbg->de_debug_aranges_size) {
62048	_dwarf_error(dbg, error, DW_DLE_ARANGE_DECODE_ERROR);
62049	return (DW_DLV_ERROR);
62050    }
62051
62052    arange_block = (Dwarf_Arange *)
62053	_dwarf_get_alloc(dbg, DW_DLA_LIST, arange_count);
62054    if (arange_block == NULL) {
62055	_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
62056	return (DW_DLV_ERROR);
62057    }
62058
62059    curr_chain = head_chain;
62060    for (i = 0; i < arange_count; i++) {
62061	*(arange_block + i) = curr_chain->ch_item;
62062	prev_chain = curr_chain;
62063	curr_chain = curr_chain->ch_next;
62064	dwarf_dealloc(dbg, prev_chain, DW_DLA_CHAIN);
62065    }
62066
62067    *aranges = arange_block;
62068    *returned_count = (arange_count);
62069    return DW_DLV_OK;
62070}
62071
62072/*
62073    This function returns DW_DLV_OK if it succeeds
62074    and DW_DLV_ERR or DW_DLV_OK otherwise.
62075    count is set to the number of addresses in the
62076    .debug_aranges section.
62077    For each address, the corresponding element in
62078    an array is set to the address itself(aranges) and
62079    the section offset (offsets).
62080    Must be identical in most aspects to
62081	dwarf_get_aranges!
62082*/
62083int
62084_dwarf_get_aranges_addr_offsets(Dwarf_Debug dbg,
62085				Dwarf_Addr ** addrs,
62086				Dwarf_Off ** offsets,
62087				Dwarf_Signed * count,
62088				Dwarf_Error * error)
62089{
62090    /* Sweeps the .debug_aranges section. */
62091    Dwarf_Small *arange_ptr;
62092    Dwarf_Small *arange_start_ptr;
62093
62094    /*
62095       Start of arange header.  Used for rounding offset of arange_ptr
62096       to twice the tuple size.  Libdwarf requirement. */
62097    Dwarf_Small *header_ptr;
62098
62099    /* Length of current set of aranges. */
62100    Dwarf_Unsigned length;
62101
62102    /* Version of .debug_aranges header. */
62103    Dwarf_Half version;
62104
62105    /* Offset of current set of aranges into .debug_info. */
62106    Dwarf_Off info_offset;
62107
62108    /* Size in bytes of addresses in target. */
62109    Dwarf_Small address_size;
62110
62111    /* Size in bytes of segment offsets in target. */
62112    Dwarf_Small segment_size;
62113
62114    Dwarf_Small remainder;
62115
62116    /* Count of total number of aranges. */
62117    Dwarf_Unsigned arange_count = 0;
62118
62119    /* Start address of arange. */
62120    Dwarf_Addr range_address;
62121
62122    /* Length of arange. */
62123    Dwarf_Unsigned range_length;
62124
62125    Dwarf_Arange arange;
62126
62127    Dwarf_Unsigned i;
62128
62129    /* Used to chain Dwarf_Aranges structs. */
62130    Dwarf_Chain curr_chain, prev_chain, head_chain = NULL;
62131
62132    Dwarf_Addr *arange_addrs;
62133    Dwarf_Off *arange_offsets;
62134
62135    int res;
62136
62137    /* ***** BEGIN CODE ***** */
62138
62139    if (error != NULL)
62140	*error = NULL;
62141
62142    if (dbg == NULL) {
62143	_dwarf_error(NULL, error, DW_DLE_DBG_NULL);
62144	return (DW_DLV_ERROR);
62145    }
62146
62147    res =
62148        _dwarf_load_section(dbg,
62149			    dbg->de_debug_aranges_index,
62150			    &dbg->de_debug_aranges,
62151			    error);
62152    if (res != DW_DLV_OK) {
62153        return res;
62154    }
62155
62156    arange_ptr = dbg->de_debug_aranges;
62157    do {
62158	int local_length_size;
62159	/*REFERENCED*/ /* not used in this instance of the macro */
62160	int local_extension_size;
62161
62162	header_ptr = arange_ptr;
62163
62164
62165	/* READ_AREA_LENGTH updates arange_ptr for consumed bytes */
62166	READ_AREA_LENGTH(dbg, length, Dwarf_Unsigned,
62167			 arange_ptr, local_length_size,
62168			 local_extension_size);
62169
62170
62171	READ_UNALIGNED(dbg, version, Dwarf_Half,
62172		       arange_ptr, sizeof(Dwarf_Half));
62173	arange_ptr += sizeof(Dwarf_Half);
62174	length = length - sizeof(Dwarf_Half);
62175	if (version != CURRENT_VERSION_STAMP) {
62176	    _dwarf_error(dbg, error, DW_DLE_VERSION_STAMP_ERROR);
62177	    return (DW_DLV_ERROR);
62178	}
62179
62180	READ_UNALIGNED(dbg, info_offset, Dwarf_Off,
62181		       arange_ptr, local_length_size);
62182	arange_ptr += local_length_size;
62183	length = length - local_length_size;
62184	if (info_offset >= dbg->de_debug_info_size) {
62185	    _dwarf_error(dbg, error, DW_DLE_ARANGE_OFFSET_BAD);
62186	    return (DW_DLV_ERROR);
62187	}
62188
62189	address_size = *(Dwarf_Small *) arange_ptr;
62190	arange_ptr = arange_ptr + sizeof(Dwarf_Small);
62191	length = length - sizeof(Dwarf_Small);
62192
62193	segment_size = *(Dwarf_Small *) arange_ptr;
62194	arange_ptr = arange_ptr + sizeof(Dwarf_Small);
62195	length = length - sizeof(Dwarf_Small);
62196	if (segment_size != 0) {
62197	    _dwarf_error(dbg, error, DW_DLE_SEGMENT_SIZE_BAD);
62198	    return (DW_DLV_ERROR);
62199	}
62200
62201	/* Round arange_ptr offset to next multiple of address_size. */
62202	remainder = (Dwarf_Unsigned) (arange_ptr - header_ptr) %
62203	    (2 * address_size);
62204	if (remainder != 0) {
62205	    arange_ptr = arange_ptr + (2 * address_size) - remainder;
62206	    length = length - ((2 * address_size) - remainder);
62207	}
62208
62209	do {
62210	    arange_start_ptr = arange_ptr;
62211	    READ_UNALIGNED(dbg, range_address, Dwarf_Addr,
62212			   arange_ptr, dbg->de_pointer_size);
62213	    arange_ptr += dbg->de_pointer_size;
62214	    length = length - dbg->de_pointer_size;
62215
62216	    READ_UNALIGNED(dbg, range_length, Dwarf_Unsigned,
62217			   arange_ptr, local_length_size);
62218	    arange_ptr += local_length_size;
62219	    length = length - local_length_size;
62220
62221	    if (range_address != 0 || range_length != 0) {
62222
62223		arange = (Dwarf_Arange)
62224		    _dwarf_get_alloc(dbg, DW_DLA_ARANGE, 1);
62225		if (arange == NULL) {
62226		    _dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
62227		    return (DW_DLV_ERROR);
62228		}
62229
62230		arange->ar_address = range_address;
62231		arange->ar_length = range_length;
62232		arange->ar_info_offset =
62233		    arange_start_ptr - dbg->de_debug_aranges;
62234		arange->ar_dbg = dbg;
62235		arange_count++;
62236
62237		curr_chain = (Dwarf_Chain)
62238		    _dwarf_get_alloc(dbg, DW_DLA_CHAIN, 1);
62239		if (curr_chain == NULL) {
62240		    _dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
62241		    return (DW_DLV_ERROR);
62242		}
62243
62244		curr_chain->ch_item = arange;
62245		if (head_chain == NULL)
62246		    head_chain = prev_chain = curr_chain;
62247		else {
62248		    prev_chain->ch_next = curr_chain;
62249		    prev_chain = curr_chain;
62250		}
62251	    }
62252	} while (range_address != 0 || range_length != 0);
62253
62254	if (length != 0) {
62255	    _dwarf_error(dbg, error, DW_DLE_ARANGE_LENGTH_BAD);
62256	    return (DW_DLV_ERROR);
62257	}
62258
62259    } while (arange_ptr <
62260	     dbg->de_debug_aranges + dbg->de_debug_aranges_size);
62261
62262    if (arange_ptr !=
62263	dbg->de_debug_aranges + dbg->de_debug_aranges_size) {
62264	_dwarf_error(dbg, error, DW_DLE_ARANGE_DECODE_ERROR);
62265	return (DW_DLV_ERROR);
62266    }
62267
62268    arange_addrs = (Dwarf_Addr *)
62269	_dwarf_get_alloc(dbg, DW_DLA_ADDR, arange_count);
62270    if (arange_addrs == NULL) {
62271	_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
62272	return (DW_DLV_ERROR);
62273    }
62274    arange_offsets = (Dwarf_Off *)
62275	_dwarf_get_alloc(dbg, DW_DLA_ADDR, arange_count);
62276    if (arange_offsets == NULL) {
62277	_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
62278	return (DW_DLV_ERROR);
62279    }
62280
62281    curr_chain = head_chain;
62282    for (i = 0; i < arange_count; i++) {
62283	Dwarf_Arange ar = curr_chain->ch_item;
62284
62285	arange_addrs[i] = ar->ar_address;
62286	arange_offsets[i] = ar->ar_info_offset;
62287	prev_chain = curr_chain;
62288	curr_chain = curr_chain->ch_next;
62289	dwarf_dealloc(dbg, ar, DW_DLA_ARANGE);
62290	dwarf_dealloc(dbg, prev_chain, DW_DLA_CHAIN);
62291    }
62292    *count = arange_count;
62293    *offsets = arange_offsets;
62294    *addrs = arange_addrs;
62295    return (DW_DLV_OK);
62296}
62297
62298
62299/*
62300    This function takes a pointer to a block
62301    of Dwarf_Arange's, and a count of the
62302    length of the block.  It checks if the
62303    given address is within the range of an
62304    address range in the block.  If yes, it
62305    returns the appropriate Dwarf_Arange.
62306    Otherwise, it returns DW_DLV_ERROR.
62307*/
62308int
62309dwarf_get_arange(Dwarf_Arange * aranges,
62310		 Dwarf_Unsigned arange_count,
62311		 Dwarf_Addr address,
62312		 Dwarf_Arange * returned_arange, Dwarf_Error * error)
62313{
62314    Dwarf_Arange curr_arange;
62315    Dwarf_Unsigned i;
62316
62317    if (aranges == NULL) {
62318	_dwarf_error(NULL, error, DW_DLE_ARANGES_NULL);
62319	return (DW_DLV_ERROR);
62320    }
62321
62322    for (i = 0; i < arange_count; i++) {
62323	curr_arange = *(aranges + i);
62324	if (address >= curr_arange->ar_address &&
62325	    address <
62326	    curr_arange->ar_address + curr_arange->ar_length) {
62327	    *returned_arange = curr_arange;
62328	    return (DW_DLV_OK);
62329	}
62330    }
62331
62332    return (DW_DLV_NO_ENTRY);
62333}
62334
62335
62336/*
62337    This function takes an Dwarf_Arange,
62338    and returns the offset of the first
62339    die in the compilation-unit that the
62340    arange belongs to.  Returns DW_DLV_ERROR
62341    on error.
62342*/
62343int
62344dwarf_get_cu_die_offset(Dwarf_Arange arange,
62345			Dwarf_Off * returned_offset,
62346			Dwarf_Error * error)
62347{
62348    Dwarf_Debug dbg;
62349    Dwarf_Off offset;
62350
62351    if (arange == NULL) {
62352	_dwarf_error(NULL, error, DW_DLE_ARANGE_NULL);
62353	return (DW_DLV_ERROR);
62354    }
62355
62356
62357    dbg = arange->ar_dbg;
62358
62359
62360    offset = arange->ar_info_offset;
62361    if(!dbg->de_debug_info) {
62362        int res = _dwarf_load_debug_info(dbg,error);
62363        if(res != DW_DLV_OK) {
62364	    return res;
62365        }
62366    }
62367
62368    *returned_offset = offset + _dwarf_length_of_cu_header(dbg, offset);
62369    return DW_DLV_OK;
62370}
62371
62372/*
62373    This function takes an Dwarf_Arange,
62374    and returns the offset of the CU header
62375    in the compilation-unit that the
62376    arange belongs to.  Returns DW_DLV_ERROR
62377    on error.
62378*/
62379int
62380dwarf_get_arange_cu_header_offset(Dwarf_Arange arange,
62381				  Dwarf_Off * cu_header_offset_returned,
62382				  Dwarf_Error * error)
62383{
62384    if (arange == NULL) {
62385	_dwarf_error(NULL, error, DW_DLE_ARANGE_NULL);
62386	return (DW_DLV_ERROR);
62387    }
62388
62389    *cu_header_offset_returned = arange->ar_info_offset;
62390    return DW_DLV_OK;
62391}
62392
62393
62394
62395/*
62396    This function takes a Dwarf_Arange, and returns
62397    true if it is not NULL.  It also stores the start
62398    address of the range in *start, the length of the
62399    range in *length, and the offset of the first die
62400    in the compilation-unit in *cu_die_offset.  It
62401    returns false on error.
62402*/
62403int
62404dwarf_get_arange_info(Dwarf_Arange arange,
62405		      Dwarf_Addr * start,
62406		      Dwarf_Unsigned * length,
62407		      Dwarf_Off * cu_die_offset, Dwarf_Error * error)
62408{
62409    if (arange == NULL) {
62410	_dwarf_error(NULL, error, DW_DLE_ARANGE_NULL);
62411	return (DW_DLV_ERROR);
62412    }
62413
62414    if (start != NULL)
62415	*start = arange->ar_address;
62416    if (length != NULL)
62417	*length = arange->ar_length;
62418    if (cu_die_offset != NULL) {
62419	Dwarf_Debug dbg = arange->ar_dbg;
62420	Dwarf_Off offset = arange->ar_info_offset;
62421
62422	if(!dbg->de_debug_info) {
62423	   int res = _dwarf_load_debug_info(dbg,error);
62424           if(res != DW_DLV_OK) {
62425               return res;
62426           }
62427        }
62428
62429	*cu_die_offset =
62430	    offset + _dwarf_length_of_cu_header(dbg, offset);
62431    }
62432    return (DW_DLV_OK);
62433}
62434���0707010001ad650000812400011e740000000a000000014020682800000785000000660000000000000000000000000000001800000000libdwarf/dwarf_arange.h���/*
62435
62436  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
62437
62438  This program is free software; you can redistribute it and/or modify it
62439  under the terms of version 2.1 of the GNU Lesser General Public License
62440  as published by the Free Software Foundation.
62441
62442  This program is distributed in the hope that it would be useful, but
62443  WITHOUT ANY WARRANTY; without even the implied warranty of
62444  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
62445
62446  Further, this software is distributed without any warranty that it is
62447  free of the rightful claim of any third person regarding infringement
62448  or the like.  Any license provided herein, whether implied or
62449  otherwise, applies only to this software file.  Patent licenses, if
62450  any, provided herein do not apply to combinations of this program with
62451  other software, or any other product whatsoever.
62452
62453  You should have received a copy of the GNU Lesser General Public
62454  License along with this program; if not, write the Free Software
62455  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
62456  USA.
62457
62458  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
62459  Mountain View, CA 94043, or:
62460
62461  http://www.sgi.com
62462
62463  For further information regarding this notice, see:
62464
62465  http://oss.sgi.com/projects/GenInfo/NoticeExplan
62466
62467*/
62468
62469
62470
62471/* This structure is used to read an arange into. */
62472struct Dwarf_Arange_s {
62473
62474    /* Starting address of the arange, ie low-pc. */
62475    Dwarf_Addr ar_address;
62476
62477    /* Length of the arange. */
62478    Dwarf_Unsigned ar_length;
62479
62480    /*
62481       Offset into .debug_info of the start of the compilation-unit
62482       containing this set of aranges. */
62483    Dwarf_Off ar_info_offset;
62484
62485    /* Corresponding Dwarf_Debug. */
62486    Dwarf_Debug ar_dbg;
62487};
62488
62489
62490
62491int
62492  _dwarf_get_aranges_addr_offsets(Dwarf_Debug dbg,
62493				  Dwarf_Addr ** addrs,
62494				  Dwarf_Off ** offsets,
62495				  Dwarf_Signed * count,
62496				  Dwarf_Error * error);
62497���0707010001ad660000812400011e740000000a000000014020682800000ddb000000660000000000000000000000000000001c00000000libdwarf/dwarf_base_types.h���/*
62498
62499  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
62500
62501  This program is free software; you can redistribute it and/or modify it
62502  under the terms of version 2.1 of the GNU Lesser General Public License
62503  as published by the Free Software Foundation.
62504
62505  This program is distributed in the hope that it would be useful, but
62506  WITHOUT ANY WARRANTY; without even the implied warranty of
62507  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
62508
62509  Further, this software is distributed without any warranty that it is
62510  free of the rightful claim of any third person regarding infringement
62511  or the like.  Any license provided herein, whether implied or
62512  otherwise, applies only to this software file.  Patent licenses, if
62513  any, provided herein do not apply to combinations of this program with
62514  other software, or any other product whatsoever.
62515
62516  You should have received a copy of the GNU Lesser General Public
62517  License along with this program; if not, write the Free Software
62518  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
62519  USA.
62520
62521  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
62522  Mountain View, CA 94043, or:
62523
62524  http://www.sgi.com
62525
62526  For further information regarding this notice, see:
62527
62528  http://oss.sgi.com/projects/GenInfo/NoticeExplan
62529
62530*/
62531
62532
62533
62534#include "libdwarfdefs.h"
62535
62536#define true                    1
62537#define false                   0
62538
62539/* to identify a cie */
62540#define DW_CIE_ID 		~(0x0)
62541#define DW_CIE_VERSION		1
62542#define ABBREV_HASH_TABLE_SIZE	10
62543
62544
62545/*
62546    These are allocation type codes for structs that
62547    are internal to the Libdwarf Consumer library.
62548*/
62549#define DW_DLA_ABBREV_LIST	DW_DLA_ADDR + 1
62550#define DW_DLA_CHAIN		DW_DLA_ADDR + 2
62551#define DW_DLA_CU_CONTEXT	DW_DLA_ADDR + 3
62552#define DW_DLA_FRAME		DW_DLA_ADDR + 4
62553#define DW_DLA_GLOBAL_CONTEXT	DW_DLA_ADDR + 5
62554#define DW_DLA_FILE_ENTRY	DW_DLA_ADDR + 6
62555#define DW_DLA_LINE_CONTEXT	DW_DLA_ADDR + 7
62556#define DW_DLA_LOC_CHAIN	DW_DLA_ADDR + 8
62557#define DW_DLA_HASH_TABLE	DW_DLA_ADDR + 9
62558#define DW_DLA_FUNC_CONTEXT	DW_DLA_ADDR + 10
62559#define DW_DLA_TYPENAME_CONTEXT	DW_DLA_ADDR + 11
62560#define DW_DLA_VAR_CONTEXT	DW_DLA_ADDR + 12
62561#define DW_DLA_WEAK_CONTEXT	DW_DLA_ADDR + 13
62562
62563/* Maximum number of allocation types for allocation routines. */
62564#define MAX_DW_DLA		DW_DLA_WEAK_CONTEXT
62565
62566/*Dwarf_Word  is unsigned word usable for index, count in memory */
62567/*Dwarf_Sword is   signed word usable for index, count in memory */
62568/* The are 32 or 64 bits depending if 64 bit longs or not, which
62569** fits the  ILP32 and LP64 models
62570** These work equally well with ILP64.
62571*/
62572
62573typedef unsigned long Dwarf_Word;
62574typedef signed long Dwarf_Sword;
62575
62576typedef signed char Dwarf_Sbyte;
62577typedef unsigned char Dwarf_Ubyte;
62578typedef signed short Dwarf_Shalf;
62579typedef Dwarf_Small *Dwarf_Byte_Ptr;
62580
62581/* these 2 are fixed sizes which must not vary with the
62582** ILP32/LP64 model. Between these two, stay at 32 bit.
62583*/
62584typedef __uint32_t Dwarf_ufixed;
62585typedef __int32_t Dwarf_sfixed;
62586
62587/*
62588        In various places the code mistakenly associates
62589        forms 8 bytes long with Dwarf_Signed or Dwarf_Unsigned
62590	This is not a very portable assumption.
62591        The following should be used instead for 64 bit integers.
62592*/
62593typedef __uint32_t Dwarf_ufixed64;
62594typedef __int32_t Dwarf_sfixed64;
62595
62596
62597typedef struct Dwarf_Abbrev_List_s *Dwarf_Abbrev_List;
62598typedef struct Dwarf_File_Entry_s *Dwarf_File_Entry;
62599typedef struct Dwarf_CU_Context_s *Dwarf_CU_Context;
62600typedef struct Dwarf_Hash_Table_s *Dwarf_Hash_Table;
62601
62602
62603typedef struct Dwarf_Alloc_Hdr_s *Dwarf_Alloc_Hdr;
62604�0707010001ad670000812400011e740000000a000000014020682800005521000000660000000000000000000000000000001b00000000libdwarf/dwarf_die_deliv.c����/*
62605
62606  Copyright (C) 2000,2001,2002,2003 Silicon Graphics, Inc.  All Rights Reserved.
62607
62608  This program is free software; you can redistribute it and/or modify it
62609  under the terms of version 2.1 of the GNU Lesser General Public License
62610  as published by the Free Software Foundation.
62611
62612  This program is distributed in the hope that it would be useful, but
62613  WITHOUT ANY WARRANTY; without even the implied warranty of
62614  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
62615
62616  Further, this software is distributed without any warranty that it is
62617  free of the rightful claim of any third person regarding infringement
62618  or the like.  Any license provided herein, whether implied or
62619  otherwise, applies only to this software file.  Patent licenses, if
62620  any, provided herein do not apply to combinations of this program with
62621  other software, or any other product whatsoever.
62622
62623  You should have received a copy of the GNU Lesser General Public
62624  License along with this program; if not, write the Free Software
62625  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
62626  USA.
62627
62628  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
62629  Mountain View, CA 94043, or:
62630
62631  http://www.sgi.com
62632
62633  For further information regarding this notice, see:
62634
62635  http://oss.sgi.com/projects/GenInfo/NoticeExplan
62636
62637*/
62638
62639
62640
62641#include "config.h"
62642#include "dwarf_incl.h"
62643#ifdef HAVE_ELF_H
62644#include <elf.h>
62645#endif
62646#include <stdio.h>
62647#include "dwarf_die_deliv.h"
62648
62649
62650/*
62651    For a given Dwarf_Debug dbg, this function checks
62652    if a CU that includes the given offset has been read
62653    or not.  If yes, it returns the Dwarf_CU_Context
62654    for the CU.  Otherwise it returns NULL.  Being an
62655    internal routine, it is assumed that a valid dbg
62656    is passed.
62657
62658    **This is a sequential search.  May be too slow.
62659
62660    If debug_info and debug_abbrev not loaded, this will
62661    wind up returning NULL. So no need to load before calling
62662    this.
62663*/
62664static Dwarf_CU_Context
62665_dwarf_find_CU_Context(Dwarf_Debug dbg, Dwarf_Off offset)
62666{
62667    Dwarf_CU_Context cu_context;
62668
62669    if (offset >= dbg->de_info_last_offset)
62670	return (NULL);
62671
62672    if (dbg->de_cu_context != NULL &&
62673	dbg->de_cu_context->cc_next != NULL &&
62674	dbg->de_cu_context->cc_next->cc_debug_info_offset == offset) {
62675
62676	return (dbg->de_cu_context->cc_next);
62677    }
62678
62679    if (dbg->de_cu_context != NULL &&
62680	dbg->de_cu_context->cc_debug_info_offset <= offset) {
62681
62682	for (cu_context = dbg->de_cu_context;
62683	     cu_context != NULL; cu_context = cu_context->cc_next) {
62684
62685	    if (offset >= cu_context->cc_debug_info_offset &&
62686		offset < cu_context->cc_debug_info_offset +
62687		cu_context->cc_length + cu_context->cc_length_size
62688		+ cu_context->cc_extension_size) {
62689
62690		return (cu_context);
62691	    }
62692	}
62693    }
62694
62695    for (cu_context = dbg->de_cu_context_list;
62696	 cu_context != NULL; cu_context = cu_context->cc_next) {
62697
62698	if (offset >= cu_context->cc_debug_info_offset &&
62699	    offset < cu_context->cc_debug_info_offset +
62700	    cu_context->cc_length + cu_context->cc_length_size
62701	    + cu_context->cc_extension_size) {
62702
62703	    return (cu_context);
62704	}
62705    }
62706
62707    return (NULL);
62708}
62709
62710
62711/*
62712    This routine checks the dwarf_offdie() list of
62713    CU contexts for the right CU context.
62714*/
62715static Dwarf_CU_Context
62716_dwarf_find_offdie_CU_Context(Dwarf_Debug dbg, Dwarf_Off offset)
62717{
62718    Dwarf_CU_Context cu_context;
62719
62720    for (cu_context = dbg->de_offdie_cu_context;
62721	 cu_context != NULL; cu_context = cu_context->cc_next)
62722
62723	if (offset >= cu_context->cc_debug_info_offset &&
62724	    offset < cu_context->cc_debug_info_offset +
62725	    cu_context->cc_length + cu_context->cc_length_size
62726	    + cu_context->cc_extension_size)
62727
62728	    return (cu_context);
62729
62730    return (NULL);
62731}
62732
62733
62734/*
62735    This function is used to create a CU Context for
62736    a compilation-unit that begins at offset in
62737    .debug_info.  The CU Context is attached to the
62738    list of CU Contexts for this dbg.  It is assumed
62739    that the CU at offset has not been read before,
62740    and so do not call this routine before making
62741    sure of this with _dwarf_find_CU_Context().
62742    Returns NULL on error.  As always, being an
62743    internal routine, assumes a good dbg.
62744
62745    This function must always set a dwarf error code
62746    before returning NULL. Always.
62747*/
62748static Dwarf_CU_Context
62749_dwarf_make_CU_Context(Dwarf_Debug dbg,
62750		       Dwarf_Off offset, Dwarf_Error * error)
62751{
62752    Dwarf_CU_Context cu_context;
62753    Dwarf_Unsigned length;
62754    Dwarf_Signed abbrev_offset;
62755    Dwarf_Byte_Ptr cu_ptr;
62756    int local_extension_size = 0;
62757    int local_length_size;
62758
62759    cu_context =
62760	(Dwarf_CU_Context) _dwarf_get_alloc(dbg, DW_DLA_CU_CONTEXT, 1);
62761    if (cu_context == NULL) {
62762	_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
62763	return (NULL);
62764    }
62765    cu_context->cc_dbg = dbg;
62766
62767    cu_ptr = (Dwarf_Byte_Ptr) (dbg->de_debug_info + offset);
62768
62769    /* READ_AREA_LENGTH updates cu_ptr for consumed bytes */
62770    READ_AREA_LENGTH(dbg, length, Dwarf_Unsigned,
62771		     cu_ptr, local_length_size, local_extension_size);
62772    cu_context->cc_length_size = local_length_size;
62773    cu_context->cc_extension_size = local_extension_size;
62774
62775
62776    cu_context->cc_length = (Dwarf_Word) length;
62777
62778    READ_UNALIGNED(dbg, cu_context->cc_version_stamp, Dwarf_Half,
62779		   cu_ptr, sizeof(Dwarf_Half));
62780    cu_ptr += sizeof(Dwarf_Half);
62781
62782    READ_UNALIGNED(dbg, abbrev_offset, Dwarf_Signed,
62783		   cu_ptr, local_length_size);
62784    cu_ptr += local_length_size;
62785    cu_context->cc_abbrev_offset = (Dwarf_Sword) abbrev_offset;
62786
62787    cu_context->cc_address_size = *(Dwarf_Small *) cu_ptr;
62788
62789    if ((length < CU_VERSION_STAMP_SIZE + local_length_size +
62790	 CU_ADDRESS_SIZE_SIZE) ||
62791	(offset + length + local_length_size +
62792	 local_extension_size > dbg->de_debug_info_size)) {
62793
62794	_dwarf_error(dbg, error, DW_DLE_CU_LENGTH_ERROR);
62795	return (NULL);
62796    }
62797
62798    if (cu_context->cc_address_size != dbg->de_pointer_size) {
62799	_dwarf_error(dbg, error, DW_DLE_CU_ADDRESS_SIZE_BAD);
62800	return (NULL);
62801    }
62802
62803    if (cu_context->cc_version_stamp != CURRENT_VERSION_STAMP) {
62804	_dwarf_error(dbg, error, DW_DLE_VERSION_STAMP_ERROR);
62805	return (NULL);
62806    }
62807
62808    if (abbrev_offset >= dbg->de_debug_abbrev_size) {
62809	_dwarf_error(dbg, error, DW_DLE_ABBREV_OFFSET_ERROR);
62810	return (NULL);
62811    }
62812
62813    cu_context->cc_abbrev_hash_table =
62814	(Dwarf_Hash_Table) _dwarf_get_alloc(dbg, DW_DLA_HASH_TABLE, 1);
62815    if (cu_context->cc_abbrev_hash_table == NULL) {
62816	_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
62817	return (NULL);
62818    }
62819
62820    cu_context->cc_debug_info_offset = (Dwarf_Word) offset;
62821    dbg->de_info_last_offset =
62822	(Dwarf_Word) (offset + length +
62823		      local_extension_size + local_length_size);
62824
62825    if (dbg->de_cu_context_list == NULL) {
62826	dbg->de_cu_context_list = cu_context;
62827	dbg->de_cu_context_list_end = cu_context;
62828    } else {
62829	dbg->de_cu_context_list_end->cc_next = cu_context;
62830	dbg->de_cu_context_list_end = cu_context;
62831    }
62832
62833    return (cu_context);
62834}
62835
62836
62837/*
62838    Returns offset of next compilation-unit thru next_cu_offset
62839	pointer.
62840    It basically sequentially moves from one
62841    cu to the next.  The current cu is recorded
62842    internally by libdwarf.
62843*/
62844int
62845dwarf_next_cu_header(Dwarf_Debug dbg,
62846		     Dwarf_Unsigned * cu_header_length,
62847		     Dwarf_Half * version_stamp,
62848		     Dwarf_Unsigned * abbrev_offset,
62849		     Dwarf_Half * address_size,
62850		     Dwarf_Unsigned * next_cu_offset,
62851		     Dwarf_Error * error)
62852{
62853    /* Offset for current and new CU. */
62854    Dwarf_Unsigned new_offset;
62855
62856    /* CU Context for current CU. */
62857    Dwarf_CU_Context cu_context;
62858
62859    /* ***** BEGIN CODE ***** */
62860
62861    if (dbg == NULL) {
62862	_dwarf_error(NULL, error, DW_DLE_DBG_NULL);
62863	return (DW_DLV_ERROR);
62864    }
62865    /*
62866       Get offset into .debug_info of next CU. If dbg has no context,
62867       this has to be the first one. */
62868    if (dbg->de_cu_context == NULL) {
62869	new_offset = 0;
62870	if (!dbg->de_debug_info) {
62871	    int res = _dwarf_load_debug_info(dbg, error);
62872
62873	    if (res != DW_DLV_OK) {
62874		return res;
62875	    }
62876	}
62877
62878    } else {
62879	new_offset = dbg->de_cu_context->cc_debug_info_offset +
62880	    dbg->de_cu_context->cc_length +
62881	    dbg->de_cu_context->cc_length_size +
62882	    dbg->de_cu_context->cc_extension_size;
62883    }
62884
62885    /*
62886       Check that there is room in .debug_info beyond the new offset
62887       for at least a new cu header. If not, return 0 to indicate end
62888       of debug_info section, and reset de_cu_debug_info_offset to
62889       enable looping back through the cu's. */
62890    if ((new_offset + _dwarf_length_of_cu_header_simple(dbg)) >=
62891	dbg->de_debug_info_size) {
62892	dbg->de_cu_context = NULL;
62893	return (DW_DLV_NO_ENTRY);
62894    }
62895
62896    /* Check if this CU has been read before. */
62897    cu_context = _dwarf_find_CU_Context(dbg, new_offset);
62898
62899    /* If not, make CU Context for it. */
62900    if (cu_context == NULL) {
62901	cu_context = _dwarf_make_CU_Context(dbg, new_offset, error);
62902	if (cu_context == NULL) {
62903	    /* Error if CU Context could not be made. Since
62904	       _dwarf_make_CU_Context has already registered an error
62905	       we do not do that here: we let the lower error pass
62906	       thru. */
62907	    return (DW_DLV_ERROR);
62908	}
62909    }
62910
62911    dbg->de_cu_context = cu_context;
62912
62913    if (cu_header_length != NULL)
62914	*cu_header_length = cu_context->cc_length;
62915
62916    if (version_stamp != NULL)
62917	*version_stamp = cu_context->cc_version_stamp;
62918
62919    if (abbrev_offset != NULL)
62920	*abbrev_offset = cu_context->cc_abbrev_offset;
62921
62922    if (address_size != NULL)
62923	*address_size = cu_context->cc_address_size;
62924
62925    new_offset = new_offset + cu_context->cc_length +
62926	cu_context->cc_length_size + cu_context->cc_extension_size;
62927    *next_cu_offset = new_offset;
62928    return (DW_DLV_OK);
62929}
62930
62931
62932/*
62933    This function does two slightly different things
62934    depending on the input flag want_AT_sibling.  If
62935    this flag is true, it checks if the input die has
62936    a DW_AT_sibling attribute.  If it does it returns
62937    a pointer to the start of the sibling die in the
62938    .debug_info section.  Otherwise it behaves the
62939    same as the want_AT_sibling false case.
62940
62941    If the want_AT_sibling flag is false, it returns
62942    a pointer to the immediately adjacent die in the
62943    .debug_info section.
62944
62945    Die_info_end points to the end of the .debug_info
62946    portion for the cu the die belongs to.  It is used
62947    to check that the search for the next die does not
62948    cross the end of the current cu.  Cu_info_start points
62949    to the start of the .debug_info portion for the
62950    current cu, and is used to add to the offset for
62951    DW_AT_sibling attributes.  Finally, has_die_child
62952    is a pointer to a Dwarf_Bool that is set true if
62953    the present die has children, false otherwise.
62954    However, in case want_AT_child is true and the die
62955    has a DW_AT_sibling attribute *has_die_child is set
62956    false to indicate that the children are being skipped.
62957*/
62958static Dwarf_Byte_Ptr
62959_dwarf_next_die_info_ptr(Dwarf_Byte_Ptr die_info_ptr,
62960			 Dwarf_CU_Context cu_context,
62961			 Dwarf_Byte_Ptr die_info_end,
62962			 Dwarf_Byte_Ptr cu_info_start,
62963			 Dwarf_Bool want_AT_sibling,
62964			 Dwarf_Bool * has_die_child)
62965{
62966    Dwarf_Byte_Ptr info_ptr;
62967    Dwarf_Byte_Ptr abbrev_ptr;
62968    Dwarf_Word abbrev_code;
62969    Dwarf_Abbrev_List abbrev_list;
62970    Dwarf_Half attr;
62971    Dwarf_Half attr_form;
62972    Dwarf_Unsigned offset;
62973    Dwarf_Word leb128_length;
62974    Dwarf_Unsigned utmp;
62975    Dwarf_Debug dbg;
62976
62977    info_ptr = die_info_ptr;
62978    DECODE_LEB128_UWORD(info_ptr, utmp)
62979	abbrev_code = (Dwarf_Word) utmp;
62980    if (abbrev_code == 0) {
62981	return NULL;
62982    }
62983
62984    abbrev_list = _dwarf_get_abbrev_for_code(cu_context, abbrev_code);
62985    if (abbrev_list == NULL) {
62986	return (NULL);
62987    }
62988    dbg = cu_context->cc_dbg;
62989
62990    *has_die_child = abbrev_list->ab_has_child;
62991
62992    abbrev_ptr = abbrev_list->ab_abbrev_ptr;
62993    do {
62994	Dwarf_Unsigned utmp2;
62995
62996	DECODE_LEB128_UWORD(abbrev_ptr, utmp2)
62997	    attr = (Dwarf_Half) utmp2;
62998	DECODE_LEB128_UWORD(abbrev_ptr, utmp2)
62999	    attr_form = (Dwarf_Half) utmp2;
63000	if (attr_form == DW_FORM_indirect) {
63001	    Dwarf_Unsigned utmp6;
63002
63003	    /* READ_UNALIGNED does update info_ptr */
63004	    DECODE_LEB128_UWORD(info_ptr, utmp6)
63005		attr_form = (Dwarf_Half) utmp6;
63006
63007	}
63008
63009	if (want_AT_sibling && attr == DW_AT_sibling) {
63010	    switch (attr_form) {
63011	    case DW_FORM_ref1:
63012		offset = *(Dwarf_Small *) info_ptr;
63013		break;
63014	    case DW_FORM_ref2:
63015		READ_UNALIGNED(dbg, offset, Dwarf_Unsigned,
63016			       info_ptr, sizeof(Dwarf_Half));
63017		break;
63018	    case DW_FORM_ref4:
63019		READ_UNALIGNED(dbg, offset, Dwarf_Unsigned,
63020			       info_ptr, sizeof(Dwarf_ufixed));
63021		break;
63022	    case DW_FORM_ref8:
63023		READ_UNALIGNED(dbg, offset, Dwarf_Unsigned,
63024			       info_ptr, sizeof(Dwarf_Unsigned));
63025		break;
63026	    case DW_FORM_ref_udata:
63027		offset =
63028		    _dwarf_decode_u_leb128(info_ptr, &leb128_length);
63029		break;
63030	    default:
63031		return (NULL);
63032	    }
63033
63034	    /* Reset *has_die_child to indicate children skipped.  */
63035	    *has_die_child = false;
63036
63037	    if (cu_info_start + offset > die_info_end) {
63038		return (NULL);
63039	    } else {
63040		return (cu_info_start + offset);
63041	    }
63042	}
63043
63044	if (attr_form != 0) {
63045	    info_ptr += _dwarf_get_size_of_val(cu_context->cc_dbg,
63046					       attr_form, info_ptr,
63047					       cu_context->
63048					       cc_length_size);
63049	    if (info_ptr > die_info_end) {
63050		return (NULL);
63051	    }
63052	}
63053    } while (attr != 0 || attr_form != 0);
63054
63055    return (info_ptr);
63056}
63057
63058
63059/*
63060    Given a Dwarf_Debug dbg, and a Dwarf_Die die, it returns
63061    a Dwarf_Die for the sibling of die.  In case die is NULL,
63062    it returns (thru ptr) a Dwarf_Die for the first die in the current
63063    cu in dbg.  Returns DW_DLV_ERROR on error.
63064
63065    It is assumed that every sibling chain including those with
63066    only one element is terminated with a NULL die, except a
63067    chain with only a NULL die.
63068
63069    The algorithm moves from one die to the adjacent one.  It
63070    returns when the depth of children it sees equals the number
63071    of sibling chain terminations.  A single count, child_depth
63072    is used to track the depth of children and sibling terminations
63073    encountered.  Child_depth is incremented when a die has the
63074    Has-Child flag set unless the child happens to be a NULL die.
63075    Child_depth is decremented when a die has Has-Child false,
63076    and the adjacent die is NULL.  Algorithm returns when
63077    child_depth is 0.
63078
63079    **NOTE: Do not modify input die, since it is used at the end.
63080*/
63081int
63082dwarf_siblingof(Dwarf_Debug dbg,
63083		Dwarf_Die die,
63084		Dwarf_Die * caller_ret_die, Dwarf_Error * error)
63085{
63086    Dwarf_Die ret_die;
63087    Dwarf_Byte_Ptr die_info_ptr;
63088    Dwarf_Byte_Ptr cu_info_start = 0;
63089    Dwarf_Byte_Ptr die_info_end = 0;
63090    Dwarf_Half abbrev_code;
63091    Dwarf_Unsigned utmp;
63092
63093
63094    if (dbg == NULL) {
63095	_dwarf_error(NULL, error, DW_DLE_DBG_NULL);
63096	return (DW_DLV_ERROR);
63097    }
63098
63099    if (die == NULL) {
63100	/* Find root die of cu */
63101	/* die_info_end is untouched here, need not be set in this
63102	   branch. */
63103	Dwarf_Off off2;
63104
63105	/* If we've not loaded debug_info, de_cu_context will be NULL,
63106	   so no need to laod */
63107
63108	if (dbg->de_cu_context == NULL) {
63109	    _dwarf_error(dbg, error, DW_DLE_DBG_NO_CU_CONTEXT);
63110	    return (DW_DLV_ERROR);
63111	}
63112
63113	off2 = dbg->de_cu_context->cc_debug_info_offset;
63114	die_info_ptr = dbg->de_debug_info +
63115	    off2 + _dwarf_length_of_cu_header(dbg, off2);
63116    } else {
63117	/* Find sibling die. */
63118	Dwarf_Bool has_child;
63119	Dwarf_Sword child_depth;
63120
63121	/* We cannot have a legal die unless debug_info was loaded, so
63122	   no need to load debug_info here. */
63123	CHECK_DIE(die, DW_DLV_ERROR)
63124
63125	    die_info_ptr = die->di_debug_info_ptr;
63126	if (*die_info_ptr == 0) {
63127	    return (DW_DLV_NO_ENTRY);
63128	}
63129	cu_info_start = dbg->de_debug_info +
63130	    die->di_cu_context->cc_debug_info_offset;
63131	die_info_end = cu_info_start + die->di_cu_context->cc_length +
63132	    die->di_cu_context->cc_length_size +
63133	    die->di_cu_context->cc_extension_size;
63134
63135	if ((*die_info_ptr) == 0) {
63136	    return (DW_DLV_NO_ENTRY);
63137	}
63138	child_depth = 0;
63139	do {
63140	    die_info_ptr = _dwarf_next_die_info_ptr(die_info_ptr,
63141						    die->di_cu_context,
63142						    die_info_end,
63143						    cu_info_start, true,
63144						    &has_child);
63145	    if (die_info_ptr == NULL) {
63146		_dwarf_error(dbg, error, DW_DLE_NEXT_DIE_PTR_NULL);
63147		return (DW_DLV_ERROR);
63148	    }
63149
63150	    if ((*die_info_ptr) == 0 && has_child) {
63151		die_info_ptr++;
63152		has_child = false;
63153	    }
63154
63155	    if ((*die_info_ptr) == 0)
63156		for (; child_depth > 0 && *die_info_ptr == 0;
63157		     child_depth--, die_info_ptr++);
63158	    else
63159		child_depth = has_child ? child_depth + 1 : child_depth;
63160
63161	} while (child_depth != 0);
63162    }
63163
63164    if (die != NULL && die_info_ptr >= die_info_end) {
63165	return (DW_DLV_NO_ENTRY);
63166    }
63167
63168    if ((*die_info_ptr) == 0) {
63169	return (DW_DLV_NO_ENTRY);
63170    }
63171
63172    ret_die = (Dwarf_Die) _dwarf_get_alloc(dbg, DW_DLA_DIE, 1);
63173    if (ret_die == NULL) {
63174	_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
63175	return (DW_DLV_ERROR);
63176    }
63177
63178    ret_die->di_debug_info_ptr = die_info_ptr;
63179    ret_die->di_cu_context =
63180	die == NULL ? dbg->de_cu_context : die->di_cu_context;
63181
63182    DECODE_LEB128_UWORD(die_info_ptr, utmp)
63183	abbrev_code = (Dwarf_Half) utmp;
63184    if (abbrev_code == 0) {
63185	/* Zero means a null DIE */
63186	return (DW_DLV_NO_ENTRY);
63187    }
63188    ret_die->di_abbrev_list =
63189	_dwarf_get_abbrev_for_code(ret_die->di_cu_context, abbrev_code);
63190    if (ret_die->di_abbrev_list == NULL || (die == NULL &&
63191					    ret_die->di_abbrev_list->
63192					    ab_tag !=
63193					    DW_TAG_compile_unit)) {
63194	_dwarf_error(dbg, error, DW_DLE_FIRST_DIE_NOT_CU);
63195	return (DW_DLV_ERROR);
63196    }
63197
63198    *caller_ret_die = ret_die;
63199    return (DW_DLV_OK);
63200}
63201
63202
63203int
63204dwarf_child(Dwarf_Die die,
63205	    Dwarf_Die * caller_ret_die, Dwarf_Error * error)
63206{
63207    Dwarf_Byte_Ptr die_info_ptr;
63208    Dwarf_Byte_Ptr die_info_end;
63209    Dwarf_Die ret_die;
63210    Dwarf_Bool has_die_child;
63211    Dwarf_Debug dbg;
63212    Dwarf_Half abbrev_code;
63213    Dwarf_Unsigned utmp;
63214
63215
63216    CHECK_DIE(die, DW_DLV_ERROR)
63217	dbg = die->di_cu_context->cc_dbg;
63218    die_info_ptr = die->di_debug_info_ptr;
63219
63220    /* NULL die has no child. */
63221    if ((*die_info_ptr) == 0)
63222	return (DW_DLV_NO_ENTRY);
63223
63224    die_info_end = dbg->de_debug_info +
63225	die->di_cu_context->cc_debug_info_offset +
63226	die->di_cu_context->cc_length +
63227	die->di_cu_context->cc_length_size +
63228	die->di_cu_context->cc_extension_size;
63229
63230    die_info_ptr =
63231	_dwarf_next_die_info_ptr(die_info_ptr, die->di_cu_context,
63232				 die_info_end, NULL, false,
63233				 &has_die_child);
63234    if (die_info_ptr == NULL) {
63235	_dwarf_error(dbg, error, DW_DLE_NEXT_DIE_PTR_NULL);
63236	return (DW_DLV_ERROR);
63237    }
63238
63239    if (!has_die_child)
63240	return (DW_DLV_NO_ENTRY);
63241
63242    ret_die = (Dwarf_Die) _dwarf_get_alloc(dbg, DW_DLA_DIE, 1);
63243    if (ret_die == NULL) {
63244	_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
63245	return (DW_DLV_ERROR);
63246    }
63247    ret_die->di_debug_info_ptr = die_info_ptr;
63248    ret_die->di_cu_context = die->di_cu_context;
63249
63250    DECODE_LEB128_UWORD(die_info_ptr, utmp)
63251	abbrev_code = (Dwarf_Half) utmp;
63252    if (abbrev_code == 0) {
63253	/* We have arrived at a null DIE, at the end of a CU or the end
63254	   of a list of siblings. */
63255	*caller_ret_die = 0;
63256	return DW_DLV_NO_ENTRY;
63257    }
63258    ret_die->di_abbrev_list =
63259	_dwarf_get_abbrev_for_code(die->di_cu_context, abbrev_code);
63260    if (ret_die->di_abbrev_list == NULL) {
63261	_dwarf_error(dbg, error, DW_DLE_DIE_BAD);
63262	return (DW_DLV_ERROR);
63263    }
63264
63265    *caller_ret_die = ret_die;
63266    return (DW_DLV_OK);
63267}
63268
63269/*
63270	Given a die offset, this returns
63271	a pointer to a DIE thru *new_die.
63272	It is up to the caller to do a
63273	dwarf_dealloc(dbg,*new_die,DW_DLE_DIE);
63274*/
63275int
63276dwarf_offdie(Dwarf_Debug dbg,
63277	     Dwarf_Off offset, Dwarf_Die * new_die, Dwarf_Error * error)
63278{
63279    Dwarf_CU_Context cu_context;
63280    Dwarf_Off new_cu_offset = 0;
63281    Dwarf_Die die;
63282    Dwarf_Byte_Ptr info_ptr;
63283    Dwarf_Half abbrev_code;
63284    Dwarf_Unsigned utmp;
63285
63286    if (dbg == NULL) {
63287	_dwarf_error(NULL, error, DW_DLE_DBG_NULL);
63288	return (DW_DLV_ERROR);
63289    }
63290
63291    cu_context = _dwarf_find_CU_Context(dbg, offset);
63292    if (cu_context == NULL)
63293	cu_context = _dwarf_find_offdie_CU_Context(dbg, offset);
63294
63295    if (cu_context == NULL) {
63296	int res = _dwarf_load_debug_info(dbg, error);
63297
63298	if (res != DW_DLV_OK) {
63299	    return res;
63300	}
63301
63302	if (dbg->de_cu_context_list_end != NULL)
63303	    new_cu_offset =
63304		dbg->de_cu_context_list_end->cc_debug_info_offset +
63305		dbg->de_cu_context_list_end->cc_length +
63306		dbg->de_cu_context_list_end->cc_length_size +
63307		dbg->de_cu_context_list_end->cc_extension_size;
63308
63309	do {
63310	    if ((new_cu_offset +
63311		 _dwarf_length_of_cu_header_simple(dbg)) >=
63312		dbg->de_debug_info_size) {
63313		_dwarf_error(dbg, error, DW_DLE_OFFSET_BAD);
63314		return (DW_DLV_ERROR);
63315	    }
63316
63317	    cu_context =
63318		_dwarf_make_CU_Context(dbg, new_cu_offset, error);
63319	    if (cu_context == NULL) {
63320		/* Error if CU Context could not be made. Since
63321		   _dwarf_make_CU_Context has already registered an
63322		   error we do not do that here: we let the lower error
63323		   pass thru. */
63324
63325		return (DW_DLV_ERROR);
63326	    }
63327
63328	    if (dbg->de_offdie_cu_context == NULL) {
63329		dbg->de_offdie_cu_context = cu_context;
63330		dbg->de_offdie_cu_context_end = cu_context;
63331	    } else {
63332		dbg->de_offdie_cu_context_end->cc_next = cu_context;
63333		dbg->de_offdie_cu_context_end = cu_context;
63334	    }
63335
63336	    new_cu_offset = new_cu_offset + cu_context->cc_length +
63337		cu_context->cc_length_size;
63338
63339	} while (offset >= new_cu_offset);
63340    }
63341
63342    die = (Dwarf_Die) _dwarf_get_alloc(dbg, DW_DLA_DIE, 1);
63343    if (die == NULL) {
63344	_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
63345	return (DW_DLV_ERROR);
63346    }
63347    die->di_cu_context = cu_context;
63348
63349    info_ptr = dbg->de_debug_info + offset;
63350    die->di_debug_info_ptr = info_ptr;
63351    DECODE_LEB128_UWORD(info_ptr, utmp)
63352	abbrev_code = (Dwarf_Half) utmp;
63353    if (abbrev_code == 0) {
63354	/* we are at a null DIE (or there is a bug). */
63355	*new_die = 0;
63356	return DW_DLV_NO_ENTRY;
63357    }
63358
63359    die->di_abbrev_list =
63360	_dwarf_get_abbrev_for_code(cu_context, abbrev_code);
63361    if (die->di_abbrev_list == NULL) {
63362	_dwarf_error(dbg, error, DW_DLE_DIE_ABBREV_LIST_NULL);
63363	return (DW_DLV_ERROR);
63364    }
63365
63366    *new_die = die;
63367    return (DW_DLV_OK);
63368}
63369���0707010001ad680000812400011e740000000a0000000140206828000006df000000660000000000000000000000000000001b00000000libdwarf/dwarf_die_deliv.h����/*
63370
63371  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
63372
63373  This program is free software; you can redistribute it and/or modify it
63374  under the terms of version 2.1 of the GNU Lesser General Public License
63375  as published by the Free Software Foundation.
63376
63377  This program is distributed in the hope that it would be useful, but
63378  WITHOUT ANY WARRANTY; without even the implied warranty of
63379  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
63380
63381  Further, this software is distributed without any warranty that it is
63382  free of the rightful claim of any third person regarding infringement
63383  or the like.  Any license provided herein, whether implied or
63384  otherwise, applies only to this software file.  Patent licenses, if
63385  any, provided herein do not apply to combinations of this program with
63386  other software, or any other product whatsoever.
63387
63388  You should have received a copy of the GNU Lesser General Public
63389  License along with this program; if not, write the Free Software
63390  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
63391  USA.
63392
63393  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
63394  Mountain View, CA 94043, or:
63395
63396  http://www.sgi.com
63397
63398  For further information regarding this notice, see:
63399
63400  http://oss.sgi.com/projects/GenInfo/NoticeExplan
63401
63402*/
63403
63404
63405
63406
63407/*
63408    This struct holds information about a abbreviation.
63409    It is put in the hash table for abbreviations for
63410    a compile-unit.
63411*/
63412struct Dwarf_Abbrev_List_s {
63413
63414    Dwarf_Word ab_code;
63415    Dwarf_Half ab_tag;
63416    Dwarf_Half ab_has_child;
63417
63418    /*
63419       Points to start of attribute and form pairs in the .debug_abbrev
63420       section for the abbrev. */
63421    Dwarf_Byte_Ptr ab_abbrev_ptr;
63422
63423    struct Dwarf_Abbrev_List_s *ab_next;
63424};
63425�0707010001ad690000812400011e740000000a000000014020682700003136000000660000000000000000000000000000001700000000libdwarf/dwarf_error.c����/*
63426
63427  Copyright (C) 2000, 2002 Silicon Graphics, Inc.  All Rights Reserved.
63428
63429  This program is free software; you can redistribute it and/or modify it
63430  under the terms of version 2.1 of the GNU Lesser General Public License
63431  as published by the Free Software Foundation.
63432
63433  This program is distributed in the hope that it would be useful, but
63434  WITHOUT ANY WARRANTY; without even the implied warranty of
63435  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
63436
63437  Further, this software is distributed without any warranty that it is
63438  free of the rightful claim of any third person regarding infringement
63439  or the like.  Any license provided herein, whether implied or
63440  otherwise, applies only to this software file.  Patent licenses, if
63441  any, provided herein do not apply to combinations of this program with
63442  other software, or any other product whatsoever.
63443
63444  You should have received a copy of the GNU Lesser General Public
63445  License along with this program; if not, write the Free Software
63446  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
63447  USA.
63448
63449  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
63450  Mountain View, CA 94043, or:
63451
63452  http://www.sgi.com
63453
63454  For further information regarding this notice, see:
63455
63456  http://oss.sgi.com/projects/GenInfo/NoticeExplan
63457
63458*/
63459
63460
63461
63462#include "config.h"
63463#include "dwarf_incl.h"
63464#ifdef HAVE_ELF_H
63465#include <elf.h>
63466#endif
63467
63468#include <stdio.h>
63469#include <sys/stat.h>
63470#include <sys/types.h>
63471#include <stdlib.h>
63472
63473/* Array to hold string representation of errors. Any time a
63474   define is added to the list in libdwarf.h, a string should be
63475   added to this Array
63476*/
63477
63478const char *_dwarf_errmsgs[] = {
63479
63480    "No error (0)\n",
63481    "DW_DLE_VMM 1 dwarf format/library version mismatch",
63482    "DW_DLE_MAP 2 memory map failure",
63483    "DW_DLE_LEE 3 libelf error",
63484    "DW_DLE_NDS 4 no debug section",
63485    "DW_DLE_NLS    5  no line section ",
63486    "DW_DLE_ID     6  invalid descriptor for query ",
63487    "DW_DLE_IOF    7  I/O failure ",
63488    "DW_DLE_MAF    8  memory allocation failure ",
63489    "DW_DLE_IA     9  invalid argument ",
63490    "DW_DLE_MDE    10  mangled debugging entry ",
63491    "DW_DLE_MLE    11  mangled line number entry ",
63492    "DW_DLE_FNO    12  file not open ",
63493    "DW_DLE_FNR    13  file not a regular file ",
63494    "DW_DLE_FWA    14  file open with wrong access ",
63495    "DW_DLE_NOB    15  not an object file ",
63496    "DW_DLE_MOF    16  mangled object file header ",
63497    "DW_DLE_EOLL   17  end of location list entries ",
63498    "DW_DLE_NOLL   18  no location list section ",
63499    "DW_DLE_BADOFF 19  Invalid offset ",
63500    "DW_DLE_EOS    20  end of section  ",
63501    "DW_DLE_ATRUNC 21  abbreviations section appears truncated",
63502    "DW_DLE_BADBITC  22  Address size passed to dwarf bad",
63503
63504    "DW_DLE_DBG_ALLOC 23 Unable to malloc a Dwarf_Debug structure",
63505    "DW_DLE_FSTAT_ERROR 24 The file fd passed to dwarf_init "
63506	"cannot be fstat()ed",
63507    "DW_DLE_FSTAT_MODE_ERROR 25 The file mode bits do not "
63508	"indicate that the file being opened via "
63509	"dwarf_init() is a normal file",
63510    "DW_DLE_INIT_ACCESS_WRONG 26 A call to dwarf_init had an "
63511	"access of other than DW_DLC_READ",
63512    "DW_DLE_ELF_BEGIN_ERROR 27 a call to "
63513	"elf_begin(... ELF_C_READ_MMAP... ) failed",
63514    "DW_DLE_ELF_GETEHDR_ERROR 28 a call to "
63515	"elf32_getehdr() or elf64_getehdr() failed",
63516    "DW_DLE_ELF_GETSHDR_ERROR 29 a call to "
63517	"elf32_getshdr() or elf64_getshdr() failed",
63518    "DW_DLE_ELF_STRPTR_ERROR 30 a call to "
63519	"elf_strptr() failed trying to get a section name",
63520    "DW_DLE_DEBUG_INFO_DUPLICATE 31  Only one .debug_info  "
63521	"section is allowed",
63522    "DW_DLE_DEBUG_INFO_NULL 32 .debug_info section present but "
63523	"elf_getdata() failed or section is zero-length",
63524    "DW_DLE_DEBUG_ABBREV_DUPLICATE 33 Only one .debug_abbrev  "
63525	"section is allowed",
63526    "DW_DLE_DEBUG_ABBREV_NULL 34 .debug_abbrev section present but "
63527	"elf_getdata() failed or section is zero-length",
63528    "DW_DLE_DEBUG_ARANGES_DUPLICATE 35 Only one .debug_aranges  "
63529	"section is allowed",
63530    "DW_DLE_DEBUG_ARANGES_NULL 36 .debug_aranges section present but "
63531	"elf_getdata() failed or section is zero-length",
63532    "DW_DLE_DEBUG_LINE_DUPLICATE 37 Only one .debug_line  "
63533	"section is allowed",
63534    "DW_DLE_DEBUG_LINE_NULL (38) .debug_line section present but "
63535	"elf_getdata() failed or section is zero-length",
63536    "DW_DLE_DEBUG_LOC_DUPLICATE (39) Only one .debug_loc  "
63537	"section is allowed",
63538    "DW_DLE_DEBUG_LOC_NULL (40) .debug_loc section present but "
63539	"elf_getdata() failed or section is zero-length",
63540    "DW_DLE_DEBUG_MACINFO_DUPLICATE (41) Only one .debug_macinfo  "
63541	"section is allowed",
63542    "DW_DLE_DEBUG_MACINFO_NULL (42) .debug_macinfo section present but "
63543	"elf_getdata() failed or section is zero-length",
63544    "DW_DLE_DEBUG_PUBNAMES_DUPLICATE (43) Only one .debug_pubnames  "
63545	"section is allowed",
63546    "DW_DLE_DEBUG_PUBNAMES_NULL (44) .debug_pubnames section present but "
63547	"elf_getdata() failed or section is zero-length",
63548    "DW_DLE_DEBUG_STR_DUPLICATE (45)  Only one .debug_str  "
63549	"section is allowed",
63550    "DW_DLE_DEBUG_STR_NULL (46) .debug_str section present but "
63551	"elf_getdata() failed or section is zero-length",
63552    "DW_DLE_CU_LENGTH_ERROR (47)",
63553    "DW_DLE_VERSION_STAMP_ERROR (48)",
63554    "DW_DLE_ABBREV_OFFSET_ERROR (49)",
63555    "DW_DLE_ADDRESS_SIZE_ERROR (50)",
63556    "DW_DLE_DEBUG_INFO_PTR_NULL (51)",
63557    "DW_DLE_DIE_NULL (52)",
63558    "DW_DLE_STRING_OFFSET_BAD (53)",
63559    "DW_DLE_DEBUG_LINE_LENGTH_BAD (54)",
63560    "DW_DLE_LINE_PROLOG_LENGTH_BAD (55)",
63561    "DW_DLE_LINE_NUM_OPERANDS_BAD",
63562    "DW_DLE_LINE_SET_ADDR_ERROR",
63563    "DW_DLE_LINE_EXT_OPCODE_BAD",
63564    "DW_DLE_DWARF_LINE_NULL",
63565    "DW_DLE_INCL_DIR_NUM_BAD",
63566    "DW_DLE_LINE_FILE_NUM_BAD",
63567    "DW_DLE_ALLOC_FAIL",
63568    "DW_DLE_NO_CALLBACK_FUNC",
63569    "DW_DLE_SECT_ALLOC",
63570    "DW_DLE_FILE_ENTRY_ALLOC",
63571    "DW_DLE_LINE_ALLOC",
63572    "DW_DLE_FPGM_ALLOC",
63573    "DW_DLE_INCDIR_ALLOC",
63574    "DW_DLE_STRING_ALLOC",
63575    "DW_DLE_CHUNK_ALLOC",
63576    "DW_DLE_BYTEOFF_ERR",
63577    "DW_DLE_CIE_ALLOC",
63578    "DW_DLE_FDE_ALLOC",
63579    "DW_DLE_REGNO_OVFL",
63580    "DW_DLE_CIE_OFFS_ALLOC",
63581    "DW_DLE_WRONG_ADDRESS",
63582    "DW_DLE_EXTRA_NEIGHBORS",
63583    "DW_DLE_WRONG_TAG",
63584    "DW_DLE_DIE_ALLOC",
63585    "DW_DLE_PARENT_EXISTS",
63586    "DW_DLE_DBG_NULL",
63587    "DW_DLE_DEBUGLINE_ERROR",
63588    "DW_DLE_DEBUGFRAME_ERROR",
63589    "DW_DLE_DEBUGINFO_ERROR",
63590    "DW_DLE_ATTR_ALLOC",
63591    "DW_DLE_ABBREV_ALLOC",
63592    "DW_DLE_OFFSET_UFLW",
63593    "DW_DLE_ELF_SECT_ERR",
63594    "DW_DLE_DEBUG_FRAME_LENGTH_BAD",
63595    "DW_DLE_FRAME_VERSION_BAD",
63596    "DW_DLE_CIE_RET_ADDR_REG_ERROR",
63597    "DW_DLE_FDE_NULL",
63598    "DW_DLE_FDE_DBG_NULL",
63599    "DW_DLE_CIE_NULL",
63600    "DW_DLE_CIE_DBG_NULL",
63601    "DW_DLE_FRAME_TABLE_COL_BAD",
63602    "DW_DLE_PC_NOT_IN_FDE_RANGE",
63603    "DW_DLE_CIE_INSTR_EXEC_ERROR",
63604    "DW_DLE_FRAME_INSTR_EXEC_ERROR",
63605    "DW_DLE_FDE_PTR_NULL",
63606    "DW_DLE_RET_OP_LIST_NULL",
63607    "DW_DLE_LINE_CONTEXT_NULL",
63608    "DW_DLE_DBG_NO_CU_CONTEXT",
63609    "DW_DLE_DIE_NO_CU_CONTEXT",
63610    "DW_DLE_FIRST_DIE_NOT_CU",
63611    "DW_DLE_NEXT_DIE_PTR_NULL",
63612    "DW_DLE_DEBUG_FRAME_DUPLICATE  Only one .debug_frame  "
63613	"section is allowed",
63614    "DW_DLE_DEBUG_FRAME_NULL  .debug_frame section present but "
63615	"elf_getdata() failed or section is zero-length",
63616    "DW_DLE_ABBREV_DECODE_ERROR",
63617    "DW_DLE_DWARF_ABBREV_NULL",
63618    "DW_DLE_ATTR_NULL",
63619    "DW_DLE_DIE_BAD",
63620    "DW_DLE_DIE_ABBREV_BAD",
63621    "DW_DLE_ATTR_FORM_BAD",
63622    "DW_DLE_ATTR_NO_CU_CONTEXT",
63623    "DW_DLE_ATTR_FORM_SIZE_BAD",
63624    "DW_DLE_ATTR_DBG_NULL",
63625    "DW_DLE_BAD_REF_FORM",
63626    "DW_DLE_ATTR_FORM_OFFSET_BAD",
63627    "DW_DLE_LINE_OFFSET_BAD",
63628    "DW_DLE_DEBUG_STR_OFFSET_BAD",
63629    "DW_DLE_STRING_PTR_NULL",
63630    "DW_DLE_PUBNAMES_VERSION_ERROR",
63631    "DW_DLE_PUBNAMES_LENGTH_BAD",
63632    "DW_DLE_GLOBAL_NULL",
63633    "DW_DLE_GLOBAL_CONTEXT_NULL",
63634    "DW_DLE_DIR_INDEX_BAD",
63635    "DW_DLE_LOC_EXPR_BAD",
63636    "DW_DLE_DIE_LOC_EXPR_BAD",
63637    "DW_DLE_ADDR_ALLOC",
63638    "DW_DLE_OFFSET_BAD",
63639    "DW_DLE_MAKE_CU_CONTEXT_FAIL",
63640    "DW_DLE_REL_ALLOC",
63641    "DW_DLE_ARANGE_OFFSET_BAD",
63642    "DW_DLE_SEGMENT_SIZE_BAD",
63643    "DW_DLE_ARANGE_LENGTH_BAD",
63644    "DW_DLE_ARANGE_DECODE_ERROR",
63645    "DW_DLE_ARANGES_NULL",
63646    "DW_DLE_ARANGE_NULL",
63647    "DW_DLE_NO_FILE_NAME",
63648    "DW_DLE_NO_COMP_DIR",
63649    "DW_DLE_CU_ADDRESS_SIZE_BAD",
63650    "DW_DLE_INPUT_ATTR_BAD",
63651    "DW_DLE_EXPR_NULL",
63652    "DW_DLE_BAD_EXPR_OPCODE",
63653    "DW_DLE_EXPR_LENGTH_BAD",
63654    "DW_DLE_MULTIPLE_RELOC_IN_EXPR",
63655    "DW_DLE_ELF_GETIDENT_ERROR",
63656    "DW_DLE_NO_AT_MIPS_FDE",
63657    "DW_DLE_NO_CIE_FOR_FDE",
63658    "DW_DLE_DIE_ABBREV_LIST_NULL",
63659    "DW_DLE_DEBUG_FUNCNAMES_DUPLICATE",
63660    "DW_DLE_DEBUG_FUNCNAMES_NULL .debug_funcnames section present but "
63661	"elf_getdata() failed or section is zero-length",
63662    "DW_DLE_DEBUG_FUNCNAMES_VERSION_ERROR",
63663    "DW_DLE_DEBUG_FUNCNAMES_LENGTH_BAD",
63664    "DW_DLE_FUNC_NULL",
63665    "DW_DLE_FUNC_CONTEXT_NULL",
63666    "DW_DLE_DEBUG_TYPENAMES_DUPLICATE",
63667    "DW_DLE_DEBUG_TYPENAMES_NULL .debug_typenames section present but "
63668	"elf_getdata() failed or section is zero-length",
63669    "DW_DLE_DEBUG_TYPENAMES_VERSION_ERROR",
63670    "DW_DLE_DEBUG_TYPENAMES_LENGTH_BAD",
63671    "DW_DLE_TYPE_NULL",
63672    "DW_DLE_TYPE_CONTEXT_NULL",
63673    "DW_DLE_DEBUG_VARNAMES_DUPLICATE",
63674    "DW_DLE_DEBUG_VARNAMES_NULL .debug_varnames section present but "
63675	"elf_getdata() failed or section is zero-length",
63676    "DW_DLE_DEBUG_VARNAMES_VERSION_ERROR",
63677    "DW_DLE_DEBUG_VARNAMES_LENGTH_BAD",
63678    "DW_DLE_VAR_NULL",
63679    "DW_DLE_VAR_CONTEXT_NULL",
63680    "DW_DLE_DEBUG_WEAKNAMES_DUPLICATE",
63681    "DW_DLE_DEBUG_WEAKNAMES_NULL .debug_weaknames section present but "
63682	"elf_getdata() failed or section is zero-length",
63683
63684    "DW_DLE_DEBUG_WEAKNAMES_VERSION_ERROR",
63685    "DW_DLE_DEBUG_WEAKNAMES_LENGTH_BAD",
63686    "DW_DLE_WEAK_NULL",
63687    "DW_DLE_WEAK_CONTEXT_NULL (175)",
63688    "DW_DLE_LOCDESC_COUNT_WRONG (176)",
63689    "DW_DLE_MACINFO_STRING_NULL (177)",
63690    "DW_DLE_MACINFO_STRING_EMPTY (178)",
63691    "DW_DLE_MACINFO_INTERNAL_ERROR_SPACE (179)",
63692    "DW_DLE_MACINFO_MALLOC_FAIL (180)",
63693    "DW_DLE_DEBUGMACINFO_ERROR (181)",
63694    "DW_DLE_DEBUG_MACRO_LENGTH_BAD (182)",
63695    "DW_DLE_DEBUG_MACRO_MAX_BAD (183)",
63696    "DW_DLE_DEBUG_MACRO_INTERNAL_ERR (184)",
63697    "DW_DLE_DEBUG_MACRO_MALLOC_SPACE (185)",
63698    "DW_DLE_DEBUG_MACRO_INCONSISTENT (186)",
63699    "DW_DLE_DF_NO_CIE_AUGMENTATION(187)",
63700    "DW_DLE_DF_REG_NUM_TOO_HIGH(188)",
63701    "DW_DLE_DF_MAKE_INSTR_NO_INIT(189)",
63702    "DW_DLE_DF_NEW_LOC_LESS_OLD_LOC(190)",
63703    "DW_DLE_DF_POP_EMPTY_STACK(191)",
63704    "DW_DLE_DF_ALLOC_FAIL(192)",
63705    "DW_DLE_DF_FRAME_DECODING_ERROR(193)",
63706
63707
63708
63709};
63710
63711
63712
63713
63714/*
63715    This function performs error handling as described in the
63716    libdwarf consumer document section 3.  Dbg is the Dwarf_debug
63717    structure being processed.  Error is a pointer to the pointer
63718    to the error descriptor that will be returned.  Errval is an
63719    error code listed in dwarf_error.h.
63720*/
63721void
63722_dwarf_error(Dwarf_Debug dbg, Dwarf_Error * error, Dwarf_Sword errval)
63723{
63724    Dwarf_Error errptr;
63725
63726    /*
63727       Allow NULL dbg on entry, since sometimes that can happen and we
63728       want to report the upper-level error, not this one. */
63729    if (error != NULL) {
63730
63731	/*
63732	   If dbg is NULL, use the alternate error struct. However,
63733	   this will overwrite the earlier error. */
63734	if (dbg != NULL) {
63735	    errptr =
63736		(Dwarf_Error) _dwarf_get_alloc(dbg, DW_DLA_ERROR, 1);
63737	    if (errptr == NULL) {
63738		fprintf(stderr,
63739			"Could not allocate Dwarf_Error structure, "
63740			"abort() in libdwarf.\n");
63741		abort();
63742	    }
63743	} else {
63744	    /* We have no dbg to work with. dwarf_init failed. We hack
63745	       up a special area. */
63746	    errptr = _dwarf_special_no_dbg_error_malloc();
63747	    if (errptr == NULL) {
63748		fprintf(stderr,
63749			"Could not allocate Dwarf_Error structure, "
63750			"abort() in libdwarf..\n");
63751		abort();
63752	    }
63753	}
63754
63755	errptr->er_errval = errval;
63756	*error = errptr;
63757	return;
63758    }
63759
63760    if (dbg != NULL && dbg->de_errhand != NULL) {
63761	errptr = (Dwarf_Error) _dwarf_get_alloc(dbg, DW_DLA_ERROR, 1);
63762	if (errptr == NULL) {
63763	    fprintf(stderr, "Could not allocate Dwarf_Error structure,"
63764		    " abort() in libdwarf.\n");
63765	    abort();
63766	}
63767	errptr->er_errval = errval;
63768	dbg->de_errhand(errptr, dbg->de_errarg);
63769	return;
63770    }
63771    fprintf(stderr,
63772	    "abort() in libdwarf. No error argument, no handler.\n");
63773    abort();
63774}
63775
63776
63777Dwarf_Unsigned
63778dwarf_errno(Dwarf_Error error)
63779{
63780    if (error == NULL) {
63781	return (0);
63782    }
63783
63784    return (error->er_errval);
63785}
63786
63787
63788/*
63789*/
63790char *
63791dwarf_errmsg(Dwarf_Error error)
63792{
63793    if (error == NULL) {
63794	return "Dwarf_Error is NULL";
63795    }
63796
63797    if (error->er_errval > (sizeof(_dwarf_errmsgs) / sizeof(char *))) {
63798	return "Dwarf_Error value out of range";
63799    }
63800
63801    return ((char *) _dwarf_errmsgs[error->er_errval]);
63802}
63803��0707010001ad6a0000812400011e740000000a0000000140206827000005b0000000660000000000000000000000000000001700000000libdwarf/dwarf_error.h����/*
63804
63805  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
63806
63807  This program is free software; you can redistribute it and/or modify it
63808  under the terms of version 2.1 of the GNU Lesser General Public License
63809  as published by the Free Software Foundation.
63810
63811  This program is distributed in the hope that it would be useful, but
63812  WITHOUT ANY WARRANTY; without even the implied warranty of
63813  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
63814
63815  Further, this software is distributed without any warranty that it is
63816  free of the rightful claim of any third person regarding infringement
63817  or the like.  Any license provided herein, whether implied or
63818  otherwise, applies only to this software file.  Patent licenses, if
63819  any, provided herein do not apply to combinations of this program with
63820  other software, or any other product whatsoever.
63821
63822  You should have received a copy of the GNU Lesser General Public
63823  License along with this program; if not, write the Free Software
63824  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
63825  USA.
63826
63827  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
63828  Mountain View, CA 94043, or:
63829
63830  http://www.sgi.com
63831
63832  For further information regarding this notice, see:
63833
63834  http://oss.sgi.com/projects/GenInfo/NoticeExplan
63835
63836*/
63837
63838
63839
63840void _dwarf_error(Dwarf_Debug dbg, Dwarf_Error * error,
63841		  Dwarf_Sword errval);
63842
63843struct Dwarf_Error_s {
63844    Dwarf_Sword er_errval;
63845};
638460707010001ad6b0000812400011e740000000a000000014020682700004419000000660000000000000000000000000000001600000000libdwarf/dwarf_form.c�/*
63847
63848  Copyright (C) 2000, 2002 Silicon Graphics, Inc.  All Rights Reserved.
63849
63850  This program is free software; you can redistribute it and/or modify it
63851  under the terms of version 2.1 of the GNU Lesser General Public License
63852  as published by the Free Software Foundation.
63853
63854  This program is distributed in the hope that it would be useful, but
63855  WITHOUT ANY WARRANTY; without even the implied warranty of
63856  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
63857
63858  Further, this software is distributed without any warranty that it is
63859  free of the rightful claim of any third person regarding infringement
63860  or the like.  Any license provided herein, whether implied or
63861  otherwise, applies only to this software file.  Patent licenses, if
63862  any, provided herein do not apply to combinations of this program with
63863  other software, or any other product whatsoever.
63864
63865  You should have received a copy of the GNU Lesser General Public
63866  License along with this program; if not, write the Free Software
63867  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
63868  USA.
63869
63870  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
63871  Mountain View, CA 94043, or:
63872
63873  http://www.sgi.com
63874
63875  For further information regarding this notice, see:
63876
63877  http://oss.sgi.com/projects/GenInfo/NoticeExplan
63878
63879*/
63880
63881
63882
63883#include "config.h"
63884#include "dwarf_incl.h"
63885#include "dwarf_die_deliv.h"
63886
63887int
63888dwarf_hasform(Dwarf_Attribute attr,
63889	      Dwarf_Half form,
63890	      Dwarf_Bool * return_bool, Dwarf_Error * error)
63891{
63892    Dwarf_CU_Context cu_context;
63893
63894    if (attr == NULL) {
63895	_dwarf_error(NULL, error, DW_DLE_ATTR_NULL);
63896	return (DW_DLV_ERROR);
63897    }
63898
63899    cu_context = attr->ar_cu_context;
63900    if (cu_context == NULL) {
63901	_dwarf_error(NULL, error, DW_DLE_ATTR_NO_CU_CONTEXT);
63902	return (DW_DLV_ERROR);
63903    }
63904
63905    if (cu_context->cc_dbg == NULL) {
63906	_dwarf_error(NULL, error, DW_DLE_ATTR_DBG_NULL);
63907	return (DW_DLV_ERROR);
63908    }
63909
63910    *return_bool = (attr->ar_attribute_form == form);
63911    return DW_DLV_OK;
63912}
63913
63914/* Not often called, we do not worry about efficiency here.
63915   The dwarf_whatform() call does the sanity checks for us.
63916*/
63917int
63918dwarf_whatform_direct(Dwarf_Attribute attr,
63919		      Dwarf_Half * return_form, Dwarf_Error * error)
63920{
63921    int res = dwarf_whatform(attr, return_form, error);
63922
63923    if (res != DW_DLV_OK) {
63924	return res;
63925    }
63926
63927    *return_form = attr->ar_attribute_form_direct;
63928    return (DW_DLV_OK);
63929}
63930
63931int
63932dwarf_whatform(Dwarf_Attribute attr,
63933	       Dwarf_Half * return_form, Dwarf_Error * error)
63934{
63935    Dwarf_CU_Context cu_context;
63936
63937    if (attr == NULL) {
63938	_dwarf_error(NULL, error, DW_DLE_ATTR_NULL);
63939	return (DW_DLV_ERROR);
63940    }
63941
63942    cu_context = attr->ar_cu_context;
63943    if (cu_context == NULL) {
63944	_dwarf_error(NULL, error, DW_DLE_ATTR_NO_CU_CONTEXT);
63945	return (DW_DLV_ERROR);
63946    }
63947
63948    if (cu_context->cc_dbg == NULL) {
63949	_dwarf_error(NULL, error, DW_DLE_ATTR_DBG_NULL);
63950	return (DW_DLV_ERROR);
63951    }
63952
63953    *return_form = attr->ar_attribute_form;
63954    return (DW_DLV_OK);
63955}
63956
63957
63958/*
63959    This function is analogous to dwarf_whatform.
63960    It returns the attribute in attr instead of
63961    the form.
63962*/
63963int
63964dwarf_whatattr(Dwarf_Attribute attr,
63965	       Dwarf_Half * return_attr, Dwarf_Error * error)
63966{
63967    Dwarf_CU_Context cu_context;
63968
63969    if (attr == NULL) {
63970	_dwarf_error(NULL, error, DW_DLE_ATTR_NULL);
63971	return (DW_DLV_ERROR);
63972    }
63973
63974    cu_context = attr->ar_cu_context;
63975    if (cu_context == NULL) {
63976	_dwarf_error(NULL, error, DW_DLE_ATTR_NO_CU_CONTEXT);
63977	return (DW_DLV_ERROR);
63978    }
63979
63980    if (cu_context->cc_dbg == NULL) {
63981	_dwarf_error(NULL, error, DW_DLE_ATTR_DBG_NULL);
63982	return (DW_DLV_ERROR);
63983    }
63984
63985    *return_attr = (attr->ar_attribute);
63986    return DW_DLV_OK;
63987}
63988
63989
63990/*
63991    DW_FORM_ref_addr is considered an incorrect form
63992    for this call because this function returns an
63993    offset  within the local CU thru the pointer.
63994
63995    DW_FORM_ref_addr has a value which is an address-size value which
63996    is a global-offset into the debug_info section.
63997    A DW_FORM_ref_addr cannot be returned by this interface:
63998    see dwarf_global_formref();
63999
64000*/
64001int
64002dwarf_formref(Dwarf_Attribute attr,
64003	      Dwarf_Off * ret_offset, Dwarf_Error * error)
64004{
64005    Dwarf_Debug dbg;
64006    Dwarf_Unsigned offset;
64007    Dwarf_CU_Context cu_context;
64008
64009
64010    if (attr == NULL) {
64011	_dwarf_error(NULL, error, DW_DLE_ATTR_NULL);
64012	return (DW_DLV_ERROR);
64013    }
64014
64015    cu_context = attr->ar_cu_context;
64016    if (cu_context == NULL) {
64017	_dwarf_error(NULL, error, DW_DLE_ATTR_NO_CU_CONTEXT);
64018	return (DW_DLV_ERROR);
64019    }
64020
64021    if (cu_context->cc_dbg == NULL) {
64022	_dwarf_error(NULL, error, DW_DLE_ATTR_DBG_NULL);
64023	return (DW_DLV_ERROR);
64024    }
64025    dbg = cu_context->cc_dbg;
64026
64027    switch (attr->ar_attribute_form) {
64028
64029    case DW_FORM_ref1:
64030	offset = *(Dwarf_Small *) attr->ar_debug_info_ptr;
64031	break;
64032
64033    case DW_FORM_ref2:
64034	READ_UNALIGNED(dbg, offset, Dwarf_Unsigned,
64035		       attr->ar_debug_info_ptr, sizeof(Dwarf_Half));
64036	break;
64037
64038    case DW_FORM_ref4:
64039	READ_UNALIGNED(dbg, offset, Dwarf_Unsigned,
64040		       attr->ar_debug_info_ptr, sizeof(Dwarf_ufixed));
64041	break;
64042
64043    case DW_FORM_ref8:
64044	READ_UNALIGNED(dbg, offset, Dwarf_Unsigned,
64045		       attr->ar_debug_info_ptr, sizeof(Dwarf_Unsigned));
64046	break;
64047
64048    case DW_FORM_ref_udata:
64049	offset = _dwarf_decode_u_leb128(attr->ar_debug_info_ptr, NULL);
64050	break;
64051
64052    default:
64053	_dwarf_error(dbg, error, DW_DLE_BAD_REF_FORM);
64054	return (DW_DLV_ERROR);
64055    }
64056
64057    /* Check that offset is within current cu portion of .debug_info. */
64058
64059    if (offset >= cu_context->cc_length +
64060	cu_context->cc_length_size + cu_context->cc_extension_size) {
64061	_dwarf_error(dbg, error, DW_DLE_ATTR_FORM_OFFSET_BAD);
64062	return (DW_DLV_ERROR);
64063    }
64064
64065    *ret_offset = (offset);
64066    return DW_DLV_OK;
64067}
64068
64069/*
64070	Since this returns section-relative debug_info offsets,
64071	this can represent all REFERENCE forms correctly
64072	and allows all forms.
64073
64074*/
64075int
64076dwarf_global_formref(Dwarf_Attribute attr,
64077		     Dwarf_Off * ret_offset, Dwarf_Error * error)
64078{
64079    Dwarf_Debug dbg;
64080    Dwarf_Unsigned offset;
64081    Dwarf_Addr ref_addr;
64082    Dwarf_CU_Context cu_context;
64083
64084    if (attr == NULL) {
64085	_dwarf_error(NULL, error, DW_DLE_ATTR_NULL);
64086	return (DW_DLV_ERROR);
64087    }
64088
64089    cu_context = attr->ar_cu_context;
64090    if (cu_context == NULL) {
64091	_dwarf_error(NULL, error, DW_DLE_ATTR_NO_CU_CONTEXT);
64092	return (DW_DLV_ERROR);
64093    }
64094
64095    if (cu_context->cc_dbg == NULL) {
64096	_dwarf_error(NULL, error, DW_DLE_ATTR_DBG_NULL);
64097	return (DW_DLV_ERROR);
64098    }
64099    dbg = cu_context->cc_dbg;
64100
64101    switch (attr->ar_attribute_form) {
64102
64103    case DW_FORM_ref1:
64104	offset = *(Dwarf_Small *) attr->ar_debug_info_ptr;
64105	goto fixoffset;
64106
64107    case DW_FORM_ref2:
64108	READ_UNALIGNED(dbg, offset, Dwarf_Unsigned,
64109		       attr->ar_debug_info_ptr, sizeof(Dwarf_Half));
64110	goto fixoffset;
64111
64112    case DW_FORM_ref4:
64113	READ_UNALIGNED(dbg, offset, Dwarf_Unsigned,
64114		       attr->ar_debug_info_ptr, sizeof(Dwarf_ufixed));
64115	goto fixoffset;
64116
64117    case DW_FORM_ref8:
64118	READ_UNALIGNED(dbg, offset, Dwarf_Unsigned,
64119		       attr->ar_debug_info_ptr, sizeof(Dwarf_Unsigned));
64120	goto fixoffset;
64121
64122    case DW_FORM_ref_udata:
64123	offset = _dwarf_decode_u_leb128(attr->ar_debug_info_ptr, NULL);
64124
64125      fixoffset:		/* we have a local offset, make it
64126				   global */
64127
64128	/* check legality of offset */
64129	if (offset >= cu_context->cc_length +
64130	    cu_context->cc_length_size +
64131	    cu_context->cc_extension_size) {
64132	    _dwarf_error(dbg, error, DW_DLE_ATTR_FORM_OFFSET_BAD);
64133	    return (DW_DLV_ERROR);
64134	}
64135
64136	/* globalize the offset */
64137	offset += cu_context->cc_debug_info_offset;
64138	break;
64139
64140    case DW_FORM_ref_addr:
64141	/* This offset is defined to be debug_info global already, so
64142	   use this value unaltered. */
64143	READ_UNALIGNED(dbg, ref_addr, Dwarf_Addr,
64144		       attr->ar_debug_info_ptr,
64145		       cu_context->cc_length_size);
64146	offset = ref_addr;
64147	break;
64148    default:
64149	_dwarf_error(dbg, error, DW_DLE_BAD_REF_FORM);
64150	return (DW_DLV_ERROR);
64151    }
64152
64153    /* Check that offset is within current cu portion of .debug_info. */
64154
64155    *ret_offset = (offset);
64156    return DW_DLV_OK;
64157}
64158
64159
64160int
64161dwarf_formaddr(Dwarf_Attribute attr,
64162	       Dwarf_Addr * return_addr, Dwarf_Error * error)
64163{
64164    Dwarf_Debug dbg;
64165    Dwarf_Addr ret_addr;
64166    Dwarf_CU_Context cu_context;
64167
64168    if (attr == NULL) {
64169	_dwarf_error(NULL, error, DW_DLE_ATTR_NULL);
64170	return (DW_DLV_ERROR);
64171    }
64172
64173    cu_context = attr->ar_cu_context;
64174    if (cu_context == NULL) {
64175	_dwarf_error(NULL, error, DW_DLE_ATTR_NO_CU_CONTEXT);
64176	return (DW_DLV_ERROR);
64177    }
64178
64179    if (cu_context->cc_dbg == NULL) {
64180	_dwarf_error(NULL, error, DW_DLE_ATTR_DBG_NULL);
64181	return (DW_DLV_ERROR);
64182    }
64183    dbg = cu_context->cc_dbg;
64184
64185    if (attr->ar_attribute_form == DW_FORM_addr
64186	/* || attr->ar_attribute_form == DW_FORM_ref_addr Allowance of
64187	   DW_FORM_ref_addr was a mistake. The value returned in that
64188	   case is NOT an address it is a global debug_info offset (ie,
64189	   not CU-relative offset within the CU in debug_info). The
64190	   Dwarf document refers to it as an address (misleadingly) in
64191	   sec 6.5.4 where it describes the reference form. It is
64192	   address-sized so that the linker can easily update it, but
64193	   it is a reference inside the debug_info section. No longer
64194	   allowed. */
64195	) {
64196
64197	READ_UNALIGNED(dbg, ret_addr, Dwarf_Addr,
64198		       attr->ar_debug_info_ptr, dbg->de_pointer_size);
64199	*return_addr = ret_addr;
64200	return (DW_DLV_OK);
64201    }
64202
64203    _dwarf_error(dbg, error, DW_DLE_ATTR_FORM_BAD);
64204    return (DW_DLV_ERROR);
64205}
64206
64207
64208int
64209dwarf_formflag(Dwarf_Attribute attr,
64210	       Dwarf_Bool * ret_bool, Dwarf_Error * error)
64211{
64212    Dwarf_CU_Context cu_context;
64213
64214    if (attr == NULL) {
64215	_dwarf_error(NULL, error, DW_DLE_ATTR_NULL);
64216	return (DW_DLV_ERROR);
64217    }
64218
64219    cu_context = attr->ar_cu_context;
64220    if (cu_context == NULL) {
64221	_dwarf_error(NULL, error, DW_DLE_ATTR_NO_CU_CONTEXT);
64222	return (DW_DLV_ERROR);
64223    }
64224
64225    if (cu_context->cc_dbg == NULL) {
64226	_dwarf_error(NULL, error, DW_DLE_ATTR_DBG_NULL);
64227	return (DW_DLV_ERROR);
64228    }
64229
64230    if (attr->ar_attribute_form == DW_FORM_flag) {
64231	*ret_bool = (*(Dwarf_Small *) attr->ar_debug_info_ptr != 0);
64232	return (DW_DLV_OK);
64233    }
64234    _dwarf_error(cu_context->cc_dbg, error, DW_DLE_ATTR_FORM_BAD);
64235    return (DW_DLV_ERROR);
64236}
64237
64238
64239int
64240dwarf_formudata(Dwarf_Attribute attr,
64241		Dwarf_Unsigned * return_uval, Dwarf_Error * error)
64242{
64243    Dwarf_Unsigned ret_value;
64244    Dwarf_Debug dbg;
64245    Dwarf_CU_Context cu_context;
64246
64247    if (attr == NULL) {
64248	_dwarf_error(NULL, error, DW_DLE_ATTR_NULL);
64249	return (DW_DLV_ERROR);
64250    }
64251
64252
64253    cu_context = attr->ar_cu_context;
64254    if (cu_context == NULL) {
64255	_dwarf_error(NULL, error, DW_DLE_ATTR_NO_CU_CONTEXT);
64256	return (DW_DLV_ERROR);
64257    }
64258
64259    dbg = cu_context->cc_dbg;
64260    if (dbg == NULL) {
64261	_dwarf_error(NULL, error, DW_DLE_ATTR_DBG_NULL);
64262	return (DW_DLV_ERROR);
64263    }
64264
64265    switch (attr->ar_attribute_form) {
64266
64267    case DW_FORM_data1:
64268	READ_UNALIGNED(dbg, ret_value, Dwarf_Unsigned,
64269		       attr->ar_debug_info_ptr, sizeof(Dwarf_Small));
64270	*return_uval = ret_value;
64271	return DW_DLV_OK;
64272
64273    case DW_FORM_data2:{
64274	    READ_UNALIGNED(dbg, ret_value, Dwarf_Unsigned,
64275			   attr->ar_debug_info_ptr, sizeof(Dwarf_Half));
64276	    *return_uval = ret_value;
64277	    return DW_DLV_OK;
64278	}
64279
64280    case DW_FORM_data4:{
64281	    READ_UNALIGNED(dbg, ret_value, Dwarf_Unsigned,
64282			   attr->ar_debug_info_ptr,
64283			   sizeof(Dwarf_ufixed));
64284	    *return_uval = ret_value;
64285	    return DW_DLV_OK;
64286	}
64287
64288    case DW_FORM_data8:{
64289	    READ_UNALIGNED(dbg, ret_value, Dwarf_Unsigned,
64290			   attr->ar_debug_info_ptr,
64291			   sizeof(Dwarf_Unsigned));
64292	    *return_uval = ret_value;
64293	    return DW_DLV_OK;
64294	}
64295
64296    case DW_FORM_udata:
64297	ret_value =
64298	    (_dwarf_decode_u_leb128(attr->ar_debug_info_ptr, NULL));
64299	*return_uval = ret_value;
64300	return DW_DLV_OK;
64301
64302
64303	/* see bug 583450. We do not allow reading sdata from a udata
64304	   value. Caller can retry, calling sdata */
64305
64306
64307    default:
64308	break;
64309    }
64310    _dwarf_error(dbg, error, DW_DLE_ATTR_FORM_BAD);
64311    return (DW_DLV_ERROR);
64312}
64313
64314
64315int
64316dwarf_formsdata(Dwarf_Attribute attr,
64317		Dwarf_Signed * return_sval, Dwarf_Error * error)
64318{
64319    Dwarf_Signed ret_value;
64320    Dwarf_Debug dbg;
64321    Dwarf_CU_Context cu_context;
64322
64323    if (attr == NULL) {
64324	_dwarf_error(NULL, error, DW_DLE_ATTR_NULL);
64325	return (DW_DLV_ERROR);
64326    }
64327
64328    cu_context = attr->ar_cu_context;
64329    if (cu_context == NULL) {
64330	_dwarf_error(NULL, error, DW_DLE_ATTR_NO_CU_CONTEXT);
64331	return (DW_DLV_ERROR);
64332    }
64333
64334    dbg = cu_context->cc_dbg;
64335    if (dbg == NULL) {
64336	_dwarf_error(NULL, error, DW_DLE_ATTR_DBG_NULL);
64337	return (DW_DLV_ERROR);
64338    }
64339
64340    switch (attr->ar_attribute_form) {
64341
64342    case DW_FORM_data1:
64343	*return_sval = (*(Dwarf_Sbyte *) attr->ar_debug_info_ptr);
64344	return DW_DLV_OK;
64345
64346    case DW_FORM_data2:{
64347	    READ_UNALIGNED(dbg, ret_value, Dwarf_Unsigned,
64348			   attr->ar_debug_info_ptr,
64349			   sizeof(Dwarf_Shalf));
64350	    *return_sval = (Dwarf_Shalf) ret_value;
64351	    return DW_DLV_OK;
64352
64353	}
64354
64355    case DW_FORM_data4:{
64356	    READ_UNALIGNED(dbg, ret_value, Dwarf_Unsigned,
64357			   attr->ar_debug_info_ptr,
64358			   sizeof(Dwarf_sfixed));
64359	    *return_sval = (Dwarf_Sword) ret_value;
64360	    return DW_DLV_OK;
64361	}
64362
64363    case DW_FORM_data8:{
64364	    READ_UNALIGNED(dbg, ret_value, Dwarf_Unsigned,
64365			   attr->ar_debug_info_ptr,
64366			   sizeof(Dwarf_Signed));
64367	    *return_sval = (Dwarf_Signed) ret_value;
64368	    return DW_DLV_OK;
64369	}
64370
64371    case DW_FORM_sdata:
64372	ret_value =
64373	    (_dwarf_decode_s_leb128(attr->ar_debug_info_ptr, NULL));
64374	*return_sval = ret_value;
64375	return DW_DLV_OK;
64376
64377
64378	/* see bug 583450. We do not allow reading sdata from a udata
64379	   value. Caller can retry, calling sdata */
64380
64381
64382    default:
64383	break;
64384    }
64385    _dwarf_error(dbg, error, DW_DLE_ATTR_FORM_BAD);
64386    return (DW_DLV_ERROR);
64387}
64388
64389
64390int
64391dwarf_formblock(Dwarf_Attribute attr,
64392		Dwarf_Block ** return_block, Dwarf_Error * error)
64393{
64394    Dwarf_CU_Context cu_context;
64395    Dwarf_Debug dbg;
64396    Dwarf_Unsigned length;
64397    Dwarf_Small *data;
64398    Dwarf_Word leb128_length;
64399    Dwarf_Block *ret_block;
64400
64401    if (attr == NULL) {
64402	_dwarf_error(NULL, error, DW_DLE_ATTR_NULL);
64403	return (DW_DLV_ERROR);
64404    }
64405
64406    cu_context = attr->ar_cu_context;
64407    if (cu_context == NULL) {
64408	_dwarf_error(NULL, error, DW_DLE_ATTR_NO_CU_CONTEXT);
64409	return (DW_DLV_ERROR);
64410    }
64411
64412    if (cu_context->cc_dbg == NULL) {
64413	_dwarf_error(NULL, error, DW_DLE_ATTR_DBG_NULL);
64414	return (DW_DLV_ERROR);
64415    }
64416    dbg = cu_context->cc_dbg;
64417
64418    switch (attr->ar_attribute_form) {
64419
64420    case DW_FORM_block1:
64421	length = *(Dwarf_Small *) attr->ar_debug_info_ptr;
64422	data = attr->ar_debug_info_ptr + sizeof(Dwarf_Small);
64423	break;
64424
64425    case DW_FORM_block2:
64426	READ_UNALIGNED(dbg, length, Dwarf_Unsigned,
64427		       attr->ar_debug_info_ptr, sizeof(Dwarf_Half));
64428	data = attr->ar_debug_info_ptr + sizeof(Dwarf_Half);
64429	break;
64430
64431    case DW_FORM_block4:
64432	READ_UNALIGNED(dbg, length, Dwarf_Unsigned,
64433		       attr->ar_debug_info_ptr, sizeof(Dwarf_ufixed));
64434	data = attr->ar_debug_info_ptr + sizeof(Dwarf_ufixed);
64435	break;
64436
64437    case DW_FORM_block:
64438	length = _dwarf_decode_u_leb128(attr->ar_debug_info_ptr,
64439					&leb128_length);
64440	data = attr->ar_debug_info_ptr + leb128_length;
64441	break;
64442
64443    default:
64444	_dwarf_error(cu_context->cc_dbg, error, DW_DLE_ATTR_FORM_BAD);
64445	return (DW_DLV_ERROR);
64446    }
64447
64448    /* Check that block lies within current cu in .debug_info. */
64449    if (attr->ar_debug_info_ptr + length >=
64450	dbg->de_debug_info + cu_context->cc_debug_info_offset +
64451	cu_context->cc_length + cu_context->cc_length_size +
64452	cu_context->cc_extension_size) {
64453	_dwarf_error(dbg, error, DW_DLE_ATTR_FORM_SIZE_BAD);
64454	return (DW_DLV_ERROR);
64455    }
64456
64457    ret_block = (Dwarf_Block *) _dwarf_get_alloc(dbg, DW_DLA_BLOCK, 1);
64458    if (ret_block == NULL) {
64459	_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
64460	return (DW_DLV_ERROR);
64461    }
64462
64463    ret_block->bl_len = length;
64464    ret_block->bl_data = (Dwarf_Ptr) data;
64465    ret_block->bl_from_loclist = 0;
64466    ret_block->bl_section_offset = data - dbg->de_debug_info;
64467
64468
64469    *return_block = ret_block;
64470    return (DW_DLV_OK);
64471}
64472
64473
64474int
64475dwarf_formstring(Dwarf_Attribute attr,
64476		 char **return_str, Dwarf_Error * error)
64477{
64478    Dwarf_CU_Context cu_context;
64479    Dwarf_Debug dbg;
64480    Dwarf_Unsigned offset;
64481    int res;
64482
64483    if (attr == NULL) {
64484	_dwarf_error(NULL, error, DW_DLE_ATTR_NULL);
64485	return (DW_DLV_ERROR);
64486    }
64487
64488    cu_context = attr->ar_cu_context;
64489    if (cu_context == NULL) {
64490	_dwarf_error(NULL, error, DW_DLE_ATTR_NO_CU_CONTEXT);
64491	return (DW_DLV_ERROR);
64492    }
64493
64494    if (cu_context->cc_dbg == NULL) {
64495	_dwarf_error(NULL, error, DW_DLE_ATTR_DBG_NULL);
64496	return (DW_DLV_ERROR);
64497    }
64498    dbg = cu_context->cc_dbg;
64499
64500    if (attr->ar_attribute_form == DW_FORM_string) {
64501
64502	void *begin = attr->ar_debug_info_ptr;
64503
64504	if (0 == dbg->de_assume_string_in_bounds) {
64505	    /* Check that string lies within current cu in .debug_info.
64506	     */
64507	    void *end = dbg->de_debug_info +
64508		cu_context->cc_debug_info_offset +
64509		cu_context->cc_length + cu_context->cc_length_size +
64510		cu_context->cc_extension_size;
64511	    if (0 == _dwarf_string_valid(begin, end)) {
64512		_dwarf_error(dbg, error, DW_DLE_ATTR_FORM_SIZE_BAD);
64513		return (DW_DLV_ERROR);
64514	    }
64515	}
64516	*return_str = (char *) (begin);
64517	return DW_DLV_OK;
64518    }
64519
64520    if (attr->ar_attribute_form == DW_FORM_strp) {
64521	READ_UNALIGNED(dbg, offset, Dwarf_Unsigned,
64522		       attr->ar_debug_info_ptr,
64523		       cu_context->cc_length_size);
64524
64525	res =
64526	    _dwarf_load_section(dbg,
64527				dbg->de_debug_str_index,
64528				&dbg->de_debug_str, error);
64529	if (res != DW_DLV_OK) {
64530	    return res;
64531	}
64532
64533	*return_str = (char *) (dbg->de_debug_str + offset);
64534	return DW_DLV_OK;
64535    }
64536
64537    _dwarf_error(dbg, error, DW_DLE_ATTR_FORM_BAD);
64538    return (DW_DLV_ERROR);
64539}
64540���0707010001ad6c0000812400011e740000000a000000014020682800010c57000000660000000000000000000000000000001700000000libdwarf/dwarf_frame.c����/*
64541
64542  Copyright (C) 2000, 2002 Silicon Graphics, Inc.  All Rights Reserved.
64543
64544  This program is free software; you can redistribute it and/or modify it
64545  under the terms of version 2.1 of the GNU Lesser General Public License
64546  as published by the Free Software Foundation.
64547
64548  This program is distributed in the hope that it would be useful, but
64549  WITHOUT ANY WARRANTY; without even the implied warranty of
64550  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
64551
64552  Further, this software is distributed without any warranty that it is
64553  free of the rightful claim of any third person regarding infringement
64554  or the like.  Any license provided herein, whether implied or
64555  otherwise, applies only to this software file.  Patent licenses, if
64556  any, provided herein do not apply to combinations of this program with
64557  other software, or any other product whatsoever.
64558
64559  You should have received a copy of the GNU Lesser General Public
64560  License along with this program; if not, write the Free Software
64561  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
64562  USA.
64563
64564  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
64565  Mountain View, CA 94043, or:
64566
64567  http://www.sgi.com
64568
64569  For further information regarding this notice, see:
64570
64571  http://oss.sgi.com/projects/GenInfo/NoticeExplan
64572
64573*/
64574
64575
64576
64577#include "config.h"
64578#include "dwarf_incl.h"
64579#include <stdio.h>
64580#include <stdlib.h>
64581#include "dwarf_frame.h"
64582#include "dwarf_arange.h"	/* using Arange as a way to build a
64583				   list */
64584
64585
64586static int
64587  __dwarf_get_fde_list_internal(Dwarf_Debug dbg,
64588				Dwarf_Cie ** cie_data,
64589				Dwarf_Signed * cie_element_count,
64590				Dwarf_Fde ** fde_data,
64591				Dwarf_Signed * fde_element_count,
64592				Dwarf_Small * section_ptr,
64593				Dwarf_Unsigned section_length,
64594				Dwarf_Unsigned cie_id_value,
64595				int use_gnu_cie_calc,
64596				Dwarf_Error * error);
64597
64598/*
64599    This function is the heart of the debug_frame stuff.  Don't even
64600    think of reading this without reading both the Libdwarf and
64601    consumer API carefully first.  This function basically executes
64602    frame instructions contained in a Cie or an Fde, but does in a
64603    number of different ways depending on the information sought.
64604    Start_instr_ptr points to the first byte of the frame instruction
64605    stream, and final_instr_ptr to the to the first byte after the
64606    last.
64607
64608    The offsets returned in the frame instructions are factored.  That
64609    is they need to be multiplied by either the code_alignment_factor
64610    or the data_alignment_factor, as appropriate to obtain the actual
64611    offset.  This makes it possible to expand an instruction stream
64612    without the corresponding Cie.  However, when an Fde frame instr
64613    sequence is being expanded there must be a valid Cie with a pointer
64614    to an initial table row.
64615
64616
64617    If successful, returns DW_DLV_OK
64618		And sets returned_count thru the pointer
64619		 if make_instr is true.
64620		If make_instr is false returned_count
64621		 should NOT be used by the caller (returned_count
64622		 is set to 0 thru the pointer by this routine...)
64623    If unsuccessful, returns DW_DLV_ERROR
64624		and sets returned_error to the error code
64625
64626    It does not do a whole lot of input validation being a private
64627    function.  Please make sure inputs are valid.
64628
64629    (1) If make_instr is true, it makes a list of pointers to
64630    Dwarf_Frame_Op structures containing the frame instructions
64631    executed.  A pointer to this list is returned in ret_frame_instr.
64632    Make_instr is true only when a list of frame instructions is to be
64633    returned.  In this case since we are not interested in the contents
64634    of the table, the input Cie can be NULL.  This is the only case
64635    where the inpute Cie can be NULL.
64636
64637    (2) If search_pc is true, frame instructions are executed till
64638    either a location is reached that is greater than the search_pc_val
64639    provided, or all instructions are executed.  At this point the
64640    last row of the table generated is returned in a structure.
64641    A pointer to this structure is supplied in table.
64642
64643    (3) This function is also used to create the initial table row
64644    defined by a Cie.  In this case, the Dwarf_Cie pointer cie, is
64645    NULL.  For an FDE, however, cie points to the associated Cie.
64646*/
64647static int
64648_dwarf_exec_frame_instr(Dwarf_Bool make_instr,	/* Make list of frame
64649						   instr? */
64650			Dwarf_Frame_Op ** ret_frame_instr,	/* Ptr
64651								   to
64652								   list
64653								   of
64654								   ptrs
64655								   to
64656								   fr
64657								   instrs
64658								 */
64659			Dwarf_Bool search_pc,	/* Search for a pc
64660						   value? */
64661			Dwarf_Addr search_pc_val,	/* Search for
64662							   this pc
64663							   value */
64664			Dwarf_Addr loc,	/* initial location value */
64665			Dwarf_Small * start_instr_ptr,	/* Ptr to start
64666							   of frame
64667							   instrs.  */
64668			Dwarf_Small * final_instr_ptr,	/* Ptr just
64669							   past frame
64670							   instrs.  */
64671			Dwarf_Frame table,	/* Ptr to struct with
64672						   last row.  */
64673			Dwarf_Cie cie,	/* Ptr to Cie used by the Fde.
64674					   */
64675			Dwarf_Debug dbg,	/* Associated
64676						   Dwarf_Debug */
64677			Dwarf_Sword * returned_count,
64678			int *returned_error)
64679{
64680    /* Sweeps the frame instructions. */
64681    Dwarf_Small *instr_ptr;
64682
64683    /* Obvious from the documents. */
64684    Dwarf_Small instr, opcode;
64685    Dwarf_Small reg_no, reg_noA, reg_noB;
64686    Dwarf_Unsigned factored_N_value;
64687    Dwarf_Addr new_loc;		/* must be min de_pointer_size bytes */
64688    Dwarf_Unsigned adv_loc;	/* must be min de_pointer_size bytes
64689				   and must be at least sizeof
64690				   Dwarf_ufixed */
64691
64692    struct Dwarf_Reg_Rule_s reg[DW_FRAME_LAST_REG_NUM];
64693
64694
64695    /* This is used to end executing frame instructions.  */
64696    /* Becomes true when search_pc is true and loc */
64697    /* is greater than search_pc_val.  */
64698    Dwarf_Bool search_over = false;
64699
64700    /* Used by the DW_FRAME_advance_loc instr */
64701    /* to hold the increment in pc value.  */
64702    Dwarf_Addr adv_pc;
64703
64704    /* Contains the length in bytes of */
64705    /* an leb128 encoded number.  */
64706    Dwarf_Word leb128_length;
64707
64708    /* Counts the number of frame instructions executed.  */
64709    Dwarf_Word instr_count = 0;
64710
64711    /*
64712       These contain the current fields of the current frame
64713       instruction. */
64714    Dwarf_Small fp_base_op = 0;
64715    Dwarf_Small fp_extended_op;
64716    Dwarf_Half fp_register;
64717    Dwarf_Unsigned fp_offset;
64718    Dwarf_Off fp_instr_offset;
64719
64720    /*
64721       Stack_table points to the row (Dwarf_Frame ie) being pushed or
64722       popped by a remember or restore instruction. Top_stack points to
64723       the top of the stack of rows. */
64724    Dwarf_Frame stack_table;
64725    Dwarf_Frame top_stack = NULL;
64726
64727    /*
64728       These are used only when make_instr is true. Curr_instr is a
64729       pointer to the current frame instruction executed.
64730       Curr_instr_ptr, head_instr_list, and curr_instr_list are used
64731       to form a chain of Dwarf_Frame_Op structs. Dealloc_instr_ptr
64732       is used to deallocate the structs used to form the chain.
64733       Head_instr_block points to a contiguous list of pointers to the
64734       Dwarf_Frame_Op structs executed. */
64735    Dwarf_Frame_Op *curr_instr;
64736    Dwarf_Chain curr_instr_item, dealloc_instr_item;
64737    Dwarf_Chain head_instr_chain = NULL;
64738    Dwarf_Chain tail_instr_chain = NULL;
64739    Dwarf_Frame_Op *head_instr_block;
64740
64741    /*
64742       These are the alignment_factors taken from the Cie provided.
64743       When no input Cie is provided they are set to 1, because only
64744       factored offsets are required. */
64745    Dwarf_Sword code_alignment_factor = 1;
64746    Dwarf_Sword data_alignment_factor = 1;
64747
64748    /*
64749       This flag indicates when an actual alignment factor is needed.
64750       So if a frame instruction that computes an offset using an
64751       alignment factor is encountered when this flag is set, an error
64752       is returned because the Cie did not have a valid augmentation. */
64753    Dwarf_Bool need_augmentation = false;
64754
64755    Dwarf_Word i;
64756
64757    /* Initialize first row from associated Cie. Using temp regs
64758       explicity */
64759    struct Dwarf_Reg_Rule_s *t1reg;
64760    struct Dwarf_Reg_Rule_s *t1end;
64761    struct Dwarf_Reg_Rule_s *t2reg;
64762
64763
64764    t1reg = reg;
64765    t1end = t1reg + DW_FRAME_LAST_REG_NUM;
64766    if (cie != NULL && cie->ci_initial_table != NULL) {
64767	t2reg = cie->ci_initial_table->fr_reg;
64768	for (; t1reg < t1end; t1reg++, t2reg++) {
64769	    *t1reg = *t2reg;
64770	}
64771    } else {			/* initialize with same_value */
64772	for (; t1reg < t1end; t1reg++) {
64773	    t1reg->ru_is_off = 0;
64774	    t1reg->ru_register = DW_FRAME_SAME_VAL;
64775	    t1reg->ru_offset = 0;
64776	}
64777    }
64778
64779    /*
64780       The idea here is that the code_alignment_factor and
64781       data_alignment_factor which are needed for certain instructions
64782       are valid only when the Cie has a proper augmentation string.
64783       So if the augmentation is not right, only Frame instruction can
64784       be read. */
64785    if (cie != NULL && cie->ci_augmentation != NULL) {
64786	code_alignment_factor = cie->ci_code_alignment_factor;
64787	data_alignment_factor = cie->ci_data_alignment_factor;
64788    } else
64789	need_augmentation = !make_instr;
64790
64791    instr_ptr = start_instr_ptr;
64792    while ((instr_ptr < final_instr_ptr) && (!search_over)) {
64793
64794
64795	fp_instr_offset = instr_ptr - start_instr_ptr;
64796	instr = *(Dwarf_Small *) instr_ptr;
64797	instr_ptr += sizeof(Dwarf_Small);
64798
64799	fp_base_op = (instr & 0xc0) >> 6;
64800	if ((instr & 0xc0) == 0x00) {
64801	    opcode = instr;	/* is really extended op */
64802	    fp_extended_op = (instr & (~(0xc0))) & 0xff;
64803	} else {
64804	    opcode = instr & 0xc0;	/* is base op */
64805	    fp_extended_op = 0;
64806	}
64807
64808	fp_register = 0;
64809	fp_offset = 0;
64810	switch (opcode) {
64811
64812	case DW_CFA_advance_loc:{
64813				/* base op */
64814		fp_offset = adv_pc = instr & DW_FRAME_INSTR_OFFSET_MASK;
64815
64816		if (need_augmentation) {
64817
64818		    *returned_error = (DW_DLE_DF_NO_CIE_AUGMENTATION);
64819		    return DW_DLV_ERROR;
64820		}
64821		adv_pc = adv_pc * code_alignment_factor;
64822
64823		search_over = search_pc &&
64824		    (loc + adv_pc > search_pc_val);
64825		/* If gone past pc needed, retain old pc.  */
64826		if (!search_over)
64827		    loc = loc + adv_pc;
64828		break;
64829	    }
64830
64831	case DW_CFA_offset:{	/* base op */
64832		reg_no = (instr & DW_FRAME_INSTR_OFFSET_MASK);
64833		if (reg_no > DW_FRAME_LAST_REG_NUM) {
64834		    *returned_error = DW_DLE_DF_REG_NUM_TOO_HIGH;
64835		    return DW_DLV_ERROR;
64836		}
64837
64838		factored_N_value =
64839		    _dwarf_decode_u_leb128(instr_ptr, &leb128_length);
64840		instr_ptr = instr_ptr + leb128_length;
64841
64842		fp_register = reg_no;
64843		fp_offset = factored_N_value;
64844
64845		if (need_augmentation) {
64846		    *returned_error = (DW_DLE_DF_NO_CIE_AUGMENTATION);
64847		    return DW_DLV_ERROR;
64848		}
64849
64850		reg[reg_no].ru_is_off = 1;
64851		reg[reg_no].ru_register = DW_FRAME_CFA_COL;
64852		reg[reg_no].ru_offset = factored_N_value *
64853		    data_alignment_factor;
64854
64855		break;
64856	    }
64857
64858	case DW_CFA_restore:{	/* base op */
64859		reg_no = (instr & DW_FRAME_INSTR_OFFSET_MASK);
64860		if (reg_no > DW_FRAME_LAST_REG_NUM) {
64861		    *returned_error = (DW_DLE_DF_REG_NUM_TOO_HIGH);
64862		    return DW_DLV_ERROR;
64863		}
64864
64865		fp_register = reg_no;
64866
64867		if (cie != NULL && cie->ci_initial_table != NULL)
64868		    reg[reg_no] = cie->ci_initial_table->fr_reg[reg_no];
64869		else if (!make_instr) {
64870		    *returned_error = (DW_DLE_DF_MAKE_INSTR_NO_INIT);
64871		    return DW_DLV_ERROR;
64872		}
64873
64874		break;
64875	    }
64876	case DW_CFA_set_loc:{
64877		READ_UNALIGNED(dbg, new_loc, Dwarf_Addr,
64878			       instr_ptr, dbg->de_pointer_size);
64879		instr_ptr += dbg->de_pointer_size;
64880		if (new_loc <= loc) {
64881		    *returned_error = (DW_DLE_DF_NEW_LOC_LESS_OLD_LOC);
64882		    return DW_DLV_ERROR;
64883		}
64884
64885		search_over = search_pc && (new_loc > search_pc_val);
64886
64887		/* If gone past pc needed, retain old pc.  */
64888		if (!search_over)
64889		    loc = new_loc;
64890		fp_offset = new_loc;
64891		break;
64892	    }
64893
64894	case DW_CFA_advance_loc1:{
64895		fp_offset = adv_loc = *(Dwarf_Small *) instr_ptr;
64896		instr_ptr += sizeof(Dwarf_Small);
64897
64898		if (need_augmentation) {
64899		    *returned_error = (DW_DLE_DF_NO_CIE_AUGMENTATION);
64900		    return DW_DLV_ERROR;
64901		}
64902		adv_loc *= code_alignment_factor;
64903
64904		search_over = search_pc &&
64905		    (loc + adv_loc > search_pc_val);
64906
64907		/* If gone past pc needed, retain old pc.  */
64908		if (!search_over)
64909		    loc = loc + adv_loc;
64910		break;
64911	    }
64912
64913	case DW_CFA_advance_loc2:{
64914		READ_UNALIGNED(dbg, adv_loc, Dwarf_Unsigned,
64915			       instr_ptr, sizeof(Dwarf_Half));
64916		instr_ptr += sizeof(Dwarf_Half);
64917		fp_offset = adv_loc;
64918
64919		if (need_augmentation) {
64920		    *returned_error = (DW_DLE_DF_NO_CIE_AUGMENTATION);
64921		    return DW_DLV_ERROR;
64922		}
64923		adv_loc *= code_alignment_factor;
64924
64925		search_over = search_pc &&
64926		    (loc + adv_loc > search_pc_val);
64927
64928		/* If gone past pc needed, retain old pc.  */
64929		if (!search_over)
64930		    loc = loc + adv_loc;
64931		break;
64932	    }
64933
64934	case DW_CFA_advance_loc4:{
64935		READ_UNALIGNED(dbg, adv_loc, Dwarf_Unsigned,
64936			       instr_ptr, sizeof(Dwarf_ufixed));
64937		instr_ptr += sizeof(Dwarf_ufixed);
64938		fp_offset = adv_loc;
64939
64940		if (need_augmentation) {
64941		    *returned_error = (DW_DLE_DF_NO_CIE_AUGMENTATION);
64942		    return DW_DLV_ERROR;
64943		}
64944		adv_loc *= code_alignment_factor;
64945
64946		search_over = search_pc &&
64947		    (loc + adv_loc > search_pc_val);
64948
64949		/* If gone past pc needed, retain old pc.  */
64950		if (!search_over)
64951		    loc = loc + adv_loc;
64952		break;
64953	    }
64954
64955	case DW_CFA_offset_extended:{
64956		Dwarf_Unsigned lreg;
64957
64958		DECODE_LEB128_UWORD(instr_ptr, lreg)
64959		    reg_no = (Dwarf_Small) lreg;
64960		if (reg_no > DW_FRAME_LAST_REG_NUM) {
64961		    *returned_error = (DW_DLE_DF_REG_NUM_TOO_HIGH);
64962		    return DW_DLV_ERROR;
64963		}
64964		factored_N_value =
64965		    _dwarf_decode_u_leb128(instr_ptr, &leb128_length);
64966		instr_ptr += leb128_length;
64967
64968		if (need_augmentation) {
64969		    *returned_error = (DW_DLE_DF_NO_CIE_AUGMENTATION);
64970		    return DW_DLV_ERROR;
64971		}
64972		reg[reg_no].ru_is_off = 1;
64973		reg[reg_no].ru_register = DW_FRAME_CFA_COL;
64974		reg[reg_no].ru_offset = factored_N_value *
64975		    data_alignment_factor;
64976
64977		fp_register = reg_no;
64978		fp_offset = factored_N_value;
64979		break;
64980	    }
64981
64982	case DW_CFA_restore_extended:{
64983		Dwarf_Unsigned lreg;
64984
64985		DECODE_LEB128_UWORD(instr_ptr, lreg)
64986		    reg_no = (Dwarf_Small) lreg;
64987
64988		if (reg_no > DW_FRAME_LAST_REG_NUM) {
64989		    *returned_error = (DW_DLE_DF_REG_NUM_TOO_HIGH);
64990		    return DW_DLV_ERROR;
64991		}
64992
64993		if (cie != NULL && cie->ci_initial_table != NULL) {
64994		    reg[reg_no] = cie->ci_initial_table->fr_reg[reg_no];
64995		} else {
64996		    if (!make_instr) {
64997			*returned_error =
64998			    (DW_DLE_DF_MAKE_INSTR_NO_INIT);
64999			return DW_DLV_ERROR;
65000		    }
65001		}
65002
65003		fp_register = reg_no;
65004		break;
65005	    }
65006
65007	case DW_CFA_undefined:{
65008		Dwarf_Unsigned lreg;
65009
65010		DECODE_LEB128_UWORD(instr_ptr, lreg)
65011		    reg_no = (Dwarf_Small) lreg;
65012		if (reg_no > DW_FRAME_LAST_REG_NUM) {
65013		    *returned_error = (DW_DLE_DF_REG_NUM_TOO_HIGH);
65014		    return DW_DLV_ERROR;
65015		}
65016
65017		reg[reg_no].ru_is_off = 0;
65018		reg[reg_no].ru_register = DW_FRAME_UNDEFINED_VAL;
65019		reg[reg_no].ru_offset = 0;
65020
65021		fp_register = reg_no;
65022		break;
65023	    }
65024
65025	case DW_CFA_same_value:{
65026		Dwarf_Unsigned lreg;
65027
65028		DECODE_LEB128_UWORD(instr_ptr, lreg)
65029		    reg_no = (Dwarf_Small) lreg;
65030		if (reg_no > DW_FRAME_LAST_REG_NUM) {
65031		    *returned_error = (DW_DLE_DF_REG_NUM_TOO_HIGH);
65032		    return DW_DLV_ERROR;
65033		}
65034
65035		reg[reg_no].ru_is_off = 0;
65036		reg[reg_no].ru_register = DW_FRAME_SAME_VAL;
65037		reg[reg_no].ru_offset = 0;
65038		fp_register = reg_no;
65039		break;
65040	    }
65041
65042	case DW_CFA_register:{
65043		Dwarf_Unsigned lreg;
65044
65045		DECODE_LEB128_UWORD(instr_ptr, lreg)
65046		    reg_noA = (Dwarf_Small) lreg;
65047
65048		if (reg_noA > DW_FRAME_LAST_REG_NUM) {
65049		    *returned_error = (DW_DLE_DF_REG_NUM_TOO_HIGH);
65050		    return DW_DLV_ERROR;
65051		}
65052
65053		DECODE_LEB128_UWORD(instr_ptr, lreg)
65054		    reg_noB = (Dwarf_Small) lreg;
65055
65056		if (reg_noB > DW_FRAME_LAST_REG_NUM) {
65057		    *returned_error = (DW_DLE_DF_REG_NUM_TOO_HIGH);
65058		    return DW_DLV_ERROR;
65059		}
65060
65061
65062		reg[reg_noA].ru_is_off = 0;
65063		reg[reg_noA].ru_register = reg_noB;
65064
65065		reg[reg_noA].ru_offset = 0;
65066
65067		fp_register = reg_noA;
65068		fp_offset = reg_noB;
65069		break;
65070	    }
65071
65072	case DW_CFA_remember_state:{
65073		stack_table = (Dwarf_Frame)
65074		    _dwarf_get_alloc(dbg, DW_DLA_FRAME, 1);
65075		if (stack_table == NULL) {
65076		    *returned_error = (DW_DLE_DF_ALLOC_FAIL);
65077		    return DW_DLV_ERROR;
65078		}
65079
65080		for (i = 0; i < DW_FRAME_LAST_REG_NUM; i++)
65081		    stack_table->fr_reg[i] = reg[i];
65082
65083		if (top_stack != NULL)
65084		    stack_table->fr_next = top_stack;
65085		top_stack = stack_table;
65086
65087		break;
65088	    }
65089
65090	case DW_CFA_restore_state:{
65091		if (top_stack == NULL) {
65092		    *returned_error = (DW_DLE_DF_POP_EMPTY_STACK);
65093		    return DW_DLV_ERROR;
65094		}
65095		stack_table = top_stack;
65096		top_stack = stack_table->fr_next;
65097
65098		for (i = 0; i < DW_FRAME_LAST_REG_NUM; i++)
65099		    reg[i] = stack_table->fr_reg[i];
65100
65101		dwarf_dealloc(dbg, stack_table, DW_DLA_FRAME);
65102		break;
65103	    }
65104
65105	case DW_CFA_def_cfa:{
65106		Dwarf_Unsigned lreg;
65107
65108		DECODE_LEB128_UWORD(instr_ptr, lreg)
65109		    reg_no = (Dwarf_Small) lreg;
65110
65111		if (reg_no > DW_FRAME_LAST_REG_NUM) {
65112		    *returned_error = (DW_DLE_DF_REG_NUM_TOO_HIGH);
65113		    return (DW_DLV_ERROR);
65114		}
65115
65116		factored_N_value =
65117		    _dwarf_decode_u_leb128(instr_ptr, &leb128_length);
65118		instr_ptr += leb128_length;
65119
65120		if (need_augmentation) {
65121		    *returned_error = (DW_DLE_DF_NO_CIE_AUGMENTATION);
65122		    return DW_DLV_ERROR;
65123		}
65124		reg[DW_FRAME_CFA_COL].ru_is_off = 1;
65125		reg[DW_FRAME_CFA_COL].ru_register = reg_no;
65126		reg[DW_FRAME_CFA_COL].ru_offset = factored_N_value;
65127
65128		fp_register = reg_no;
65129		fp_offset = factored_N_value;
65130		break;
65131	    }
65132
65133	case DW_CFA_def_cfa_register:{
65134		Dwarf_Unsigned lreg;
65135
65136		DECODE_LEB128_UWORD(instr_ptr, lreg)
65137		    reg_no = (Dwarf_Small) lreg;
65138
65139		if (reg_no > DW_FRAME_LAST_REG_NUM) {
65140		    *returned_error = (DW_DLE_DF_REG_NUM_TOO_HIGH);
65141		    return DW_DLV_ERROR;
65142		}
65143
65144		reg[DW_FRAME_CFA_COL].ru_is_off = 0;
65145		reg[DW_FRAME_CFA_COL].ru_register = reg_no;
65146		reg[DW_FRAME_CFA_COL].ru_offset = 0;
65147		fp_register = reg_no;
65148		break;
65149	    }
65150
65151	case DW_CFA_def_cfa_offset:{
65152		factored_N_value =
65153		    _dwarf_decode_u_leb128(instr_ptr, &leb128_length);
65154		instr_ptr += leb128_length;
65155
65156		if (need_augmentation) {
65157		    *returned_error = (DW_DLE_DF_NO_CIE_AUGMENTATION);
65158		    return DW_DLV_ERROR;
65159		}
65160		reg[DW_FRAME_CFA_COL].ru_offset = factored_N_value;
65161
65162		fp_offset = factored_N_value;
65163		break;
65164	    }
65165
65166	case DW_CFA_nop:{
65167		break;
65168	    }
65169
65170#ifdef DW_CFA_GNU_window_save
65171	case DW_CFA_GNU_window_save:{
65172		/* no information: this just tells unwinder to restore
65173		   the window registers from the previous frame's
65174		   window save area */
65175		break;
65176	    }
65177#endif
65178#ifdef  DW_CFA_GNU_args_size
65179	    /* single uleb128 is the current arg area size in bytes. No
65180	       register exists yet to save this in */
65181	case DW_CFA_GNU_args_size:{
65182		Dwarf_Unsigned lreg;
65183
65184		DECODE_LEB128_UWORD(instr_ptr, lreg)
65185		    reg_no = (Dwarf_Small) lreg;
65186
65187		break;
65188	    }
65189#endif
65190	}
65191
65192	if (make_instr) {
65193	    instr_count++;
65194
65195	    curr_instr = (Dwarf_Frame_Op *)
65196		_dwarf_get_alloc(dbg, DW_DLA_FRAME_OP, 1);
65197	    if (curr_instr == NULL) {
65198		*returned_error = (DW_DLE_DF_ALLOC_FAIL);
65199		return DW_DLV_ERROR;
65200	    }
65201
65202	    curr_instr->fp_base_op = fp_base_op;
65203	    curr_instr->fp_extended_op = fp_extended_op;
65204	    curr_instr->fp_register = fp_register;
65205	    curr_instr->fp_offset = fp_offset;
65206	    curr_instr->fp_instr_offset = fp_instr_offset;
65207
65208	    curr_instr_item = (Dwarf_Chain)
65209		_dwarf_get_alloc(dbg, DW_DLA_CHAIN, 1);
65210	    if (curr_instr_item == NULL) {
65211		*returned_error = (DW_DLE_DF_ALLOC_FAIL);
65212		return DW_DLV_ERROR;
65213	    }
65214
65215	    curr_instr_item->ch_item = curr_instr;
65216	    if (head_instr_chain == NULL)
65217		head_instr_chain = tail_instr_chain = curr_instr_item;
65218	    else {
65219		tail_instr_chain->ch_next = curr_instr_item;
65220		tail_instr_chain = curr_instr_item;
65221	    }
65222	}
65223    }
65224
65225    /*
65226       If frame instruction decoding was right we would stop exactly
65227       at final_instr_ptr. */
65228    if (instr_ptr > final_instr_ptr) {
65229	*returned_error = (DW_DLE_DF_FRAME_DECODING_ERROR);
65230	return DW_DLV_ERROR;
65231    }
65232
65233    /* Create the last row generated.  */
65234    if (table != NULL) {
65235	t1reg = reg;
65236	t1end = t1reg + DW_FRAME_LAST_REG_NUM;
65237	table->fr_loc = loc;
65238	t2reg = table->fr_reg;
65239	for (; t1reg < t1end; t1reg++, t2reg++) {
65240	    *t2reg = *t1reg;
65241	}
65242    }
65243
65244    /* Dealloc anything remaining on stack. */
65245    for (; top_stack != NULL;) {
65246	stack_table = top_stack;
65247	top_stack = top_stack->fr_next;
65248	dwarf_dealloc(dbg, stack_table, DW_DLA_FRAME);
65249    }
65250
65251    if (make_instr) {
65252	/* Allocate list of pointers to Dwarf_Frame_Op's.  */
65253	head_instr_block = (Dwarf_Frame_Op *)
65254	    _dwarf_get_alloc(dbg, DW_DLA_FRAME_BLOCK, instr_count);
65255	if (head_instr_block == NULL) {
65256	    *returned_error = DW_DLE_DF_ALLOC_FAIL;
65257	    return DW_DLV_ERROR;
65258	}
65259
65260	/*
65261	   Store pointers to Dwarf_Frame_Op's in this list and
65262	   deallocate the structs that chain the Dwarf_Frame_Op's. */
65263	curr_instr_item = head_instr_chain;
65264	for (i = 0; i < instr_count; i++) {
65265	    *(head_instr_block + i) =
65266		*(Dwarf_Frame_Op *) curr_instr_item->ch_item;
65267	    dealloc_instr_item = curr_instr_item;
65268	    curr_instr_item = curr_instr_item->ch_next;
65269	    dwarf_dealloc(dbg, dealloc_instr_item->ch_item,
65270			  DW_DLA_FRAME_OP);
65271	    dwarf_dealloc(dbg, dealloc_instr_item, DW_DLA_CHAIN);
65272	}
65273	*ret_frame_instr = head_instr_block;
65274
65275	*returned_count = (Dwarf_Sword) instr_count;
65276    } else {
65277	*returned_count = 0;
65278    }
65279    return DW_DLV_OK;
65280}
65281
65282static int
65283qsort_compare(const void *elem1, const void *elem2)
65284{
65285    Dwarf_Fde fde1 = *(Dwarf_Fde *) elem1;
65286    Dwarf_Fde fde2 = *(Dwarf_Fde *) elem2;
65287    Dwarf_Addr addr1 = fde1->fd_initial_location;
65288    Dwarf_Addr addr2 = fde2->fd_initial_location;
65289
65290    if (addr1 < addr2) {
65291	return -1;
65292    } else if (addr1 > addr2) {
65293	return 1;
65294    }
65295    return 0;
65296}
65297
65298/*
65299 * This function expects as input a pointer to Dwarf_Debug (dbg) and a
65300 * a pointer to Cie. It finds the augmentation string and returns after
65301 * setting *augmentation to point to it.
65302 */
65303static int
65304get_augmentation_string(Dwarf_Debug dbg,
65305			Dwarf_Small * cie_ptr,
65306			Dwarf_Unsigned cie_id_value,
65307			Dwarf_Small ** augmentation,
65308			Dwarf_Error * error)
65309{
65310    Dwarf_Unsigned cie_id;	/* must be min de_length_size bytes in
65311				   size */
65312    Dwarf_Small version;
65313    int local_length_size;
65314    Dwarf_Unsigned length;
65315    /*REFERENCED*/ /* Not used in this instance of the macro */
65316    int local_extension_size;
65317
65318
65319    /* READ_AREA_LENGTH updates cie_ptr for consumed bytes */
65320    READ_AREA_LENGTH(dbg, length, Dwarf_Unsigned,
65321		     cie_ptr, local_length_size, local_extension_size);
65322
65323
65324
65325    /* Read the Cie Id field. */
65326    READ_UNALIGNED(dbg, cie_id, Dwarf_Unsigned,
65327		   cie_ptr, local_length_size);
65328    SIGN_EXTEND(cie_id, local_length_size);
65329    if (cie_id != cie_id_value) {
65330	/* egcs-1.1.2 .eh_frame uses 0 as the distinguishing id. sgi
65331	   uses -1 in .debug_frame. .eh_frame not quite identical to
65332	   .debug_frame */
65333	_dwarf_error(dbg, error, DW_DLE_FRAME_VERSION_BAD);
65334	return (DW_DLV_ERROR);
65335    }
65336    cie_ptr += local_length_size;
65337
65338
65339    /* Read the version. */
65340    version = *(Dwarf_Small *) cie_ptr;
65341    cie_ptr++;
65342    if (version != DW_CIE_VERSION) {
65343	_dwarf_error(dbg, error, DW_DLE_FRAME_VERSION_BAD);
65344	return (DW_DLV_ERROR);
65345    }
65346
65347    /* At this point, cie_ptr is pointing at the augmentation string. */
65348    *augmentation = cie_ptr;
65349    return DW_DLV_OK;
65350}
65351
65352int
65353dwarf_get_cie_of_fde(Dwarf_Fde fde,
65354		     Dwarf_Cie * cie_returned, Dwarf_Error * error)
65355{
65356    if (fde == NULL) {
65357	_dwarf_error(NULL, error, DW_DLE_FDE_NULL);
65358	return (DW_DLV_ERROR);
65359    }
65360
65361    *cie_returned = fde->fd_cie;
65362    return DW_DLV_OK;
65363
65364}
65365
65366/*
65367  For g++ .eh_frame fde and cie.
65368  the cie id is different as the
65369  definition of the cie_id in an fde
65370	is the distance back from the address of the
65371	value to the cie.
65372  Or 0 if this is a true cie.
65373  Non standard dwarf, designed this way to be
65374  convenient at run time for an allocated
65375  (mapped into memory as part of the running image) section.
65376*/
65377int
65378dwarf_get_fde_list_eh(Dwarf_Debug dbg,
65379		      Dwarf_Cie ** cie_data,
65380		      Dwarf_Signed * cie_element_count,
65381		      Dwarf_Fde ** fde_data,
65382		      Dwarf_Signed * fde_element_count,
65383		      Dwarf_Error * error)
65384{
65385    int res;
65386
65387    res =
65388        _dwarf_load_section(dbg,
65389			    dbg->de_debug_frame_eh_gnu_index,
65390			    &dbg->de_debug_frame_eh_gnu,
65391			    error);
65392
65393    if (res != DW_DLV_OK) {
65394      return res;
65395    }
65396
65397    res =
65398	__dwarf_get_fde_list_internal(dbg,
65399				      cie_data,
65400				      cie_element_count,
65401				      fde_data,
65402				      fde_element_count,
65403				      dbg->de_debug_frame_eh_gnu,
65404				      dbg->de_debug_frame_size_eh_gnu,
65405				      /* cie_id_value */ 0,
65406				      /* use_gnu_cie_calc= */ 1,
65407				      error);
65408    return res;
65409}
65410
65411
65412
65413/*
65414  For standard dwarf .debug_frame
65415  cie_id is -1  in a cie, and
65416  is the section offset in the .debug_frame section
65417  of the cie otherwise.  Standard dwarf
65418*/
65419int
65420dwarf_get_fde_list(Dwarf_Debug dbg,
65421		   Dwarf_Cie ** cie_data,
65422		   Dwarf_Signed * cie_element_count,
65423		   Dwarf_Fde ** fde_data,
65424		   Dwarf_Signed * fde_element_count,
65425		   Dwarf_Error * error)
65426{
65427    int res;
65428
65429    res =
65430        _dwarf_load_section(dbg,
65431			    dbg->de_debug_frame_index,
65432			    &dbg->de_debug_frame,
65433			    error);
65434
65435    if (res != DW_DLV_OK) {
65436      return res;
65437    }
65438
65439    res =
65440	__dwarf_get_fde_list_internal(dbg, cie_data,
65441				      cie_element_count,
65442				      fde_data,
65443				      fde_element_count,
65444				      dbg->de_debug_frame,
65445				      dbg->de_debug_frame_size,
65446				      DW_CIE_ID,
65447				      /* use_gnu_cie_calc= */ 0,
65448				      error);
65449    return res;
65450}
65451
65452static int
65453__dwarf_get_fde_list_internal(Dwarf_Debug dbg,
65454			      Dwarf_Cie ** cie_data,
65455			      Dwarf_Signed * cie_element_count,
65456			      Dwarf_Fde ** fde_data,
65457			      Dwarf_Signed * fde_element_count,
65458			      Dwarf_Small * section_ptr,
65459			      Dwarf_Unsigned section_length,
65460			      Dwarf_Unsigned cie_id_value,
65461			      int use_gnu_cie_calc, Dwarf_Error * error)
65462{
65463    /* Scans the debug_frame section. */
65464    Dwarf_Small *frame_ptr = 0;
65465
65466    /* Points to the start of the current Fde or Cie. */
65467    Dwarf_Small *start_frame_ptr = 0;
65468
65469    /* Points to the start of the augmented entries of Fde or Cie. */
65470    Dwarf_Small *saved_frame_ptr = 0;
65471
65472    /* Fields for the current Cie being read. */
65473    Dwarf_Unsigned length = 0;	/* READ_UNALIGNED needs min
65474				   de_length_size byte dest */
65475    Dwarf_Unsigned cie_base_offset = 0;	/* needs to be min
65476					   de_length_size byte dest */
65477    Dwarf_Unsigned cie_id;
65478    Dwarf_Small version = 0;
65479    Dwarf_Small *augmentation = 0;
65480    Dwarf_Word code_alignment_factor = 4;
65481    Dwarf_Sword data_alignment_factor = -1;
65482    Dwarf_Small return_address_register = 31;
65483    Dwarf_Word length_of_augmented_fields = 0;
65484
65485    /*
65486       New_cie points to the Cie being read, and head_cie_ptr and
65487       cur_cie_ptr are used for chaining them up in sequence. */
65488    Dwarf_Cie new_cie;
65489    Dwarf_Cie head_cie_ptr = NULL;
65490    Dwarf_Cie cur_cie_ptr;
65491    Dwarf_Word cie_count = 0;
65492
65493    /*
65494       Points to a list of contiguous pointers to Dwarf_Cie
65495       structures. */
65496    Dwarf_Cie *cie_list_ptr;
65497
65498    /* Fields for the current Fde being read.  */
65499    Dwarf_Addr initial_location;	/* must be min de_pointer_size
65500					   bytes in size */
65501    Dwarf_Addr address_range;	/* must be min de_pointer_size bytes in
65502				   size */
65503
65504    /*
65505       New_fde points to the current Fde being read, and head_fde_ptr
65506       and cur_fde_ptr are used to chain them up. */
65507    Dwarf_Fde new_fde;
65508    Dwarf_Fde head_fde_ptr = NULL;
65509    Dwarf_Fde cur_fde_ptr;
65510    Dwarf_Word fde_count = 0;
65511
65512    /*
65513       Points to a list of contiguous pointers to Dwarf_Fde
65514       structures. */
65515    Dwarf_Fde *fde_list_ptr;
65516
65517    /*
65518       Is used to check the offset field in the Fde by checking for a
65519       Cie at this address. */
65520    Dwarf_Small *fde_cie_ptr;
65521
65522    Dwarf_Word leb128_length;
65523    Dwarf_Word i, j;
65524    int res;
65525    Dwarf_Word last_cie_index;
65526
65527
65528    Dwarf_Small *prev_augmentation_cie_ptr = 0;
65529    Dwarf_Small *prev_augmentation_ptr = 0;
65530
65531
65532    frame_ptr = section_ptr;
65533
65534    if (frame_ptr == 0) {
65535	return DW_DLV_NO_ENTRY;
65536    }
65537
65538    while (frame_ptr < section_ptr + section_length) {
65539	Dwarf_Small *cie_ptr_addr = 0;
65540	int local_extension_size = 0;
65541	int local_length_size = 0;
65542
65543	start_frame_ptr = frame_ptr;
65544
65545	/* READ_AREA_LENGTH updates frame_ptr for consumed bytes */
65546	READ_AREA_LENGTH(dbg, length, Dwarf_Unsigned,
65547			 frame_ptr, local_length_size,
65548			 local_extension_size);
65549
65550
65551	if (length % local_length_size != 0) {
65552	    _dwarf_error(dbg, error, DW_DLE_DEBUG_FRAME_LENGTH_BAD);
65553	    return (DW_DLV_ERROR);
65554	}
65555
65556	if (length == 0) {
65557	    /* nul bytes at end of section, seen at end of egcs
65558	       eh_frame sections (in a.out). Take this as meaning no
65559	       more CIE/FDE data. We should be very close to end of
65560	       section. */
65561	    break;
65562	}
65563
65564	cie_ptr_addr = frame_ptr;
65565	READ_UNALIGNED(dbg, cie_id, Dwarf_Unsigned,
65566		       frame_ptr, local_length_size);
65567	SIGN_EXTEND(cie_id, local_length_size);
65568	cie_base_offset = cie_id;	/* if this is a CIE, this is
65569					   ignored.  If it is an FDE,
65570					   this is the section offset
65571					   that allows us to get to the
65572					   cie of this fde. Save it for
65573					   the fde part of the 'if'
65574					   below */
65575
65576	frame_ptr += local_length_size;
65577
65578	if (cie_id == cie_id_value) {
65579	    /* egcs-1.1.2 .eh_frame uses 0 as the distinguishing id.
65580	       sgi uses -1 (in .debug_frame). .eh_frame not quite
65581	       identical to .debug_frame */
65582
65583
65584
65585	    /* this is a CIE, Common Information Entry: See the dwarf
65586	       spec, section 6.4.1 */
65587	    version = *(Dwarf_Small *) frame_ptr;
65588	    frame_ptr++;
65589	    if (version != DW_CIE_VERSION) {
65590		_dwarf_error(dbg, error, DW_DLE_FRAME_VERSION_BAD);
65591		return (DW_DLV_ERROR);
65592	    }
65593
65594	    augmentation = frame_ptr;
65595	    frame_ptr = frame_ptr + strlen((char *) frame_ptr) + 1;
65596	    if ((strcmp((char *) augmentation,
65597			DW_DEBUG_FRAME_AUGMENTER_STRING) == 0) ||
65598		(strcmp((char *) augmentation, DW_EMPTY_STRING) == 0)) {
65599
65600		Dwarf_Unsigned lreg;
65601
65602		DECODE_LEB128_UWORD(frame_ptr, lreg)
65603		    code_alignment_factor = (Dwarf_Word) lreg;
65604
65605
65606		data_alignment_factor =
65607		    (Dwarf_Sword) _dwarf_decode_s_leb128(frame_ptr,
65608							 &leb128_length);
65609
65610		frame_ptr = frame_ptr + leb128_length;
65611
65612		return_address_register = *(Dwarf_Small *) frame_ptr;
65613		if (return_address_register > DW_FRAME_LAST_REG_NUM) {
65614		    _dwarf_error(dbg, error,
65615				 DW_DLE_CIE_RET_ADDR_REG_ERROR);
65616		    return (DW_DLV_ERROR);
65617		}
65618		frame_ptr++;
65619	    } else if (augmentation[0] == 'z') {
65620		/* The augmentation starts with a known prefix. See the
65621		   dwarf_frame.h for details on the layout. */
65622
65623		Dwarf_Unsigned lreg;
65624
65625		DECODE_LEB128_UWORD(frame_ptr, lreg)
65626		    code_alignment_factor = (Dwarf_Word) lreg;
65627
65628
65629		data_alignment_factor =
65630		    (Dwarf_Sword) _dwarf_decode_s_leb128(frame_ptr,
65631							 &leb128_length);
65632		frame_ptr = frame_ptr + leb128_length;
65633
65634		return_address_register = *(Dwarf_Small *) frame_ptr;
65635		if (return_address_register > DW_FRAME_LAST_REG_NUM) {
65636		    _dwarf_error(dbg, error,
65637				 DW_DLE_CIE_RET_ADDR_REG_ERROR);
65638		    return (DW_DLV_ERROR);
65639		}
65640		frame_ptr++;
65641
65642		/* Decode the length of augmented fields. */
65643		DECODE_LEB128_UWORD(frame_ptr, lreg)
65644		    length_of_augmented_fields = (Dwarf_Word) lreg;
65645
65646
65647		/* set the frame_ptr to point at the instruction start.
65648		 */
65649		frame_ptr += length_of_augmented_fields;
65650	    } else if (0 == strcmp((const char *) augmentation, "eh")) {
65651
65652    	    	/*REFERENCED*/ /* Not used in this instance of the macro */
65653		Dwarf_Unsigned exception_table_addr;
65654
65655		/* this is per egcs-1.1.2 as on RH 6.0 */
65656		READ_UNALIGNED(dbg, exception_table_addr,
65657			       Dwarf_Unsigned, frame_ptr,
65658			       local_length_size);
65659		frame_ptr += local_length_size;
65660
65661		code_alignment_factor =
65662		    (Dwarf_Word) _dwarf_decode_s_leb128(frame_ptr,
65663							&leb128_length);
65664		frame_ptr = frame_ptr + leb128_length;
65665
65666
65667		data_alignment_factor =
65668		    (Dwarf_Sword) _dwarf_decode_s_leb128(frame_ptr,
65669							 &leb128_length);
65670
65671		frame_ptr = frame_ptr + leb128_length;
65672
65673		return_address_register = *(Dwarf_Small *) frame_ptr;
65674		if (return_address_register > DW_FRAME_LAST_REG_NUM) {
65675		    _dwarf_error(dbg, error,
65676				 DW_DLE_CIE_RET_ADDR_REG_ERROR);
65677		    return (DW_DLV_ERROR);
65678		}
65679		frame_ptr++;
65680
65681	    } else {
65682		/* We do not understand the augmentation string. No
65683		   assumption can be made about any fields other than
65684		   what we have already read. */
65685		frame_ptr = start_frame_ptr + length + local_length_size
65686		    + local_extension_size;
65687		/* FIX -- What are the values of data_alignment_factor,
65688		   code_alignement_factor, return_address_register and
65689		   instruction start? They were clearly uninitalized in
65690		   the previous version and I am leaving them the same
65691		   way. */
65692	    }
65693
65694	    new_cie = (Dwarf_Cie) _dwarf_get_alloc(dbg, DW_DLA_CIE, 1);
65695	    if (new_cie == NULL) {
65696		_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
65697		return (DW_DLV_ERROR);
65698	    }
65699
65700	    new_cie->ci_initial_table = NULL;
65701	    new_cie->ci_length = (Dwarf_Word) length;
65702	    new_cie->ci_length_size = local_length_size;
65703	    new_cie->ci_extension_size = local_extension_size;
65704	    new_cie->ci_augmentation = (char *) augmentation;
65705
65706	    new_cie->ci_data_alignment_factor =
65707		(Dwarf_Sbyte) data_alignment_factor;
65708	    new_cie->ci_code_alignment_factor =
65709		(Dwarf_Small) code_alignment_factor;
65710	    new_cie->ci_return_address_register =
65711		return_address_register;
65712	    new_cie->ci_cie_start = start_frame_ptr;
65713	    new_cie->ci_cie_instr_start = frame_ptr;
65714	    new_cie->ci_dbg = dbg;
65715
65716	    cie_count++;
65717	    if (head_cie_ptr == NULL)
65718		head_cie_ptr = cur_cie_ptr = new_cie;
65719	    else {
65720		cur_cie_ptr->ci_next = new_cie;
65721		cur_cie_ptr = new_cie;
65722	    }
65723	} else {
65724
65725
65726
65727	    /* this is an FDE, Frame Description Entry, see the Dwarf
65728	       Spec, section 6.4.1 */
65729	    Dwarf_Small *cieptr;
65730
65731	    Dwarf_Small *initloc = frame_ptr;
65732	    Dwarf_Signed offset_into_exception_tables
65733		/* must be min dwarf_sfixed in size */
65734		= (Dwarf_Signed) DW_DLX_NO_EH_OFFSET;
65735
65736	    READ_UNALIGNED(dbg, initial_location, Dwarf_Addr,
65737			   frame_ptr, dbg->de_pointer_size);
65738	    frame_ptr += dbg->de_pointer_size;
65739
65740	    READ_UNALIGNED(dbg, address_range, Dwarf_Addr,
65741			   frame_ptr, dbg->de_pointer_size);
65742	    frame_ptr += dbg->de_pointer_size;
65743	    /* Get the augmentation string from Cie to identify the
65744	       layout of this Fde.  */
65745	    if (use_gnu_cie_calc) {
65746		/* cie_id value is offset, in section, of the cie_id
65747		   itself, to use vm ptr of the value, less the value,
65748		   to get to the cie itself. In addition, munge
65749		   cie_base_offset to look *as if* it was from real
65750		   dwarf. */
65751		cieptr = cie_ptr_addr - cie_base_offset;
65752		cie_base_offset = cieptr - section_ptr;
65753	    } else {
65754		/* Traditional dwarf section offset is in cie_id */
65755		cieptr =
65756		    (Dwarf_Small *) (section_ptr + cie_base_offset);
65757	    }
65758
65759
65760	    if (prev_augmentation_cie_ptr == cieptr &&
65761		prev_augmentation_ptr != NULL) {
65762		augmentation = prev_augmentation_ptr;
65763	    } else {
65764		res = get_augmentation_string(dbg,
65765					      cieptr,
65766					      cie_id_value,
65767					      &augmentation, error);
65768		if (res != DW_DLV_OK) {
65769		    return res;
65770		}
65771		prev_augmentation_cie_ptr = cieptr;
65772		prev_augmentation_ptr = augmentation;
65773	    }
65774	    if ((strcmp((char *) augmentation,
65775			DW_DEBUG_FRAME_AUGMENTER_STRING) == 0) ||
65776		(strcmp((char *) augmentation, DW_EMPTY_STRING) == 0)) {
65777		/* We are pointing at the start of instructions. Do
65778		   nothing. */
65779	    } else if (augmentation[0] == 'z') {
65780		Dwarf_Unsigned lreg;
65781
65782		DECODE_LEB128_UWORD(frame_ptr, lreg)
65783		    length_of_augmented_fields = (Dwarf_Word) lreg;
65784
65785		saved_frame_ptr = frame_ptr;
65786		if (strcmp((char *) augmentation,
65787			   DW_CIE_AUGMENTER_STRING_V0) == 0) {
65788		    /* The first word is an offset into execption
65789		       tables. */
65790		    /* ?? THis presumes that the offset is always 32
65791		       bits */
65792		    READ_UNALIGNED(dbg, offset_into_exception_tables,
65793				   Dwarf_Addr, frame_ptr,
65794				   sizeof(Dwarf_sfixed));
65795		    SIGN_EXTEND(offset_into_exception_tables,
65796				sizeof(Dwarf_sfixed));
65797		    frame_ptr += local_length_size;
65798		}
65799		frame_ptr =
65800		    saved_frame_ptr + length_of_augmented_fields;
65801	    } else if (strcmp((const char *) augmentation, "eh") == 0) {
65802		/* gnu eh fde case. we do not need to do anything */
65803    	    	/*REFERENCED*/ /* Not used in this instance of the macro */
65804		Dwarf_Unsigned exception_table_addr;
65805
65806		READ_UNALIGNED(dbg, exception_table_addr,
65807			       Dwarf_Unsigned, frame_ptr,
65808			       dbg->de_pointer_size);
65809		frame_ptr += dbg->de_pointer_size;
65810	    } else {
65811		/* We do not understand the augmentation string. No
65812		   assumption can be made about if the instructions is
65813		   present. */
65814		/* FIX -- The old code assumed that the instruction
65815		   table starts at the location pointed to by
65816		   frame_ptr, clearly incorrect. */
65817	    }
65818	    new_fde = (Dwarf_Fde) _dwarf_get_alloc(dbg, DW_DLA_FDE, 1);
65819	    if (new_fde == NULL) {
65820		_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
65821		return (DW_DLV_ERROR);
65822	    }
65823
65824	    new_fde->fd_length = (Dwarf_Word) length;
65825	    new_fde->fd_length_size = local_length_size;
65826	    new_fde->fd_extension_size = local_extension_size;
65827	    new_fde->fd_cie_offset = cie_base_offset;
65828	    new_fde->fd_initial_location = initial_location;
65829	    new_fde->fd_initial_loc_pos = initloc;
65830	    new_fde->fd_address_range = address_range;
65831	    new_fde->fd_fde_start = start_frame_ptr;
65832	    new_fde->fd_fde_instr_start = frame_ptr;
65833	    new_fde->fd_dbg = dbg;
65834	    new_fde->fd_offset_into_exception_tables =
65835		offset_into_exception_tables;
65836
65837	    fde_count++;
65838	    if (head_fde_ptr == NULL)
65839		head_fde_ptr = cur_fde_ptr = new_fde;
65840	    else {
65841		cur_fde_ptr->fd_next = new_fde;
65842		cur_fde_ptr = new_fde;
65843	    }
65844	}
65845
65846	/* Skip over instructions to start of next frame. */
65847	frame_ptr = start_frame_ptr + length + local_length_size +
65848	    local_extension_size;
65849    }
65850
65851    if (cie_count > 0) {
65852	cie_list_ptr = (Dwarf_Cie *)
65853	    _dwarf_get_alloc(dbg, DW_DLA_LIST, cie_count);
65854    } else {
65855	return (DW_DLV_NO_ENTRY);
65856    }
65857    if (cie_list_ptr == NULL) {
65858	_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
65859	return (DW_DLV_ERROR);
65860    }
65861    /* Return arguments. */
65862    *cie_data = cie_list_ptr;
65863    *cie_element_count = cie_count;
65864    dbg->de_cie_data = cie_list_ptr;
65865    dbg->de_cie_count = cie_count;
65866
65867    cur_cie_ptr = head_cie_ptr;
65868    for (i = 0; i < cie_count; i++) {
65869	*(cie_list_ptr + i) = cur_cie_ptr;
65870	cur_cie_ptr = cur_cie_ptr->ci_next;
65871    }
65872
65873    if (fde_count > 0) {
65874	fde_list_ptr = (Dwarf_Fde *)
65875	    _dwarf_get_alloc(dbg, DW_DLA_LIST, fde_count);
65876    } else {
65877	return (DW_DLV_NO_ENTRY);
65878    }
65879    if (fde_list_ptr == NULL) {
65880	_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
65881	return (DW_DLV_ERROR);
65882    }
65883    /* Return arguments. */
65884    *fde_data = fde_list_ptr;
65885    *fde_element_count = fde_count;
65886    dbg->de_fde_data = fde_list_ptr;
65887    dbg->de_fde_count = fde_count;
65888    last_cie_index = 0;
65889
65890    cur_fde_ptr = head_fde_ptr;
65891    for (i = 0; i < fde_count; i++) {
65892	Dwarf_Sword new_cie_index = (Dwarf_Sword) cie_count;
65893
65894	*(fde_list_ptr + i) = cur_fde_ptr;
65895
65896	fde_cie_ptr = (Dwarf_Small *) (section_ptr +
65897				       cur_fde_ptr->fd_cie_offset);
65898
65899
65900	/* we assume that the next fde has the same cie as the ** last
65901	   fde and resume the search where we left off */
65902	for (j = last_cie_index; j < cie_count; j++) {
65903	    Dwarf_Cie ciep = (Dwarf_Cie) * (cie_list_ptr + j);
65904
65905	    if (ciep->ci_cie_start == fde_cie_ptr) {
65906		new_cie_index = (Dwarf_Sword) j;
65907		break;
65908	    }
65909	}
65910	/* did not find it above, start from 0 and try again */
65911	if (new_cie_index == cie_count) {
65912	    for (j = 0; j < last_cie_index; ++j) {
65913		Dwarf_Cie ciep = (Dwarf_Cie) * (cie_list_ptr + j);
65914
65915		if (ciep->ci_cie_start == fde_cie_ptr) {
65916		    new_cie_index = (Dwarf_Sword) j;
65917		    break;
65918		}
65919	    }
65920	}
65921	j = new_cie_index;
65922	last_cie_index = new_cie_index;
65923	if (j == cie_count) {
65924	    _dwarf_error(dbg, error, DW_DLE_NO_CIE_FOR_FDE);
65925	    return (DW_DLV_ERROR);
65926	} else {
65927	    cur_fde_ptr->fd_cie_index = (Dwarf_Sword) j;
65928	    cur_fde_ptr->fd_cie = *(cie_list_ptr + j);
65929	}
65930
65931	cur_fde_ptr = cur_fde_ptr->fd_next;
65932    }
65933
65934    /* sort the list by the address, so that dwarf_get_fde_at_pc() can
65935       binary search this list. */
65936    qsort((void *) fde_list_ptr, fde_count, sizeof(Dwarf_Ptr),
65937	  qsort_compare);
65938
65939    return (DW_DLV_OK);
65940}
65941
65942/*
65943   Only works on dwarf sections, not eh_frame
65944*/
65945int
65946dwarf_get_fde_for_die(Dwarf_Debug dbg,
65947		      Dwarf_Die die,
65948		      Dwarf_Fde * ret_fde, Dwarf_Error * error)
65949{
65950    Dwarf_Attribute attr;
65951    Dwarf_Unsigned fde_offset;
65952    Dwarf_Signed signdval;
65953    Dwarf_Unsigned length;	/* must be min de_length_size bytes */
65954    Dwarf_Signed signed_offset;	/* must be min de_length_size bytes */
65955    Dwarf_Addr initial_location;	/* must be min de_pointer_size
65956					   bytes */
65957    Dwarf_Addr address_range;	/* must be min de_pointer_size bytes */
65958    Dwarf_Fde new_fde;
65959    unsigned char *fde_ptr;
65960    Dwarf_Small *saved_fde_ptr;
65961    unsigned char *cie_ptr;
65962    unsigned char *start_cie_ptr;
65963    Dwarf_Cie new_cie;
65964
65965    /* Fields for the current Cie being read. */
65966    Dwarf_Small version;
65967    Dwarf_Small *augmentation;
65968    Dwarf_Word code_alignment_factor;
65969    Dwarf_Sword data_alignment_factor;
65970    Dwarf_Small return_address_register;
65971    Dwarf_Word length_of_augmented_fields;
65972    Dwarf_Signed offset_into_exception_tables =
65973	(Dwarf_Signed) DW_DLX_NO_EH_OFFSET;
65974    int res;
65975    int resattr;
65976    int sdatares;
65977    int fde_local_extension_size = 0;
65978    int fde_local_length_size = 0;
65979    int cie_local_extension_size = 0;
65980    int cie_local_length_size = 0;
65981
65982
65983    Dwarf_Word leb128_length;
65984
65985    if (die == NULL) {
65986	_dwarf_error(NULL, error, DW_DLE_DIE_NULL);
65987	return (DW_DLV_ERROR);
65988    }
65989
65990    resattr = dwarf_attr(die, DW_AT_MIPS_fde, &attr, error);
65991    if (resattr != DW_DLV_OK) {
65992	return resattr;
65993    }
65994
65995    /* why is this formsdata? FIX */
65996    sdatares = dwarf_formsdata(attr, &signdval, error);
65997    if (sdatares != DW_DLV_OK) {
65998	return sdatares;
65999    }
66000
66001    res =
66002        _dwarf_load_section(dbg,
66003			    dbg->de_debug_frame_index,
66004			    &dbg->de_debug_frame,
66005			    error);
66006    if (res != DW_DLV_OK) {
66007      return res;
66008    }
66009
66010    fde_offset = signdval;
66011    fde_ptr = (dbg->de_debug_frame + fde_offset);
66012
66013    /* READ_AREA_LENGTH updates fde_ptr for consumed bytes */
66014    READ_AREA_LENGTH(dbg, length, Dwarf_Unsigned,
66015		     fde_ptr, fde_local_length_size,
66016		     fde_local_extension_size);
66017
66018
66019    if (length % fde_local_length_size != 0) {
66020	_dwarf_error(dbg, error, DW_DLE_DEBUG_FRAME_LENGTH_BAD);
66021	return (DW_DLV_ERROR);
66022    }
66023
66024    READ_UNALIGNED(dbg, signed_offset, Dwarf_Signed,
66025		   fde_ptr, fde_local_length_size);
66026    SIGN_EXTEND(signed_offset, fde_local_length_size);
66027    fde_ptr += fde_local_length_size;
66028
66029    READ_UNALIGNED(dbg, initial_location, Dwarf_Addr,
66030		   fde_ptr, dbg->de_pointer_size);
66031    fde_ptr += dbg->de_pointer_size;
66032
66033    READ_UNALIGNED(dbg, address_range, Dwarf_Addr,
66034		   fde_ptr, dbg->de_pointer_size);
66035    fde_ptr += dbg->de_pointer_size;
66036
66037    res = get_augmentation_string(dbg,
66038				  (Dwarf_Small *) (dbg->de_debug_frame +
66039						   signed_offset),
66040				  DW_CIE_ID, &augmentation, error);
66041    if (res != DW_DLV_OK) {
66042	return res;
66043    }
66044
66045    if ((strcmp((char *) augmentation, DW_DEBUG_FRAME_AUGMENTER_STRING)
66046	 == 0) ||
66047	(strcmp((char *) augmentation, DW_EMPTY_STRING) == 0)) {
66048	/* Do nothing. The fde_ptr is pointing at start of
66049	   instructions. */
66050    } else if (augmentation[0] == 'z') {
66051	/* The augmentation starts with a known prefix. See the
66052	   dwarf_frame.h for details on the layout. */
66053
66054	Dwarf_Unsigned lreg;
66055
66056	DECODE_LEB128_UWORD(fde_ptr, lreg)
66057	    length_of_augmented_fields = (Dwarf_Word) lreg;
66058
66059	saved_fde_ptr = fde_ptr;
66060	if (strcmp((char *) augmentation, DW_CIE_AUGMENTER_STRING_V0) ==
66061	    0) {
66062	    /* The first word is an offset into execption tables. */
66063	    READ_UNALIGNED(dbg, offset_into_exception_tables,
66064			   Dwarf_Signed, fde_ptr, sizeof(Dwarf_sfixed));
66065	    SIGN_EXTEND(offset_into_exception_tables,
66066			sizeof(Dwarf_sfixed));
66067	    fde_ptr += sizeof(Dwarf_sfixed);
66068	}
66069	fde_ptr = saved_fde_ptr + length_of_augmented_fields;
66070    } else {
66071	/* We do not understand the augmentation string. No assumption
66072	   can be made about if the instructions is present. */
66073	/* FIX -- The old code assumed that the instruction table
66074	   starts at location pointed to by fde_ptr, clearly incorrect.
66075	 */
66076    }
66077
66078    new_fde = (Dwarf_Fde) _dwarf_get_alloc(dbg, DW_DLA_FDE, 1);
66079    if (new_fde == NULL) {
66080	_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
66081	return (DW_DLV_ERROR);
66082    }
66083
66084    new_fde->fd_length = (Dwarf_Word) length;
66085    new_fde->fd_length_size = fde_local_length_size;
66086    new_fde->fd_extension_size = fde_local_extension_size;
66087    new_fde->fd_cie_offset = signed_offset;
66088    new_fde->fd_initial_location = initial_location;
66089    new_fde->fd_address_range = address_range;
66090    new_fde->fd_fde_start = dbg->de_debug_frame + fde_offset;
66091    new_fde->fd_fde_instr_start = (Dwarf_Small *) fde_ptr;
66092    new_fde->fd_dbg = dbg;
66093    new_fde->fd_offset_into_exception_tables =
66094	offset_into_exception_tables;
66095
66096    /* now read the cie corresponding to the fde */
66097    cie_ptr = (dbg->de_debug_frame + signed_offset);
66098    start_cie_ptr = cie_ptr;
66099
66100    /* READ_AREA_LENGTH updates cie_ptr for consumed bytes */
66101    READ_AREA_LENGTH(dbg, length, Dwarf_Unsigned,
66102		     cie_ptr, cie_local_length_size,
66103		     cie_local_extension_size);
66104
66105
66106    if (length % cie_local_length_size != 0) {
66107	_dwarf_error(dbg, error, DW_DLE_DEBUG_FRAME_LENGTH_BAD);
66108	return (DW_DLV_ERROR);
66109    }
66110
66111    READ_UNALIGNED(dbg, signed_offset, Dwarf_Signed,
66112		   cie_ptr, cie_local_length_size);
66113    SIGN_EXTEND(signed_offset, cie_local_length_size);
66114    cie_ptr += cie_local_length_size;
66115
66116    if (signed_offset == DW_CIE_ID) {
66117
66118	version = *(Dwarf_Small *) cie_ptr;
66119	cie_ptr++;
66120	if (version != DW_CIE_VERSION) {
66121	    _dwarf_error(dbg, error, DW_DLE_FRAME_VERSION_BAD);
66122	    return (DW_DLV_ERROR);
66123	}
66124
66125	augmentation = cie_ptr;
66126	cie_ptr = cie_ptr + strlen((char *) cie_ptr) + 1;
66127	if ((strcmp((char *) augmentation,
66128		    DW_DEBUG_FRAME_AUGMENTER_STRING) == 0) ||
66129	    (strcmp((char *) augmentation, DW_EMPTY_STRING) == 0)) {
66130
66131	    Dwarf_Unsigned lreg;
66132
66133	    DECODE_LEB128_UWORD(cie_ptr, lreg)
66134		code_alignment_factor = (Dwarf_Word) lreg;
66135
66136
66137	    data_alignment_factor = (Dwarf_Sword)
66138		_dwarf_decode_s_leb128(cie_ptr, &leb128_length);
66139	    cie_ptr = cie_ptr + leb128_length;
66140
66141	    return_address_register = *(Dwarf_Small *) cie_ptr;
66142	    if (return_address_register > DW_FRAME_LAST_REG_NUM) {
66143		_dwarf_error(dbg, error, DW_DLE_CIE_RET_ADDR_REG_ERROR);
66144		return (DW_DLV_ERROR);
66145	    }
66146	    cie_ptr++;
66147	} else if (augmentation[0] == 'z') {
66148	    /* The augmentation starts with a known prefix. We can
66149	       asssume that the first field is the length of the
66150	       augmented fields. */
66151
66152	    Dwarf_Unsigned lreg;
66153
66154	    DECODE_LEB128_UWORD(cie_ptr, lreg)
66155		code_alignment_factor = (Dwarf_Word) lreg;
66156	    data_alignment_factor = (Dwarf_Sword)
66157		_dwarf_decode_s_leb128(cie_ptr, &leb128_length);
66158	    cie_ptr = cie_ptr + leb128_length;
66159
66160	    return_address_register = *(Dwarf_Small *) cie_ptr;
66161	    if (return_address_register > DW_FRAME_LAST_REG_NUM) {
66162		_dwarf_error(dbg, error, DW_DLE_CIE_RET_ADDR_REG_ERROR);
66163		return (DW_DLV_ERROR);
66164	    }
66165	    cie_ptr++;
66166	    /* Decode the length of augmented fields. */
66167	    DECODE_LEB128_UWORD(cie_ptr, lreg)
66168		length_of_augmented_fields = (Dwarf_Word) lreg;
66169
66170	    /* set the cie_ptr to point at the instruction start. */
66171	    cie_ptr += length_of_augmented_fields;
66172	} else if (strcmp((const char *) augmentation, "eh") == 0) {
66173	    Dwarf_Unsigned lreg;
66174
66175	    DECODE_LEB128_UWORD(cie_ptr, lreg)
66176		code_alignment_factor = (Dwarf_Word) lreg;
66177
66178
66179	    data_alignment_factor = (Dwarf_Sword)
66180		_dwarf_decode_s_leb128(cie_ptr, &leb128_length);
66181	    cie_ptr = cie_ptr + leb128_length;
66182
66183	    return_address_register = *(Dwarf_Small *) cie_ptr;
66184	    if (return_address_register > DW_FRAME_LAST_REG_NUM) {
66185		_dwarf_error(dbg, error, DW_DLE_CIE_RET_ADDR_REG_ERROR);
66186		return (DW_DLV_ERROR);
66187	    }
66188	    cie_ptr++;
66189
66190	} else {
66191	    /* We do not understand the augmentation string. No
66192	       assumption can be made about any fields other than what
66193	       we have already read. */
66194	    cie_ptr = start_cie_ptr + length + cie_local_length_size
66195		+ cie_local_extension_size;
66196	    /* FIX -- What are the values of data_alignment_factor,
66197	       code_alignement_factor, return_address_register and
66198	       instruction start? They were clearly uninitalized in
66199	       the previous version and I am leaving them the same way.
66200	     */
66201	}
66202
66203	new_cie = (Dwarf_Cie) _dwarf_get_alloc(dbg, DW_DLA_CIE, 1);
66204	if (new_cie == NULL) {
66205	    _dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
66206	    return (DW_DLV_ERROR);
66207	}
66208
66209	new_cie->ci_initial_table = NULL;
66210	new_cie->ci_length = (Dwarf_Word) length;
66211	new_cie->ci_length_size = cie_local_length_size;
66212	new_cie->ci_extension_size = cie_local_extension_size;
66213	new_cie->ci_augmentation = (char *) augmentation;
66214	new_cie->ci_data_alignment_factor =
66215	    (Dwarf_Sbyte) data_alignment_factor;
66216	new_cie->ci_code_alignment_factor =
66217	    (Dwarf_Small) code_alignment_factor;
66218	new_cie->ci_return_address_register = return_address_register;
66219	new_cie->ci_cie_start = start_cie_ptr;
66220	new_cie->ci_cie_instr_start = cie_ptr;
66221	new_cie->ci_dbg = dbg;
66222    } else {
66223	_dwarf_error(dbg, error, DW_DLE_NO_CIE_FOR_FDE);
66224	return (DW_DLV_ERROR);
66225    }
66226    new_fde->fd_cie = new_cie;
66227
66228    *ret_fde = new_fde;
66229    return DW_DLV_OK;
66230}
66231
66232
66233int
66234dwarf_get_fde_range(Dwarf_Fde fde,
66235		    Dwarf_Addr * low_pc,
66236		    Dwarf_Unsigned * func_length,
66237		    Dwarf_Ptr * fde_bytes,
66238		    Dwarf_Unsigned * fde_byte_length,
66239		    Dwarf_Off * cie_offset,
66240		    Dwarf_Signed * cie_index,
66241		    Dwarf_Off * fde_offset, Dwarf_Error * error)
66242{
66243    int res;
66244    Dwarf_Debug dbg;
66245
66246    if (fde == NULL) {
66247	_dwarf_error(NULL, error, DW_DLE_FDE_NULL);
66248	return (DW_DLV_ERROR);
66249    }
66250
66251    dbg = fde->fd_dbg;
66252    if (dbg == NULL) {
66253	_dwarf_error(NULL, error, DW_DLE_FDE_DBG_NULL);
66254	return (DW_DLV_ERROR);
66255    }
66256
66257    res =
66258        _dwarf_load_section(dbg,
66259			    dbg->de_debug_frame_index,
66260			    &dbg->de_debug_frame,
66261			    error);
66262    if (res != DW_DLV_OK) {
66263        return res;
66264    }
66265
66266    if (low_pc != NULL)
66267	*low_pc = fde->fd_initial_location;
66268    if (func_length != NULL)
66269	*func_length = fde->fd_address_range;
66270    if (fde_bytes != NULL)
66271	*fde_bytes = fde->fd_fde_start;
66272    if (fde_byte_length != NULL)
66273	*fde_byte_length = fde->fd_length;
66274    if (cie_offset != NULL)
66275	*cie_offset = fde->fd_cie_offset;
66276    if (cie_index != NULL)
66277	*cie_index = fde->fd_cie_index;
66278    if (fde_offset != NULL)
66279	*fde_offset = fde->fd_fde_start - dbg->de_debug_frame;
66280
66281    return DW_DLV_OK;
66282}
66283
66284int
66285dwarf_get_fde_exception_info(Dwarf_Fde fde,
66286			     Dwarf_Signed *
66287			     offset_into_exception_tables,
66288			     Dwarf_Error * error)
66289{
66290    Dwarf_Debug dbg;
66291
66292    dbg = fde->fd_dbg;
66293    if (dbg == NULL) {
66294	_dwarf_error(NULL, error, DW_DLE_FDE_DBG_NULL);
66295	return (DW_DLV_ERROR);
66296    }
66297    *offset_into_exception_tables =
66298	fde->fd_offset_into_exception_tables;
66299    return DW_DLV_OK;
66300}
66301
66302
66303int
66304dwarf_get_cie_info(Dwarf_Cie cie,
66305		   Dwarf_Unsigned * bytes_in_cie,
66306		   Dwarf_Small * version,
66307		   char **augmenter,
66308		   Dwarf_Unsigned * code_alignment_factor,
66309		   Dwarf_Signed * data_alignment_factor,
66310		   Dwarf_Half * return_address_register,
66311		   Dwarf_Ptr * initial_instructions,
66312		   Dwarf_Unsigned * initial_instructions_length,
66313		   Dwarf_Error * error)
66314{
66315    Dwarf_Debug dbg;
66316
66317    if (cie == NULL) {
66318	_dwarf_error(NULL, error, DW_DLE_CIE_NULL);
66319	return (DW_DLV_ERROR);
66320    }
66321
66322    dbg = cie->ci_dbg;
66323    if (dbg == NULL) {
66324	_dwarf_error(NULL, error, DW_DLE_CIE_DBG_NULL);
66325	return (DW_DLV_ERROR);
66326    }
66327
66328    if (version != NULL)
66329	*version = DW_CIE_VERSION;
66330    if (augmenter != NULL)
66331	*augmenter = cie->ci_augmentation;
66332    if (code_alignment_factor != NULL)
66333	*code_alignment_factor = cie->ci_code_alignment_factor;
66334    if (data_alignment_factor != NULL)
66335	*data_alignment_factor = cie->ci_data_alignment_factor;
66336    if (return_address_register != NULL)
66337	*return_address_register = cie->ci_return_address_register;
66338    if (initial_instructions != NULL)
66339	*initial_instructions = cie->ci_cie_instr_start;
66340    if (initial_instructions_length != NULL) {
66341	*initial_instructions_length = cie->ci_length +
66342	    cie->ci_length_size +
66343	    cie->ci_extension_size -
66344	    (cie->ci_cie_instr_start - cie->ci_cie_start);
66345
66346    }
66347    *bytes_in_cie = (cie->ci_length);
66348    return (DW_DLV_OK);
66349}
66350
66351static int
66352_dwarf_get_fde_info_for_a_pc_row(Dwarf_Fde fde,
66353				 Dwarf_Addr pc_requested,
66354				 Dwarf_Frame table, Dwarf_Error * error)
66355/* Return the register rules for all registers at a given pc. */
66356{
66357    Dwarf_Debug dbg;
66358    Dwarf_Cie cie;
66359    Dwarf_Sword i;
66360    int dw_err;
66361    Dwarf_Sword icount;
66362    int res;
66363
66364    if (fde == NULL) {
66365	_dwarf_error(NULL, error, DW_DLE_FDE_NULL);
66366	return (DW_DLV_ERROR);
66367    }
66368
66369    dbg = fde->fd_dbg;
66370    if (dbg == NULL) {
66371	_dwarf_error(NULL, error, DW_DLE_FDE_DBG_NULL);
66372	return (DW_DLV_ERROR);
66373    }
66374
66375    if (pc_requested < fde->fd_initial_location ||
66376	pc_requested >=
66377	fde->fd_initial_location + fde->fd_address_range) {
66378	_dwarf_error(dbg, error, DW_DLE_PC_NOT_IN_FDE_RANGE);
66379	return (DW_DLV_ERROR);
66380    }
66381
66382    cie = fde->fd_cie;
66383    if (cie->ci_initial_table == NULL) {
66384	cie->ci_initial_table = _dwarf_get_alloc(dbg, DW_DLA_FRAME, 1);
66385	if (cie->ci_initial_table == NULL) {
66386	    _dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
66387	    return (DW_DLV_ERROR);
66388	}
66389	for (i = 0; i < DW_FRAME_LAST_REG_NUM; i++) {
66390	    cie->ci_initial_table->fr_reg[i].ru_is_off = 0;
66391	    cie->ci_initial_table->fr_reg[i].ru_register =
66392		DW_FRAME_SAME_VAL;
66393	    cie->ci_initial_table->fr_reg[i].ru_offset = 0;
66394	}
66395
66396	res = _dwarf_exec_frame_instr( /* make_instr= */ false,
66397				      /* ret_frame_instr= */ NULL,
66398				      /* search_pc */ false,
66399				      /* search_pc_val */ 0,
66400				      /* location */ 0,
66401				      cie->ci_cie_instr_start,
66402				      cie->ci_cie_instr_start +
66403				      (cie->ci_length +
66404				       cie->ci_length_size +
66405				       cie->ci_extension_size -
66406				       (cie->ci_cie_instr_start -
66407					cie->ci_cie_start)),
66408				      cie->ci_initial_table, cie, dbg,
66409				      &icount, &dw_err);
66410	if (res == DW_DLV_ERROR) {
66411	    _dwarf_error(dbg, error, dw_err);
66412	    return (res);
66413	} else if (res == DW_DLV_NO_ENTRY) {
66414	    return res;
66415	}
66416    }
66417
66418    res = _dwarf_exec_frame_instr( /* make_instr= */ false,
66419				  /* ret_frame_instr= */ NULL,
66420				  /* search_pc */ true,
66421				  /* search_pc_val */ pc_requested,
66422				  fde->fd_initial_location,
66423				  fde->fd_fde_instr_start,
66424				  fde->fd_fde_start + fde->fd_length +
66425				  fde->fd_length_size +
66426				  fde->fd_extension_size,
66427				  table, cie, dbg, &icount, &dw_err);
66428    if (res == DW_DLV_ERROR) {
66429	_dwarf_error(dbg, error, dw_err);
66430	return (res);
66431    } else if (res == DW_DLV_NO_ENTRY) {
66432	return res;
66433    }
66434
66435    return DW_DLV_OK;
66436}
66437
66438int
66439dwarf_get_fde_info_for_all_regs(Dwarf_Fde fde,
66440				Dwarf_Addr pc_requested,
66441				Dwarf_Regtable * reg_table,
66442				Dwarf_Addr * row_pc,
66443				Dwarf_Error * error)
66444{
66445
66446    struct Dwarf_Frame_s fde_table;
66447    Dwarf_Sword i;
66448    int res;
66449
66450    /* _dwarf_get_fde_info_for_a_pc_row will perform more sanity checks
66451     */
66452    res = _dwarf_get_fde_info_for_a_pc_row(fde, pc_requested,
66453					   &fde_table, error);
66454    if (res != DW_DLV_OK) {
66455	return res;
66456    }
66457
66458    for (i = 0; i < DW_REG_TABLE_SIZE; i++) {
66459	reg_table->rules[i].dw_offset_relevant =
66460	    fde_table.fr_reg[i].ru_is_off;
66461	reg_table->rules[i].dw_regnum = fde_table.fr_reg[i].ru_register;
66462	reg_table->rules[i].dw_offset = fde_table.fr_reg[i].ru_offset;
66463    }
66464
66465    if (row_pc != NULL)
66466	*row_pc = fde_table.fr_loc;
66467
66468    return DW_DLV_OK;
66469}
66470
66471
66472int
66473dwarf_get_fde_info_for_reg(Dwarf_Fde fde,
66474			   Dwarf_Half table_column,
66475			   Dwarf_Addr pc_requested,
66476			   Dwarf_Signed * offset_relevant,
66477			   Dwarf_Signed * register_num,
66478			   Dwarf_Signed * offset,
66479			   Dwarf_Addr * row_pc, Dwarf_Error * error)
66480{
66481    struct Dwarf_Frame_s fde_table;
66482    int res;
66483
66484
66485    if (table_column > DW_FRAME_LAST_REG_NUM) {
66486	_dwarf_error(NULL, error, DW_DLE_FRAME_TABLE_COL_BAD);
66487	return (DW_DLV_ERROR);
66488    }
66489
66490    /* _dwarf_get_fde_info_for_a_pc_row will perform more sanity checks
66491     */
66492    res =
66493	_dwarf_get_fde_info_for_a_pc_row(fde, pc_requested, &fde_table,
66494					 error);
66495    if (res != DW_DLV_OK) {
66496	return res;
66497    }
66498
66499    if (register_num != NULL)
66500	*register_num = fde_table.fr_reg[table_column].ru_register;
66501    if (offset != NULL)
66502	*offset = fde_table.fr_reg[table_column].ru_offset;
66503    if (row_pc != NULL)
66504	*row_pc = fde_table.fr_loc;
66505
66506    *offset_relevant = (fde_table.fr_reg[table_column].ru_is_off);
66507    return DW_DLV_OK;
66508}
66509
66510/*
66511	Return pointer to the instructions in the dwarf
66512	fde.
66513*/
66514int
66515dwarf_get_fde_instr_bytes(Dwarf_Fde inFde, Dwarf_Ptr * outinstraddr,
66516			  Dwarf_Unsigned * outaddrlen,
66517			  Dwarf_Error * error)
66518{
66519    Dwarf_Unsigned len;
66520    unsigned char *instrs;
66521    Dwarf_Debug dbg;
66522
66523    if (inFde == NULL) {
66524	_dwarf_error(NULL, error, DW_DLE_FDE_NULL);
66525	return (DW_DLV_ERROR);
66526    }
66527
66528    dbg = inFde->fd_dbg;
66529    if (dbg == NULL) {
66530	_dwarf_error(NULL, error, DW_DLE_FDE_DBG_NULL);
66531	return (DW_DLV_ERROR);
66532    }
66533
66534    instrs = inFde->fd_fde_instr_start,
66535	len = (inFde->fd_fde_start + inFde->fd_length +
66536	       inFde->fd_length_size + inFde->fd_extension_size)
66537	- instrs;
66538
66539    *outinstraddr = instrs;
66540    *outaddrlen = len;
66541    return DW_DLV_OK;
66542}
66543
66544int
66545dwarf_get_fde_n(Dwarf_Fde * fde_data,
66546		Dwarf_Unsigned fde_index,
66547		Dwarf_Fde * returned_fde, Dwarf_Error * error)
66548{
66549    Dwarf_Debug dbg;
66550
66551    if (fde_data == NULL) {
66552	_dwarf_error(NULL, error, DW_DLE_FDE_PTR_NULL);
66553	return (DW_DLV_ERROR);
66554    }
66555
66556    if (*fde_data == NULL) {
66557	_dwarf_error(NULL, error, DW_DLE_FDE_NULL);
66558	return (DW_DLV_ERROR);
66559    }
66560
66561    dbg = (*fde_data)->fd_dbg;
66562    if (dbg == NULL) {
66563	_dwarf_error(NULL, error, DW_DLE_FDE_DBG_NULL);
66564	return (DW_DLV_ERROR);
66565    }
66566
66567    if (fde_index >= dbg->de_fde_count) {
66568	return (DW_DLV_NO_ENTRY);
66569    }
66570    *returned_fde = (*(fde_data + fde_index));
66571    return DW_DLV_OK;
66572}
66573
66574
66575/*
66576    Lopc and hipc are extensions to the interface to
66577    return the range of addresses that are described
66578    by the returned fde.
66579*/
66580int
66581dwarf_get_fde_at_pc(Dwarf_Fde * fde_data,
66582		    Dwarf_Addr pc_of_interest,
66583		    Dwarf_Fde * returned_fde,
66584		    Dwarf_Addr * lopc,
66585		    Dwarf_Addr * hipc, Dwarf_Error * error)
66586{
66587    Dwarf_Debug dbg;
66588    Dwarf_Fde fde = NULL;
66589
66590    if (fde_data == NULL) {
66591	_dwarf_error(NULL, error, DW_DLE_FDE_PTR_NULL);
66592	return (DW_DLV_ERROR);
66593    }
66594
66595    if (*fde_data == NULL) {
66596	_dwarf_error(NULL, error, DW_DLE_FDE_NULL);
66597	return (DW_DLV_ERROR);
66598    }
66599
66600    dbg = (*fde_data)->fd_dbg;
66601    if (dbg == NULL) {
66602	_dwarf_error(NULL, error, DW_DLE_FDE_DBG_NULL);
66603	return (DW_DLV_ERROR);
66604    }
66605    {
66606	/* The fde's are sorted by their addresses. Binary search to
66607	   find correct fde. */
66608	int low = 0;
66609	int high = dbg->de_fde_count - 1;
66610	int middle = 0;
66611	Dwarf_Fde cur_fde;
66612
66613	while (low <= high) {
66614	    middle = (low + high) / 2;
66615	    cur_fde = fde_data[middle];
66616	    if (pc_of_interest < cur_fde->fd_initial_location) {
66617		high = middle - 1;
66618	    } else if (pc_of_interest >=
66619		       (cur_fde->fd_initial_location +
66620			cur_fde->fd_address_range)) {
66621		low = middle + 1;
66622	    } else {
66623		fde = fde_data[middle];
66624		break;
66625	    }
66626	}
66627    }
66628
66629    if (fde) {
66630	if (lopc != NULL)
66631	    *lopc = fde->fd_initial_location;
66632	if (hipc != NULL)
66633	    *hipc = fde->fd_initial_location +
66634		fde->fd_address_range - 1;
66635	*returned_fde = fde;
66636	return (DW_DLV_OK);
66637    }
66638
66639    return (DW_DLV_NO_ENTRY);
66640}
66641
66642
66643int
66644dwarf_expand_frame_instructions(Dwarf_Debug dbg,
66645				Dwarf_Ptr instruction,
66646				Dwarf_Unsigned i_length,
66647				Dwarf_Frame_Op ** returned_op_list,
66648				Dwarf_Signed * returned_op_count,
66649				Dwarf_Error * error)
66650{
66651    Dwarf_Sword instr_count;
66652    int res;
66653    int dw_err;
66654
66655    if (dbg == 0) {
66656	_dwarf_error(NULL, error, DW_DLE_DBG_NULL);
66657	return (DW_DLV_ERROR);
66658    }
66659
66660    if (returned_op_list == 0 || returned_op_count == 0) {
66661	_dwarf_error(dbg, error, DW_DLE_RET_OP_LIST_NULL);
66662	return (DW_DLV_ERROR);
66663    }
66664
66665    /* The cast to Dwarf_Ptr may get a compiler warning, but it is safe
66666       as it is just an i_length offset from 'instruction' itself. A
66667       caller has made a big mistake if the result is not a valid
66668       pointer. */
66669    res = _dwarf_exec_frame_instr( /* make_instr= */ true,
66670				  returned_op_list,
66671				  /* search_pc */ false,
66672				  /* search_pc_val */ 0,
66673				  /* location */ 0,
66674				  instruction,
66675				  (Dwarf_Ptr) ((Dwarf_Unsigned)
66676					       instruction + i_length),
66677				  /* Dwarf_Frame */ NULL,
66678				  /* cie_ptr */ NULL,
66679				  dbg, &instr_count, &dw_err);
66680    if (res != DW_DLV_OK) {
66681	if (res == DW_DLV_ERROR) {
66682	    _dwarf_error(dbg, error, dw_err);
66683	}
66684	return (res);
66685    }
66686
66687    *returned_op_count = instr_count;
66688    return DW_DLV_OK;
66689}
66690
66691
66692
66693/*
66694	Used by rqs.  Returns DW_DLV_OK if returns the arrays.
66695	Returns DW_DLV_NO_ENTRY if no section. ?? (How do I tell?)
66696	Returns DW_DLV_ERROR if there is an error.
66697
66698*/
66699int
66700_dwarf_frame_address_offsets(Dwarf_Debug dbg, Dwarf_Addr ** addrlist,
66701			     Dwarf_Off ** offsetlist,
66702			     Dwarf_Signed * returncount,
66703			     Dwarf_Error * err)
66704{
66705    int retval = DW_DLV_OK;
66706    int res;
66707    Dwarf_Cie *cie_data;
66708    Dwarf_Signed cie_count;
66709    Dwarf_Fde *fde_data;
66710    Dwarf_Signed fde_count;
66711    Dwarf_Signed i;
66712    Dwarf_Frame_Op *frame_inst;
66713    Dwarf_Fde fdep;
66714    Dwarf_Cie ciep;
66715    Dwarf_Chain curr_chain = 0;
66716    Dwarf_Chain head_chain = 0;
66717    Dwarf_Chain prev_chain = 0;
66718    Dwarf_Arange arange;
66719    Dwarf_Unsigned arange_count = 0;
66720    Dwarf_Addr *arange_addrs = 0;
66721    Dwarf_Off *arange_offsets = 0;
66722
66723    res = dwarf_get_fde_list(dbg, &cie_data, &cie_count,
66724			     &fde_data, &fde_count, err);
66725    if (res != DW_DLV_OK) {
66726	return res;
66727    }
66728
66729    res =
66730        _dwarf_load_section(dbg,
66731			    dbg->de_debug_frame_index,
66732			    &dbg->de_debug_frame,
66733			    err);
66734    if (res != DW_DLV_OK) {
66735      return res;
66736    }
66737
66738    for (i = 0; i < cie_count; i++) {
66739	Dwarf_Off instoff = 0;
66740	Dwarf_Signed initial_instructions_length = 0;
66741	Dwarf_Small *instr_end = 0;
66742	Dwarf_Sword icount = 0;
66743	int j;
66744	int dw_err;
66745
66746	ciep = cie_data[i];
66747	instoff = ciep->ci_cie_instr_start - dbg->de_debug_frame;
66748	initial_instructions_length = ciep->ci_length +
66749	    ciep->ci_length_size + ciep->ci_extension_size -
66750	    (ciep->ci_cie_instr_start - ciep->ci_cie_start);
66751	instr_end = ciep->ci_cie_instr_start +
66752	    initial_instructions_length;
66753	res = _dwarf_exec_frame_instr( /* make_instr */ true,
66754				      &frame_inst,
66755				      /* search_pc= */ false,
66756				      /* search_pc_val= */ 0,
66757				      /* location */ 0,
66758				      ciep->ci_cie_instr_start,
66759				      instr_end,
66760				      /* Dwarf_frame= */ 0,
66761				      /* cie= */ 0,
66762				      dbg, &icount, &dw_err);
66763	if (res == DW_DLV_ERROR) {
66764	    _dwarf_error(dbg, err, dw_err);
66765	    return (res);
66766	} else if (res == DW_DLV_NO_ENTRY) {
66767	    continue;
66768	}
66769
66770	for (j = 0; j < icount; ++j) {
66771	    Dwarf_Frame_Op *finst = frame_inst + j;
66772
66773	    if (finst->fp_base_op == 0 && finst->fp_extended_op == 1) {
66774		/* is DW_CFA_set_loc */
66775		Dwarf_Addr add = (Dwarf_Addr) finst->fp_offset;
66776		Dwarf_Off off = finst->fp_instr_offset + instoff;
66777
66778		arange = (Dwarf_Arange)
66779		    _dwarf_get_alloc(dbg, DW_DLA_ARANGE, 1);
66780		if (arange == NULL) {
66781		    _dwarf_error(dbg, err, DW_DLE_ALLOC_FAIL);
66782		    return (DW_DLV_ERROR);
66783		}
66784		arange->ar_address = add;
66785		arange->ar_info_offset = off;
66786		arange_count++;
66787		curr_chain = (Dwarf_Chain)
66788		    _dwarf_get_alloc(dbg, DW_DLA_CHAIN, 1);
66789		if (curr_chain == NULL) {
66790		    _dwarf_error(dbg, err, DW_DLE_ALLOC_FAIL);
66791		    return (DW_DLV_ERROR);
66792		}
66793		curr_chain->ch_item = arange;
66794		if (head_chain == NULL)
66795		    head_chain = prev_chain = curr_chain;
66796		else {
66797		    prev_chain->ch_next = curr_chain;
66798		    prev_chain = curr_chain;
66799		}
66800	    }
66801	}
66802	dwarf_dealloc(dbg, frame_inst, DW_DLA_FRAME_BLOCK);
66803
66804    }
66805    for (i = 0; i < fde_count; i++) {
66806	Dwarf_Small *instr_end = 0;
66807	Dwarf_Sword icount = 0;
66808	Dwarf_Signed instructions_length = 0;
66809	Dwarf_Off instoff = 0;
66810	Dwarf_Off off = 0;
66811	Dwarf_Addr addr = 0;
66812	int j;
66813	int dw_err;
66814
66815	fdep = fde_data[i];
66816	off = fdep->fd_initial_loc_pos - dbg->de_debug_frame;
66817	addr = fdep->fd_initial_location;
66818	arange = (Dwarf_Arange)
66819	    _dwarf_get_alloc(dbg, DW_DLA_ARANGE, 1);
66820	if (arange == NULL) {
66821	    _dwarf_error(dbg, err, DW_DLE_ALLOC_FAIL);
66822	    return (DW_DLV_ERROR);
66823	}
66824	arange->ar_address = addr;
66825	arange->ar_info_offset = off;
66826	arange_count++;
66827	curr_chain = (Dwarf_Chain)
66828	    _dwarf_get_alloc(dbg, DW_DLA_CHAIN, 1);
66829	if (curr_chain == NULL) {
66830	    _dwarf_error(dbg, err, DW_DLE_ALLOC_FAIL);
66831	    return (DW_DLV_ERROR);
66832	}
66833	curr_chain->ch_item = arange;
66834	if (head_chain == NULL)
66835	    head_chain = prev_chain = curr_chain;
66836	else {
66837	    prev_chain->ch_next = curr_chain;
66838	    prev_chain = curr_chain;
66839	}
66840
66841
66842	instoff = fdep->fd_fde_instr_start - dbg->de_debug_frame;
66843	instructions_length = fdep->fd_length +
66844	    fdep->fd_length_size + fdep->fd_extension_size -
66845	    (fdep->fd_fde_instr_start - fdep->fd_fde_start);
66846	instr_end = fdep->fd_fde_instr_start + instructions_length;
66847	res = _dwarf_exec_frame_instr( /* make_instr */ true,
66848				      &frame_inst,
66849				      /* search_pc= */ false,
66850				      /* search_pc_val= */ 0,
66851				      /* location */ 0,
66852				      fdep->fd_fde_instr_start,
66853				      instr_end,
66854				      /* Dwarf_frame= */ 0,
66855				      /* cie= */ 0,
66856				      dbg, &icount, &dw_err);
66857	if (res == DW_DLV_ERROR) {
66858	    _dwarf_error(dbg, err, dw_err);
66859	    return (res);
66860	} else if (res == DW_DLV_NO_ENTRY) {
66861	    continue;
66862	}
66863
66864	for (j = 0; j < icount; ++j) {
66865	    Dwarf_Frame_Op *finst2 = frame_inst + j;
66866
66867	    if (finst2->fp_base_op == 0 && finst2->fp_extended_op == 1) {
66868		/* is DW_CFA_set_loc */
66869		Dwarf_Addr add = (Dwarf_Addr) finst2->fp_offset;
66870		Dwarf_Off off = finst2->fp_instr_offset + instoff;
66871
66872		arange = (Dwarf_Arange)
66873		    _dwarf_get_alloc(dbg, DW_DLA_ARANGE, 1);
66874		if (arange == NULL) {
66875		    _dwarf_error(dbg, err, DW_DLE_ALLOC_FAIL);
66876		    return (DW_DLV_ERROR);
66877		}
66878		arange->ar_address = add;
66879		arange->ar_info_offset = off;
66880		arange_count++;
66881		curr_chain = (Dwarf_Chain)
66882		    _dwarf_get_alloc(dbg, DW_DLA_CHAIN, 1);
66883		if (curr_chain == NULL) {
66884		    _dwarf_error(dbg, err, DW_DLE_ALLOC_FAIL);
66885		    return (DW_DLV_ERROR);
66886		}
66887		curr_chain->ch_item = arange;
66888		if (head_chain == NULL)
66889		    head_chain = prev_chain = curr_chain;
66890		else {
66891		    prev_chain->ch_next = curr_chain;
66892		    prev_chain = curr_chain;
66893		}
66894
66895	    }
66896	}
66897	dwarf_dealloc(dbg, frame_inst, DW_DLA_FRAME_BLOCK);
66898
66899    }
66900    dwarf_dealloc(dbg, fde_data, DW_DLA_LIST);
66901    dwarf_dealloc(dbg, cie_data, DW_DLA_LIST);
66902    arange_addrs = (Dwarf_Addr *)
66903	_dwarf_get_alloc(dbg, DW_DLA_ADDR, arange_count);
66904    if (arange_addrs == NULL) {
66905	_dwarf_error(dbg, err, DW_DLE_ALLOC_FAIL);
66906	return (DW_DLV_ERROR);
66907    }
66908    arange_offsets = (Dwarf_Off *)
66909	_dwarf_get_alloc(dbg, DW_DLA_ADDR, arange_count);
66910    if (arange_offsets == NULL) {
66911	_dwarf_error(dbg, err, DW_DLE_ALLOC_FAIL);
66912	return (DW_DLV_ERROR);
66913    }
66914
66915    curr_chain = head_chain;
66916    for (i = 0; i < arange_count; i++) {
66917	Dwarf_Arange ar = curr_chain->ch_item;
66918
66919	arange_addrs[i] = ar->ar_address;
66920	arange_offsets[i] = ar->ar_info_offset;
66921	prev_chain = curr_chain;
66922	curr_chain = curr_chain->ch_next;
66923	dwarf_dealloc(dbg, ar, DW_DLA_ARANGE);
66924	dwarf_dealloc(dbg, prev_chain, DW_DLA_CHAIN);
66925    }
66926    *returncount = arange_count;
66927    *offsetlist = arange_offsets;
66928    *addrlist = arange_addrs;
66929    return retval;
66930}
66931
66932/* Used by dwarfdump -v to print offsets, for debugging
66933   dwarf info
66934*/
66935/* ARGSUSED 4 */
66936int
66937_dwarf_fde_section_offset(Dwarf_Debug dbg, Dwarf_Fde in_fde,
66938			  Dwarf_Off * fde_off, Dwarf_Off * cie_off,
66939			  Dwarf_Error * err)
66940{
66941    int res;
66942    char *start;
66943    char *loc;
66944
66945    res =
66946        _dwarf_load_section(dbg,
66947			    dbg->de_debug_frame_index,
66948			    &dbg->de_debug_frame,
66949			    err);
66950    if (res != DW_DLV_OK) {
66951        return res;
66952    }
66953
66954    start = (char *) dbg->de_debug_frame;
66955    loc = (char *) in_fde->fd_fde_start;
66956
66957    *fde_off = (loc - start);
66958    *cie_off = in_fde->fd_cie_offset;
66959    return DW_DLV_OK;
66960}
66961
66962/* Used by dwarfdump -v to print offsets, for debugging
66963   dwarf info
66964*/
66965/* ARGSUSED 4 */
66966int
66967_dwarf_cie_section_offset(Dwarf_Debug dbg, Dwarf_Cie in_cie,
66968			  Dwarf_Off * cie_off, Dwarf_Error * err)
66969{
66970    int res;
66971    char *start;
66972    char *loc;
66973
66974    res =
66975        _dwarf_load_section(dbg,
66976			    dbg->de_debug_frame_index,
66977			    &dbg->de_debug_frame,
66978			    err);
66979    if (res != DW_DLV_OK) {
66980        return res;
66981    }
66982
66983    start = (char *) dbg->de_debug_frame;
66984    loc = (char *) in_cie->ci_cie_start;
66985
66986    *cie_off = (loc - start);
66987    return DW_DLV_OK;
66988}
66989�0707010001ad6d0000812400011e740000000a000000014020682800001dd3000000660000000000000000000000000000001700000000libdwarf/dwarf_frame.h����/*
66990
66991  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
66992
66993  This program is free software; you can redistribute it and/or modify it
66994  under the terms of version 2.1 of the GNU Lesser General Public License
66995  as published by the Free Software Foundation.
66996
66997  This program is distributed in the hope that it would be useful, but
66998  WITHOUT ANY WARRANTY; without even the implied warranty of
66999  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
67000
67001  Further, this software is distributed without any warranty that it is
67002  free of the rightful claim of any third person regarding infringement
67003  or the like.  Any license provided herein, whether implied or
67004  otherwise, applies only to this software file.  Patent licenses, if
67005  any, provided herein do not apply to combinations of this program with
67006  other software, or any other product whatsoever.
67007
67008  You should have received a copy of the GNU Lesser General Public
67009  License along with this program; if not, write the Free Software
67010  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
67011  USA.
67012
67013  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
67014  Mountain View, CA 94043, or:
67015
67016  http://www.sgi.com
67017
67018  For further information regarding this notice, see:
67019
67020  http://oss.sgi.com/projects/GenInfo/NoticeExplan
67021
67022*/
67023
67024
67025
67026/* The dwarf 2.0 standard dictates that only the following
67027 * fields can be read when an unexpected augmentation string
67028 * (in the cie) is encountered: CIE length, CIE_id, version and
67029 * augmentation; FDE: length, CIE pointer, initial location and
67030 * address range. Unfortunately, with the above restrictions, it
67031 * is impossible to read the instruction table from a CIE or a FDE
67032 * when a new augmentation string is encountered.
67033 * To fix this problem, the following layout is used, if the
67034 * augmentation string starts with the string "z".
67035 *   CIE                        FDE
67036 *   length                     length
67037 *   CIE_id                     CIE_pointer
67038 *   version                    initial_location
67039 *   augmentation               address_range
67040 *                              length_of_augmented_fields (*NEW*)
67041 *   code_alignment_factor      Any new fields as necessary
67042 *   data_alignment_factor      instruction_table
67043 *   return_address
67044 *   length_of_augmented fields
67045 *   Any new fields as necessary
67046 *   initial_instructions
67047 *
67048 * The type of all the old data items are the same as what is
67049 * described in dwarf 2.0 standard. The length_of_augmented_fields
67050 * is an LEB128 data item that denotes the size (in bytes) of
67051 * the augmented fields (not including the size of
67052 * "length_of_augmented_fields" itself).
67053 * This implementation of libdwarf will assume that the length of
67054 * augmented fields follow the augmenter string when the augmentation
67055 * starts with the string "z". It will skip over any augmented fields
67056 * that it does not understand to the start of  initial instructions
67057 * (in case of CIE) or the instruction table (in case of FDE).
67058 *
67059 * Future sgi versions of cie or fde should use "z1", "z2" as the
67060 * augmenter strings and it should guarantee that all the above fields
67061 * are laid out in the same fashion. Older libraries will continue to be able
67062 * to read all the old data, skipping over newly added data items.
67063 *
67064 * The fde's augmented by the string "z" have a new field (signed constant, 4
67065   byte field)
67066 * called offset_into_exception_tables, following the length_of_augmented field.
67067 * This field contains an offset into the "_MIPS_eh_region", which describes
67068 * the exception handling tables.
67069 */
67070
67071#define DW_DEBUG_FRAME_VERSION                 	1
67072#define DW_DEBUG_FRAME_AUGMENTER_STRING     	"mti v1"
67073
67074/* The value of the offset field for Cie's. */
67075#define DW_CIE_OFFSET		~(0x0)
67076
67077/* The augmentation string may be NULL.	*/
67078#define DW_EMPTY_STRING		""
67079
67080#define DW_FRAME_INSTR_OPCODE_SHIFT		6
67081#define DW_FRAME_INSTR_OFFSET_MASK		0x3f
67082
67083/*
67084    This struct denotes the rule for a register in a row of
67085    the frame table.  In other words, it is one element of
67086    the table.
67087*/
67088struct Dwarf_Reg_Rule_s {
67089
67090    /*
67091       Is a flag indicating whether the rule includes the offset
67092       field, ie whether the ru_offset field is valid or not. It is
67093       important, since reg+offset (offset of 0) is different from
67094       just 'register' since the former means 'read memory at address
67095       given by the sum of register contents plus offset to get the
67096       value'. whereas the latter means 'the value is in the register'.
67097
67098       The 'register' numbers are either real registers (ie, table
67099       columns defined as real registers) or defined entries that are
67100       not really hardware registers, such as DW_FRAME_SAME_VAL or
67101       DW_FRAME_CFA_COL.
67102
67103     */
67104    Dwarf_Sbyte ru_is_off;
67105
67106    /* Register involved in this rule. */
67107    Dwarf_Half ru_register;
67108
67109    /* Offset to add to register, if indicated by ru_is_offset. */
67110    Dwarf_Addr ru_offset;
67111};
67112
67113typedef struct Dwarf_Frame_s *Dwarf_Frame;
67114
67115/*
67116    This structure represents a row of the frame table.
67117    Fr_loc is the pc value for this row, and Fr_reg
67118    contains the rule for each column.
67119*/
67120struct Dwarf_Frame_s {
67121
67122    /* Pc value corresponding to this row of the frame table. */
67123    Dwarf_Addr fr_loc;
67124
67125    /* Rules for all the registers in this row. */
67126    struct Dwarf_Reg_Rule_s fr_reg[DW_FRAME_LAST_REG_NUM];
67127
67128    Dwarf_Frame fr_next;
67129};
67130
67131typedef struct Dwarf_Frame_Op_List_s *Dwarf_Frame_Op_List;
67132
67133/* This is used to chain together Dwarf_Frame_Op structures. */
67134struct Dwarf_Frame_Op_List_s {
67135    Dwarf_Frame_Op *fl_frame_instr;
67136    Dwarf_Frame_Op_List fl_next;
67137};
67138
67139/*
67140    This structure contains all the pertinent info for a Cie. Most
67141    of the fields are taken straight from the definition of a Cie.
67142    Ci_cie_start points to the address (in .debug_frame) where this
67143    Cie begins.  Ci_cie_instr_start points to the first byte of the
67144    frame instructions for this Cie.  Ci_dbg points to the associated
67145    Dwarf_Debug structure.  Ci_initial_table is a pointer to the table
67146    row generated by the instructions for this Cie.
67147*/
67148struct Dwarf_Cie_s {
67149    Dwarf_Word ci_length;
67150    char *ci_augmentation;
67151    Dwarf_Small ci_code_alignment_factor;
67152    Dwarf_Sbyte ci_data_alignment_factor;
67153    Dwarf_Small ci_return_address_register;
67154    Dwarf_Small *ci_cie_start;
67155    Dwarf_Small *ci_cie_instr_start;
67156    Dwarf_Debug ci_dbg;
67157    Dwarf_Frame ci_initial_table;
67158    Dwarf_Cie ci_next;
67159    Dwarf_Small ci_length_size;
67160    Dwarf_Small ci_extension_size;
67161};
67162
67163/*
67164	This structure contains all the pertinent info for a Fde.
67165	Most of the fields are taken straight from the definition.
67166	fd_cie_index is the index of the Cie associated with this
67167	Fde in the list of Cie's for this debug_frame.  Fd_cie
67168	points to the corresponsing Dwarf_Cie structure.  Fd_fde_start
67169	points to the start address of the Fde.  Fd_fde_instr_start
67170	points to the start of the instructions for this Fde.  Fd_dbg
67171	points to the associated Dwarf_Debug structure.
67172*/
67173struct Dwarf_Fde_s {
67174    Dwarf_Word fd_length;
67175    Dwarf_Addr fd_cie_offset;
67176    Dwarf_Sword fd_cie_index;
67177    Dwarf_Cie fd_cie;
67178    Dwarf_Addr fd_initial_location;
67179    Dwarf_Small *fd_initial_loc_pos;
67180    Dwarf_Addr fd_address_range;
67181    Dwarf_Small *fd_fde_start;
67182    Dwarf_Small *fd_fde_instr_start;
67183    Dwarf_Debug fd_dbg;
67184    Dwarf_Signed fd_offset_into_exception_tables;
67185    Dwarf_Fde fd_next;
67186    Dwarf_Small fd_length_size;
67187    Dwarf_Small fd_extension_size;
67188};
67189
67190
67191int
67192  _dwarf_frame_address_offsets(Dwarf_Debug dbg, Dwarf_Addr ** addrlist,
67193			       Dwarf_Off ** offsetlist,
67194			       Dwarf_Signed * returncount,
67195			       Dwarf_Error * err);
67196�0707010001ad6e0000812400011e740000000a000000014020682800000cc6000000660000000000000000000000000000001700000000libdwarf/dwarf_funcs.c����/*
67197
67198  Copyright (C) 2000, 2002 Silicon Graphics, Inc.  All Rights Reserved.
67199
67200  This program is free software; you can redistribute it and/or modify it
67201  under the terms of version 2.1 of the GNU Lesser General Public License
67202  as published by the Free Software Foundation.
67203
67204  This program is distributed in the hope that it would be useful, but
67205  WITHOUT ANY WARRANTY; without even the implied warranty of
67206  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
67207
67208  Further, this software is distributed without any warranty that it is
67209  free of the rightful claim of any third person regarding infringement
67210  or the like.  Any license provided herein, whether implied or
67211  otherwise, applies only to this software file.  Patent licenses, if
67212  any, provided herein do not apply to combinations of this program with
67213  other software, or any other product whatsoever.
67214
67215  You should have received a copy of the GNU Lesser General Public
67216  License along with this program; if not, write the Free Software
67217  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
67218  USA.
67219
67220  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
67221  Mountain View, CA 94043, or:
67222
67223  http://www.sgi.com
67224
67225  For further information regarding this notice, see:
67226
67227  http://oss.sgi.com/projects/GenInfo/NoticeExplan
67228
67229*/
67230
67231
67232
67233#include "config.h"
67234#include "dwarf_incl.h"
67235#include <stdio.h>
67236#include "dwarf_funcs.h"
67237#include "dwarf_global.h"
67238
67239int
67240dwarf_get_funcs(Dwarf_Debug dbg,
67241		Dwarf_Func ** funcs,
67242		Dwarf_Signed * ret_func_count, Dwarf_Error * error)
67243{
67244    int res;
67245
67246    res =
67247	_dwarf_load_section(dbg,
67248			    dbg->de_debug_funcnames_index,
67249			    &dbg->de_debug_funcnames,
67250			    error);
67251    if (res != DW_DLV_OK) {
67252	return res;
67253    }
67254
67255    return _dwarf_internal_get_pubnames_like_data(dbg, dbg->de_debug_funcnames, dbg->de_debug_funcnames_size, (Dwarf_Global **) funcs,	/* type
67256																	   punning,
67257																	   Dwarf_Type
67258																	   is never
67259																	   a
67260																	   completed
67261																	   type */
67262						  ret_func_count,
67263						  error,
67264						  DW_DLA_FUNC_CONTEXT,
67265						  DW_DLE_DEBUG_FUNCNAMES_LENGTH_BAD,
67266						  DW_DLE_DEBUG_FUNCNAMES_VERSION_ERROR);
67267
67268}
67269
67270
67271int
67272dwarf_funcname(Dwarf_Func func_in, char **ret_name, Dwarf_Error * error)
67273{
67274    Dwarf_Global func = (Dwarf_Global) func_in;
67275
67276    if (func == NULL) {
67277	_dwarf_error(NULL, error, DW_DLE_FUNC_NULL);
67278	return (DW_DLV_ERROR);
67279    }
67280
67281    *ret_name = (char *) (func->gl_name);
67282    return DW_DLV_OK;
67283}
67284
67285int
67286dwarf_func_die_offset(Dwarf_Func func_in,
67287		      Dwarf_Off * return_offset, Dwarf_Error * error)
67288{
67289    Dwarf_Global func = (Dwarf_Global) func_in;
67290
67291    return dwarf_global_die_offset(func, return_offset, error);
67292}
67293
67294
67295int
67296dwarf_func_cu_offset(Dwarf_Func func_in,
67297		     Dwarf_Off * return_offset, Dwarf_Error * error)
67298{
67299    Dwarf_Global func = (Dwarf_Global) func_in;
67300
67301    return dwarf_global_cu_offset(func, return_offset, error);
67302}
67303
67304
67305int
67306dwarf_func_name_offsets(Dwarf_Func func_in,
67307			char **ret_func_name,
67308			Dwarf_Off * die_offset,
67309			Dwarf_Off * cu_die_offset, Dwarf_Error * error)
67310{
67311    Dwarf_Global func = (Dwarf_Global) func_in;
67312
67313    return dwarf_global_name_offsets(func,
67314				     ret_func_name,
67315				     die_offset, cu_die_offset, error);
67316}
67317��0707010001ad6f0000812400011e740000000a000000014020682800000597000000660000000000000000000000000000001700000000libdwarf/dwarf_funcs.h����/*
67318
67319  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
67320
67321  This program is free software; you can redistribute it and/or modify it
67322  under the terms of version 2.1 of the GNU Lesser General Public License
67323  as published by the Free Software Foundation.
67324
67325  This program is distributed in the hope that it would be useful, but
67326  WITHOUT ANY WARRANTY; without even the implied warranty of
67327  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
67328
67329  Further, this software is distributed without any warranty that it is
67330  free of the rightful claim of any third person regarding infringement
67331  or the like.  Any license provided herein, whether implied or
67332  otherwise, applies only to this software file.  Patent licenses, if
67333  any, provided herein do not apply to combinations of this program with
67334  other software, or any other product whatsoever.
67335
67336  You should have received a copy of the GNU Lesser General Public
67337  License along with this program; if not, write the Free Software
67338  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
67339  USA.
67340
67341  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
67342  Mountain View, CA 94043, or:
67343
67344  http://www.sgi.com
67345
67346  For further information regarding this notice, see:
67347
67348  http://oss.sgi.com/projects/GenInfo/NoticeExplan
67349
67350*/
67351
67352
67353
67354
67355typedef struct Dwarf_Func_Context_s *Dwarf_Func_Context;
67356
67357
67358/* struct  never completed: see dwarf_global.h */
67359�0707010001ad700000812400011e740000000a000000014020682700003208000000660000000000000000000000000000001800000000libdwarf/dwarf_global.c���/*
67360
67361  Copyright (C) 2000, 2002 Silicon Graphics, Inc.  All Rights Reserved.
67362
67363  This program is free software; you can redistribute it and/or modify it
67364  under the terms of version 2.1 of the GNU Lesser General Public License
67365  as published by the Free Software Foundation.
67366
67367  This program is distributed in the hope that it would be useful, but
67368  WITHOUT ANY WARRANTY; without even the implied warranty of
67369  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
67370
67371  Further, this software is distributed without any warranty that it is
67372  free of the rightful claim of any third person regarding infringement
67373  or the like.  Any license provided herein, whether implied or
67374  otherwise, applies only to this software file.  Patent licenses, if
67375  any, provided herein do not apply to combinations of this program with
67376  other software, or any other product whatsoever.
67377
67378  You should have received a copy of the GNU Lesser General Public
67379  License along with this program; if not, write the Free Software
67380  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
67381  USA.
67382
67383  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
67384  Mountain View, CA 94043, or:
67385
67386  http://www.sgi.com
67387
67388  For further information regarding this notice, see:
67389
67390  http://oss.sgi.com/projects/GenInfo/NoticeExplan
67391
67392*/
67393
67394
67395
67396#include "config.h"
67397#include "dwarf_incl.h"
67398#include <stdio.h>
67399#include "dwarf_global.h"
67400
67401int
67402dwarf_get_globals(Dwarf_Debug dbg,
67403		  Dwarf_Global ** globals,
67404		  Dwarf_Signed * return_count, Dwarf_Error * error)
67405{
67406    int res;
67407
67408    res =
67409       _dwarf_load_section(dbg,
67410			   dbg->de_debug_pubnames_index,
67411			   &dbg->de_debug_pubnames,
67412			   error);
67413    if (res != DW_DLV_OK) {
67414        return res;
67415    }
67416
67417
67418
67419    return _dwarf_internal_get_pubnames_like_data(dbg,
67420						  dbg->
67421						  de_debug_pubnames,
67422						  dbg->
67423						  de_debug_pubnames_size,
67424						  globals, return_count,
67425						  error,
67426						  DW_DLA_GLOBAL_CONTEXT,
67427						  DW_DLE_PUBNAMES_LENGTH_BAD,
67428						  DW_DLE_PUBNAMES_VERSION_ERROR);
67429
67430}
67431
67432
67433/* Sweeps the complete  section.
67434*/
67435int
67436_dwarf_internal_get_pubnames_like_data(Dwarf_Debug dbg,
67437				       Dwarf_Small * section_data_ptr,
67438				       Dwarf_Unsigned section_length,
67439				       Dwarf_Global ** globals,
67440				       Dwarf_Signed * return_count,
67441				       Dwarf_Error * error,
67442				       int allocation_code,
67443				       int length_err_num,
67444				       int version_err_num)
67445{
67446
67447
67448    Dwarf_Small *pubnames_like_ptr;
67449
67450
67451
67452    /*
67453       Points to the context for the current set of global names, and
67454       contains information to identify the compilation-unit that the
67455       set refers to. */
67456    Dwarf_Global_Context pubnames_context;
67457
67458    Dwarf_Half version;
67459
67460    /*
67461       Offset from the start of compilation-unit for the current
67462       global. */
67463    Dwarf_Off die_offset_in_cu;
67464
67465    Dwarf_Unsigned global_count = 0;
67466
67467    /* Points to the current global read. */
67468    Dwarf_Global global;
67469
67470    /*
67471       Used to chain the Dwarf_Global_s structs for creating contiguous
67472       list of pointers to the structs. */
67473    Dwarf_Chain curr_chain, prev_chain, head_chain = NULL;
67474
67475    /* Points to contiguous block of Dwarf_Global's to be returned. */
67476    Dwarf_Global *ret_globals;
67477
67478    /* Temporary counter. */
67479    Dwarf_Unsigned i;
67480
67481
67482
67483
67484    if (dbg == NULL) {
67485	_dwarf_error(NULL, error, DW_DLE_DBG_NULL);
67486	return (DW_DLV_ERROR);
67487    }
67488    /* We will eventually need the .debug_info data. Load it now. */
67489    if(!dbg->de_debug_info) {
67490        int res = _dwarf_load_debug_info(dbg,error);
67491        if(res != DW_DLV_OK) {
67492              return res;
67493        }
67494    }
67495
67496    if (section_data_ptr == NULL) {
67497	return (DW_DLV_NO_ENTRY);
67498    }
67499
67500    pubnames_like_ptr = section_data_ptr;
67501    do {
67502	Dwarf_Unsigned length;
67503	int local_extension_size;
67504	int local_length_size;
67505
67506	/* Some compilers emit padding at the end of each cu's
67507	   area. pubnames_ptr_past_end_cu records the true
67508           area end for this cu's data.  Essentially the
67509	   length in the header and the  0 terminator of the
67510           data are redundant information. The dwarf2/3
67511	   spec does not mention what to do if the length
67512           is past the 0 terminator. So we take any bytes
67513	   left after the 0 as padding and ignore them. */
67514        Dwarf_Small *pubnames_ptr_past_end_cu = 0;
67515
67516
67517	pubnames_context = (Dwarf_Global_Context)
67518	    _dwarf_get_alloc(dbg, allocation_code, 1);
67519	if (pubnames_context == NULL) {
67520	    _dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
67521	    return (DW_DLV_ERROR);
67522	}
67523	/* READ_AREA_LENGTH updates pubnames_like_ptr for consumed
67524	   bytes */
67525	READ_AREA_LENGTH(dbg, length, Dwarf_Unsigned,
67526			 pubnames_like_ptr, local_length_size,
67527			 local_extension_size);
67528	pubnames_context->pu_length_size = local_length_size;
67529	pubnames_context->pu_extension_size = local_extension_size;
67530	pubnames_context->pu_dbg = dbg;
67531
67532        pubnames_ptr_past_end_cu  = pubnames_like_ptr + length;
67533
67534	READ_UNALIGNED(dbg, version, Dwarf_Half,
67535		       pubnames_like_ptr, sizeof(Dwarf_Half));
67536	pubnames_like_ptr += sizeof(Dwarf_Half);
67537	if (version != CURRENT_VERSION_STAMP) {
67538	    _dwarf_error(dbg, error, version_err_num);
67539	    return (DW_DLV_ERROR);
67540	}
67541
67542	/* offset of CU header in debug section */
67543	READ_UNALIGNED(dbg, pubnames_context->pu_offset_of_cu_header,
67544		       Dwarf_Off, pubnames_like_ptr,
67545		       pubnames_context->pu_length_size);
67546	pubnames_like_ptr += pubnames_context->pu_length_size;
67547
67548
67549	READ_UNALIGNED(dbg, pubnames_context->pu_info_length,
67550		       Dwarf_Unsigned, pubnames_like_ptr,
67551		       pubnames_context->pu_length_size);
67552	pubnames_like_ptr += pubnames_context->pu_length_size;
67553
67554	if (pubnames_like_ptr > (section_data_ptr + section_length)) {
67555	    _dwarf_error(dbg, error, length_err_num);
67556	    return (DW_DLV_ERROR);
67557	}
67558
67559	/* read initial offset (of DIE within CU) of a pubname, final
67560	   entry is not a pair, just a zero offset */
67561	READ_UNALIGNED(dbg, die_offset_in_cu, Dwarf_Off,
67562		       pubnames_like_ptr,
67563		       pubnames_context->pu_length_size);
67564	pubnames_like_ptr += pubnames_context->pu_length_size;
67565
67566	/* loop thru pairs. DIE off with CU followed by string */
67567	while (die_offset_in_cu != 0) {
67568
67569	    /* Already read offset, pubnames_like_ptr now points to the
67570	       string */
67571	    global =
67572		(Dwarf_Global) _dwarf_get_alloc(dbg, DW_DLA_GLOBAL, 1);
67573	    if (global == NULL) {
67574		_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
67575		return (DW_DLV_ERROR);
67576	    }
67577	    global_count++;
67578
67579	    global->gl_context = pubnames_context;
67580
67581	    global->gl_named_die_offset_within_cu = die_offset_in_cu;
67582
67583	    global->gl_name = pubnames_like_ptr;
67584
67585	    pubnames_like_ptr = pubnames_like_ptr +
67586		strlen((char *) pubnames_like_ptr) + 1;
67587
67588
67589	    /* finish off current entry chain */
67590	    curr_chain =
67591		(Dwarf_Chain) _dwarf_get_alloc(dbg, DW_DLA_CHAIN, 1);
67592	    if (curr_chain == NULL) {
67593		_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
67594		return (DW_DLV_ERROR);
67595	    }
67596
67597	    /* Put current global on singly_linked list. */
67598	    curr_chain->ch_item = (Dwarf_Global) global;
67599
67600	    if (head_chain == NULL)
67601		head_chain = prev_chain = curr_chain;
67602	    else {
67603		prev_chain->ch_next = curr_chain;
67604		prev_chain = curr_chain;
67605	    }
67606
67607	    /* read offset for the *next* entry */
67608	    READ_UNALIGNED(dbg, die_offset_in_cu, Dwarf_Off,
67609			   pubnames_like_ptr,
67610			   pubnames_context->pu_length_size);
67611
67612	    pubnames_like_ptr += pubnames_context->pu_length_size;
67613	    if (pubnames_like_ptr > (section_data_ptr + section_length)) {
67614		_dwarf_error(dbg, error, length_err_num);
67615		return (DW_DLV_ERROR);
67616	    }
67617	}
67618	/* ASSERT: die_offset_in_cu == 0 */
67619	if(pubnames_like_ptr > pubnames_ptr_past_end_cu) {
67620	   /* This is some kind of error. This simply cannot happen.
67621	      The encoding is wrong or the length in the header
67622	      for this cu's contribution is wrong. */
67623	   _dwarf_error(dbg, error, length_err_num);
67624	   return (DW_DLV_ERROR);
67625
67626        }
67627	/* If there is some kind of padding at the end of
67628           the section, as emitted by some compilers,
67629	   skip over that padding and simply ignore the bytes
67630	   thus passed-over.   With most compilers,
67631	     pubnames_like_ptr == pubnames_ptr_past_end_cu
67632	   at this point */
67633	pubnames_like_ptr =  pubnames_ptr_past_end_cu;
67634
67635    } while (pubnames_like_ptr < (section_data_ptr + section_length));
67636
67637    /* Points to contiguous block of Dwarf_Global's. */
67638    ret_globals = (Dwarf_Global *)
67639	_dwarf_get_alloc(dbg, DW_DLA_LIST, global_count);
67640    if (ret_globals == NULL) {
67641	_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
67642	return (DW_DLV_ERROR);
67643    }
67644
67645    /*
67646       Store pointers to Dwarf_Global_s structs in contiguous block,
67647       and deallocate the chain. */
67648    curr_chain = head_chain;
67649    for (i = 0; i < global_count; i++) {
67650	*(ret_globals + i) = curr_chain->ch_item;
67651	prev_chain = curr_chain;
67652	curr_chain = curr_chain->ch_next;
67653	dwarf_dealloc(dbg, prev_chain, DW_DLA_CHAIN);
67654    }
67655
67656    *globals = ret_globals;
67657    *return_count = (global_count);
67658    return DW_DLV_OK;
67659}
67660
67661/*
67662	Given a pubnames entry (or other like section entry)
67663	return thru the ret_name pointer
67664	a pointer to the string which is the entry name.
67665
67666*/
67667int
67668dwarf_globname(Dwarf_Global glob, char **ret_name, Dwarf_Error * error)
67669{
67670    if (glob == NULL) {
67671	_dwarf_error(NULL, error, DW_DLE_GLOBAL_NULL);
67672	return (DW_DLV_ERROR);
67673    }
67674
67675    *ret_name = (char *) (glob->gl_name);
67676    return DW_DLV_OK;
67677}
67678
67679
67680/*
67681	Given a pubnames entry (or other like section entry)
67682	return thru the ret_off pointer the
67683	global offset of the DIE for this entry.
67684	The global offset is the offset within the .debug_info
67685	section as a whole.
67686*/
67687int
67688dwarf_global_die_offset(Dwarf_Global global,
67689			Dwarf_Off * ret_off, Dwarf_Error * error)
67690{
67691    if (global == NULL) {
67692	_dwarf_error(NULL, error, DW_DLE_GLOBAL_NULL);
67693	return (DW_DLV_ERROR);
67694    }
67695
67696    if (global->gl_context == NULL) {
67697	_dwarf_error(NULL, error, DW_DLE_GLOBAL_CONTEXT_NULL);
67698	return (DW_DLV_ERROR);
67699    }
67700
67701    *ret_off = (global->gl_named_die_offset_within_cu +
67702		global->gl_context->pu_offset_of_cu_header);
67703    return DW_DLV_OK;
67704}
67705
67706/*
67707	Given a pubnames entry (or other like section entry)
67708	return thru the ret_off pointer the
67709	offset of the compilation unit header of the
67710        compilation unit the global is part of.
67711
67712	In early versions of this, the value returned was
67713        the offset of the compilation unit die, and
67714	other cu-local die offsets were faked so adding this to
67715        such a cu-local offset got a true section offset.
67716        Now things do as they say (adding *cu_header_offset to
67717        a cu-local offset gets the section offset).
67718
67719*/
67720int
67721dwarf_global_cu_offset(Dwarf_Global global,
67722		       Dwarf_Off * cu_header_offset,
67723		       Dwarf_Error * error)
67724{
67725    Dwarf_Global_Context con;
67726
67727    if (global == NULL) {
67728	_dwarf_error(NULL, error, DW_DLE_GLOBAL_NULL);
67729	return (DW_DLV_ERROR);
67730    }
67731
67732    con = global->gl_context;
67733
67734    if (con == NULL) {
67735	_dwarf_error(NULL, error, DW_DLE_GLOBAL_CONTEXT_NULL);
67736	return (DW_DLV_ERROR);
67737    }
67738
67739    /* In early libdwarf, this incorrectly returned the offset of the
67740       CU DIE. Now correctly returns the header offset. */
67741    *cu_header_offset = con->pu_offset_of_cu_header;
67742
67743    return DW_DLV_OK;
67744}
67745
67746/*
67747  Give back the pubnames entry (or any other like section)
67748  name, symbol DIE offset, and the cu-DIE offset.
67749*/
67750int
67751dwarf_global_name_offsets(Dwarf_Global global,
67752			  char **ret_name,
67753			  Dwarf_Off * die_offset,
67754			  Dwarf_Off * cu_die_offset,
67755			  Dwarf_Error * error)
67756{
67757    Dwarf_Global_Context con;
67758    Dwarf_Debug dbg;
67759    Dwarf_Off off;
67760
67761    if (global == NULL) {
67762	_dwarf_error(NULL, error, DW_DLE_GLOBAL_NULL);
67763	return (DW_DLV_ERROR);
67764    }
67765
67766    con = global->gl_context;
67767
67768    if (con == NULL) {
67769	_dwarf_error(NULL, error, DW_DLE_GLOBAL_CONTEXT_NULL);
67770	return (DW_DLV_ERROR);
67771    }
67772
67773    off = con->pu_offset_of_cu_header;
67774    if (die_offset != NULL) {
67775	*die_offset = global->gl_named_die_offset_within_cu + off;
67776    }
67777
67778    dbg = con->pu_dbg;
67779    if (dbg == NULL) {
67780	_dwarf_error(NULL, error, DW_DLE_DBG_NULL);
67781	return (DW_DLV_ERROR);
67782    }
67783
67784    if (cu_die_offset != NULL) {
67785 	int res = _dwarf_load_debug_info(dbg,error);
67786	if(res != DW_DLV_OK) {
67787	   return res;
67788	}
67789	*cu_die_offset = off + _dwarf_length_of_cu_header(dbg, off);
67790    }
67791
67792    *ret_name = (char *) global->gl_name;
67793
67794    return DW_DLV_OK;
67795}
67796
67797/*
67798	We have the offset to a CU header.
67799	Return thru outFileOffset the offset of the CU DIE.
67800
67801	New June, 2001.
67802	Used by SGI debuggers.
67803	No error is possible.
67804*/
67805
67806/* ARGSUSED */
67807int
67808dwarf_get_cu_die_offset_given_cu_header_offset(Dwarf_Debug dbg,
67809					       Dwarf_Off
67810					       in_cu_header_offset,
67811					       Dwarf_Off *
67812					       out_cu_die_offset,
67813					       Dwarf_Error * err)
67814{
67815    Dwarf_Off len =
67816	_dwarf_length_of_cu_header(dbg, in_cu_header_offset);
67817
67818    Dwarf_Off newoff = in_cu_header_offset + len;
67819
67820    *out_cu_die_offset = newoff;
67821    return DW_DLV_OK;
67822}
678230707010001ad720000812400011e740000000a000000014020682700000cbd000000660000000000000000000000000000001800000000libdwarf/dwarf_global.h���/*
67824
67825  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
67826
67827  This program is free software; you can redistribute it and/or modify it
67828  under the terms of version 2.1 of the GNU Lesser General Public License
67829  as published by the Free Software Foundation.
67830
67831  This program is distributed in the hope that it would be useful, but
67832  WITHOUT ANY WARRANTY; without even the implied warranty of
67833  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
67834
67835  Further, this software is distributed without any warranty that it is
67836  free of the rightful claim of any third person regarding infringement
67837  or the like.  Any license provided herein, whether implied or
67838  otherwise, applies only to this software file.  Patent licenses, if
67839  any, provided herein do not apply to combinations of this program with
67840  other software, or any other product whatsoever.
67841
67842  You should have received a copy of the GNU Lesser General Public
67843  License along with this program; if not, write the Free Software
67844  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
67845  USA.
67846
67847  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
67848  Mountain View, CA 94043, or:
67849
67850  http://www.sgi.com
67851
67852  For further information regarding this notice, see:
67853
67854  http://oss.sgi.com/projects/GenInfo/NoticeExplan
67855
67856*/
67857
67858
67859
67860
67861typedef struct Dwarf_Global_Context_s *Dwarf_Global_Context;
67862
67863/*
67864    This struct contains header information for a set of pubnames.
67865    Essentially, they contain the context for a set of pubnames
67866    belonging to a compilation-unit.
67867
67868
67869    This is also used for the sgi-specific
67870    weaknames, typenames, varnames, funcnames data:
67871    the structs for those are incomplete and
67872    instances of this are used instead.
67873
67874*/
67875struct Dwarf_Global_Context_s {
67876
67877    /*
67878       Length in .debug_pubnames of a set of pubnames for a
67879       compilation-unit. Dwarf_Word pu_length; The value is not made
67880       available outside libdwarf and not used inside, so no need to
67881       record it. */
67882
67883    /* for this context, size of a length. 4 or 8 */
67884    unsigned char pu_length_size;
67885    /* for this CU, size of the extension 0 except for dwarf2 extension
67886       64bit, in which case is 4. */
67887    unsigned char pu_extension_size;
67888
67889    /*
67890       Offset into .debug_info of the compilation-unit header (not DIE)
67891       for this set of pubnames. */
67892    Dwarf_Off pu_offset_of_cu_header;
67893
67894    /* Size of compilation-unit that these pubnames are in. */
67895    Dwarf_Unsigned pu_info_length;
67896
67897    Dwarf_Debug pu_dbg;
67898};
67899
67900
67901/* This struct contains information for a single pubname. */
67902struct Dwarf_Global_s {
67903
67904    /*
67905       Offset from the start of the corresponding compilation-unit of
67906       the DIE for the given pubname CU. */
67907    Dwarf_Off gl_named_die_offset_within_cu;
67908
67909    /* Points to the given pubname. */
67910    Dwarf_Small *gl_name;
67911
67912    /* Context for this pubname. */
67913    Dwarf_Global_Context gl_context;
67914};
67915
67916int _dwarf_internal_get_pubnames_like_data(Dwarf_Debug dbg,
67917					   Dwarf_Small *
67918					   section_data_ptr,
67919					   Dwarf_Unsigned
67920					   section_length,
67921					   Dwarf_Global ** globals,
67922					   Dwarf_Signed * return_count,
67923					   Dwarf_Error * error,
67924					   int allocation_code,
67925					   int length_err_num,
67926					   int version_err_num);
67927���0707010001ad730000812400011e740000000a00000001402068270000068e000000660000000000000000000000000000001600000000libdwarf/dwarf_incl.h�/*
67928
67929  Copyright (C) 2000, 2002 Silicon Graphics, Inc.  All Rights Reserved.
67930
67931  This program is free software; you can redistribute it and/or modify it
67932  under the terms of version 2.1 of the GNU Lesser General Public License
67933  as published by the Free Software Foundation.
67934
67935  This program is distributed in the hope that it would be useful, but
67936  WITHOUT ANY WARRANTY; without even the implied warranty of
67937  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
67938
67939  Further, this software is distributed without any warranty that it is
67940  free of the rightful claim of any third person regarding infringement
67941  or the like.  Any license provided herein, whether implied or
67942  otherwise, applies only to this software file.  Patent licenses, if
67943  any, provided herein do not apply to combinations of this program with
67944  other software, or any other product whatsoever.
67945
67946  You should have received a copy of the GNU Lesser General Public
67947  License along with this program; if not, write the Free Software
67948  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
67949  USA.
67950
67951  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
67952  Mountain View, CA 94043, or:
67953
67954  http://www.sgi.com
67955
67956  For further information regarding this notice, see:
67957
67958  http://oss.sgi.com/projects/GenInfo/NoticeExplan
67959
67960*/
67961
67962
67963
67964#ifndef DWARF_INCL_H
67965#define DWARF_INCL_H
67966
67967#include "libdwarfdefs.h"
67968#include <string.h>
67969
67970#ifdef HAVE_ELF_H
67971#include <elf.h>
67972#endif
67973
67974#include <limits.h>
67975#include <libdwarf.h>
67976#include <dwarf.h>
67977
67978#include "dwarf_base_types.h"
67979#include "dwarf_alloc.h"
67980#include "dwarf_opaque.h"
67981#include "dwarf_error.h"
67982#include "dwarf_util.h"
67983#endif /* DWARF_INCL_H */
67984��0707010001ad74000081a400011e740000000a00000001404707be00005293000000660000000000000000000000000000001d00000000libdwarf/dwarf_init_finish.c��/*
67985
67986  Copyright (C) 2000,2002,2003 Silicon Graphics, Inc.  All Rights Reserved.
67987
67988  This program is free software; you can redistribute it and/or modify it
67989  under the terms of version 2.1 of the GNU Lesser General Public License
67990  as published by the Free Software Foundation.
67991
67992  This program is distributed in the hope that it would be useful, but
67993  WITHOUT ANY WARRANTY; without even the implied warranty of
67994  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
67995
67996  Further, this software is distributed without any warranty that it is
67997  free of the rightful claim of any third person regarding infringement
67998  or the like.  Any license provided herein, whether implied or
67999  otherwise, applies only to this software file.  Patent licenses, if
68000  any, provided herein do not apply to combinations of this program with
68001  other software, or any other product whatsoever.
68002
68003  You should have received a copy of the GNU Lesser General Public
68004  License along with this program; if not, write the Free Software
68005  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
68006  USA.
68007
68008  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
68009  Mountain View, CA 94043, or:
68010
68011  http://www.sgi.com
68012
68013  For further information regarding this notice, see:
68014
68015  http://oss.sgi.com/projects/GenInfo/NoticeExplan
68016
68017*/
68018
68019
68020
68021#include "config.h"
68022#include "dwarf_incl.h"
68023#ifdef HAVE_ELF_H
68024#include <elf.h>
68025#endif
68026#ifdef __SGI_FAST_LIBELF
68027#include <libelf_sgi.h>
68028#else
68029#ifdef HAVE_LIBELF_H
68030#include <libelf.h>
68031#else
68032#ifdef HAVE_LIBELF_LIBELF_H
68033#include <libelf/libelf.h>
68034#endif
68035#endif
68036#endif /* !defined(__SGI_FAST_LIBELF) */
68037
68038#include <gelf.h>
68039#include <strings.h>
68040#include <sys/elf_386.h>
68041
68042#include <stdio.h>
68043#include <sys/stat.h>
68044#include <sys/types.h>
68045#include <string.h>
68046#include <stdlib.h>
68047#include <malloc.h>
68048
68049#include "dwarf_incl.h"
68050
68051#define DWARF_DBG_ERROR(dbg,errval,retval) \
68052     _dwarf_error(dbg, error, errval); return(retval);
68053
68054#define FALSE	0
68055#define TRUE	1
68056
68057#ifdef __SGI_FAST_LIBELF
68058#else
68059#ifdef HAVE_ELF64_GETEHDR
68060extern Elf64_Ehdr *elf64_getehdr(Elf *);
68061#endif
68062#ifdef HAVE_ELF64_GETSHDR
68063extern Elf64_Shdr *elf64_getshdr(Elf_Scn *);
68064#endif
68065#endif /* !defined(__SGI_FAST_LIBELF) */
68066
68067
68068/* This static is copied to the dbg on dbg init
68069   so that the static need not be referenced at
68070   run time, preserving better locality of
68071   reference.
68072   Value is 0 means do the string check.
68073   Value non-zero means do not do the check.
68074*/
68075static Dwarf_Small _dwarf_assume_string_bad;
68076
68077
68078int
68079dwarf_set_stringcheck(int newval)
68080{
68081    int oldval = _dwarf_assume_string_bad;
68082
68083    _dwarf_assume_string_bad = newval;
68084    return oldval;
68085}
68086
68087#ifdef __SGI_FAST_LIBELF
68088/*
68089	This function translates an elf_sgi error code into a libdwarf
68090	code.
68091 */
68092static int
68093_dwarf_error_code_from_elf_sgi_error_code(enum elf_sgi_error_type val)
68094{
68095    switch (val) {
68096    case ELF_SGI_ERROR_OK:        return DW_DLE_NE;
68097    case ELF_SGI_ERROR_BAD_ALLOC: return DW_DLE_MAF;
68098    case ELF_SGI_ERROR_FORMAT:    return DW_DLE_MDE;
68099    case ELF_SGI_ERROR_ERRNO:     return DW_DLE_IOF;
68100    case ELF_SGI_ERROR_TOO_BIG:   return DW_DLE_MOF;
68101    default:                      return DW_DLE_LEE;
68102    }
68103}
68104#endif
68105
68106/*
68107    Given an Elf ptr, set up dbg with pointers
68108    to all the Dwarf data sections.
68109    Return NULL on error.
68110
68111    This function is also responsible for determining
68112    whether the given object contains Dwarf information
68113    or not.  The test currently used is that it contains
68114    either a .debug_info or a .debug_frame section.  If
68115    not, it returns DW_DLV_NO_ENTRY causing dwarf_init() also to
68116    return DW_DLV_NO_ENTRY.  Earlier, we had thought of using only
68117    the presence/absence of .debug_info to test, but we
68118    added .debug_frame since there could be stripped objects
68119    that have only a .debug_frame section for exception
68120    processing.
68121    DW_DLV_NO_ENTRY or DW_DLV_OK or DW_DLV_ERROR
68122*/
68123static int
68124_dwarf_setup(Dwarf_Debug dbg, dwarf_elf_handle elf, Dwarf_Error * error)
68125{
68126#ifdef __SGI_FAST_LIBELF
68127    Elf64_Ehdr ehdr;
68128    Elf64_Shdr shdr;
68129    enum elf_sgi_error_type sres;
68130    unsigned char const* ehdr_ident;
68131#else
68132    Elf32_Ehdr *ehdr32;
68133
68134#ifdef HAVE_ELF64_GETEHDR
68135    Elf64_Ehdr *ehdr64;
68136#endif
68137    Elf32_Shdr *shdr32;
68138
68139#ifdef HAVE_ELF64_GETSHDR
68140    Elf64_Shdr *shdr64;
68141#endif
68142    Elf_Scn *scn;
68143    char *ehdr_ident;
68144#endif /* !defined(__SGI_FAST_LIBELF) */
68145    Dwarf_Half machine;
68146    char *scn_name;
68147    int is_64bit;
68148    int foundDwarf;
68149
68150    Dwarf_Unsigned section_size;
68151    Dwarf_Unsigned section_count;
68152    Dwarf_Half section_index;
68153
68154    foundDwarf = FALSE;
68155    dbg->de_elf = elf;
68156
68157    dbg->de_assume_string_in_bounds = _dwarf_assume_string_bad;
68158
68159#ifdef __SGI_FAST_LIBELF
68160    sres = elf_sgi_ehdr(elf, &ehdr);
68161    if (sres != ELF_SGI_ERROR_OK) {
68162	DWARF_DBG_ERROR(dbg, _dwarf_error_code_from_elf_sgi_error_code(sres),
68163			DW_DLV_ERROR);
68164    }
68165    ehdr_ident = ehdr.e_ident;
68166    section_count = ehdr.e_shnum;
68167    machine = ehdr.e_machine;
68168#else
68169    if ((ehdr_ident = elf_getident(elf, NULL)) == NULL) {
68170	DWARF_DBG_ERROR(dbg, DW_DLE_ELF_GETIDENT_ERROR, DW_DLV_ERROR);
68171    }
68172#endif
68173
68174    is_64bit = (ehdr_ident[EI_CLASS] == ELFCLASS64);
68175
68176
68177    dbg->de_same_endian = 1;
68178    dbg->de_copy_word = memcpy;
68179#ifdef WORDS_BIGENDIAN
68180    dbg->de_big_endian_object = 1;
68181    if (ehdr_ident[EI_DATA] == ELFDATA2LSB) {
68182	dbg->de_same_endian = 0;
68183	dbg->de_big_endian_object = 0;
68184	dbg->de_copy_word = _dwarf_memcpy_swap_bytes;
68185    }
68186#else /* little endian */
68187    dbg->de_big_endian_object = 0;
68188    if (ehdr_ident[EI_DATA] == ELFDATA2MSB) {
68189	dbg->de_same_endian = 0;
68190        dbg->de_big_endian_object = 1;
68191	dbg->de_copy_word = _dwarf_memcpy_swap_bytes;
68192    }
68193#endif /* !WORDS_BIGENDIAN */
68194
68195    /* The following de_length_size is Not Too Significant.
68196	Only used one calculation, and an appoximate one at that. */
68197    dbg->de_length_size = is_64bit ? 8 : 4;
68198    dbg->de_pointer_size = is_64bit ? 8 : 4;
68199
68200
68201#ifdef __SGI_FAST_LIBELF
68202    /* We've already loaded the ELF header, so there's nothing to do here */
68203#else
68204#ifdef HAVE_ELF64_GETEHDR
68205    if (is_64bit) {
68206	ehdr64 = elf64_getehdr(elf);
68207	if (ehdr64 == NULL) {
68208	    DWARF_DBG_ERROR(dbg, DW_DLE_ELF_GETEHDR_ERROR,
68209			    DW_DLV_ERROR);
68210	}
68211        section_count = ehdr64->e_shnum;
68212        machine = ehdr64->e_machine;
68213    } else
68214#endif
68215    {
68216	ehdr32 = elf32_getehdr(elf);
68217	if (ehdr32 == NULL) {
68218	    DWARF_DBG_ERROR(dbg, DW_DLE_ELF_GETEHDR_ERROR,
68219			    DW_DLV_ERROR);
68220	}
68221        section_count = ehdr32->e_shnum;
68222        machine = ehdr32->e_machine;
68223    }
68224#endif /* !defined(__SGI_FAST_LIBELF) */
68225
68226    dbg->de_nelfsecs = section_count;
68227
68228    if (is_64bit && machine != EM_MIPS) {
68229        /* MIPS/IRIX makes pointer size and length size 8 for -64.
68230           Other platforms make length 4 always. */
68231        /* 4 here supports 32bit-offset dwarf2, as emitted by
68232           cygnus tools, and the dwarfv2.1 64bit extension setting. */
68233        dbg->de_length_size = 4;
68234    }
68235
68236    /* We start at index 1 to skip the initial empty section. */
68237    for (section_index = 1; section_index < section_count; ++section_index) {
68238
68239#ifdef __SGI_FAST_LIBELF
68240	sres = elf_sgi_shdr(elf, section_index, &shdr);
68241	if (sres != ELF_SGI_ERROR_OK) {
68242	    DWARF_DBG_ERROR(dbg, _dwarf_error_code_from_elf_sgi_error_code(sres),
68243			    DW_DLV_ERROR);
68244	}
68245
68246	section_size = shdr.sh_size;
68247
68248	sres = elf_sgi_string(elf, ehdr.e_shstrndx, shdr.sh_name, (char const** )&scn_name);
68249	if (sres != ELF_SGI_ERROR_OK) {
68250	    DWARF_DBG_ERROR(dbg, _dwarf_error_code_from_elf_sgi_error_code(sres),
68251			    DW_DLV_ERROR);
68252	}
68253#else /* !defined(__SGI_FAST_LIBELF) */
68254	scn = elf_getscn(elf, section_index);
68255	if (scn == NULL) {
68256	    DWARF_DBG_ERROR(dbg, DW_DLE_MDE,
68257			    DW_DLV_ERROR);
68258	}
68259
68260#ifdef HAVE_ELF64_GETSHDR
68261	if (is_64bit) {
68262	    shdr64 = elf64_getshdr(scn);
68263	    if (shdr64 == NULL) {
68264		DWARF_DBG_ERROR(dbg, DW_DLE_ELF_GETSHDR_ERROR,
68265				DW_DLV_ERROR);
68266	    }
68267
68268	    section_size = shdr64->sh_size;
68269
68270	    if ((scn_name = elf_strptr(elf, ehdr64->e_shstrndx,
68271				       shdr64->sh_name))
68272		== NULL) {
68273		DWARF_DBG_ERROR(dbg, DW_DLE_ELF_STRPTR_ERROR,
68274				DW_DLV_ERROR);
68275	    }
68276	} else
68277#endif /* HAVE_ELF64_GETSHDR */
68278	{
68279	    if ((shdr32 = elf32_getshdr(scn)) == NULL) {
68280		DWARF_DBG_ERROR(dbg, DW_DLE_ELF_GETSHDR_ERROR, 0);
68281	    }
68282
68283	    section_size = shdr32->sh_size;
68284
68285	    if ((scn_name = elf_strptr(elf, ehdr32->e_shstrndx,
68286				       shdr32->sh_name)) == NULL) {
68287		DWARF_DBG_ERROR(dbg, DW_DLE_ELF_STRPTR_ERROR,
68288				DW_DLV_ERROR);
68289	    }
68290	}
68291#endif /* !defined(__SGI_FAST_LIBELF) */
68292
68293	if (strncmp(scn_name, ".debug_", 7)
68294	    && strcmp(scn_name, ".eh_frame")
68295	    )
68296	    continue;
68297
68298	else if (strcmp(scn_name, ".debug_info") == 0) {
68299	    if (dbg->de_debug_info != NULL) {
68300		DWARF_DBG_ERROR(dbg, DW_DLE_DEBUG_INFO_DUPLICATE,
68301				DW_DLV_ERROR);
68302	    }
68303	    if (section_size == 0) {
68304		/* Know no reason to allow empty debug_info section */
68305		DWARF_DBG_ERROR(dbg, DW_DLE_DEBUG_INFO_NULL,
68306				DW_DLV_ERROR);
68307	    }
68308	    foundDwarf = TRUE;
68309	    dbg->de_debug_info_index = section_index;
68310	    dbg->de_debug_info_size = section_size;
68311	}
68312
68313	else if (strcmp(scn_name, ".debug_abbrev") == 0) {
68314	    if (dbg->de_debug_abbrev != NULL) {
68315		DWARF_DBG_ERROR(dbg, DW_DLE_DEBUG_ABBREV_DUPLICATE,
68316				DW_DLV_ERROR);
68317	    }
68318	    if (section_size == 0) {
68319		/* Know no reason to allow empty debug_abbrev section */
68320		DWARF_DBG_ERROR(dbg, DW_DLE_DEBUG_ABBREV_NULL,
68321				DW_DLV_ERROR);
68322	    }
68323	    dbg->de_debug_abbrev_index = section_index;
68324	    dbg->de_debug_abbrev_size = section_size;
68325	}
68326
68327	else if (strcmp(scn_name, ".debug_aranges") == 0) {
68328	    if (dbg->de_debug_aranges_index != 0) {
68329		DWARF_DBG_ERROR(dbg,
68330				DW_DLE_DEBUG_ARANGES_DUPLICATE,
68331				DW_DLV_ERROR);
68332	    }
68333	    if (section_size == 0) {
68334		/* a zero size section is just empty. Ok, no error */
68335		continue;
68336	    }
68337	    dbg->de_debug_aranges_index = section_index;
68338	    dbg->de_debug_aranges_size = section_size;
68339	}
68340
68341	else if (strcmp(scn_name, ".debug_line") == 0) {
68342	    if (dbg->de_debug_line_index != 0) {
68343		DWARF_DBG_ERROR(dbg,
68344				DW_DLE_DEBUG_LINE_DUPLICATE,
68345				DW_DLV_ERROR);
68346	    }
68347	    if (section_size == 0) {
68348		/* a zero size section is just empty. Ok, no error */
68349		continue;
68350	    }
68351	    dbg->de_debug_line_index = section_index;
68352	    dbg->de_debug_line_size = section_size;
68353	}
68354
68355	else if (strcmp(scn_name, ".debug_frame") == 0) {
68356	    if (dbg->de_debug_frame_index != 0) {
68357		DWARF_DBG_ERROR(dbg,
68358				DW_DLE_DEBUG_FRAME_DUPLICATE,
68359				DW_DLV_ERROR);
68360	    }
68361	    if (section_size == 0) {
68362		/* a zero size section is just empty. Ok, no error */
68363		continue;
68364	    }
68365	    dbg->de_debug_frame_index = section_index;
68366	    dbg->de_debug_frame_size = section_size;
68367	    foundDwarf = TRUE;
68368	} else if (strcmp(scn_name, ".eh_frame") == 0) {
68369	    /* gnu egcs-1.1.2 data */
68370	    if (dbg->de_debug_frame_eh_gnu_index != 0) {
68371		DWARF_DBG_ERROR(dbg,
68372				DW_DLE_DEBUG_FRAME_DUPLICATE,
68373				DW_DLV_ERROR);
68374	    }
68375	    if (section_size == 0) {
68376		/* a zero size section is just empty. Ok, no error */
68377		continue;
68378	    }
68379	    dbg->de_debug_frame_eh_gnu_index = section_index;
68380	    dbg->de_debug_frame_size_eh_gnu = section_size;
68381	    foundDwarf = TRUE;
68382	}
68383
68384	else if (strcmp(scn_name, ".debug_loc") == 0) {
68385	    if (dbg->de_debug_loc_index != 0) {
68386		DWARF_DBG_ERROR(dbg, DW_DLE_DEBUG_LOC_DUPLICATE,
68387				DW_DLV_ERROR);
68388	    }
68389	    if (section_size == 0) {
68390		/* a zero size section is just empty. Ok, no error */
68391		continue;
68392	    }
68393	    dbg->de_debug_loc_index = section_index;
68394	    dbg->de_debug_loc_size = section_size;
68395	}
68396
68397
68398	else if (strcmp(scn_name, ".debug_pubnames") == 0) {
68399	    if (dbg->de_debug_pubnames_index != 0) {
68400		DWARF_DBG_ERROR(dbg, DW_DLE_DEBUG_PUBNAMES_DUPLICATE,
68401				DW_DLV_ERROR);
68402	    }
68403	    if (section_size == 0) {
68404		/* a zero size section is just empty. Ok, no error */
68405		continue;
68406	    }
68407	    dbg->de_debug_pubnames_index = section_index;
68408	    dbg->de_debug_pubnames_size = section_size;
68409	}
68410
68411	else if (strcmp(scn_name, ".debug_str") == 0) {
68412	    if (dbg->de_debug_str_index != 0) {
68413		DWARF_DBG_ERROR(dbg,
68414				DW_DLE_DEBUG_STR_DUPLICATE,
68415				DW_DLV_ERROR);
68416	    }
68417	    if (section_size == 0) {
68418		/* a zero size section is just empty. Ok, no error */
68419		continue;
68420	    }
68421	    dbg->de_debug_str_index = section_index;
68422	    dbg->de_debug_str_size = section_size;
68423	}
68424
68425	else if (strcmp(scn_name, ".debug_funcnames") == 0) {
68426	    if (dbg->de_debug_funcnames_index != 0) {
68427		DWARF_DBG_ERROR(dbg,
68428				DW_DLE_DEBUG_FUNCNAMES_DUPLICATE,
68429				DW_DLV_ERROR);
68430	    }
68431	    if (section_size == 0) {
68432		/* a zero size section is just empty. Ok, no error */
68433		continue;
68434	    }
68435	    dbg->de_debug_funcnames_index = section_index;
68436	    dbg->de_debug_funcnames_size = section_size;
68437	}
68438
68439	else if (strcmp(scn_name, ".debug_typenames") == 0) {
68440	    if (dbg->de_debug_typenames_index != 0) {
68441		DWARF_DBG_ERROR(dbg,
68442				DW_DLE_DEBUG_TYPENAMES_DUPLICATE,
68443				DW_DLV_ERROR);
68444	    }
68445	    if (section_size == 0) {
68446		/* a zero size section is just empty. Ok, no error */
68447		continue;
68448	    }
68449	    dbg->de_debug_typenames_index = section_index;
68450	    dbg->de_debug_typenames_size = section_size;
68451	}
68452
68453	else if (strcmp(scn_name, ".debug_varnames") == 0) {
68454	    if (dbg->de_debug_varnames_index != 0) {
68455		DWARF_DBG_ERROR(dbg,
68456				DW_DLE_DEBUG_VARNAMES_DUPLICATE,
68457				DW_DLV_ERROR);
68458	    }
68459	    if (section_size == 0) {
68460		/* a zero size section is just empty. Ok, no error */
68461		continue;
68462	    }
68463	    dbg->de_debug_varnames_index = section_index;
68464	    dbg->de_debug_varnames_size = section_size;
68465	}
68466
68467	else if (strcmp(scn_name, ".debug_weaknames") == 0) {
68468	    if (dbg->de_debug_weaknames_index != 0) {
68469		DWARF_DBG_ERROR(dbg,
68470				DW_DLE_DEBUG_WEAKNAMES_DUPLICATE,
68471				DW_DLV_ERROR);
68472	    }
68473	    if (section_size == 0) {
68474		/* a zero size section is just empty. Ok, no error */
68475		continue;
68476	    }
68477	    dbg->de_debug_weaknames_index = section_index;
68478	    dbg->de_debug_weaknames_size = section_size;
68479	} else if (strcmp(scn_name, ".debug_macinfo") == 0) {
68480	    if (dbg->de_debug_macinfo_index != 0) {
68481		DWARF_DBG_ERROR(dbg,
68482				DW_DLE_DEBUG_MACINFO_DUPLICATE,
68483				DW_DLV_ERROR);
68484	    }
68485	    if (section_size == 0) {
68486		/* a zero size section is just empty. Ok, no error */
68487		continue;
68488	    }
68489	    dbg->de_debug_macinfo_index = section_index;
68490	    dbg->de_debug_macinfo_size = section_size;
68491	}
68492    }
68493    if (foundDwarf) {
68494	return DW_DLV_OK;
68495    }
68496
68497    return (DW_DLV_NO_ENTRY);
68498}
68499
68500
68501/*
68502    The basic dwarf initializer function for consumers.
68503    Return NULL on error.
68504*/
68505int
68506dwarf_init(int fd,
68507	   Dwarf_Unsigned access,
68508	   Dwarf_Handler errhand,
68509	   Dwarf_Ptr errarg, Dwarf_Debug * ret_dbg, Dwarf_Error * error)
68510{
68511    Dwarf_Debug dbg;
68512    struct stat fstat_buf;
68513    dwarf_elf_handle elf;
68514    int res;
68515#ifdef __SGI_FAST_LIBELF
68516    enum elf_sgi_error_type sres;
68517#else
68518    Elf_Cmd what_kind_of_elf_read;
68519#endif
68520
68521    dbg = _dwarf_get_debug();
68522    if (dbg == NULL) {
68523	DWARF_DBG_ERROR(dbg, DW_DLE_DBG_ALLOC, DW_DLV_ERROR);
68524    }
68525    dbg->de_errhand = errhand;
68526    dbg->de_errarg = errarg;
68527
68528    if (fstat(fd, &fstat_buf) != 0) {
68529	DWARF_DBG_ERROR(dbg, DW_DLE_FSTAT_ERROR, DW_DLV_ERROR);
68530    }
68531    if (!S_ISREG(fstat_buf.st_mode)) {
68532	DWARF_DBG_ERROR(dbg, DW_DLE_FSTAT_MODE_ERROR, DW_DLV_ERROR);
68533    }
68534
68535    if (access != DW_DLC_READ) {
68536	DWARF_DBG_ERROR(dbg, DW_DLE_INIT_ACCESS_WRONG, DW_DLV_ERROR);
68537    }
68538    dbg->de_access = access;
68539
68540#ifdef __SGI_FAST_LIBELF
68541    elf = elf_sgi_new();
68542    if (elf == NULL) {
68543	DWARF_DBG_ERROR(dbg, DW_DLE_MAF, DW_DLV_ERROR);
68544    }
68545
68546    sres = elf_sgi_begin_fd(elf, fd, 0);
68547    if (sres != ELF_SGI_ERROR_OK) {
68548	DWARF_DBG_ERROR(dbg, _dwarf_error_code_from_elf_sgi_error_code(sres),
68549			DW_DLV_ERROR);
68550    }
68551#else
68552    elf_version(EV_CURRENT);
68553    /* changed to mmap request per bug 281217. 6/95 */
68554#ifdef HAVE_ELF_C_READ_MMAP
68555    /* ELF_C_READ_MMAP is an SGI IRIX specific enum value from IRIX
68556       libelf.h meaning read but use mmap */
68557    what_kind_of_elf_read = ELF_C_READ_MMAP;
68558#else
68559    /* ELF_C_READ is a portable value */
68560    what_kind_of_elf_read  = ELF_C_READ;
68561#endif
68562
68563    if ((elf = elf_begin(fd, what_kind_of_elf_read, 0)) == NULL) {
68564	DWARF_DBG_ERROR(dbg, DW_DLE_ELF_BEGIN_ERROR, DW_DLV_ERROR);
68565    }
68566#endif /* !defined(__SGI_FAST_LIBELF) */
68567
68568    dbg->de_elf_must_close = 1;
68569    if ((res = _dwarf_setup(dbg, elf, error)) != DW_DLV_OK) {
68570	free(dbg);
68571	return (res);
68572    }
68573
68574    /* call cannot fail: no malloc or free involved */
68575    _dwarf_setup_debug(dbg);
68576
68577    *ret_dbg = dbg;
68578    return (DW_DLV_OK);
68579}
68580
68581
68582/*
68583    The alternate dwarf setup call for consumers
68584*/
68585int
68586dwarf_elf_init(dwarf_elf_handle elf_file_pointer,
68587	       Dwarf_Unsigned access,
68588	       Dwarf_Handler errhand,
68589	       Dwarf_Ptr errarg,
68590	       Dwarf_Debug * ret_dbg, Dwarf_Error * error)
68591{
68592    Dwarf_Debug dbg;
68593    int res;
68594
68595    dbg = _dwarf_get_debug();
68596    if (dbg == NULL) {
68597	DWARF_DBG_ERROR(dbg, DW_DLE_DBG_ALLOC, DW_DLV_ERROR);
68598    }
68599    dbg->de_errhand = errhand;
68600    dbg->de_errarg = errarg;
68601
68602    if (access != DW_DLC_READ) {
68603	DWARF_DBG_ERROR(dbg, DW_DLE_INIT_ACCESS_WRONG, DW_DLV_ERROR);
68604    }
68605    dbg->de_access = access;
68606
68607    dbg->de_elf_must_close = 0;
68608    if ((res = _dwarf_setup(dbg, elf_file_pointer, error)) != DW_DLV_OK) {
68609	free(dbg);
68610	return (res);
68611    }
68612
68613    /* this call cannot fail: allocates nothing, releases nothing */
68614    _dwarf_setup_debug(dbg);
68615
68616    *ret_dbg = dbg;
68617    return (DW_DLV_OK);
68618}
68619
68620
68621/*
68622	Frees all memory that was not previously freed
68623	by dwarf_dealloc.
68624	Aside from certain categories.
68625*/
68626int
68627dwarf_finish(Dwarf_Debug dbg, Dwarf_Error * error)
68628{
68629    int res = DW_DLV_OK;
68630    if(dbg->de_elf_must_close) {
68631	/* Must do this *before* _dwarf_free_all_of_one_debug()
68632	   as that zeroes out dbg contents
68633	*/
68634#ifdef __SGI_FAST_LIBELF
68635	elf_sgi_free(dbg->de_elf);
68636#else
68637	elf_end(dbg->de_elf);
68638#endif
68639    }
68640
68641    res = _dwarf_free_all_of_one_debug(dbg);
68642    if (res == DW_DLV_ERROR) {
68643	DWARF_DBG_ERROR(dbg, DW_DLE_DBG_ALLOC, DW_DLV_ERROR);
68644    }
68645
68646    return res;
68647
68648
68649}
68650
68651
68652/*
68653    This function returns the Elf * pointer
68654    associated with a Dwarf_Debug.
68655*/
68656int
68657dwarf_get_elf(Dwarf_Debug dbg, dwarf_elf_handle* elf, Dwarf_Error * error)
68658{
68659    if (dbg == NULL) {
68660	_dwarf_error(NULL, error, DW_DLE_DBG_NULL);
68661	return (DW_DLV_ERROR);
68662    }
68663
68664    *elf = dbg->de_elf;
68665    return (DW_DLV_OK);
68666}
68667
68668static Dwarf_Small *
68669_dwarf_reloc_section(Dwarf_Debug dbg, Dwarf_Half scnidx, Elf_Data *scndata,
68670    Dwarf_Error *error)
68671{
68672	Elf_Data *reldata;
68673	GElf_Rela rela;
68674	Elf_Scn *scn;
68675	GElf_Shdr shdr;
68676	char *newdata;
68677	int ridx, rscnidx;
68678
68679	for (rscnidx = 0; rscnidx < dbg->de_nelfsecs; rscnidx++) {
68680		if ((scn = elf_getscn(dbg->de_elf, rscnidx)) == NULL ||
68681		    gelf_getshdr(scn, &shdr) == NULL) {
68682			_dwarf_error(dbg, error, DW_DLE_LEE);
68683			return (NULL);
68684		}
68685
68686		if (shdr.sh_type == SHT_RELA &&
68687		    shdr.sh_info == scnidx)
68688			break;
68689	}
68690
68691	if (rscnidx == dbg->de_nelfsecs)
68692		return (scndata->d_buf);
68693
68694	if ((reldata = elf_getdata(scn, NULL)) == NULL) {
68695		_dwarf_error(dbg, error, DW_DLE_LEE);
68696		return (NULL);
68697	}
68698
68699	if ((newdata = malloc(scndata->d_size)) == NULL) {
68700		_dwarf_error(dbg, error, DW_DLE_MAF);
68701		return (NULL);
68702	}
68703
68704	bcopy(scndata->d_buf, newdata, scndata->d_size);
68705
68706	for (ridx = 0; ridx < shdr.sh_size / sizeof (GElf_Rela); ridx++) {
68707		if (gelf_getrela(reldata, ridx, &rela) == NULL)
68708			continue;
68709
68710		if (GELF_R_TYPE(rela.r_info) != R_386_32 &&
68711		    GELF_R_TYPE(rela.r_info) != R_386_GOTPC) {
68712			fprintf(stderr, "achtung: tell simmonmt@eng about "
68713			    "unexpected reloc type %d\n",
68714			    GELF_R_TYPE(rela.r_info));
68715			continue;
68716		}
68717
68718		*(uint32_t *)(newdata + rela.r_offset) = rela.r_addend;
68719	}
68720
68721	return ((Dwarf_Small *)newdata);
68722}
68723
68724/*
68725	Load the ELF section with the specified index and set the
68726	pointer pointed to by section_data to the memory where it
68727	was loaded.
68728 */
68729int
68730_dwarf_load_section(Dwarf_Debug dbg,
68731		    Dwarf_Half section_index,
68732		    Dwarf_Small ** section_data,
68733		    Dwarf_Error * error)
68734{
68735    if (section_index == 0) {
68736	return DW_DLV_NO_ENTRY;
68737    }
68738
68739    /* check to see if the section is already loaded */
68740    if (*section_data != NULL) {
68741	return DW_DLV_OK;
68742    }
68743
68744    {
68745#ifdef __SGI_FAST_LIBELF
68746        enum elf_sgi_error_type sres;
68747
68748        sres = elf_sgi_section(dbg->de_elf,
68749		               section_index,
68750			       (void**) section_data);
68751        if (sres != ELF_SGI_ERROR_OK) {
68752	    DWARF_DBG_ERROR(dbg, _dwarf_error_code_from_elf_sgi_error_code(sres),
68753			    DW_DLV_ERROR);
68754        }
68755#else
68756        Elf_Scn* scn;
68757        Elf_Data* data;
68758
68759        scn = elf_getscn(dbg->de_elf, section_index);
68760        if (scn == NULL) {
68761	    _dwarf_error(dbg, error, DW_DLE_MDE);
68762	    return DW_DLV_ERROR;
68763        }
68764
68765	/*
68766	    When using libelf as a producer, section data may be stored
68767	    in multiple buffers. In libdwarf however, we only use libelf
68768	    as a consumer (there is a dwarf producer API, but it doesn't
68769	    use libelf). Because of this, this single call to elf_getdata
68770	    will retrieve the entire section in a single contiguous buffer.
68771	 */
68772        data = elf_getdata(scn, NULL);
68773        if (data == NULL) {
68774	    _dwarf_error(dbg, error, DW_DLE_MDE);
68775	    return DW_DLV_ERROR;
68776        }
68777
68778	if ((*section_data = _dwarf_reloc_section(dbg, section_index, data,
68779	    error)) == NULL)
68780		return (DW_DLV_ERROR); /* _dwarf_error is set for us */
68781
68782#endif /* !defined(__SGI_FAST_LIBELF) */
68783    }
68784
68785    return DW_DLV_OK;
68786}
68787�0707010001ad750000812400011e740000000a000000014020682700000fb0000000660000000000000000000000000000001500000000libdwarf/dwarf_leb.c��/*
68788
68789  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
68790
68791  This program is free software; you can redistribute it and/or modify it
68792  under the terms of version 2.1 of the GNU Lesser General Public License
68793  as published by the Free Software Foundation.
68794
68795  This program is distributed in the hope that it would be useful, but
68796  WITHOUT ANY WARRANTY; without even the implied warranty of
68797  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
68798
68799  Further, this software is distributed without any warranty that it is
68800  free of the rightful claim of any third person regarding infringement
68801  or the like.  Any license provided herein, whether implied or
68802  otherwise, applies only to this software file.  Patent licenses, if
68803  any, provided herein do not apply to combinations of this program with
68804  other software, or any other product whatsoever.
68805
68806  You should have received a copy of the GNU Lesser General Public
68807  License along with this program; if not, write the Free Software
68808  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
68809  USA.
68810
68811  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
68812  Mountain View, CA 94043, or:
68813
68814  http://www.sgi.com
68815
68816  For further information regarding this notice, see:
68817
68818  http://oss.sgi.com/projects/GenInfo/NoticeExplan
68819
68820*/
68821
68822
68823
68824#include "config.h"
68825#include "dwarf_incl.h"
68826#include <stdio.h>
68827
68828
68829/*
68830    decode ULEB
68831*/
68832Dwarf_Unsigned
68833_dwarf_decode_u_leb128(Dwarf_Small * leb128, Dwarf_Word * leb128_length)
68834{
68835    unsigned char byte;
68836    Dwarf_Word word_number;
68837    Dwarf_Unsigned number;
68838    Dwarf_Sword shift;
68839    Dwarf_Sword byte_length;
68840
68841    /* The following unrolls-the-loop for the first few bytes and
68842       unpacks into 32 bits to make this as fast as possible.
68843       word_number is assumed big enough that the shift has a defined
68844       result. */
68845    if ((*leb128 & 0x80) == 0) {
68846	if (leb128_length != NULL)
68847	    *leb128_length = 1;
68848	return (*leb128);
68849    } else if ((*(leb128 + 1) & 0x80) == 0) {
68850	if (leb128_length != NULL)
68851	    *leb128_length = 2;
68852
68853	word_number = *leb128 & 0x7f;
68854	word_number |= (*(leb128 + 1) & 0x7f) << 7;
68855	return (word_number);
68856    } else if ((*(leb128 + 2) & 0x80) == 0) {
68857	if (leb128_length != NULL)
68858	    *leb128_length = 3;
68859
68860	word_number = *leb128 & 0x7f;
68861	word_number |= (*(leb128 + 1) & 0x7f) << 7;
68862	word_number |= (*(leb128 + 2) & 0x7f) << 14;
68863	return (word_number);
68864    } else if ((*(leb128 + 3) & 0x80) == 0) {
68865	if (leb128_length != NULL)
68866	    *leb128_length = 4;
68867
68868	word_number = *leb128 & 0x7f;
68869	word_number |= (*(leb128 + 1) & 0x7f) << 7;
68870	word_number |= (*(leb128 + 2) & 0x7f) << 14;
68871	word_number |= (*(leb128 + 3) & 0x7f) << 21;
68872	return (word_number);
68873    }
68874
68875    /* The rest handles long numbers Because the 'number' may be
68876       larger than the default int/unsigned, we must cast the 'byte'
68877       before the shift for the shift to have a defined result. */
68878    number = 0;
68879    shift = 0;
68880    byte_length = 1;
68881    byte = *(leb128);
68882    for (;;) {
68883	number |= ((Dwarf_Unsigned) (byte & 0x7f)) << shift;
68884
68885	if ((byte & 0x80) == 0) {
68886	    if (leb128_length != NULL)
68887		*leb128_length = byte_length;
68888	    return (number);
68889	}
68890	shift += 7;
68891
68892	byte_length++;
68893	++leb128;
68894	byte = *leb128;
68895    }
68896}
68897
68898#define BITSINBYTE 8
68899
68900/*
68901    decode SLEB
68902*/
68903Dwarf_Signed
68904_dwarf_decode_s_leb128(Dwarf_Small * leb128, Dwarf_Word * leb128_length)
68905{
68906    Dwarf_Signed number = 0;
68907    Dwarf_Bool sign = 0;
68908    Dwarf_Sword shift = 0;
68909    unsigned char byte = *leb128;
68910    Dwarf_Sword byte_length = 1;
68911
68912    /* byte_length being the number of bytes of data absorbed so far in
68913       turning the leb into a Dwarf_Signed. */
68914
68915    for (;;) {
68916	sign = byte & 0x40;
68917	number |= ((Dwarf_Signed) ((byte & 0x7f))) << shift;
68918	shift += 7;
68919
68920	if ((byte & 0x80) == 0) {
68921	    break;
68922	}
68923	++leb128;
68924	byte = *leb128;
68925	byte_length++;
68926    }
68927
68928    if ((shift < sizeof(Dwarf_Signed) * BITSINBYTE) && sign) {
68929	number |= -((Dwarf_Signed) 1 << shift);
68930    }
68931
68932    if (leb128_length != NULL)
68933	*leb128_length = byte_length;
68934    return (number);
68935}
689360707010001ad760000812400011e740000000a00000001402068270000a424000000660000000000000000000000000000001600000000libdwarf/dwarf_line.c�/*
68937
68938  Copyright (C) 2000,2002,2004 Silicon Graphics, Inc.  All Rights Reserved.
68939
68940  This program is free software; you can redistribute it and/or modify it
68941  under the terms of version 2.1 of the GNU Lesser General Public License
68942  as published by the Free Software Foundation.
68943
68944  This program is distributed in the hope that it would be useful, but
68945  WITHOUT ANY WARRANTY; without even the implied warranty of
68946  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
68947
68948  Further, this software is distributed without any warranty that it is
68949  free of the rightful claim of any third person regarding infringement
68950  or the like.  Any license provided herein, whether implied or
68951  otherwise, applies only to this software file.  Patent licenses, if
68952  any, provided herein do not apply to combinations of this program with
68953  other software, or any other product whatsoever.
68954
68955  You should have received a copy of the GNU Lesser General Public
68956  License along with this program; if not, write the Free Software
68957  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
68958  USA.
68959
68960  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
68961  Mountain View, CA 94043, or:
68962
68963  http://www.sgi.com
68964
68965  For further information regarding this notice, see:
68966
68967  http://oss.sgi.com/projects/GenInfo/NoticeExplan
68968
68969*/
68970
68971
68972
68973#include "config.h"
68974#include "dwarf_incl.h"
68975#include <stdio.h>
68976#include "dwarf_line.h"
68977#ifdef HAVE_ALLOCA_H
68978#include <alloca.h>
68979#endif
68980
68981
68982/*
68983    Although source files is supposed to return the
68984    source files in the compilation-unit, it does
68985    not look for any in the statement program.  In
68986    other words, it ignores those defined using the
68987    extended opcode DW_LNE_define_file.
68988*/
68989int
68990dwarf_srcfiles(Dwarf_Die die,
68991	       char ***srcfiles,
68992	       Dwarf_Signed * srcfilecount, Dwarf_Error * error)
68993{
68994    /*
68995       This pointer is used to scan the portion of the .debug_line
68996       section for the current cu. */
68997    Dwarf_Small *line_ptr;
68998
68999    /*
69000       This points to the last byte of the .debug_line portion for the
69001       current cu. */
69002    Dwarf_Small *line_ptr_end;
69003
69004    /*
69005       This points to the end of the statement program prologue for the
69006       current cu, and serves to check that the prologue was correctly
69007       decoded. */
69008    Dwarf_Small *check_line_ptr;
69009
69010    /*
69011       Pointer to a DW_AT_stmt_list attribute in case it exists in the
69012       die. */
69013    Dwarf_Attribute stmt_list_attr;
69014
69015    /* Pointer to DW_AT_comp_dir attribute in die. */
69016    Dwarf_Attribute comp_dir_attr;
69017
69018    /* Pointer to name of compilation directory. */
69019    Dwarf_Small *comp_dir = 0;
69020
69021    /*
69022       Offset into .debug_line specified by a DW_AT_stmt_list
69023       attribute. */
69024    Dwarf_Unsigned line_offset = 0;
69025
69026    /* Some of the fields of the statement program header. */
69027    Dwarf_Unsigned total_length = 0;
69028    Dwarf_Half version = 0;
69029    Dwarf_Unsigned prologue_length = 0;
69030    Dwarf_Small special_opcode_base= 0;
69031
69032    /* File name excluding included directory. */
69033    char *file_name = 0;
69034
69035    /* Name of directory that the file is in. */
69036    char *dir_name = 0;
69037
69038    /* Name concatenating both directory and file name. */
69039    char *full_name = 0;
69040
69041    /*
69042       This is the directory index for the file. The compilation
69043       directory is 0, and the first included directory is 1. */
69044    Dwarf_Sword dir_index = 0;
69045
69046    Dwarf_Small *include_directories = 0;
69047
69048    Dwarf_Sword i = 0;
69049    Dwarf_Sword file_count = 0;
69050    Dwarf_Sword directories_count = 0;
69051
69052    /*
69053       This is the current opcode read from the statement program. */
69054
69055    Dwarf_Word leb128_length;
69056
69057    /* This is the length of an extended opcode instr.  */
69058
69059    /*
69060       This points to a block of char *'s, each of which points to a
69061       file name. */
69062    char **ret_files = 0;
69063
69064    /* The Dwarf_Debug this die belongs to. */
69065    Dwarf_Debug dbg;
69066
69067    /* Used to chain the file names. */
69068    Dwarf_Chain curr_chain, prev_chain, head_chain = NULL;
69069    int resattr;
69070    int lres;
69071
69072    int local_length_size = 0;
69073    /*REFERENCED*/ /* Not used in this instance of the macro */
69074    int local_extension_size = 0;
69075
69076    int res;
69077
69078    /* ***** BEGIN CODE ***** */
69079
69080    /* Reset error. */
69081    if (error != NULL)
69082	*error = NULL;
69083
69084    CHECK_DIE(die, DW_DLV_ERROR)
69085	dbg = die->di_cu_context->cc_dbg;
69086
69087    resattr = dwarf_attr(die, DW_AT_stmt_list, &stmt_list_attr, error);
69088    if (resattr != DW_DLV_OK) {
69089	return resattr;
69090    }
69091
69092    if (dbg->de_debug_line_index == 0) {
69093	_dwarf_error(dbg, error, DW_DLE_DEBUG_LINE_NULL);
69094	return (DW_DLV_ERROR);
69095    }
69096
69097    res =
69098       _dwarf_load_section(dbg,
69099		           dbg->de_debug_line_index,
69100			   &dbg->de_debug_line,
69101			   error);
69102    if (res != DW_DLV_OK) {
69103	return res;
69104    }
69105
69106    lres = dwarf_formudata(stmt_list_attr, &line_offset, error);
69107    if (lres != DW_DLV_OK) {
69108	return lres;
69109    }
69110    if (line_offset >= dbg->de_debug_line_size) {
69111	_dwarf_error(dbg, error, DW_DLE_LINE_OFFSET_BAD);
69112	return (DW_DLV_ERROR);
69113    }
69114    line_ptr = dbg->de_debug_line + line_offset;
69115    dwarf_dealloc(dbg, stmt_list_attr, DW_DLA_ATTR);
69116
69117    /*
69118       If die has DW_AT_comp_dir attribute, get the string that names
69119       the compilation directory. */
69120    resattr = dwarf_attr(die, DW_AT_comp_dir, &comp_dir_attr, error);
69121    if (resattr == DW_DLV_ERROR) {
69122	return resattr;
69123    }
69124    if (resattr == DW_DLV_OK) {
69125	int cres;
69126	char *cdir;
69127
69128	cres = dwarf_formstring(comp_dir_attr, &cdir, error);
69129	if (cres == DW_DLV_ERROR) {
69130	    return cres;
69131	} else if (cres == DW_DLV_OK) {
69132	    comp_dir = (Dwarf_Small *) cdir;
69133	}
69134    }
69135    if (resattr == DW_DLV_OK) {
69136	dwarf_dealloc(dbg, comp_dir_attr, DW_DLA_ATTR);
69137    }
69138
69139    /*
69140       Following is a straightforward decoding of the statement
69141       program prologue information. */
69142    /* READ_AREA_LENGTH updates line_ptr for consumed bytes */
69143    READ_AREA_LENGTH(dbg, total_length, Dwarf_Unsigned,
69144		     line_ptr, local_length_size, local_extension_size);
69145
69146
69147    line_ptr_end = line_ptr + total_length;
69148    if (line_ptr_end > dbg->de_debug_line + dbg->de_debug_line_size) {
69149	_dwarf_error(dbg, error, DW_DLE_DEBUG_LINE_LENGTH_BAD);
69150	return (DW_DLV_ERROR);
69151    }
69152
69153    READ_UNALIGNED(dbg, version, Dwarf_Half,
69154		   line_ptr, sizeof(Dwarf_Half));
69155    line_ptr += sizeof(Dwarf_Half);
69156    if (version != CURRENT_VERSION_STAMP) {
69157	_dwarf_error(dbg, error, DW_DLE_VERSION_STAMP_ERROR);
69158	return (DW_DLV_ERROR);
69159    }
69160
69161    READ_UNALIGNED(dbg, prologue_length, Dwarf_Unsigned,
69162		   line_ptr, local_length_size);
69163    line_ptr += local_length_size;
69164    check_line_ptr = line_ptr;
69165
69166    /* Skip over minimum instruction length. */
69167    line_ptr = line_ptr + sizeof(Dwarf_Small);
69168
69169    /* Skip over default_is_stmt. */
69170    line_ptr = line_ptr + sizeof(Dwarf_Small);
69171
69172    /* Skip over line_base. */
69173    line_ptr = line_ptr + sizeof(Dwarf_Sbyte);
69174
69175    /* Skip over line_ptr. */
69176    line_ptr = line_ptr + sizeof(Dwarf_Small);
69177
69178    special_opcode_base = *(Dwarf_Small *) line_ptr;
69179    line_ptr = line_ptr + sizeof(Dwarf_Small);
69180
69181    for (i = 1; i < special_opcode_base; i++) {
69182	/* Skip over opcode lengths for standard opcodes. */
69183	line_ptr = line_ptr + sizeof(Dwarf_Small);
69184    }
69185
69186    directories_count = 0;
69187    include_directories = line_ptr;
69188    while ((*(char *) line_ptr) != '\0') {
69189	line_ptr = line_ptr + strlen((char *) line_ptr) + 1;
69190	directories_count++;
69191    }
69192    line_ptr++;
69193
69194    file_count = 0;
69195    while (*(char *) line_ptr != '\0') {
69196	Dwarf_Unsigned utmp;
69197
69198	file_name = (char *) line_ptr;
69199	line_ptr = line_ptr + strlen((char *) line_ptr) + 1;
69200
69201	DECODE_LEB128_UWORD(line_ptr, utmp)
69202	    dir_index = (Dwarf_Sword) utmp;
69203	if (dir_index > directories_count) {
69204	    _dwarf_error(dbg, error, DW_DLE_DIR_INDEX_BAD);
69205	    return (DW_DLV_ERROR);
69206	}
69207
69208	if (dir_index == 0)
69209	    dir_name = (char *) comp_dir;
69210	else {
69211	    dir_name = (char *) include_directories;
69212	    for (i = 1; i < dir_index; i++)
69213		/* FIX: this is probably very slow: redoing strlen!
69214		   davea 9/94 */
69215		dir_name = dir_name + strlen(dir_name) + 1;
69216	}
69217
69218	/* dir_name can be NULL if there is no DW_AT_comp_dir */
69219	if ((*file_name) == '/' || dir_name == 0)
69220	    full_name = file_name;
69221	else {
69222	    full_name = (char *) _dwarf_get_alloc(dbg, DW_DLA_STRING,
69223						  strlen(dir_name) + 1 +
69224						  strlen(file_name) +
69225						  1);
69226	    if (full_name == NULL) {
69227		_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
69228		return (DW_DLV_ERROR);
69229	    }
69230
69231	    strcpy(full_name, dir_name);
69232	    strcat(full_name, "/");
69233	    strcat(full_name, file_name);
69234	}
69235
69236	/* Skip over time of last modification. */
69237	_dwarf_decode_u_leb128(line_ptr, &leb128_length);
69238	line_ptr = line_ptr + leb128_length;
69239
69240	/* Skip over file length. */
69241	_dwarf_decode_u_leb128(line_ptr, &leb128_length);
69242	line_ptr = line_ptr + leb128_length;
69243
69244	curr_chain =
69245	    (Dwarf_Chain) _dwarf_get_alloc(dbg, DW_DLA_CHAIN, 1);
69246	if (curr_chain == NULL) {
69247	    _dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
69248	    return (DW_DLV_ERROR);
69249	}
69250
69251	curr_chain->ch_item = full_name;
69252
69253	if (head_chain == NULL)
69254	    head_chain = prev_chain = curr_chain;
69255	else {
69256	    prev_chain->ch_next = curr_chain;
69257	    prev_chain = curr_chain;
69258	}
69259
69260	file_count++;
69261    }
69262    line_ptr++;
69263
69264    if (line_ptr != check_line_ptr + prologue_length) {
69265	_dwarf_error(dbg, error, DW_DLE_LINE_PROLOG_LENGTH_BAD);
69266	return (DW_DLV_ERROR);
69267    }
69268
69269    if (file_count == 0) {
69270	*srcfiles = NULL;
69271	*srcfilecount = 0;
69272	return (DW_DLV_NO_ENTRY);
69273    }
69274
69275    ret_files = (char **)
69276	_dwarf_get_alloc(dbg, DW_DLA_LIST, file_count);
69277    if (ret_files == NULL) {
69278	_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
69279	return (DW_DLV_ERROR);
69280    }
69281
69282    curr_chain = head_chain;
69283    for (i = 0; i < file_count; i++) {
69284	*(ret_files + i) = curr_chain->ch_item;
69285	prev_chain = curr_chain;
69286	curr_chain = curr_chain->ch_next;
69287	dwarf_dealloc(dbg, prev_chain, DW_DLA_CHAIN);
69288    }
69289
69290    *srcfiles = ret_files;
69291    *srcfilecount = file_count;
69292    return (DW_DLV_OK);
69293}
69294
69295
69296/*
69297	return DW_DLV_OK if ok. else DW_DLV_NO_ENTRY or DW_DLV_ERROR
69298*/
69299int
69300_dwarf_internal_srclines(Dwarf_Die die,
69301			 Dwarf_Line ** linebuf,
69302			 Dwarf_Signed * count,
69303			 Dwarf_Bool doaddrs,
69304			 Dwarf_Bool dolines, Dwarf_Error * error)
69305{
69306    /*
69307       This pointer is used to scan the portion of the .debug_line
69308       section for the current cu. */
69309    Dwarf_Small *line_ptr;
69310
69311    /*
69312       This points to the last byte of the .debug_line portion for the
69313       current cu. */
69314    Dwarf_Small *line_ptr_end;
69315
69316    /*
69317       This points to the end of the statement program prologue for the
69318       current cu, and serves to check that the prologue was correctly
69319       decoded. */
69320    Dwarf_Small *check_line_ptr;
69321
69322    /*
69323       Pointer to a DW_AT_stmt_list attribute in case it exists in the
69324       die. */
69325    Dwarf_Attribute stmt_list_attr;
69326
69327    /* Pointer to DW_AT_comp_dir attribute in die. */
69328    Dwarf_Attribute comp_dir_attr;
69329
69330    /* Pointer to name of compilation directory. */
69331    Dwarf_Small *comp_dir = NULL;
69332
69333    /*
69334       Offset into .debug_line specified by a DW_AT_stmt_list
69335       attribute. */
69336    Dwarf_Unsigned line_offset;
69337
69338    /* These are the fields of the statement program header. */
69339    Dwarf_Unsigned total_length;
69340    Dwarf_Half version;
69341    Dwarf_Unsigned prologue_length;
69342    Dwarf_Small minimum_instruction_length;
69343    Dwarf_Small default_is_stmt;
69344    Dwarf_Sbyte line_base;
69345    Dwarf_Small line_range;
69346    Dwarf_Small special_opcode_base;
69347
69348    Dwarf_Small *opcode_length;
69349    Dwarf_Small *include_directories;
69350    Dwarf_File_Entry file_entries;
69351
69352    /* These are the state machine state variables. */
69353    Dwarf_Addr address;
69354    Dwarf_Word file;
69355    Dwarf_Word line;
69356    Dwarf_Word column;
69357    Dwarf_Bool is_stmt;
69358    Dwarf_Bool basic_block;
69359    Dwarf_Bool end_sequence;
69360
69361    /*
69362       These pointers are used to build the list of files names by
69363       this cu.  cur_file_entry points to the file name being added,
69364       and prev_file_entry to the previous one. */
69365    Dwarf_File_Entry cur_file_entry, prev_file_entry;
69366
69367    Dwarf_Sword i, file_entry_count, include_directories_count;
69368
69369    /*
69370       This is the current opcode read from the statement program. */
69371    Dwarf_Small opcode;
69372
69373    /*
69374       Pointer to a Dwarf_Line_Context_s structure that contains the
69375       context such as file names and include directories for the set
69376       of lines being generated. */
69377    Dwarf_Line_Context line_context;
69378
69379    /*
69380       This is a pointer to the current line being added to the line
69381       matrix. */
69382    Dwarf_Line curr_line;
69383
69384    /*
69385       These variables are used to decode leb128 numbers. Leb128_num
69386       holds the decoded number, and leb128_length is its length in
69387       bytes. */
69388    Dwarf_Word leb128_num;
69389    Dwarf_Word leb128_length;
69390    Dwarf_Sword advance_line;
69391
69392    /*
69393       This is the operand of the latest fixed_advance_pc extended
69394       opcode. */
69395    Dwarf_Half fixed_advance_pc;
69396
69397    /*
69398       Counts the number of lines in the line matrix. */
69399    Dwarf_Sword line_count = 0;
69400
69401    /* This is the length of an extended opcode instr.  */
69402    Dwarf_Word instr_length;
69403    Dwarf_Small ext_opcode;
69404
69405    /*
69406       Used to chain together pointers to line table entries that are
69407       later used to create a block of Dwarf_Line entries. */
69408    Dwarf_Chain chain_line, head_chain = NULL, curr_chain;
69409
69410    /*
69411       This points to a block of Dwarf_Lines, a pointer to which is
69412       returned in linebuf. */
69413    Dwarf_Line *block_line;
69414
69415    /* The Dwarf_Debug this die belongs to. */
69416    Dwarf_Debug dbg;
69417    int resattr;
69418    int lres;
69419    int local_length_size = 0;
69420    /*REFERENCED*/ /* Not used in this instance of the macro */
69421    int local_extension_size = 0;
69422
69423    int res;
69424
69425    /* ***** BEGIN CODE ***** */
69426
69427    if (error != NULL)
69428	*error = NULL;
69429
69430    CHECK_DIE(die, DW_DLV_ERROR)
69431	dbg = die->di_cu_context->cc_dbg;
69432
69433    res =
69434       _dwarf_load_section(dbg,
69435		           dbg->de_debug_line_index,
69436			   &dbg->de_debug_line,
69437			   error);
69438    if (res != DW_DLV_OK) {
69439	return res;
69440    }
69441
69442    resattr = dwarf_attr(die, DW_AT_stmt_list, &stmt_list_attr, error);
69443    if (resattr != DW_DLV_OK) {
69444	return resattr;
69445    }
69446
69447
69448
69449    lres = dwarf_formudata(stmt_list_attr, &line_offset, error);
69450    if (lres != DW_DLV_OK) {
69451	return lres;
69452    }
69453
69454    if (line_offset >= dbg->de_debug_line_size) {
69455	_dwarf_error(dbg, error, DW_DLE_LINE_OFFSET_BAD);
69456	return (DW_DLV_ERROR);
69457    }
69458    line_ptr = dbg->de_debug_line + line_offset;
69459    dwarf_dealloc(dbg, stmt_list_attr, DW_DLA_ATTR);
69460
69461    /*
69462       If die has DW_AT_comp_dir attribute, get the string that names
69463       the compilation directory. */
69464    resattr = dwarf_attr(die, DW_AT_comp_dir, &comp_dir_attr, error);
69465    if (resattr == DW_DLV_ERROR) {
69466	return resattr;
69467    }
69468    if (resattr == DW_DLV_OK) {
69469	int cres;
69470	char *cdir;
69471
69472	cres = dwarf_formstring(comp_dir_attr, &cdir, error);
69473	if (cres == DW_DLV_ERROR) {
69474	    return cres;
69475	} else if (cres == DW_DLV_OK) {
69476	    comp_dir = (Dwarf_Small *) cdir;
69477	}
69478    }
69479    if (resattr == DW_DLV_OK) {
69480	dwarf_dealloc(dbg, comp_dir_attr, DW_DLA_ATTR);
69481    }
69482
69483    /*
69484       Following is a straightforward decoding of the statement
69485       program prologue information. */
69486    /* READ_AREA_LENGTH updates line_ptr for consumed bytes */
69487    READ_AREA_LENGTH(dbg, total_length, Dwarf_Unsigned,
69488		     line_ptr, local_length_size, local_extension_size);
69489
69490    line_ptr_end = line_ptr + total_length;
69491    if (line_ptr_end > dbg->de_debug_line + dbg->de_debug_line_size) {
69492	_dwarf_error(dbg, error, DW_DLE_DEBUG_LINE_LENGTH_BAD);
69493	return (DW_DLV_ERROR);
69494    }
69495
69496    READ_UNALIGNED(dbg, version, Dwarf_Half,
69497		   line_ptr, sizeof(Dwarf_Half));
69498    line_ptr += sizeof(Dwarf_Half);
69499    if (version != CURRENT_VERSION_STAMP) {
69500	_dwarf_error(dbg, error, DW_DLE_VERSION_STAMP_ERROR);
69501	return (DW_DLV_ERROR);
69502    }
69503
69504    READ_UNALIGNED(dbg, prologue_length, Dwarf_Unsigned,
69505		   line_ptr, local_length_size);
69506    line_ptr += local_length_size;
69507    check_line_ptr = line_ptr;
69508
69509    minimum_instruction_length = *(Dwarf_Small *) line_ptr;
69510    line_ptr = line_ptr + sizeof(Dwarf_Small);
69511
69512    default_is_stmt = *(Dwarf_Small *) line_ptr;
69513    line_ptr = line_ptr + sizeof(Dwarf_Small);
69514
69515    line_base = *(Dwarf_Sbyte *) line_ptr;
69516    line_ptr = line_ptr + sizeof(Dwarf_Sbyte);
69517
69518    line_range = *(Dwarf_Small *) line_ptr;
69519    line_ptr = line_ptr + sizeof(Dwarf_Small);
69520
69521    special_opcode_base = *(Dwarf_Small *) line_ptr;
69522    line_ptr = line_ptr + sizeof(Dwarf_Small);
69523
69524    opcode_length = (Dwarf_Small *)
69525	alloca(sizeof(Dwarf_Small) * special_opcode_base);
69526    for (i = 1; i < special_opcode_base; i++) {
69527	opcode_length[i] = *(Dwarf_Small *) line_ptr;
69528	line_ptr = line_ptr + sizeof(Dwarf_Small);
69529    }
69530
69531    include_directories_count = 0;
69532    include_directories = line_ptr;
69533    while ((*(char *) line_ptr) != '\0') {
69534	line_ptr = line_ptr + strlen((char *) line_ptr) + 1;
69535	include_directories_count++;
69536    }
69537    line_ptr++;
69538
69539    file_entry_count = 0;
69540    file_entries = prev_file_entry = NULL;
69541    while (*(char *) line_ptr != '\0') {
69542
69543	cur_file_entry = (Dwarf_File_Entry)
69544	    _dwarf_get_alloc(dbg, DW_DLA_FILE_ENTRY, 1);
69545	if (cur_file_entry == NULL) {
69546	    _dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
69547	    return (DW_DLV_ERROR);
69548	}
69549
69550	cur_file_entry->fi_file_name = (Dwarf_Small *) line_ptr;
69551	line_ptr = line_ptr + strlen((char *) line_ptr) + 1;
69552
69553	cur_file_entry->fi_dir_index =
69554	    (Dwarf_Sword) _dwarf_decode_u_leb128(line_ptr,
69555						 &leb128_length);
69556	line_ptr = line_ptr + leb128_length;
69557
69558	cur_file_entry->fi_time_last_mod =
69559	    _dwarf_decode_u_leb128(line_ptr, &leb128_length);
69560	line_ptr = line_ptr + leb128_length;
69561
69562	cur_file_entry->fi_file_length =
69563	    _dwarf_decode_u_leb128(line_ptr, &leb128_length);
69564	line_ptr = line_ptr + leb128_length;
69565
69566	if (file_entries == NULL)
69567	    file_entries = cur_file_entry;
69568	else
69569	    prev_file_entry->fi_next = cur_file_entry;
69570	prev_file_entry = cur_file_entry;
69571
69572	file_entry_count++;
69573    }
69574    line_ptr++;
69575
69576    if (line_ptr != check_line_ptr + prologue_length) {
69577	_dwarf_error(dbg, error, DW_DLE_LINE_PROLOG_LENGTH_BAD);
69578	return (DW_DLV_ERROR);
69579    }
69580
69581    /* Set up context structure for this set of lines. */
69582    line_context = (Dwarf_Line_Context)
69583	_dwarf_get_alloc(dbg, DW_DLA_LINE_CONTEXT, 1);
69584    if (line_context == NULL) {
69585	_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
69586	return (DW_DLV_ERROR);
69587    }
69588
69589    /* Initialize the state machine.  */
69590    address = 0;
69591    file = 1;
69592    line = 1;
69593    column = 0;
69594    is_stmt = default_is_stmt;
69595    basic_block = false;
69596    end_sequence = false;
69597
69598    /* Start of statement program.  */
69599    while (line_ptr < line_ptr_end) {
69600	int type;
69601
69602	opcode = *(Dwarf_Small *) line_ptr;
69603	line_ptr++;
69604
69605
69606	/* 'type' is the output */
69607	WHAT_IS_OPCODE(type, opcode, special_opcode_base,
69608		       opcode_length, line_ptr);
69609
69610
69611
69612	if (type == LOP_DISCARD) {
69613	    /* do nothing, necessary ops done */
69614	} else if (type == LOP_SPECIAL) {
69615	    /* This op code is a special op in the object, no matter
69616	       that it might fall into the standard op range in this
69617	       compile Thatis, these are special opcodes between
69618	       special_opcode_base and MAX_LINE_OP_CODE.  (including
69619	       special_opcode_base and MAX_LINE_OP_CODE) */
69620
69621	    opcode = opcode - special_opcode_base;
69622	    address = address + minimum_instruction_length *
69623		(opcode / line_range);
69624	    line = line + line_base + opcode % line_range;
69625
69626	    if (dolines) {
69627		curr_line =
69628		    (Dwarf_Line) _dwarf_get_alloc(dbg, DW_DLA_LINE, 1);
69629		if (curr_line == NULL) {
69630		    _dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
69631		    return (DW_DLV_ERROR);
69632		}
69633
69634		curr_line->li_address = address;
69635		curr_line->li_addr_line.li_l_data.li_file =
69636		    (Dwarf_Sword) file;
69637		curr_line->li_addr_line.li_l_data.li_line =
69638		    (Dwarf_Sword) line;
69639		curr_line->li_addr_line.li_l_data.li_column =
69640		    (Dwarf_Half) column;
69641		curr_line->li_addr_line.li_l_data.li_is_stmt = is_stmt;
69642		curr_line->li_addr_line.li_l_data.li_basic_block =
69643		    basic_block;
69644		curr_line->li_addr_line.li_l_data.li_end_sequence =
69645		    end_sequence;
69646		curr_line->li_context = line_context;
69647		line_count++;
69648
69649		chain_line = (Dwarf_Chain)
69650		    _dwarf_get_alloc(dbg, DW_DLA_CHAIN, 1);
69651		if (chain_line == NULL) {
69652		    _dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
69653		    return (DW_DLV_ERROR);
69654		}
69655		chain_line->ch_item = curr_line;
69656
69657		if (head_chain == NULL)
69658		    head_chain = curr_chain = chain_line;
69659		else {
69660		    curr_chain->ch_next = chain_line;
69661		    curr_chain = chain_line;
69662		}
69663	    }
69664
69665	    basic_block = false;
69666	} else if (type == LOP_STANDARD) {
69667	    switch (opcode) {
69668
69669	    case DW_LNS_copy:{
69670		    if (opcode_length[DW_LNS_copy] != 0) {
69671			_dwarf_error(dbg, error,
69672				     DW_DLE_LINE_NUM_OPERANDS_BAD);
69673			return (DW_DLV_ERROR);
69674		    }
69675
69676		    if (dolines) {
69677
69678			curr_line =
69679			    (Dwarf_Line) _dwarf_get_alloc(dbg,
69680							  DW_DLA_LINE,
69681							  1);
69682			if (curr_line == NULL) {
69683			    _dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
69684			    return (DW_DLV_ERROR);
69685			}
69686
69687			curr_line->li_address = address;
69688			curr_line->li_addr_line.li_l_data.li_file =
69689			    (Dwarf_Sword) file;
69690			curr_line->li_addr_line.li_l_data.li_line =
69691			    (Dwarf_Sword) line;
69692			curr_line->li_addr_line.li_l_data.li_column =
69693			    (Dwarf_Half) column;
69694			curr_line->li_addr_line.li_l_data.li_is_stmt =
69695			    is_stmt;
69696			curr_line->li_addr_line.li_l_data.
69697			    li_basic_block = basic_block;
69698			curr_line->li_addr_line.li_l_data.
69699			    li_end_sequence = end_sequence;
69700			curr_line->li_context = line_context;
69701			line_count++;
69702
69703			chain_line = (Dwarf_Chain)
69704			    _dwarf_get_alloc(dbg, DW_DLA_CHAIN, 1);
69705			if (chain_line == NULL) {
69706			    _dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
69707			    return (DW_DLV_ERROR);
69708			}
69709			chain_line->ch_item = curr_line;
69710			if (head_chain == NULL)
69711			    head_chain = curr_chain = chain_line;
69712			else {
69713			    curr_chain->ch_next = chain_line;
69714			    curr_chain = chain_line;
69715			}
69716		    }
69717
69718		    basic_block = false;
69719		    break;
69720		}
69721
69722	    case DW_LNS_advance_pc:{
69723		    Dwarf_Unsigned utmp2;
69724
69725		    if (opcode_length[DW_LNS_advance_pc] != 1) {
69726			_dwarf_error(dbg, error,
69727				     DW_DLE_LINE_NUM_OPERANDS_BAD);
69728			return (DW_DLV_ERROR);
69729		    }
69730
69731		    DECODE_LEB128_UWORD(line_ptr, utmp2)
69732			leb128_num = (Dwarf_Word) utmp2;
69733		    address =
69734			address +
69735			minimum_instruction_length * leb128_num;
69736		    break;
69737		}
69738
69739	    case DW_LNS_advance_line:{
69740		    Dwarf_Signed stmp;
69741
69742		    if (opcode_length[DW_LNS_advance_line] != 1) {
69743			_dwarf_error(dbg, error,
69744				     DW_DLE_LINE_NUM_OPERANDS_BAD);
69745			return (DW_DLV_ERROR);
69746		    }
69747
69748		    DECODE_LEB128_SWORD(line_ptr, stmp)
69749			advance_line = (Dwarf_Sword) stmp;
69750		    line = line + advance_line;
69751		    break;
69752		}
69753
69754	    case DW_LNS_set_file:{
69755		    Dwarf_Unsigned utmp2;
69756
69757		    if (opcode_length[DW_LNS_set_file] != 1) {
69758			_dwarf_error(dbg, error,
69759				     DW_DLE_LINE_NUM_OPERANDS_BAD);
69760			return (DW_DLV_ERROR);
69761		    }
69762
69763		    DECODE_LEB128_UWORD(line_ptr, utmp2)
69764			file = (Dwarf_Word) utmp2;
69765		    break;
69766		}
69767
69768	    case DW_LNS_set_column:{
69769		    Dwarf_Unsigned utmp2;
69770
69771		    if (opcode_length[DW_LNS_set_column] != 1) {
69772			_dwarf_error(dbg, error,
69773				     DW_DLE_LINE_NUM_OPERANDS_BAD);
69774			return (DW_DLV_ERROR);
69775		    }
69776
69777		    DECODE_LEB128_UWORD(line_ptr, utmp2)
69778			column = (Dwarf_Word) utmp2;
69779		    break;
69780		}
69781
69782	    case DW_LNS_negate_stmt:{
69783		    if (opcode_length[DW_LNS_negate_stmt] != 0) {
69784			_dwarf_error(dbg, error,
69785				     DW_DLE_LINE_NUM_OPERANDS_BAD);
69786			return (DW_DLV_ERROR);
69787		    }
69788
69789		    is_stmt = !is_stmt;
69790		    break;
69791		}
69792
69793	    case DW_LNS_set_basic_block:{
69794		    if (opcode_length[DW_LNS_set_basic_block] != 0) {
69795			_dwarf_error(dbg, error,
69796				     DW_DLE_LINE_NUM_OPERANDS_BAD);
69797			return (DW_DLV_ERROR);
69798		    }
69799
69800		    basic_block = true;
69801		    break;
69802		}
69803
69804	    case DW_LNS_const_add_pc:{
69805		    opcode = MAX_LINE_OP_CODE - special_opcode_base;
69806		    address = address + minimum_instruction_length *
69807			(opcode / line_range);
69808
69809		    break;
69810		}
69811
69812	    case DW_LNS_fixed_advance_pc:{
69813		    if (opcode_length[DW_LNS_fixed_advance_pc] != 1) {
69814			_dwarf_error(dbg, error,
69815				     DW_DLE_LINE_NUM_OPERANDS_BAD);
69816			return (DW_DLV_ERROR);
69817		    }
69818
69819		    READ_UNALIGNED(dbg, fixed_advance_pc, Dwarf_Half,
69820				   line_ptr, sizeof(Dwarf_Half));
69821		    line_ptr += sizeof(Dwarf_Half);
69822		    address = address + fixed_advance_pc;
69823		    break;
69824		}
69825	    }
69826
69827	} else if (type == LOP_EXTENDED) {
69828	    Dwarf_Unsigned utmp3;
69829
69830	    DECODE_LEB128_UWORD(line_ptr, utmp3)
69831		instr_length = (Dwarf_Word) utmp3;
69832	    /* Dwarf_Small is a ubyte and the extended opcode
69833	       is a ubyte, though not stated as clearly in
69834	       the 2.0.0 spec as one might hope.
69835	    */
69836	    ext_opcode = *(Dwarf_Small *) line_ptr;
69837	    line_ptr++;
69838	    switch (ext_opcode) {
69839
69840	    case DW_LNE_end_sequence:{
69841		    end_sequence = true;
69842
69843		    if (dolines) {
69844			curr_line = (Dwarf_Line)
69845			    _dwarf_get_alloc(dbg, DW_DLA_LINE, 1);
69846			if (curr_line == NULL) {
69847			    _dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
69848			    return (DW_DLV_ERROR);
69849			}
69850
69851			curr_line->li_address = address;
69852			curr_line->li_addr_line.li_l_data.li_file =
69853			    (Dwarf_Sword) file;
69854			curr_line->li_addr_line.li_l_data.li_line =
69855			    (Dwarf_Sword) line;
69856			curr_line->li_addr_line.li_l_data.li_column =
69857			    (Dwarf_Half) column;
69858			curr_line->li_addr_line.li_l_data.li_is_stmt =
69859			    default_is_stmt;
69860			curr_line->li_addr_line.li_l_data.
69861			    li_basic_block = basic_block;
69862			curr_line->li_addr_line.li_l_data.
69863			    li_end_sequence = end_sequence;
69864			curr_line->li_context = line_context;
69865			line_count++;
69866
69867			chain_line = (Dwarf_Chain)
69868			    _dwarf_get_alloc(dbg, DW_DLA_CHAIN, 1);
69869			if (chain_line == NULL) {
69870			    _dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
69871			    return (DW_DLV_ERROR);
69872			}
69873			chain_line->ch_item = curr_line;
69874
69875			if (head_chain == NULL)
69876			    head_chain = curr_chain = chain_line;
69877			else {
69878			    curr_chain->ch_next = chain_line;
69879			    curr_chain = chain_line;
69880			}
69881		    }
69882
69883		    address = 0;
69884		    file = 1;
69885		    line = 1;
69886		    column = 0;
69887		    is_stmt = default_is_stmt;
69888		    basic_block = false;
69889		    end_sequence = false;
69890
69891		    break;
69892		}
69893
69894	    case DW_LNE_set_address:{
69895		    if (instr_length - 1 == dbg->de_pointer_size) {
69896			READ_UNALIGNED(dbg, address, Dwarf_Addr,
69897				       line_ptr, dbg->de_pointer_size);
69898			if (doaddrs) {
69899			    curr_line =
69900				(Dwarf_Line) _dwarf_get_alloc(dbg,
69901							      DW_DLA_LINE,
69902							      1);
69903			    if (curr_line == NULL) {
69904				_dwarf_error(dbg, error,
69905					     DW_DLE_ALLOC_FAIL);
69906				return (DW_DLV_ERROR);
69907			    }
69908
69909			    curr_line->li_address = address;
69910			    curr_line->li_addr_line.li_offset =
69911				line_ptr - dbg->de_debug_line;
69912
69913			    line_count++;
69914
69915			    chain_line = (Dwarf_Chain)
69916				_dwarf_get_alloc(dbg, DW_DLA_CHAIN, 1);
69917			    if (chain_line == NULL) {
69918				_dwarf_error(dbg, error,
69919					     DW_DLE_ALLOC_FAIL);
69920				return (DW_DLV_ERROR);
69921			    }
69922			    chain_line->ch_item = curr_line;
69923
69924			    if (head_chain == NULL)
69925				head_chain = curr_chain = chain_line;
69926			    else {
69927				curr_chain->ch_next = chain_line;
69928				curr_chain = chain_line;
69929			    }
69930			}
69931
69932			line_ptr += dbg->de_pointer_size;
69933		    } else {
69934			_dwarf_error(dbg, error,
69935				     DW_DLE_LINE_SET_ADDR_ERROR);
69936			return (DW_DLV_ERROR);
69937		    }
69938
69939		    break;
69940		}
69941
69942	    case DW_LNE_define_file:{
69943
69944		    if (dolines) {
69945			cur_file_entry = (Dwarf_File_Entry)
69946			    _dwarf_get_alloc(dbg, DW_DLA_FILE_ENTRY, 1);
69947			if (cur_file_entry == NULL) {
69948			    _dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
69949			    return (DW_DLV_ERROR);
69950			}
69951
69952			cur_file_entry->fi_file_name =
69953			    (Dwarf_Small *) line_ptr;
69954			line_ptr =
69955			    line_ptr + strlen((char *) line_ptr) + 1;
69956
69957			cur_file_entry->fi_dir_index =
69958			    (Dwarf_Sword)
69959			    _dwarf_decode_u_leb128(line_ptr,
69960						   &leb128_length);
69961			line_ptr = line_ptr + leb128_length;
69962
69963			cur_file_entry->fi_time_last_mod =
69964			    _dwarf_decode_u_leb128(line_ptr,
69965						   &leb128_length);
69966			line_ptr = line_ptr + leb128_length;
69967
69968			cur_file_entry->fi_file_length =
69969			    _dwarf_decode_u_leb128(line_ptr,
69970						   &leb128_length);
69971			line_ptr = line_ptr + leb128_length;
69972
69973			if (file_entries == NULL)
69974			    file_entries = cur_file_entry;
69975			else
69976			    prev_file_entry->fi_next = cur_file_entry;
69977			prev_file_entry = cur_file_entry;
69978
69979			file_entry_count++;
69980		    }
69981		    break;
69982		}
69983
69984	    default:{
69985		    _dwarf_error(dbg, error,
69986				 DW_DLE_LINE_EXT_OPCODE_BAD);
69987		    return (DW_DLV_ERROR);
69988		}
69989	    }
69990
69991	}
69992    }
69993
69994    block_line = (Dwarf_Line *)
69995	_dwarf_get_alloc(dbg, DW_DLA_LIST, line_count);
69996    if (block_line == NULL) {
69997	_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
69998	return (DW_DLV_ERROR);
69999    }
70000
70001    curr_chain = head_chain;
70002    for (i = 0; i < line_count; i++) {
70003	*(block_line + i) = curr_chain->ch_item;
70004	head_chain = curr_chain;
70005	curr_chain = curr_chain->ch_next;
70006	dwarf_dealloc(dbg, head_chain, DW_DLA_CHAIN);
70007    }
70008
70009    line_context->lc_file_entries = file_entries;
70010    line_context->lc_file_entry_count = file_entry_count;
70011    line_context->lc_include_directories = include_directories;
70012    line_context->lc_include_directories_count =
70013	include_directories_count;
70014    line_context->lc_line_count = line_count;
70015    line_context->lc_compilation_directory = comp_dir;
70016    line_context->lc_dbg = dbg;
70017    *count = line_count;
70018
70019    *linebuf = block_line;
70020    return (DW_DLV_OK);
70021}
70022
70023int
70024dwarf_srclines(Dwarf_Die die,
70025	       Dwarf_Line ** linebuf,
70026	       Dwarf_Signed * linecount, Dwarf_Error * error)
70027{
70028    Dwarf_Signed count;
70029    int res;
70030
70031    res = _dwarf_internal_srclines(die, linebuf,
70032				   &count, /* addrlist= */ false,
70033				   /* linelist= */ true, error);
70034    if (res != DW_DLV_OK) {
70035	return res;
70036    }
70037    *linecount = count;
70038    return res;
70039}
70040
70041
70042
70043
70044
70045int
70046dwarf_linebeginstatement(Dwarf_Line line,
70047			 Dwarf_Bool * return_bool, Dwarf_Error * error)
70048{
70049    if (line == NULL || return_bool == 0) {
70050	_dwarf_error(NULL, error, DW_DLE_DWARF_LINE_NULL);
70051	return (DW_DLV_ERROR);
70052    }
70053
70054    *return_bool = (line->li_addr_line.li_l_data.li_is_stmt);
70055    return DW_DLV_OK;
70056}
70057
70058int
70059dwarf_lineendsequence(Dwarf_Line line,
70060		      Dwarf_Bool * return_bool, Dwarf_Error * error)
70061{
70062    if (line == NULL) {
70063	_dwarf_error(NULL, error, DW_DLE_DWARF_LINE_NULL);
70064	return (DW_DLV_ERROR);
70065    }
70066
70067    *return_bool = (line->li_addr_line.li_l_data.li_end_sequence);
70068    return DW_DLV_OK;
70069}
70070
70071
70072int
70073dwarf_lineno(Dwarf_Line line,
70074	     Dwarf_Unsigned * ret_lineno, Dwarf_Error * error)
70075{
70076    if (line == NULL || ret_lineno == 0) {
70077	_dwarf_error(NULL, error, DW_DLE_DWARF_LINE_NULL);
70078	return (DW_DLV_ERROR);
70079    }
70080
70081    *ret_lineno = (line->li_addr_line.li_l_data.li_line);
70082    return DW_DLV_OK;
70083}
70084
70085
70086int
70087dwarf_lineaddr(Dwarf_Line line,
70088	       Dwarf_Addr * ret_lineaddr, Dwarf_Error * error)
70089{
70090    if (line == NULL || ret_lineaddr == 0) {
70091	_dwarf_error(NULL, error, DW_DLE_DWARF_LINE_NULL);
70092	return (DW_DLV_ERROR);
70093    }
70094
70095    *ret_lineaddr = (line->li_address);
70096    return DW_DLV_OK;
70097}
70098
70099
70100int
70101dwarf_lineoff(Dwarf_Line line,
70102	      Dwarf_Signed * ret_lineoff, Dwarf_Error * error)
70103{
70104    if (line == NULL || ret_lineoff == 0) {
70105	_dwarf_error(NULL, error, DW_DLE_DWARF_LINE_NULL);
70106	return (DW_DLV_ERROR);
70107    }
70108
70109    *ret_lineoff =
70110	(line->li_addr_line.li_l_data.li_column ==
70111	 0 ? -1 : line->li_addr_line.li_l_data.li_column);
70112    return DW_DLV_OK;
70113}
70114
70115
70116int
70117dwarf_linesrc(Dwarf_Line line, char **ret_linesrc, Dwarf_Error * error)
70118{
70119    Dwarf_Signed i;
70120    Dwarf_File_Entry file_entry;
70121    Dwarf_Small *name_buffer;
70122    Dwarf_Small *include_directories;
70123    Dwarf_Debug dbg;
70124    unsigned int comp_dir_len;
70125
70126    if (line == NULL) {
70127	_dwarf_error(NULL, error, DW_DLE_DWARF_LINE_NULL);
70128	return (DW_DLV_ERROR);
70129    }
70130
70131    if (line->li_context == NULL) {
70132	_dwarf_error(NULL, error, DW_DLE_LINE_CONTEXT_NULL);
70133	return (DW_DLV_ERROR);
70134    }
70135    dbg = line->li_context->lc_dbg;
70136
70137    if (line->li_addr_line.li_l_data.li_file >
70138	line->li_context->lc_file_entry_count) {
70139	_dwarf_error(dbg, error, DW_DLE_LINE_FILE_NUM_BAD);
70140	return (DW_DLV_ERROR);
70141    }
70142
70143    file_entry = line->li_context->lc_file_entries;
70144    for (i = line->li_addr_line.li_l_data.li_file - 1; i > 0; i--)
70145	file_entry = file_entry->fi_next;
70146
70147    if (file_entry->fi_file_name == NULL) {
70148	_dwarf_error(dbg, error, DW_DLE_NO_FILE_NAME);
70149	return (DW_DLV_ERROR);
70150    }
70151
70152    if (*(char *) file_entry->fi_file_name == '/') {
70153	*ret_linesrc = ((char *) file_entry->fi_file_name);
70154	return DW_DLV_OK;
70155    }
70156
70157    if (file_entry->fi_dir_index == 0) {
70158
70159	/* dir_index of 0 means that the compilation was in the
70160	   'current directory of compilation' */
70161	if (line->li_context->lc_compilation_directory == NULL) {
70162	    /* we don't actually *have* a current directory of
70163	       compilation: DW_AT_comp_dir was not present Rather than
70164	       emitting DW_DLE_NO_COMP_DIR lets just make an empty name
70165	       here. In other words, do the best we can with what we do
70166	       have instead of reporting an error. _dwarf_error(dbg,
70167	       error, DW_DLE_NO_COMP_DIR); return(DW_DLV_ERROR); */
70168	    comp_dir_len = 0;
70169	} else {
70170	    comp_dir_len = strlen((char *)
70171				  (line->li_context->
70172				   lc_compilation_directory));
70173	}
70174
70175	name_buffer =
70176	    _dwarf_get_alloc(line->li_context->lc_dbg, DW_DLA_STRING,
70177			     comp_dir_len + 1 +
70178			     strlen((char *) file_entry->fi_file_name) +
70179			     1);
70180	if (name_buffer == NULL) {
70181	    _dwarf_error(line->li_context->lc_dbg, error,
70182			 DW_DLE_ALLOC_FAIL);
70183	    return (DW_DLV_ERROR);
70184	}
70185
70186	if (comp_dir_len > 0) {
70187	    /* if comp_dir_len is 0 we do not want to put a / in front
70188	       of the fi_file_name as we just don't know anything. */
70189	    strcpy((char *) name_buffer,
70190		   (char *) (line->li_context->
70191			     lc_compilation_directory));
70192	    strcat((char *) name_buffer, "/");
70193	}
70194	strcat((char *) name_buffer, (char *) file_entry->fi_file_name);
70195	*ret_linesrc = ((char *) name_buffer);
70196	return DW_DLV_OK;
70197    }
70198
70199    if (file_entry->fi_dir_index >
70200	line->li_context->lc_include_directories_count) {
70201	_dwarf_error(dbg, error, DW_DLE_INCL_DIR_NUM_BAD);
70202	return (DW_DLV_ERROR);
70203    }
70204
70205    include_directories = line->li_context->lc_include_directories;
70206    for (i = file_entry->fi_dir_index - 1; i > 0; i--)
70207	include_directories += strlen((char *) include_directories) + 1;
70208
70209    if (line->li_context->lc_compilation_directory) {
70210	comp_dir_len = strlen((char *)
70211			      (line->li_context->
70212			       lc_compilation_directory));
70213    } else {
70214	/* No DW_AT_comp_dir present. Do the best we can without it. */
70215	comp_dir_len = 0;
70216    }
70217
70218    name_buffer = _dwarf_get_alloc(dbg, DW_DLA_STRING,
70219				   (*include_directories == '/' ?
70220				    0 : comp_dir_len + 1) +
70221				   strlen((char *) include_directories)
70222				   + 1 +
70223				   strlen((char *) file_entry->
70224					  fi_file_name) + 1);
70225    if (name_buffer == NULL) {
70226	_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
70227	return (DW_DLV_ERROR);
70228    }
70229
70230    if (*include_directories != '/') {
70231	if (comp_dir_len > 0) {
70232	    strcpy((char *) name_buffer,
70233		   (char *) line->li_context->lc_compilation_directory);
70234	    /* Who provides the / needed after the compilation
70235	       directory? */
70236	    if (name_buffer[comp_dir_len - 1] != '/') {
70237		/* Here we provide the / separator */
70238		name_buffer[comp_dir_len] = '/';	/* overwrite
70239							   previous nul
70240							   terminator
70241							   with needed
70242							   / */
70243		name_buffer[comp_dir_len + 1] = 0;
70244	    }
70245	}
70246    } else {
70247	strcpy((char *) name_buffer, "");
70248    }
70249    strcat((char *) name_buffer, (char *) include_directories);
70250    strcat((char *) name_buffer, "/");
70251    strcat((char *) name_buffer, (char *) file_entry->fi_file_name);
70252    *ret_linesrc = ((char *) name_buffer);
70253    return DW_DLV_OK;
70254}
70255
70256
70257int
70258dwarf_lineblock(Dwarf_Line line,
70259		Dwarf_Bool * return_bool, Dwarf_Error * error)
70260{
70261    if (line == NULL) {
70262	_dwarf_error(NULL, error, DW_DLE_DWARF_LINE_NULL);
70263	return (DW_DLV_ERROR);
70264    }
70265
70266    *return_bool = (line->li_addr_line.li_l_data.li_basic_block);
70267    return DW_DLV_OK;
70268}
70269
70270
70271#if 0				/* Ignore this.  This needs major
70272				   re-work. */
70273/*
70274    This routine works by looking for exact matches between
70275    the current line address and pc, and crossovers from
70276    from less than pc value to greater than.  At each line
70277    that satisfies the above, it records a pointer to the
70278    line, and the difference between the address and pc.
70279    It then scans these pointers and picks out those with
70280    the smallest difference between pc and address.
70281*/
70282int
70283dwarf_pclines(Dwarf_Debug dbg,
70284	      Dwarf_Addr pc,
70285	      Dwarf_Line ** linebuf,
70286	      Dwarf_Signed slide,
70287	      Dwarf_Signed * linecount, Dwarf_Error * error)
70288{
70289    /*
70290       Scans the line matrix for the current cu to which a pointer
70291       exists in dbg. */
70292    Dwarf_Line line;
70293    Dwarf_Line prev_line;
70294
70295    /*
70296       These flags are for efficiency reasons. Check_line is true
70297       initially, but set false when the address of the current line
70298       is greater than pc.  It is set true only when the address of the
70299       current line falls below pc.  This assumes that addresses
70300       within the same segment increase, and we are only interested in
70301       the switch from a less than pc address to a greater than.
70302       First_line is set true initially, but set false after the first
70303       line is scanned.  This is to prevent looking at the address of
70304       previous line when slide is DW_DLS_BACKWARD, and the first line
70305       is being scanned. */
70306    Dwarf_Bool check_line, first_line;
70307
70308    /*
70309       Diff tracks the smallest difference a line address and the
70310       input pc value. */
70311    Dwarf_Signed diff, i;
70312
70313    /*
70314       For the slide = DW_DLS_BACKWARD case, pc_less is the value of
70315       the address of the line immediately preceding the first line
70316       that has value greater than pc. For the slide = DW_DLS_FORWARD
70317       case, pc_more is the values of address for the first line that
70318       is greater than pc. Diff is the difference between either of
70319       the these values and pc. */
70320    Dwarf_Addr pc_less, pc_more;
70321
70322    /*
70323       Pc_line_buf points to a chain of pointers to lines of which
70324       those with a diff equal to the smallest difference will be
70325       returned. */
70326    Dwarf_Line *pc_line_buf, *pc_line;
70327
70328    /*
70329       Chain_count counts the number of lines in the above chain for
70330       which the diff is equal to the smallest difference This is the
70331       number returned by this routine. */
70332    Dwarf_Signed chain_count;
70333
70334    chain_head = NULL;
70335
70336    check_line = true;
70337    first_line = true;
70338    diff = MAX_LINE_DIFF;
70339
70340    for (i = 0; i < dbg->de_cu_line_count; i++) {
70341
70342	line = *(dbg->de_cu_line_ptr + i);
70343	prev_line = first_line ? NULL : *(dbg->de_cu_line_ptr + i - 1);
70344
70345	if (line->li_address == pc) {
70346	    chain_ptr = (struct chain *)
70347		_dwarf_get_alloc(dbg, DW_DLA_CHAIN, 1);
70348	    if (chain_ptr == NULL) {
70349		_dwarf_error(NULL, error, DW_DLE_ALLOC_FAIL);
70350		return (DW_DLV_ERROR);
70351	    }
70352
70353	    chain_ptr->line = line;
70354	    chain_ptr->diff = diff = 0;
70355	    chain_ptr->next = chain_head;
70356	    chain_head = chain_ptr;
70357	} else
70358	    /*
70359	       Look for crossover from less than pc address to greater
70360	       than. */
70361	if (check_line && line->li_address > pc &&
70362		(first_line ? 0 : prev_line->li_address) < pc)
70363
70364	    if (slide == DW_DLS_BACKWARD && !first_line) {
70365		pc_less = prev_line->li_address;
70366		if (pc - pc_less <= diff) {
70367		    chain_ptr = (struct chain *)
70368			_dwarf_get_alloc(dbg, DW_DLA_CHAIN, 1);
70369		    if (chain_ptr == NULL) {
70370			_dwarf_error(NULL, error, DW_DLE_ALLOC_FAIL);
70371			return (DW_DLV_ERROR);
70372		    }
70373
70374		    chain_ptr->line = prev_line;
70375		    chain_ptr->diff = diff = pc - pc_less;
70376		    chain_ptr->next = chain_head;
70377		    chain_head = chain_ptr;
70378		}
70379		check_line = false;
70380	    } else if (slide == DW_DLS_FORWARD) {
70381		pc_more = line->li_address;
70382		if (pc_more - pc <= diff) {
70383		    chain_ptr = (struct chain *)
70384			_dwarf_get_alloc(dbg, DW_DLA_CHAIN, 1);
70385		    if (chain_ptr == NULL) {
70386			_dwarf_error(NULL, error, DW_DLE_ALLOC_FAIL);
70387			return (DW_DLV_ERROR);
70388		    }
70389
70390		    chain_ptr->line = line;
70391		    chain_ptr->diff = diff = pc_more - pc;
70392		    chain_ptr->next = chain_head;
70393		    chain_head = chain_ptr;
70394		}
70395		check_line = false;
70396	    } else
70397		/* Check addresses only when they go */
70398		/* below pc.  */
70399	    if (line->li_address < pc)
70400		check_line = true;
70401
70402	first_line = false;
70403    }
70404
70405    chain_count = 0;
70406    for (chain_ptr = chain_head; chain_ptr != NULL;
70407	 chain_ptr = chain_ptr->next)
70408	if (chain_ptr->diff == diff)
70409	    chain_count++;
70410
70411    pc_line_buf = pc_line = (Dwarf_Line)
70412	_dwarf_get_alloc(dbg, DW_DLA_LIST, chain_count);
70413    for (chain_ptr = chain_head; chain_ptr != NULL;
70414	 chain_ptr = chain_ptr->next)
70415	if (chain_ptr->diff == diff) {
70416	    *pc_line = chain_ptr->line;
70417	    pc_line++;
70418	}
70419
70420    for (chain_ptr = chain_head; chain_ptr != NULL;) {
70421	chain_head = chain_ptr;
70422	chain_ptr = chain_ptr->next;
70423	dwarf_dealloc(dbg, chain_head, DW_DLA_CHAIN);
70424    }
70425
70426    *linebuf = pc_line_buf;
70427    return (chain_count);
70428}
70429#endif
70430
70431
70432/*
70433	Return DW_DLV_OK or, if error,
70434	DW_DLV_ERROR.
70435
70436	Thru pointers, return 2 arrays and a count
70437	for rqs.
70438*/
70439int
70440_dwarf_line_address_offsets(Dwarf_Debug dbg,
70441			    Dwarf_Die die,
70442			    Dwarf_Addr ** addrs,
70443			    Dwarf_Off ** offs,
70444			    Dwarf_Unsigned * returncount,
70445			    Dwarf_Error * err)
70446{
70447    Dwarf_Addr *laddrs;
70448    Dwarf_Off *loffsets;
70449    Dwarf_Signed lcount;
70450    Dwarf_Signed i;
70451    int res;
70452    Dwarf_Line *linebuf;
70453
70454    res = _dwarf_internal_srclines(die, &linebuf,
70455				   &lcount, /* addrlist= */ true,
70456				   /* linelist= */ false, err);
70457    if (res != DW_DLV_OK) {
70458	return res;
70459    }
70460    laddrs = (Dwarf_Addr *)
70461	_dwarf_get_alloc(dbg, DW_DLA_ADDR, lcount);
70462    if (laddrs == NULL) {
70463	_dwarf_error(dbg, err, DW_DLE_ALLOC_FAIL);
70464	return (DW_DLV_ERROR);
70465    }
70466    loffsets = (Dwarf_Off *)
70467	_dwarf_get_alloc(dbg, DW_DLA_ADDR, lcount);
70468    if (loffsets == NULL) {
70469	_dwarf_error(dbg, err, DW_DLE_ALLOC_FAIL);
70470	return (DW_DLV_ERROR);
70471    }
70472
70473    for (i = 0; i < lcount; i++) {
70474	laddrs[i] = linebuf[i]->li_address;
70475	loffsets[i] = linebuf[i]->li_addr_line.li_offset;
70476	dwarf_dealloc(dbg, linebuf[i], DW_DLA_LINE);
70477    }
70478    dwarf_dealloc(dbg, linebuf, DW_DLA_LIST);
70479    *returncount = lcount;
70480    *offs = loffsets;
70481    *addrs = laddrs;
70482    return DW_DLV_OK;
70483}
704840707010001ad770000812400011e740000000a0000000140206827000022b4000000660000000000000000000000000000001600000000libdwarf/dwarf_line.h�/*
70485
70486  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
70487
70488  This program is free software; you can redistribute it and/or modify it
70489  under the terms of version 2.1 of the GNU Lesser General Public License
70490  as published by the Free Software Foundation.
70491
70492  This program is distributed in the hope that it would be useful, but
70493  WITHOUT ANY WARRANTY; without even the implied warranty of
70494  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
70495
70496  Further, this software is distributed without any warranty that it is
70497  free of the rightful claim of any third person regarding infringement
70498  or the like.  Any license provided herein, whether implied or
70499  otherwise, applies only to this software file.  Patent licenses, if
70500  any, provided herein do not apply to combinations of this program with
70501  other software, or any other product whatsoever.
70502
70503  You should have received a copy of the GNU Lesser General Public
70504  License along with this program; if not, write the Free Software
70505  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
70506  USA.
70507
70508  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
70509  Mountain View, CA 94043, or:
70510
70511  http://www.sgi.com
70512
70513  For further information regarding this notice, see:
70514
70515  http://oss.sgi.com/projects/GenInfo/NoticeExplan
70516
70517*/
70518
70519
70520
70521#define DW_EXTENDED_OPCODE	0
70522
70523/*
70524    This is used as the starting value for an algorithm
70525    to get the minimum difference between 2 values.
70526    UINT_MAX is used as our approximation to infinity.
70527*/
70528#define MAX_LINE_DIFF       UINT_MAX
70529
70530
70531/*
70532    This structure is used to build a list of all the
70533    files that are used in the current compilation unit.
70534    All of the fields execpt fi_next have meanings that
70535    are obvious from section 6.2.4 of the Libdwarf Doc.
70536*/
70537struct Dwarf_File_Entry_s {
70538    /* Points to string naming the file. */
70539    Dwarf_Small *fi_file_name;
70540
70541    /*
70542       Index into the list of directories of the directory in which
70543       this file exits. */
70544    Dwarf_Sword fi_dir_index;
70545
70546    /* Time of last modification of the file. */
70547    Dwarf_Unsigned fi_time_last_mod;
70548
70549    /* Length in bytes of the file. */
70550    Dwarf_Unsigned fi_file_length;
70551
70552    /* Pointer for chaining file entries. */
70553    Dwarf_File_Entry fi_next;
70554};
70555
70556
70557typedef struct Dwarf_Line_Context_s *Dwarf_Line_Context;
70558
70559/*
70560    This structure provides the context in which the fields of
70561    a Dwarf_Line structure are interpreted.  They come from the
70562    statement program prologue.  **Updated by dwarf_srclines in
70563    dwarf_line.c.
70564*/
70565struct Dwarf_Line_Context_s {
70566    /*
70567       Points to a chain of entries providing info about source files
70568       for the current set of Dwarf_Line structures. */
70569    Dwarf_File_Entry lc_file_entries;
70570    /*
70571       Count of number of source files for this set of Dwarf_Line
70572       structures. */
70573    Dwarf_Sword lc_file_entry_count;
70574    /*
70575       Points to the portion of .debug_line section that contains a
70576       list of strings naming the included directories. */
70577    Dwarf_Small *lc_include_directories;
70578
70579    /* Count of the number of included directories. */
70580    Dwarf_Sword lc_include_directories_count;
70581
70582    /* Count of the number of lines for this cu. */
70583    Dwarf_Sword lc_line_count;
70584
70585    /* Points to name of compilation directory. */
70586    Dwarf_Small *lc_compilation_directory;
70587
70588    Dwarf_Debug lc_dbg;
70589};
70590
70591
70592/*
70593    This structure defines a row of the line table.
70594    All of the fields except li_offset have the exact
70595    same meaning that is defined in Section 6.2.2
70596    of the Libdwarf Document.
70597
70598    li_offset is used by _dwarf_addr_finder() which is called
70599    by rqs(1), an sgi utility for 'moving' shared libraries
70600    as if the static linker (ld) had linked the shared library
70601    at the newly-specified address.  Most libdwarf-using
70602    apps will ignore li_offset and _dwarf_addr_finder().
70603
70604*/
70605struct Dwarf_Line_s {
70606    Dwarf_Addr li_address;	/* pc value of machine instr */
70607    union addr_or_line_s {
70608	struct li_inner_s {
70609	    Dwarf_Sword li_file;	/* int identifying src file */
70610	    Dwarf_Sword li_line;	/* source file line number. */
70611	    Dwarf_Half li_column;	/* source file column number */
70612	    Dwarf_Small li_is_stmt;	/* indicate start of stmt */
70613	    Dwarf_Small li_basic_block;	/* indicate start basic block */
70614	    Dwarf_Small li_end_sequence;	/* first post sequence
70615						   instr */
70616	} li_l_data;
70617	Dwarf_Off li_offset;	/* for rqs */
70618    } li_addr_line;
70619    Dwarf_Line_Context li_context;	/* assoc Dwarf_Line_Context_s */
70620};
70621
70622
70623int
70624  _dwarf_line_address_offsets(Dwarf_Debug dbg,
70625			      Dwarf_Die die,
70626			      Dwarf_Addr ** addrs,
70627			      Dwarf_Off ** offs,
70628			      Dwarf_Unsigned * returncount,
70629			      Dwarf_Error * err);
70630
70631
70632/* The LOP, WHAT_IS_OPCODE stuff is here so it can
70633   be reused in 3 places.  Seemed hard to keep
70634   the 3 places the same without an inline func or
70635   a macro.
70636
70637   Handling the line section where the header and the
70638    file being process do not match (unusual, but
70639   planned for in the  design of .debug_line)
70640   is too tricky to recode this several times and keep
70641   it right.
70642*/
70643#define LOP_EXTENDED 1
70644#define LOP_DISCARD  2
70645#define LOP_STANDARD 3
70646#define LOP_SPECIAL  4
70647
70648#define HIGHEST_STANDARD_OPCODE  DW_LNS_fixed_advance_pc
70649
70650#define WHAT_IS_OPCODE(type,opcode,base,opcode_length,line_ptr) \
70651        if( opcode < base ) {                              \
70652           /* we know we must treat as a standard op       \
70653                or a special case.                         \
70654           */                                              \
70655           if(opcode == DW_EXTENDED_OPCODE) {              \
70656                type = LOP_EXTENDED;                       \
70657           } else  if( (HIGHEST_STANDARD_OPCODE+1) >=      \
70658                        base) {                            \
70659                /* == Standard case: compile of            \
70660                   dwarf_line.c and object                 \
70661                   have same standard op codes set.        \
70662                                                           \
70663                   >  Special case: compile of dwarf_line.c\
70664                   has things in standard op codes list    \
70665                   in dwarf.h header not                   \
70666                   in the object: handle this as a standard\
70667                   op code in switch below.                \
70668                   The header special ops overlap the      \
70669                   object standard ops.                    \
70670                   The new standard op codes will not      \
70671                   appear in the object.                   \
70672                */                                         \
70673                type = LOP_STANDARD;                       \
70674           } else  {                                       \
70675                /* These are standard opcodes in the object\
70676                ** that were not defined  in the header    \
70677                ** at the time dwarf_line.c                \
70678                ** was compiled. Provides the ability of   \
70679                ** out-of-date dwarf reader to read newer  \
70680                ** line table data transparently.          \
70681                */                                         \
70682                int opcnt =  opcode_length[opcode];        \
70683                int oc;                                    \
70684                for(oc = 0; oc < opcnt; oc++)              \
70685                  {                                         \
70686                      /*                                    \
70687                      ** Read and discard operands we don't \
70688                      ** understand.                        \
70689                      ** arbitrary choice of unsigned read. \
70690                      ** signed read would work as well.    \
70691                      */                                    \
70692                      Dwarf_Unsigned utmp2;                 \
70693                      DECODE_LEB128_UWORD(line_ptr, utmp2)  \
70694                  }                                         \
70695                /* Done processing this, do not             \
70696                   do the switch , nor do                   \
70697                   special op code processing.              \
70698                */                                          \
70699                type = LOP_DISCARD;                         \
70700           }                                                \
70701                                                            \
70702        } else {                                            \
70703	   /* Is  a special op code.                        \
70704	   */                                               \
70705           type =  LOP_SPECIAL;                             \
70706        }
70707
70708/* The following is from  the dwarf definition of 'ubyte'
70709   and is specifically  mentioned in section  6.2.5.1, page 54
70710   of the Rev 2.0.0 dwarf specification.
70711*/
70712
70713#define MAX_LINE_OP_CODE  255
707140707010001ad780000812400011e740000000a00000001402068270000599e000000660000000000000000000000000000001500000000libdwarf/dwarf_loc.c��/*
70715
70716  Copyright (C) 2000,2003 Silicon Graphics, Inc.  All Rights Reserved.
70717
70718  This program is free software; you can redistribute it and/or modify it
70719  under the terms of version 2.1 of the GNU Lesser General Public License
70720  as published by the Free Software Foundation.
70721
70722  This program is distributed in the hope that it would be useful, but
70723  WITHOUT ANY WARRANTY; without even the implied warranty of
70724  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
70725
70726  Further, this software is distributed without any warranty that it is
70727  free of the rightful claim of any third person regarding infringement
70728  or the like.  Any license provided herein, whether implied or
70729  otherwise, applies only to this software file.  Patent licenses, if
70730  any, provided herein do not apply to combinations of this program with
70731  other software, or any other product whatsoever.
70732
70733  You should have received a copy of the GNU Lesser General Public
70734  License along with this program; if not, write the Free Software
70735  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
70736  USA.
70737
70738  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
70739  Mountain View, CA 94043, or:
70740
70741  http://www.sgi.com
70742
70743  For further information regarding this notice, see:
70744
70745  http://oss.sgi.com/projects/GenInfo/NoticeExplan
70746
70747*/
70748
70749
70750
70751#include "config.h"
70752#include "dwarf_incl.h"
70753#include "dwarf_loc.h"
70754
70755
70756/*
70757    Given a Dwarf_Block that represents a location expression,
70758    this function returns a pointer to a Dwarf_Locdesc struct
70759    that has its ld_cents field set to the number of location
70760    operators in the block, and its ld_s field pointing to a
70761    contiguous block of Dwarf_Loc structs.  However, the
70762    ld_lopc and ld_hipc values are uninitialized.  Returns
70763    NULL on error.  This function assumes that the length of
70764    the block is greater than 0.  Zero length location expressions
70765    to represent variables that have been optimized away are
70766    handled in the calling function.
70767*/
70768static Dwarf_Locdesc *
70769_dwarf_get_locdesc(Dwarf_Debug dbg,
70770		   Dwarf_Block * loc_block,
70771		   Dwarf_Addr lowpc,
70772		   Dwarf_Addr highpc, Dwarf_Error * error)
70773{
70774    /* Size of the block containing the location expression. */
70775    Dwarf_Unsigned loc_len;
70776
70777    /* Sweeps the block containing the location expression. */
70778    Dwarf_Small *loc_ptr;
70779
70780    /* Current location operator. */
70781    Dwarf_Small atom;
70782
70783    /* Offset of current operator from start of block. */
70784    Dwarf_Unsigned offset;
70785
70786    /* Operands of current location operator. */
70787    Dwarf_Unsigned operand1, operand2;
70788
70789    /* Used to chain the Dwarf_Loc_Chain_s structs. */
70790    Dwarf_Loc_Chain curr_loc, prev_loc, head_loc = NULL;
70791
70792    /* Count of the number of location operators. */
70793    Dwarf_Unsigned op_count;
70794
70795    /* Contiguous block of Dwarf_Loc's for Dwarf_Locdesc. */
70796    Dwarf_Loc *block_loc;
70797
70798    /* Dwarf_Locdesc pointer to be returned. */
70799    Dwarf_Locdesc *locdesc;
70800
70801    Dwarf_Word leb128_length;
70802    Dwarf_Unsigned i;
70803
70804    /* ***** BEGIN CODE ***** */
70805
70806    loc_len = loc_block->bl_len;
70807    loc_ptr = loc_block->bl_data;
70808
70809    offset = 0;
70810    op_count = 0;
70811    while (offset < loc_len) {
70812
70813	operand1 = 0;
70814	operand2 = 0;
70815	op_count++;
70816
70817	atom = *(Dwarf_Small *) loc_ptr;
70818	loc_ptr++;
70819	offset++;
70820
70821	curr_loc =
70822	    (Dwarf_Loc_Chain) _dwarf_get_alloc(dbg, DW_DLA_LOC_CHAIN,
70823					       1);
70824	if (curr_loc == NULL) {
70825	    _dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
70826	    return (NULL);
70827	}
70828	curr_loc->lc_offset = offset;
70829	curr_loc->lc_atom = atom;
70830	switch (atom) {
70831
70832	case DW_OP_reg0:
70833	case DW_OP_reg1:
70834	case DW_OP_reg2:
70835	case DW_OP_reg3:
70836	case DW_OP_reg4:
70837	case DW_OP_reg5:
70838	case DW_OP_reg6:
70839	case DW_OP_reg7:
70840	case DW_OP_reg8:
70841	case DW_OP_reg9:
70842	case DW_OP_reg10:
70843	case DW_OP_reg11:
70844	case DW_OP_reg12:
70845	case DW_OP_reg13:
70846	case DW_OP_reg14:
70847	case DW_OP_reg15:
70848	case DW_OP_reg16:
70849	case DW_OP_reg17:
70850	case DW_OP_reg18:
70851	case DW_OP_reg19:
70852	case DW_OP_reg20:
70853	case DW_OP_reg21:
70854	case DW_OP_reg22:
70855	case DW_OP_reg23:
70856	case DW_OP_reg24:
70857	case DW_OP_reg25:
70858	case DW_OP_reg26:
70859	case DW_OP_reg27:
70860	case DW_OP_reg28:
70861	case DW_OP_reg29:
70862	case DW_OP_reg30:
70863	case DW_OP_reg31:
70864	    break;
70865
70866	case DW_OP_regx:
70867	    operand1 = _dwarf_decode_u_leb128(loc_ptr, &leb128_length);
70868	    loc_ptr = loc_ptr + leb128_length;
70869	    offset = offset + leb128_length;
70870	    break;
70871
70872	case DW_OP_lit0:
70873	case DW_OP_lit1:
70874	case DW_OP_lit2:
70875	case DW_OP_lit3:
70876	case DW_OP_lit4:
70877	case DW_OP_lit5:
70878	case DW_OP_lit6:
70879	case DW_OP_lit7:
70880	case DW_OP_lit8:
70881	case DW_OP_lit9:
70882	case DW_OP_lit10:
70883	case DW_OP_lit11:
70884	case DW_OP_lit12:
70885	case DW_OP_lit13:
70886	case DW_OP_lit14:
70887	case DW_OP_lit15:
70888	case DW_OP_lit16:
70889	case DW_OP_lit17:
70890	case DW_OP_lit18:
70891	case DW_OP_lit19:
70892	case DW_OP_lit20:
70893	case DW_OP_lit21:
70894	case DW_OP_lit22:
70895	case DW_OP_lit23:
70896	case DW_OP_lit24:
70897	case DW_OP_lit25:
70898	case DW_OP_lit26:
70899	case DW_OP_lit27:
70900	case DW_OP_lit28:
70901	case DW_OP_lit29:
70902	case DW_OP_lit30:
70903	case DW_OP_lit31:
70904	    operand1 = atom - DW_OP_lit0;
70905	    break;
70906
70907	case DW_OP_addr:
70908	    READ_UNALIGNED(dbg, operand1, Dwarf_Unsigned,
70909			   loc_ptr, dbg->de_pointer_size);
70910	    loc_ptr += dbg->de_pointer_size;
70911	    offset += dbg->de_pointer_size;
70912	    break;
70913
70914	case DW_OP_const1u:
70915	    operand1 = *(Dwarf_Small *) loc_ptr;
70916	    loc_ptr = loc_ptr + 1;
70917	    offset = offset + 1;
70918	    break;
70919
70920	case DW_OP_const1s:
70921	    operand1 = *(Dwarf_Sbyte *) loc_ptr;
70922	    loc_ptr = loc_ptr + 1;
70923	    offset = offset + 1;
70924	    break;
70925
70926	case DW_OP_const2u:
70927	    READ_UNALIGNED(dbg, operand1, Dwarf_Unsigned, loc_ptr, 2);
70928	    loc_ptr = loc_ptr + 2;
70929	    offset = offset + 2;
70930	    break;
70931
70932	case DW_OP_const2s:
70933	    READ_UNALIGNED(dbg, operand1, Dwarf_Unsigned, loc_ptr, 2);
70934	    loc_ptr = loc_ptr + 2;
70935	    offset = offset + 2;
70936	    break;
70937
70938	case DW_OP_const4u:
70939	    READ_UNALIGNED(dbg, operand1, Dwarf_Unsigned, loc_ptr, 4);
70940	    loc_ptr = loc_ptr + 4;
70941	    offset = offset + 4;
70942	    break;
70943
70944	case DW_OP_const4s:
70945	    READ_UNALIGNED(dbg, operand1, Dwarf_Unsigned, loc_ptr, 4);
70946	    loc_ptr = loc_ptr + 4;
70947	    offset = offset + 4;
70948	    break;
70949
70950	case DW_OP_const8u:
70951	    READ_UNALIGNED(dbg, operand1, Dwarf_Unsigned, loc_ptr, 8);
70952	    loc_ptr = loc_ptr + 8;
70953	    offset = offset + 8;
70954	    break;
70955
70956	case DW_OP_const8s:
70957	    READ_UNALIGNED(dbg, operand1, Dwarf_Unsigned, loc_ptr, 8);
70958	    loc_ptr = loc_ptr + 8;
70959	    offset = offset + 8;
70960	    break;
70961
70962	case DW_OP_constu:
70963	    operand1 = _dwarf_decode_u_leb128(loc_ptr, &leb128_length);
70964	    loc_ptr = loc_ptr + leb128_length;
70965	    offset = offset + leb128_length;
70966	    break;
70967
70968	case DW_OP_consts:
70969	    operand1 = _dwarf_decode_s_leb128(loc_ptr, &leb128_length);
70970	    loc_ptr = loc_ptr + leb128_length;
70971	    offset = offset + leb128_length;
70972	    break;
70973
70974	case DW_OP_fbreg:
70975	    operand1 = _dwarf_decode_s_leb128(loc_ptr, &leb128_length);
70976	    loc_ptr = loc_ptr + leb128_length;
70977	    offset = offset + leb128_length;
70978	    break;
70979
70980	case DW_OP_breg0:
70981	case DW_OP_breg1:
70982	case DW_OP_breg2:
70983	case DW_OP_breg3:
70984	case DW_OP_breg4:
70985	case DW_OP_breg5:
70986	case DW_OP_breg6:
70987	case DW_OP_breg7:
70988	case DW_OP_breg8:
70989	case DW_OP_breg9:
70990	case DW_OP_breg10:
70991	case DW_OP_breg11:
70992	case DW_OP_breg12:
70993	case DW_OP_breg13:
70994	case DW_OP_breg14:
70995	case DW_OP_breg15:
70996	case DW_OP_breg16:
70997	case DW_OP_breg17:
70998	case DW_OP_breg18:
70999	case DW_OP_breg19:
71000	case DW_OP_breg20:
71001	case DW_OP_breg21:
71002	case DW_OP_breg22:
71003	case DW_OP_breg23:
71004	case DW_OP_breg24:
71005	case DW_OP_breg25:
71006	case DW_OP_breg26:
71007	case DW_OP_breg27:
71008	case DW_OP_breg28:
71009	case DW_OP_breg29:
71010	case DW_OP_breg30:
71011	case DW_OP_breg31:
71012	    operand1 = _dwarf_decode_s_leb128(loc_ptr, &leb128_length);
71013	    loc_ptr = loc_ptr + leb128_length;
71014	    offset = offset + leb128_length;
71015	    break;
71016
71017	case DW_OP_bregx:
71018	    /* uleb reg num followed by sleb offset */
71019	    operand1 = _dwarf_decode_u_leb128(loc_ptr, &leb128_length);
71020	    loc_ptr = loc_ptr + leb128_length;
71021	    offset = offset + leb128_length;
71022
71023	    operand2 = _dwarf_decode_s_leb128(loc_ptr, &leb128_length);
71024	    loc_ptr = loc_ptr + leb128_length;
71025	    offset = offset + leb128_length;
71026	    break;
71027
71028	case DW_OP_dup:
71029	case DW_OP_drop:
71030	    break;
71031
71032	case DW_OP_pick:
71033	    operand1 = *(Dwarf_Small *) loc_ptr;
71034	    loc_ptr = loc_ptr + 1;
71035	    offset = offset + 1;
71036	    break;
71037
71038	case DW_OP_over:
71039	case DW_OP_swap:
71040	case DW_OP_rot:
71041	case DW_OP_deref:
71042	    break;
71043
71044	case DW_OP_deref_size:
71045	    operand1 = *(Dwarf_Small *) loc_ptr;
71046	    loc_ptr = loc_ptr + 1;
71047	    offset = offset + 1;
71048	    break;
71049
71050	case DW_OP_xderef:
71051	    break;
71052
71053	case DW_OP_xderef_size:
71054	    operand1 = *(Dwarf_Small *) loc_ptr;
71055	    loc_ptr = loc_ptr + 1;
71056	    offset = offset + 1;
71057	    break;
71058
71059	case DW_OP_abs:
71060	case DW_OP_and:
71061	case DW_OP_div:
71062	case DW_OP_minus:
71063	case DW_OP_mod:
71064	case DW_OP_mul:
71065	case DW_OP_neg:
71066	case DW_OP_not:
71067	case DW_OP_or:
71068	case DW_OP_plus:
71069	    break;
71070
71071	case DW_OP_plus_uconst:
71072	    operand1 = _dwarf_decode_u_leb128(loc_ptr, &leb128_length);
71073	    loc_ptr = loc_ptr + leb128_length;
71074	    offset = offset + leb128_length;
71075	    break;
71076
71077	case DW_OP_shl:
71078	case DW_OP_shr:
71079	case DW_OP_shra:
71080	case DW_OP_xor:
71081	    break;
71082
71083	case DW_OP_le:
71084	case DW_OP_ge:
71085	case DW_OP_eq:
71086	case DW_OP_lt:
71087	case DW_OP_gt:
71088	case DW_OP_ne:
71089	    break;
71090
71091	case DW_OP_skip:
71092	case DW_OP_bra:
71093	    READ_UNALIGNED(dbg, operand1, Dwarf_Unsigned, loc_ptr, 2);
71094	    loc_ptr = loc_ptr + 2;
71095	    offset = offset + 2;
71096	    break;
71097
71098	case DW_OP_piece:
71099	    operand1 = _dwarf_decode_u_leb128(loc_ptr, &leb128_length);
71100	    loc_ptr = loc_ptr + leb128_length;
71101	    offset = offset + leb128_length;
71102	    break;
71103
71104	case DW_OP_nop:
71105	    break;
71106
71107	default:
71108	    _dwarf_error(dbg, error, DW_DLE_LOC_EXPR_BAD);
71109	    return (NULL);
71110	}
71111
71112
71113	curr_loc->lc_number = operand1;
71114	curr_loc->lc_number2 = operand2;
71115
71116	if (head_loc == NULL)
71117	    head_loc = prev_loc = curr_loc;
71118	else {
71119	    prev_loc->lc_next = curr_loc;
71120	    prev_loc = curr_loc;
71121	}
71122    }
71123
71124    block_loc =
71125	(Dwarf_Loc *) _dwarf_get_alloc(dbg, DW_DLA_LOC_BLOCK, op_count);
71126    if (block_loc == NULL) {
71127	_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
71128	return (NULL);
71129    }
71130
71131    curr_loc = head_loc;
71132    for (i = 0; i < op_count; i++) {
71133	(block_loc + i)->lr_atom = curr_loc->lc_atom;
71134	(block_loc + i)->lr_number = curr_loc->lc_number;
71135	(block_loc + i)->lr_number2 = curr_loc->lc_number2;
71136	(block_loc + i)->lr_offset = curr_loc->lc_offset;
71137
71138	prev_loc = curr_loc;
71139	curr_loc = curr_loc->lc_next;
71140	dwarf_dealloc(dbg, prev_loc, DW_DLA_LOC_CHAIN);
71141    }
71142
71143    locdesc =
71144	(Dwarf_Locdesc *) _dwarf_get_alloc(dbg, DW_DLA_LOCDESC, 1);
71145    if (locdesc == NULL) {
71146	_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
71147	return (NULL);
71148    }
71149
71150    locdesc->ld_cents = op_count;
71151    locdesc->ld_s = block_loc;
71152    locdesc->ld_from_loclist = loc_block->bl_from_loclist;
71153    locdesc->ld_section_offset = loc_block->bl_section_offset;
71154    locdesc->ld_lopc = lowpc;
71155    locdesc->ld_hipc = highpc;
71156
71157    return (locdesc);
71158}
71159
71160/* Using a loclist offset to get the in-memory
71161   address of .debug_loc data to read, returns the loclist
71162   'header' info in return_block.
71163*/
71164
71165#define MAX_ADDR ((address_size == 8)?0xffffffffffffffffULL:0xffffffff)
71166
71167static int
71168_dwarf_read_loc_section(Dwarf_Debug dbg,
71169			Dwarf_Block * return_block,
71170			Dwarf_Addr * lowpc, Dwarf_Addr * hipc,
71171			Dwarf_Off sec_offset, Dwarf_Error * error)
71172{
71173    Dwarf_Small *beg = dbg->de_debug_loc + sec_offset;
71174    int address_size = dbg->de_pointer_size;
71175
71176    Dwarf_Addr start_addr = 0;
71177    Dwarf_Addr end_addr = 0;
71178    Dwarf_Half exprblock_size = 0;
71179    Dwarf_Unsigned exprblock_off =
71180	2 * address_size + sizeof(Dwarf_Half);
71181
71182    if (sec_offset >= dbg->de_debug_loc_size) {
71183	/* We're at the end. No more present. */
71184	return DW_DLV_NO_ENTRY;
71185    }
71186
71187    /* If it goes past end, error */
71188    if (exprblock_off > dbg->de_debug_loc_size) {
71189	_dwarf_error(NULL, error, DW_DLE_DEBUG_LOC_SECTION_SHORT);
71190	return DW_DLV_ERROR;
71191    }
71192
71193    READ_UNALIGNED(dbg, start_addr, Dwarf_Addr, beg, address_size);
71194    READ_UNALIGNED(dbg, end_addr, Dwarf_Addr,
71195		   beg + address_size, address_size);
71196    if (start_addr == 0 && end_addr == 0) {
71197	/* If start_addr and end_addr are 0, it's the end and no
71198	   exprblock_size field follows. */
71199	exprblock_size = 0;
71200	exprblock_off -= sizeof(Dwarf_Half);
71201    } else if (start_addr == MAX_ADDR) {
71202	/* end address is a base address, no exprblock_size field here
71203	   either */
71204	exprblock_size = 0;
71205	exprblock_off -= sizeof(Dwarf_Half);
71206    } else {
71207
71208	READ_UNALIGNED(dbg, exprblock_size, Dwarf_Half,
71209		       beg + 2 * address_size, sizeof(Dwarf_Half));
71210	/* exprblock_size can be zero, means no expression */
71211	if ((exprblock_off + exprblock_size) > dbg->de_debug_loc_size) {
71212	    _dwarf_error(NULL, error, DW_DLE_DEBUG_LOC_SECTION_SHORT);
71213	    return DW_DLV_ERROR;
71214	}
71215    }
71216#undef MAX_ADDR
71217    *lowpc = start_addr;
71218    *hipc = end_addr;
71219
71220    return_block->bl_len = exprblock_size;
71221    return_block->bl_from_loclist = 1;
71222    return_block->bl_data = beg + exprblock_off;
71223    return_block->bl_section_offset =
71224	((Dwarf_Small *) return_block->bl_data) - dbg->de_debug_loc;
71225
71226    return DW_DLV_OK;
71227
71228}
71229static int
71230_dwarf_get_loclist_count(Dwarf_Debug dbg,
71231			 Dwarf_Off loclist_offset,
71232			 int *loclist_count, Dwarf_Error * error)
71233{
71234    int count = 0;
71235    Dwarf_Off offset = loclist_offset;
71236
71237
71238    for (;;) {
71239	Dwarf_Block b;
71240	Dwarf_Addr lowpc;
71241	Dwarf_Addr highpc;
71242	int res = _dwarf_read_loc_section(dbg, &b,
71243
71244					  &lowpc, &highpc,
71245					  offset, error);
71246
71247	if (res != DW_DLV_OK) {
71248	    return res;
71249	}
71250	offset = b.bl_len + b.bl_section_offset;
71251	if (lowpc == 0 && highpc == 0) {
71252	    break;
71253	}
71254	count++;
71255    }
71256    *loclist_count = count;
71257    return DW_DLV_OK;
71258}
71259
71260/* Helper routine to avoid code duplication.
71261*/
71262static int
71263_dwarf_setup_loc(Dwarf_Attribute attr,
71264		 Dwarf_Debug * dbg_ret,
71265		 Dwarf_Half * form_ret, Dwarf_Error * error)
71266{
71267    Dwarf_Debug dbg = 0;
71268    Dwarf_Half form = 0;
71269    int blkres;
71270
71271    if (attr == NULL) {
71272	_dwarf_error(NULL, error, DW_DLE_ATTR_NULL);
71273	return (DW_DLV_ERROR);
71274    }
71275    if (attr->ar_cu_context == NULL) {
71276	_dwarf_error(NULL, error, DW_DLE_ATTR_NO_CU_CONTEXT);
71277	return (DW_DLV_ERROR);
71278    }
71279
71280    dbg = attr->ar_cu_context->cc_dbg;
71281    if (dbg == NULL) {
71282	_dwarf_error(NULL, error, DW_DLE_ATTR_DBG_NULL);
71283	return (DW_DLV_ERROR);
71284    }
71285    *dbg_ret = dbg;
71286    blkres = dwarf_whatform(attr, &form, error);
71287    if (blkres != DW_DLV_OK) {
71288	_dwarf_error(dbg, error, DW_DLE_LOC_EXPR_BAD);
71289	return blkres;
71290    }
71291    *form_ret = form;
71292
71293    return DW_DLV_OK;
71294}
71295
71296/* Helper routine  to avoid code duplication.
71297*/
71298static int
71299_dwarf_get_loclist_header_start(Dwarf_Debug dbg,
71300				Dwarf_Attribute attr,
71301				Dwarf_Unsigned * loclist_offset,
71302				Dwarf_Error * error)
71303{
71304    int secload = 0;
71305    int blkres = dwarf_formudata(attr, loclist_offset, error);
71306
71307    if (blkres != DW_DLV_OK) {
71308	return (blkres);
71309    }
71310
71311    if (!dbg->de_debug_loc) {
71312	secload = _dwarf_load_section(dbg,
71313				      dbg->de_debug_loc_index,
71314				      &dbg->de_debug_loc, error);
71315	if (secload != DW_DLV_OK) {
71316	    return secload;
71317	}
71318    }
71319    return DW_DLV_OK;
71320}
71321
71322/* When llbuf (see dwarf_loclist_n) is partially set up
71323   and an error is encountered, tear it down as it
71324   won't be used.
71325*/
71326static void
71327_dwarf_cleanup_llbuf(Dwarf_Debug dbg, Dwarf_Locdesc ** llbuf, int count)
71328{
71329    int i;
71330
71331    for (i = 0; i < count; ++i) {
71332	dwarf_dealloc(dbg, llbuf[i]->ld_s, DW_DLA_LOC_BLOCK);
71333	dwarf_dealloc(dbg, llbuf[i], DW_DLA_LOCDESC);
71334    }
71335    dwarf_dealloc(dbg, llbuf, DW_DLA_LIST);
71336}
71337
71338/*
71339	Handles simple location entries and loclists.
71340	Returns all the Locdesc's thru llbuf.
71341
71342*/
71343int
71344dwarf_loclist_n(Dwarf_Attribute attr,
71345		Dwarf_Locdesc *** llbuf_out,
71346		Dwarf_Signed * listlen_out, Dwarf_Error * error)
71347{
71348    Dwarf_Debug dbg;
71349
71350    /*
71351       Dwarf_Attribute that describes the DW_AT_location in die, if
71352       present. */
71353    Dwarf_Attribute loc_attr = attr;
71354
71355    /* Dwarf_Block that describes a single location expression. */
71356    Dwarf_Block loc_block;
71357
71358    /* A pointer to the current Dwarf_Locdesc read. */
71359    Dwarf_Locdesc *locdesc = 0;
71360
71361    Dwarf_Half form = 0;
71362    Dwarf_Addr lowpc = 0;
71363    Dwarf_Addr highpc = 0;
71364    Dwarf_Signed listlen = 0;
71365    Dwarf_Locdesc **llbuf = 0;
71366
71367    int blkres;
71368    int setup_res;
71369
71370    /* ***** BEGIN CODE ***** */
71371    setup_res = _dwarf_setup_loc(attr, &dbg, &form, error);
71372    if (setup_res != DW_DLV_OK) {
71373	return setup_res;
71374    }
71375    /* If this is a form_block then it's a location expression. If it's
71376       DW_FORM_data4 or DW_FORM_data8 it's a loclist offset */
71377    if (form == DW_FORM_data4 || form == DW_FORM_data8) {
71378
71379	/* A reference to .debug_loc, with an offset in .debug_loc of a
71380	   loclist */
71381	Dwarf_Unsigned loclist_offset = 0;
71382	int off_res;
71383	int count_res;
71384	int loclist_count;
71385	int lli;
71386
71387	off_res = _dwarf_get_loclist_header_start(dbg,
71388						  attr, &loclist_offset,
71389						  error);
71390	if (off_res != DW_DLV_OK) {
71391	    return off_res;
71392	}
71393	count_res = _dwarf_get_loclist_count(dbg, loclist_offset,
71394					     &loclist_count, error);
71395	listlen = loclist_count;
71396	if (count_res != DW_DLV_OK) {
71397	    return count_res;
71398	}
71399	if (loclist_count == 0) {
71400	    return DW_DLV_NO_ENTRY;
71401	}
71402
71403	llbuf = (Dwarf_Locdesc **)
71404	    _dwarf_get_alloc(dbg, DW_DLA_LIST, loclist_count);
71405	if (!llbuf) {
71406	    _dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
71407	    return (DW_DLV_ERROR);
71408	}
71409
71410	for (lli = 0; lli < loclist_count; ++lli) {
71411	    blkres = _dwarf_read_loc_section(dbg, &loc_block,
71412					     &lowpc,
71413					     &highpc,
71414					     loclist_offset, error);
71415	    if (blkres != DW_DLV_OK) {
71416		_dwarf_cleanup_llbuf(dbg, llbuf, lli);
71417		return (blkres);
71418	    }
71419	    locdesc = _dwarf_get_locdesc(dbg, &loc_block,
71420					 lowpc, highpc, error);
71421	    if (locdesc == NULL) {
71422		_dwarf_cleanup_llbuf(dbg, llbuf, lli);
71423		/* low level error already set: let it be passed back */
71424		return (DW_DLV_ERROR);
71425	    }
71426	    llbuf[lli] = locdesc;
71427
71428	    /* Now get to next loclist entry offset. */
71429	    loclist_offset = loc_block.bl_section_offset +
71430		loc_block.bl_len;
71431	}
71432
71433
71434    } else {
71435	Dwarf_Block *tblock = 0;
71436
71437	blkres = dwarf_formblock(loc_attr, &tblock, error);
71438	if (blkres != DW_DLV_OK) {
71439	    return (blkres);
71440	}
71441	loc_block = *tblock;
71442	/* We copied tblock contents to the stack var, so can dealloc
71443	   tblock now.  Avoids leaks. */
71444	dwarf_dealloc(dbg, tblock, DW_DLA_BLOCK);
71445	listlen = 1;		/* One by definition of a location
71446				   entry. */
71447	lowpc = 0;		/* HACK */
71448	highpc = (Dwarf_Unsigned) (-1LL);	/* HACK */
71449
71450	/* An empty location description (block length 0) means the
71451	   code generator emitted no variable, the variable was not
71452	   generated, it was unused or perhaps never tested after being
71453	   set. Dwarf2, section 2.4.1 In other words, it is not an
71454	   error, and we don't test for block length 0 specially here. */
71455	locdesc = _dwarf_get_locdesc(dbg, &loc_block,
71456				     lowpc, highpc, error);
71457	if (locdesc == NULL) {
71458	    /* low level error already set: let it be passed back */
71459	    return (DW_DLV_ERROR);
71460	}
71461	llbuf = (Dwarf_Locdesc **)
71462	    _dwarf_get_alloc(dbg, DW_DLA_LIST, listlen);
71463	if (!llbuf) {
71464	    /* Free the locdesc we allocated but won't use. */
71465	    dwarf_dealloc(dbg, locdesc, DW_DLA_LOCDESC);
71466	    _dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
71467	    return (DW_DLV_ERROR);
71468	}
71469	llbuf[0] = locdesc;
71470    }
71471
71472    *llbuf_out = llbuf;
71473    *listlen_out = listlen;
71474    return (DW_DLV_OK);
71475}
71476
71477/*
71478	Handles only a location expression.
71479	If called on a loclist, just returns one of those.
71480	Cannot not handle a real loclist.
71481 	It returns the location expression as a loclist with
71482	a single entry.
71483	See dwarf_loclist_n() which handles any number
71484        of location list entries.
71485
71486	This is the original definition, and it simply
71487	does not work for loclists. Kept for compatibility.
71488*/
71489int
71490dwarf_loclist(Dwarf_Attribute attr,
71491	      Dwarf_Locdesc ** llbuf,
71492	      Dwarf_Signed * listlen, Dwarf_Error * error)
71493{
71494    Dwarf_Debug dbg;
71495
71496    /*
71497       Dwarf_Attribute that describes the DW_AT_location in die, if
71498       present. */
71499    Dwarf_Attribute loc_attr = attr;
71500
71501    /* Dwarf_Block that describes a single location expression. */
71502    Dwarf_Block loc_block;
71503
71504    /* A pointer to the current Dwarf_Locdesc read. */
71505    Dwarf_Locdesc *locdesc = 0;
71506
71507    Dwarf_Half form = 0;
71508    Dwarf_Addr lowpc = 0;
71509    Dwarf_Addr highpc = 0;
71510
71511    int blkres;
71512    int setup_res;
71513
71514    /* ***** BEGIN CODE ***** */
71515    setup_res = _dwarf_setup_loc(attr, &dbg, &form, error);
71516    if (setup_res != DW_DLV_OK) {
71517	return setup_res;
71518    }
71519    /* If this is a form_block then it's a location expression. If it's
71520       DW_FORM_data4 or DW_FORM_data8 it's a loclist offset */
71521    if (form == DW_FORM_data4 || form == DW_FORM_data8) {
71522
71523	/* A reference to .debug_loc, with an offset in .debug_loc of a
71524	   loclist */
71525	Dwarf_Unsigned loclist_offset = 0;
71526	int off_res;
71527
71528	off_res = _dwarf_get_loclist_header_start(dbg,
71529						  attr, &loclist_offset,
71530						  error);
71531	if (off_res != DW_DLV_OK) {
71532	    return off_res;
71533	}
71534
71535	/* With dwarf_loclist, just read a single entry */
71536	blkres = _dwarf_read_loc_section(dbg, &loc_block,
71537					 &lowpc,
71538					 &highpc,
71539					 loclist_offset, error);
71540	if (blkres != DW_DLV_OK) {
71541	    return (blkres);
71542	}
71543
71544
71545
71546
71547    } else {
71548	Dwarf_Block *tblock = 0;
71549
71550	blkres = dwarf_formblock(loc_attr, &tblock, error);
71551	if (blkres != DW_DLV_OK) {
71552	    return (blkres);
71553	}
71554	loc_block = *tblock;
71555	/* We copied tblock contents to the stack var, so can dealloc
71556	   tblock now.  Avoids leaks. */
71557	dwarf_dealloc(dbg, tblock, DW_DLA_BLOCK);
71558	lowpc = 0;		/* HACK */
71559	highpc = (Dwarf_Unsigned) (-1LL);	/* HACK */
71560    }
71561
71562    /* An empty location description (block length 0) means the code
71563       generator emitted no variable, the variable was not generated,
71564       it was unused or perhaps never tested after being set. Dwarf2,
71565       section 2.4.1 In other words, it is not an error, and we don't
71566       test for block length 0 specially here. FIXME: doing this once
71567       is wrong, needs to handle low/hi pc sets. */
71568    locdesc = _dwarf_get_locdesc(dbg, &loc_block, lowpc, highpc, error);
71569    if (locdesc == NULL) {
71570	/* low level error already set: let it be passed back */
71571	return (DW_DLV_ERROR);
71572    }
71573
71574    *llbuf = locdesc;
71575    *listlen = 1;
71576    return (DW_DLV_OK);
71577}
71578
71579/* Usable to read a single loclist or to read a block of them
71580   or to read an entire section's loclists.
71581
71582*/
71583
71584 /*ARGSUSED*/ int
71585dwarf_get_loclist_entry(Dwarf_Debug dbg,
71586			Dwarf_Unsigned offset,
71587			Dwarf_Addr * hipc_offset,
71588			Dwarf_Addr * lopc_offset,
71589			Dwarf_Ptr * data,
71590			Dwarf_Unsigned * entry_len,
71591			Dwarf_Unsigned * next_entry,
71592			Dwarf_Error * error)
71593{
71594    Dwarf_Block b;
71595    Dwarf_Addr lowpc;
71596    Dwarf_Addr highpc;
71597    int res;
71598
71599    if (!dbg->de_debug_loc) {
71600	int secload = _dwarf_load_section(dbg,
71601					  dbg->de_debug_loc_index,
71602					  &dbg->de_debug_loc,
71603					  error);
71604
71605	if (secload != DW_DLV_OK) {
71606	    return secload;
71607	}
71608    }
71609
71610    res = _dwarf_read_loc_section(dbg,
71611				  &b, &lowpc, &highpc, offset, error);
71612    if (res != DW_DLV_OK) {
71613	return res;
71614    }
71615    *hipc_offset = highpc;
71616    *lopc_offset = lowpc;
71617    *entry_len = b.bl_len;
71618    *data = b.bl_data;
71619    *next_entry = b.bl_len + b.bl_section_offset;
71620
71621    return DW_DLV_OK;
71622
71623
71624
71625}
71626��0707010001ad790000812400011e740000000a00000001402068270000060c000000660000000000000000000000000000001500000000libdwarf/dwarf_loc.h��/*
71627
71628  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
71629
71630  This program is free software; you can redistribute it and/or modify it
71631  under the terms of version 2.1 of the GNU Lesser General Public License
71632  as published by the Free Software Foundation.
71633
71634  This program is distributed in the hope that it would be useful, but
71635  WITHOUT ANY WARRANTY; without even the implied warranty of
71636  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
71637
71638  Further, this software is distributed without any warranty that it is
71639  free of the rightful claim of any third person regarding infringement
71640  or the like.  Any license provided herein, whether implied or
71641  otherwise, applies only to this software file.  Patent licenses, if
71642  any, provided herein do not apply to combinations of this program with
71643  other software, or any other product whatsoever.
71644
71645  You should have received a copy of the GNU Lesser General Public
71646  License along with this program; if not, write the Free Software
71647  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
71648  USA.
71649
71650  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
71651  Mountain View, CA 94043, or:
71652
71653  http://www.sgi.com
71654
71655  For further information regarding this notice, see:
71656
71657  http://oss.sgi.com/projects/GenInfo/NoticeExplan
71658
71659*/
71660
71661
71662
71663typedef struct Dwarf_Loc_Chain_s *Dwarf_Loc_Chain;
71664
71665struct Dwarf_Loc_Chain_s {
71666    Dwarf_Small lc_atom;
71667    Dwarf_Unsigned lc_number;
71668    Dwarf_Unsigned lc_number2;
71669    Dwarf_Unsigned lc_offset;
71670    Dwarf_Loc_Chain lc_next;
71671};
716720707010001ad7a0000812400011e740000000a000000014020682700002a31000000660000000000000000000000000000001700000000libdwarf/dwarf_macro.c����/*
71673
71674  Copyright (C) 2000, 2002 Silicon Graphics, Inc.  All Rights Reserved.
71675
71676  This program is free software; you can redistribute it and/or modify it
71677  under the terms of version 2.1 of the GNU Lesser General Public License
71678  as published by the Free Software Foundation.
71679
71680  This program is distributed in the hope that it would be useful, but
71681  WITHOUT ANY WARRANTY; without even the implied warranty of
71682  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
71683
71684  Further, this software is distributed without any warranty that it is
71685  free of the rightful claim of any third person regarding infringement
71686  or the like.  Any license provided herein, whether implied or
71687  otherwise, applies only to this software file.  Patent licenses, if
71688  any, provided herein do not apply to combinations of this program with
71689  other software, or any other product whatsoever.
71690
71691  You should have received a copy of the GNU Lesser General Public
71692  License along with this program; if not, write the Free Software
71693  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
71694  USA.
71695
71696  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
71697  Mountain View, CA 94043, or:
71698
71699  http://www.sgi.com
71700
71701  For further information regarding this notice, see:
71702
71703  http://oss.sgi.com/projects/GenInfo/NoticeExplan
71704
71705*/
71706
71707
71708
71709#include "config.h"
71710#include "dwarf_incl.h"
71711#include <stdio.h>
71712#include <limits.h>
71713#include "dwarf_macro.h"
71714
71715
71716#define LEFTPAREN '('
71717#define RIGHTPAREN ')'
71718#define SPACE ' '
71719
71720/*
71721	Given the dwarf macro string, return a pointer to
71722	the value.  Returns pointer to 0 byte at end of string
71723	if no value found (meaning the value is the empty string).
71724
71725	Only understands well-formed dwarf macinfo strings.
71726*/
71727char *
71728dwarf_find_macro_value_start(char *str)
71729{
71730    char *lcp;
71731    int funclike = 0;
71732
71733    for (lcp = str; *lcp; ++lcp) {
71734	switch (*lcp) {
71735	case LEFTPAREN:
71736	    funclike = 1;
71737	    break;
71738	case RIGHTPAREN:
71739	    /* lcp+1 must be a space, and following char is the value */
71740	    return lcp + 2;
71741	case SPACE:
71742	    /* we allow extraneous spaces inside macro parameter **
71743	       list, just in case... This is not really needed. */
71744	    if (!funclike) {
71745		return lcp + 1;
71746	    }
71747	    break;
71748	}
71749    }
71750    /* never found value: returns pointer to the 0 byte at end of
71751       string */
71752    return lcp;
71753
71754}
71755
71756
71757/*
71758   Try to keep fileindex correct in every Macro_Details
71759   record by tracking file starts and ends.
71760   Uses high water mark: space reused, not freed.
71761   Presumption is that this makes sense for most uses.
71762   STARTERMAX is set so that the array need not be expanded for
71763   most files: it is the initial include file depth.
71764*/
71765static Dwarf_Signed *st_base;
71766static long max;
71767static long next_to_use;
71768static int was_fault = 0;
71769
71770#define STARTERMAX 10
71771static void
71772_dwarf_reset_index_stack(void)
71773{
71774    next_to_use = 0;
71775    was_fault = 0;
71776}
71777static int
71778_dwarf_mac_push_index(Dwarf_Debug dbg, Dwarf_Signed indx)
71779{
71780    Dwarf_Signed *newbase;
71781
71782    if (next_to_use >= max) {
71783	long new_size;
71784
71785	if (max == 0) {
71786	    max = STARTERMAX;
71787	}
71788	new_size = max * 2;
71789	newbase =
71790	    _dwarf_get_alloc(dbg, DW_DLA_STRING,
71791			     new_size * sizeof(Dwarf_Signed));
71792	if (newbase == 0) {
71793	    /* just leave the old array in place */
71794	    was_fault = 1;
71795	    return DW_DLV_ERROR;
71796	}
71797	memcpy(newbase, st_base, next_to_use * sizeof(Dwarf_Signed));
71798	dwarf_dealloc(dbg, st_base, DW_DLA_STRING);
71799	st_base = newbase;
71800	max = new_size;
71801    }
71802    st_base[next_to_use] = indx;
71803    ++next_to_use;
71804    return DW_DLV_OK;
71805}
71806static Dwarf_Signed
71807_dwarf_mac_pop_index(void)
71808{
71809    if (was_fault) {
71810	return -1;
71811    }
71812    if (next_to_use > 0) {
71813	next_to_use--;
71814	return (*(st_base + next_to_use));
71815    }
71816    return -1;
71817}
71818
71819/* starting at macro_offset in .debug_macinfo,
71820	if maximum_count is 0, treat as if it is infinite.
71821	get macro data up thru
71822	maximum_count entries or the end of a compilation
71823	unit's entries (whichever comes first).
71824*/
71825
71826int
71827dwarf_get_macro_details(Dwarf_Debug dbg,
71828			Dwarf_Off macro_offset,
71829			Dwarf_Unsigned maximum_count,
71830			Dwarf_Signed * entry_count,
71831			Dwarf_Macro_Details ** details,
71832			Dwarf_Error * error)
71833{
71834    Dwarf_Small *macro_base;
71835    Dwarf_Small *pnext;
71836    Dwarf_Unsigned endloc;
71837    unsigned char uc;
71838    unsigned long depth;
71839
71840    int res;
71841
71842    /* count space used by strings */
71843    unsigned long str_space = 0;
71844    int done = 0;
71845    unsigned long space_needed;
71846    unsigned long string_offset;
71847    Dwarf_Small *return_data;
71848    Dwarf_Small *pdata;
71849    unsigned long final_count = 0;
71850    Dwarf_Signed fileindex = -1;
71851    Dwarf_Small *latest_str_loc;
71852
71853    unsigned long count;
71854    unsigned long max_count = (unsigned long) maximum_count;
71855
71856    _dwarf_reset_index_stack();
71857    if (dbg == NULL) {
71858	_dwarf_error(NULL, error, DW_DLE_DBG_NULL);
71859	return (DW_DLV_ERROR);
71860    }
71861
71862    res =
71863       _dwarf_load_section(dbg,
71864		           dbg->de_debug_macinfo_index,
71865			   &dbg->de_debug_macinfo,
71866			   error);
71867    if (res != DW_DLV_OK) {
71868	return res;
71869    }
71870
71871    macro_base = dbg->de_debug_macinfo;
71872    if (macro_base == NULL) {
71873	return (DW_DLV_NO_ENTRY);
71874    }
71875    if (macro_offset >= dbg->de_debug_macinfo_size) {
71876	return (DW_DLV_NO_ENTRY);
71877    }
71878
71879    pnext = macro_base + macro_offset;
71880    if (maximum_count == 0) {
71881	max_count = ULONG_MAX;
71882    }
71883
71884
71885    /* how many entries and how much space will they take? */
71886
71887    endloc = (pnext - macro_base);
71888    if (endloc >= dbg->de_debug_macinfo_size) {
71889	if (endloc == dbg->de_debug_macinfo_size) {
71890	    /* normal: found last entry */
71891	    return DW_DLV_NO_ENTRY;
71892	}
71893	_dwarf_error(dbg, error, DW_DLE_DEBUG_MACRO_LENGTH_BAD);
71894	return (DW_DLV_ERROR);
71895    }
71896    for (count = 0; !done && count < max_count; ++count) {
71897	unsigned long slen;
71898	Dwarf_Word len;
71899
71900	uc = *pnext;
71901	++pnext;		/* get past the type code */
71902	switch (uc) {
71903	case DW_MACINFO_define:
71904	case DW_MACINFO_undef:
71905	    /* line, string */
71906	case DW_MACINFO_vendor_ext:
71907	    /* number, string */
71908	    (void) _dwarf_decode_u_leb128(pnext, &len);
71909
71910	    pnext += len;
71911	    if (((pnext - macro_base)) >= dbg->de_debug_macinfo_size) {
71912		_dwarf_error(dbg, error,
71913			     DW_DLE_DEBUG_MACRO_INCONSISTENT);
71914		return (DW_DLV_ERROR);
71915	    }
71916	    slen = strlen((char *) pnext) + 1;
71917	    pnext += slen;
71918	    if (((pnext - macro_base)) >= dbg->de_debug_macinfo_size) {
71919		_dwarf_error(dbg, error,
71920			     DW_DLE_DEBUG_MACRO_INCONSISTENT);
71921		return (DW_DLV_ERROR);
71922	    }
71923	    str_space += slen;
71924	    break;
71925	case DW_MACINFO_start_file:
71926	    /* line, file index */
71927	    (void) _dwarf_decode_u_leb128(pnext, &len);
71928	    pnext += len;
71929	    if (((pnext - macro_base)) >= dbg->de_debug_macinfo_size) {
71930		_dwarf_error(dbg, error,
71931			     DW_DLE_DEBUG_MACRO_INCONSISTENT);
71932		return (DW_DLV_ERROR);
71933	    }
71934	    (void) _dwarf_decode_u_leb128(pnext, &len);
71935	    pnext += len;
71936	    if (((pnext - macro_base)) >= dbg->de_debug_macinfo_size) {
71937		_dwarf_error(dbg, error,
71938			     DW_DLE_DEBUG_MACRO_INCONSISTENT);
71939		return (DW_DLV_ERROR);
71940	    }
71941	    ++depth;
71942	    break;
71943
71944	case DW_MACINFO_end_file:
71945	    if (--depth == 0) {
71946		done = 1;
71947	    }
71948	    break;		/* no string or number here */
71949	case 0:
71950	    /* end of cu's entries */
71951	    done = 1;
71952	    break;
71953	default:
71954	    _dwarf_error(dbg, error, DW_DLE_DEBUG_MACRO_INCONSISTENT);
71955	    return (DW_DLV_ERROR);
71956	    /* bogus macinfo! */
71957	}
71958
71959	endloc = (pnext - macro_base);
71960	if (endloc == dbg->de_debug_macinfo_size) {
71961	    done = 1;
71962	} else if (endloc > dbg->de_debug_macinfo_size) {
71963	    _dwarf_error(dbg, error, DW_DLE_DEBUG_MACRO_LENGTH_BAD);
71964	    return (DW_DLV_ERROR);
71965	}
71966    }
71967    if (count == 0) {
71968	_dwarf_error(dbg, error, DW_DLE_DEBUG_MACRO_INTERNAL_ERR);
71969	return (DW_DLV_ERROR);
71970    }
71971
71972    /* we have 'count' array entries to allocate and str_space bytes of
71973       string space to provide for. */
71974
71975    string_offset = count * sizeof(Dwarf_Macro_Details);
71976
71977    /* extra 2 not really needed */
71978    space_needed = string_offset + str_space + 2;
71979    return_data = pdata =
71980	_dwarf_get_alloc(dbg, DW_DLA_STRING, space_needed);
71981    latest_str_loc = pdata + string_offset;
71982    if (pdata == 0) {
71983	_dwarf_error(dbg, error, DW_DLE_DEBUG_MACRO_MALLOC_SPACE);
71984	return (DW_DLV_ERROR);
71985    }
71986    pnext = macro_base + macro_offset;
71987
71988    done = 0;
71989
71990    for (final_count = 0; !done && final_count < count; ++final_count) {
71991	unsigned long slen;
71992	Dwarf_Word len;
71993	Dwarf_Unsigned v1;
71994	Dwarf_Macro_Details *pdmd = (Dwarf_Macro_Details *) (pdata +
71995							     final_count
71996							     *
71997							     sizeof
71998							     (Dwarf_Macro_Details));
71999
72000	endloc = (pnext - macro_base);
72001	if (endloc > dbg->de_debug_macinfo_size) {
72002	    _dwarf_error(dbg, error, DW_DLE_DEBUG_MACRO_LENGTH_BAD);
72003	    return (DW_DLV_ERROR);
72004	}
72005	uc = *pnext;
72006	pdmd->dmd_offset = (pnext - macro_base);
72007	pdmd->dmd_type = uc;
72008	pdmd->dmd_fileindex = fileindex;
72009	pdmd->dmd_lineno = 0;
72010	pdmd->dmd_macro = 0;
72011	++pnext;		/* get past the type code */
72012	switch (uc) {
72013	case DW_MACINFO_define:
72014	case DW_MACINFO_undef:
72015	    /* line, string */
72016	case DW_MACINFO_vendor_ext:
72017	    /* number, string */
72018	    v1 = _dwarf_decode_u_leb128(pnext, &len);
72019	    pdmd->dmd_lineno = v1;
72020
72021	    pnext += len;
72022	    if (((pnext - macro_base)) >= dbg->de_debug_macinfo_size) {
72023		_dwarf_error(dbg, error,
72024			     DW_DLE_DEBUG_MACRO_INCONSISTENT);
72025		return (DW_DLV_ERROR);
72026	    }
72027	    slen = strlen((char *) pnext) + 1;
72028	    strcpy((char *) latest_str_loc, (char *) pnext);
72029	    pdmd->dmd_macro = (char *) latest_str_loc;
72030	    latest_str_loc += slen;
72031	    pnext += slen;
72032	    if (((pnext - macro_base)) >= dbg->de_debug_macinfo_size) {
72033		_dwarf_error(dbg, error,
72034			     DW_DLE_DEBUG_MACRO_INCONSISTENT);
72035		return (DW_DLV_ERROR);
72036	    }
72037	    str_space += slen;
72038	    break;
72039	case DW_MACINFO_start_file:
72040	    /* line, file index */
72041	    v1 = _dwarf_decode_u_leb128(pnext, &len);
72042	    pdmd->dmd_lineno = v1;
72043	    pnext += len;
72044	    if (((pnext - macro_base)) >= dbg->de_debug_macinfo_size) {
72045		_dwarf_error(dbg, error,
72046			     DW_DLE_DEBUG_MACRO_INCONSISTENT);
72047		return (DW_DLV_ERROR);
72048	    }
72049	    v1 = _dwarf_decode_u_leb128(pnext, &len);
72050	    pdmd->dmd_fileindex = v1;
72051	    (void) _dwarf_mac_push_index(dbg, fileindex);
72052	    /* we ignore the error, we just let fileindex ** be -1 when
72053	       we pop this one */
72054	    fileindex = v1;
72055	    pnext += len;
72056	    if (((pnext - macro_base)) >= dbg->de_debug_macinfo_size) {
72057		_dwarf_error(dbg, error,
72058			     DW_DLE_DEBUG_MACRO_INCONSISTENT);
72059		return (DW_DLV_ERROR);
72060	    }
72061	    break;
72062
72063	case DW_MACINFO_end_file:
72064	    fileindex = _dwarf_mac_pop_index();
72065	    break;		/* no string or number here */
72066	case 0:
72067	    /* end of cu's entries */
72068	    done = 1;
72069	    break;
72070	default:
72071	    _dwarf_error(dbg, error, DW_DLE_DEBUG_MACRO_INCONSISTENT);
72072	    return (DW_DLV_ERROR);
72073	    /* bogus macinfo! */
72074	}
72075    }
72076    *entry_count = count;
72077    *details = (Dwarf_Macro_Details *) return_data;
72078
72079    return DW_DLV_OK;
72080}
72081���0707010001ad7b0000812400011e740000000a000000014020682700000577000000660000000000000000000000000000001700000000libdwarf/dwarf_macro.h����/*
72082
72083  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
72084
72085  This program is free software; you can redistribute it and/or modify it
72086  under the terms of version 2.1 of the GNU Lesser General Public License
72087  as published by the Free Software Foundation.
72088
72089  This program is distributed in the hope that it would be useful, but
72090  WITHOUT ANY WARRANTY; without even the implied warranty of
72091  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
72092
72093  Further, this software is distributed without any warranty that it is
72094  free of the rightful claim of any third person regarding infringement
72095  or the like.  Any license provided herein, whether implied or
72096  otherwise, applies only to this software file.  Patent licenses, if
72097  any, provided herein do not apply to combinations of this program with
72098  other software, or any other product whatsoever.
72099
72100  You should have received a copy of the GNU Lesser General Public
72101  License along with this program; if not, write the Free Software
72102  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
72103  USA.
72104
72105  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
72106  Mountain View, CA 94043, or:
72107
72108  http://www.sgi.com
72109
72110  For further information regarding this notice, see:
72111
72112  http://oss.sgi.com/projects/GenInfo/NoticeExplan
72113
72114*/
72115
72116
72117/*
72118
72119
72120   dwarf_macro.h
72121
72122   $Revision: 1.3 $    $Date: 2001/09/18 19:23:55 $
72123
72124*/
72125�0707010001ad7c000081a400011e740000000a000000014046f2520000236d000000660000000000000000000000000000001800000000libdwarf/dwarf_opaque.h���/*
72126
72127  Copyright (C) 2000,2002,2003 Silicon Graphics, Inc.  All Rights Reserved.
72128
72129  This program is free software; you can redistribute it and/or modify it
72130  under the terms of version 2.1 of the GNU Lesser General Public License
72131  as published by the Free Software Foundation.
72132
72133  This program is distributed in the hope that it would be useful, but
72134  WITHOUT ANY WARRANTY; without even the implied warranty of
72135  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
72136
72137  Further, this software is distributed without any warranty that it is
72138  free of the rightful claim of any third person regarding infringement
72139  or the like.  Any license provided herein, whether implied or
72140  otherwise, applies only to this software file.  Patent licenses, if
72141  any, provided herein do not apply to combinations of this program with
72142  other software, or any other product whatsoever.
72143
72144  You should have received a copy of the GNU Lesser General Public
72145  License along with this program; if not, write the Free Software
72146  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
72147  USA.
72148
72149  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
72150  Mountain View, CA 94043, or:
72151
72152  http://www.sgi.com
72153
72154  For further information regarding this notice, see:
72155
72156  http://oss.sgi.com/projects/GenInfo/NoticeExplan
72157
72158*/
72159
72160#include <stddef.h>
72161
72162
72163struct Dwarf_Die_s {
72164    /*
72165       Points to the start of the portion corresponding to this Die in
72166       the .debug_info section. */
72167    Dwarf_Byte_Ptr di_debug_info_ptr;
72168
72169    Dwarf_Abbrev_List di_abbrev_list;
72170
72171    /* Points to cu context for this die.  */
72172    Dwarf_CU_Context di_cu_context;
72173};
72174
72175struct Dwarf_Attribute_s {
72176    Dwarf_Half ar_attribute;	/* Attribute Value. */
72177    Dwarf_Half ar_attribute_form;	/* Attribute Form. */
72178    Dwarf_Half ar_attribute_form_direct;
72179	        /* Identical to ar_attribute_form except that if
72180		the original form uleb was DW_FORM_indirect,
72181		ar_attribute_form_direct contains DW_FORM_indirect
72182		but ar_attribute_form contains the true form. */
72183
72184    Dwarf_CU_Context ar_cu_context;
72185    Dwarf_Small *ar_debug_info_ptr;
72186    Dwarf_Attribute ar_next;
72187};
72188
72189/*
72190    This structure provides the context for a compilation unit.
72191    Thus, it contains the Dwarf_Debug, cc_dbg, that this cu
72192    belongs to.  It contains the information in the compilation
72193    unit header, cc_length, cc_version_stamp, cc_abbrev_offset,
72194    and cc_address_size, in the .debug_info section for that cu.
72195    In addition, it contains the count, cc_count_cu, of the cu
72196    number of that cu in the list of cu's in the .debug_info.
72197    The count starts at 1, ie cc_count_cu is 1 for the first cu,
72198    2 for the second and so on.  This struct also contains a
72199    pointer, cc_abbrev_table, to a list of pairs of abbrev code
72200    and a pointer to the start of that abbrev
72201    in the .debug_abbrev section.
72202
72203    Each die will also contain a pointer to such a struct to
72204    record the context for that die.
72205
72206    **Updated by dwarf_next_cu_header in dwarf_die_deliv.c
72207*/
72208struct Dwarf_CU_Context_s {
72209    Dwarf_Debug cc_dbg;
72210    Dwarf_Word cc_length;
72211    Dwarf_Small cc_length_size;
72212    Dwarf_Small cc_extension_size;
72213    Dwarf_Half cc_version_stamp;
72214    Dwarf_Sword cc_abbrev_offset;
72215    Dwarf_Small cc_address_size;
72216    Dwarf_Word cc_debug_info_offset;
72217    Dwarf_Byte_Ptr cc_last_abbrev_ptr;
72218    Dwarf_Hash_Table cc_abbrev_hash_table;
72219    Dwarf_CU_Context cc_next;
72220    unsigned char cc_offset_length;
72221};
72222
72223
72224struct Dwarf_Debug_s {
72225    dwarf_elf_handle de_elf; /* see de_elf_must_close at end of struct */
72226    unsigned int de_nelfsecs;
72227
72228    Dwarf_Unsigned de_access;
72229    Dwarf_Handler de_errhand;
72230    Dwarf_Ptr de_errarg;
72231
72232    /*
72233       Context for the compilation_unit just read by a call to
72234       dwarf_next_cu_header. **Updated by dwarf_next_cu_header in
72235       dwarf_die_deliv.c */
72236    Dwarf_CU_Context de_cu_context;
72237
72238    /*
72239       Points to linked list of CU Contexts for the CU's already read.
72240       These are only CU's read by dwarf_next_cu_header(). */
72241    Dwarf_CU_Context de_cu_context_list;
72242
72243    /*
72244       Points to the last CU Context added to the list by
72245       dwarf_next_cu_header(). */
72246    Dwarf_CU_Context de_cu_context_list_end;
72247
72248    /*
72249       This is the list of CU contexts read for dwarf_offdie().  These
72250       may read ahead of dwarf_next_cu_header(). */
72251    Dwarf_CU_Context de_offdie_cu_context;
72252    Dwarf_CU_Context de_offdie_cu_context_end;
72253
72254    /* Offset of last byte of last CU read. */
72255    Dwarf_Word de_info_last_offset;
72256
72257    /*
72258       Number of bytes in the length, and offset field in various
72259       .debug_* sections.  It's not very meaningful, and is
72260       only used in one 'approximate' calculation.  */
72261    Dwarf_Small de_length_size;
72262
72263    /* number of bytes in a pointer of the target in various .debug_
72264       sections. 4 in 32bit, 8 in MIPS 64, ia64. */
72265    Dwarf_Small de_pointer_size;
72266
72267    /* set at creation of a Dwarf_Debug to say if form_string should be
72268       checked for valid length at every call. 0 means do the check.
72269       non-zero means do not do the check. */
72270    Dwarf_Small de_assume_string_in_bounds;
72271
72272    /*
72273       Dwarf_Alloc_Hdr_s structs used to manage chunks that are
72274       malloc'ed for each allocation type for structs. */
72275    struct Dwarf_Alloc_Hdr_s de_alloc_hdr[ALLOC_AREA_REAL_TABLE_MAX];
72276#ifdef DWARF_SIMPLE_MALLOC
72277    struct simple_malloc_record_s *  de_simple_malloc_base;
72278    struct simple_malloc_record_s *  de_simple_malloc_current;
72279#endif
72280
72281
72282    /*
72283       These fields are used to process debug_frame section.  **Updated
72284       by dwarf_get_fde_list in dwarf_frame.h */
72285    /*
72286       Points to contiguous block of pointers to Dwarf_Cie_s structs. */
72287    Dwarf_Cie *de_cie_data;
72288    /* Count of number of Dwarf_Cie_s structs. */
72289    Dwarf_Signed de_cie_count;
72290    /*
72291       Points to contiguous block of pointers to Dwarf_Fde_s structs. */
72292    Dwarf_Fde *de_fde_data;
72293    /* Count of number of Dwarf_Fde_s structs. */
72294    Dwarf_Signed de_fde_count;
72295
72296    Dwarf_Small *de_debug_info;
72297    Dwarf_Small *de_debug_abbrev;
72298    Dwarf_Small *de_debug_line;
72299    Dwarf_Small *de_debug_loc;
72300    Dwarf_Small *de_debug_aranges;
72301    Dwarf_Small *de_debug_macinfo;
72302    Dwarf_Small *de_debug_pubnames;
72303    Dwarf_Small *de_debug_str;
72304    Dwarf_Small *de_debug_frame;
72305    Dwarf_Small *de_debug_frame_eh_gnu;	/* gnu for the g++ eh_frame
72306					   section */
72307
72308    Dwarf_Small *de_debug_funcnames;
72309    Dwarf_Small *de_debug_typenames;
72310    Dwarf_Small *de_debug_varnames;
72311    Dwarf_Small *de_debug_weaknames;
72312
72313    Dwarf_Unsigned de_debug_info_size;
72314    Dwarf_Unsigned de_debug_abbrev_size;
72315    Dwarf_Unsigned de_debug_line_size;
72316    Dwarf_Unsigned de_debug_loc_size;
72317    Dwarf_Unsigned de_debug_aranges_size;
72318    Dwarf_Unsigned de_debug_macinfo_size;
72319    Dwarf_Unsigned de_debug_pubnames_size;
72320    Dwarf_Unsigned de_debug_str_size;
72321
72322
72323    Dwarf_Unsigned de_debug_frame_size;
72324
72325    Dwarf_Unsigned de_debug_frame_size_eh_gnu;	/* gnu for the g++
72326					   eh_frame section */
72327
72328    Dwarf_Unsigned de_debug_funcnames_size;
72329    Dwarf_Unsigned de_debug_typenames_size;
72330    Dwarf_Unsigned de_debug_varnames_size;
72331    Dwarf_Unsigned de_debug_weaknames_size;
72332
72333    void *(*de_copy_word) (void *, const void *, size_t);
72334    unsigned char de_same_endian;
72335    unsigned char de_elf_must_close; /* if non-zero, then
72336	it was dwarf_init (not dwarf_elf_init)
72337	so must elf_end() */
72338
72339    /*
72340       The following are used for storing section indicies.
72341
72342       After a Dwarf_Debug is initialized, a zero for any of
72343       these indicies indicates an absent section.
72344
72345       If the ELF spec is ever changed to permit 32-bit section
72346       indicies, these will need to be changed.
72347     */
72348    Dwarf_Half de_debug_aranges_index;
72349    Dwarf_Half de_debug_line_index;
72350    Dwarf_Half de_debug_loc_index;
72351    Dwarf_Half de_debug_macinfo_index;
72352    Dwarf_Half de_debug_pubnames_index;
72353    Dwarf_Half de_debug_funcnames_index;
72354    Dwarf_Half de_debug_typenames_index;
72355    Dwarf_Half de_debug_varnames_index;
72356    Dwarf_Half de_debug_weaknames_index;
72357    Dwarf_Half de_debug_frame_index;
72358    Dwarf_Half de_debug_frame_eh_gnu_index;
72359    Dwarf_Half de_debug_str_index;
72360    Dwarf_Half de_debug_info_index;
72361    Dwarf_Half de_debug_abbrev_index;
72362    unsigned char de_big_endian_object; /* non-zero if big-endian
72363		object opened. */
72364};
72365
72366typedef struct Dwarf_Chain_s *Dwarf_Chain;
72367struct Dwarf_Chain_s {
72368    void *ch_item;
72369    Dwarf_Chain ch_next;
72370};
72371
72372#define CURRENT_VERSION_STAMP		2
72373
72374    /* Size of cu header version stamp field. */
72375#define CU_VERSION_STAMP_SIZE   sizeof(Dwarf_Half)
72376
72377    /* Size of cu header address size field. */
72378#define CU_ADDRESS_SIZE_SIZE	sizeof(Dwarf_Small)
72379
72380void *_dwarf_memcpy_swap_bytes(void *s1, const void *s2, size_t len);
72381
72382#define ORIGINAL_DWARF_OFFSET_SIZE  4
72383#define DISTINGUISHED_VALUE  0xffffffff
72384#define DISTINGUISHED_VALUE_OFFSET_SIZE 8
72385
72386/*
72387    We don't load the sections until they are needed. This function is
72388    used to load the section.
72389 */
72390int _dwarf_load_section(Dwarf_Debug,
72391		        Dwarf_Half,
72392			Dwarf_Small **,
72393			Dwarf_Error *);
72394���0707010001ad7d0000812400011e740000000a00000001402068270000454c000000660000000000000000000000000000001d00000000libdwarf/dwarf_print_lines.c��/*
72395
72396  Copyright (C) 2000,2002,2004 Silicon Graphics, Inc.  All Rights Reserved.
72397
72398  This program is free software; you can redistribute it and/or modify it
72399  under the terms of version 2.1 of the GNU Lesser General Public License
72400  as published by the Free Software Foundation.
72401
72402  This program is distributed in the hope that it would be useful, but
72403  WITHOUT ANY WARRANTY; without even the implied warranty of
72404  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
72405
72406  Further, this software is distributed without any warranty that it is
72407  free of the rightful claim of any third person regarding infringement
72408  or the like.  Any license provided herein, whether implied or
72409  otherwise, applies only to this software file.  Patent licenses, if
72410  any, provided herein do not apply to combinations of this program with
72411  other software, or any other product whatsoever.
72412
72413  You should have received a copy of the GNU Lesser General Public
72414  License along with this program; if not, write the Free Software
72415  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
72416  USA.
72417
72418  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
72419  Mountain View, CA 94043, or:
72420
72421  http://www.sgi.com
72422
72423  For further information regarding this notice, see:
72424
72425  http://oss.sgi.com/projects/GenInfo/NoticeExplan
72426
72427*/
72428
72429
72430
72431#include "config.h"
72432#include "dwarf_incl.h"
72433#include <stdio.h>
72434#include <time.h>
72435#include "dwarf_line.h"
72436#ifdef HAVE_ALLOCA_H
72437#include <alloca.h>
72438#endif
72439
72440static void
72441print_line_header(void)
72442{
72443    printf
72444	("                                                         s b e\n"
72445	 "                                                         t l s\n"
72446	 "                                                         m c e\n"
72447	 " section    op                                       col t k q\n"
72448	 " offset     code               address     file line umn ? ? ?\n");
72449}
72450
72451static void
72452print_line_detail(char *prefix,
72453		  int opcode,
72454		  unsigned long long address,
72455		  unsigned long file,
72456		  unsigned long line,
72457		  unsigned long column,
72458		  int is_stmt, int basic_block, int end_sequence)
72459{
72460    printf("%-15s %2d 0x%08llx "
72461	   "%2lu   %4lu %2lu   %1d %1d %1d\n",
72462	   prefix,
72463	   (int) opcode,
72464	   (long long) address,
72465	   (unsigned long) file,
72466	   (unsigned long) line,
72467	   (unsigned long) column,
72468	   (int) is_stmt, (int) basic_block, (int) end_sequence);
72469
72470}
72471
72472
72473/*
72474	return DW_DLV_OK if ok. else DW_DLV_NO_ENTRY or DW_DLV_ERROR
72475*/
72476int
72477_dwarf_internal_printlines(Dwarf_Die die, Dwarf_Error * error)
72478{
72479    /*
72480       This pointer is used to scan the portion of the .debug_line
72481       section for the current cu. */
72482    Dwarf_Small *line_ptr;
72483    Dwarf_Small *orig_line_ptr;
72484
72485    /*
72486       This points to the last byte of the .debug_line portion for the
72487       current cu. */
72488    Dwarf_Small *line_ptr_end;
72489
72490    /*
72491       This points to the end of the statement program prologue for the
72492       current cu, and serves to check that the prologue was correctly
72493       decoded. */
72494    Dwarf_Small *check_line_ptr;
72495
72496    /*
72497       Pointer to a DW_AT_stmt_list attribute in case it exists in the
72498       die. */
72499    Dwarf_Attribute stmt_list_attr;
72500
72501    /* Pointer to DW_AT_comp_dir attribute in die. */
72502    Dwarf_Attribute comp_dir_attr;
72503
72504    /* Pointer to name of compilation directory. */
72505    Dwarf_Small *comp_dir = NULL;
72506
72507    /*
72508       Offset into .debug_line specified by a DW_AT_stmt_list
72509       attribute. */
72510    Dwarf_Unsigned line_offset;
72511
72512    /* These are the fields of the statement program header. */
72513    Dwarf_Unsigned total_length;
72514    Dwarf_Half version;
72515    Dwarf_Unsigned prologue_length;
72516    Dwarf_Small minimum_instruction_length;
72517    Dwarf_Small default_is_stmt;
72518    Dwarf_Sbyte line_base;
72519    Dwarf_Small line_range;
72520    Dwarf_Small opcode_base;
72521
72522    Dwarf_Small *opcode_length;
72523
72524    /* These are the state machine state variables. */
72525    Dwarf_Addr address;
72526    Dwarf_Word file;
72527    Dwarf_Word line;
72528    Dwarf_Word column;
72529    Dwarf_Bool is_stmt;
72530    Dwarf_Bool basic_block;
72531    Dwarf_Bool end_sequence;
72532
72533    Dwarf_Sword i, file_entry_count, include_directories_count;
72534
72535    /*
72536       This is the current opcode read from the statement program. */
72537    Dwarf_Small opcode;
72538
72539    /*
72540       Pointer to a Dwarf_Line_Context_s structure that contains the
72541       context such as file names and include directories for the set
72542       of lines being generated. */
72543    Dwarf_Line_Context line_context;
72544
72545
72546    /*
72547       These variables are used to decode leb128 numbers. Leb128_num
72548       holds the decoded number, and leb128_length is its length in
72549       bytes. */
72550    Dwarf_Word leb128_num;
72551    Dwarf_Word leb128_length;
72552    Dwarf_Sword advance_line;
72553
72554    /*
72555       This is the operand of the latest fixed_advance_pc extended
72556       opcode. */
72557    Dwarf_Half fixed_advance_pc;
72558
72559    /* This is the length of an extended opcode instr.  */
72560    Dwarf_Word instr_length;
72561    Dwarf_Small ext_opcode;
72562    int local_length_size;
72563    /*REFERENCED*/ /* Not used in this instance of the macro */
72564    int local_extension_size;
72565
72566    /* The Dwarf_Debug this die belongs to. */
72567    Dwarf_Debug dbg;
72568    int resattr;
72569    int lres;
72570
72571    int res;
72572
72573    /* ***** BEGIN CODE ***** */
72574
72575    if (error != NULL)
72576	*error = NULL;
72577
72578    CHECK_DIE(die, DW_DLV_ERROR)
72579	dbg = die->di_cu_context->cc_dbg;
72580
72581    res =
72582       _dwarf_load_section(dbg,
72583		           dbg->de_debug_line_index,
72584			   &dbg->de_debug_line,
72585		           error);
72586    if (res != DW_DLV_OK) {
72587	return res;
72588    }
72589
72590    resattr = dwarf_attr(die, DW_AT_stmt_list, &stmt_list_attr, error);
72591    if (resattr != DW_DLV_OK) {
72592	return resattr;
72593    }
72594
72595
72596
72597    lres = dwarf_formudata(stmt_list_attr, &line_offset, error);
72598    if (lres != DW_DLV_OK) {
72599	return lres;
72600    }
72601
72602    if (line_offset >= dbg->de_debug_line_size) {
72603	_dwarf_error(dbg, error, DW_DLE_LINE_OFFSET_BAD);
72604	return (DW_DLV_ERROR);
72605    }
72606    orig_line_ptr = dbg->de_debug_line;
72607    line_ptr = dbg->de_debug_line + line_offset;
72608    dwarf_dealloc(dbg, stmt_list_attr, DW_DLA_ATTR);
72609
72610    /*
72611       If die has DW_AT_comp_dir attribute, get the string that names
72612       the compilation directory. */
72613    resattr = dwarf_attr(die, DW_AT_comp_dir, &comp_dir_attr, error);
72614    if (resattr == DW_DLV_ERROR) {
72615	return resattr;
72616    }
72617    if (resattr == DW_DLV_OK) {
72618	int cres;
72619	char *cdir;
72620
72621	cres = dwarf_formstring(comp_dir_attr, &cdir, error);
72622	if (cres == DW_DLV_ERROR) {
72623	    return cres;
72624	} else if (cres == DW_DLV_OK) {
72625	    comp_dir = (Dwarf_Small *) cdir;
72626	}
72627    }
72628    if (resattr == DW_DLV_OK) {
72629	dwarf_dealloc(dbg, comp_dir_attr, DW_DLA_ATTR);
72630    }
72631
72632    /*
72633       Following is a straightforward decoding of the statement
72634       program prologue information. */
72635
72636    /* READ_AREA_LENGTH updates line_ptr for consumed bytes */
72637    READ_AREA_LENGTH(dbg, total_length, Dwarf_Unsigned,
72638		     line_ptr, local_length_size, local_extension_size);
72639
72640
72641
72642    line_ptr_end = line_ptr + total_length;
72643    if (line_ptr_end > dbg->de_debug_line + dbg->de_debug_line_size) {
72644	_dwarf_error(dbg, error, DW_DLE_DEBUG_LINE_LENGTH_BAD);
72645	return (DW_DLV_ERROR);
72646    }
72647
72648    printf("total line info length %ld bytes, "
72649	   "line offset 0x%llx %lld\n",
72650	   (long) total_length,
72651	   (long long) line_offset, (long long) line_offset);
72652    printf("compilation_directory %s\n",
72653	   comp_dir ? ((char *) comp_dir) : "");
72654    READ_UNALIGNED(dbg, version, Dwarf_Half,
72655		   line_ptr, sizeof(Dwarf_Half));
72656    line_ptr += sizeof(Dwarf_Half);
72657    if (version != CURRENT_VERSION_STAMP) {
72658	_dwarf_error(dbg, error, DW_DLE_VERSION_STAMP_ERROR);
72659	return (DW_DLV_ERROR);
72660    }
72661
72662    READ_UNALIGNED(dbg, prologue_length, Dwarf_Unsigned,
72663		   line_ptr, local_length_size);
72664    line_ptr += local_length_size;
72665    check_line_ptr = line_ptr;
72666
72667    minimum_instruction_length = *(Dwarf_Small *) line_ptr;
72668    line_ptr = line_ptr + sizeof(Dwarf_Small);
72669
72670    default_is_stmt = *(Dwarf_Small *) line_ptr;
72671    line_ptr = line_ptr + sizeof(Dwarf_Small);
72672
72673    line_base = *(Dwarf_Sbyte *) line_ptr;
72674    line_ptr = line_ptr + sizeof(Dwarf_Sbyte);
72675
72676    line_range = *(Dwarf_Small *) line_ptr;
72677    line_ptr = line_ptr + sizeof(Dwarf_Small);
72678
72679    opcode_base = *(Dwarf_Small *) line_ptr;
72680    line_ptr = line_ptr + sizeof(Dwarf_Small);
72681    printf("  min instruction length %d\n",
72682	   (int) minimum_instruction_length);
72683    printf("  default is stmt        %d\n", (int) default_is_stmt);
72684    printf("  line base              %d\n", (int) line_base);
72685    printf("  line_range             %d\n", (int) line_range);
72686
72687    opcode_length = (Dwarf_Small *)
72688	alloca(sizeof(Dwarf_Small) * opcode_base);
72689
72690    for (i = 1; i < opcode_base; i++) {
72691	opcode_length[i] = *(Dwarf_Small *) line_ptr;
72692	printf("  opcode[%d] length %d\n", (int) i,
72693	       (int) opcode_length[i]);
72694	line_ptr = line_ptr + sizeof(Dwarf_Small);
72695    }
72696
72697    include_directories_count = 0;
72698    while ((*(char *) line_ptr) != '\0') {
72699	printf("  include dir[%d] %s\n",
72700	       (int) include_directories_count, line_ptr);
72701	line_ptr = line_ptr + strlen((char *) line_ptr) + 1;
72702	include_directories_count++;
72703    }
72704    line_ptr++;
72705
72706    file_entry_count = 0;
72707    while (*(char *) line_ptr != '\0') {
72708
72709	Dwarf_Unsigned tlm2;
72710	Dwarf_Unsigned di;
72711	Dwarf_Unsigned fl;
72712
72713	printf("  file[%d]  %s\n",
72714	       (int) file_entry_count, (char *) line_ptr);
72715
72716	line_ptr = line_ptr + strlen((char *) line_ptr) + 1;
72717
72718	di = _dwarf_decode_u_leb128(line_ptr, &leb128_length);
72719	line_ptr = line_ptr + leb128_length;
72720
72721	tlm2 = _dwarf_decode_u_leb128(line_ptr, &leb128_length);
72722	line_ptr = line_ptr + leb128_length;
72723
72724	fl = _dwarf_decode_u_leb128(line_ptr, &leb128_length);
72725	line_ptr = line_ptr + leb128_length;
72726
72727	printf("    dir index %d\n", (int) di);
72728	{
72729	    time_t tt = (time_t) tlm2;
72730
72731	    printf("    last time 0x%x %s",	/* ctime supplies
72732						   newline */
72733		   (unsigned) tlm2, ctime(&tt));
72734	}
72735	printf("    file length %ld 0x%lx\n",
72736	       (long) fl, (unsigned long) fl);
72737
72738
72739	file_entry_count++;
72740    }
72741    line_ptr++;
72742
72743    if (line_ptr != check_line_ptr + prologue_length) {
72744	_dwarf_error(dbg, error, DW_DLE_LINE_PROLOG_LENGTH_BAD);
72745	return (DW_DLV_ERROR);
72746    }
72747
72748    /* Set up context structure for this set of lines. */
72749    line_context = (Dwarf_Line_Context)
72750	_dwarf_get_alloc(dbg, DW_DLA_LINE_CONTEXT, 1);
72751    if (line_context == NULL) {
72752	_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
72753	return (DW_DLV_ERROR);
72754    }
72755
72756    printf("  statement prog offset in section: %lld 0x%llx\n",
72757	   (long long) (line_ptr - orig_line_ptr),
72758	   (long long) (line_ptr - orig_line_ptr));
72759
72760    /* Initialize the state machine.  */
72761    address = 0;
72762    file = 1;
72763    line = 1;
72764    column = 0;
72765    is_stmt = default_is_stmt;
72766    basic_block = false;
72767    end_sequence = false;
72768
72769    print_line_header();
72770    /* Start of statement program.  */
72771    while (line_ptr < line_ptr_end) {
72772	int type;
72773
72774	printf(" [0x%06llx] ", (long long) (line_ptr - orig_line_ptr));
72775	opcode = *(Dwarf_Small *) line_ptr;
72776	line_ptr++;
72777	/* 'type' is the output */
72778	WHAT_IS_OPCODE(type, opcode, opcode_base,
72779		       opcode_length, line_ptr);
72780
72781
72782
72783	if (type == LOP_DISCARD) {
72784	    /* do nothing, necessary ops done */
72785	} else if (type == LOP_SPECIAL) {
72786	    /* This op code is a special op in the object, no matter
72787	       that it might fall into the standard op range in this
72788	       compile Thatis, these are special opcodes between
72789	       special_opcode_base and MAX_LINE_OP_CODE.  (including
72790	       special_opcode_base and MAX_LINE_OP_CODE) */
72791	    char special[50];
72792	    unsigned origop = opcode;
72793
72794	    opcode = opcode - opcode_base;
72795	    address = address + minimum_instruction_length *
72796		(opcode / line_range);
72797	    line = line + line_base + opcode % line_range;
72798
72799	    sprintf(special, "Specialop %3u", origop);
72800	    print_line_detail(special,
72801			      opcode, address, (int) file, line, column,
72802			      is_stmt, basic_block, end_sequence);
72803
72804	    basic_block = false;
72805
72806	} else if (type == LOP_STANDARD) {
72807	    switch (opcode) {
72808
72809	    case DW_LNS_copy:{
72810		    if (opcode_length[DW_LNS_copy] != 0) {
72811			_dwarf_error(dbg, error,
72812				     DW_DLE_LINE_NUM_OPERANDS_BAD);
72813			return (DW_DLV_ERROR);
72814		    }
72815
72816		    print_line_detail("DW_LNS_copy",
72817				      opcode, address, file, line,
72818				      column, is_stmt, basic_block,
72819				      end_sequence);
72820
72821		    basic_block = false;
72822		    break;
72823		}
72824
72825	    case DW_LNS_advance_pc:{
72826		    Dwarf_Unsigned utmp2;
72827
72828		    if (opcode_length[DW_LNS_advance_pc] != 1) {
72829			_dwarf_error(dbg, error,
72830				     DW_DLE_LINE_NUM_OPERANDS_BAD);
72831			return (DW_DLV_ERROR);
72832		    }
72833
72834		    DECODE_LEB128_UWORD(line_ptr, utmp2)
72835			printf("DW_LNS_advance_pc val %lld 0x%llx\n",
72836			       (long long) (Dwarf_Word) utmp2,
72837			       (long long) (Dwarf_Word) utmp2);
72838		    leb128_num = (Dwarf_Word) utmp2;
72839		    address =
72840			address +
72841			minimum_instruction_length * leb128_num;
72842		    break;
72843		}
72844
72845	    case DW_LNS_advance_line:{
72846		    Dwarf_Signed stmp;
72847
72848		    if (opcode_length[DW_LNS_advance_line] != 1) {
72849			_dwarf_error(dbg, error,
72850				     DW_DLE_LINE_NUM_OPERANDS_BAD);
72851			return (DW_DLV_ERROR);
72852		    }
72853
72854		    DECODE_LEB128_SWORD(line_ptr, stmp)
72855			advance_line = (Dwarf_Sword) stmp;
72856		    printf("DW_LNS_advance_line val %lld 0x%llx\n",
72857			   (long long) advance_line,
72858			   (long long) advance_line);
72859		    line = line + advance_line;
72860		    break;
72861		}
72862
72863	    case DW_LNS_set_file:{
72864		    Dwarf_Unsigned utmp2;
72865
72866		    if (opcode_length[DW_LNS_set_file] != 1) {
72867			_dwarf_error(dbg, error,
72868				     DW_DLE_LINE_NUM_OPERANDS_BAD);
72869			return (DW_DLV_ERROR);
72870		    }
72871
72872		    DECODE_LEB128_UWORD(line_ptr, utmp2)
72873			file = (Dwarf_Word) utmp2;
72874		    printf("DW_LNS_set_file  %ld\n", (long) file);
72875		    break;
72876		}
72877
72878	    case DW_LNS_set_column:{
72879		    Dwarf_Unsigned utmp2;
72880
72881		    if (opcode_length[DW_LNS_set_column] != 1) {
72882			_dwarf_error(dbg, error,
72883				     DW_DLE_LINE_NUM_OPERANDS_BAD);
72884			return (DW_DLV_ERROR);
72885		    }
72886
72887		    DECODE_LEB128_UWORD(line_ptr, utmp2)
72888			column = (Dwarf_Word) utmp2;
72889		    printf("DW_LNS_set_column val %lld 0x%llx\n",
72890			   (long long) column, (long long) column);
72891		    break;
72892		}
72893
72894	    case DW_LNS_negate_stmt:{
72895		    if (opcode_length[DW_LNS_negate_stmt] != 0) {
72896			_dwarf_error(dbg, error,
72897				     DW_DLE_LINE_NUM_OPERANDS_BAD);
72898			return (DW_DLV_ERROR);
72899		    }
72900
72901		    is_stmt = !is_stmt;
72902		    printf("DW_LNS_negate_stmt\n");
72903		    break;
72904		}
72905
72906	    case DW_LNS_set_basic_block:{
72907		    if (opcode_length[DW_LNS_set_basic_block] != 0) {
72908			_dwarf_error(dbg, error,
72909				     DW_DLE_LINE_NUM_OPERANDS_BAD);
72910			return (DW_DLV_ERROR);
72911		    }
72912
72913		    printf("DW_LNS_set_basic_block\n");
72914		    basic_block = true;
72915		    break;
72916		}
72917
72918	    case DW_LNS_const_add_pc:{
72919		    opcode = MAX_LINE_OP_CODE - opcode_base;
72920		    address = address + minimum_instruction_length *
72921			(opcode / line_range);
72922
72923		    printf("DW_LNS_const_add_pc new address 0x%llx\n",
72924			   (long long) address);
72925		    break;
72926		}
72927
72928	    case DW_LNS_fixed_advance_pc:{
72929		    if (opcode_length[DW_LNS_fixed_advance_pc] != 1) {
72930			_dwarf_error(dbg, error,
72931				     DW_DLE_LINE_NUM_OPERANDS_BAD);
72932			return (DW_DLV_ERROR);
72933		    }
72934
72935		    READ_UNALIGNED(dbg, fixed_advance_pc, Dwarf_Half,
72936				   line_ptr, sizeof(Dwarf_Half));
72937		    line_ptr += sizeof(Dwarf_Half);
72938		    address = address + fixed_advance_pc;
72939		    printf("DW_LNS_fixed_advance_pc val %lld 0x%llx"
72940			   " new address 0x%llx\n",
72941			   (long long) fixed_advance_pc,
72942			   (long long) fixed_advance_pc,
72943			   (long long) address);
72944		    break;
72945		}
72946	    }
72947
72948	} else if (type == LOP_EXTENDED) {
72949	    Dwarf_Unsigned utmp3;
72950
72951	    DECODE_LEB128_UWORD(line_ptr, utmp3)
72952		instr_length = (Dwarf_Word) utmp3;
72953	    ext_opcode = *(Dwarf_Small *) line_ptr;
72954	    line_ptr++;
72955	    switch (ext_opcode) {
72956
72957	    case DW_LNE_end_sequence:{
72958		    end_sequence = true;
72959
72960		    print_line_detail("DW_LNE_end_sequence extended",
72961				      opcode, address, file, line,
72962				      column, is_stmt, basic_block,
72963				      end_sequence);
72964
72965		    address = 0;
72966		    file = 1;
72967		    line = 1;
72968		    column = 0;
72969		    is_stmt = default_is_stmt;
72970		    basic_block = false;
72971		    end_sequence = false;
72972
72973		    break;
72974		}
72975
72976	    case DW_LNE_set_address:{
72977		    if (instr_length - 1 == dbg->de_pointer_size) {
72978			READ_UNALIGNED(dbg, address, Dwarf_Addr,
72979				       line_ptr, dbg->de_pointer_size);
72980
72981			line_ptr += dbg->de_pointer_size;
72982			printf("DW_LNE_set_address address 0x%llx\n",
72983			       (long long) address);
72984		    } else {
72985			_dwarf_error(dbg, error,
72986				     DW_DLE_LINE_SET_ADDR_ERROR);
72987			return (DW_DLV_ERROR);
72988		    }
72989
72990		    break;
72991		}
72992
72993	    case DW_LNE_define_file:{
72994
72995
72996		    Dwarf_Small *fn;
72997		    Dwarf_Signed di;
72998		    Dwarf_Signed tlm;
72999		    Dwarf_Unsigned fl;
73000
73001		    fn = (Dwarf_Small *) line_ptr;
73002		    line_ptr = line_ptr + strlen((char *) line_ptr) + 1;
73003
73004		    di = _dwarf_decode_u_leb128(line_ptr,
73005						&leb128_length);
73006		    line_ptr = line_ptr + leb128_length;
73007
73008		    tlm =
73009			_dwarf_decode_u_leb128(line_ptr,
73010					       &leb128_length);
73011		    line_ptr = line_ptr + leb128_length;
73012
73013		    fl = _dwarf_decode_u_leb128(line_ptr,
73014						&leb128_length);
73015		    line_ptr = line_ptr + leb128_length;
73016
73017
73018		    printf("DW_LNE_define_file %s \n", fn);
73019		    printf("    dir index %d\n", (int) di);
73020		    {
73021			time_t tt3 = (time_t) tlm;
73022
73023			/* ctime supplies newline */
73024			printf("    last time 0x%x %s",
73025			       (unsigned) tlm, ctime(&tt3));
73026		    }
73027		    printf("    file length %ld 0x%lx\n",
73028			   (long) fl, (unsigned long) fl);
73029
73030		    break;
73031		}
73032
73033	    default:{
73034		    _dwarf_error(dbg, error,
73035				 DW_DLE_LINE_EXT_OPCODE_BAD);
73036		    return (DW_DLV_ERROR);
73037		}
73038	    }
73039
73040	}
73041    }
73042
73043    return (DW_DLV_OK);
73044}
73045
73046/*
73047	Caller passes in compilation unit DIE.
73048*/
73049int
73050_dwarf_print_lines(Dwarf_Die die, Dwarf_Error * error)
73051{
73052    int res;
73053
73054    res = _dwarf_internal_printlines(die, error);
73055    if (res != DW_DLV_OK) {
73056	return res;
73057    }
73058    return res;
73059}
730600707010001ad7e0000812400011e740000000a0000000140206827000039ca000000660000000000000000000000000000001700000000libdwarf/dwarf_query.c����/*
73061
73062  Copyright (C) 2000, 2002 Silicon Graphics, Inc.  All Rights Reserved.
73063
73064  This program is free software; you can redistribute it and/or modify it
73065  under the terms of version 2.1 of the GNU Lesser General Public License
73066  as published by the Free Software Foundation.
73067
73068  This program is distributed in the hope that it would be useful, but
73069  WITHOUT ANY WARRANTY; without even the implied warranty of
73070  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
73071
73072  Further, this software is distributed without any warranty that it is
73073  free of the rightful claim of any third person regarding infringement
73074  or the like.  Any license provided herein, whether implied or
73075  otherwise, applies only to this software file.  Patent licenses, if
73076  any, provided herein do not apply to combinations of this program with
73077  other software, or any other product whatsoever.
73078
73079  You should have received a copy of the GNU Lesser General Public
73080  License along with this program; if not, write the Free Software
73081  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
73082  USA.
73083
73084  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
73085  Mountain View, CA 94043, or:
73086
73087  http://www.sgi.com
73088
73089  For further information regarding this notice, see:
73090
73091  http://oss.sgi.com/projects/GenInfo/NoticeExplan
73092
73093*/
73094
73095
73096#include "config.h"
73097#include "dwarf_incl.h"
73098#include <stdio.h>
73099#include "dwarf_die_deliv.h"
73100
73101int
73102dwarf_get_address_size(Dwarf_Debug dbg,
73103		       Dwarf_Half * ret_addr_size, Dwarf_Error * error)
73104{
73105    Dwarf_Half address_size;
73106
73107    if (dbg == 0) {
73108	_dwarf_error(NULL, error, DW_DLE_DBG_NULL);
73109	return (DW_DLV_ERROR);
73110    }
73111    /* length size same as address size */
73112    address_size = dbg->de_pointer_size;
73113    *ret_addr_size = address_size;
73114    return DW_DLV_OK;
73115}
73116
73117int
73118dwarf_dieoffset(Dwarf_Die die,
73119		Dwarf_Off * ret_offset, Dwarf_Error * error)
73120{
73121    CHECK_DIE(die, DW_DLV_ERROR)
73122
73123	* ret_offset = (die->di_debug_info_ptr -
73124			die->di_cu_context->cc_dbg->de_debug_info);
73125    return DW_DLV_OK;
73126}
73127
73128
73129/*
73130    This function returns the offset of
73131    the die relative to the start of its
73132    compilation-unit rather than .debug_info.
73133    Returns DW_DLV_ERROR on error.
73134*/
73135int
73136dwarf_die_CU_offset(Dwarf_Die die,
73137		    Dwarf_Off * cu_off, Dwarf_Error * error)
73138{
73139    Dwarf_CU_Context cu_context;
73140
73141    CHECK_DIE(die, DW_DLV_ERROR)
73142	cu_context = die->di_cu_context;
73143
73144    *cu_off =
73145	(die->di_debug_info_ptr - cu_context->cc_dbg->de_debug_info -
73146	 cu_context->cc_debug_info_offset);
73147    return DW_DLV_OK;
73148}
73149
73150
73151int
73152dwarf_tag(Dwarf_Die die, Dwarf_Half * tag, Dwarf_Error * error)
73153{
73154    CHECK_DIE(die, DW_DLV_ERROR)
73155
73156
73157	* tag = (die->di_abbrev_list->ab_tag);
73158    return DW_DLV_OK;
73159}
73160
73161
73162int
73163dwarf_attrlist(Dwarf_Die die,
73164	       Dwarf_Attribute ** attrbuf,
73165	       Dwarf_Signed * attrcnt, Dwarf_Error * error)
73166{
73167    Dwarf_Word attr_count = 0;
73168    Dwarf_Word i;
73169    Dwarf_Half attr;
73170    Dwarf_Half attr_form;
73171    Dwarf_Byte_Ptr abbrev_ptr;
73172    Dwarf_Abbrev_List abbrev_list;
73173    Dwarf_Attribute new_attr;
73174    Dwarf_Attribute head_attr = NULL, curr_attr;
73175    Dwarf_Attribute *attr_ptr;
73176    Dwarf_Debug dbg;
73177    Dwarf_Byte_Ptr info_ptr;
73178
73179    CHECK_DIE(die, DW_DLV_ERROR)
73180	dbg = die->di_cu_context->cc_dbg;
73181
73182    abbrev_list = _dwarf_get_abbrev_for_code(die->di_cu_context,
73183					     die->di_abbrev_list->
73184					     ab_code);
73185    if (abbrev_list == NULL) {
73186	_dwarf_error(dbg, error, DW_DLE_DIE_ABBREV_BAD);
73187	return (DW_DLV_ERROR);
73188    }
73189    abbrev_ptr = abbrev_list->ab_abbrev_ptr;
73190
73191    info_ptr = die->di_debug_info_ptr;
73192    SKIP_LEB128_WORD(info_ptr)
73193
73194	do {
73195	Dwarf_Unsigned utmp2;
73196
73197	DECODE_LEB128_UWORD(abbrev_ptr, utmp2)
73198	    attr = (Dwarf_Half) utmp2;
73199	DECODE_LEB128_UWORD(abbrev_ptr, utmp2)
73200	    attr_form = (Dwarf_Half) utmp2;
73201
73202	if (attr != 0) {
73203	    new_attr =
73204		(Dwarf_Attribute) _dwarf_get_alloc(dbg, DW_DLA_ATTR, 1);
73205	    if (new_attr == NULL) {
73206		_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
73207		return (DW_DLV_ERROR);
73208	    }
73209
73210	    new_attr->ar_attribute = attr;
73211	    new_attr->ar_attribute_form_direct = attr_form;
73212	    new_attr->ar_attribute_form = attr_form;
73213	    if(attr_form == DW_FORM_indirect) {
73214		Dwarf_Unsigned utmp6;
73215		/* DECODE_LEB128_UWORD does info_ptr update */
73216		DECODE_LEB128_UWORD(info_ptr, utmp6)
73217                attr_form = (Dwarf_Half) utmp6;
73218	        new_attr->ar_attribute_form = attr_form;
73219	    }
73220	    new_attr->ar_cu_context = die->di_cu_context;
73221	    new_attr->ar_debug_info_ptr = info_ptr;
73222
73223	    info_ptr += _dwarf_get_size_of_val(dbg, attr_form, info_ptr,
73224					       die->di_cu_context->
73225					       cc_length_size);
73226
73227	    if (head_attr == NULL)
73228		head_attr = curr_attr = new_attr;
73229	    else {
73230		curr_attr->ar_next = new_attr;
73231		curr_attr = new_attr;
73232	    }
73233	    attr_count++;
73234	}
73235    } while (attr != 0 || attr_form != 0);
73236
73237    if (attr_count == 0) {
73238	*attrbuf = NULL;
73239	*attrcnt = 0;
73240	return (DW_DLV_NO_ENTRY);
73241    }
73242
73243    attr_ptr = (Dwarf_Attribute *)
73244	_dwarf_get_alloc(dbg, DW_DLA_LIST, attr_count);
73245    if (attr_ptr == NULL) {
73246	_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
73247	return (DW_DLV_ERROR);
73248    }
73249
73250    curr_attr = head_attr;
73251    for (i = 0; i < attr_count; i++) {
73252	*(attr_ptr + i) = curr_attr;
73253	curr_attr = curr_attr->ar_next;
73254    }
73255
73256    *attrbuf = attr_ptr;
73257    *attrcnt = attr_count;
73258    return (DW_DLV_OK);
73259}
73260
73261
73262/*
73263    This function takes a die, and an attr, and returns
73264    a pointer to the start of the value of that attr in
73265    the given die in the .debug_info section.  The form
73266    is returned in *attr_form.
73267
73268    Returns NULL on error, or if attr is not found.
73269    However, *attr_form is 0 on error, and positive
73270    otherwise.
73271*/
73272static Dwarf_Byte_Ptr
73273_dwarf_get_value_ptr(Dwarf_Die die,
73274		     Dwarf_Half attr, Dwarf_Half * attr_form)
73275{
73276    Dwarf_Byte_Ptr abbrev_ptr;
73277    Dwarf_Abbrev_List abbrev_list;
73278    Dwarf_Half curr_attr;
73279    Dwarf_Half curr_attr_form;
73280    Dwarf_Byte_Ptr info_ptr;
73281
73282    abbrev_list = _dwarf_get_abbrev_for_code(die->di_cu_context,
73283					     die->di_abbrev_list->
73284					     ab_code);
73285    if (abbrev_list == NULL) {
73286	*attr_form = 0;
73287	return (NULL);
73288    }
73289    abbrev_ptr = abbrev_list->ab_abbrev_ptr;
73290
73291    info_ptr = die->di_debug_info_ptr;
73292    SKIP_LEB128_WORD(info_ptr)
73293
73294    do {
73295	Dwarf_Unsigned utmp3;
73296
73297	DECODE_LEB128_UWORD(abbrev_ptr, utmp3)
73298	    curr_attr = (Dwarf_Half) utmp3;
73299	DECODE_LEB128_UWORD(abbrev_ptr, utmp3)
73300	    curr_attr_form = (Dwarf_Half) utmp3;
73301	if(curr_attr_form == DW_FORM_indirect) {
73302                Dwarf_Unsigned utmp6;
73303
73304	        /* DECODE_LEB128_UWORD updates info_ptr */
73305                DECODE_LEB128_UWORD(info_ptr, utmp6)
73306                curr_attr_form = (Dwarf_Half) utmp6;
73307        }
73308
73309	if (curr_attr == attr) {
73310	    *attr_form = curr_attr_form;
73311	    return (info_ptr);
73312	}
73313
73314	info_ptr += _dwarf_get_size_of_val(die->di_cu_context->cc_dbg,
73315					   curr_attr_form, info_ptr,
73316					   die->di_cu_context->
73317					   cc_length_size);
73318    } while (curr_attr != 0 || curr_attr_form != 0);
73319
73320    *attr_form = 1;
73321    return (NULL);
73322}
73323
73324
73325int
73326dwarf_diename(Dwarf_Die die, char **ret_name, Dwarf_Error * error)
73327{
73328    Dwarf_Half attr_form;
73329    Dwarf_Debug dbg;
73330    Dwarf_Byte_Ptr info_ptr;
73331    Dwarf_Unsigned string_offset;
73332    int res;
73333
73334    CHECK_DIE(die, DW_DLV_ERROR)
73335
73336	info_ptr = _dwarf_get_value_ptr(die, DW_AT_name, &attr_form);
73337    if (info_ptr == NULL) {
73338	if (attr_form == 0) {
73339	    _dwarf_error(die->di_cu_context->cc_dbg, error,
73340			 DW_DLE_DIE_BAD);
73341	    return (DW_DLV_ERROR);
73342	}
73343	return DW_DLV_NO_ENTRY;
73344    }
73345
73346    if (attr_form == DW_FORM_string) {
73347	*ret_name = (char *) (info_ptr);
73348	return DW_DLV_OK;
73349    }
73350
73351    dbg = die->di_cu_context->cc_dbg;
73352    if (attr_form != DW_FORM_strp) {
73353	_dwarf_error(dbg, error, DW_DLE_ATTR_FORM_BAD);
73354	return (DW_DLV_ERROR);
73355    }
73356
73357    READ_UNALIGNED(dbg, string_offset, Dwarf_Unsigned,
73358		   info_ptr, die->di_cu_context->cc_length_size);
73359
73360    if (string_offset >= dbg->de_debug_str_size) {
73361	_dwarf_error(dbg, error, DW_DLE_STRING_OFFSET_BAD);
73362	return (DW_DLV_ERROR);
73363    }
73364
73365    res =
73366       _dwarf_load_section(dbg,
73367                           dbg->de_debug_str_index,
73368                           &dbg->de_debug_str,
73369                           error);
73370    if (res != DW_DLV_OK) {
73371        return res;
73372    }
73373
73374    *ret_name = (char *) (dbg->de_debug_str + string_offset);
73375    return DW_DLV_OK;
73376}
73377
73378
73379int
73380dwarf_hasattr(Dwarf_Die die,
73381	      Dwarf_Half attr,
73382	      Dwarf_Bool * return_bool, Dwarf_Error * error)
73383{
73384    Dwarf_Half attr_form;
73385
73386    CHECK_DIE(die, DW_DLV_ERROR)
73387
73388	if (_dwarf_get_value_ptr(die, attr, &attr_form) == NULL) {
73389	if (attr_form == 0) {
73390	    _dwarf_error(die->di_cu_context->cc_dbg, error,
73391			 DW_DLE_DIE_BAD);
73392	    return (DW_DLV_ERROR);
73393	}
73394	*return_bool = false;
73395	return DW_DLV_OK;
73396    }
73397
73398    *return_bool = (true);
73399    return DW_DLV_OK;
73400}
73401
73402
73403int
73404dwarf_attr(Dwarf_Die die,
73405	   Dwarf_Half attr,
73406	   Dwarf_Attribute * ret_attr, Dwarf_Error * error)
73407{
73408    Dwarf_Half attr_form;
73409    Dwarf_Attribute attrib;
73410    Dwarf_Byte_Ptr info_ptr;
73411    Dwarf_Debug dbg;
73412
73413    CHECK_DIE(die, DW_DLV_ERROR)
73414	dbg = die->di_cu_context->cc_dbg;
73415
73416    info_ptr = _dwarf_get_value_ptr(die, attr, &attr_form);
73417    if (info_ptr == NULL) {
73418	if (attr_form == 0) {
73419	    _dwarf_error(dbg, error, DW_DLE_DIE_BAD);
73420	    return (DW_DLV_ERROR);
73421	}
73422	return DW_DLV_NO_ENTRY;
73423    }
73424
73425    attrib = (Dwarf_Attribute) _dwarf_get_alloc(dbg, DW_DLA_ATTR, 1);
73426    if (attrib == NULL) {
73427	_dwarf_error(dbg, error, DW_DLE_ALLOC_FAIL);
73428	return (DW_DLV_ERROR);
73429    }
73430
73431    attrib->ar_attribute = attr;
73432    attrib->ar_attribute_form = attr_form;
73433    attrib->ar_attribute_form_direct = attr_form;
73434    attrib->ar_cu_context = die->di_cu_context;
73435    attrib->ar_debug_info_ptr = info_ptr;
73436    *ret_attr = (attrib);
73437    return DW_DLV_OK;
73438}
73439
73440
73441int
73442dwarf_lowpc(Dwarf_Die die,
73443	    Dwarf_Addr * return_addr, Dwarf_Error * error)
73444{
73445    Dwarf_Addr ret_addr;
73446    Dwarf_Byte_Ptr info_ptr;
73447    Dwarf_Half attr_form;
73448    Dwarf_Debug dbg;
73449
73450    CHECK_DIE(die, DW_DLV_ERROR)
73451
73452	dbg = die->di_cu_context->cc_dbg;
73453    info_ptr = _dwarf_get_value_ptr(die, DW_AT_low_pc, &attr_form);
73454    if ((info_ptr == NULL && attr_form == 0) ||
73455	(info_ptr != NULL && attr_form != DW_FORM_addr)) {
73456	_dwarf_error(dbg, error, DW_DLE_DIE_BAD);
73457	return (DW_DLV_ERROR);
73458    }
73459    if (info_ptr == NULL) {
73460	return (DW_DLV_NO_ENTRY);
73461    }
73462
73463
73464    READ_UNALIGNED(dbg, ret_addr, Dwarf_Addr,
73465		   info_ptr, dbg->de_pointer_size);
73466
73467    *return_addr = ret_addr;
73468    return (DW_DLV_OK);
73469}
73470
73471
73472int
73473dwarf_highpc(Dwarf_Die die,
73474	     Dwarf_Addr * return_addr, Dwarf_Error * error)
73475{
73476    Dwarf_Addr ret_addr;
73477    Dwarf_Byte_Ptr info_ptr;
73478    Dwarf_Half attr_form;
73479    Dwarf_Debug dbg;
73480
73481    CHECK_DIE(die, DW_DLV_ERROR)
73482
73483	dbg = die->di_cu_context->cc_dbg;
73484    info_ptr = _dwarf_get_value_ptr(die, DW_AT_high_pc, &attr_form);
73485    if ((info_ptr == NULL && attr_form == 0) ||
73486	(info_ptr != NULL && attr_form != DW_FORM_addr)) {
73487	_dwarf_error(dbg, error, DW_DLE_DIE_BAD);
73488	return (DW_DLV_ERROR);
73489    }
73490    if (info_ptr == NULL) {
73491	return (DW_DLV_NO_ENTRY);
73492    }
73493
73494    READ_UNALIGNED(dbg, ret_addr, Dwarf_Addr,
73495		   info_ptr, dbg->de_pointer_size);
73496
73497    *return_addr = ret_addr;
73498    return (DW_DLV_OK);
73499}
73500
73501
73502/*
73503    Takes a die, an attribute attr, and checks if attr
73504    occurs in die.  Attr is required to be an attribute
73505    whose form is in the "constant" class.  If attr occurs
73506    in die, the value is returned.
73507  Returns DW_DLV_OK, DW_DLV_ERROR, or DW_DLV_NO_ENTRY as
73508    appropriate. Sets the value thru the pointer return_val.
73509    This function is meant to do all the
73510    processing for dwarf_bytesize, dwarf_bitsize, dwarf_bitoffset,
73511    and dwarf_srclang.
73512*/
73513static int
73514_dwarf_die_attr_unsigned_constant(Dwarf_Die die,
73515				  Dwarf_Half attr,
73516				  Dwarf_Unsigned * return_val,
73517				  Dwarf_Error * error)
73518{
73519    Dwarf_Byte_Ptr info_ptr;
73520    Dwarf_Half attr_form;
73521    Dwarf_Unsigned ret_value;
73522    Dwarf_Debug dbg;
73523
73524    CHECK_DIE(die, DW_DLV_ERROR)
73525
73526	dbg = die->di_cu_context->cc_dbg;
73527    info_ptr = _dwarf_get_value_ptr(die, attr, &attr_form);
73528    if (info_ptr != NULL) {
73529	switch (attr_form) {
73530
73531	case DW_FORM_data1:
73532	    *return_val = (*(Dwarf_Small *) info_ptr);
73533	    return (DW_DLV_OK);
73534
73535	case DW_FORM_data2:
73536	    READ_UNALIGNED(dbg, ret_value, Dwarf_Unsigned,
73537			   info_ptr, sizeof(Dwarf_Shalf));
73538	    *return_val = ret_value;
73539	    return (DW_DLV_OK);
73540
73541	case DW_FORM_data4:
73542	    READ_UNALIGNED(dbg, ret_value, Dwarf_Unsigned,
73543			   info_ptr, sizeof(Dwarf_sfixed));
73544	    *return_val = ret_value;
73545	    return (DW_DLV_OK);
73546
73547	case DW_FORM_data8:
73548	    READ_UNALIGNED(dbg, ret_value, Dwarf_Unsigned,
73549			   info_ptr, sizeof(Dwarf_Unsigned));
73550	    *return_val = ret_value;
73551	    return (DW_DLV_OK);
73552
73553	case DW_FORM_udata:
73554	    *return_val = (_dwarf_decode_u_leb128(info_ptr, NULL));
73555	    return (DW_DLV_OK);
73556
73557	default:
73558	    _dwarf_error(dbg, error, DW_DLE_DIE_BAD);
73559	    return (DW_DLV_ERROR);
73560	}
73561    }
73562    if (attr_form == 0) {
73563	_dwarf_error(dbg, error, DW_DLE_DIE_BAD);
73564	return (DW_DLV_ERROR);
73565    }
73566    return DW_DLV_NO_ENTRY;
73567}
73568
73569
73570int
73571dwarf_bytesize(Dwarf_Die die,
73572	       Dwarf_Unsigned * ret_size, Dwarf_Error * error)
73573{
73574    Dwarf_Unsigned luns;
73575    int res =
73576	_dwarf_die_attr_unsigned_constant(die, DW_AT_byte_size, &luns,
73577					  error);
73578    *ret_size = luns;
73579    return res;
73580}
73581
73582
73583int
73584dwarf_bitsize(Dwarf_Die die,
73585	      Dwarf_Unsigned * ret_size, Dwarf_Error * error)
73586{
73587    Dwarf_Unsigned luns;
73588    int res;
73589
73590    res =
73591	_dwarf_die_attr_unsigned_constant(die, DW_AT_bit_size, &luns,
73592					  error);
73593    *ret_size = luns;
73594    return res;
73595}
73596
73597
73598int
73599dwarf_bitoffset(Dwarf_Die die,
73600		Dwarf_Unsigned * ret_size, Dwarf_Error * error)
73601{
73602    Dwarf_Unsigned luns;
73603    int res;
73604
73605    res =
73606	_dwarf_die_attr_unsigned_constant(die, DW_AT_bit_offset, &luns,
73607					  error);
73608    *ret_size = luns;
73609    return res;
73610}
73611
73612
73613/* Refer section 3.1, page 21 in Dwarf Definition. */
73614int
73615dwarf_srclang(Dwarf_Die die,
73616	      Dwarf_Unsigned * ret_size, Dwarf_Error * error)
73617{
73618    Dwarf_Unsigned luns;
73619    int res;
73620
73621    res =
73622	_dwarf_die_attr_unsigned_constant(die, DW_AT_language, &luns,
73623					  error);
73624    *ret_size = luns;
73625    return res;
73626}
73627
73628
73629/* Refer section 5.4, page 37 in Dwarf Definition. */
73630int
73631dwarf_arrayorder(Dwarf_Die die,
73632		 Dwarf_Unsigned * ret_size, Dwarf_Error * error)
73633{
73634    Dwarf_Unsigned luns;
73635    int res;
73636
73637    res =
73638	_dwarf_die_attr_unsigned_constant(die, DW_AT_ordering, &luns,
73639					  error);
73640    *ret_size = luns;
73641    return res;
73642}
73643
73644/*
73645	Return DW_DLV_OK if ok
73646	DW_DLV_ERROR if failure.
73647
73648	If the die and the attr are not related the result is
73649	meaningless.
73650*/
73651int
73652dwarf_attr_offset(Dwarf_Die die, Dwarf_Attribute attr, Dwarf_Off * offset,	/* return
73653										   offset
73654										   thru
73655										   this
73656										   ptr
73657										 */
73658		  Dwarf_Error * error)
73659{
73660    Dwarf_Off attroff;
73661
73662    CHECK_DIE(die, DW_DLV_ERROR)
73663
73664	attroff = (attr->ar_debug_info_ptr -
73665		   die->di_cu_context->cc_dbg->de_debug_info);
73666    *offset = attroff;
73667    return DW_DLV_OK;
73668}
73669��0707010001ad7f0000812400011e740000000a00000001402068280000490a000000660000000000000000000000000000001b00000000libdwarf/dwarf_sort_line.c����/*
73670
73671  Copyright (C) 2000,2002,2004 Silicon Graphics, Inc.  All Rights Reserved.
73672
73673  This program is free software; you can redistribute it and/or modify it
73674  under the terms of version 2.1 of the GNU Lesser General Public License
73675  as published by the Free Software Foundation.
73676
73677  This program is distributed in the hope that it would be useful, but
73678  WITHOUT ANY WARRANTY; without even the implied warranty of
73679  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
73680
73681  Further, this software is distributed without any warranty that it is
73682  free of the rightful claim of any third person regarding infringement
73683  or the like.  Any license provided herein, whether implied or
73684  otherwise, applies only to this software file.  Patent licenses, if
73685  any, provided herein do not apply to combinations of this program with
73686  other software, or any other product whatsoever.
73687
73688  You should have received a copy of the GNU Lesser General Public
73689  License along with this program; if not, write the Free Software
73690  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
73691  USA.
73692
73693  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
73694  Mountain View, CA 94043, or:
73695
73696  http://www.sgi.com
73697
73698  For further information regarding this notice, see:
73699
73700  http://oss.sgi.com/projects/GenInfo/NoticeExplan
73701
73702*/
73703
73704
73705
73706#include "config.h"
73707#include "dwarf_incl.h"
73708#include <stdio.h>
73709#include <stdlib.h>
73710#include "dwarf_line.h"
73711#ifdef HAVE_ALLOCA_H
73712#include <alloca.h>
73713#endif
73714#include <malloc.h>
73715
73716#define MINIMUM_POSSIBLE_PROLOG_LEN 10  /* 10 is  based on */
73717	/*  the definition of the DWARF2/3 line table prolog.
73718	    The value here should be >8 (accounting for
73719	    a 64 bit read) and  <= the length
73720	    of a legal DWARF2/3 line prolog,
73721	    which is at least 10 bytes long (but can be longer).
73722	    What this constant helps avoid is reading past the end of a
73723	    malloc'd buffer in _dwarf_update_line_sec().
73724	*/
73725
73726static int
73727  _dwarf_update_line_sec(Dwarf_Small * line_ptr,
73728			 unsigned long remaining_bytes,
73729			 int *any_change,
73730			 int length_size,
73731			 int *err_code, Dwarf_Small ** new_line_ptr);
73732
73733/* Used to construct
73734   a linked list of so we can sort and reorder the line info.
73735*/
73736struct a_line_area {
73737    Dwarf_Addr ala_address;	/* from DW_LNE_set_address */
73738    Dwarf_Unsigned ala_offset;	/* byte offset in buffer */
73739    Dwarf_Unsigned ala_length;	/* byte length in buffer */
73740    int ala_entry_num;		/* to guarantee stable sort */
73741    struct a_line_area *ala_next;
73742};
73743
73744
73745
73746/*
73747	returns
73748	DW_DLV_OK if nothing went wrong.
73749	DW_DLV_ERROR if could not do anything due to
73750		error.  the original buffer is unchanged.
73751
73752	is_64_bit must be passed in by caller and tells
73753	if this is a 32 or 64bit pointer object section
73754	being processed.
73755
73756	err_code must be a non-null pointer to integer.
73757	If DW_DLV_ERROR is returned that integer is set
73758	to a dwarf error code so the caller may
73759	print it for diagnostic purposes.
73760
73761	*any_change is set here
73762		set 0 if no sorting (movement) done.
73763		set 1 if some sorting (movement) done.
73764	on all returns. On error return sets to 0.
73765
73766
73767*/
73768int
73769_dwarf_ld_sort_lines(void *orig_buffer,
73770		     unsigned long buffer_len,
73771		     int is_64_bit, int *any_change, int *err_code)
73772{
73773
73774    int length_size = 4;
73775    Dwarf_Small *orig_line_ptr;	/* our local copy of the user's input
73776				   buffer */
73777    Dwarf_Small *line_ptr;	/* starts at orig_line_ptr, gets
73778				   incremented thru to end of our copy
73779				   of the input buffer */
73780    Dwarf_Small *new_line_ptr;	/* output of _dwarf_update_line_sec(),
73781				   used to update line_ptr as we pass
73782				   thru compilation units in a .o
73783				   .debug_line */
73784
73785    unsigned long remaining_bytes = buffer_len;	/* total length of
73786						   original area left
73787						   to be processed.
73788						   Changes as we pass
73789						   thru compilation
73790						   units in a .o
73791						   .debug_line */
73792
73793    int sec_res;
73794    int lany_change = 0;
73795    int did_change = 0;
73796
73797    if (is_64_bit)
73798	length_size = 8;
73799
73800    *any_change = 0;
73801    line_ptr = malloc(buffer_len);
73802    if (!line_ptr) {
73803	*err_code = DW_DLE_ALLOC_FAIL;
73804	return DW_DLV_ERROR;
73805    }
73806    orig_line_ptr = line_ptr;
73807    memcpy(line_ptr, orig_buffer, buffer_len);
73808
73809
73810    /*
73811       We must iterate thru each of a set of prologues and line data.
73812       We process each set in turn. If all pass, we update the
73813       passed-in buffer. */
73814    sec_res = DW_DLV_OK;
73815
73816    for (sec_res = _dwarf_update_line_sec(line_ptr,
73817					  remaining_bytes,
73818					  &lany_change,
73819					  length_size,
73820					  err_code,
73821					  &new_line_ptr);
73822	 (sec_res == DW_DLV_OK) && (remaining_bytes > 0);
73823	 sec_res = _dwarf_update_line_sec(line_ptr,
73824					  remaining_bytes,
73825					  &lany_change,
73826					  length_size,
73827					  err_code, &new_line_ptr)) {
73828	long bytes_used = new_line_ptr - line_ptr;
73829
73830	line_ptr = new_line_ptr;
73831	remaining_bytes -= bytes_used;
73832	if (lany_change) {
73833	    did_change = 1;
73834	}
73835	if (remaining_bytes > 0) {
73836	    continue;
73837	}
73838	break;
73839    }
73840    if (sec_res == DW_DLV_ERROR) {
73841	free(orig_line_ptr);
73842	return sec_res;
73843    }
73844
73845
73846    /* all passed */
73847    if (did_change) {
73848	/* So update the passed in buffer orig_buffer is caller's
73849	   input area. orig_line_ptr is our modified copy of input
73850	   area. */
73851	memcpy(orig_buffer, orig_line_ptr, buffer_len);
73852	*any_change = 1;
73853    }
73854    free(orig_line_ptr);
73855
73856    return sec_res;
73857}
73858
73859
73860/* By setting ala_entry_num we guarantee a stable sort,
73861	no duplicates
73862   Sorting in address order.
73863*/
73864static int
73865cmpr(const void *lin, const void *rin)
73866{
73867    const struct a_line_area *l = lin;
73868    const struct a_line_area *r = rin;
73869
73870    if (l->ala_address < r->ala_address) {
73871	return -1;
73872    }
73873    if (l->ala_address > r->ala_address) {
73874	return 1;
73875    }
73876    if (l->ala_entry_num < r->ala_entry_num) {
73877	return -1;
73878    }
73879    if (l->ala_entry_num > r->ala_entry_num) {
73880	return 1;
73881    }
73882    return 0;			/* should never happen. */
73883}
73884
73885
73886/*
73887	On entry:
73888	  line_ptr must point to first
73889	  byte of a line group for one (original) .o
73890
73891	  remaining_bytes is the size of the area pointed to
73892	  by line_ptr: may be larger than the
73893	  current original compilation unit .
73894
73895	  length size is 4 for 32bit pointers, 8 for 64bit pointers
73896	  in the data pointed to.
73897
73898
73899	On return:
73900	  return DW_DLV_OK if all ok.  (ignore
73901		*err_code in this case)
73902
73903	  return DW_DLV_ERROR and set *err_code if an error.
73904
73905	  If some line data was moved around, set *any_change to 1.
73906	  If error or no movement, set *any_change to 0;
73907
73908	  Set *new_line_ptr to one-byte-past the end of the
73909	  current original compilation unit  (not necessary
73910	  if returning DW_DLV_ERROR, but not harmful).
73911
73912
73913	This copies the entire array to a malloc area, then
73914	mallocs pieces of it (another malloc) for sorting a CU entries
73915	and copying back.  Then at end  the whole new thing copied in.
73916	The result is that on error, the input is not touched.
73917
73918	An alternative would be to just update a piece at a time
73919	and on error stop updating but leave what was done, done.
73920	This alternative would save some temporary malloc space.
73921
73922
73923*/
73924static int
73925_dwarf_update_line_sec(Dwarf_Small * line_ptr,
73926		       unsigned long remaining_bytes,
73927		       int *any_change,
73928		       int length_size,
73929		       int *err_code, Dwarf_Small ** new_line_ptr)
73930{
73931
73932
73933    /*
73934       This points to the last byte of the .debug_line portion for the
73935       current cu. */
73936    Dwarf_Small *line_ptr_end;
73937
73938    /*
73939       This points to the end of the statement program prologue for the
73940       current cu, and serves to check that the prologue was correctly
73941       decoded. */
73942    Dwarf_Small *check_line_ptr;
73943
73944    Dwarf_Small *orig_line_ptr;
73945
73946    /* These are the fields of the statement program header. */
73947    Dwarf_Unsigned total_length;
73948    Dwarf_Half version;
73949    Dwarf_Unsigned prologue_length;
73950    Dwarf_Small minimum_instruction_length;
73951    Dwarf_Small default_is_stmt;
73952    Dwarf_Sbyte line_base;
73953    Dwarf_Small line_range;
73954    Dwarf_Small opcode_base;
73955    struct Dwarf_Debug_s dbg_data;
73956    Dwarf_Debug dbg = &dbg_data;
73957
73958    Dwarf_Small *opcode_length = 0;
73959
73960    /* These are the state machine state variables. */
73961    Dwarf_Addr address;
73962    Dwarf_Word line;
73963    Dwarf_Bool is_stmt;
73964
73965    struct a_line_area *area_base = 0;
73966    struct a_line_area *area_current = 0;
73967    long area_count = 0;
73968
73969    Dwarf_Addr last_address = 0;
73970    int need_to_sort = 0;
73971
73972    Dwarf_Sword i;
73973    Dwarf_Sword file_entry_count;
73974    Dwarf_Sword include_directories_count;
73975
73976    /*
73977       This is the current opcode read from the statement program. */
73978    Dwarf_Small opcode;
73979
73980
73981    /*
73982       These variables are used to decode leb128 numbers. Leb128_num
73983       holds the decoded number, and leb128_length is its length in
73984       bytes. */
73985    Dwarf_Word leb128_num;
73986    Dwarf_Word leb128_length;
73987    Dwarf_Sword advance_line;
73988
73989    /*
73990       This is the operand of the latest fixed_advance_pc extended
73991       opcode. */
73992    Dwarf_Half fixed_advance_pc;
73993
73994    /* This is the length of an extended opcode instr.  */
73995    Dwarf_Word instr_length;
73996    Dwarf_Small ext_opcode;
73997
73998
73999
74000    dbg->de_copy_word = memcpy;
74001    /*
74002       Following is a straightforward decoding of the statement
74003       program prologue information. */
74004    *any_change = 0;
74005    orig_line_ptr = line_ptr;
74006    if(remaining_bytes < MINIMUM_POSSIBLE_PROLOG_LEN) {
74007        /* We are at the end. Remaining should be zero bytes,
74008           padding.
74009           This is really just 'end of CU buffer'
74010                not an error.
74011	   The is no 'entry' left so report there is none.
74012	   We don't want to READ_UNALIGNED the total_length below
74013	   and then belatedly discover that we read off the end
74014	   already.
74015        */
74016        return(DW_DLV_NO_ENTRY);
74017    }
74018
74019    READ_UNALIGNED(dbg, total_length, Dwarf_Unsigned,
74020		   line_ptr, length_size);
74021    line_ptr += length_size;
74022    line_ptr_end = line_ptr + total_length;
74023    if (line_ptr_end > line_ptr + remaining_bytes) {
74024	*err_code = DW_DLE_DEBUG_LINE_LENGTH_BAD;
74025	return (DW_DLV_ERROR);
74026    }
74027
74028    *new_line_ptr = line_ptr_end;
74029    READ_UNALIGNED(dbg, version, Dwarf_Half,
74030		   line_ptr, sizeof(Dwarf_Half));
74031    line_ptr += sizeof(Dwarf_Half);
74032    if (version != CURRENT_VERSION_STAMP) {
74033	*err_code = DW_DLE_VERSION_STAMP_ERROR;
74034	return (DW_DLV_ERROR);
74035    }
74036
74037    READ_UNALIGNED(dbg, prologue_length, Dwarf_Unsigned,
74038		   line_ptr, length_size);
74039    line_ptr += length_size;
74040    check_line_ptr = line_ptr;
74041
74042    minimum_instruction_length = *(Dwarf_Small *) line_ptr;
74043    line_ptr = line_ptr + sizeof(Dwarf_Small);
74044
74045    default_is_stmt = *(Dwarf_Small *) line_ptr;
74046    line_ptr = line_ptr + sizeof(Dwarf_Small);
74047
74048    line_base = *(Dwarf_Sbyte *) line_ptr;
74049    line_ptr = line_ptr + sizeof(Dwarf_Sbyte);
74050
74051    line_range = *(Dwarf_Small *) line_ptr;
74052    line_ptr = line_ptr + sizeof(Dwarf_Small);
74053
74054    opcode_base = *(Dwarf_Small *) line_ptr;
74055    line_ptr = line_ptr + sizeof(Dwarf_Small);
74056
74057    opcode_length = (Dwarf_Small *)
74058	alloca(sizeof(Dwarf_Small) * opcode_base);
74059    for (i = 1; i < opcode_base; i++) {
74060	opcode_length[i] = *(Dwarf_Small *) line_ptr;
74061	line_ptr = line_ptr + sizeof(Dwarf_Small);
74062    }
74063
74064    include_directories_count = 0;
74065    while ((*(char *) line_ptr) != '\0') {
74066	line_ptr = line_ptr + strlen((char *) line_ptr) + 1;
74067	include_directories_count++;
74068    }
74069    line_ptr++;
74070
74071    file_entry_count = 0;
74072    while (*(char *) line_ptr != '\0') {
74073
74074
74075	/* filename = (Dwarf_Small *)line_ptr; */
74076	line_ptr = line_ptr + strlen((char *) line_ptr) + 1;
74077
74078	/* dir_index = */
74079	_dwarf_decode_u_leb128(line_ptr, &leb128_length);
74080	line_ptr = line_ptr + leb128_length;
74081
74082	/* time_last_mod = */
74083	_dwarf_decode_u_leb128(line_ptr, &leb128_length);
74084	line_ptr = line_ptr + leb128_length;
74085
74086	/* file_length = */
74087	_dwarf_decode_u_leb128(line_ptr, &leb128_length);
74088	line_ptr = line_ptr + leb128_length;
74089
74090	file_entry_count++;
74091    }
74092    line_ptr++;
74093
74094    if (line_ptr != check_line_ptr + prologue_length) {
74095	*err_code = DW_DLE_LINE_PROLOG_LENGTH_BAD;
74096	return (DW_DLV_ERROR);
74097    }
74098
74099    /* Initialize the state machine.  */
74100    address = 0;
74101    /* file = 1; */
74102    line = 1;
74103    /* column = 0; */
74104    is_stmt = default_is_stmt;
74105    /* basic_block = false; */
74106    /* end_sequence = false; */
74107
74108    /* Start of statement program.  */
74109    while (line_ptr < line_ptr_end) {
74110	int type;
74111
74112	Dwarf_Small *stmt_prog_entry_start = line_ptr;
74113
74114	opcode = *(Dwarf_Small *) line_ptr;
74115	line_ptr++;
74116	/* 'type' is the output */
74117	WHAT_IS_OPCODE(type, opcode, opcode_base,
74118		       opcode_length, line_ptr);
74119
74120
74121
74122	if (type == LOP_DISCARD) {
74123	    /* do nothing, necessary ops done */
74124	} else if (type == LOP_SPECIAL) {
74125	    opcode = opcode - opcode_base;
74126	    address = address + minimum_instruction_length *
74127		(opcode / line_range);
74128	    line = line + line_base + opcode % line_range;
74129
74130	    /* basic_block = false; */
74131
74132
74133	} else if (type == LOP_STANDARD) {
74134
74135
74136	    switch (opcode) {
74137
74138
74139	    case DW_LNS_copy:{
74140		    if (opcode_length[DW_LNS_copy] != 0) {
74141			*err_code = DW_DLE_LINE_NUM_OPERANDS_BAD;
74142			return (DW_DLV_ERROR);
74143		    }
74144
74145
74146		    /* basic_block = false; */
74147		    break;
74148		}
74149
74150	    case DW_LNS_advance_pc:{
74151		    Dwarf_Unsigned utmp2;
74152
74153		    if (opcode_length[DW_LNS_advance_pc] != 1) {
74154			*err_code = DW_DLE_LINE_NUM_OPERANDS_BAD;
74155			return (DW_DLV_ERROR);
74156		    }
74157
74158		    DECODE_LEB128_UWORD(line_ptr, utmp2)
74159			leb128_num = (Dwarf_Word) utmp2;
74160		    address =
74161			address +
74162			minimum_instruction_length * leb128_num;
74163		    break;
74164		}
74165
74166	    case DW_LNS_advance_line:{
74167		    Dwarf_Signed stmp;
74168
74169		    if (opcode_length[DW_LNS_advance_line] != 1) {
74170			*err_code = DW_DLE_LINE_NUM_OPERANDS_BAD;
74171			return (DW_DLV_ERROR);
74172		    }
74173
74174		    DECODE_LEB128_SWORD(line_ptr, stmp)
74175			advance_line = (Dwarf_Sword) stmp;
74176		    line = line + advance_line;
74177		    break;
74178		}
74179
74180	    case DW_LNS_set_file:{
74181		    Dwarf_Unsigned utmp2;
74182
74183		    if (opcode_length[DW_LNS_set_file] != 1) {
74184			*err_code = DW_DLE_LINE_NUM_OPERANDS_BAD;
74185			return (DW_DLV_ERROR);
74186		    }
74187
74188		    DECODE_LEB128_UWORD(line_ptr, utmp2)
74189			/* file = (Dwarf_Word)utmp2; */
74190			break;
74191		}
74192
74193	    case DW_LNS_set_column:{
74194		    Dwarf_Unsigned utmp2;
74195
74196		    if (opcode_length[DW_LNS_set_column] != 1) {
74197			*err_code = DW_DLE_LINE_NUM_OPERANDS_BAD;
74198			return (DW_DLV_ERROR);
74199		    }
74200
74201		    DECODE_LEB128_UWORD(line_ptr, utmp2)
74202			/* column = (Dwarf_Word)utmp2; */
74203			break;
74204		}
74205
74206	    case DW_LNS_negate_stmt:{
74207		    if (opcode_length[DW_LNS_negate_stmt] != 0) {
74208			*err_code = DW_DLE_LINE_NUM_OPERANDS_BAD;
74209			return (DW_DLV_ERROR);
74210		    }
74211
74212		    is_stmt = !is_stmt;
74213		    break;
74214		}
74215
74216	    case DW_LNS_set_basic_block:{
74217		    if (opcode_length[DW_LNS_set_basic_block] != 0) {
74218			*err_code = DW_DLE_LINE_NUM_OPERANDS_BAD;
74219			return (DW_DLV_ERROR);
74220		    }
74221
74222		    /* basic_block = true; */
74223		    break;
74224		}
74225
74226	    case DW_LNS_const_add_pc:{
74227		    opcode = MAX_LINE_OP_CODE - opcode_base;
74228		    address = address + minimum_instruction_length *
74229			(opcode / line_range);
74230
74231		    break;
74232		}
74233
74234	    case DW_LNS_fixed_advance_pc:{
74235		    if (opcode_length[DW_LNS_fixed_advance_pc] != 1) {
74236			*err_code = DW_DLE_LINE_NUM_OPERANDS_BAD;
74237			return (DW_DLV_ERROR);
74238		    }
74239
74240		    READ_UNALIGNED(dbg, fixed_advance_pc, Dwarf_Half,
74241				   line_ptr, sizeof(Dwarf_Half));
74242		    line_ptr += sizeof(Dwarf_Half);
74243		    address = address + fixed_advance_pc;
74244		    break;
74245		}
74246	    }
74247	} else if (type == LOP_EXTENDED) {
74248
74249
74250	    Dwarf_Unsigned utmp3;
74251
74252	    DECODE_LEB128_UWORD(line_ptr, utmp3)
74253		instr_length = (Dwarf_Word) utmp3;
74254	    ext_opcode = *(Dwarf_Small *) line_ptr;
74255	    line_ptr++;
74256	    switch (ext_opcode) {
74257
74258	    case DW_LNE_end_sequence:{
74259		    /* end_sequence = true; */
74260
74261		    address = 0;
74262		    /* file = 1; */
74263		    line = 1;
74264		    /* column = 0; */
74265		    is_stmt = default_is_stmt;
74266		    /* basic_block = false; */
74267		    /* end_sequence = false; */
74268
74269		    break;
74270		}
74271
74272	    case DW_LNE_set_address:{
74273		    if (instr_length - 1 == length_size) {
74274			struct a_line_area *area;
74275
74276			READ_UNALIGNED(dbg, address, Dwarf_Addr,
74277				       line_ptr, length_size);
74278			/* Here we need to remember the offset into the
74279			   buffer and check to see if address went
74280			   down. */
74281			if (address < last_address) {
74282			    need_to_sort = 1;
74283			}
74284			last_address = address;
74285
74286			area = alloca(sizeof(struct a_line_area));
74287			area->ala_address = address;
74288			area->ala_offset = stmt_prog_entry_start -
74289			    orig_line_ptr;
74290			area->ala_entry_num = area_count;
74291			area->ala_next = 0;
74292			area->ala_length = 0;
74293			if (area_current) {
74294			    area_current->ala_next = area;
74295			    area_current->ala_length =
74296				area->ala_offset -
74297				area_current->ala_offset;
74298			}
74299			++area_count;
74300			area_current = area;
74301			if (area_base == 0) {
74302			    area_base = area;
74303			}
74304
74305			line_ptr += length_size;
74306		    } else {
74307			*err_code = DW_DLE_LINE_SET_ADDR_ERROR;
74308			return (DW_DLV_ERROR);
74309		    }
74310
74311
74312		    break;
74313		}
74314
74315	    case DW_LNE_define_file:{
74316
74317		    break;
74318		}
74319
74320	    default:{
74321		    *err_code = DW_DLE_LINE_EXT_OPCODE_BAD;
74322		    return (DW_DLV_ERROR);
74323		}
74324	    }
74325
74326	}
74327    }
74328
74329
74330    if (!need_to_sort) {
74331	return (DW_DLV_OK);
74332    }
74333
74334    /* so now we have something to sort. First, finish off the last
74335       area record: */
74336    area_current->ala_length = (line_ptr - orig_line_ptr)	/* final
74337								   offset */
74338	-area_current->ala_offset;
74339
74340    /* Build and sort a simple array of sections. Forcing a stable sort
74341       by comparing on sequence number. We will use the sorted list to
74342       move sections of this part of the line table. Each 'section'
74343       starting with a DW_LNE_set_address opcode, on the assumption
74344       that such only get out of order where there was an ld-cord
74345       function rearrangement and that it is meaningful to restart the
74346       line info there. */
74347    {
74348	struct a_line_area *ala_array;
74349	struct a_line_area *local;
74350	long start_len;
74351	Dwarf_Small *new_area;
74352	long i;
74353
74354	ala_array = malloc(area_count * sizeof(struct a_line_area));
74355	if (!ala_array) {
74356	    *err_code = DW_DLE_ALLOC_FAIL;
74357	    return DW_DLV_ERROR;
74358	}
74359
74360	for (local = area_base, i = 0; local;
74361	     local = local->ala_next, ++i) {
74362
74363	    ala_array[i] = *local;
74364	}
74365
74366	qsort(ala_array, area_count, sizeof(struct a_line_area), cmpr);
74367
74368	/* Now we must rearrange the pieces of the line table. */
74369
74370	start_len = (check_line_ptr + prologue_length) - orig_line_ptr;
74371	new_area = malloc(remaining_bytes);
74372	if (!new_area) {
74373	    free(ala_array);
74374	    *err_code = DW_DLE_ALLOC_FAIL;
74375	    return DW_DLV_ERROR;
74376	}
74377	memcpy(new_area, orig_line_ptr, start_len);
74378	line_ptr = new_area + start_len;
74379	for (i = 0; i < area_count; ++i) {
74380	    memcpy(line_ptr, orig_line_ptr +
74381		   ala_array[i].ala_offset, ala_array[i].ala_length);
74382	    line_ptr += ala_array[i].ala_length;
74383	}
74384
74385	memcpy(orig_line_ptr, new_area, remaining_bytes);
74386
74387	free(new_area);
74388	free(ala_array);
74389	ala_array = 0;
74390	new_area = 0;
74391    }
74392
74393    *any_change = 1;
74394    return (DW_DLV_OK);
74395}
74396��0707010001ad800000812400011e740000000a00000001402068280000095b000000660000000000000000000000000000001800000000libdwarf/dwarf_string.c���/*
74397
74398  Copyright (C) 2000, 2002 Silicon Graphics, Inc.  All Rights Reserved.
74399
74400  This program is free software; you can redistribute it and/or modify it
74401  under the terms of version 2.1 of the GNU Lesser General Public License
74402  as published by the Free Software Foundation.
74403
74404  This program is distributed in the hope that it would be useful, but
74405  WITHOUT ANY WARRANTY; without even the implied warranty of
74406  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
74407
74408  Further, this software is distributed without any warranty that it is
74409  free of the rightful claim of any third person regarding infringement
74410  or the like.  Any license provided herein, whether implied or
74411  otherwise, applies only to this software file.  Patent licenses, if
74412  any, provided herein do not apply to combinations of this program with
74413  other software, or any other product whatsoever.
74414
74415  You should have received a copy of the GNU Lesser General Public
74416  License along with this program; if not, write the Free Software
74417  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
74418  USA.
74419
74420  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
74421  Mountain View, CA 94043, or:
74422
74423  http://www.sgi.com
74424
74425  For further information regarding this notice, see:
74426
74427  http://oss.sgi.com/projects/GenInfo/NoticeExplan
74428
74429*/
74430
74431
74432
74433#include "config.h"
74434#include "dwarf_incl.h"
74435
74436int
74437dwarf_get_str(Dwarf_Debug dbg,
74438	      Dwarf_Off offset,
74439	      char **string,
74440	      Dwarf_Signed * returned_str_len, Dwarf_Error * error)
74441{
74442    int res;
74443
74444    if (dbg == NULL) {
74445	_dwarf_error(NULL, error, DW_DLE_DBG_NULL);
74446	return (DW_DLV_ERROR);
74447    }
74448
74449    if (offset == dbg->de_debug_str_size) {
74450	/* Normal (if we've iterated thru the set of strings
74451	   using dwarf_get_str and are at the end). */
74452	return DW_DLV_NO_ENTRY;
74453    }
74454    if (offset > dbg->de_debug_str_size) {
74455	_dwarf_error(dbg, error, DW_DLE_DEBUG_STR_OFFSET_BAD);
74456	return (DW_DLV_ERROR);
74457    }
74458
74459    if (string == NULL) {
74460	_dwarf_error(dbg, error, DW_DLE_STRING_PTR_NULL);
74461	return (DW_DLV_ERROR);
74462    }
74463
74464    res =
74465       _dwarf_load_section(dbg,
74466                           dbg->de_debug_str_index,
74467                           &dbg->de_debug_str,
74468                           error);
74469    if (res != DW_DLV_OK) {
74470        return res;
74471    }
74472
74473    *string = (char *) dbg->de_debug_str + offset;
74474
74475    *returned_str_len = (strlen(*string));
74476    return DW_DLV_OK;
74477}
74478�0707010001ad810000812400011e740000000a000000014020682700000619000000660000000000000000000000000000001700000000libdwarf/dwarf_stubs.c����/*
74479
74480  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
74481
74482  This program is free software; you can redistribute it and/or modify it
74483  under the terms of version 2.1 of the GNU Lesser General Public License
74484  as published by the Free Software Foundation.
74485
74486  This program is distributed in the hope that it would be useful, but
74487  WITHOUT ANY WARRANTY; without even the implied warranty of
74488  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
74489
74490  Further, this software is distributed without any warranty that it is
74491  free of the rightful claim of any third person regarding infringement
74492  or the like.  Any license provided herein, whether implied or
74493  otherwise, applies only to this software file.  Patent licenses, if
74494  any, provided herein do not apply to combinations of this program with
74495  other software, or any other product whatsoever.
74496
74497  You should have received a copy of the GNU Lesser General Public
74498  License along with this program; if not, write the Free Software
74499  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
74500  USA.
74501
74502  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
74503  Mountain View, CA 94043, or:
74504
74505  http://www.sgi.com
74506
74507  For further information regarding this notice, see:
74508
74509  http://oss.sgi.com/projects/GenInfo/NoticeExplan
74510
74511*/
74512
74513
74514
74515#include "config.h"
74516#include "dwarf_incl.h"
74517#include <stdio.h>
74518
74519
74520
74521 /*ARGSUSED*/ int
74522dwarf_nextglob(Dwarf_Debug dbg,
74523	       Dwarf_Global glob,
74524	       Dwarf_Global * returned_nextglob, Dwarf_Error * error)
74525{
74526    return (DW_DLV_NO_ENTRY);
74527}
74528���0707010001ad820000812400011e740000000a000000014020682700000cca000000660000000000000000000000000000001700000000libdwarf/dwarf_types.c����/*
74529
74530  Copyright (C) 2000, 2002 Silicon Graphics, Inc.  All Rights Reserved.
74531
74532  This program is free software; you can redistribute it and/or modify it
74533  under the terms of version 2.1 of the GNU Lesser General Public License
74534  as published by the Free Software Foundation.
74535
74536  This program is distributed in the hope that it would be useful, but
74537  WITHOUT ANY WARRANTY; without even the implied warranty of
74538  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
74539
74540  Further, this software is distributed without any warranty that it is
74541  free of the rightful claim of any third person regarding infringement
74542  or the like.  Any license provided herein, whether implied or
74543  otherwise, applies only to this software file.  Patent licenses, if
74544  any, provided herein do not apply to combinations of this program with
74545  other software, or any other product whatsoever.
74546
74547  You should have received a copy of the GNU Lesser General Public
74548  License along with this program; if not, write the Free Software
74549  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
74550  USA.
74551
74552  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
74553  Mountain View, CA 94043, or:
74554
74555  http://www.sgi.com
74556
74557  For further information regarding this notice, see:
74558
74559  http://oss.sgi.com/projects/GenInfo/NoticeExplan
74560
74561*/
74562
74563
74564
74565#include "config.h"
74566#include "dwarf_incl.h"
74567#include <stdio.h>
74568#include "dwarf_types.h"
74569#include "dwarf_global.h"
74570
74571int
74572dwarf_get_types(Dwarf_Debug dbg,
74573		Dwarf_Type ** types,
74574		Dwarf_Signed * ret_type_count, Dwarf_Error * error)
74575{
74576    int res;
74577
74578    res =
74579       _dwarf_load_section(dbg,
74580		           dbg->de_debug_typenames_index,
74581			   &dbg->de_debug_typenames,
74582			   error);
74583    if (res != DW_DLV_OK) {
74584	return res;
74585    }
74586
74587    return _dwarf_internal_get_pubnames_like_data(dbg, dbg->de_debug_typenames, dbg->de_debug_typenames_size, (Dwarf_Global **) types,	/* type
74588																	   punning,
74589																	   Dwarf_Type
74590																	   is never
74591																	   a
74592																	   completed
74593																	   type */
74594						  ret_type_count,
74595						  error,
74596						  DW_DLA_TYPENAME_CONTEXT,
74597						  DW_DLE_DEBUG_TYPENAMES_LENGTH_BAD,
74598						  DW_DLE_DEBUG_TYPENAMES_VERSION_ERROR);
74599
74600}
74601
74602
74603int
74604dwarf_typename(Dwarf_Type type_in, char **ret_name, Dwarf_Error * error)
74605{
74606    Dwarf_Global type = (Dwarf_Global) type_in;
74607
74608    if (type == NULL) {
74609	_dwarf_error(NULL, error, DW_DLE_TYPE_NULL);
74610	return (DW_DLV_ERROR);
74611    }
74612
74613    *ret_name = (char *) (type->gl_name);
74614    return DW_DLV_OK;
74615}
74616
74617
74618int
74619dwarf_type_die_offset(Dwarf_Type type_in,
74620		      Dwarf_Off * ret_offset, Dwarf_Error * error)
74621{
74622    Dwarf_Global type = (Dwarf_Global) type_in;
74623
74624    return dwarf_global_die_offset(type, ret_offset, error);
74625}
74626
74627
74628int
74629dwarf_type_cu_offset(Dwarf_Type type_in,
74630		     Dwarf_Off * ret_offset, Dwarf_Error * error)
74631{
74632    Dwarf_Global type = (Dwarf_Global) type_in;
74633
74634    return dwarf_global_cu_offset(type, ret_offset, error);
74635
74636}
74637
74638
74639int
74640dwarf_type_name_offsets(Dwarf_Type type_in,
74641			char **returned_name,
74642			Dwarf_Off * die_offset,
74643			Dwarf_Off * cu_die_offset, Dwarf_Error * error)
74644{
74645    Dwarf_Global type = (Dwarf_Global) type_in;
74646
74647    return dwarf_global_name_offsets(type,
74648				     returned_name,
74649				     die_offset, cu_die_offset, error);
74650}
74651��0707010001ad830000812400011e740000000a000000014020682700000593000000660000000000000000000000000000001700000000libdwarf/dwarf_types.h����/*
74652
74653  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
74654
74655  This program is free software; you can redistribute it and/or modify it
74656  under the terms of version 2.1 of the GNU Lesser General Public License
74657  as published by the Free Software Foundation.
74658
74659  This program is distributed in the hope that it would be useful, but
74660  WITHOUT ANY WARRANTY; without even the implied warranty of
74661  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
74662
74663  Further, this software is distributed without any warranty that it is
74664  free of the rightful claim of any third person regarding infringement
74665  or the like.  Any license provided herein, whether implied or
74666  otherwise, applies only to this software file.  Patent licenses, if
74667  any, provided herein do not apply to combinations of this program with
74668  other software, or any other product whatsoever.
74669
74670  You should have received a copy of the GNU Lesser General Public
74671  License along with this program; if not, write the Free Software
74672  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
74673  USA.
74674
74675  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
74676  Mountain View, CA 94043, or:
74677
74678  http://www.sgi.com
74679
74680  For further information regarding this notice, see:
74681
74682  http://oss.sgi.com/projects/GenInfo/NoticeExplan
74683
74684*/
74685
74686
74687
74688
74689typedef struct Dwarf_Type_Context_s *Dwarf_Type_Context;
74690
74691/* type never completed  see dwarf_global.h */
74692�0707010001ad840000812400011e740000000a000000014020682800002869000000660000000000000000000000000000001600000000libdwarf/dwarf_util.c�/*
74693
74694  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
74695
74696  This program is free software; you can redistribute it and/or modify it
74697  under the terms of version 2.1 of the GNU Lesser General Public License
74698  as published by the Free Software Foundation.
74699
74700  This program is distributed in the hope that it would be useful, but
74701  WITHOUT ANY WARRANTY; without even the implied warranty of
74702  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
74703
74704  Further, this software is distributed without any warranty that it is
74705  free of the rightful claim of any third person regarding infringement
74706  or the like.  Any license provided herein, whether implied or
74707  otherwise, applies only to this software file.  Patent licenses, if
74708  any, provided herein do not apply to combinations of this program with
74709  other software, or any other product whatsoever.
74710
74711  You should have received a copy of the GNU Lesser General Public
74712  License along with this program; if not, write the Free Software
74713  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
74714  USA.
74715
74716  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
74717  Mountain View, CA 94043, or:
74718
74719  http://www.sgi.com
74720
74721  For further information regarding this notice, see:
74722
74723  http://oss.sgi.com/projects/GenInfo/NoticeExplan
74724
74725*/
74726
74727
74728
74729#include "config.h"
74730#include "dwarf_incl.h"
74731#include <stdio.h>
74732#include "dwarf_die_deliv.h"
74733
74734
74735
74736/*
74737    Given a form, and a pointer to the bytes encoding
74738    a value of that form, val_ptr, this function returns
74739    the length, in bytes, of a value of that form.
74740    When using this function, check for a return of 0
74741    a recursive DW_FORM_INDIRECT value.
74742*/
74743Dwarf_Unsigned
74744_dwarf_get_size_of_val(Dwarf_Debug dbg,
74745		       Dwarf_Unsigned form,
74746		       Dwarf_Small * val_ptr, int v_length_size)
74747{
74748    Dwarf_Unsigned length = 0;
74749    Dwarf_Word leb128_length = 0;
74750    Dwarf_Unsigned form_indirect = 0;
74751    Dwarf_Unsigned ret_value = 0;
74752
74753    switch (form) {
74754
74755    default:			/* Handles form = 0. */
74756	return (form);
74757
74758    case DW_FORM_addr:
74759	return (dbg->de_pointer_size);
74760
74761    case DW_FORM_ref_addr:
74762	return (v_length_size);
74763
74764    case DW_FORM_block1:
74765	return (*(Dwarf_Small *) val_ptr + 1);
74766
74767    case DW_FORM_block2:
74768	READ_UNALIGNED(dbg, ret_value, Dwarf_Unsigned,
74769		       val_ptr, sizeof(Dwarf_Half));
74770	return (ret_value + sizeof(Dwarf_Half));
74771
74772    case DW_FORM_block4:
74773	READ_UNALIGNED(dbg, ret_value, Dwarf_Unsigned,
74774		       val_ptr, sizeof(Dwarf_ufixed));
74775	return (ret_value + sizeof(Dwarf_ufixed));
74776
74777
74778    case DW_FORM_data1:
74779	return (1);
74780
74781    case DW_FORM_data2:
74782	return (2);
74783
74784    case DW_FORM_data4:
74785	return (4);
74786
74787    case DW_FORM_data8:
74788	return (8);
74789
74790    case DW_FORM_string:
74791	return (strlen((char *) val_ptr) + 1);
74792
74793    case DW_FORM_block:
74794	length = _dwarf_decode_u_leb128(val_ptr, &leb128_length);
74795	return (length + leb128_length);
74796
74797    case DW_FORM_flag:
74798	return (1);
74799
74800    case DW_FORM_ref_udata:
74801	_dwarf_decode_u_leb128(val_ptr, &leb128_length);
74802	return (leb128_length);
74803
74804    case DW_FORM_indirect:
74805	{
74806	    Dwarf_Word indir_len = 0;
74807
74808	    form_indirect = _dwarf_decode_u_leb128(val_ptr, &indir_len);
74809	    if (form_indirect == DW_FORM_indirect) {
74810		return (0);	/* We are in big trouble: The true form
74811				   of DW_FORM_indirect is
74812				   DW_FORM_indirect? Nonsense. Should
74813				   never happen. */
74814	    }
74815	    return (indir_len + _dwarf_get_size_of_val(dbg,
74816						       form_indirect,
74817						       val_ptr +
74818						       indir_len,
74819						       v_length_size));
74820	}
74821
74822    case DW_FORM_ref1:
74823	return (1);
74824
74825    case DW_FORM_ref2:
74826	return (2);
74827
74828    case DW_FORM_ref4:
74829	return (4);
74830
74831    case DW_FORM_ref8:
74832	return (8);
74833
74834    case DW_FORM_sdata:
74835	_dwarf_decode_s_leb128(val_ptr, &leb128_length);
74836	return (leb128_length);
74837
74838    case DW_FORM_strp:
74839	return (v_length_size);
74840
74841    case DW_FORM_udata:
74842	_dwarf_decode_u_leb128(val_ptr, &leb128_length);
74843	return (leb128_length);
74844    }
74845}
74846
74847
74848/*
74849    This function returns a pointer to a Dwarf_Abbrev_List_s
74850    struct for the abbrev with the given code.  It puts the
74851    struct on the appropriate hash table.  It also adds all
74852    the abbrev between the last abbrev added and this one to
74853    the hash table.  In other words, the .debug_abbrev section
74854    is scanned sequentially from the top for an abbrev with
74855    the given code.  All intervening abbrevs are also put
74856    into the hash table.
74857
74858    This function hashes the given code, and checks the chain
74859    at that hash table entry to see if a Dwarf_Abbrev_List_s
74860    with the given code exists.  If yes, it returns a pointer
74861    to that struct.  Otherwise, it scans the .debug_abbrev
74862    section from the last byte scanned for that CU till either
74863    an abbrev with the given code is found, or an abbrev code
74864    of 0 is read.  It puts Dwarf_Abbrev_List_s entries for all
74865    abbrev's read till that point into the hash table.  The
74866    hash table contains both a head pointer and a tail pointer
74867    for each entry.
74868
74869    Returns NULL on error.
74870*/
74871Dwarf_Abbrev_List
74872_dwarf_get_abbrev_for_code(Dwarf_CU_Context cu_context, Dwarf_Word code)
74873{
74874    Dwarf_Debug dbg = cu_context->cc_dbg;
74875    Dwarf_Hash_Table hash_table = cu_context->cc_abbrev_hash_table;
74876    Dwarf_Word hash_num;
74877    Dwarf_Abbrev_List hash_abbrev_list;
74878    Dwarf_Abbrev_List abbrev_list;
74879    Dwarf_Byte_Ptr abbrev_ptr;
74880    Dwarf_Half abbrev_code, abbrev_tag;
74881    Dwarf_Half attr_name, attr_form;
74882
74883    hash_num = code % ABBREV_HASH_TABLE_SIZE;
74884    for (hash_abbrev_list = hash_table[hash_num].at_head;
74885	 hash_abbrev_list != NULL && hash_abbrev_list->ab_code != code;
74886	 hash_abbrev_list = hash_abbrev_list->ab_next);
74887    if (hash_abbrev_list != NULL)
74888	return (hash_abbrev_list);
74889
74890    abbrev_ptr = cu_context->cc_last_abbrev_ptr != NULL ?
74891	cu_context->cc_last_abbrev_ptr :
74892	dbg->de_debug_abbrev + cu_context->cc_abbrev_offset;
74893
74894    /* End of abbrev's for this cu, since abbrev code is 0. */
74895    if (*abbrev_ptr == 0) {
74896	return (NULL);
74897    }
74898
74899    do {
74900	Dwarf_Unsigned utmp;
74901
74902	DECODE_LEB128_UWORD(abbrev_ptr, utmp)
74903	    abbrev_code = (Dwarf_Half) utmp;
74904	DECODE_LEB128_UWORD(abbrev_ptr, utmp)
74905	    abbrev_tag = (Dwarf_Half) utmp;
74906
74907	abbrev_list = (Dwarf_Abbrev_List)
74908	    _dwarf_get_alloc(cu_context->cc_dbg, DW_DLA_ABBREV_LIST, 1);
74909	if (abbrev_list == NULL)
74910	    return (NULL);
74911
74912	hash_num = abbrev_code % ABBREV_HASH_TABLE_SIZE;
74913	if (hash_table[hash_num].at_head == NULL) {
74914	    hash_table[hash_num].at_head =
74915		hash_table[hash_num].at_tail = abbrev_list;
74916	} else {
74917	    hash_table[hash_num].at_tail->ab_next = abbrev_list;
74918	    hash_table[hash_num].at_tail = abbrev_list;
74919	}
74920
74921	abbrev_list->ab_code = abbrev_code;
74922	abbrev_list->ab_tag = abbrev_tag;
74923
74924	abbrev_list->ab_has_child = *(abbrev_ptr++);
74925	abbrev_list->ab_abbrev_ptr = abbrev_ptr;
74926
74927	do {
74928	    Dwarf_Unsigned utmp3;
74929
74930	    DECODE_LEB128_UWORD(abbrev_ptr, utmp3)
74931		attr_name = (Dwarf_Half) utmp3;
74932	    DECODE_LEB128_UWORD(abbrev_ptr, utmp3)
74933		attr_form = (Dwarf_Half) utmp3;
74934	} while (attr_name != 0 && attr_form != 0);
74935
74936    } while (*abbrev_ptr != 0 && abbrev_code != code);
74937
74938    cu_context->cc_last_abbrev_ptr = abbrev_ptr;
74939    return (abbrev_code == code ? abbrev_list : NULL);
74940}
74941
74942
74943/* return 1 if string ends before 'endptr' else
74944** return 0 meaning string is not properly terminated.
74945** Presumption is the 'endptr' pts to end of some dwarf section data.
74946*/
74947int
74948_dwarf_string_valid(void *startptr, void *endptr)
74949{
74950
74951    char *start = startptr;
74952    char *end = endptr;
74953
74954    while (start < end) {
74955	if (*start == 0) {
74956	    return 1;		/* OK! */
74957	}
74958	++start;
74959	++end;
74960    }
74961    return 0;			/* FAIL! bad string! */
74962}
74963
74964/*
74965  A byte-swapping version of memcpy
74966  for cross-endian use.
74967  Only 2,4,8 should be lengths passed in.
74968*/
74969void *
74970_dwarf_memcpy_swap_bytes(void *s1, const void *s2, size_t len)
74971{
74972    void *orig_s1 = s1;
74973    unsigned char *targ = (unsigned char *) s1;
74974    unsigned char *src = (unsigned char *) s2;
74975
74976    if (len == 4) {
74977	targ[3] = src[0];
74978	targ[2] = src[1];
74979	targ[1] = src[2];
74980	targ[0] = src[3];
74981    } else if (len == 8) {
74982	targ[7] = src[0];
74983	targ[6] = src[1];
74984	targ[5] = src[2];
74985	targ[4] = src[3];
74986	targ[3] = src[4];
74987	targ[2] = src[5];
74988	targ[1] = src[6];
74989	targ[0] = src[7];
74990    } else if (len == 2) {
74991	targ[1] = src[0];
74992	targ[0] = src[1];
74993    }
74994/* should NOT get below here: is not the intended use */
74995    else if (len == 1) {
74996	targ[0] = src[0];
74997    } else {
74998	memcpy(s1, s2, len);
74999    }
75000
75001    return orig_s1;
75002}
75003
75004
75005/*
75006  This calculation used to be sprinkled all over.
75007  Now brought to one place.
75008
75009  We try to accurately compute the size of a cu header
75010  given a known cu header location ( an offset in .debug_info).
75011
75012*/
75013/* ARGSUSED */
75014Dwarf_Unsigned
75015_dwarf_length_of_cu_header(Dwarf_Debug dbg, Dwarf_Unsigned offset)
75016{
75017    int local_length_size = 0;
75018    int local_extension_size = 0;
75019    Dwarf_Unsigned length = 0;
75020    Dwarf_Small *cuptr = dbg->de_debug_info + offset;
75021
75022    READ_AREA_LENGTH(dbg, length, Dwarf_Unsigned,
75023		     cuptr, local_length_size, local_extension_size);
75024
75025    return local_extension_size +	/* initial extesion, if present
75026					 */
75027	local_length_size +	/* Size of cu length field. */
75028	sizeof(Dwarf_Half) +	/* Size of version stamp field. */
75029	local_length_size +	/* Size of abbrev offset field. */
75030	sizeof(Dwarf_Small);	/* Size of address size field. */
75031
75032}
75033
75034/*
75035	Pretend we know nothing about the CU
75036	and just roughly compute the result.
75037*/
75038Dwarf_Unsigned
75039_dwarf_length_of_cu_header_simple(Dwarf_Debug dbg)
75040{
75041    return dbg->de_length_size +	/* Size of cu length field. */
75042	sizeof(Dwarf_Half) +	/* Size of version stamp field. */
75043	dbg->de_length_size +	/* Size of abbrev offset field. */
75044	sizeof(Dwarf_Small);	/* Size of address size field. */
75045}
75046
75047/* Now that we delay loading .debug_info, we need to do the
75048   load in more places. So putting the load
75049   code in one place now instead of replicating it in multiple
75050   places.
75051
75052*/
75053int
75054_dwarf_load_debug_info(Dwarf_Debug dbg, Dwarf_Error * error)
75055{
75056    int res;
75057
75058    /* Testing de_debug_info allows us to avoid testing
75059       de_debug_abbrev. One test instead of 2. .debug_info is useless
75060       without .debug_abbrev. */
75061    if (dbg->de_debug_info) {
75062	return DW_DLV_OK;
75063    }
75064
75065    res = _dwarf_load_section(dbg, dbg->de_debug_abbrev_index,
75066			      &dbg->de_debug_abbrev, error);
75067    if (res != DW_DLV_OK) {
75068	return res;
75069    }
75070    res = _dwarf_load_section(dbg, dbg->de_debug_info_index,
75071			      &dbg->de_debug_info, error);
75072    return res;
75073
75074}
75075���0707010001ad85000081a400011e740000000a000000014020682800002327000000660000000000000000000000000000001600000000libdwarf/dwarf_util.h�/*
75076
75077  Copyright (C) 2000,2003,2004 Silicon Graphics, Inc.  All Rights Reserved.
75078
75079  This program is free software; you can redistribute it and/or modify it
75080  under the terms of version 2.1 of the GNU Lesser General Public License
75081  as published by the Free Software Foundation.
75082
75083  This program is distributed in the hope that it would be useful, but
75084  WITHOUT ANY WARRANTY; without even the implied warranty of
75085  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
75086
75087  Further, this software is distributed without any warranty that it is
75088  free of the rightful claim of any third person regarding infringement
75089  or the like.  Any license provided herein, whether implied or
75090  otherwise, applies only to this software file.  Patent licenses, if
75091  any, provided herein do not apply to combinations of this program with
75092  other software, or any other product whatsoever.
75093
75094  You should have received a copy of the GNU Lesser General Public
75095  License along with this program; if not, write the Free Software
75096  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
75097  USA.
75098
75099  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
75100  Mountain View, CA 94043, or:
75101
75102  http://www.sgi.com
75103
75104  For further information regarding this notice, see:
75105
75106  http://oss.sgi.com/projects/GenInfo/NoticeExplan
75107
75108*/
75109
75110
75111
75112/*
75113    Decodes unsigned leb128 encoded numbers that
75114    are assumed to be less than 4 bytes long.
75115    Make sure ptr is a pointer to a 1-byte type.
75116    Returns UINT_MAX on error.
75117
75118*/
75119#define DECODE_LEB128_UWORD(ptr, value) \
75120    { \
75121       Dwarf_Word uleblen; \
75122	value = _dwarf_decode_u_leb128(ptr,&uleblen); \
75123        ptr += uleblen; \
75124    }
75125
75126/*
75127    Decodes signed leb128 encoded numbers.
75128    Make sure ptr is a pointer to a 1-byte type.
75129
75130*/
75131#define DECODE_LEB128_SWORD(ptr, value) \
75132    { \
75133       Dwarf_Word sleblen; \
75134	value = _dwarf_decode_s_leb128(ptr,&sleblen); \
75135        ptr += sleblen; \
75136    }
75137
75138
75139/*
75140    Skips leb128_encoded numbers that are guaranteed
75141    to be no more than 4 bytes long.  Same for both
75142    signed and unsigned numbers.
75143*/
75144#define SKIP_LEB128_WORD(ptr) \
75145    if ((*(ptr++) & 0x80) != 0) { \
75146        if ((*(ptr++) & 0x80) != 0) { \
75147            if ((*(ptr++) & 0x80) != 0) { \
75148	        if ((*(ptr++) & 0x80) != 0) { \
75149	        } \
75150	    } \
75151        } \
75152    }
75153
75154
75155#define CHECK_DIE(die, error_ret_value) \
75156    if (die == NULL) { \
75157	_dwarf_error(NULL, error, DW_DLE_DIE_NULL); \
75158	return(error_ret_value); \
75159    } \
75160    if (die->di_cu_context == NULL) { \
75161	_dwarf_error(NULL, error, DW_DLE_DIE_NO_CU_CONTEXT); \
75162	return(error_ret_value); \
75163    } \
75164    if (die->di_cu_context->cc_dbg == NULL) { \
75165	_dwarf_error(NULL, error, DW_DLE_DBG_NULL); \
75166	return(error_ret_value); \
75167    }
75168
75169
75170/*
75171   Reads 'source' for 'length' bytes from unaligned addr.
75172
75173   Avoids any constant-in-conditional warnings and
75174   avoids a test in the generated code (for non-const cases,
75175	which are in the majority.)
75176   Uses a temp to avoid the test.
75177   The decl here should avoid any problem of size in the temp.
75178   This code is ENDIAN DEPENDENT
75179   The memcpy args are the endian issue.
75180*/
75181typedef Dwarf_Unsigned BIGGEST_UINT;
75182
75183#ifdef WORDS_BIGENDIAN
75184#define READ_UNALIGNED(dbg,dest,desttype, source, length) \
75185    { \
75186      BIGGEST_UINT _ltmp = 0;  \
75187      dbg->de_copy_word( (((char *)(&_ltmp)) + sizeof(_ltmp) - length), \
75188			source, length) ; \
75189      dest = (desttype)_ltmp;  \
75190    }
75191
75192
75193/*
75194    This macro sign-extends a variable depending on the length.
75195    It fills the bytes between the size of the destination and
75196    the length with appropriate padding.
75197    This code is ENDIAN DEPENDENT but dependent only
75198    on host endianness, not object file endianness.
75199    The memcpy args are the issue.
75200*/
75201#define SIGN_EXTEND(dest, length) \
75202    if (*(Dwarf_Sbyte *)((char *)&dest + sizeof(dest) - length) < 0) \
75203	memcpy((char *)&dest, "\xff\xff\xff\xff\xff\xff\xff\xff", \
75204	    sizeof(dest) - length)
75205#else /* LITTLE ENDIAN */
75206
75207#define READ_UNALIGNED(dbg,dest,desttype, source, length) \
75208    { \
75209      BIGGEST_UINT _ltmp = 0;  \
75210      dbg->de_copy_word( (char *)(&_ltmp) , \
75211                        source, length) ; \
75212      dest = (desttype)_ltmp;  \
75213    }
75214
75215
75216/*
75217    This macro sign-extends a variable depending on the length.
75218    It fills the bytes between the size of the destination and
75219    the length with appropriate padding.
75220    This code is ENDIAN DEPENDENT but dependent only
75221    on host endianness, not object file endianness.
75222    The memcpy args are the issue.
75223*/
75224#define SIGN_EXTEND(dest, length) \
75225    if (*(Dwarf_Sbyte *)((char *)&dest + (length-1)) < 0) \
75226        memcpy((char *)&dest+length,    \
75227                "\xff\xff\xff\xff\xff\xff\xff\xff", \
75228            sizeof(dest) - length)
75229
75230#endif /* ! LITTLE_ENDIAN */
75231
75232
75233
75234/*
75235   READ_AREA LENGTH reads the length (the older way
75236   of pure 32 or 64 bit
75237   or the new proposed dwarfv2.1 64bit-extension way)
75238
75239   It reads the bits from where rw_src_data_p  points to
75240   and updates the rw_src_data_p to point past what was just read.
75241
75242   It updates w_length_size and w_exten_size (which
75243	are really issues only for the dwarfv2.1  64bit extension).
75244
75245   r_dbg is just the current dbg pointer.
75246   w_target is the output length field.
75247   r_targtype is the output type. Always Dwarf_Unsigned so far.
75248
75249*/
75250/* This one handles the v2.1 64bit extension
75251   and 32bit (and   MIPS fixed 64  bit via the
75252	dwarf_init-set r_dbg->de_length_size)..
75253   It does not recognize any but the one distingushed value
75254   (the only one with defined meaning).
75255   It assumes that no CU will have a length
75256	0xffffffxx  (32bit length)
75257	or
75258	0xffffffxx xxxxxxxx (64bit length)
75259   which makes possible auto-detection of the extension.
75260
75261   This depends on knowing that only a non-zero length
75262   is legitimate (AFAICT), and for IRIX non-standard -64
75263   dwarf that the first 32 bits of the 64bit offset will be
75264   zero (because the compiler could not handle a truly large
75265   value as of Jan 2003 and because no app has that much debug
75266   info anyway (yet)).
75267
75268   At present not testing for '64bit elf' here as that
75269   does not seem necessary (none of the 64bit length seems
75270   appropriate unless it's  ident[EI_CLASS] == ELFCLASS64).
75271   Might be a good idea though.
75272
75273*/
75274#   define    READ_AREA_LENGTH(r_dbg,w_target,r_targtype,         \
75275	rw_src_data_p,w_length_size,w_exten_size)                 \
75276    READ_UNALIGNED(r_dbg,w_target,r_targtype,                     \
75277                rw_src_data_p, ORIGINAL_DWARF_OFFSET_SIZE);       \
75278    if(w_target == DISTINGUISHED_VALUE) {                         \
75279	     /* dwarf3 64bit extension */                         \
75280             w_length_size  = DISTINGUISHED_VALUE_OFFSET_SIZE;    \
75281             rw_src_data_p += ORIGINAL_DWARF_OFFSET_SIZE;         \
75282             w_exten_size   = ORIGINAL_DWARF_OFFSET_SIZE;         \
75283             READ_UNALIGNED(r_dbg,w_target,r_targtype,            \
75284                  rw_src_data_p, DISTINGUISHED_VALUE_OFFSET_SIZE);\
75285             rw_src_data_p += DISTINGUISHED_VALUE_OFFSET_SIZE;    \
75286    } else {                                                      \
75287	if(w_target == 0 && r_dbg->de_big_endian_object) {        \
75288	     /* IRIX 64 bit, big endian */                        \
75289             READ_UNALIGNED(r_dbg,w_target,r_targtype,            \
75290                rw_src_data_p, DISTINGUISHED_VALUE_OFFSET_SIZE);  \
75291	     w_length_size  = DISTINGUISHED_VALUE_OFFSET_SIZE;    \
75292	     rw_src_data_p += DISTINGUISHED_VALUE_OFFSET_SIZE;    \
75293	     w_exten_size = 0;                                    \
75294	} else {                                                  \
75295	     /* standard 32 bit dwarf2/dwarf3 */                  \
75296	     w_exten_size   = 0;                                  \
75297             w_length_size  = ORIGINAL_DWARF_OFFSET_SIZE;         \
75298             rw_src_data_p += w_length_size;                      \
75299	}                                                         \
75300    }
75301
75302
75303
75304Dwarf_Unsigned
75305_dwarf_decode_u_leb128(Dwarf_Small * leb128,
75306		       Dwarf_Word * leb128_length);
75307
75308Dwarf_Signed
75309_dwarf_decode_s_leb128(Dwarf_Small * leb128,
75310		       Dwarf_Word * leb128_length);
75311
75312Dwarf_Unsigned
75313_dwarf_get_size_of_val(Dwarf_Debug dbg,
75314		       Dwarf_Unsigned form,
75315		       Dwarf_Small * val_ptr, int v_length_size);
75316
75317/*
75318    This struct is used to build a hash table for the
75319    abbreviation codes for a compile-unit.
75320*/
75321struct Dwarf_Hash_Table_s {
75322    Dwarf_Abbrev_List at_head;
75323    Dwarf_Abbrev_List at_tail;
75324};
75325
75326Dwarf_Abbrev_List
75327_dwarf_get_abbrev_for_code(Dwarf_CU_Context cu_context,
75328			   Dwarf_Word code);
75329
75330
75331/* return 1 if string ends before 'endptr' else
75332** return 0 meaning string is not properly terminated.
75333** Presumption is the 'endptr' pts to end of some dwarf section data.
75334*/
75335int _dwarf_string_valid(void *startptr, void *endptr);
75336
75337Dwarf_Unsigned _dwarf_length_of_cu_header(Dwarf_Debug,
75338					  Dwarf_Unsigned offset);
75339Dwarf_Unsigned _dwarf_length_of_cu_header_simple(Dwarf_Debug);
75340
75341int _dwarf_load_debug_info(Dwarf_Debug dbg, Dwarf_Error *error);
75342�0707010001ad860000812400011e740000000a000000014020682800000ccd000000660000000000000000000000000000001600000000libdwarf/dwarf_vars.c�/*
75343
75344  Copyright (C) 2000, 2002 Silicon Graphics, Inc.  All Rights Reserved.
75345
75346  This program is free software; you can redistribute it and/or modify it
75347  under the terms of version 2.1 of the GNU Lesser General Public License
75348  as published by the Free Software Foundation.
75349
75350  This program is distributed in the hope that it would be useful, but
75351  WITHOUT ANY WARRANTY; without even the implied warranty of
75352  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
75353
75354  Further, this software is distributed without any warranty that it is
75355  free of the rightful claim of any third person regarding infringement
75356  or the like.  Any license provided herein, whether implied or
75357  otherwise, applies only to this software file.  Patent licenses, if
75358  any, provided herein do not apply to combinations of this program with
75359  other software, or any other product whatsoever.
75360
75361  You should have received a copy of the GNU Lesser General Public
75362  License along with this program; if not, write the Free Software
75363  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
75364  USA.
75365
75366  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
75367  Mountain View, CA 94043, or:
75368
75369  http://www.sgi.com
75370
75371  For further information regarding this notice, see:
75372
75373  http://oss.sgi.com/projects/GenInfo/NoticeExplan
75374
75375*/
75376
75377
75378
75379#include "config.h"
75380#include "dwarf_incl.h"
75381#include <stdio.h>
75382#include "dwarf_vars.h"
75383#include "dwarf_global.h"
75384
75385int
75386dwarf_get_vars(Dwarf_Debug dbg,
75387	       Dwarf_Var ** vars,
75388	       Dwarf_Signed * ret_var_count, Dwarf_Error * error)
75389{
75390    int res;
75391
75392    res =
75393       _dwarf_load_section(dbg,
75394		           dbg->de_debug_varnames_index,
75395			   &dbg->de_debug_varnames,
75396		           error);
75397    if (res != DW_DLV_OK) {
75398	return res;
75399    }
75400
75401    return _dwarf_internal_get_pubnames_like_data(dbg, dbg->de_debug_varnames, dbg->de_debug_varnames_size, (Dwarf_Global **) vars,	/* type
75402																	   punning,
75403																	   Dwarf_Type
75404																	   is never
75405																	   a
75406																	   completed
75407																	   type */
75408						  ret_var_count,
75409						  error,
75410						  DW_DLA_VAR_CONTEXT,
75411						  DW_DLE_DEBUG_VARNAMES_LENGTH_BAD,
75412						  DW_DLE_DEBUG_VARNAMES_VERSION_ERROR);
75413}
75414
75415
75416int
75417dwarf_varname(Dwarf_Var var_in, char **ret_varname, Dwarf_Error * error)
75418{
75419    Dwarf_Global var = (Dwarf_Global) var_in;
75420
75421    if (var == NULL) {
75422	_dwarf_error(NULL, error, DW_DLE_VAR_NULL);
75423	return (DW_DLV_ERROR);
75424    }
75425
75426    *ret_varname = (char *) (var->gl_name);
75427    return DW_DLV_OK;
75428}
75429
75430
75431int
75432dwarf_var_die_offset(Dwarf_Var var_in,
75433		     Dwarf_Off * returned_offset, Dwarf_Error * error)
75434{
75435    Dwarf_Global var = (Dwarf_Global) var_in;
75436
75437    return dwarf_global_die_offset(var, returned_offset, error);
75438
75439}
75440
75441
75442int
75443dwarf_var_cu_offset(Dwarf_Var var_in,
75444		    Dwarf_Off * returned_offset, Dwarf_Error * error)
75445{
75446    Dwarf_Global var = (Dwarf_Global) var_in;
75447
75448    return dwarf_global_cu_offset(var, returned_offset, error);
75449}
75450
75451
75452int
75453dwarf_var_name_offsets(Dwarf_Var var_in,
75454		       char **returned_name,
75455		       Dwarf_Off * die_offset,
75456		       Dwarf_Off * cu_offset, Dwarf_Error * error)
75457{
75458    Dwarf_Global var = (Dwarf_Global) var_in;
75459
75460    return
75461	dwarf_global_name_offsets(var,
75462				  returned_name, die_offset, cu_offset,
75463				  error);
75464}
75465���0707010001ad870000812400011e740000000a000000014020682800000594000000660000000000000000000000000000001600000000libdwarf/dwarf_vars.h�/*
75466
75467  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
75468
75469  This program is free software; you can redistribute it and/or modify it
75470  under the terms of version 2.1 of the GNU Lesser General Public License
75471  as published by the Free Software Foundation.
75472
75473  This program is distributed in the hope that it would be useful, but
75474  WITHOUT ANY WARRANTY; without even the implied warranty of
75475  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
75476
75477  Further, this software is distributed without any warranty that it is
75478  free of the rightful claim of any third person regarding infringement
75479  or the like.  Any license provided herein, whether implied or
75480  otherwise, applies only to this software file.  Patent licenses, if
75481  any, provided herein do not apply to combinations of this program with
75482  other software, or any other product whatsoever.
75483
75484  You should have received a copy of the GNU Lesser General Public
75485  License along with this program; if not, write the Free Software
75486  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
75487  USA.
75488
75489  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
75490  Mountain View, CA 94043, or:
75491
75492  http://www.sgi.com
75493
75494  For further information regarding this notice, see:
75495
75496  http://oss.sgi.com/projects/GenInfo/NoticeExplan
75497
75498*/
75499
75500
75501
75502
75503typedef struct Dwarf_Var_Context_s *Dwarf_Var_Context;
75504
75505/* struct  never completed: see dwarf_global.h */
755060707010001ad880000812400011e740000000a000000014020682800000cb4000000660000000000000000000000000000001700000000libdwarf/dwarf_weaks.c����/*
75507
75508  Copyright (C) 2000, 2002 Silicon Graphics, Inc.  All Rights Reserved.
75509
75510  This program is free software; you can redistribute it and/or modify it
75511  under the terms of version 2.1 of the GNU Lesser General Public License
75512  as published by the Free Software Foundation.
75513
75514  This program is distributed in the hope that it would be useful, but
75515  WITHOUT ANY WARRANTY; without even the implied warranty of
75516  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
75517
75518  Further, this software is distributed without any warranty that it is
75519  free of the rightful claim of any third person regarding infringement
75520  or the like.  Any license provided herein, whether implied or
75521  otherwise, applies only to this software file.  Patent licenses, if
75522  any, provided herein do not apply to combinations of this program with
75523  other software, or any other product whatsoever.
75524
75525  You should have received a copy of the GNU Lesser General Public
75526  License along with this program; if not, write the Free Software
75527  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
75528  USA.
75529
75530  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
75531  Mountain View, CA 94043, or:
75532
75533  http://www.sgi.com
75534
75535  For further information regarding this notice, see:
75536
75537  http://oss.sgi.com/projects/GenInfo/NoticeExplan
75538
75539*/
75540
75541
75542
75543#include "config.h"
75544#include "dwarf_incl.h"
75545#include <stdio.h>
75546#include "dwarf_weaks.h"
75547#include "dwarf_global.h"
75548
75549int
75550dwarf_get_weaks(Dwarf_Debug dbg,
75551		Dwarf_Weak ** weaks,
75552		Dwarf_Signed * ret_weak_count, Dwarf_Error * error)
75553{
75554    int res;
75555
75556    res =
75557       _dwarf_load_section(dbg,
75558		           dbg->de_debug_weaknames_index,
75559			   &dbg->de_debug_weaknames,
75560		           error);
75561    if (res != DW_DLV_OK) {
75562	return res;
75563    }
75564
75565    return _dwarf_internal_get_pubnames_like_data(dbg, dbg->de_debug_weaknames, dbg->de_debug_weaknames_size, (Dwarf_Global **) weaks,	/* type
75566																	   punning,
75567																	   Dwarf_Type
75568																	   is never
75569																	   a
75570																	   completed
75571																	   type */
75572						  ret_weak_count,
75573						  error,
75574						  DW_DLA_WEAK_CONTEXT,
75575						  DW_DLE_DEBUG_WEAKNAMES_LENGTH_BAD,
75576						  DW_DLE_DEBUG_WEAKNAMES_VERSION_ERROR);
75577
75578}
75579
75580
75581
75582int
75583dwarf_weakname(Dwarf_Weak weak_in, char **ret_name, Dwarf_Error * error)
75584{
75585    Dwarf_Global weak = (Dwarf_Global) weak_in;
75586
75587    if (weak == NULL) {
75588	_dwarf_error(NULL, error, DW_DLE_WEAK_NULL);
75589	return (DW_DLV_ERROR);
75590    }
75591    *ret_name = (char *) (weak->gl_name);
75592    return DW_DLV_OK;
75593}
75594
75595
75596int
75597dwarf_weak_die_offset(Dwarf_Weak weak_in,
75598		      Dwarf_Off * weak_off, Dwarf_Error * error)
75599{
75600    Dwarf_Global weak = (Dwarf_Global) weak_in;
75601
75602    return dwarf_global_die_offset(weak, weak_off, error);
75603}
75604
75605
75606int
75607dwarf_weak_cu_offset(Dwarf_Weak weak_in,
75608		     Dwarf_Off * weak_off, Dwarf_Error * error)
75609{
75610    Dwarf_Global weak = (Dwarf_Global) weak_in;
75611
75612    return dwarf_global_cu_offset(weak, weak_off, error);
75613}
75614
75615
75616int
75617dwarf_weak_name_offsets(Dwarf_Weak weak_in,
75618			char **weak_name,
75619			Dwarf_Off * die_offset,
75620			Dwarf_Off * cu_offset, Dwarf_Error * error)
75621{
75622    Dwarf_Global weak = (Dwarf_Global) weak_in;
75623
75624    return dwarf_global_name_offsets(weak,
75625				     weak_name,
75626				     die_offset, cu_offset, error);
75627}
756280707010001ad890000812400011e740000000a000000014020682800000596000000660000000000000000000000000000001700000000libdwarf/dwarf_weaks.h����/*
75629
75630  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
75631
75632  This program is free software; you can redistribute it and/or modify it
75633  under the terms of version 2.1 of the GNU Lesser General Public License
75634  as published by the Free Software Foundation.
75635
75636  This program is distributed in the hope that it would be useful, but
75637  WITHOUT ANY WARRANTY; without even the implied warranty of
75638  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
75639
75640  Further, this software is distributed without any warranty that it is
75641  free of the rightful claim of any third person regarding infringement
75642  or the like.  Any license provided herein, whether implied or
75643  otherwise, applies only to this software file.  Patent licenses, if
75644  any, provided herein do not apply to combinations of this program with
75645  other software, or any other product whatsoever.
75646
75647  You should have received a copy of the GNU Lesser General Public
75648  License along with this program; if not, write the Free Software
75649  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
75650  USA.
75651
75652  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
75653  Mountain View, CA 94043, or:
75654
75655  http://www.sgi.com
75656
75657  For further information regarding this notice, see:
75658
75659  http://oss.sgi.com/projects/GenInfo/NoticeExplan
75660
75661*/
75662
75663
75664
75665
75666typedef struct Dwarf_Weak_Context_s *Dwarf_Weak_Context;
75667
75668/* struct  never completed: see dwarf_global.h */
75669��0707010001ad8a0000812400011e740000000a000000014020682600002515000000660000000000000000000000000000001500000000libdwarf/index.v2.mm��.ds fB IN-%
75670.PF "''\s10\\\\*(fB\s0''"
75671.PH
75672.ce
75673\s12INDEX\s0
75674
75675.\" %W% %P% %E% %I% %U%
75676.\" Copyright 1993 UNIX System Laboratories, Inc.
75677.\"  XX macro marks new index entry.
75678.de XX
75679.	br
75680.	ti 0
75681.	ne 2
75682.	vs 12
75683\s10\f1\\$1\0 \s8\fR\\$2\f1
75684..
75685.\"  header between letters of the alphabet
75686.de YY
75687.	sp 2
75688.	ne 4
75689\fR\s16\\$2\s0\f1
75690.	sp 0.5
75691..
75692.\"  markup surrounding book acronym
75693.\"  markup surrounding chapter number
75694.vs 12
75695.ps 8
75696.CH "Index" IN
75697.2C
75698.in +2
75699.\" SCCS path name:	/lfs/doc/DMG/Projects/Indexing/sccs/bin/s.index.head
75700.\" SCCS version SID:	1.8
75701.\" Date this version:	92/08/10
75702.\" Time this version:	13:06:03
75703.YY a A
75704.XX "\&abbreviations table" "\*(C{\*(}C4, 66\-67"
75705.XX "\&ABI" "\*(C{\*(}C10, 60"
75706.XX "\&accelerated access" "\*(C{\*(}C49"
75707.XX "\&access declarations" "\*(C{\*(}C41"
75708.XX "\&accessibility" "\*(C{\*(}C18, 41, 74"
75709.XX "\&activations" "\*(C{\*(}C5, 59"
75710.XX "\&address space" ""
75711.XX "\&\0 contiguous" "\*(C{\*(}C23, 26"
75712.XX "\&\0 flat" "\*(C{\*(}C19"
75713.XX "\&\0 multiple" "\*(C{\*(}C13"
75714.XX "\&\0 segmented" "\*(C{\*(}C5, 19, 26, 33, 50, 66"
75715.XX "\&addresses" ""
75716.XX "\&\0 class" "\*(C{\*(}C19, 26, 38, 75"
75717.XX "\&\0 offset portion" "\*(C{\*(}C19, 50, 66, 77"
75718.XX "\&\0 size of" "\*(C{\*(}C50, 66, 77"
75719.XX "\&anonymous types" "\*(C{\*(}C30"
75720.XX "\&anonymous unions" "\*(C{\*(}C33, 41"
75721.XX "\&arrays" "\*(C{\*(}C5, 39"
75722.XX "\&\0 dimensions" "\*(C{\*(}C39"
75723.XX "\&\0 ordering" "\*(C{\*(}C39, 77"
75724.XX "\&\0 stride" "\*(C{\*(}C39"
75725.XX "\&artificial entries" "\*(C{\*(}C19"
75726.XX "\&attributes" "\*(C{\*(}C3, 7, 67"
75727.XX "\&\0 addresses" "\*(C{\*(}C8, 67"
75728.XX "\&\0 blocks" "\*(C{\*(}C8, 67"
75729.XX "\&\0 constants" "\*(C{\*(}C8, 68"
75730.XX "\&\0 flags" "\*(C{\*(}C8, 69"
75731.XX "\&\0 forms" "\*(C{\*(}C4, 7, 67"
75732.XX "\&\0 names" "\*(C{\*(}C4, 7, 67"
75733.XX "\&\0 ordering" "\*(C{\*(}C9, 27"
75734.XX "\&\0 references" "\*(C{\*(}C8, 69"
75735.XX "\&\0 strings" "\*(C{\*(}C9, 70"
75736.XX "\&\0 values" "\*(C{\*(}C4, 7, 66"
75737.YY b B
75738.XX "\&base types" "\*(C{\*(}C18, 24, 37, 65, 74"
75739.XX "\&bit fields" "\*(C{\*(}C42"
75740.YY c C
75741.XX "\&C " "\*(C{\*(}C3, 26, 33, 39\-40, 45, 47, 57"
75742.XX "\&C++ " "\*(C{\*(}C3, 5, 18\-19, 21, 28, 32\-33, 40\-41, 43, 47, 49, 57"
75743.XX "\&call frame information" "\*(C{\*(}C5, 59, 65, 78"
75744.XX "\&\0 Common Information Entry" "\*(C{\*(}C61"
75745.XX "\&\0 Frame Description Entry" "\*(C{\*(}C62"
75746.XX "\&\0 instructions" "\*(C{\*(}C62, 78"
75747.XX "\&\0 register rules" "\*(C{\*(}C61"
75748.XX "\&\0 structure" "\*(C{\*(}C60"
75749.XX "\&\0 usage" "\*(C{\*(}C64"
75750.XX "\&calling conventions" "\*(C{\*(}C26, 65, 76"
75751.XX "\&catch blocks" "\*(C{\*(}C32"
75752.XX "\&classes" "\*(C{\*(}C33, 40"
75753.XX "\&\0 derived" "\*(C{\*(}C40"
75754.XX "\&\0 friends" "\*(C{\*(}C41"
75755.XX "\&\0 incomplete" "\*(C{\*(}C40"
75756.XX "\&\0 virtual base" "\*(C{\*(}C41"
75757.XX "\&common blocks" "\*(C{\*(}C27, 35"
75758.XX "\&compatibility" "\*(C{\*(}C3, 65"
75759.XX "\&compilation units" "\*(C{\*(}C23, 28, 44, 66"
75760.XX "\&\0 header" "\*(C{\*(}C66"
75761.XX "\&constants" "\*(C{\*(}C33\-34"
75762.YY d D
75763.XX "\&\f(CW.debug\fP " "\*(C{\*(}C4"
75764.XX "\&\f(CW.debug_abbrev\fP " "\*(C{\*(}C66\-67, 79"
75765.XX "\&\f(CW.debug_aranges\fP " "\*(C{\*(}C49, 77, 79"
75766.XX "\&\f(CW.debug_frame\fP " "\*(C{\*(}C61, 79"
75767.XX "\&\f(CW.debug_info\fP " "\*(C{\*(}C3\-4, 7, 49\-50, 66, 79"
75768.XX "\&\f(CW.debug_line\fP " "\*(C{\*(}C4, 50, 79"
75769.XX "\&\f(CW.debug_loc\fP " "\*(C{\*(}C17, 79"
75770.XX "\&\f(CW.debug_macinfo\fP " "\*(C{\*(}C57, 79"
75771.XX "\&\f(CW.debug_pubnames\fP " "\*(C{\*(}C49, 77, 79"
75772.XX "\&\f(CW.debug_str\fP " "\*(C{\*(}C70, 79"
75773.XX "\&debugging information entries" "\*(C{\*(}C3, 7, 9, 66"
75774.XX "\&\0 child entries" "\*(C{\*(}C4, 9, 67"
75775.XX "\&\0 null entries" "\*(C{\*(}C9, 66\-67"
75776.XX "\&\0 siblings" "\*(C{\*(}C4, 9, 67"
75777.XX "\&declarations" ""
75778.XX "\&\0 accessibility" "\*(C{\*(}C18, 74"
75779.XX "\&\0 coordinates" "\*(C{\*(}C20, 28, 30, 44"
75780.XX "\&\0 defining" "\*(C{\*(}C20, 33, 40, 43"
75781.XX "\&\0 external" "\*(C{\*(}C25, 33"
75782.XX "\&\0 imported" "\*(C{\*(}C35"
75783.XX "\&\0 non-defining" "\*(C{\*(}C4, 20, 26, 33, 38, 40"
75784.XX "\&\0 scope" "\*(C{\*(}C34, 37"
75785.XX "\&\0 types of" "\*(C{\*(}C4, 18"
75786.XX "\&\0 visibility" "\*(C{\*(}C18, 75"
75787.XX "\&discriminants" "\*(C{\*(}C44, 77"
75788.XX "\&discriminated unions" "\*(C{\*(}C40, 44, 77"
75789.YY e E
75790.XX "\&entry points" "\*(C{\*(}C25"
75791.XX "\&\0 declarations owned by" "\*(C{\*(}C27"
75792.XX "\&\0 locations" "\*(C{\*(}C26"
75793.XX "\&\0 return types" "\*(C{\*(}C26"
75794.XX "\&enumerations" "\*(C{\*(}C5, 39, 45"
75795.XX "\&error values" "\*(C{\*(}C65"
75796.XX "\&exceptions" "\*(C{\*(}C5, 28, 32"
75797.YY f F
75798.XX "\&file types" "\*(C{\*(}C48"
75799.XX "\&flat address space" "\*(C{\*(}C19"
75800.XX "\&Fortran" "\*(C{\*(}C3, 27, 35, 46\-47"
75801.XX "\&FORTRAN77" "\*(C{\*(}C3"
75802.XX "\&Fortran90" "\*(C{\*(}C3, 34\-35"
75803.XX "\&friends" "\*(C{\*(}C41"
75804.YY i I
75805.XX "\&identifiers" ""
75806.XX "\&\0 case" "\*(C{\*(}C24, 76"
75807.XX "\&\0 names" "\*(C{\*(}C21, 49"
75808.XX "\&imports" "\*(C{\*(}C35"
75809.XX "\&inheritance" "\*(C{\*(}C40"
75810.YY l L
75811.XX "\&labels" "\*(C{\*(}C31"
75812.XX "\&languages" "\*(C{\*(}C3, 23, 75"
75813.XX "\&LEB128" "\*(C{\*(}C8, 51, 68, 70"
75814.XX "\&lexical blocks" "\*(C{\*(}C31"
75815.XX "\&line number information" "\*(C{\*(}C4, 20, 23, 50, 77"
75816.XX "\&\0 definitions" "\*(C{\*(}C51, 77"
75817.XX "\&\0 extended opcodes" "\*(C{\*(}C52, 56, 78"
75818.XX "\&\0 general rules" "\*(C{\*(}C59"
75819.XX "\&\0 prologue" "\*(C{\*(}C52"
75820.XX "\&\0 special opcodes" "\*(C{\*(}C52, 54"
75821.XX "\&\0 standard opcodes" "\*(C{\*(}C52, 55, 78"
75822.XX "\&\0 state machine registers" "\*(C{\*(}C51"
75823.XX "\&locations" ""
75824.XX "\&\0 arithmetic operations" "\*(C{\*(}C13"
75825.XX "\&\0 control flow operations" "\*(C{\*(}C14"
75826.XX "\&\0 descriptions" "\*(C{\*(}C4, 10, 19, 41, 72"
75827.XX "\&\0 examples" "\*(C{\*(}C15\-16"
75828.XX "\&\0 expressions" "\*(C{\*(}C10, 41, 65, 72"
75829.XX "\&\0 lists" "\*(C{\*(}C4, 10, 17, 74"
75830.XX "\&\0 literal encodings" "\*(C{\*(}C11"
75831.XX "\&\0 logical operations" "\*(C{\*(}C13"
75832.XX "\&\0 register based addressing" "\*(C{\*(}C12"
75833.XX "\&\0 register name operators" "\*(C{\*(}C10"
75834.XX "\&\0 special operations" "\*(C{\*(}C15"
75835.XX "\&\0 stack" "\*(C{\*(}C11\-12, 15"
75836.XX "\&lookup" ""
75837.XX "\&\0 by address" "\*(C{\*(}C49, 77"
75838.XX "\&\0 by name" "\*(C{\*(}C49, 77"
75839.YY m M
75840.XX "\&macro information" "\*(C{\*(}C4, 24, 57, 78"
75841.XX "\&\0 base source entries" "\*(C{\*(}C58"
75842.XX "\&\0 command line options" "\*(C{\*(}C58"
75843.XX "\&\0 define and undefine entries" "\*(C{\*(}C57"
75844.XX "\&\0 end file entries" "\*(C{\*(}C58"
75845.XX "\&\0 start file entries" "\*(C{\*(}C58"
75846.XX "\&\0 vendor extensions" "\*(C{\*(}C58"
75847.XX "\&main programs" "\*(C{\*(}C26"
75848.XX "\&members" "\*(C{\*(}C30"
75849.XX "\&\0 bit fields" "\*(C{\*(}C42"
75850.XX "\&\0 data" "\*(C{\*(}C40\-41"
75851.XX "\&\0 functions" "\*(C{\*(}C25, 40, 43"
75852.XX "\&\0 locations" "\*(C{\*(}C11, 43"
75853.XX "\&\0 pointers to" "\*(C{\*(}C47"
75854.XX "\&\0 static data" "\*(C{\*(}C33, 40, 49"
75855.XX "\&Modula2" "\*(C{\*(}C3, 18, 25, 32"
75856.XX "\&modules" "\*(C{\*(}C25"
75857.XX "\&\0 definition" "\*(C{\*(}C25"
75858.XX "\&\0 priority" "\*(C{\*(}C25"
75859.YY n N
75860.XX "\&namelists" "\*(C{\*(}C35"
75861.YY o O
75862.XX "\&optimized code" "\*(C{\*(}C10, 18, 33"
75863.YY p P
75864.XX "\&parameters" ""
75865.XX "\&\0 default value" "\*(C{\*(}C34"
75866.XX "\&\0 formal" "\*(C{\*(}C27, 32\-33, 45"
75867.XX "\&\0 optional" "\*(C{\*(}C34"
75868.XX "\&\0 unspecified" "\*(C{\*(}C27, 32, 46"
75869.XX "\&\0 variable" "\*(C{\*(}C34"
75870.XX "\&Pascal" "\*(C{\*(}C3, 32, 40, 46, 48"
75871.XX "\&pointers to members" "\*(C{\*(}C47"
75872.XX "\&pre-processor" "\*(C{\*(}C4, 57"
75873.YY r R
75874.XX "\&records" "\*(C{\*(}C40"
75875.YY s S
75876.XX "\&scope" "\*(C{\*(}C34, 37"
75877.XX "\&segmented address space" "\*(C{\*(}C5, 19, 26, 33, 50, 66"
75878.XX "\&set types" "\*(C{\*(}C46"
75879.XX "\&source" ""
75880.XX "\&\0 columns" "\*(C{\*(}C20, 51"
75881.XX "\&\0 files" "\*(C{\*(}C20, 23, 51, 53, 56, 58, 78"
75882.XX "\&\0 lines" "\*(C{\*(}C20, 51, 57"
75883.XX "\&string table" "\*(C{\*(}C70"
75884.XX "\&string types" "\*(C{\*(}C46"
75885.XX "\&structures" "\*(C{\*(}C33, 40"
75886.XX "\&\0 derived" "\*(C{\*(}C40"
75887.XX "\&\0 incomplete" "\*(C{\*(}C40"
75888.XX "\&subranges" "\*(C{\*(}C39, 46"
75889.XX "\&subroutines" "\*(C{\*(}C19, 25"
75890.XX "\&\0 declarations owned by" "\*(C{\*(}C27"
75891.XX "\&\0 frame base" "\*(C{\*(}C12, 27"
75892.XX "\&\0 inline" "\*(C{\*(}C28, 76"
75893.XX "\&\0 inlined" "\*(C{\*(}C29"
75894.XX "\&\0 locations" "\*(C{\*(}C26"
75895.XX "\&\0 members" "\*(C{\*(}C25, 43"
75896.XX "\&\0 nested" "\*(C{\*(}C27"
75897.XX "\&\0 out-of-line" "\*(C{\*(}C30"
75898.XX "\&\0 prototypes" "\*(C{\*(}C26, 45"
75899.XX "\&\0 return addresses" "\*(C{\*(}C27"
75900.XX "\&\0 return types" "\*(C{\*(}C26, 45"
75901.XX "\&\0 types" "\*(C{\*(}C19, 45"
75902.YY t T
75903.XX "\&tags" "\*(C{\*(}C4, 7, 65, 67"
75904.XX "\&templates" "\*(C{\*(}C5, 28, 43"
75905.XX "\&try blocks" "\*(C{\*(}C32"
75906.XX "\&type modifiers" "\*(C{\*(}C18, 38"
75907.XX "\&typedefs" "\*(C{\*(}C38"
75908.XX "\&types" ""
75909.XX "\&\0 base" "\*(C{\*(}C18, 24, 37, 65, 74"
75910.XX "\&\0 constant" "\*(C{\*(}C18, 38"
75911.XX "\&\0 modifiers" "\*(C{\*(}C18, 38"
75912.XX "\&\0 packed" "\*(C{\*(}C18, 38"
75913.XX "\&\0 pointer" "\*(C{\*(}C18\-19, 38"
75914.XX "\&\0 reference" "\*(C{\*(}C18\-19, 38"
75915.XX "\&\0 user-defined" "\*(C{\*(}C18"
75916.XX "\&\0 volatile" "\*(C{\*(}C18, 38"
75917.YY u U
75918.XX "\&unions" "\*(C{\*(}C33, 40, 42"
75919.XX "\&\0 anonymous" "\*(C{\*(}C33, 41"
75920.XX "\&\0 incomplete" "\*(C{\*(}C40"
75921.XX "\&user-defined types" "\*(C{\*(}C18"
75922.YY v V
75923.XX "\&variable length data" "\*(C{\*(}C4, 8, 68, 70"
75924.XX "\&variables" "\*(C{\*(}C33"
75925.XX "\&variants" "\*(C{\*(}C40, 44, 77"
75926.XX "\&vendor extensions" "\*(C{\*(}C4, 58, 60, 65"
75927.XX "\&Version 1" "\*(C{\*(}C3\-4, 10, 66"
75928.XX "\&Version 2" "\*(C{\*(}C3, 10, 66, 78"
75929.XX "\&virtual functions" "\*(C{\*(}C3, 19, 43"
75930.XX "\&virtuality" "\*(C{\*(}C19, 41, 43, 75"
75931.XX "\&visibility" "\*(C{\*(}C18, 75"
75932.YY w W
75933.XX "\&with statements" "\*(C{\*(}C32"
75934.1C
75935���0707010001ad8b0000812400011e740000000a00000001402068260000565b000000660000000000000000000000000000001500000000libdwarf/index.v2.ps��%!PS-Adobe-1.0
75936%%Creator: quasar:davea (David B.Anderson,,)
75937%%Title: stdin (ditroff)
75938%%CreationDate: Thu Jun  9 10:39:21 1994
75939%%EndComments
75940% Start of psdit.pro -- prolog for ditroff translator
75941% Copyright (c) 1985,1987 Adobe Systems Incorporated. All Rights Reserved.
75942% GOVERNMENT END USERS: See Notice file in TranScript library directory
75943% -- probably /usr/lib/ps/Notice
75944% RCS: $Header: /plroot/cmplrs.src/v7.4.2m/.RCS/PL/libdwarf/RCS/index.v2.ps,v 1.2 2001/01/16 17:08:41 davea Exp $
75945/$DITroff 140 dict def $DITroff begin
75946/fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def
75947/xi {0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto
75948  /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F
75949  /pagesave save def}def
75950/PB{save /psv exch def currentpoint translate
75951  resolution 72 div dup neg scale 0 0 moveto}def
75952/PE{psv restore}def
75953/m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def
75954/tan{dup sin exch cos div}bind def
75955/point{resolution 72 div mul}bind def
75956/dround	{transform round exch round exch itransform}bind def
75957/xT{/devname exch def}def
75958/xr{/mh exch def /my exch def /resolution exch def}def
75959/xp{}def
75960/xs{docsave restore end}def
75961/xt{}def
75962/xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not
75963 {fonts slotno fontname findfont put fontnames slotno fontname put}if}def
75964/xH{/fontheight exch def F}bind def
75965/xS{/fontslant exch def F}bind def
75966/s{/fontsize exch def /fontheight fontsize def F}bind def
75967/f{/fontnum exch def F}bind def
75968/F{fontheight 0 le {/fontheight fontsize def}if
75969   fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore
75970   fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if
75971   makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}bind def
75972/X{exch currentpoint exch pop moveto show}bind def
75973/N{3 1 roll moveto show}bind def
75974/Y{exch currentpoint pop exch moveto show}bind def
75975/S /show load def
75976/ditpush{}def/ditpop{}def
75977/AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}bind def
75978/AN{4 2 roll moveto 0 exch ashow}bind def
75979/AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}bind def
75980/AS{0 exch ashow}bind def
75981/MX{currentpoint exch pop moveto}bind def
75982/MY{currentpoint pop exch moveto}bind def
75983/MXY /moveto load def
75984/cb{pop}def	% action on unknown char -- nothing for now
75985/n{}def/w{}def
75986/p{pop showpage pagesave restore /pagesave save def}def
75987/abspoint{currentpoint exch pop add exch currentpoint pop add exch}def
75988/dstroke{currentpoint stroke moveto}bind def
75989/Dl{2 copy gsave rlineto stroke grestore rmoveto}bind def
75990/arcellipse{oldmat currentmatrix pop
75991 currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def
75992 rad 0 rad -180 180 arc oldmat setmatrix}def
75993/Dc{gsave dup /diamv exch def /diamh exch def arcellipse dstroke
75994    grestore diamh 0 rmoveto}def
75995/De{gsave /diamv exch def /diamh exch def arcellipse dstroke
75996    grestore diamh 0 rmoveto}def
75997/Da{currentpoint /by exch def /bx exch def /fy exch def /fx exch def
75998   /cy exch def /cx exch def /rad cx cx mul cy cy mul add sqrt def
75999   /ang1 cy neg cx neg atan def /ang2 fy fx atan def cx bx add cy by add
76000   2 copy rad ang1 ang2 arcn stroke exch fx add exch fy add moveto}def
76001/Barray 200 array def % 200 values in a wiggle
76002/D~{mark}def
76003/D~~{counttomark Barray exch 0 exch getinterval astore /Bcontrol exch def pop
76004 /Blen Bcontrol length def Blen 4 ge Blen 2 mod 0 eq and
76005 {Bcontrol 0 get Bcontrol 1 get abspoint /Ycont exch def /Xcont exch def
76006  Bcontrol 0 2 copy get 2 mul put Bcontrol 1 2 copy get 2 mul put
76007  Bcontrol Blen 2 sub 2 copy get 2 mul put
76008  Bcontrol Blen 1 sub 2 copy get 2 mul put
76009  /Ybi /Xbi currentpoint 3 1 roll def def 0 2 Blen 4 sub
76010  {/i exch def
76011   Bcontrol i get 3 div Bcontrol i 1 add get 3 div
76012   Bcontrol i get 3 mul Bcontrol i 2 add get add 6 div
76013   Bcontrol i 1 add get 3 mul Bcontrol i 3 add get add 6 div
76014   /Xbi Xcont Bcontrol i 2 add get 2 div add def
76015   /Ybi Ycont Bcontrol i 3 add get 2 div add def
76016   /Xcont Xcont Bcontrol i 2 add get add def
76017   /Ycont Ycont Bcontrol i 3 add get add def
76018   Xbi currentpoint pop sub Ybi currentpoint exch pop sub rcurveto
76019  }for dstroke}if}def
76020end
76021/ditstart{$DITroff begin
76022 /nfonts 60 def			% NFONTS makedev/ditroff dependent!
76023 /fonts[nfonts{0}repeat]def
76024 /fontnames[nfonts{()}repeat]def
76025/docsave save def
76026}def
76027
76028% character outcalls
76029/oc {/pswid exch def /cc exch def /name exch def
76030   /ditwid pswid fontsize mul resolution mul 72000 div def
76031   /ditsiz fontsize resolution mul 72 div def
76032   ocprocs name known{ocprocs name get exec}{name cb}
76033   ifelse}def
76034/fractm [.65 0 0 .6 0 0] def
76035/fraction
76036 {/fden exch def /fnum exch def gsave /cf currentfont def
76037  cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto
76038  fnum show rmoveto currentfont cf setfont(\244)show setfont fden show
76039  grestore ditwid 0 rmoveto} def
76040/oce {grestore ditwid 0 rmoveto}def
76041/dm {ditsiz mul}def
76042/ocprocs 50 dict def ocprocs begin
76043(14){(1)(4)fraction}def
76044(12){(1)(2)fraction}def
76045(34){(3)(4)fraction}def
76046(13){(1)(3)fraction}def
76047(23){(2)(3)fraction}def
76048(18){(1)(8)fraction}def
76049(38){(3)(8)fraction}def
76050(58){(5)(8)fraction}def
76051(78){(7)(8)fraction}def
76052(sr){gsave .05 dm .16 dm rmoveto(\326)show oce}def
76053(is){gsave 0 .15 dm rmoveto(\362)show oce}def
76054(->){gsave 0 .02 dm rmoveto(\256)show oce}def
76055(<-){gsave 0 .02 dm rmoveto(\254)show oce}def
76056(==){gsave 0 .05 dm rmoveto(\272)show oce}def
76057end
76058% DIThacks fonts for some special chars
7605950 dict dup begin
76060/FontType 3 def
76061/FontName /DIThacks def
76062/FontMatrix [.001 0.0 0.0 .001 0.0 0.0] def
76063/FontBBox [-220 -280 900 900] def% a lie but ...
76064/Encoding 256 array def
760650 1 255{Encoding exch /.notdef put}for
76066Encoding
76067 dup 8#040/space put %space
76068 dup 8#110/rc put %right ceil
76069 dup 8#111/lt put %left  top curl
76070 dup 8#112/bv put %bold vert
76071 dup 8#113/lk put %left  mid curl
76072 dup 8#114/lb put %left  bot curl
76073 dup 8#115/rt put %right top curl
76074 dup 8#116/rk put %right mid curl
76075 dup 8#117/rb put %right bot curl
76076 dup 8#120/rf put %right floor
76077 dup 8#121/lf put %left  floor
76078 dup 8#122/lc put %left  ceil
76079 dup 8#140/sq put %square
76080 dup 8#141/bx put %box
76081 dup 8#142/ci put %circle
76082 dup 8#143/br put %box rule
76083 dup 8#144/rn put %root extender
76084 dup 8#145/vr put %vertical rule
76085 dup 8#146/ob put %outline bullet
76086 dup 8#147/bu put %bullet
76087 dup 8#150/ru put %rule
76088 dup 8#151/ul put %underline
76089 pop
76090/DITfd 100 dict def
76091/BuildChar{0 begin
76092 /cc exch def /fd exch def
76093 /charname fd /Encoding get cc get def
76094 /charwid fd /Metrics get charname get def
76095 /charproc fd /CharProcs get charname get def
76096 charwid 0 fd /FontBBox get aload pop setcachedevice
76097 40 setlinewidth
76098 newpath 0 0 moveto gsave charproc grestore
76099 end}def
76100/BuildChar load 0 DITfd put
76101%/UniqueID 5 def
76102/CharProcs 50 dict def
76103CharProcs begin
76104/space{}def
76105/.notdef{}def
76106/ru{500 0 rls}def
76107/rn{0 750 moveto 500 0 rls}def
76108/vr{20 800 moveto 0 -770 rls}def
76109/bv{20 800 moveto 0 -1000 rls}def
76110/br{20 770 moveto 0 -1040 rls}def
76111/ul{0 -250 moveto 500 0 rls}def
76112/ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def
76113/bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def
76114/sq{80 0 rmoveto currentpoint dround newpath moveto
76115    640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def
76116/bx{80 0 rmoveto currentpoint dround newpath moveto
76117    640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def
76118/ci{355 333 rmoveto currentpoint newpath 333 0 360 arc
76119    50 setlinewidth stroke}def
76120
76121/lt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def
76122/lb{20 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def
76123/rt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def
76124/rb{20 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def
76125/lk{20 800 moveto 20 300 -280 300 s4 arcto pop pop 1000 sub
76126    currentpoint stroke moveto
76127    20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def
76128/rk{20 800 moveto 20 300 320 300 s4 arcto pop pop 1000 sub
76129    currentpoint stroke moveto
76130    20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def
76131/lf{20 800 moveto 0 -1000 rlineto s4 0 rls}def
76132/rf{20 800 moveto 0 -1000 rlineto s4 neg 0 rls}def
76133/lc{20 -200 moveto 0 1000 rlineto s4 0 rls}def
76134/rc{20 -200 moveto 0 1000 rlineto s4 neg 0 rls}def
76135end
76136
76137/Metrics 50 dict def Metrics begin
76138/.notdef 0 def
76139/space 500 def
76140/ru 500 def
76141/br 0 def
76142/lt 250 def
76143/lb 250 def
76144/rt 250 def
76145/rb 250 def
76146/lk 250 def
76147/rk 250 def
76148/rc 250 def
76149/lc 250 def
76150/rf 250 def
76151/lf 250 def
76152/bv 250 def
76153/ob 350 def
76154/bu 350 def
76155/ci 750 def
76156/bx 750 def
76157/sq 750 def
76158/rn 500 def
76159/ul 500 def
76160/vr 0 def
76161end
76162
76163DITfd begin
76164/s2 500 def /s4 250 def /s3 333 def
76165/a4p{arcto pop pop pop pop}def
76166/2cx{2 copy exch}def
76167/rls{rlineto stroke}def
76168/currx{currentpoint pop}def
76169/dround{transform round exch round exch itransform} def
76170end
76171end
76172/DIThacks exch definefont pop
76173
76174ditstart
76175(psc)xT
76176576 1 1 xr
761771(Times-Roman)xf 1 f
761782(Times-Italic)xf 2 f
761793(Times-Bold)xf 3 f
761804(Times-BoldItalic)xf 4 f
761815(Helvetica)xf 5 f
761826(Helvetica-Bold)xf 6 f
761837(Courier)xf 7 f
761848(Courier-Bold)xf 8 f
761859(Symbol)xf 9 f
7618610(DIThacks)xf 10 f
7618710 s
761881 f
76189xi
76190%%EndProlog
76191
76192%%Page: 1 1
7619310 s 0 xH 0 xS 1 f
7619412 s
761952155 768(INDEX)N
7619616 s
76197736 1056(A)N
7619810 s
76199576 1200(abbreviations)N
762001028(table)X
762018 s
762021240(4,)X
762031304(66)X
762049 f
76205(-)S
762061 f
762071403(67)X
7620810 s
76209576 1296(ABI)N
762108 s
76211770(10,)X
76212866(60)X
7621310 s
76214576 1392 0.3375(accelerated)AN
76215959(access)X
762168 s
762171221(49)X
7621810 s
76219576 1488(access)N
76220802(declarations)X
762218 s
762221246(41)X
7622310 s
76224576 1584(accessibility)N
762258 s
762261028(18,)X
762271124(41,)X
762281220(74)X
7622910 s
76230576 1680(activations)N
762318 s
76232979(5,)X
762331043(59)X
7623410 s
76235576 1776(address)N
76236837(space)X
76237636 1872(contiguous)N
762388 s
762391043(23,)X
762401139(26)X
7624110 s
76242636 1968(\257at)N
762438 s
76244794(19)X
7624510 s
76246636 2064(multiple)N
762478 s
76248958(13)X
7624910 s
76250636 2160(segmented)N
762518 s
762521035(5,)X
762531099(19,)X
762541195(26,)X
762551291(33,)X
762561387(50,)X
762571483(66)X
7625810 s
76259576 2256(addresses)N
76260636 2352(class)N
762618 s
76262848(19,)X
76263944(26,)X
762641040(38,)X
762651136(75)X
7626610 s
76267636 2448(offset)N
76268839(portion)X
762698 s
762701126(19,)X
762711222(50,)X
762721318(66,)X
762731414(77)X
7627410 s
76275636 2544(size)N
76276781(of)X
762778 s
76278904(50,)X
762791000(66,)X
762801096(77)X
7628110 s
76282576 2640(anonymous)N
76283965(types)X
762848 s
762851190(30)X
7628610 s
76287576 2736(anonymous)N
76288965(unions)X
762898 s
762901234(33,)X
762911330(41)X
7629210 s
76293576 2832(arrays)N
762948 s
76295829(5,)X
76296893(39)X
7629710 s
76298636 2928(dimensions)N
762998 s
763001056(39)X
7630110 s
76302636 3024(ordering)N
763038 s
76304964(39,)X
763051060(77)X
7630610 s
76307636 3120(stride)N
763088 s
76309870(39)X
7631010 s
76311576 3216(arti\256cial)N
76312863(entries)X
763138 s
763141133(19)X
7631510 s
76316576 3312(attributes)N
763178 s
76318930(3,)X
76319994(7,)X
763201058(67)X
7632110 s
76322636 3408(addresses)N
763238 s
763241000(8,)X
763251064(67)X
7632610 s
76327636 3504(blocks)N
763288 s
76329901(8,)X
76330965(67)X
7633110 s
76332636 3600(constants)N
763338 s
76334990(8,)X
763351054(68)X
7633610 s
76337636 3696(\257ags)N
763388 s
76339843(8,)X
76340907(69)X
7634110 s
76342636 3792(forms)N
763438 s
76344879(4,)X
76345943(7,)X
763461007(67)X
7634710 s
76348636 3888(names)N
763498 s
76350897(4,)X
76351961(7,)X
763521025(67)X
7635310 s
76354636 3984(ordering)N
763558 s
76356964(9,)X
763571028(27)X
7635810 s
76359636 4080 0.3889(references)AN
763608 s
763611024(8,)X
763621088(69)X
7636310 s
76364636 4176(strings)N
763658 s
76366905(9,)X
76367969(70)X
7636810 s
76369636 4272(values)N
763708 s
76371897(4,)X
76372961(7,)X
763731025(66)X
7637416 s
76375736 4560(B)N
7637610 s
76377576 4704(base)N
76378739(types)X
763798 s
76380964(18,)X
763811060(24,)X
763821156(37,)X
763831252(65,)X
763841348(74)X
7638510 s
76386576 4800(bit)N
76387680(\256elds)X
763888 s
76389909(42)X
7639016 s
76391736 5088(C)N
7639210 s
76393576 5232(C)N
763948 s
76395705(3,)X
76396769(26,)X
76397865(33,)X
76398961(39)X
763999 f
76400(-)S
764011 f
764021060(40,)X
764031156(45,)X
764041252(47,)X
764051348(57)X
7640610 s
76407576 5328(C++)N
764088 s
76409795(3,)X
76410859(5,)X
76411923(18)X
764129 f
76413(-)S
764141 f
764151022(19,)X
764161118(21,)X
764171214(28,)X
764181310(32)X
764199 f
76420(-)S
764211 f
764221409(33,)X
764231505(40)X
764249 f
76425(-)S
764261 f
764271604(41,)X
764281700(43,)X
764291796(47,)X
764301892(49,)X
764311988(57)X
7643210 s
76433576 5424(call)N
76434712(frame)X
76435920(information)X
764368 s
764371354(5,)X
764381418(59,)X
764391514(65,)X
764401610(78)X
7644110 s
76442636 5520(Common)N
76443953(Information)X
764441356(Entry)X
764458 s
764461590(61)X
7644710 s
76448636 5616(Frame)N
76449861(Description)X
764501255(Entry)X
764518 s
764521489(62)X
7645310 s
76454636 5712(instructions)N
764558 s
764561065(62,)X
764571161(78)X
7645810 s
764592465 1056(register)N
764602726(rules)X
764618 s
764622938(61)X
7646310 s
764642465 1152(structure)N
764658 s
764662802(60)X
7646710 s
764682465 1248(usage)N
764698 s
764702704(64)X
7647110 s
764722405 1344(calling)N
764732643(conventions)X
764748 s
764753086(26,)X
764763182(65,)X
764773278(76)X
7647810 s
764792405 1440(catch)N
764802595(blocks)X
764818 s
764822860(32)X
7648310 s
764842405 1536(classes)N
764858 s
764862684(33,)X
764872780(40)X
7648810 s
764892465 1632(derived)N
764908 s
764912762(40)X
7649210 s
764932465 1728(friends)N
764948 s
764952744(41)X
7649610 s
764972465 1824(incomplete)N
764988 s
764992877(40)X
7650010 s
765012465 1920(virtual)N
765022694(base)X
765038 s
765042893(41)X
7650510 s
765062405 2016(common)N
765072705(blocks)X
765088 s
765092970(27,)X
765103066(35)X
7651110 s
765122405 2112(compatibility)N
765138 s
765142887(3,)X
765152951(65)X
7651610 s
765172405 2208(compilation)N
765182807(units)X
765198 s
765203018(23,)X
765213114(28,)X
765223210(44,)X
765233306(66)X
7652410 s
765252465 2304(header)N
765268 s
765272736(66)X
7652810 s
765292405 2400(constants)N
765308 s
765312759(33)X
765329 f
76533(-)S
765341 f
765352858(34)X
7653616 s
765372565 2688(D)N
765380(Courier)xf 0 f
765391 f
765400(Courier)xf 0 f
765411 f
765420 f
7654310 s
765442405 2832(.debug)N
765451 f
765468 s
765472769(4)X
765480 f
7654910 s
765502405 2928(.debug_abbrev)N
765511 f
765528 s
765533105(66)X
765549 f
76555(-)S
765561 f
765573204(67,)X
765583300(79)X
765590 f
7656010 s
765612405 3024(.debug_aranges)N
765621 f
765638 s
765643153(49,)X
765653249(77,)X
765663345(79)X
765670 f
7656810 s
765692405 3120(.debug_frame)N
765701 f
765718 s
765723057(61,)X
765733153(79)X
765740 f
7657510 s
765762405 3216(.debug_info)N
765771 f
765788 s
765793009(3)X
765809 f
76581(-)S
765821 f
765833076(4,)X
765843140(7,)X
765853204(49)X
765869 f
76587(-)S
765881 f
765893303(50,)X
765903399(66,)X
765913495(79)X
765920 f
7659310 s
765942405 3312(.debug_line)N
765951 f
765968 s
765973009(4,)X
765983073(50,)X
765993169(79)X
766000 f
7660110 s
766022405 3408(.debug_loc)N
766031 f
766048 s
766052961(17,)X
766063057(79)X
766070 f
7660810 s
766092405 3504(.debug_macinfo)N
766101 f
766118 s
766123153(57,)X
766133249(79)X
766140 f
7661510 s
766162405 3600(.debug_pubnames)N
766171 f
766188 s
766193201(49,)X
766203297(77,)X
766213393(79)X
766220 f
7662310 s
766242405 3696(.debug_str)N
766251 f
766268 s
766272961(70,)X
766283057(79)X
7662910 s
766302405 3792(debugging)N
766312763(information)X
766323161(entries)X
766338 s
766343431(3,)X
766353495(7,)X
766363559(9,)X
766373623(66)X
7663810 s
766392465 3888(child)N
766402645(entries)X
766418 s
766422915(4,)X
766432979(9,)X
766443043(67)X
7664510 s
766462465 3984(null)N
766472609(entries)X
766488 s
766492879(9,)X
766502943(66)X
766519 f
76652(-)S
766531 f
766543042(67)X
7665510 s
766562465 4080(siblings)N
766578 s
766582769(4,)X
766592833(9,)X
766602897(67)X
7666110 s
766622405 4176(declarations)N
766632465 4272(accessibility)N
766648 s
766652917(18,)X
766663013(74)X
7666710 s
766682465 4368(coordinates)N
766698 s
766702891(20,)X
766712987(28,)X
766723083(30,)X
766733179(44)X
7667410 s
766752465 4464(de\256ning)N
766768 s
766772783(20,)X
766782879(33,)X
766792975(40,)X
766803071(43)X
7668110 s
766822465 4560(external)N
766838 s
766842780(25,)X
766852876(33)X
7668610 s
766872465 4656(imported)N
766888 s
766892810(35)X
7669010 s
766912465 4752(non-de\256ning)N
766928 s
766932930(4,)X
766942994(20,)X
766953090(26,)X
766963186(33,)X
766973282(38,)X
766983378(40)X
7669910 s
767002465 4848(scope)N
767018 s
767022704(34,)X
767032800(37)X
7670410 s
767052465 4944(types)N
767062654(of)X
767078 s
767082777(4,)X
767092841(18)X
7671010 s
767112465 5040(visibility)N
767128 s
767132804(18,)X
767142900(75)X
7671510 s
767162405 5136(discriminants)N
767178 s
767182892(44,)X
767192988(77)X
7672010 s
767212405 5232(discriminated)N
767222861(unions)X
767238 s
767243130(40,)X
767253226(44,)X
767263322(77)X
7672716 s
767282565 5520(E)N
7672910 s
767302405 5664(entry)N
767312590(points)X
767328 s
767332841(25)X
7673410 s
767352465 5760(declarations)N
767362873(owned)X
767373107(by)X
767388 s
767393243(27)X
7674010 s
767412228 6183(IN-1)N
76742
767432 p
76744%%Page: 2 2
767450(Courier)xf 0 f
7674610 s 0 xH 0 xS 0 f
767471 f
76748636 768(locations)N
767498 s
76750981(26)X
7675110 s
76752636 864(return)N
76753848(types)X
767548 s
767551073(26)X
7675610 s
76757576 960(enumerations)N
767588 s
767591064(5,)X
767601128(39,)X
767611224(45)X
7676210 s
76763576 1056(error)N
76764753(values)X
767658 s
767661014(65)X
7676710 s
76768576 1152(exceptions)N
767698 s
76770975(5,)X
767711039(28,)X
767721135(32)X
7677316 s
76774736 1440(F)N
7677510 s
76776576 1584(\256le)N
76777698(types)X
767788 s
76779923(48)X
7678010 s
76781576 1680(\257at)N
76782698(address)X
76783959(space)X
767848 s
767851194(19)X
7678610 s
76787576 1776(Fortran)N
767888 s
76789868(3,)X
76790932(27,)X
767911028(35,)X
767921124(46)X
767939 f
76794(-)S
767951 f
767961223(47)X
7679710 s
76798576 1872(FORTRAN77)N
767998 s
768001085(3)X
7680110 s
76802576 1968(Fortran90)N
768038 s
76804948(3,)X
768051012(34)X
768069 f
76807(-)S
768081 f
768091111(35)X
7681010 s
76811576 2064(friends)N
768128 s
76813855(41)X
7681416 s
76815736 2352(I)N
7681610 s
76817576 2496(identi\256ers)N
76818636 2592(case)N
768198 s
76820831(24,)X
76821927(76)X
7682210 s
76823636 2688(names)N
768248 s
76825897(21,)X
76826993(49)X
7682710 s
76828576 2784(imports)N
768298 s
76830876(35)X
7683110 s
76832576 2880(inheritance)N
768338 s
76834989(40)X
7683516 s
76836736 3168(L)N
7683710 s
76838576 3312(labels)N
768398 s
76840819(31)X
7684110 s
76842576 3408(languages)N
768438 s
76844953(3,)X
768451017(23,)X
768461113(75)X
7684710 s
76848576 3504(LEB128)N
768498 s
76850903(8,)X
76851967(51,)X
768521063(68,)X
768531159(70)X
7685410 s
76855576 3600(lexical)N
76856810(blocks)X
768578 s
768581075(31)X
7685910 s
76860576 3696(line)N
76861716(number)X
76862981(information)X
768638 s
768641415(4,)X
768651479(20,)X
768661575(23,)X
768671671(50,)X
768681767(77)X
7686910 s
76870636 3792(de\256nitions)N
768718 s
768721029(51,)X
768731125(77)X
7687410 s
76875636 3888(extended)N
76876946(opcodes)X
768778 s
768781265(52,)X
768791361(56,)X
768801457(78)X
7688110 s
76882636 3984(general)N
76883893(rules)X
768848 s
768851105(59)X
7688610 s
76887636 4080(prologue)N
768888 s
76889977(52)X
7689010 s
76891636 4176(special)N
76892879(opcodes)X
768938 s
768941198(52,)X
768951294(54)X
7689610 s
76897636 4272(standard)N
76898928(opcodes)X
768998 s
769001247(52,)X
769011343(55,)X
769021439(78)X
7690310 s
76904636 4368(state)N
76905803(machine)X
769061095(registers)X
769078 s
769081423(51)X
7690910 s
76910576 4464(locations)N
76911636 4560(arithmetic)N
76912981(operations)X
769138 s
769141371(13)X
7691510 s
76916636 4656(control)N
76917883(\257ow)X
769181045(operations)X
769198 s
769201435(14)X
7692110 s
76922636 4752(descriptions)N
769238 s
769241079(4,)X
769251143(10,)X
769261239(19,)X
769271335(41,)X
769281431(72)X
7692910 s
76930636 4848(examples)N
769318 s
76932995(15)X
769339 f
76934(-)S
769351 f
769361094(16)X
7693710 s
76938636 4944(expressions)N
769398 s
769401066(10,)X
769411162(41,)X
769421258(65,)X
769431354(72)X
7694410 s
76945636 5040(lists)N
769468 s
76947820(4,)X
76948884(10,)X
76949980(17,)X
769501076(74)X
7695110 s
76952636 5136(literal)N
76953843(encodings)X
769548 s
769551224(11)X
7695610 s
76957636 5232(logical)N
76958874(operations)X
769598 s
769601264(13)X
7696110 s
76962636 5328(register)N
76963897(based)X
769641100(addressing)X
769658 s
769661499(12)X
7696710 s
76968636 5424(register)N
76969897(name)X
769701091(operators)X
769718 s
769721446(10)X
7697310 s
76974636 5520(special)N
76975879(operations)X
769768 s
769771269(15)X
7697810 s
76979636 5616(stack)N
769808 s
76981857(11)X
769829 f
76983(-)S
769841 f
76985956(12,)X
769861052(15)X
7698710 s
76988576 5712(lookup)N
769892465 768(by)N
769902565(address)X
769918 s
769922862(49,)X
769932958(77)X
7699410 s
769952465 864(by)N
769962565(name)X
769978 s
769982795(49,)X
769992891(77)X
7700016 s
770012565 1152(M)N
7700210 s
770032405 1296(macro)N
770042626(information)X
770058 s
770063060(4,)X
770073124(24,)X
770083220(57,)X
770093316(78)X
7701010 s
770112465 1392(base)N
770122628(source)X
770132858(entries)X
770148 s
770153128(58)X
7701610 s
770172465 1488(command)N
770182801(line)X
770192941(options)X
770208 s
770213232(58)X
7702210 s
770232465 1584(de\256ne)N
770242681(and)X
770252817(unde\256ne)X
770263113(entries)X
770278 s
770283383(57)X
7702910 s
770302465 1680(end)N
770312601(\256le)X
770322723(entries)X
770338 s
770342993(58)X
7703510 s
770362465 1776(start)N
770372623(\256le)X
770382745(entries)X
770398 s
770403015(58)X
7704110 s
770422465 1872(vendor)N
770432708(extensions)X
770448 s
770453102(58)X
7704610 s
770472405 1968(main)N
770482585(programs)X
770498 s
770502944(26)X
7705110 s
770522405 2064(members)N
770538 s
770542755(30)X
7705510 s
770562465 2160(bit)N
770572569(\256elds)X
770588 s
770592798(42)X
7706010 s
770612465 2256(data)N
770628 s
770632655(40)X
770649 f
77065(-)S
770661 f
770672754(41)X
7706810 s
770692465 2352(functions)N
770708 s
770712819(25,)X
770722915(40,)X
770733011(43)X
7707410 s
770752465 2448(locations)N
770768 s
770772810(11,)X
770782906(43)X
7707910 s
770802465 2544(pointers)N
770812743(to)X
770828 s
770832861(47)X
7708410 s
770852465 2640(static)N
770862654(data)X
770878 s
770882844(33,)X
770892940(40,)X
770903036(49)X
7709110 s
770922405 2736(Modula2)N
770938 s
770942750(3,)X
770952814(18,)X
770962910(25,)X
770973006(32)X
7709810 s
770992405 2832(modules)N
771008 s
771012732(25)X
7710210 s
771032465 2928(de\256nition)N
771048 s
771052827(25)X
7710610 s
771072465 3024(priority)N
771088 s
771092761(25)X
7711016 s
771112565 3312(N)N
7711210 s
771132405 3456(namelists)N
771148 s
771152763(35)X
7711616 s
771172565 3744(O)N
7711810 s
771192405 3888(optimized)N
771202745(code)X
771218 s
771222953(10,)X
771233049(18,)X
771243145(33)X
7712516 s
771262565 4176(P)N
7712710 s
771282405 4320(parameters)N
771292465 4416(default)N
771302708(value)X
771318 s
771322938(34)X
7713310 s
771342465 4512(formal)N
771358 s
771362735(27,)X
771372831(32)X
771389 f
77139(-)S
771401 f
771412930(33,)X
771423026(45)X
7714310 s
771442465 4608(optional)N
771458 s
771462783(34)X
7714710 s
771482465 4704(unspeci\256ed)N
771498 s
771502886(27,)X
771512982(32,)X
771523078(46)X
7715310 s
771542465 4800(variable)N
771558 s
771562780(34)X
7715710 s
771582405 4896(Pascal)N
771598 s
771602666(3,)X
771612730(32,)X
771622826(40,)X
771632922(46,)X
771643018(48)X
7716510 s
771662405 4992(pointers)N
771672683(to)X
771682765(members)X
771698 s
771703115(47)X
7717110 s
771722405 5088(pre-processor)N
771738 s
771742899(4,)X
771752963(57)X
7717616 s
771772565 5376(R)N
7717810 s
771792405 5520(records)N
771808 s
771812698(40)X
7718210 s
771832228 6183(IN-2)N
77184
771853 p
77186%%Page: 3 3
771870(Courier)xf 0 f
7718810 s 0 xH 0 xS 0 f
771891 f
7719016 s
77191736 768(S)N
7719210 s
77193576 912(scope)N
771948 s
77195815(34,)X
77196911(37)X
7719710 s
77198576 1008(segmented)N
77199939(address)X
772001200(space)X
772018 s
772021435(5,)X
772031499(19,)X
772041595(26,)X
772051691(33,)X
772061787(50,)X
772071883(66)X
7720810 s
77209576 1104(set)N
77210685(types)X
772118 s
77212910(46)X
7721310 s
77214576 1200(source)N
77215636 1296(columns)N
772168 s
77217963(20,)X
772181059(51)X
7721910 s
77220636 1392(\256les)N
772218 s
77222825(20,)X
77223921(23,)X
772241017(51,)X
772251113(53,)X
772261209(56,)X
772271305(58,)X
772281401(78)X
7722910 s
77230636 1488(lines)N
772318 s
77232843(20,)X
77233939(51,)X
772341035(57)X
7723510 s
77236576 1584(string)N
77237778(table)X
772388 s
77239990(70)X
7724010 s
77241576 1680(string)N
77242778(types)X
772438 s
772441003(46)X
7724510 s
77246576 1776(structures)N
772478 s
77248944(33,)X
772491040(40)X
7725010 s
77251636 1872(derived)N
772528 s
77253933(40)X
7725410 s
77255636 1968(incomplete)N
772568 s
772571048(40)X
7725810 s
77259576 2064(subranges)N
772608 s
77261953(39,)X
772621049(46)X
7726310 s
77264576 2160(subroutines)N
772658 s
772661001(19,)X
772671097(25)X
7726810 s
77269636 2256(declarations)N
772701044(owned)X
772711278(by)X
772728 s
772731414(27)X
7727410 s
77275636 2352(frame)N
77276844(base)X
772778 s
772781043(12,)X
772791139(27)X
7728010 s
77281636 2448(inline)N
772828 s
77283874(28,)X
77284970(76)X
7728510 s
77286636 2544(inlined)N
772878 s
77288914(29)X
7728910 s
77290636 2640(locations)N
772918 s
77292981(26)X
7729310 s
77294636 2736(members)N
772958 s
77296986(25,)X
772971082(43)X
7729810 s
77299636 2832(nested)N
773008 s
77301897(27)X
7730210 s
77303636 2928(out-of-line)N
773048 s
773051035(30)X
7730610 s
77307636 3024(prototypes)N
773088 s
773091030(26,)X
773101126(45)X
7731110 s
77312636 3120(return)N
77313848(addresses)X
773148 s
773151212(27)X
7731610 s
77317636 3216(return)N
77318848(types)X
773198 s
773201073(26,)X
773211169(45)X
7732210 s
77323636 3312(types)N
773248 s
77325861(19,)X
77326957(45)X
7732716 s
77328736 3600(T)N
7732910 s
77330576 3744(tags)N
773318 s
77332761(4,)X
77333825(7,)X
77334889(65,)X
77335985(67)X
7733610 s
77337576 3840(templates)N
773388 s
77339939(5,)X
773401003(28,)X
773411099(43)X
7734210 s
77343576 3936(try)N
77344685(blocks)X
773458 s
77346950(32)X
7734710 s
77348576 4032(type)N
77349734(modi\256ers)X
773508 s
773511092(18,)X
773521188(38)X
7735310 s
77354576 4128(typedefs)N
773558 s
77356904(38)X
7735710 s
77358576 4224(types)N
77359636 4320(base)N
773608 s
77361835(18,)X
77362931(24,)X
773631027(37,)X
773641123(65,)X
773651219(74)X
7736610 s
77367636 4416(constant)N
773688 s
77369959(18,)X
773701055(38)X
7737110 s
77372636 4512(modi\256ers)N
773738 s
77374994(18,)X
773751090(38)X
7737610 s
77377636 4608(packed)N
773788 s
77379920(18,)X
773801016(38)X
7738110 s
77382636 4704(pointer)N
773838 s
77384919(18)X
773859 f
77386(-)S
773871 f
773881018(19,)X
773891114(38)X
7739010 s
77391636 4800 0.4531(reference)AN
773928 s
77393993(18)X
773949 f
77395(-)S
773961 f
773971092(19,)X
773981188(38)X
7739910 s
77400636 4896(user-de\256ned)N
774018 s
774021089(18)X
7740310 s
77404636 4992(volatile)N
774058 s
77406932(18,)X
774071028(38)X
7740816 s
77409736 5280(U)N
7741010 s
77411576 5424(unions)N
774128 s
77413845(33,)X
77414941(40,)X
774151037(42)X
7741610 s
77417636 5520(anonymous)N
774188 s
774191061(33,)X
774201157(41)X
7742110 s
77422636 5616(incomplete)N
774238 s
774241048(40)X
7742510 s
77426576 5712(user-de\256ned)N
77427993(types)X
774288 s
774291218(18)X
7743016 s
774312565 768(V)N
7743210 s
774332405 912(variable)N
774342684(length)X
774352904(data)X
774368 s
774373094(4,)X
774383158(8,)X
774393222(68,)X
774403318(70)X
7744110 s
774422405 1008(variables)N
774438 s
774442751(33)X
7744510 s
774462405 1104(variants)N
774478 s
774482715(40,)X
774492811(44,)X
774502907(77)X
7745110 s
774522405 1200(vendor)N
774532648(extensions)X
774548 s
774553042(4,)X
774563106(58,)X
774573202(60,)X
774583298(65)X
7745910 s
774602405 1296(Version)N
774612679(1)X
774628 s
774632775(3)X
774649 f
77465(-)S
774661 f
774672842(4,)X
774682906(10,)X
774693002(66)X
7747010 s
774712405 1392(Version)N
774722679(2)X
774738 s
774742775(3,)X
774752839(10,)X
774762935(66,)X
774773031(78)X
7747810 s
774792405 1488(virtual)N
774802634(functions)X
774818 s
774822988(3,)X
774833052(19,)X
774843148(43)X
7748510 s
774862405 1584(virtuality)N
774878 s
774882754(19,)X
774892850(41,)X
774902946(43,)X
774913042(75)X
7749210 s
774932405 1680(visibility)N
774948 s
774952744(18,)X
774962840(75)X
7749716 s
774982565 1968(W)N
7749910 s
775002405 2112(with)N
775012567(statements)X
775028 s
775032961(32)X
7750410 s
775052228 6183(IN-3)N
77506
775073 p
77508%%Trailer
77509xt
77510
77511xs
77512�0707010001ad8c0000816d00011e740000000a00000001402068270000088a000000660000000000000000000000000000001400000000libdwarf/install.sh���#!/bin/sh
77513
77514#
77515# install - install a program, script, or datafile
77516# This comes from X11R5; it is not part of GNU.
77517#
77518# $XConsortium: install.sh,v 1.2 89/12/18 14:47:22 jim Exp $
77519#
77520# This script is compatible with the BSD install script, but was written
77521# from scratch.
77522#
77523
77524
77525# set DOITPROG to echo to test this script
77526
77527# Don't use :- since 4.3BSD and earlier shells don't like it.
77528doit="${DOITPROG-}"
77529
77530
77531# put in absolute paths if you don't have them in your path; or use env. vars.
77532
77533mvprog="${MVPROG-mv}"
77534cpprog="${CPPROG-cp}"
77535chmodprog="${CHMODPROG-chmod}"
77536chownprog="${CHOWNPROG-chown}"
77537chgrpprog="${CHGRPPROG-chgrp}"
77538stripprog="${STRIPPROG-strip}"
77539rmprog="${RMPROG-rm}"
77540
77541instcmd="$mvprog"
77542chmodcmd=""
77543chowncmd=""
77544chgrpcmd=""
77545stripcmd=""
77546rmcmd="$rmprog -f"
77547mvcmd="$mvprog"
77548src=""
77549dst=""
77550
77551while [ x"$1" != x ]; do
77552    case $1 in
77553	-c) instcmd="$cpprog"
77554	    shift
77555	    continue;;
77556
77557	-m) chmodcmd="$chmodprog $2"
77558	    shift
77559	    shift
77560	    continue;;
77561
77562	-o) chowncmd="$chownprog $2"
77563	    shift
77564	    shift
77565	    continue;;
77566
77567	-g) chgrpcmd="$chgrpprog $2"
77568	    shift
77569	    shift
77570	    continue;;
77571
77572	-s) stripcmd="$stripprog"
77573	    shift
77574	    continue;;
77575
77576	*)  if [ x"$src" = x ]
77577	    then
77578		src=$1
77579	    else
77580		dst=$1
77581	    fi
77582	    shift
77583	    continue;;
77584    esac
77585done
77586
77587if [ x"$src" = x ]
77588then
77589	echo "install:  no input file specified"
77590	exit 1
77591fi
77592
77593if [ x"$dst" = x ]
77594then
77595	echo "install:  no destination specified"
77596	exit 1
77597fi
77598
77599
77600# If destination is a directory, append the input filename; if your system
77601# does not like double slashes in filenames, you may need to add some logic
77602
77603if [ -d $dst ]
77604then
77605	dst="$dst"/`basename $src`
77606fi
77607
77608# Make a temp file name in the proper directory.
77609
77610dstdir=`dirname $dst`
77611dsttmp=$dstdir/#inst.$$#
77612
77613# Move or copy the file name to the temp name
77614
77615$doit $instcmd $src $dsttmp
77616
77617# and set any options; do chmod last to preserve setuid bits
77618
77619if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; fi
77620if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; fi
77621if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; fi
77622if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; fi
77623
77624# Now rename the file to the real destination.
77625
77626$doit $rmcmd $dst
77627$doit $mvcmd $dsttmp $dst
77628
77629
77630exit 0
77631��0707010001ad8d0000812400011e740000000a00000001402068280000d554000000660000000000000000000000000000001400000000libdwarf/libdwarf.h���/*
77632
77633  Copyright (C) 2000, 2001, 2002 Silicon Graphics, Inc.  All Rights Reserved.
77634
77635  This program is free software; you can redistribute it and/or modify it
77636  under the terms of version 2.1 of the GNU Lesser General Public License
77637  as published by the Free Software Foundation.
77638
77639  This program is distributed in the hope that it would be useful, but
77640  WITHOUT ANY WARRANTY; without even the implied warranty of
77641  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
77642
77643  Further, this software is distributed without any warranty that it is
77644  free of the rightful claim of any third person regarding infringement
77645  or the like.  Any license provided herein, whether implied or
77646  otherwise, applies only to this software file.  Patent licenses, if
77647  any, provided herein do not apply to combinations of this program with
77648  other software, or any other product whatsoever.
77649
77650  You should have received a copy of the GNU Lesser General Public
77651  License along with this program; if not, write the Free Software
77652  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
77653  USA.
77654
77655  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
77656  Mountain View, CA 94043, or:
77657
77658  http://www.sgi.com
77659
77660  For further information regarding this notice, see:
77661
77662  http://oss.sgi.com/projects/GenInfo/NoticeExplan
77663
77664*/
77665
77666
77667#ifndef _LIBDWARF_H
77668#define _LIBDWARF_H
77669#ifdef __cplusplus
77670extern "C" {
77671#endif
77672/*
77673	libdwarf.h
77674	$Revision: 1.74 $ $Date: 2002/06/11 17:49:06 $
77675
77676	For libdwarf producers and consumers
77677
77678	The interface is defined as having 8-byte signed and unsigned
77679	values so it can handle 64-or-32bit target on 64-or-32bit host.
77680	Addr is the native size: it represents pointers on
77681	the host machine (not the target!).
77682
77683	This contains declarations for types and all producer
77684	and consumer functions.
77685
77686	Function declarations are written on a single line each here
77687	so one can use grep  to each declaration in its entirety.
77688	The declarations are a little harder to read this way, but...
77689
77690*/
77691
77692#ifdef __SGI_FAST_LIBELF
77693struct elf_sgi;
77694typedef struct elf_sgi* dwarf_elf_handle;
77695#else
77696struct Elf;
77697typedef struct Elf* dwarf_elf_handle;
77698#endif
77699
77700#if (_MIPS_SZLONG == 64)
77701/* Special case for MIPS, so -64 (LP64) build gets simple -long-.
77702   Non-MIPS LP64 or ILP64 environments should probably ensure
77703   _MIPS_SZLONG set to 64 everywhere this header is #included.
77704*/
77705typedef int             Dwarf_Bool;         /* boolean type */
77706typedef unsigned long   Dwarf_Off;          /* 4 or 8 byte file offset */
77707typedef unsigned long   Dwarf_Unsigned;     /* 4 or 8 byte unsigned value */
77708typedef unsigned short  Dwarf_Half;         /* 2 byte unsigned value */
77709typedef unsigned char   Dwarf_Small;        /* 1 byte unsigned value */
77710typedef signed   long   Dwarf_Signed;       /* 4 or 8 byte signed value */
77711typedef unsigned long   Dwarf_Addr;         /* target memory address */
77712#else /* 32-bit */
77713/* This is for ILP32, allowing i/o of 64bit dwarf info.
77714   Also should be fine for LP64 and ILP64 cases.
77715*/
77716typedef int                 Dwarf_Bool;     /* boolean type */
77717typedef unsigned long long  Dwarf_Off;      /* 8 byte file offset */
77718typedef unsigned long long  Dwarf_Unsigned; /* 8 byte unsigned value*/
77719typedef unsigned short      Dwarf_Half;     /* 2 byte unsigned value */
77720typedef unsigned char       Dwarf_Small;    /* 1 byte unsigned value */
77721typedef signed   long long  Dwarf_Signed;   /* 8 byte signed value */
77722typedef unsigned long long  Dwarf_Addr;     /* target memory address */
77723#endif
77724typedef void*		Dwarf_Ptr;          /* host machine pointer */
77725
77726/* Contains info on an uninterpreted block of data
77727*/
77728typedef struct {
77729        Dwarf_Unsigned  bl_len;         /* length of block */
77730        Dwarf_Ptr       bl_data;        /* uninterpreted data */
77731	Dwarf_Small     bl_from_loclist; /*non-0 if loclist, else debug_info*/
77732	Dwarf_Unsigned  bl_section_offset; /* Section (not CU) offset
77733                                        which 'data' comes from. */
77734} Dwarf_Block;
77735
77736
77737/* location record
77738*/
77739typedef struct {
77740        Dwarf_Small     lr_atom;        /* location operation */
77741        Dwarf_Unsigned  lr_number;      /* operand */
77742	Dwarf_Unsigned  lr_number2;     /* for OP_BREGx */
77743	Dwarf_Unsigned  lr_offset;      /* offset in locexpr for OP_BRA etc */
77744} Dwarf_Loc;
77745
77746
77747/* location description
77748*/
77749typedef struct {
77750        Dwarf_Addr      ld_lopc;        /* beginning of active range */
77751        Dwarf_Addr      ld_hipc;        /* end of active range */
77752        Dwarf_Half      ld_cents;       /* count of location records */
77753        Dwarf_Loc*      ld_s;           /* pointer to list of same */
77754	Dwarf_Small     ld_from_loclist;
77755				      /* non-0 if loclist, else debug_info*/
77756
77757	Dwarf_Unsigned  ld_section_offset; /* Section (not CU) offset
77758					where loc-expr begins*/
77759} Dwarf_Locdesc;
77760
77761/* Frame description instructions expanded.
77762*/
77763typedef struct {
77764        Dwarf_Small     fp_base_op;
77765        Dwarf_Small     fp_extended_op;
77766        Dwarf_Half      fp_register;
77767        Dwarf_Unsigned  fp_offset;
77768        Dwarf_Off       fp_instr_offset;
77769} Dwarf_Frame_Op;
77770
77771/* DW_REG_TABLE_SIZE must reflect the number of registers
77772 *(DW_FRAME_LAST_REG_NUM) as defined in dwarf.h
77773 */
77774#define DW_REG_TABLE_SIZE  66
77775typedef struct {
77776    struct {
77777	Dwarf_Small         dw_offset_relevant;
77778	Dwarf_Half          dw_regnum;
77779	Dwarf_Addr          dw_offset;
77780    }			    rules[DW_REG_TABLE_SIZE];
77781} Dwarf_Regtable;
77782
77783/* for DW_DLC_SYMBOLIC_RELOCATIONS output to caller
77784   v2, adding drd_length: some relocations are 4 and
77785   some 8 bytes (pointers are 8, section offsets 4) in
77786   some dwarf environments. (MIPS relocations are all one
77787   size in any given ABI.) Changing drd_type to an unsigned char
77788   to keep struct size down.
77789*/
77790enum Dwarf_Rel_Type {
77791		dwarf_drt_none, /* should not get to caller */
77792                dwarf_drt_data_reloc, /* simple normal relocation */
77793                dwarf_drt_segment_rel, /* special reloc, exceptions*/
77794                dwarf_drt_first_of_length_pair,/* this and drt_second
77795				for .word end - begin
77796			 	case */
77797                dwarf_drt_second_of_length_pair
77798};
77799typedef struct Dwarf_Relocation_Data_s  * Dwarf_Relocation_Data;
77800struct Dwarf_Relocation_Data_s {
77801        unsigned char drd_type; /* cast to/from Dwarf_Rel_Type
77802					  to keep size small in struct */
77803	unsigned char drd_length; /* length in bytes
77804			         of data being relocated. 4 for 32bit.
77805				 8 for 64bit data */
77806        Dwarf_Unsigned       drd_offset; /* where the data to reloc is */
77807        Dwarf_Unsigned       drd_symbol_index;
77808};
77809
77810/* Opaque types for Consumer Library. */
77811typedef struct Dwarf_Debug_s*      Dwarf_Debug;
77812typedef struct Dwarf_Die_s*        Dwarf_Die;
77813typedef struct Dwarf_Line_s*       Dwarf_Line;
77814typedef struct Dwarf_Global_s*     Dwarf_Global;
77815typedef struct Dwarf_Func_s*       Dwarf_Func;
77816typedef struct Dwarf_Type_s*       Dwarf_Type;
77817typedef struct Dwarf_Var_s*        Dwarf_Var;
77818typedef struct Dwarf_Weak_s*       Dwarf_Weak;
77819typedef struct Dwarf_Error_s*      Dwarf_Error;
77820typedef struct Dwarf_Attribute_s*  Dwarf_Attribute;
77821typedef struct Dwarf_Abbrev_s*	   Dwarf_Abbrev;
77822typedef struct Dwarf_Fde_s*  	   Dwarf_Fde;
77823typedef struct Dwarf_Cie_s*  	   Dwarf_Cie;
77824typedef struct Dwarf_Arange_s*	   Dwarf_Arange;
77825
77826/* Opaque types for Producer Library. */
77827typedef struct Dwarf_P_Debug_s*	   	Dwarf_P_Debug;
77828typedef struct Dwarf_P_Die_s*	   	Dwarf_P_Die;
77829typedef struct Dwarf_P_Attribute_s*	Dwarf_P_Attribute;
77830typedef struct Dwarf_P_Fde_s*		Dwarf_P_Fde;
77831typedef struct Dwarf_P_Expr_s*		Dwarf_P_Expr;
77832typedef Dwarf_Unsigned 		   	Dwarf_Tag;
77833
77834
77835/* error handler function
77836*/
77837typedef void  (*Dwarf_Handler)(Dwarf_Error /*error*/, Dwarf_Ptr /*errarg*/);
77838
77839
77840/*
77841    Dwarf_dealloc() alloc_type arguments.
77842    Argument points to:
77843*/
77844#define DW_DLA_STRING      	0x01     /* char* */
77845#define DW_DLA_LOC         	0x02     /* Dwarf_Loc */
77846#define DW_DLA_LOCDESC     	0x03     /* Dwarf_Locdesc */
77847#define DW_DLA_ELLIST      	0x04     /* Dwarf_Ellist (not used)*/
77848#define DW_DLA_BOUNDS      	0x05     /* Dwarf_Bounds (not used) */
77849#define DW_DLA_BLOCK       	0x06     /* Dwarf_Block */
77850#define DW_DLA_DEBUG       	0x07     /* Dwarf_Debug */
77851#define DW_DLA_DIE         	0x08     /* Dwarf_Die */
77852#define DW_DLA_LINE        	0x09     /* Dwarf_Line */
77853#define DW_DLA_ATTR        	0x0a     /* Dwarf_Attribute */
77854#define DW_DLA_TYPE        	0x0b     /* Dwarf_Type  (not used) */
77855#define DW_DLA_SUBSCR      	0x0c     /* Dwarf_Subscr (not used) */
77856#define DW_DLA_GLOBAL      	0x0d     /* Dwarf_Global */
77857#define DW_DLA_ERROR       	0x0e     /* Dwarf_Error */
77858#define DW_DLA_LIST        	0x0f     /* a list */
77859#define DW_DLA_LINEBUF     	0x10     /* Dwarf_Line* (not used) */
77860#define DW_DLA_ARANGE      	0x11     /* Dwarf_Arange */
77861#define DW_DLA_ABBREV		0x12 	 /* Dwarf_Abbrev */
77862#define DW_DLA_FRAME_OP		0x13 	 /* Dwarf_Frame_Op */
77863#define DW_DLA_CIE		0x14	 /* Dwarf_Cie */
77864#define DW_DLA_FDE		0x15	 /* Dwarf_Fde */
77865#define DW_DLA_LOC_BLOCK	0x16	 /* Dwarf_Loc Block (not used) */
77866#define DW_DLA_FRAME_BLOCK	0x17	 /* Dwarf_Frame Block (not used) */
77867#define DW_DLA_FUNC		0x18	 /* Dwarf_Func */
77868#define DW_DLA_TYPENAME		0x19	 /* Dwarf_Type */
77869#define DW_DLA_VAR		0x1a	 /* Dwarf_Var */
77870#define DW_DLA_WEAK		0x1b	 /* Dwarf_Weak */
77871#define DW_DLA_ADDR		0x1c	 /* Dwarf_Addr sized entries */
77872
77873/* The augmenter string for CIE */
77874#define DW_CIE_AUGMENTER_STRING_V0              "z"
77875
77876/* dwarf_init() access arguments
77877*/
77878#define DW_DLC_READ        0        /* read only access */
77879#define DW_DLC_WRITE       1        /* write only access */
77880#define DW_DLC_RDWR        2        /* read/write access NOT SUPPORTED*/
77881
77882/* dwarf_init() access flag modifiers
77883*/
77884#define DW_DLC_SIZE_64     0x40000000 /* 32-bit target */
77885#define DW_DLC_SIZE_32     0x20000000 /* 64-bit target */
77886
77887/* dwarf_init() access flag modifiers
77888*/
77889#define DW_DLC_ISA_MIPS             0x00000000 /* MIPS target */
77890#define DW_DLC_ISA_IA64             0x01000000 /* IA64 target */
77891#define DW_DLC_STREAM_RELOCATIONS   0x02000000 /* old style binary relocs */
77892#define DW_DLC_SYMBOLIC_RELOCATIONS 0x04000000 /* usable with assem output */
77893#define DW_DLC_TARGET_BIGENDIAN     0x08000000 /* big    endian target */
77894#define DW_DLC_TARGET_LITTLEENDIAN  0x00100000 /* little endian target */
77895
77896/* dwarf_pcline() slide arguments
77897*/
77898#define DW_DLS_BACKWARD   -1       /* slide backward to find line */
77899#define DW_DLS_NOSLIDE     0       /* match exactly without sliding */
77900#define DW_DLS_FORWARD     1       /* slide forward to find line */
77901
77902/* libdwarf error numbers
77903*/
77904#define DW_DLE_NE          0     /* no error */
77905#define DW_DLE_VMM         1     /* dwarf format/library version mismatch */
77906#define DW_DLE_MAP         2     /* memory map failure */
77907#define DW_DLE_LEE         3     /* libelf error */
77908#define DW_DLE_NDS         4     /* no debug section */
77909#define DW_DLE_NLS         5     /* no line section */
77910#define DW_DLE_ID          6     /* invalid descriptor for query */
77911#define DW_DLE_IOF         7     /* I/O failure */
77912#define DW_DLE_MAF         8     /* memory allocation failure */
77913#define DW_DLE_IA          9     /* invalid argument */
77914#define DW_DLE_MDE         10     /* mangled debugging entry */
77915#define DW_DLE_MLE         11     /* mangled line number entry */
77916#define DW_DLE_FNO         12     /* file not open */
77917#define DW_DLE_FNR         13     /* file not a regular file */
77918#define DW_DLE_FWA         14     /* file open with wrong access */
77919#define DW_DLE_NOB         15     /* not an object file */
77920#define DW_DLE_MOF         16     /* mangled object file header */
77921#define DW_DLE_EOLL        17     /* end of location list entries */
77922#define DW_DLE_NOLL        18     /* no location list section */
77923#define DW_DLE_BADOFF      19     /* Invalid offset */
77924#define DW_DLE_EOS         20     /* end of section  */
77925#define DW_DLE_ATRUNC      21     /* abbreviations section appears truncated*/
77926#define DW_DLE_BADBITC     22     /* Address size passed to dwarf bad*/
77927				    /* It is not an allowed size (64 or 32) */
77928    /* Error codes defined by the current Libdwarf Implementation. */
77929#define DW_DLE_DBG_ALLOC                        23
77930#define DW_DLE_FSTAT_ERROR                      24
77931#define DW_DLE_FSTAT_MODE_ERROR                 25
77932#define DW_DLE_INIT_ACCESS_WRONG                26
77933#define DW_DLE_ELF_BEGIN_ERROR                  27
77934#define DW_DLE_ELF_GETEHDR_ERROR                28
77935#define DW_DLE_ELF_GETSHDR_ERROR                29
77936#define DW_DLE_ELF_STRPTR_ERROR                 30
77937#define DW_DLE_DEBUG_INFO_DUPLICATE             31
77938#define DW_DLE_DEBUG_INFO_NULL                  32
77939#define DW_DLE_DEBUG_ABBREV_DUPLICATE           33
77940#define DW_DLE_DEBUG_ABBREV_NULL                34
77941#define DW_DLE_DEBUG_ARANGES_DUPLICATE          35
77942#define DW_DLE_DEBUG_ARANGES_NULL               36
77943#define DW_DLE_DEBUG_LINE_DUPLICATE             37
77944#define DW_DLE_DEBUG_LINE_NULL                  38
77945#define DW_DLE_DEBUG_LOC_DUPLICATE              39
77946#define DW_DLE_DEBUG_LOC_NULL                   40
77947#define DW_DLE_DEBUG_MACINFO_DUPLICATE          41
77948#define DW_DLE_DEBUG_MACINFO_NULL               42
77949#define DW_DLE_DEBUG_PUBNAMES_DUPLICATE         43
77950#define DW_DLE_DEBUG_PUBNAMES_NULL              44
77951#define DW_DLE_DEBUG_STR_DUPLICATE              45
77952#define DW_DLE_DEBUG_STR_NULL                   46
77953#define DW_DLE_CU_LENGTH_ERROR                  47
77954#define DW_DLE_VERSION_STAMP_ERROR              48
77955#define DW_DLE_ABBREV_OFFSET_ERROR              49
77956#define DW_DLE_ADDRESS_SIZE_ERROR               50
77957#define DW_DLE_DEBUG_INFO_PTR_NULL              51
77958#define DW_DLE_DIE_NULL                         52
77959#define DW_DLE_STRING_OFFSET_BAD                53
77960#define DW_DLE_DEBUG_LINE_LENGTH_BAD            54
77961#define DW_DLE_LINE_PROLOG_LENGTH_BAD           55
77962#define DW_DLE_LINE_NUM_OPERANDS_BAD            56
77963#define DW_DLE_LINE_SET_ADDR_ERROR              57
77964#define DW_DLE_LINE_EXT_OPCODE_BAD              58
77965#define DW_DLE_DWARF_LINE_NULL                  59
77966#define DW_DLE_INCL_DIR_NUM_BAD                 60
77967#define DW_DLE_LINE_FILE_NUM_BAD                61
77968#define DW_DLE_ALLOC_FAIL                       62
77969#define DW_DLE_NO_CALLBACK_FUNC		    	63
77970#define DW_DLE_SECT_ALLOC		    	64
77971#define DW_DLE_FILE_ENTRY_ALLOC		    	65
77972#define DW_DLE_LINE_ALLOC		    	66
77973#define DW_DLE_FPGM_ALLOC		    	67
77974#define DW_DLE_INCDIR_ALLOC		    	68
77975#define DW_DLE_STRING_ALLOC		    	69
77976#define DW_DLE_CHUNK_ALLOC		    	70
77977#define DW_DLE_BYTEOFF_ERR		    	71
77978#define	DW_DLE_CIE_ALLOC		    	72
77979#define DW_DLE_FDE_ALLOC		    	73
77980#define DW_DLE_REGNO_OVFL		    	74
77981#define DW_DLE_CIE_OFFS_ALLOC		    	75
77982#define DW_DLE_WRONG_ADDRESS		    	76
77983#define DW_DLE_EXTRA_NEIGHBORS		    	77
77984#define	DW_DLE_WRONG_TAG		    	78
77985#define DW_DLE_DIE_ALLOC		    	79
77986#define DW_DLE_PARENT_EXISTS		    	80
77987#define DW_DLE_DBG_NULL                         81
77988#define DW_DLE_DEBUGLINE_ERROR		    	82
77989#define DW_DLE_DEBUGFRAME_ERROR		    	83
77990#define DW_DLE_DEBUGINFO_ERROR		    	84
77991#define DW_DLE_ATTR_ALLOC		    	85
77992#define DW_DLE_ABBREV_ALLOC		    	86
77993#define DW_DLE_OFFSET_UFLW		    	87
77994#define DW_DLE_ELF_SECT_ERR		    	88
77995#define DW_DLE_DEBUG_FRAME_LENGTH_BAD	    	89
77996#define DW_DLE_FRAME_VERSION_BAD	    	90
77997#define DW_DLE_CIE_RET_ADDR_REG_ERROR	    	91
77998#define DW_DLE_FDE_NULL			    	92
77999#define DW_DLE_FDE_DBG_NULL		    	93
78000#define DW_DLE_CIE_NULL			    	94
78001#define DW_DLE_CIE_DBG_NULL		    	95
78002#define DW_DLE_FRAME_TABLE_COL_BAD	    	96
78003#define DW_DLE_PC_NOT_IN_FDE_RANGE	    	97
78004#define DW_DLE_CIE_INSTR_EXEC_ERROR	    	98
78005#define DW_DLE_FRAME_INSTR_EXEC_ERROR	    	99
78006#define DW_DLE_FDE_PTR_NULL		    	100
78007#define DW_DLE_RET_OP_LIST_NULL		    	101
78008#define DW_DLE_LINE_CONTEXT_NULL	    	102
78009#define DW_DLE_DBG_NO_CU_CONTEXT	    	103
78010#define DW_DLE_DIE_NO_CU_CONTEXT	    	104
78011#define DW_DLE_FIRST_DIE_NOT_CU		    	105
78012#define DW_DLE_NEXT_DIE_PTR_NULL	    	106
78013#define DW_DLE_DEBUG_FRAME_DUPLICATE	    	107
78014#define DW_DLE_DEBUG_FRAME_NULL		    	108
78015#define DW_DLE_ABBREV_DECODE_ERROR	    	109
78016#define DW_DLE_DWARF_ABBREV_NULL		110
78017#define DW_DLE_ATTR_NULL		    	111
78018#define DW_DLE_DIE_BAD			    	112
78019#define DW_DLE_DIE_ABBREV_BAD		    	113
78020#define DW_DLE_ATTR_FORM_BAD		    	114
78021#define DW_DLE_ATTR_NO_CU_CONTEXT	    	115
78022#define DW_DLE_ATTR_FORM_SIZE_BAD	    	116
78023#define DW_DLE_ATTR_DBG_NULL		    	117
78024#define DW_DLE_BAD_REF_FORM		    	118
78025#define DW_DLE_ATTR_FORM_OFFSET_BAD	    	119
78026#define DW_DLE_LINE_OFFSET_BAD		    	120
78027#define DW_DLE_DEBUG_STR_OFFSET_BAD	    	121
78028#define DW_DLE_STRING_PTR_NULL		    	122
78029#define DW_DLE_PUBNAMES_VERSION_ERROR	    	123
78030#define DW_DLE_PUBNAMES_LENGTH_BAD	    	124
78031#define DW_DLE_GLOBAL_NULL		    	125
78032#define DW_DLE_GLOBAL_CONTEXT_NULL	    	126
78033#define DW_DLE_DIR_INDEX_BAD		    	127
78034#define DW_DLE_LOC_EXPR_BAD		    	128
78035#define DW_DLE_DIE_LOC_EXPR_BAD		    	129
78036#define DW_DLE_ADDR_ALLOC		    	130
78037#define DW_DLE_OFFSET_BAD		    	131
78038#define DW_DLE_MAKE_CU_CONTEXT_FAIL	    	132
78039#define DW_DLE_REL_ALLOC		    	133
78040#define DW_DLE_ARANGE_OFFSET_BAD	    	134
78041#define DW_DLE_SEGMENT_SIZE_BAD		    	135
78042#define DW_DLE_ARANGE_LENGTH_BAD	    	136
78043#define DW_DLE_ARANGE_DECODE_ERROR	    	137
78044#define DW_DLE_ARANGES_NULL		    	138
78045#define DW_DLE_ARANGE_NULL		    	139
78046#define DW_DLE_NO_FILE_NAME		    	140
78047#define DW_DLE_NO_COMP_DIR		    	141
78048#define DW_DLE_CU_ADDRESS_SIZE_BAD	    	142
78049#define DW_DLE_INPUT_ATTR_BAD		    	143
78050#define DW_DLE_EXPR_NULL		    	144
78051#define DW_DLE_BAD_EXPR_OPCODE		    	145
78052#define DW_DLE_EXPR_LENGTH_BAD		    	146
78053#define DW_DLE_MULTIPLE_RELOC_IN_EXPR	    	147
78054#define DW_DLE_ELF_GETIDENT_ERROR	    	148
78055#define DW_DLE_NO_AT_MIPS_FDE		    	149
78056#define DW_DLE_NO_CIE_FOR_FDE		    	150
78057#define DW_DLE_DIE_ABBREV_LIST_NULL	    	151
78058#define DW_DLE_DEBUG_FUNCNAMES_DUPLICATE    	152
78059#define DW_DLE_DEBUG_FUNCNAMES_NULL	    	153
78060#define DW_DLE_DEBUG_FUNCNAMES_VERSION_ERROR    154
78061#define DW_DLE_DEBUG_FUNCNAMES_LENGTH_BAD       155
78062#define DW_DLE_FUNC_NULL		    	156
78063#define DW_DLE_FUNC_CONTEXT_NULL	    	157
78064#define DW_DLE_DEBUG_TYPENAMES_DUPLICATE    	158
78065#define DW_DLE_DEBUG_TYPENAMES_NULL	    	159
78066#define DW_DLE_DEBUG_TYPENAMES_VERSION_ERROR    160
78067#define DW_DLE_DEBUG_TYPENAMES_LENGTH_BAD       161
78068#define DW_DLE_TYPE_NULL		    	162
78069#define DW_DLE_TYPE_CONTEXT_NULL	    	163
78070#define DW_DLE_DEBUG_VARNAMES_DUPLICATE	    	164
78071#define DW_DLE_DEBUG_VARNAMES_NULL	    	165
78072#define DW_DLE_DEBUG_VARNAMES_VERSION_ERROR     166
78073#define DW_DLE_DEBUG_VARNAMES_LENGTH_BAD        167
78074#define DW_DLE_VAR_NULL			    	168
78075#define DW_DLE_VAR_CONTEXT_NULL		    	169
78076#define DW_DLE_DEBUG_WEAKNAMES_DUPLICATE    	170
78077#define DW_DLE_DEBUG_WEAKNAMES_NULL	    	171
78078#define DW_DLE_DEBUG_WEAKNAMES_VERSION_ERROR    172
78079#define DW_DLE_DEBUG_WEAKNAMES_LENGTH_BAD       173
78080#define DW_DLE_WEAK_NULL		    	174
78081#define DW_DLE_WEAK_CONTEXT_NULL	    	175
78082#define DW_DLE_LOCDESC_COUNT_WRONG              176
78083#define DW_DLE_MACINFO_STRING_NULL              177
78084#define DW_DLE_MACINFO_STRING_EMPTY             178
78085#define DW_DLE_MACINFO_INTERNAL_ERROR_SPACE     179
78086#define DW_DLE_MACINFO_MALLOC_FAIL              180
78087#define DW_DLE_DEBUGMACINFO_ERROR		181
78088#define DW_DLE_DEBUG_MACRO_LENGTH_BAD		182
78089#define DW_DLE_DEBUG_MACRO_MAX_BAD		183
78090#define DW_DLE_DEBUG_MACRO_INTERNAL_ERR		184
78091#define DW_DLE_DEBUG_MACRO_MALLOC_SPACE	        185
78092#define DW_DLE_DEBUG_MACRO_INCONSISTENT	        186
78093#define DW_DLE_DF_NO_CIE_AUGMENTATION          	187
78094#define DW_DLE_DF_REG_NUM_TOO_HIGH  		188
78095#define DW_DLE_DF_MAKE_INSTR_NO_INIT          	189
78096#define DW_DLE_DF_NEW_LOC_LESS_OLD_LOC         	190
78097#define DW_DLE_DF_POP_EMPTY_STACK              	191
78098#define DW_DLE_DF_ALLOC_FAIL                   	192
78099#define DW_DLE_DF_FRAME_DECODING_ERROR         	193
78100#define DW_DLE_DEBUG_LOC_SECTION_SHORT         	194
78101
78102    /* DW_DLE_LAST MUST EQUAL LAST ERROR NUMBER */
78103#define DW_DLE_LAST        			194
78104#define DW_DLE_LO_USER     0x10000
78105
78106        /* taken as meaning 'undefined value', this is not
78107           a column or register number.
78108           Only present at libdwarf runtime. Never on disk.
78109	   DW_FRAME_* Values present on disk are in dwarf.h
78110        */
78111#define DW_FRAME_UNDEFINED_VAL          1034
78112
78113        /* taken as meaning 'same value' as caller had, not a column
78114           or register number
78115           Only present at libdwarf runtime. Never on disk.
78116	   DW_FRAME_* Values present on disk are in dwarf.h
78117        */
78118#define DW_FRAME_SAME_VAL               1035
78119
78120
78121
78122/* error return values
78123*/
78124#define DW_DLV_BADADDR     (~(Dwarf_Addr)0)
78125	/* for functions returning target address */
78126
78127#define DW_DLV_NOCOUNT     ((Dwarf_Signed)-1)
78128	/* for functions returning count */
78129
78130#define DW_DLV_BADOFFSET   (~(Dwarf_Off)0)
78131	/* for functions returning offset */
78132
78133/* standard return values for functions */
78134#define DW_DLV_NO_ENTRY -1
78135#define DW_DLV_OK        0
78136#define DW_DLV_ERROR     1
78137
78138/* Special values for offset_into_exception_table field of dwarf fde's. */
78139/* The following value indicates that there is no Exception table offset
78140   associated with a dwarf frame. */
78141#define DW_DLX_NO_EH_OFFSET  	   (-1LL)
78142/* The following value indicates that the producer was unable to analyse the
78143   source file to generate Exception tables for this function. */
78144#define DW_DLX_EH_OFFSET_UNAVAILABLE  (-2LL)
78145
78146
78147/*===========================================================================*/
78148/*  Dwarf consumer interface initialization and termination operations */
78149
78150/* non-elf initialization */
78151int dwarf_init(int 	/*fd*/,
78152    Dwarf_Unsigned 	/*access*/,
78153    Dwarf_Handler 	/*errhand*/,
78154    Dwarf_Ptr 		/*errarg*/,
78155    Dwarf_Debug      *  /*dbg*/,
78156    Dwarf_Error* 	/*error*/);
78157
78158/* elf intialization */
78159int dwarf_elf_init(dwarf_elf_handle /*elf*/,
78160    Dwarf_Unsigned 	/*access*/,
78161    Dwarf_Handler 	/*errhand*/,
78162    Dwarf_Ptr 		/*errarg*/,
78163    Dwarf_Debug      *  /*dbg*/,
78164    Dwarf_Error* 	/*error*/);
78165
78166/* Undocumented function for memory allocator. */
78167void dwarf_print_memory_stats(Dwarf_Debug  /*dbg*/);
78168
78169
78170int dwarf_get_elf(Dwarf_Debug /*dbg*/,
78171    dwarf_elf_handle*   /*return_elfptr*/,
78172    Dwarf_Error*	/*error*/);
78173
78174int dwarf_finish(Dwarf_Debug /*dbg*/, Dwarf_Error* /*error*/);
78175
78176/* die traversal operations */
78177int dwarf_next_cu_header(Dwarf_Debug /*dbg*/,
78178    Dwarf_Unsigned* 	/*cu_header_length*/,
78179    Dwarf_Half*     	/*version_stamp*/,
78180    Dwarf_Off*  	/*abbrev_offset*/,
78181    Dwarf_Half* 	/*address_size*/,
78182    Dwarf_Unsigned*     /*next_cu_header_offset*/,
78183    Dwarf_Error* 	/*error*/);
78184
78185int dwarf_siblingof(Dwarf_Debug /*dbg*/,
78186    Dwarf_Die 		/*die*/,
78187    Dwarf_Die*          /*return_siblingdie*/,
78188    Dwarf_Error* 	/*error*/);
78189
78190int dwarf_child(Dwarf_Die /*die*/,
78191    Dwarf_Die*          /*return_childdie*/,
78192    Dwarf_Error* 	/*error*/);
78193
78194/* finding die given offset */
78195int dwarf_offdie(Dwarf_Debug /*dbg*/,
78196    Dwarf_Off 		/*offset*/,
78197    Dwarf_Die*          /*return_die*/,
78198    Dwarf_Error* 	/*error*/);
78199
78200/* higher level functions (Unimplemented) */
78201int dwarf_pcfile(Dwarf_Debug /*dbg*/,
78202    Dwarf_Addr 		/*pc*/,
78203    Dwarf_Die*          /*return_die*/,
78204    Dwarf_Error* 	/*error*/);
78205
78206/* Unimplemented */
78207int dwarf_pcsubr(Dwarf_Debug /*dbg*/,
78208    Dwarf_Addr 		/*pc*/,
78209    Dwarf_Die*          /*return_die*/,
78210    Dwarf_Error* 	/*error*/);
78211
78212/* Unimplemented */
78213int dwarf_pcscope(Dwarf_Debug /*dbg*/,
78214    Dwarf_Addr 		/*pc*/,
78215    Dwarf_Die*          /*return_die*/,
78216    Dwarf_Error* 	/*error*/);
78217
78218/* operations on DIEs */
78219int dwarf_tag(Dwarf_Die /*die*/,
78220    Dwarf_Half*	        /*return_tag*/,
78221    Dwarf_Error* 	/*error*/);
78222
78223/* utility? */
78224int dwarf_dieoffset(Dwarf_Die /*die*/,
78225    Dwarf_Off*          /*return_offset*/,
78226    Dwarf_Error* 	/*error*/);
78227
78228int dwarf_die_CU_offset(Dwarf_Die /*die*/,
78229    Dwarf_Off*          /*return_offset*/,
78230    Dwarf_Error*	/*error*/);
78231
78232int dwarf_attr (Dwarf_Die /*die*/,
78233    Dwarf_Half 		/*attr*/,
78234    Dwarf_Attribute *   /*returned_attr*/,
78235    Dwarf_Error* 	/*error*/);
78236
78237int dwarf_diename(Dwarf_Die /*die*/,
78238    char   **           /*diename*/,
78239    Dwarf_Error* 	/*error*/);
78240
78241/* convenience functions, alternative to using dwarf_attrlist() */
78242int dwarf_hasattr(Dwarf_Die /*die*/,
78243    Dwarf_Half 		/*attr*/,
78244    Dwarf_Bool     *    /*returned_bool*/,
78245    Dwarf_Error* 	/*error*/);
78246
78247/* dwarf_loclist_n preferred over dwarf_loclist */
78248int dwarf_loclist_n(Dwarf_Attribute /*attr*/,
78249    Dwarf_Locdesc***	/*llbuf*/,
78250    Dwarf_Signed *      /*locCount*/,
78251    Dwarf_Error* 	/*error*/);
78252
78253int dwarf_loclist(Dwarf_Attribute /*attr*/,  /* inflexible! */
78254    Dwarf_Locdesc** 	/*llbuf*/,
78255    Dwarf_Signed *      /*locCount*/,
78256    Dwarf_Error* 	/*error*/);
78257
78258/* Unimplemented */
78259int dwarf_stringlen(Dwarf_Die /*die*/,
78260    Dwarf_Locdesc **    /*returned_locdesc*/,
78261    Dwarf_Error* 	/*error*/);
78262
78263/* Unimplemented */
78264int dwarf_subscrcnt(Dwarf_Die /*die*/,
78265    Dwarf_Signed *      /*returned_count*/,
78266    Dwarf_Error* 	/*error*/);
78267
78268/* Unimplemented */
78269int dwarf_nthsubscr(Dwarf_Die /*die*/,
78270    Dwarf_Unsigned 	/*ssndx*/,
78271    Dwarf_Die *         /*returned_die*/,
78272    Dwarf_Error* 	/*error*/);
78273
78274int dwarf_lowpc(Dwarf_Die /*die*/,
78275    Dwarf_Addr  *       /*returned_addr*/,
78276    Dwarf_Error* 	/*error*/);
78277
78278int dwarf_highpc(Dwarf_Die /*die*/,
78279    Dwarf_Addr  *       /*returned_addr*/,
78280    Dwarf_Error* 	/*error*/);
78281
78282int dwarf_bytesize(Dwarf_Die /*die*/,
78283    Dwarf_Unsigned *    /*returned_size*/,
78284    Dwarf_Error* 	/*error*/);
78285
78286/* Unimplemented */
78287int dwarf_isbitfield(Dwarf_Die /*die*/,
78288    Dwarf_Bool  *       /*returned_bool*/,
78289    Dwarf_Error* 	/*error*/);
78290
78291int dwarf_bitsize(Dwarf_Die /*die*/,
78292    Dwarf_Unsigned *    /*returned_size*/,
78293    Dwarf_Error* 	/*error*/);
78294
78295int dwarf_bitoffset(Dwarf_Die /*die*/,
78296    Dwarf_Unsigned *    /*returned_offset*/,
78297    Dwarf_Error* 	/*error*/);
78298
78299int dwarf_srclang(Dwarf_Die /*die*/,
78300    Dwarf_Unsigned *    /*returned_lang*/,
78301    Dwarf_Error* 	/*error*/);
78302
78303int dwarf_arrayorder(Dwarf_Die /*die*/,
78304    Dwarf_Unsigned *    /*returned_order*/,
78305    Dwarf_Error* 	/*error*/);
78306
78307/* end of convenience function list */
78308
78309/* this is the main interface to attributes of a DIE */
78310int dwarf_attrlist(Dwarf_Die /*die*/,
78311    Dwarf_Attribute** 	/*attrbuf*/,
78312    Dwarf_Signed   *    /*attrcount*/,
78313    Dwarf_Error* 	/*error*/);
78314
78315/* query operations for attributes */
78316int dwarf_hasform(Dwarf_Attribute /*attr*/,
78317    Dwarf_Half 		/*form*/,
78318    Dwarf_Bool *        /*returned_bool*/,
78319    Dwarf_Error* 	/*error*/);
78320
78321int dwarf_whatform(Dwarf_Attribute /*attr*/,
78322    Dwarf_Half *        /*returned_form*/,
78323    Dwarf_Error* 	/*error*/);
78324
78325int dwarf_whatform_direct(Dwarf_Attribute /*attr*/,
78326    Dwarf_Half *        /*returned_form*/,
78327    Dwarf_Error* 	/*error*/);
78328
78329int dwarf_whatattr(Dwarf_Attribute /*attr*/,
78330    Dwarf_Half *        /*returned_attr_num*/,
78331    Dwarf_Error* 	/*error*/);
78332
78333/*
78334    The following are concerned with the Primary Interface: getting
78335    the actual data values. One function per 'kind' of FORM.
78336*/
78337	/*dwarf_formref returns, thru return_offset, a CU-relative offset
78338	** and does not allow DW_FORM_ref_addr*/
78339int dwarf_formref(Dwarf_Attribute /*attr*/,
78340    Dwarf_Off*          /*return_offset*/,
78341    Dwarf_Error* 	/*error*/);
78342	/*dwarf_global_formref returns, thru return_offset,
78343	 a debug_info-relative offset and does allow all reference forms*/
78344int dwarf_global_formref(Dwarf_Attribute /*attr*/,
78345    Dwarf_Off*          /*return_offset*/,
78346    Dwarf_Error* 	/*error*/);
78347
78348int dwarf_formaddr(Dwarf_Attribute /*attr*/,
78349    Dwarf_Addr   *      /*returned_addr*/,
78350    Dwarf_Error* 	/*error*/);
78351
78352int dwarf_formflag(Dwarf_Attribute /*attr*/,
78353    Dwarf_Bool *        /*returned_bool*/,
78354    Dwarf_Error*	/*error*/);
78355
78356int dwarf_formudata(Dwarf_Attribute /*attr*/,
78357    Dwarf_Unsigned  *   /*returned_val*/,
78358    Dwarf_Error* 	/*error*/);
78359
78360int dwarf_formsdata(Dwarf_Attribute 	/*attr*/,
78361    Dwarf_Signed  *     /*returned_val*/,
78362    Dwarf_Error* 	/*error*/);
78363
78364int dwarf_formblock(Dwarf_Attribute /*attr*/,
78365    Dwarf_Block    **   /*returned_block*/,
78366    Dwarf_Error* 	/*error*/);
78367
78368int dwarf_formstring(Dwarf_Attribute /*attr*/,
78369    char   **           /*returned_string*/,
78370    Dwarf_Error* 	/*error*/);
78371
78372/* end attribute query operations. */
78373
78374/* line number operations */
78375/* dwarf_srclines  is the normal interface */
78376int dwarf_srclines(Dwarf_Die /*die*/,
78377    Dwarf_Line** 	/*linebuf*/,
78378    Dwarf_Signed *      /*linecount*/,
78379    Dwarf_Error* 	/*error*/);
78380
78381int dwarf_srcfiles(Dwarf_Die /*die*/,
78382    char*** 		/*srcfiles*/,
78383    Dwarf_Signed *      /*filecount*/,
78384    Dwarf_Error* 	/*error*/);
78385
78386/* Unimplemented. */
78387int dwarf_dieline(Dwarf_Die /*die*/,
78388    Dwarf_Line  *       /*returned_line*/,
78389    Dwarf_Error *       /*error*/);
78390
78391int dwarf_linebeginstatement(Dwarf_Line /*line*/,
78392    Dwarf_Bool  *       /*returned_bool*/,
78393    Dwarf_Error* 	/*error*/);
78394
78395int dwarf_lineendsequence(Dwarf_Line /*line*/,
78396    Dwarf_Bool  *       /*returned_bool*/,
78397    Dwarf_Error*        /*error*/);
78398
78399int dwarf_lineno(Dwarf_Line /*line*/,
78400    Dwarf_Unsigned *    /*returned_lineno*/,
78401    Dwarf_Error* 	/*error*/);
78402
78403int dwarf_lineaddr(Dwarf_Line /*line*/,
78404    Dwarf_Addr *        /*returned_addr*/,
78405    Dwarf_Error* 	/*error*/);
78406
78407int dwarf_lineoff(Dwarf_Line /*line*/,
78408    Dwarf_Signed  *     /*returned_lineoffset*/,
78409    Dwarf_Error* 	/*error*/);
78410
78411int dwarf_linesrc(Dwarf_Line /*line*/,
78412    char   **           /*returned_name*/,
78413    Dwarf_Error* 	/*error*/);
78414
78415int dwarf_lineblock(Dwarf_Line /*line*/,
78416    Dwarf_Bool  *       /*returned_bool*/,
78417    Dwarf_Error* 	/*error*/);
78418
78419/* tertiary interface to line info */
78420/* Unimplemented */
78421int dwarf_pclines(Dwarf_Debug /*dbg*/,
78422    Dwarf_Addr 		/*pc*/,
78423    Dwarf_Line** 	/*linebuf*/,
78424    Dwarf_Signed *      /*linecount*/,
78425    Dwarf_Signed 	/*slide*/,
78426    Dwarf_Error* 	/*error*/);
78427/* end line number operations */
78428
78429/* global name space operations (.debug_pubnames access) */
78430int dwarf_get_globals(Dwarf_Debug /*dbg*/,
78431    Dwarf_Global** 	/*globals*/,
78432    Dwarf_Signed *      /*number_of_globals*/,
78433    Dwarf_Error* 	/*error*/);
78434
78435int dwarf_globname(Dwarf_Global /*glob*/,
78436    char   **           /*returned_name*/,
78437    Dwarf_Error* 	/*error*/);
78438
78439int dwarf_global_die_offset(Dwarf_Global /*global*/,
78440    Dwarf_Off*          /*return_offset*/,
78441    Dwarf_Error * 	/*error*/);
78442
78443int dwarf_get_cu_die_offset_given_cu_header_offset(
78444	Dwarf_Debug     /*dbg*/,
78445	Dwarf_Off       /*in_cu_header_offset*/,
78446        Dwarf_Off *     /*out_cu_die_offset*/,
78447	Dwarf_Error *   /*err*/);
78448#ifdef __sgi /* pragma is sgi MIPS only */
78449#pragma optional dwarf_get_cu_die_offset_given_cu_header_offset
78450#endif
78451
78452int dwarf_global_cu_offset(Dwarf_Global /*global*/,
78453    Dwarf_Off*          /*return_offset*/,
78454    Dwarf_Error* 	/*error*/);
78455
78456int dwarf_global_name_offsets(Dwarf_Global /*global*/,
78457    char   **           /*returned_name*/,
78458    Dwarf_Off* 		/*die_offset*/,
78459    Dwarf_Off* 		/*cu_offset*/,
78460    Dwarf_Error* 	/*error*/);
78461
78462/* Static function name operations.  */
78463int dwarf_get_funcs(Dwarf_Debug	/*dbg*/,
78464    Dwarf_Func**	/*funcs*/,
78465    Dwarf_Signed *      /*number_of_funcs*/,
78466    Dwarf_Error*	/*error*/);
78467
78468int dwarf_funcname(Dwarf_Func /*func*/,
78469    char   **           /*returned_name*/,
78470    Dwarf_Error*	/*error*/);
78471
78472int dwarf_func_die_offset(Dwarf_Func /*func*/,
78473    Dwarf_Off*          /*return_offset*/,
78474    Dwarf_Error*	/*error*/);
78475
78476int dwarf_func_cu_offset(Dwarf_Func /*func*/,
78477    Dwarf_Off*          /*return_offset*/,
78478    Dwarf_Error*	/*error*/);
78479
78480int dwarf_func_name_offsets(Dwarf_Func /*func*/,
78481    char   **           /*returned_name*/,
78482    Dwarf_Off*		/*die_offset*/,
78483    Dwarf_Off*		/*cu_offset*/,
78484    Dwarf_Error*	/*error*/);
78485
78486/* User-defined type name operations.  */
78487int dwarf_get_types(Dwarf_Debug	/*dbg*/,
78488    Dwarf_Type**	/*types*/,
78489    Dwarf_Signed *      /*number_of_types*/,
78490    Dwarf_Error*	/*error*/);
78491
78492int dwarf_typename(Dwarf_Type /*type*/,
78493    char   **           /*returned_name*/,
78494    Dwarf_Error*	/*error*/);
78495
78496int dwarf_type_die_offset(Dwarf_Type /*type*/,
78497    Dwarf_Off*          /*return_offset*/,
78498    Dwarf_Error*	/*error*/);
78499
78500int dwarf_type_cu_offset(Dwarf_Type /*type*/,
78501    Dwarf_Off*          /*return_offset*/,
78502    Dwarf_Error*	/*error*/);
78503
78504int dwarf_type_name_offsets(Dwarf_Type	/*type*/,
78505    char   **           /*returned_name*/,
78506    Dwarf_Off*		/*die_offset*/,
78507    Dwarf_Off*		/*cu_offset*/,
78508    Dwarf_Error*	/*error*/);
78509
78510/* File-scope static variable name operations.  */
78511int dwarf_get_vars(Dwarf_Debug	/*dbg*/,
78512    Dwarf_Var**		/*vars*/,
78513    Dwarf_Signed *      /*number_of_vars*/,
78514    Dwarf_Error*	/*error*/);
78515
78516int dwarf_varname(Dwarf_Var /*var*/,
78517    char   **           /*returned_name*/,
78518    Dwarf_Error*	/*error*/);
78519
78520int dwarf_var_die_offset(Dwarf_Var /*var*/,
78521    Dwarf_Off*          /*return_offset*/,
78522    Dwarf_Error*	/*error*/);
78523
78524int dwarf_var_cu_offset(Dwarf_Var /*var*/,
78525    Dwarf_Off*          /*return_offset*/,
78526    Dwarf_Error*	/*error*/);
78527
78528int dwarf_var_name_offsets(Dwarf_Var /*var*/,
78529    char   **           /*returned_name*/,
78530    Dwarf_Off*		/*die_offset*/,
78531    Dwarf_Off*		/*cu_offset*/,
78532    Dwarf_Error*	/*error*/);
78533
78534/* weak name operations.  */
78535int dwarf_get_weaks(Dwarf_Debug	/*dbg*/,
78536    Dwarf_Weak**	/*weaks*/,
78537    Dwarf_Signed *      /*number_of_weaks*/,
78538    Dwarf_Error*	/*error*/);
78539
78540int dwarf_weakname(Dwarf_Weak /*weak*/,
78541    char   **           /*returned_name*/,
78542    Dwarf_Error*	/*error*/);
78543
78544int dwarf_weak_die_offset(Dwarf_Weak /*weak*/,
78545    Dwarf_Off*          /*return_offset*/,
78546    Dwarf_Error*	/*error*/);
78547
78548int dwarf_weak_cu_offset(Dwarf_Weak /*weak*/,
78549    Dwarf_Off*          /*return_offset*/,
78550    Dwarf_Error*	/*error*/);
78551
78552int dwarf_weak_name_offsets(Dwarf_Weak	/*weak*/,
78553    char   **           /*returned_name*/,
78554    Dwarf_Off*		/*die_offset*/,
78555    Dwarf_Off*		/*cu_offset*/,
78556    Dwarf_Error*	/*error*/);
78557
78558/* location list section operation.  (.debug_loc access) */
78559/* Unimplemented. */
78560int dwarf_get_loclist_entry(Dwarf_Debug /*dbg*/,
78561    Dwarf_Unsigned 	/*offset*/,
78562    Dwarf_Addr* 	/*hipc*/,
78563    Dwarf_Addr* 	/*lopc*/,
78564    Dwarf_Ptr* 		/*data*/,
78565    Dwarf_Unsigned* 	/*entry_len*/,
78566    Dwarf_Unsigned* 	/*next_entry*/,
78567    Dwarf_Error* 	/*error*/);
78568
78569/* abbreviation section operations */
78570int dwarf_get_abbrev(Dwarf_Debug /*dbg*/,
78571    Dwarf_Unsigned 	/*offset*/,
78572    Dwarf_Abbrev  *     /*returned_abbrev*/,
78573    Dwarf_Unsigned* 	/*length*/,
78574    Dwarf_Unsigned* 	/*attr_count*/,
78575    Dwarf_Error* 	/*error*/);
78576
78577int dwarf_get_abbrev_tag(Dwarf_Abbrev /*abbrev*/,
78578    Dwarf_Half*        /*return_tag_number*/,
78579    Dwarf_Error* 	/*error*/);
78580int dwarf_get_abbrev_code(Dwarf_Abbrev /*abbrev*/,
78581    Dwarf_Unsigned*        /*return_code_number*/,
78582    Dwarf_Error* 	/*error*/);
78583
78584int dwarf_get_abbrev_children_flag(Dwarf_Abbrev /*abbrev*/,
78585    Dwarf_Signed*        /*return_flag*/,
78586    Dwarf_Error* 	/*error*/);
78587
78588int dwarf_get_abbrev_entry(Dwarf_Abbrev /*abbrev*/,
78589    Dwarf_Signed  	/*index*/,
78590    Dwarf_Half  *       /*returned_attr_num*/,
78591    Dwarf_Signed* 	/*form*/,
78592    Dwarf_Off*    	/*offset*/,
78593    Dwarf_Error*  	/*error*/);
78594
78595/* consumer string section operation */
78596int dwarf_get_str(Dwarf_Debug /*dbg*/,
78597    Dwarf_Off    	/*offset*/,
78598    char** 		/*string*/,
78599    Dwarf_Signed *      /*strlen_of_string*/,
78600    Dwarf_Error*  	/*error*/);
78601
78602/* Consumer op on  gnu .eh_frame info */
78603int dwarf_get_fde_list_eh(
78604    Dwarf_Debug        /*dbg*/,
78605    Dwarf_Cie       ** /*cie_data*/,
78606    Dwarf_Signed    *  /*cie_element_count*/,
78607    Dwarf_Fde       ** /*fde_data*/,
78608    Dwarf_Signed    *  /*fde_element_count*/,
78609    Dwarf_Error     *  /*error*/);
78610
78611
78612/* consumer operations on frame info: .debug_frame */
78613int dwarf_get_fde_list(Dwarf_Debug /*dbg*/,
78614    Dwarf_Cie**   	/*cie_data*/,
78615    Dwarf_Signed* 	/*cie_element_count*/,
78616    Dwarf_Fde**   	/*fde_data*/,
78617    Dwarf_Signed* 	/*fde_element_count*/,
78618    Dwarf_Error* 	/*error*/);
78619
78620
78621int dwarf_get_fde_range(Dwarf_Fde /*fde*/,
78622    Dwarf_Addr* 	/*low_pc*/,
78623    Dwarf_Unsigned* 	/*func_length*/,
78624    Dwarf_Ptr*    	/*fde_bytes*/,
78625    Dwarf_Unsigned* 	/*fde_byte_length*/,
78626    Dwarf_Off*    	/*cie_offset*/,
78627    Dwarf_Signed*  	/*cie_index*/,
78628    Dwarf_Off*   	/*fde_offset*/,
78629    Dwarf_Error* 	/*error*/);
78630
78631int dwarf_get_fde_exception_info(Dwarf_Fde /*fde*/,
78632    Dwarf_Signed*	/* offset_into_exception_tables */,
78633    Dwarf_Error*        /*error*/);
78634
78635int dwarf_get_cie_of_fde(Dwarf_Fde /*fde*/,
78636    Dwarf_Cie *         /*cie_returned*/,
78637    Dwarf_Error*        /*error*/);
78638
78639int dwarf_get_cie_info(Dwarf_Cie /*cie*/,
78640    Dwarf_Unsigned *    /*bytes_in_cie*/,
78641    Dwarf_Small*    	/*version*/,
78642    char        **      /*augmenter*/,
78643    Dwarf_Unsigned* 	/*code_alignment_factor*/,
78644    Dwarf_Signed* 	/*data_alignment_factor*/,
78645    Dwarf_Half*     	/*return_address_register_rule*/,
78646    Dwarf_Ptr*     	/*initial_instructions*/,
78647    Dwarf_Unsigned*  	/*initial_instructions_length*/,
78648    Dwarf_Error* 	/*error*/);
78649
78650int dwarf_get_fde_instr_bytes(Dwarf_Fde /*fde*/,
78651    Dwarf_Ptr * /*outinstrs*/, Dwarf_Unsigned * /*outlen*/,
78652    Dwarf_Error * /*error*/);
78653
78654int dwarf_get_fde_info_for_all_regs(Dwarf_Fde /*fde*/,
78655    Dwarf_Addr          /*pc_requested*/,
78656    Dwarf_Regtable*     /*reg_table*/,
78657    Dwarf_Addr*         /*row_pc*/,
78658    Dwarf_Error*        /*error*/);
78659
78660int dwarf_get_fde_info_for_reg(Dwarf_Fde /*fde*/,
78661    Dwarf_Half    	/*table_column*/,
78662    Dwarf_Addr    	/*pc_requested*/,
78663    Dwarf_Signed*       /*offset_relevant*/,
78664    Dwarf_Signed* 	/*register*/,
78665    Dwarf_Signed* 	/*offset*/,
78666    Dwarf_Addr* 	/*row_pc*/,
78667    Dwarf_Error* 	/*error*/);
78668
78669int dwarf_get_fde_for_die(Dwarf_Debug /*dbg*/,
78670    Dwarf_Die 		/*subr_die */,
78671    Dwarf_Fde  *        /*returned_fde*/,
78672    Dwarf_Error*	/*error*/);
78673
78674int dwarf_get_fde_n(Dwarf_Fde* /*fde_data*/,
78675    Dwarf_Unsigned 	/*fde_index*/,
78676    Dwarf_Fde  *        /*returned_fde*/,
78677    Dwarf_Error*  	/*error*/);
78678
78679int dwarf_get_fde_at_pc(Dwarf_Fde* /*fde_data*/,
78680    Dwarf_Addr 		/*pc_of_interest*/,
78681    Dwarf_Fde  *        /*returned_fde*/,
78682    Dwarf_Addr* 	/*lopc*/,
78683    Dwarf_Addr* 	/*hipc*/,
78684    Dwarf_Error* 	/*error*/);
78685
78686int dwarf_expand_frame_instructions(Dwarf_Debug /*dbg*/,
78687    Dwarf_Ptr 		/*instruction*/,
78688    Dwarf_Unsigned  	/*i_length*/,
78689    Dwarf_Frame_Op** 	/*returned_op_list*/,
78690    Dwarf_Signed*       /*op_count*/,
78691    Dwarf_Error* 	/*error*/);
78692
78693/* Operations on .debug_aranges. */
78694int dwarf_get_aranges(Dwarf_Debug /*dbg*/,
78695    Dwarf_Arange** 	/*aranges*/,
78696    Dwarf_Signed *      /*arange_count*/,
78697    Dwarf_Error* 	/*error*/);
78698
78699
78700
78701int dwarf_get_arange(
78702    Dwarf_Arange* 	/*aranges*/,
78703    Dwarf_Unsigned 	/*arange_count*/,
78704    Dwarf_Addr 		/*address*/,
78705    Dwarf_Arange *      /*returned_arange*/,
78706    Dwarf_Error* 	/*error*/);
78707
78708int dwarf_get_cu_die_offset(
78709    Dwarf_Arange 	/*arange*/,
78710    Dwarf_Off*          /*return_offset*/,
78711    Dwarf_Error* 	/*error*/);
78712
78713int dwarf_get_arange_cu_header_offset(
78714    Dwarf_Arange 	/*arange*/,
78715    Dwarf_Off*          /*return_cu_header_offset*/,
78716    Dwarf_Error* 	/*error*/);
78717#ifdef __sgi /* pragma is sgi MIPS only */
78718#pragma optional dwarf_get_arange_cu_header_offset
78719#endif
78720
78721int dwarf_get_arange_info(
78722    Dwarf_Arange 	/*arange*/,
78723    Dwarf_Addr* 	/*start*/,
78724    Dwarf_Unsigned* 	/*length*/,
78725    Dwarf_Off* 		/*cu_die_offset*/,
78726    Dwarf_Error* 	/*error*/);
78727
78728
78729/* consumer .debug_macinfo information interface.
78730*/
78731struct Dwarf_Macro_Details_s {
78732  Dwarf_Off    dmd_offset; /* offset, in the section,
78733                              of this macro info */
78734  Dwarf_Small  dmd_type;   /* the type, DW_MACINFO_define etc*/
78735  Dwarf_Signed dmd_lineno; /* the source line number where
78736                              applicable and vend_def # if
78737                              vendor_extension op
78738                           */
78739
78740  Dwarf_Signed dmd_fileindex;/* the source file index:
78741                              applies to define undef start_file
78742                             */
78743  char *       dmd_macro;  /* macro name (with value for defineop)
78744                              string from vendor ext
78745                           */
78746};
78747
78748/* _dwarf_print_lines is for use by dwarfdump: it prints
78749   line info to stdout.
78750*/
78751int _dwarf_print_lines(Dwarf_Die cu_die,Dwarf_Error * /*error*/);
78752
78753/* _dwarf_ld_sort_lines is for use solely by ld for
78754   rearranging lines in .debug_line in a .o created with a text
78755   section per function.
78756		-OPT:procedure_reorder=ON
78757   where ld-cord (cord(1)ing by ld,
78758   not by cord(1)) may have changed the function order.
78759*/
78760int _dwarf_ld_sort_lines(
78761        void * orig_buffer,
78762        unsigned long   buffer_len,
78763        int is_64_bit,
78764        int *any_change,
78765        int * err_code);
78766
78767/* Used by dwarfdump -v to print offsets, for debugging
78768   dwarf info
78769*/
78770int _dwarf_fde_section_offset(Dwarf_Debug dbg,Dwarf_Fde in_fde,
78771        Dwarf_Off *fde_off, Dwarf_Off *cie_off,
78772        Dwarf_Error *err);
78773
78774/* Used by dwarfdump -v to print offsets, for debugging
78775   dwarf info
78776*/
78777int _dwarf_cie_section_offset(Dwarf_Debug dbg,Dwarf_Cie in_cie,
78778        Dwarf_Off *cie_off,
78779        Dwarf_Error *err);
78780
78781
78782
78783
78784typedef struct Dwarf_Macro_Details_s Dwarf_Macro_Details;
78785
78786int dwarf_get_macro(Dwarf_Debug /*dbg*/,
78787    char *        /*requested_macro_name*/,
78788    Dwarf_Addr    /*pc_of_request*/,
78789    char **       /*returned_macro_value*/,
78790    Dwarf_Error * /*error*/);
78791
78792int dwarf_get_all_defined_macros(Dwarf_Debug /*dbg*/,
78793    Dwarf_Addr     /*pc_of_request*/,
78794    Dwarf_Signed * /*returned_count*/,
78795    char ***       /*returned_pointers_to_macros*/,
78796    Dwarf_Error *  /*error*/);
78797
78798char *dwarf_find_macro_value_start(char * /*macro_string*/);
78799
78800int dwarf_get_macro_details(Dwarf_Debug /*dbg*/,
78801    Dwarf_Off              /*macro_offset*/,
78802    Dwarf_Unsigned	   /*maximum_count*/,
78803    Dwarf_Signed         * /*entry_count*/,
78804    Dwarf_Macro_Details ** /*details*/,
78805    Dwarf_Error *          /*err*/);
78806
78807
78808int dwarf_get_address_size(Dwarf_Debug /*dbg*/,
78809        Dwarf_Half  * /*addr_size*/,
78810        Dwarf_Error * /*error*/);
78811
78812/* utility operations */
78813Dwarf_Unsigned dwarf_errno(Dwarf_Error 	/*error*/);
78814
78815char* dwarf_errmsg(Dwarf_Error	/*error*/);
78816
78817/* stringcheck zero is default and means do all
78818** string length validity checks.
78819** Call with parameter value 1 to turn off many such checks (and
78820** increase performance).
78821** Call with zero for safest running.
78822** Actual value saved and returned is only 8 bits! Upper bits
78823** ignored by libdwarf (and zero on return).
78824** Returns previous value.
78825*/
78826int dwarf_set_stringcheck(int /*stringcheck*/);
78827
78828/* Unimplemented */
78829Dwarf_Handler dwarf_seterrhand(Dwarf_Debug /*dbg*/, Dwarf_Handler /*errhand*/);
78830
78831/* Unimplemented */
78832Dwarf_Ptr dwarf_seterrarg(Dwarf_Debug /*dbg*/, Dwarf_Ptr /*errarg*/);
78833
78834void dwarf_dealloc(Dwarf_Debug /*dbg*/, void* /*space*/,
78835    Dwarf_Unsigned /*type*/);
78836
78837/* DWARF Producer Interface */
78838
78839typedef int (*Dwarf_Callback_Func)(
78840    char* /*name*/,
78841    int 		/*size*/,
78842    Dwarf_Unsigned 	/*type*/,
78843    Dwarf_Unsigned 	/*flags*/,
78844    Dwarf_Unsigned 	/*link*/,
78845    Dwarf_Unsigned 	/*info*/,
78846    int* 		/*sect name index*/,
78847    int* 		/*error*/);
78848
78849Dwarf_P_Debug dwarf_producer_init(
78850    Dwarf_Unsigned      /*creation_flags*/,
78851    Dwarf_Callback_Func	/*func*/,
78852    Dwarf_Handler 	/*errhand*/,
78853    Dwarf_Ptr 		/*errarg*/,
78854    Dwarf_Error* 	/*error*/);
78855
78856typedef int (*Dwarf_Callback_Func_b)(
78857    char* 		/*name*/,
78858    int                 /*size*/,
78859    Dwarf_Unsigned      /*type*/,
78860    Dwarf_Unsigned      /*flags*/,
78861    Dwarf_Unsigned      /*link*/,
78862    Dwarf_Unsigned      /*info*/,
78863    Dwarf_Unsigned*     /*sect_name_index*/,
78864    int*                /*error*/);
78865
78866
78867Dwarf_P_Debug dwarf_producer_init_b(
78868    Dwarf_Unsigned        /*flags*/,
78869    Dwarf_Callback_Func_b /*func*/,
78870    Dwarf_Handler         /*errhand*/,
78871    Dwarf_Ptr             /*errarg*/,
78872    Dwarf_Error *         /*error*/);
78873
78874
78875Dwarf_Signed dwarf_transform_to_disk_form(Dwarf_P_Debug /*dbg*/,
78876    Dwarf_Error* 	/*error*/);
78877
78878Dwarf_Ptr dwarf_get_section_bytes(Dwarf_P_Debug /*dbg*/,
78879    Dwarf_Signed 	/*dwarf_section*/,
78880    Dwarf_Signed* 	/*elf_section_index*/,
78881    Dwarf_Unsigned* 	/*length*/,
78882    Dwarf_Error* 	/*error*/);
78883
78884int  dwarf_get_relocation_info_count(
78885        Dwarf_P_Debug    /*dbg*/,
78886        Dwarf_Unsigned * /*count_of_relocation_sections*/,
78887	int *            /*drd_buffer_version*/,
78888        Dwarf_Error*     /*error*/);
78889
78890int dwarf_get_relocation_info(
78891        Dwarf_P_Debug           /*dbg*/,
78892        Dwarf_Signed          * /*elf_section_index*/,
78893        Dwarf_Signed          * /*elf_section_index_link*/,
78894        Dwarf_Unsigned        * /*relocation_buffer_count*/,
78895        Dwarf_Relocation_Data * /*reldata_buffer*/,
78896        Dwarf_Error*            /*error*/);
78897
78898/* v1:  no drd_length field, enum explicit */
78899/* v2:  has the drd_length field, enum value in uchar member */
78900#define DWARF_DRD_BUFFER_VERSION 2
78901
78902void dwarf_reset_section_bytes(Dwarf_P_Debug /*dbg*/);
78903
78904Dwarf_Unsigned dwarf_producer_finish(Dwarf_P_Debug /*dbg*/,
78905    Dwarf_Error* /*error*/);
78906
78907/* Producer attribute addition functions. */
78908Dwarf_P_Attribute dwarf_add_AT_targ_address(Dwarf_P_Debug /*dbg*/,
78909    Dwarf_P_Die 	/*ownerdie*/,
78910    Dwarf_Half 		/*attr*/,
78911    Dwarf_Unsigned 	/*pc_value*/,
78912    Dwarf_Signed 	/*sym_index*/,
78913    Dwarf_Error* 	/*error*/);
78914
78915Dwarf_P_Attribute dwarf_add_AT_targ_address_b(Dwarf_P_Debug /*dbg*/,
78916    Dwarf_P_Die 	/*ownerdie*/,
78917    Dwarf_Half 		/*attr*/,
78918    Dwarf_Unsigned 	/*pc_value*/,
78919    Dwarf_Unsigned 	/*sym_index*/,
78920    Dwarf_Error* 	/*error*/);
78921
78922Dwarf_P_Attribute dwarf_add_AT_unsigned_const(Dwarf_P_Debug /*dbg*/,
78923    Dwarf_P_Die 	/*ownerdie*/,
78924    Dwarf_Half 		/*attr*/,
78925    Dwarf_Unsigned 	/*value*/,
78926    Dwarf_Error* 	/*error*/);
78927
78928Dwarf_P_Attribute dwarf_add_AT_signed_const(Dwarf_P_Debug /*dbg*/,
78929    Dwarf_P_Die 	/*ownerdie*/,
78930    Dwarf_Half 		/*attr*/,
78931    Dwarf_Signed 	/*value*/,
78932    Dwarf_Error* 	/*error*/);
78933
78934Dwarf_P_Attribute dwarf_add_AT_reference(Dwarf_P_Debug /*dbg*/,
78935    Dwarf_P_Die 	/*ownerdie*/,
78936    Dwarf_Half 		/*attr*/,
78937    Dwarf_P_Die 	/*otherdie*/,
78938    Dwarf_Error* 	/*error*/);
78939
78940Dwarf_P_Attribute dwarf_add_AT_const_value_string(Dwarf_P_Die /*ownerdie*/,
78941    char* 		/*string_value*/,
78942    Dwarf_Error* 	/*error*/);
78943
78944Dwarf_P_Attribute dwarf_add_AT_location_expr(Dwarf_P_Debug /*dbg*/,
78945    Dwarf_P_Die 	/*ownerdie*/,
78946    Dwarf_Half 		/*attr*/,
78947    Dwarf_P_Expr 	/*loc_expr*/,
78948    Dwarf_Error* 	/*error*/);
78949
78950Dwarf_P_Attribute dwarf_add_AT_string(Dwarf_P_Debug /*dbg*/,
78951    Dwarf_P_Die 	/*ownerdie*/,
78952    Dwarf_Half 		/*attr*/,
78953    char* 		/*string*/,
78954    Dwarf_Error* 	/*error*/);
78955
78956Dwarf_P_Attribute dwarf_add_AT_flag(Dwarf_P_Debug /*dbg*/,
78957    Dwarf_P_Die 	/*ownerdie*/,
78958    Dwarf_Half 		/*attr*/,
78959    Dwarf_Small 	/*flag*/,
78960    Dwarf_Error* 	/*error*/);
78961
78962Dwarf_P_Attribute dwarf_add_AT_producer(Dwarf_P_Die /*ownerdie*/,
78963    char* 		/*producer_string*/,
78964    Dwarf_Error* 	/*error*/);
78965
78966Dwarf_P_Attribute dwarf_add_AT_const_value_signedint(Dwarf_P_Die /*ownerdie*/,
78967    Dwarf_Signed 	/*signed_value*/,
78968    Dwarf_Error* 	/*error*/);
78969
78970Dwarf_P_Attribute dwarf_add_AT_const_value_unsignedint(
78971    Dwarf_P_Die         /*ownerdie*/,
78972    Dwarf_Unsigned 	/*unsigned_value*/,
78973    Dwarf_Error* 	/*error*/);
78974
78975Dwarf_P_Attribute dwarf_add_AT_comp_dir(Dwarf_P_Die /*ownerdie*/,
78976    char* 		/*current_working_directory*/,
78977    Dwarf_Error* 	/*error*/);
78978
78979Dwarf_P_Attribute dwarf_add_AT_name(Dwarf_P_Die	/*die*/,
78980    char* 		/*name*/,
78981    Dwarf_Error* 	/*error*/);
78982
78983/* Producer line creation functions (.debug_line) */
78984Dwarf_Unsigned dwarf_add_directory_decl(Dwarf_P_Debug /*dbg*/,
78985    char* 		/*name*/,
78986    Dwarf_Error*	/*error*/);
78987
78988Dwarf_Unsigned dwarf_add_file_decl(Dwarf_P_Debug /*dbg*/,
78989    char* 		/*name*/,
78990    Dwarf_Unsigned 	/*dir_index*/,
78991    Dwarf_Unsigned 	/*time_last_modified*/,
78992    Dwarf_Unsigned 	/*length*/,
78993    Dwarf_Error*	/*error*/);
78994
78995Dwarf_Unsigned dwarf_add_line_entry(Dwarf_P_Debug /*dbg*/,
78996    Dwarf_Unsigned 	/*file_index*/,
78997    Dwarf_Addr 		/*code_address*/,
78998    Dwarf_Unsigned 	/*lineno*/,
78999    Dwarf_Signed 	/*column_number*/,
79000    Dwarf_Bool 		/*is_source_stmt_begin*/,
79001    Dwarf_Bool 		/*is_basic_block_begin*/,
79002    Dwarf_Error* 	/*error*/);
79003
79004Dwarf_Unsigned dwarf_lne_set_address(Dwarf_P_Debug /*dbg*/,
79005    Dwarf_Unsigned 	/*offset*/,
79006    Dwarf_Unsigned 	/*symbol_index*/,
79007    Dwarf_Error* 	/*error*/);
79008
79009Dwarf_Unsigned dwarf_lne_end_sequence(Dwarf_P_Debug /*dbg*/,
79010    Dwarf_Addr		/*end_address*/,
79011    Dwarf_Error* 	/*error*/);
79012
79013/* Producer .debug_frame functions */
79014Dwarf_Unsigned dwarf_add_frame_cie(Dwarf_P_Debug /*dbg*/,
79015    char* 		/*augmenter*/,
79016    Dwarf_Small 	/*code_alignent_factor*/,
79017    Dwarf_Small 	/*data_alignment_factor*/,
79018    Dwarf_Small 	/*return_address_reg*/,
79019    Dwarf_Ptr 		/*initialization_bytes*/,
79020    Dwarf_Unsigned 	/*init_byte_len*/,
79021    Dwarf_Error* 	/*error*/);
79022
79023Dwarf_Unsigned dwarf_add_frame_fde(
79024    Dwarf_P_Debug 	/*dbg*/,
79025    Dwarf_P_Fde 	/*fde*/,
79026    Dwarf_P_Die 	/*corresponding subprogram die*/,
79027    Dwarf_Unsigned 	/*cie_to_use*/,
79028    Dwarf_Unsigned  	/*virt_addr_of_described_code*/,
79029    Dwarf_Unsigned  	/*length_of_code*/,
79030    Dwarf_Unsigned 	/*symbol_index*/,
79031    Dwarf_Error* 	/*error*/);
79032
79033Dwarf_Unsigned dwarf_add_frame_fde_b(
79034        Dwarf_P_Debug  /*dbg*/,
79035        Dwarf_P_Fde    /*fde*/,
79036        Dwarf_P_Die    /*die*/,
79037        Dwarf_Unsigned /*cie*/,
79038        Dwarf_Addr     /*virt_addr*/,
79039        Dwarf_Unsigned /*code_len*/,
79040        Dwarf_Unsigned /*sym_idx*/,
79041        Dwarf_Unsigned /*sym_idx_of_end*/,
79042        Dwarf_Addr     /*offset_from_end_sym*/,
79043        Dwarf_Error*   /*error*/);
79044
79045Dwarf_Unsigned dwarf_add_frame_info_b(
79046    Dwarf_P_Debug dbg   /*dbg*/,
79047    Dwarf_P_Fde 	/*fde*/,
79048    Dwarf_P_Die 	/*die*/,
79049    Dwarf_Unsigned 	/*cie*/,
79050    Dwarf_Addr 	        /*virt_addr*/,
79051    Dwarf_Unsigned 	/*code_len*/,
79052    Dwarf_Unsigned 	/*symidx*/,
79053    Dwarf_Unsigned      /* end_symbol */,
79054    Dwarf_Addr          /* offset_from_end_symbol */,
79055    Dwarf_Signed   	/*offset_into_exception_tables*/,
79056    Dwarf_Unsigned 	/*exception_table_symbol*/,
79057    Dwarf_Error*	/*error*/);
79058
79059Dwarf_Unsigned dwarf_add_frame_info(
79060    Dwarf_P_Debug dbg   /*dbg*/,
79061    Dwarf_P_Fde 	/*fde*/,
79062    Dwarf_P_Die 	/*die*/,
79063    Dwarf_Unsigned 	/*cie*/,
79064    Dwarf_Addr 	        /*virt_addr*/,
79065    Dwarf_Unsigned 	/*code_len*/,
79066    Dwarf_Unsigned 	/*symidx*/,
79067    Dwarf_Signed   	/*offset_into_exception_tables*/,
79068    Dwarf_Unsigned 	/*exception_table_symbol*/,
79069    Dwarf_Error*	/*error*/);
79070
79071Dwarf_P_Fde dwarf_add_fde_inst(
79072    Dwarf_P_Fde         /*fde*/,
79073    Dwarf_Small 	/*op*/,
79074    Dwarf_Unsigned 	/*val1*/,
79075    Dwarf_Unsigned 	/*val2*/,
79076    Dwarf_Error* 	/*error*/);
79077
79078Dwarf_P_Fde dwarf_new_fde(Dwarf_P_Debug	/*dbg*/, Dwarf_Error* /*error*/);
79079
79080Dwarf_P_Fde dwarf_fde_cfa_offset(
79081    Dwarf_P_Fde         /*fde*/,
79082    Dwarf_Unsigned  	/*register_number*/,
79083    Dwarf_Signed    	/*offset*/,
79084    Dwarf_Error* 	/*error*/);
79085
79086/* die creation & addition routines */
79087Dwarf_P_Die dwarf_new_die(
79088    Dwarf_P_Debug	/*dbg*/,
79089    Dwarf_Tag 		/*tag*/,
79090    Dwarf_P_Die 	/*parent*/,
79091    Dwarf_P_Die 	/*child*/,
79092    Dwarf_P_Die 	/*left */,
79093    Dwarf_P_Die 	/*right*/,
79094    Dwarf_Error*	/*error*/);
79095
79096Dwarf_Unsigned dwarf_add_die_to_debug(
79097    Dwarf_P_Debug       /*dbg*/,
79098    Dwarf_P_Die		/*die*/,
79099    Dwarf_Error*	/*error*/);
79100
79101Dwarf_P_Die dwarf_die_link(
79102    Dwarf_P_Die         /*die*/,
79103    Dwarf_P_Die 	/*parent*/,
79104    Dwarf_P_Die 	/*child*/,
79105    Dwarf_P_Die		/*left*/,
79106    Dwarf_P_Die		/*right*/,
79107    Dwarf_Error* 	/*error*/);
79108
79109/* Operations to create location expressions. */
79110Dwarf_P_Expr dwarf_new_expr(Dwarf_P_Debug /*dbg*/, Dwarf_Error* /*error*/);
79111
79112Dwarf_Unsigned dwarf_add_expr_gen(
79113    Dwarf_P_Expr        /*expr*/,
79114    Dwarf_Small 	/*opcode*/,
79115    Dwarf_Unsigned 	/*val1*/,
79116    Dwarf_Unsigned 	/*val2*/,
79117    Dwarf_Error* 	/*error*/);
79118
79119Dwarf_Unsigned dwarf_add_expr_addr(
79120    Dwarf_P_Expr        /*expr*/,
79121    Dwarf_Unsigned 	/*addr*/,
79122    Dwarf_Signed 	/*sym_index*/,
79123    Dwarf_Error* 	/*error*/);
79124
79125Dwarf_Unsigned dwarf_add_expr_addr_b(
79126    Dwarf_P_Expr        /*expr*/,
79127    Dwarf_Unsigned      /*addr*/,
79128    Dwarf_Unsigned      /*sym_index*/,
79129    Dwarf_Error*        /*error*/);
79130
79131Dwarf_Unsigned dwarf_expr_current_offset(
79132    Dwarf_P_Expr /*expr*/,
79133    Dwarf_Error* /*error*/);
79134
79135Dwarf_Addr dwarf_expr_into_block(
79136    Dwarf_P_Expr        /*expr*/,
79137    Dwarf_Unsigned* 	/*length*/,
79138    Dwarf_Error* 	/*error*/);
79139
79140Dwarf_Unsigned dwarf_add_arange(Dwarf_P_Debug /*dbg*/,
79141    Dwarf_Addr 		/*begin_address*/,
79142    Dwarf_Unsigned 	/*length*/,
79143    Dwarf_Signed 	/*symbol_index*/,
79144    Dwarf_Error* 	/*error*/);
79145
79146Dwarf_Unsigned dwarf_add_arange_b(
79147        Dwarf_P_Debug  /*dbg*/,
79148        Dwarf_Addr     /*begin_address*/,
79149        Dwarf_Unsigned /*length*/,
79150        Dwarf_Unsigned /*symbol_index*/,
79151        Dwarf_Unsigned /*end_symbol_index*/,
79152        Dwarf_Addr     /*offset_from_end_symbol*/,
79153        Dwarf_Error *  /*error*/);
79154
79155Dwarf_Unsigned dwarf_add_pubname(
79156    Dwarf_P_Debug       /*dbg*/,
79157    Dwarf_P_Die 	/*die*/,
79158    char* 		/*pubname_name*/,
79159    Dwarf_Error* 	/*error*/);
79160
79161Dwarf_Unsigned dwarf_add_funcname(
79162    Dwarf_P_Debug       /*dbg*/,
79163    Dwarf_P_Die 	/*die*/,
79164    char* 		/*func_name*/,
79165    Dwarf_Error* 	/*error*/);
79166
79167Dwarf_Unsigned dwarf_add_typename(
79168    Dwarf_P_Debug       /*dbg*/,
79169    Dwarf_P_Die 	/*die*/,
79170    char* 		/*type_name*/,
79171    Dwarf_Error* 	/*error*/);
79172
79173Dwarf_Unsigned dwarf_add_varname(
79174    Dwarf_P_Debug       /*dbg*/,
79175    Dwarf_P_Die 	/*die*/,
79176    char* 		/*var_name*/,
79177    Dwarf_Error* 	/*error*/);
79178
79179Dwarf_Unsigned dwarf_add_weakname(
79180    Dwarf_P_Debug       /*dbg*/,
79181    Dwarf_P_Die 	/*die*/,
79182    char* 		/*weak_name*/,
79183    Dwarf_Error* 	/*error*/);
79184
79185/* .debug_macinfo producer functions
79186   Functions must be called in right order: the section is output
79187   In the order these are presented.
79188*/
79189int dwarf_def_macro(Dwarf_P_Debug /*dbg*/,
79190    Dwarf_Unsigned  /*line*/,
79191    char *          /*macname, with (arglist), no space before (*/,
79192    char *	    /*macvalue*/,
79193    Dwarf_Error*    /*error*/);
79194
79195int dwarf_undef_macro(Dwarf_P_Debug /*dbg*/,
79196    Dwarf_Unsigned  /*line*/,
79197    char *          /*macname, no arglist, of course*/,
79198    Dwarf_Error*    /*error*/);
79199
79200int dwarf_start_macro_file(Dwarf_P_Debug /*dbg*/,
79201    Dwarf_Unsigned /*fileindex*/,
79202    Dwarf_Unsigned /*linenumber*/,
79203    Dwarf_Error*   /*error*/);
79204
79205int dwarf_end_macro_file(Dwarf_P_Debug /*dbg*/,
79206    Dwarf_Error*   /*error*/);
79207
79208int dwarf_vendor_ext(Dwarf_P_Debug /*dbg*/,
79209    Dwarf_Unsigned /*constant*/,
79210    char *         /*string*/,
79211    Dwarf_Error*   /*error*/);
79212
79213/* end macinfo producer functions */
79214
79215
79216void dwarf_p_dealloc(void* /*space*/, Dwarf_Unsigned /*type*/);
79217
79218int dwarf_attr_offset(Dwarf_Die /*die*/,
79219    Dwarf_Attribute /*attr of above die*/,
79220    Dwarf_Off     * /*returns offset thru this ptr */,
79221    Dwarf_Error   * /*error*/);
79222
79223
79224#ifdef __cplusplus
79225}
79226#endif
79227#endif /* _LIBDWARF_H */
79228
792290707010001ad8e0000812400011e740000000a000000014020682700023d21000000660000000000000000000000000000001800000000libdwarf/libdwarf2.1.mm���\."
79230\." the following line may be removed if the ff ligature works on your machine
79231.lg 0
79232\." set up heading formats
79233.ds HF 3 3 3 3 3 2 2
79234.ds HP +2 +2 +1 +0 +0
79235.nr Hs 5
79236.nr Hb 5
79237\." ==============================================
79238\." Put current date in the following at each rev
79239.ds vE rev 1.52, 02 Oct 2003
79240\." ==============================================
79241\." ==============================================
79242.ds | |
79243.ds ~ ~
79244.ds ' '
79245.if t .ds Cw \&\f(CW
79246.if n .ds Cw \fB
79247.de Cf          \" Place every other arg in Cw font, beginning with first
79248.if \\n(.$=1 \&\*(Cw\\$1\fP
79249.if \\n(.$=2 \&\*(Cw\\$1\fP\\$2
79250.if \\n(.$=3 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP
79251.if \\n(.$=4 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP\\$4
79252.if \\n(.$=5 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP\\$4\*(Cw\\$5\fP
79253.if \\n(.$=6 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP\\$4\*(Cw\\$5\fP\\$6
79254.if \\n(.$=7 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP\\$4\*(Cw\\$5\fP\\$6\*(Cw\\$7\fP
79255.if \\n(.$=8 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP\\$4\*(Cw\\$5\fP\\$6\*(Cw\\$7\fP\\$8
79256.if \\n(.$=9 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP\\$4\*(Cw\\$5\fP\\$6\*(Cw\\$7\fP\\$8\
79257*(Cw
79258..
79259.nr Cl 4
79260.SA 1
79261.TL
79262A Consumer Library Interface to DWARF
79263.AF ""
79264.AU "UNIX International Programming Languages Special Interest Group"
79265.PF "'\*(vE'- \\\\nP -''"
79266.PM ""
79267.AS 1
79268This document describes an interface to a library of functions
79269.FS
79270UNIX is a registered trademark of UNIX System Laboratories, Inc.
79271in the United States and other countries.
79272.FE
79273to access DWARF debugging information entries and DWARF line number
79274information. It does not make recommendations as to how the functions
79275described in this document should be implemented nor does it
79276suggest possible optimizations.
79277.P
79278The document is oriented to reading DWARF version 2.
79279There are certain sections which are SGI-specific (those
79280are clearly identified in the document).
79281We would propose this
79282to the PLSIG committee
79283as the basis for a
79284standard libdwarf interface, but as of this
79285writing, the committee is dormant.
79286.P
79287This document are subject to change.
79288.P
79289\*(vE
79290
79291.AE
79292.MT 4
79293
79294.H 1 "INTRODUCTION"
79295This document describes an interface to \fIlibdwarf\fP, a
79296library of functions to provide access to DWARF debugging information
79297records, DWARF line number information, DWARF address range and global
79298names information, weak names information, DWARF frame description
79299information, DWARF static function names, DWARF static variables, and
79300DWARF type information.
79301.P
79302
79303.H 2 "Purpose and Scope"
79304The purpose of this document is to document a library of functions
79305to access DWARF debugging information. There is no effort made in
79306this document to address the creation of these records as those
79307issues are addressed separately.
79308
79309.P
79310Additionally, the focus of this document is the functional interface,
79311and as such, implementation as well as optimization issues are
79312intentionally ignored.
79313
79314.H 2 "Definitions"
79315DWARF debugging information entries (DIE) are the segments of information
79316placed in the \f(CW.debug_*\fP sections by compilers, assemblers, and
79317linkage editors that, in conjunction with line number entries, are
79318necessary for symbolic source-level debugging.  Refer to the document
79319"\fIDWARF Debugging Information Format\fP" from UI PLSIG for a more
79320complete description of these entries.
79321
79322.P
79323This document adopts all the terms and definitions in "\fIDWARF Debugging
79324Information Format\fP" version 2.  It focuses on the implementation at
79325Silicon Graphics Computer Systems.  Although we believe the interface
79326is general enough to be of interest to other vendors too, there are a
79327few places where changes may need to be made.
79328
79329.H 2 "Overview"
79330The remaining sections of this document describe the proposed interface
79331to \f(CWlibdwarf\fP, first by describing the purpose of additional types
79332defined by the interface, followed by descriptions of the available
79333operations.  This document assumes you are thoroughly familiar with the
79334information contained in the \fIDWARF Debugging Information Format\fP
79335document.
79336.P
79337We separate the functions into several categories to emphasize that not
79338all consumers want to use all the functions.  We call the categories
79339Debugger, Internal-level, High-level, and Miscellaneous not because one is more
79340important than another but as a way of making the rather large set of
79341function calls easier to understand.
79342.P
79343Unless otherwise specified, all functions and structures should be
79344taken as being designed for Debugger consumers.
79345.P
79346The Debugger Interface of this library is intended to be used by debuggers.
79347The interface is low-level (close to dwarf) but suppresses irrelevant detail.
79348A debugger will want to absorb all of some sections at startup and will
79349want to see little or nothing of some sections except at need.  And even
79350then will probably want to absorb only the information in a single compilation
79351unit at a time.  A debugger does not care about
79352implementation details of the library.
79353.P
79354The Internal-level Interface is for a DWARF prettyprinter and checker.
79355A
79356thorough prettyprinter will want to know all kinds of internal things
79357(like actual FORM numbers and actual offsets) so it can check for
79358appropriate structure in the DWARF data and print (on request) all
79359that internal information for human users and libdwarf authors and
79360compiler-writers.
79361Calls in this interface provide data a debugger
79362does not care about.
79363.P
79364The High-level Interface is for higher level access
79365(it's not really a high level interface!).
79366Programs such as
79367disassemblers will want to be able to display relevant information
79368about functions and line numbers without having to invest too much
79369effort in looking at DWARF.
79370.P
79371The miscellaneous interface is just what is left over: the error handler
79372functions.
79373.P
79374The following is a brief mention of the changes in this libdwarf from
79375the libdwarf draft for DWARF Version 1.
79376.H 2 "Items Changed"
79377dwarf_nextglob(), dwarf_globname(), and dwarf_globdie() were all changed
79378to operate on the items in the .debug_pubnames section.
79379.P
79380All functions were modified to return solely an error code.
79381Data is returned through pointer arguments.
79382This makes writing safe and correct library-using-code far easier.
79383For justification for this approach, see the book by
79384Steve Maguire titled "Writing Solid Code" at your bookstore.
79385
79386
79387.H 2 "Items Removed"
79388.P
79389Dwarf_Type
79390was removed since types are no longer special.
79391.P
79392dwarf_typeof()
79393was removed since types are no longer special.
79394.P
79395Dwarf_Ellist
79396was removed since element lists no longer are a special format.
79397.P
79398Dwarf_Bounds
79399was removed since bounds have been generalized.
79400.P
79401dwarf_nextdie()
79402was replaced by dwarf_next_cu_header() to reflect the
79403real way dwarf is organized.
79404The dwarf_nextdie() was only useful for getting to compilation
79405unit beginnings, so it does not seem harmful to remove it in favor
79406of a more direct function.
79407.P
79408dwarf_childcnt() is removed on grounds
79409that no good use was apparent.
79410.P
79411dwarf_prevline() and dwarf_nextline() were removed on grounds this
79412is better left to a debugger to do.
79413Similarly, dwarf_dieline() was removed.
79414.P
79415dwarf_is1stline() was removed as it was not meaningful for the
79416revised dwarf line operations.
79417.P
79418Any libdwarf implementation might well decide to support all the
79419removed functionality and to retain the DWARF Version 1 meanings
79420of that functionality.
79421This would be difficult because the
79422original libdwarf draft
79423specification used traditional C library interfaces which
79424confuse the values returned by successful calls with
79425exceptional conditions like failures and 'no more data' indications.
79426
79427.H 2 "Revision History"
79428.VL 15
79429.LI "March 93"
79430Work on dwarf2 SGI draft begins
79431.LI "June 94"
79432The function returns are changed to return an error/success code
79433only.
79434.LE
79435
79436.H 1 "Types Definitions"
79437
79438.H 2 "General Description"
79439The \fIlibdwarf.h\fP header file contains typedefs and preprocessor
79440definitions of types and symbolic names used to reference objects
79441of \fIlibdwarf\fP. The types defined by typedefs contained in
79442\fIlibdwarf.h\fP all use the convention of adding \f(CWDwarf_\fP
79443as a prefix and can be placed in three categories:
79444
79445.BL
79446.LI
79447Scalar types : The scalar types defined in \fIlibdwarf.h\fP are
79448defined primarily for notational convenience and identification.
79449Depending on the individual definition, they are interpreted as a
79450value, a pointer, or as a flag.
79451.LI
79452Aggregate types : Some values can not be represented by a single
79453scalar type; they must be represented by a collection of, or as a
79454union of, scalar and/or aggregate types.
79455.LI
79456Opaque types : The complete definition of these types is intentionally
79457omitted; their use is as handles for query operations, which will yield
79458either an instance of another opaque type to be used in another query, or
79459an instance of a scalar or aggregate type, which is the actual result.
79460.P
79461
79462.H 2 "Scalar Types"
79463The following are the defined by \fIlibdwarf.h\fP:
79464
79465.DS
79466\f(CW
79467typedef int                Dwarf_Bool;
79468typedef unsigned long long Dwarf_Off;
79469typedef unsigned long long Dwarf_Unsigned;
79470typedef unsigned short     Dwarf_Half;
79471typedef unsigned char      Dwarf_Small;
79472typedef signed long long   Dwarf_Signed;
79473typedef unsigned long long Dwarf_Addr;
79474typedef void 		   *Dwarf_Ptr;
79475typedef void   (*Dwarf_Handler)(Dwarf_Error *error, Dwarf_Ptr errarg);
79476.DE
79477
79478.nr aX \n(Fg+1
79479Dwarf_Ptr is an address for use by the host program calling the library,
79480not for representing pc-values/addresses within the target object file.
79481Dwarf_Addr is for pc-values within the target object file.  The sample
79482scalar type assignments above are for a \fIlibdwarf.h\fP that can read
79483and write
7948432-bit or 64-bit binaries on a 32-bit or 64-bit host machine.
79485The types must be  defined appropriately
79486for each implementation of libdwarf.
79487A description of these scalar types in the SGI/MIPS
79488environment is given in Figure \n(aX.
79489
79490.DS
79491.TS
79492center box, tab(:);
79493lfB lfB lfB lfB
79494l c c l.
79495NAME:SIZE:ALIGNMENT:PURPOSE
79496_
79497Dwarf_Bool:4:4:Boolean states
79498Dwarf_Off:8:8:Unsigned file offset
79499Dwarf_Unsigned:8:8:Unsigned large integer
79500Dwarf_Half:2:2:Unsigned medium integer
79501Dwarf_Small:1:1:Unsigned small integer
79502Dwarf_Signed:8:8:Signed large integer
79503Dwarf_Addr:8:8:Program address
79504:::(target program)
79505Dwarf_Ptr:4|8:4|8:Dwarf section pointer
79506:::(host program)
79507Dwarf_Handler:4|8:4|8:Pointer to
79508:::error handler function
79509.TE
79510.FG "Scalar Types"
79511.DE
79512
79513.H 2 "Aggregate Types"
79514The following aggregate types are defined by
79515the SGI
79516\fIlibdwarf.h\fP:
79517\f(CWDwarf_Loc\fP,
79518\f(CWDwarf_Locdesc\fP,
79519\f(CWDwarf_Block\fP,
79520\f(CWDwarf_Frame_Op\fP.
79521While most of \f(CWlibdwarf\fP acts on or returns simple values or
79522opaque pointer types, this small set of structures seems useful.
79523
79524.H 3 "Location Record"
79525The \f(CWDwarf_Loc\fP type identifies a single atom of a location description
79526or a location expression.
79527
79528.DS
79529\f(CWtypedef struct {
79530        Dwarf_Small        lr_atom;
79531        Dwarf_Unsigned     lr_number;
79532        Dwarf_Unsigned     lr_number2;
79533        Dwarf_Unsigned     lr_offset;
79534} Dwarf_Loc;\fP
79535.DE
79536
79537The \f(CWlr_atom\fP identifies the atom corresponding to the \f(CWDW_OP_*\fP
79538definition in \fIdwarf.h\fP and it represents the operation to be performed
79539in order to locate the item in question.
79540
79541.P
79542The \f(CWlr_number\fP field is the operand to be used in the calculation
79543specified by the \f(CWlr_atom\fP field; not all atoms use this field.
79544Some atom operations imply signed numbers so it is necessary to cast
79545this to a \f(CWDwarf_Signed\fP type for those operations.
79546
79547.P
79548The \f(CWlr_number2\fP field is the second operand specified by the
79549\f(CWlr_atom\fP field; only \f(CWDW_OP_BREGX\fP has this field.  Some
79550atom operations imply signed numbers so it may be necessary to cast
79551this to a \f(CWDwarf_Signed\fP type for those operations.
79552
79553.P
79554The \f(CWlr_offset\fP field is the byte offset (within the block the
79555location record came from) of the atom specified by the \f(CWlr_atom\fP
79556field.  This is set on all atoms.  This is useful for operations
79557\f(CWDW_OP_SKIP\fP and \f(CWDW_OP_BRA\fP.
79558
79559.H 3 "Location Description"
79560The \f(CWDwarf_Locdesc\fP type represents an ordered list of
79561\f(CWDwarf_Loc\fP records used in the calculation to locate
79562an item.  Note that in many cases, the location can only be
79563calculated at runtime of the associated program.
79564
79565.DS
79566\f(CWtypedef struct {
79567        Dwarf_Addr        ld_lopc;
79568        Dwarf_Addr        ld_hipc;
79569        Dwarf_Unsigned    ld_cents;
79570        Dwarf_Loc*        ld_s;
79571} Dwarf_Locdesc;\fP
79572.DE
79573
79574The \f(CWld_lopc\fP and \f(CWld_hipc\fP fields provide an address range for
79575which this location descriptor is valid.  Both of these fields are set to
79576\fIzero\fP if the location descriptor is valid throughout the scope of the
79577item it is associated with.  These addresses are virtual memory addresses,
79578not offsets-from-something.  The virtual memory addresses do not account
79579for dso movement (none of the pc values from libdwarf do that, it is up to
79580the consumer to do that).
79581
79582.P
79583The \f(CWld_cents\fP field contains a count of the number of \f(CWDwarf_Loc\fP
79584entries pointed to by the \f(CWld_s\fP field.
79585
79586.P
79587The \f(CWld_s\fP field points to an array of \f(CWDwarf_Loc\fP records.
79588
79589.H 3 "Data Block"
79590.SP
79591The \f(CWDwarf_Block\fP type is used to contain the value of an attribute
79592whose form is either \f(CWDW_FORM_block1\fP, \f(CWDW_FORM_block2\fP,
79593\f(CWDW_FORM_block4\fP, \f(CWDW_FORM_block8\fP, or \f(CWDW_FORM_block\fP.
79594Its intended use is to deliver the value for an attribute of any of these
79595forms.
79596
79597.DS
79598\f(CWtypedef struct {
79599        Dwarf_Unsigned     bl_len;
79600        Dwarf_Ptr          bl_data;
79601} Dwarf_Block;\fP
79602.DE
79603
79604.P
79605The \f(CWbl_len\fP field contains the length in bytes of the data pointed
79606to by the \f(CWbl_data\fP field.
79607
79608.P
79609The \f(CWbl_data\fP field contains a pointer to the uninterpreted data.
79610Since we use  a \f(CWDwarf_Ptr\fP here one must copy the pointer to some
79611other type (typically an \f(CWunsigned char *\fP) so one can add increments
79612to index through the data.  The data pointed to by \f(CWbl_data\fP is not
79613necessarily at any useful alignment.
79614
79615.H 3 "Frame Operation Codes"
79616The \f(CWDwarf_Frame_Op\fP type is used to contain the data of a single
79617instruction of an instruction-sequence of low-level information from the
79618section containing frame information.  This is ordinarily used by
79619Internal-level
79620Consumers trying to print everything in detail.
79621
79622.DS
79623\f(CWtypedef struct {
79624	Dwarf_Small  fp_base_op;
79625	Dwarf_Small  fp_extended_op;
79626	Dwarf_Half   fp_register;
79627	Dwarf_Signed fp_offset;
79628	Dwarf_Offset fp_instr_offset;
79629} Dwarf_Frame_Op;
79630.DE
79631
79632\f(CWfp_base_op\fP is the 2-bit basic op code.  \f(CWfp_extended_op\fP is
79633the 6-bit extended opcode (if \f(CWfp_base_op\fP indicated there was an
79634extended op code) and is zero otherwise.
79635.P
79636\f(CWfp_register\fP
79637is any (or the first) register value as defined
79638in the \f(CWCall Frame Instruction Encodings\fP figure
79639in the \f(CWdwarf\fP document.
79640If not used with the Op it is 0.
79641.P
79642\f(CWfp_offset\fP
79643is the address, delta, offset, or second register as defined
79644in the \f(CWCall Frame Instruction Encodings\fP figure
79645in the \f(CWdwarf\fP document.
79646If this is an \f(CWaddress\fP then the value should be cast to
79647\f(CW(Dwarf_Addr)\fP before being used.
79648In any implementation this field *must* be as large as the
79649larger of Dwarf_Signed and Dwarf_Addr for this to work properly.
79650If not used with the op it is 0.
79651.P
79652\f(CWfp_instr_offset\fP is the byte_offset (within the instruction
79653stream of the frame instructions) of this operation.  It starts at 0
79654for a given frame descriptor.
79655.H 3 "Macro Details Record"
79656The \f(CWDwarf_Macro_Details\fP type gives information about
79657a single entry in the .debug.macinfo section.
79658.DS
79659\f(CWstruct Dwarf_Macro_Details_s {
79660  Dwarf_Off    dmd_offset;
79661  Dwarf_Small  dmd_type;
79662  Dwarf_Signed dmd_lineno;
79663  Dwarf_Signed dmd_fileindex;
79664  char *       dmd_macro;
79665};
79666typedef struct Dwarf_Macro_Details_s Dwarf_Macro_Details;
79667.DE
79668.P
79669\f(CWdmd_offset\fP is the byte offset, within the .debug_macinfo
79670section, of this macro information.
79671.P
79672\f(CWdmd_type\fP is the type code of this macro info entry
79673(or 0, the type code indicating that this is the end of
79674macro information entries for a compilation unit.
79675See \f(CWDW_MACINFO_define\fP, etc in the DWARF document.
79676.P
79677\f(CWdmd_lineno\fP is the line number where this entry was found,
79678or 0 if there is no applicable line number.
79679.P
79680\f(CWdmd_fileindex\fP is the file index of the file involved.
79681This is only guaranteed meaningful on a \f(CWDW_MACINFO_start_file\fP
79682\f(CWdmd_type\fP.  Set to -1 if unknown (see the functional
79683interface for more details).
79684.P
79685\f(CWdmd_macro\fP is the applicable string.
79686For a \f(CWDW_MACINFO_define\fP
79687this is the macro name and value.
79688For a
79689\f(CWDW_MACINFO_undef\fP, or
79690this is the macro name.
79691For a
79692\f(CWDW_MACINFO_vendor_ext\fP
79693this is the vendor-defined string value.
79694For other \f(CWdmd_type\fPs this is 0.
79695
79696.H 2 "Opaque Types"
79697The opaque types declared in \fIlibdwarf.h\fP are used as descriptors
79698for queries against dwarf information stored in various debugging
79699sections.  Each time an instance of an opaque type is returned as a
79700result of a \fIlibdwarf\fP operation (\f(CWDwarf_Debug\fP excepted),
79701it should be free'd, using \f(CWdwarf_dealloc()\fP when it is no longer
79702of use.
79703Some functions return a number of instances of an opaque type
79704in a block, by means of a pointer to the block and a count of the number
79705of opaque descriptors in the block:
79706see the function description for deallocation rules for such functions.
79707The list of opaque types defined
79708in \fIlibdwarf.h\fP that are pertinent to the Consumer Library, and their
79709intended use is described below.
79710
79711.DS
79712\f(CWtypedef struct Dwarf_Debug_s* Dwarf_Debug;\fP
79713.DE
79714An instance of the \f(CWDwarf_Debug\fP type is created as a result of a
79715successful call to \f(CWdwarf_init()\fP, or \f(CWdwarf_elf_init()\fP,
79716and is used as a descriptor for subsequent access to most \f(CWlibdwarf\fP
79717functions on that object.  The storage pointed to by this descriptor
79718should be not be free'd, using the \f(CWdwarf_dealloc()\fP function.
79719Instead free it with \f(CWdwarf_finish()\fP.
79720.P
79721
79722.DS
79723\f(CWtypedef struct Dwarf_Die_s* Dwarf_Die;\fP
79724.DE
79725An instance of a \f(CWDwarf_Die\fP type is returned from a successful
79726call to the \f(CWdwarf_siblingof()\fP, \f(CWdwarf_child\fP, or
79727\f(CWdwarf_offdie()\fP function, and is used as a descriptor for queries
79728about information related to that DIE.  The storage pointed to by this
79729descriptor should be free'd, using \f(CWdwarf_dealloc()\fP with the allocation
79730type \f(CWDW_DLA_DIE\fP when no longer needed.
79731
79732.DS
79733\f(CWtypedef struct Dwarf_Line_s* Dwarf_Line;\fP
79734.DE
79735Instances of \f(CWDwarf_Line\fP type are returned from a successful call
79736to the \f(CWdwarf_srclines()\fP function, and are used as descriptors for
79737queries about source lines.  The storage pointed to by these descriptors
79738should be individually free'd, using \f(CWdwarf_dealloc()\fP with the
79739allocation type \f(CWDW_DLA_LINE\fP when no longer needed.
79740
79741.DS
79742\f(CWtypedef struct Dwarf_Global_s* Dwarf_Global;\fP
79743.DE
79744Instances of \f(CWDwarf_Global\fP type are returned from a successful
79745call to the \f(CWdwarf_get_globals()\fP function, and are used as
79746descriptors for queries about global names (pubnames).  The storage
79747pointed to by these descriptors should be individually free'd, using
79748\f(CWdwarf_dealloc()\fP with the allocation type \f(CWDW_DLA_GLOBAL\fP,
79749when no longer needed.
79750
79751.DS
79752\f(CWtypedef struct Dwarf_Weak_s* Dwarf_Weak;\fP
79753.DE
79754Instances of \f(CWDwarf_Weak\fP type are returned from a successful call
79755to the
79756SGI-specific \f(CWdwarf_get_weaks()\fP
79757function, and are used as descriptors for
79758queries about weak names.  The storage pointed to by these descriptors
79759should be individually free'd, using \f(CWdwarf_dealloc()\fP with the
79760allocation type \f(CWDW_DLA_WEAK\fP when no longer needed.
79761
79762.DS
79763\f(CWtypedef struct Dwarf_Func_s* Dwarf_Func;\fP
79764.DE
79765Instances of \f(CWDwarf_Func\fP type are returned from a successful
79766call to the
79767SGI-specific \f(CWdwarf_get_funcs()\fP
79768function, and are used as
79769descriptors for queries about static function names.
79770The storage
79771pointed to by these descriptors should be individually free'd, using
79772\f(CWdwarf_dealloc()\fP with the allocation type \f(CWDW_DLA_FUNC\fP,
79773when no longer needed.
79774
79775.DS
79776\f(CWtypedef struct Dwarf_Type_s* Dwarf_Type;\fP
79777.DE
79778Instances of \f(CWDwarf_Type\fP type are returned from a successful call
79779to the
79780SGI-specific \f(CWdwarf_get_types()\fP
79781function, and are used as descriptors for
79782queries about user defined types.
79783The storage pointed to by this descriptor
79784should be individually free'd, using \f(CWdwarf_dealloc()\fP with the
79785allocation type \f(CWDW_DLA_TYPENAME\fP when no longer needed.
79786
79787.DS
79788\f(CWtypedef struct Dwarf_Var_s* Dwarf_Var;\fP
79789.DE
79790Instances of \f(CWDwarf_Var\fP type are returned from a successful call
79791to the SGI-specific \f(CWdwarf_get_vars()\fP
79792function, and are used as descriptors for
79793queries about static variables.
79794The storage pointed to by this descriptor
79795should be individually free'd, using \f(CWdwarf_dealloc()\fP with the
79796allocation type \f(CWDW_DLA_VAR\fP when no longer needed.
79797
79798.DS
79799\f(CWtypedef struct Dwarf_Error_s* Dwarf_Error;\fP
79800.DE
79801This descriptor points to a structure that provides detailed information
79802about errors detected by \f(CWlibdwarf\fP.  Users typically provide a
79803location for \f(CWlibdwarf\fP to store this descriptor for the user to
79804obtain more information about the error.  The storage pointed to by this
79805descriptor should be free'd, using \f(CWdwarf_dealloc()\fP with the
79806allocation type \f(CWDW_DLA_ERROR\fP when no longer needed.
79807
79808.DS
79809\f(CWtypedef struct Dwarf_Attribute_s* Dwarf_Attribute;\fP
79810.DE
79811Instances of \f(CWDwarf_Attribute\fP type are returned from a successful
79812call to the \f(CWdwarf_attrlist()\fP, or \f(CWdwarf_attr()\fP functions,
79813and are used as descriptors for queries about attribute values.  The storage
79814pointed to by this descriptor should be individually free'd, using
79815\f(CWdwarf_dealloc()\fP with the allocation type \f(CWDW_DLA_ATTR\fP when
79816no longer needed.
79817
79818.DS
79819\f(CWtypedef struct Dwarf_Abbrev_s* Dwarf_Abbrev;\fP
79820.DE
79821An instance of a \f(CWDwarf_Abbrev\fP type is returned from a successful
79822call to \f(CWdwarf_get_abbrev()\fP, and is used as a descriptor for queries
79823about abbreviations in the .debug_abbrev section.  The storage pointed to
79824by this descriptor should be free'd, using \f(CWdwarf_dealloc()\fP with the
79825allocation type \f(CWDW_DLA_ABBREV\fP when no longer needed.
79826
79827.DS
79828\f(CWtypedef struct Dwarf_Fde_s* Dwarf_Fde;\fP
79829.DE
79830Instances of \f(CWDwarf_Fde\fP type are returned from a successful call
79831to the \f(CWdwarf_get_fde_list()\fP, \f(CWdwarf_get_fde_for_die()\fP, or
79832\f(CWdwarf_get_fde_at_pc()\fP functions, and are used as descriptors for
79833queries about frames descriptors.  The storage pointed to by these
79834descriptors should be individually free'd, using \f(CWdwarf_dealloc()\fP
79835with the allocation type \f(CWDW_DLA_FDE\fP when no longer needed.
79836
79837.DS
79838\f(CWtypedef struct Dwarf_Cie_s* Dwarf_Cie;\fP
79839.DE
79840Instances of \f(CWDwarf_Cie\fP type are returned from a successful call
79841to the \f(CWdwarf_get_fde_list()\fP function, and are used as descriptors
79842for queries about information that is common to several frames.  The
79843storage pointed to by this descriptor should be individually free'd, using
79844\f(CWdwarf_dealloc()\fP with the allocation type \f(CWDW_DLA_CIE\fP when
79845no longer needed.
79846
79847.DS
79848\f(CWtypedef struct Dwarf_Arange_s* Dwarf_Arange;\fP
79849.DE
79850Instances of \f(CWDwarf_Arange\fP type are returned from successful calls
79851to the \f(CWdwarf_get_aranges()\fP, or \f(CWdwarf_get_arange()\fP functions,
79852and are used as descriptors for queries about address ranges.  The storage
79853pointed to by this descriptor should be individually free'd, using
79854\f(CWdwarf_dealloc()\fP with the allocation type \f(CWDW_DLA_ARANGE\fP when
79855no longer needed.
79856
79857.H 1 "Error Handling"
79858The method for detection and disposition of error conditions that arise
79859during access of debugging information via \fIlibdwarf\fP is consistent
79860across all \fIlibdwarf\fP functions that are capable of producing an
79861error.  This section describes the method used by \fIlibdwarf\fP in
79862notifying client programs of error conditions.
79863
79864.P
79865Most functions within \fIlibdwarf\fP accept as an argument a pointer to
79866a \f(CWDwarf_Error\fP descriptor where a \f(CWDwarf_Error\fP descriptor
79867is stored if an error is detected by the function.  Routines in the client
79868program that provide this argument can query the \f(CWDwarf_Error\fP
79869descriptor to determine the nature of the error and perform appropriate
79870processing.
79871
79872.P
79873A client program can also specify a function to be invoked upon detection
79874of an error at the time the library is initialized (see \f(CWdwarf_init()\fP).
79875When a \fIlibdwarf\fP routine detects an error, this function is called
79876with two arguments: a code indicating the nature of the error and a pointer
79877provided by the client at initialization (again see \f(CWdwarf_init()\fP).
79878This pointer argument can be used to relay information between the error
79879handler and other routines of the client program.  A client program can
79880specify or change both the error handling function and the pointer argument
79881after initialization using \f(CWdwarf_seterrhand()\fP and
79882\f(CWdwarf_seterrarg()\fP.
79883
79884.P
79885In the case where \fIlibdwarf\fP functions are not provided a pointer
79886to a \f(CWDwarf_Error\fP descriptor, and no error handling function was
79887provided at initialization, \fIlibdwarf\fP functions terminate execution
79888by calling \f(CWabort(3C)\fP.
79889
79890.P
79891The following lists the processing steps taken upon detection of an
79892error:
79893.AL 1
79894.LI
79895Check the \f(CWerror\fP argument; if not a \fINULL\fP pointer, allocate
79896and initialize a \f(CWDwarf_Error\fP descriptor with information describing
79897the error, place this descriptor in the area pointed to by \f(CWerror\fP,
79898and return a value indicating an error condition.
79899.LI
79900If an \f(CWerrhand\fP argument was provided to \f(CWdwarf_init()\fP
79901at initialization, call \f(CWerrhand()\fP passing it the error descriptor
79902and the value of the \f(CWerrarg\fP argument provided to \f(CWdwarf_init()\fP.
79903If the error handling function returns, return a value indicating an
79904error condition.
79905.LI
79906Terminate program execution by calling \f(CWabort(3C)\fP.
79907.LE
79908.SP
79909
79910In all cases, it is clear from the value returned from a function
79911that an error occurred in executing the function, since
79912DW_DLV_ERROR is returned.
79913.P
79914As can be seen from the above steps, the client program can provide
79915an error handler at initialization, and still provide an \f(CWerror\fP
79916argument to \fIlibdwarf\fP functions when it is not desired to have
79917the error handler invoked.
79918
79919.P
79920If a \f(CWlibdwarf\fP function is called with invalid arguments, the
79921behaviour is undefined.  In particular, supplying a \f(CWNULL\fP pointer
79922to a \f(CWlibdwarf\fP function (except where explicitly permitted),
79923or pointers to invalid addresses or uninitialized data causes undefined
79924behaviour; the return value in such cases is undefined, and the function
79925may fail to invoke the caller supplied error handler or to return a
79926meaningful error number.  Implementations also may abort execution for
79927such cases.
79928
79929.P
79930.H 2 "Returned values in the functional interface"
79931Values returned by \f(CWlibdwarf\fP functions to indicate
79932success and errors
79933.nr aX \n(Fg+1
79934are enumerated in Figure \n(aX.
79935The \f(CWDW_DLV_NO_ENTRY\fP
79936case is useful for functions
79937need to indicate that while there was no data to return
79938there was no error either.
79939For example, \f(CWdwarf_siblingof()\fP
79940may return \f(CWDW_DLV_NO_ENTRY\fP to indicate that that there was
79941no sibling to return.
79942.DS
79943.TS
79944center box, tab(:);
79945lfB cfB lfB
79946l c l.
79947SYMBOLIC NAME:VALUE:MEANING
79948_
79949DW_DLV_ERROR:1:Error
79950DW_DLV_OK:0:Successful call
79951DW_DLV_NO_ENTRY:-1:No applicable value
79952.TE
79953.FG "Error Indications"
79954.DE
79955.P
79956Each function in the interface that returns a value returns one
79957of the integers in the above figure.
79958.P
79959If \f(CWDW_DLV_ERROR\fP is returned and a pointer to a \f(CWDwarf_Error\fP
79960pointer is passed to the function, then a Dwarf_Error handle is returned
79961thru the pointer. No other pointer value in the interface returns a value.
79962After the \f(CWDwarf_Error\fP is no longer of interest,
79963a  \f(CWdwarf_dealloc(dbg,dw_err,DW_DLA_ERROR)\fP on the error
79964pointer is appropriate to free any space used by the error information.
79965.P
79966If \f(CWDW_DLV_NO_ENTRY\fP is returned no pointer value in the
79967interface returns a value.
79968.P
79969If \f(CWDW_DLV_OK\fP is returned  the \f(CWDwarf_Error\fP pointer, if
79970supplied, is not touched, but any other values to be returned
79971through pointers are returned.
79972In this case calls (depending on the exact function
79973returning the error) to \f(CWdwarf_dealloc()\fP may be appropriate
79974once the particular pointer returned is no longer of interest.
79975.P
79976Pointers passed to allow values to be returned thru them are
79977uniformly the last pointers
79978in each argument list.
79979.P
79980All the interface functions are defined from the point of view of
79981the writer-of-the-library (as is traditional for UN*X library
79982documentation), not from the point of view of the user of the library.
79983The caller might code:
79984.P
79985.DS
79986Dwarf_Line line;
79987Dwarf_Signed ret_loff;
79988Dwarf_Error  err;
79989int retval = dwarf_lineoff(line,&ret_loff,&err);
79990.DE
79991for the function defined as
79992.P
79993.DS
79994int dwarf_lineoff(Dwarf_Line line,Dwarf_Signed *return_lineoff,
79995  Dwarf_Error* err);
79996.DE
79997and this document refers to the function as
79998returning the value thru *err or *return_lineoff or
79999uses the phrase "returns in
80000the location pointed to by err".
80001Sometimes other similar phrases are used.
80002
80003.H 1 "Memory Management"
80004Several of the functions that comprise \fIlibdwarf\fP return pointers
80005(opaque descriptors) to structures that have been dynamically allocated
80006by the library.  To aid in the management of dynamic memory, the function
80007\f(CWdwarf_dealloc()\fP is provided to free storage allocated as a result
80008of a call to a \fIlibdwarf\fP function.  This section describes the strategy
80009that should be taken by a client program in managing dynamic storage.
80010
80011.H 2 "Read-only Properties"
80012All pointers (opaque descriptors) returned by or as a result of a
80013\fIlibdwarf Consumer Library\fP
80014call should be assumed to point to read-only memory.
80015The results are undefined for \fIlibdwarf\fP  clients that attempt
80016to write to a region pointed to by a value returned by a
80017\fIlibdwarf Consumer Library\fP
80018call.
80019
80020.H 2 "Storage Deallocation"
80021See the section "Returned values in the functional interface",
80022above, for the general rules where
80023calls to \f(CWdwarf_dealloc()\fP
80024is appropriate.
80025.P
80026In some cases the pointers returned by a \fIlibdwarf\fP call are pointers
80027to data which is not free-able.
80028The library knows from the allocation type
80029provided to it whether the space is freeable or not and will not free
80030inappropriately when \f(CWdwarf_dealloc()\fP is called.
80031So it is vital
80032that \f(CWdwarf_dealloc()\fP be called with the proper allocation type.
80033.P
80034For most storage allocated by \fIlibdwarf\fP, the client can free the
80035storage for reuse by calling \f(CWdwarf_dealloc()\fP, providing it with
80036the \f(CWDwarf_Debug\fP descriptor specifying the object for which the
80037storage was allocated, a pointer to the area to be free-ed, and an
80038identifier that specifies what the pointer points to (the allocation
80039type).  For example, to free a \f(CWDwarf_Die die\fP belonging the the
80040object represented by \f(CWDwarf_Debug dbg\fP, allocated by a call to
80041\f(CWdwarf_siblingof()\fP, the call to \f(CWdwarf_dealloc()\fP would be:
80042.DS
80043    \f(CWdwarf_dealloc(dbg, die, DW_DLA_DIE);\fP
80044.DE
80045
80046To free storage allocated in the form of a list of pointers (opaque
80047descriptors), each member of the list should be deallocated, followed
80048by deallocation of the actual list itself.  The following code fragment
80049uses an invocation of \f(CWdwarf_attrlist()\fP as an example to illustrate
80050a technique that can be used to free storage from any \fIlibdwarf\fP
80051routine that returns a list:
80052.DS
80053\f(CWDwarf_Unsigned atcnt;
80054Dwarf_Attribute *atlist;
80055int errv;
80056
80057if ((errv = dwarf_attrlist(somedie, &atlist,&atcnt, &error)) == DW_DLV_OK) {
80058
80059        for (i = 0; i < atcnt; ++i) {
80060                /* use atlist[i] */
80061                dwarf_dealloc(dbg, atlist[i], DW_DLA_ATTR);
80062        }
80063        dwarf_dealloc(dbg, atlist, DW_DLA_LIST);
80064}\fP
80065.DE
80066
80067The \f(CWDwarf_Debug\fP returned from \f(CWdwarf_init()\fP
80068or \f(CWdwarf_elf_init()\fP
80069cannot be free'd using \f(CWdwarf_dealloc()\fP.
80070The function \f(CWdwarf_finish()\fP will deallocate all dynamic storage
80071associated with an instance of a \f(CWDwarf_Debug\fP type.  In particular,
80072it will deallocate all dynamically allocated space associated with the
80073\f(CWDwarf_Debug\fP descriptor, and finally make the descriptor invalid.
80074
80075An \f(CWDwarf_Error\fP returned from \f(CWdwarf_init()\fP
80076or \f(CWdwarf_elf_init()\fP
80077in case of a failure cannot be free'd
80078using \f(CWdwarf_dealloc()\fP.
80079The only way to free the \f(CWDwarf_Error\fP from either of those
80080calls is to use \f2free(3)\fP directly.
80081Every \f(CWDwarf_Error\fP must be free'd
80082by \f(CWdwarf_dealloc()\fP except those
80083returned by \f(CWdwarf_init()\fP
80084or \f(CWdwarf_elf_init()\fP.
80085
80086.P
80087The codes that identify the storage pointed to in calls to
80088.nr aX \n(Fg+1
80089\f(CWdwarf_dealloc()\fP are described in figure \n(aX.
80090.DS
80091.TS
80092center box, tab(:);
80093lfB lfB
80094l l.
80095IDENTIFIER:USED TO FREE
80096_
80097DW_DLA_STRING           :     char*
80098DW_DLA_LOC              :     Dwarf_Loc
80099DW_DLA_LOCDESC          :     Dwarf_Locdesc
80100DW_DLA_ELLIST           :     Dwarf_Ellist (not used)
80101DW_DLA_BOUNDS           :     Dwarf_Bounds (not used)
80102DW_DLA_BLOCK            :     Dwarf_Block
80103DW_DLA_DEBUG            :     Dwarf_Debug (do not use)
80104DW_DLA_DIE              :     Dwarf_Die
80105DW_DLA_LINE             :     Dwarf_Line
80106DW_DLA_ATTR             :     Dwarf_Attribute
80107DW_DLA_TYPE             :     Dwarf_Type  (not used)
80108DW_DLA_SUBSCR           :     Dwarf_Subscr (not used)
80109DW_DLA_GLOBAL           :     Dwarf_Global
80110DW_DLA_ERROR            :     Dwarf_Error
80111DW_DLA_LIST             :     a list of opaque descriptors
80112DW_DLA_LINEBUF          :     Dwarf_Line* (not used)
80113DW_DLA_ARANGE           :     Dwarf_Arange
80114DW_DLA_ABBREV           :     Dwarf_Abbrev
80115DW_DLA_FRAME_OP         :     Dwarf_Frame_Op
80116DW_DLA_CIE              :     Dwarf_Cie
80117DW_DLA_FDE              :     Dwarf_Fde
80118DW_DLA_LOC_BLOCK        :     Dwarf_Loc Block
80119DW_DLA_FRAME_BLOCK      :     Dwarf_Frame Block (not used)
80120DW_DLA_FUNC             :     Dwarf_Func
80121DW_DLA_TYPENAME         :     Dwarf_Type
80122DW_DLA_VAR              :     Dwarf_Var
80123DW_DLA_WEAK		:     Dwarf_Weak
80124.TE
80125.FG "Allocation/Deallocation Identifiers"
80126.DE
80127
80128.P
80129.H 1 "Functional Interface"
80130This section describes the functions available in the \fIlibdwarf\fP
80131library.  Each function description includes its definition, followed
80132by one or more paragraph describing the function's operation.
80133
80134.P
80135The following sections describe these functions.
80136
80137.H 2 "Initialization Operations"
80138These functions are concerned with preparing an object file for subsequent
80139access by the functions in \fIlibdwarf\fP and with releasing allocated
80140resources when access is complete.
80141
80142.H 3 "dwarf_init()"
80143
80144.DS
80145\f(CWint dwarf_init(
80146        int fd,
80147        Dwarf_Unsigned access,
80148        Dwarf_Handler errhand,
80149        Dwarf_Ptr errarg,
80150	Dwarf_Debug * dbg,
80151        Dwarf_Error *error)\fP
80152.DE
80153When it returns \f(CWDW_DLV_OK\fP,
80154the function \f(CWdwarf_init()\fP returns  thru
80155\f(CWdbg\fP a \f(CWDwarf_Debug\fP descriptor
80156that represents a handle for accessing debugging records associated with
80157the open file descriptor \f(CWfd\fP.
80158\f(CWDW_DLV_NO_ENTRY\fP is returned if the object
80159does not contain DWARF debugging information.
80160\f(CWDW_DLV_ERROR\fP is returned if
80161an error occurred.
80162The
80163\f(CWaccess\fP argument indicates what access is allowed for the section.
80164The \f(CWDW_DLC_READ\fP parameter is valid
80165for read access (only read access is defined or discussed in this
80166document).
80167The \f(CWerrhand\fP
80168argument is a pointer to a function that will be invoked whenever an error
80169is detected as a result of a \fIlibdwarf\fP operation.  The \f(CWerrarg\fP
80170argument is passed as an argument to the \f(CWerrhand\fP function.
80171The file
80172descriptor associated with the \f(CWfd\fP argument must refer to an ordinary
80173file (i.e. not a pipe, socket, device, /proc entry, etc.), be opened with
80174the at least as much permission as specified by the \f(CWaccess\fP argument,
80175and cannot be closed or used as an argument to any system calls by the
80176client until after \f(CWdwarf_finish()\fP is called.
80177The seek position of
80178the file associated with \f(CWfd\fP is undefined upon return of
80179\f(CWdwarf_init()\fP.
80180
80181With SGI IRIX, by default it is allowed that the app
80182\f(CWclose()\fP \f(CWfd\fP immediately after calling \f(CWdwarf_init()\fP,
80183but that is not  a portable approach (that it
80184works is an accidental
80185side effect of the fact that SGI IRIX uses \f(CWELF_C_READ_MMAP\fP
80186in its hidden internal call to \f(CWelf_begin()\fP).
80187The portable approach is to consider that \f(CWfd\fP
80188must be left open till after the corresponding dwarf_finish() call
80189has returned.
80190
80191Since \f(CWdwarf_init()\fP uses the same error handling processing as other
80192\fIlibdwarf\fP functions (see \fIError Handling\fP above), client programs
80193will generally supply an \f(CWerror\fP parameter to bypass the default actions
80194during initialization unless the default actions are appropriate.
80195
80196.H 3 "dwarf_elf_init()"
80197.DS
80198\f(CWint dwarf_elf_init(
80199        Elf * elf_file_pointer,
80200        Dwarf_Unsigned access,
80201        Dwarf_Handler errhand,
80202        Dwarf_Ptr errarg,
80203	Dwarf_Debug * dbg,
80204        Dwarf_Error *error)\fP
80205.DE
80206The function \f(CWdwarf_elf_init()\fP is identical to \f(CWdwarf_init()\fP
80207except that an open \f(CWElf *\fP pointer is passed instead of a file
80208descriptor.
80209In systems supporting \f(CWELF\fP object files this may be
80210more space or time-efficient than using \f(CWdwarf_init()\fP.
80211The client is allowed to use the \f(CWElf *\fP pointer
80212for its own purposes without restriction during the time the
80213\f(CWDwarf_Debug\fP
80214is open, except that the client should not  \f(CWelf_end()\fP the
80215pointer till after  \f(CWdwarf_finish\fP is called.
80216
80217.H 3 "dwarf_get_elf()"
80218.DS
80219\f(CWint dwarf_get_elf(
80220        Dwarf_Debug dbg,
80221        Elf **      elf,
80222        Dwarf_Error *error)\fP
80223.DE
80224When it returns \f(CWDW_DLV_OK\fP,
80225the function \f(CWdwarf_get_elf()\fP returns thru the
80226pointer \f(CWelf\fP the \f(CWElf *\fP handle
80227used to access the object represented by the \f(CWDwarf_Debug\fP
80228descriptor \f(CWdbg\fP.  It returns \f(CWDW_DLV_ERROR\fP on error.
80229
80230Because \f(CWint dwarf_init()\fP opens an Elf descriptor
80231on its fd and \f(CWdwarf_finish()\fP does not close that
80232descriptor, an app should use \f(CWdwarf_get_elf\fP
80233and should call \f(CWelf_end\fP with the pointer returned
80234thru the \f(CWElf**\fP handle created by \f(CWint dwarf_init()\fP.
80235
80236This function is not meaningful for a system that does not used the
80237Elf format for objects.
80238
80239.H 3 "dwarf_finish()"
80240.DS
80241\f(CWint dwarf_finish(
80242        Dwarf_Debug dbg,
80243	Dwarf_Error *error)\fP
80244.DE
80245The function
80246\f(CWdwarf_finish()\fP releases all \fILibdwarf\fP internal resources
80247associated with the descriptor \f(CWdbg\fP, and invalidates \f(CWdbg\fP.
80248It returns \f(CWDW_DLV_ERROR\fP if there is an error during the
80249finishing operation.  It returns \f(CWDW_DLV_OK\fP
80250for a successful operation.
80251
80252Because \f(CWint dwarf_init()\fP opens an Elf descriptor
80253on its fd and \f(CWdwarf_finish()\fP does not close that
80254descriptor, an app should use \f(CWdwarf_get_elf\fP
80255and should call \f(CWelf_end\fP with the pointer returned
80256thru the \f(CWElf**\fP handle created by \f(CWint dwarf_init()\fP.
80257
80258.H 2 "Debugging Information Entry Delivery Operations"
80259These functions are concerned with accessing debugging information
80260entries.
80261
80262.H 3 "Debugging Information Entry Debugger Delivery Operations"
80263
80264.H 3 "dwarf_next_cu_header()"
80265.DS
80266\f(CWint dwarf_next_cu_header(
80267        Dwarf_debug dbg,
80268        Dwarf_Unsigned *cu_header_length,
80269        Dwarf_Half     *version_stamp,
80270        Dwarf_Unsigned *abbrev_offset,
80271        Dwarf_Half     *address_size,
80272        Dwarf_Unsigned *next_cu_header,
80273        Dwarf_Error    *error);
80274.DE
80275The function
80276\f(CWdwarf_next_cu_header()\fP returns \f(CWDW_DLV_ERROR\fP
80277if it fails, and
80278\f(CWDW_DLV_OK\fP if it succeeds.
80279.P
80280If it succeeds, \f(CW*next_cu_header\fP is set to
80281the offset in the .debug_info section of the next
80282compilation-unit header if it succeeds.  On reading the last
80283compilation-unit header in the .debug_info section it contains
80284the size of the .debug_info section.
80285The next call to
80286\f(CWdwarf_next_cu_header()\fP returns \f(CWDW_DLV_NO_ENTRY\fP
80287without reading a
80288compilation-unit or setting \f(CW*next_cu_header\fP.
80289Subsequent calls to \f(CWdwarf_next_cu_header()\fP
80290repeat the cycle by reading the first compilation-unit and so on.
80291.P
80292The other
80293values returned through pointers are the values in the compilation-unit
80294header.  If any of \f(CWcu_header_length\fP, \f(CWversion_stamp\fP,
80295\f(CWabbrev_offset\fP, or \f(CWaddress_size\fP is \f(CWNULL\fP, the
80296argument is ignored (meaning it is not an error to provide a
80297\f(CWNULL\fP pointer).
80298
80299.H 3 "dwarf_siblingof()"
80300.DS
80301\f(CWint dwarf_siblingof(
80302        Dwarf_Debug dbg,
80303        Dwarf_Die die,
80304	Dwarf_Die *return_sib,
80305        Dwarf_Error *error)\fP
80306.DE
80307The function \f(CWdwarf_siblingof()\fP
80308returns \f(CWDW_DLV_ERROR\fP and sets the \f(CWerror\fP pointer on error.
80309If there is no sibling it returns \f(CWDW_DLV_NO_ENTRY\fP.
80310When it succeeds,
80311\f(CWdwarf_siblingof()\fP returns
80312\f(CWDW_DLV_OK\fP  and sets \f(CW*return_sib\fP to the \f(CWDwarf_Die\fP
80313descriptor of the sibling of \f(CWdie\fP.
80314If \f(CWdie\fP is \fINULL\fP, the \f(CWDwarf_Die\fP descriptor of the
80315first die in the compilation-unit is returned.
80316This die has the
80317\f(CWDW_TAG_compile_unit\fP tag.
80318.H 3 "dwarf_child()"
80319.DS
80320\f(CWint dwarf_child(
80321        Dwarf_Die die,
80322	Dwarf_Die *return_kid,
80323        Dwarf_Error *error)\fP
80324.DE
80325The function \f(CWdwarf_child()\fP
80326returns \f(CWDW_DLV_ERROR\fP and sets the \f(CWerror\fP die on error.
80327If there is no child it returns \f(CWDW_DLV_NO_ENTRY\fP.
80328When it succeeds,
80329\f(CWdwarf_child()\fP returns
80330\f(CWDW_DLV_OK\fP and sets \f(CW*return_kid\fP
80331to the \f(CWDwarf_Die\fP descriptor
80332of the first child of \f(CWdie\fP.
80333The function
80334\f(CWdwarf_siblingof()\fP can be used with the return value of
80335\f(CWdwarf_child()\fP to access the other children of \f(CWdie\fP.
80336
80337.H 3 "dwarf_offdie()"
80338.DS
80339\f(CWint dwarf_offdie(
80340        Dwarf_Debug dbg,
80341        Dwarf_Off offset,
80342	Dwarf_Die *return_die,
80343        Dwarf_Error *error)\fP
80344.DE
80345The function \f(CWdwarf_offdie()\fP
80346returns \f(CWDW_DLV_ERROR\fP and sets the \f(CWerror\fP die on error.
80347When it succeeds,
80348\f(CWdwarf_offdie()\fP returns
80349\f(CWDW_DLV_OK\fP and sets \f(CW*return_die\fP
80350to the
80351the \f(CWDwarf_Die\fP
80352descriptor of the debugging information entry at \f(CWoffset\fP in
80353the section containing debugging information entries i.e the .debug_info
80354section.
80355A return of \f(CWDW_DLV_NO_ENTRY\fP
80356means that the \f(CWoffset\fP in the section is of a byte containing
80357all 0 bits, indicating that there
80358is no abbreviation code. Meaning this 'die offset' is not
80359the offset of a real die, but is instead an offset of a null die,
80360a padding die, or of some random zero byte: this should
80361not be returned in normal use.
80362It is the user's
80363responsibility to make sure that \f(CWoffset\fP is the start of a valid
80364debugging information entry.  The result of passing it an invalid
80365offset could be chaos.
80366
80367.\"#if 0
80368.\".H 3 "Debugging Entry Delivery High-level Operations"
80369.\"The following "higher level" operations are typically not used by
80370.\"debuggers or DWARF prettyprinters.  A disassembler (for example)
80371.\"might find them useful.
80372.\"
80373.\".DS
80374.\"\f(CWDwarf_Die dwarf_pcfile(
80375.\"        Dwarf_Debug dbg,
80376.\"        Dwarf_Addr pc,
80377.\"        Dwarf_Error *error)\fP
80378.\".DE
80379.\"The function \f(CWdwarf_pcfile()\fP returns the \f(CWDwarf_Die\fP
80380.\"descriptor of the compilation unit debugging information entry that
80381.\"contains the address of \f(CWpc\fP.  It returns \fINULL\fP if no
80382.\"entry exists or an error occurred.  Currently compilation unit
80383.\"debugging information entries are defined as those having a tag of:
80384.\"\f(CWDW_TAG_compile_unit\fP.  This function is currently unimplemented.
80385.\"
80386.\".DS
80387.\"\f(CWDwarf_Die dwarf_pcsubr(
80388.\"        Dwarf_Debug dbg,
80389.\"        Dwarf_Addr pc,
80390.\"        Dwarf_Error *error)\fP
80391.\".DE
80392.\"The function
80393.\"\f(CWdwarf_pcsubr()\fP returns the \f(CWDwarf_Die\fP descriptor of the
80394.\"subroutine debugging entry that contains the address of \f(CWpc\fP.  It
80395.\"returns \fINULL\fP if no entry exists or an error occurred.  Currently
80396.\"subroutine debugging information entries are defined as those having a
80397.\"tag of: \f(CWDW_TAG_subprogram\fP, or \f(CWTAG_inlined_subroutine\fP.
80398.\"This function is currently unimplemented.
80399.\"
80400.\".DS
80401.\"\f(CWDwarf_Die dwarf_pcscope(
80402.\"        Dwarf_Debug dbg,
80403.\"        Dwarf_Addr pc,
80404.\"        Dwarf_Error *error)\fP
80405.\".DE
80406.\"The function
80407.\"\f(CWdwarf_pcscope()\fP returns the \f(CWDwarf_Die\fP descriptor for
80408.\"the debugging information entry that represents the innermost enclosing
80409.\"scope containing \f(CWpc\fP, or \fINULL\fP if no entry exists or an
80410.\"error occurred. Debugging information entries that represent a \fIscope\fP
80411.\"are those containing a low pc attribute and either a high pc or byte
80412.\"size attribute that delineates a range. For example: a debugging information
80413.\"entry for a lexical block is considered one having a scope whereas a
80414.\"debugging information entry for a label is not.  This function is
80415.\"currently unimplemented.
80416.\"#endif
80417
80418
80419.H 2 "Debugging Information Entry Query Operations"
80420These queries return specific information about debugging information
80421entries or a descriptor that can be used on subsequent queries when
80422given a \f(CWDwarf_Die\fP descriptor.  Note that some operations are
80423specific to debugging information entries that are represented by a
80424\f(CWDwarf_Die\fP descriptor of a specific type.
80425For example, not all
80426debugging information entries contain an attribute having a name, so
80427consequently, a call to \f(CWdwarf_diename()\fP using a \f(CWDwarf_Die\fP
80428descriptor that does not have a name attribute will return
80429\f(CWDW_DLV_NO_ENTRY\fP.
80430This is not an error, i.e. calling a function that needs a specific
80431attribute is not an error for a die that does not contain that specific
80432attribute.
80433.P
80434There are several methods that can be used to obtain the value of an
80435attribute in a given die:
80436.AL 1
80437.LI
80438Call \f(CWdwarf_hasattr()\fP to determine if the debugging information
80439entry has the attribute of interest prior to issuing the query for
80440information about the attribute.
80441
80442.LI
80443Supply an \f(CWerror\fP argument, and check its value after the call to
80444a query indicates an unsuccessful return, to determine the nature of the
80445problem.  The \f(CWerror\fP argument will indicate whether an error occurred,
80446or the specific attribute needed was missing in that die.
80447
80448.LI
80449Arrange to have an error handling function invoked upon detection of an
80450error (see \f(CWdwarf_init()\fP).
80451
80452.LI
80453Call \f(CWdwarf_attrlist()\fP and iterate through the returned list of
80454attributes, dealing with each one as appropriate.
80455.LE
80456.P
80457
80458.H 3 "dwarf_tag()"
80459.DS
80460\f(CWint dwarf_tag(
80461        Dwarf_Die die,
80462	Dwarf_Half *tagval,
80463        Dwarf_Error *error)\fP
80464.DE
80465The function \f(CWdwarf_tag()\fP returns the \fItag\fP of \f(CWdie\fP
80466thru the pointer  \f(CWtagval\fP if it succeeds.
80467It returns \f(CWDW_DLV_OK\fP if it succeeds.
80468It returns \f(CWDW_DLV_ERROR\fP on error.
80469
80470.H 3 "dwarf_dieoffset()"
80471.DS
80472\f(CWint dwarf_dieoffset(
80473        Dwarf_Die die,
80474	Dwarf_Off * return_offset,
80475        Dwarf_Error *error)\fP
80476.DE
80477When it succeeds,
80478the function \f(CWdwarf_dieoffset()\fP returns
80479\f(CWDW_DLV_OK\fP and sets \f(CW*return_offset\fP
80480to the position of \f(CWdie\fP
80481in the section containing debugging information entries
80482(the \f(CWreturn_offset\fP is a section-relative offset).
80483In other words,
80484it sets \f(CWreturn_offset\fP
80485to the offset of the start of the debugging information entry
80486described by \f(CWdie\fP in the section containing die's i.e .debug_info.
80487It returns \f(CWDW_DLV_ERROR\fP on error.
80488
80489.H 3 "dwarf_die_CU_offset()"
80490.DS
80491\f(CWint dwarf_die_CU_offset(
80492        Dwarf_Die die,
80493  	Dwarf_Off *return_offset,
80494        Dwarf_Error *error)\fP
80495.DE
80496The function \f(CWdwarf_die_CU_offset()\fP is similar to
80497\f(CWdwarf_dieoffset()\fP, except that it puts the offset of the DIE
80498represented by the \f(CWDwarf_Die\fP \f(CWdie\fP, from the
80499start of the compilation-unit that it belongs to rather than the start
80500of .debug_info (the \f(CWreturn_offset\fP is a CU-relative offset).
80501
80502
80503.H 3 "dwarf_diename()"
80504.DS
80505\f(CWint dwarf_diename(
80506        Dwarf_Die die,
80507	char  ** return_name,
80508        Dwarf_Error *error)\fP
80509.DE
80510When it succeeds,
80511the function \f(CWdwarf_diename()\fP returns
80512\f(CWDW_DLV_OK\fP and sets \f(CW*return_name\fP
80513to
80514a pointer to a
80515null-terminated string of characters that represents the name
80516attribute of \f(CWdie\fP.
80517It returns \f(CWDW_DLV_NO_ENTRY\fP if \f(CWdie\fP does not have a name attribute.
80518It returns \f(CWDW_DLV_ERROR\fP if
80519an error occurred.
80520The storage pointed to by a successful return of
80521\f(CWdwarf_diename()\fP should be free'd using the allocation type
80522\f(CWDW_DLA_STRING\fP when no longer of interest (see
80523\f(CWdwarf_dealloc()\fP).
80524
80525.H 3 "dwarf_attrlist()"
80526.DS
80527\f(CWint dwarf_attrlist(
80528        Dwarf_Die die,
80529        Dwarf_Attribute** attrbuf,
80530	Dwarf_Signed *attrcount,
80531        Dwarf_Error *error)\fP
80532.DE
80533When it returns \f(CWDW_DLV_OK\fP,
80534the function \f(CWdwarf_attrlist()\fP sets \f(CWattrbuf\fP to point
80535to an array of \f(CWDwarf_Attribute\fP descriptors corresponding to
80536each of the attributes in die, and returns the number of elements in
80537the array thru \f(CWattrcount\fP.
80538\f(CWDW_DLV_NO_ENTRY\fP is returned if the count is zero (no
80539\f(CWattrbuf\fP is allocated in this case).
80540\f(CWDW_DLV_ERROR\fP is returned on error.
80541On a successful return from \f(CWdwarf_attrlist()\fP, each of the
80542\f(CWDwarf_Attribute\fP descriptors should be individually free'd using
80543\f(CWdwarf_dealloc()\fP with the allocation type \f(CWDW_DLA_ATTR\fP,
80544followed by free-ing the list pointed to by \f(CW*attrbuf\fP using
80545\f(CWdwarf_dealloc()\fP with the allocation type \f(CWDW_DLA_LIST\fP,
80546when no longer of interest (see \f(CWdwarf_dealloc()\fP).
80547
80548Freeing the attrlist:
80549.in +2
80550.DS
80551\f(CWDwarf_Unsigned atcnt;
80552Dwarf_Attribute *atlist;
80553int errv;
80554
80555if ((errv = dwarf_attrlist(somedie, &atlist,&atcnt, &error)) == DW_DLV_OK) {
80556
80557        for (i = 0; i < atcnt; ++i) {
80558                /* use atlist[i] */
80559                dwarf_dealloc(dbg, atlist[i], DW_DLA_ATTR);
80560        }
80561        dwarf_dealloc(dbg, atlist, DW_DLA_LIST);
80562}\fP
80563.DE
80564.in -2
80565.P
80566.H 3 "dwarf_hasattr()"
80567.DS
80568\f(CWint dwarf_hasattr(
80569        Dwarf_Die die,
80570        Dwarf_Half attr,
80571	Dwarf_Bool *return_bool,
80572        Dwarf_Error *error)\fP
80573.DE
80574When it succeeds, the
80575function \f(CWdwarf_hasattr()\fP returns \f(CWDW_DLV_OK\fP
80576and sets \f(CW*return_bool\fP to \fInon-zero\fP if
80577\f(CWdie\fP has the attribute \f(CWattr\fP and \fIzero\fP otherwise.
80578If it fails, it returns \f(CWDW_DLV_ERROR\fP.
80579
80580.H 3 "dwarf_attr()"
80581.DS
80582\f(CWint dwarf_attr(
80583        Dwarf_Die die,
80584        Dwarf_Half attr,
80585	Dwarf_Attribute *return_attr,
80586        Dwarf_Error *error)\fP
80587.DE
80588When it returns \f(CWDW_DLV_OK\fP,
80589the function \f(CWdwarf_attr()\fP
80590sets
80591\f(CW*return_attr\fP to the  \f(CWDwarf_Attribute\fP
80592descriptor of \f(CWdie\fP having the attribute \f(CWattr\fP.
80593It returns \f(CDW_DLV_NO_ENTRY\fP if \f(CWattr\fP is not contained
80594in \f(CWdie\fP.
80595It returns \f(CDW_DLV_ERROR\fP if an error occurred.
80596
80597.\"#if 0
80598.\".DS
80599.\"\f(CWDwarf_Locdesc* dwarf_stringlen(
80600.\"        Dwarf_Die die,
80601.\"        Dwarf_Error *error)\fP
80602.\".DE
80603.\"The function \f(CWdwarf_stringlen()\fP returns a pointer to a
80604.\"\f(CWDwarf_Locdesc\fP with one Locdesc entry that when evaluated,
80605.\"yields the length of the string represented by \f(CWdie\fP.  It
80606.\"returns \f(CWNULL\fP if \f(CWdie\fP does not contain a string length
80607.\"attribute or the string length attribute is not a location-description
80608.\"or an error occurred. The address range of the list is set to 0 thru
80609.\"the highest possible address if a loclist pointer is returned.  The
80610.\"storage pointed to by a successful return of \f(CWdwarf_stringlen()\fP
80611.\"should be free'd when no longer of interest (see \f(CWdwarf_dealloc()\fP).
80612.\"This function is currently unimplemented.
80613.\"#endif
80614
80615.\"#if 0
80616.\".DS
80617.\"\f(CWDwarf_Signed dwarf_subscrcnt(
80618.\"        Dwarf_Die die,
80619.\"        Dwarf_Error *error)\fP
80620.\".DE
80621.\"The function \f(CWdwarf_subscrcnt()\fP returns the number of subscript
80622.\"die's that are owned by the array type represented by \f(CWdie\fP.  It
80623.\"returns \f(CWDW_DLV_NOCOUNT\fP on error.  This function is currently
80624.\"unimplemented.
80625.\"
80626.\".DS
80627.\"\f(CWDwarf_Die dwarf_nthsubscr(
80628.\"        Dwarf_Die die,
80629.\"        Dwarf_Unsigned ssndx,
80630.\"        Dwarf_Error *error)\fP
80631.\".DE
80632.\"The function \f(CWdwarf_nthsubscr()\fP returns a \f(CWDwarf_Die\fP
80633.\"descriptor that describes the \f(CWssndx\fP subscript of the array
80634.\"type debugging information entry represented by \f(CWdie\fP, where
80635.\"\fI1\fP is the first member.  It returns \fINULL\fP if \f(CWdie\fP
80636.\"does not have an \f(CWssndx\fP subscript, or an error occurred.
80637.\"This function is currently unimplemented.
80638.\"#endif
80639
80640.H 3 "dwarf_lowpc()"
80641.DS
80642\f(CWint dwarf_lowpc(
80643        Dwarf_Die     die,
80644	Dwarf_Addr  * return_lowpc,
80645        Dwarf_Error * error)\fP
80646.DE
80647The function \f(CWdwarf_lowpc()\fP returns
80648\f(CWDW_DLV_OK\fP and sets \f(CW*return_lowpc\fP
80649to the low program counter
80650value associated with the \f(CWdie\fP descriptor if \f(CWdie\fP
80651represents a debugging information entry with this attribute.
80652It returns \f(CWDW_DLV_NO_ENTRY\fP if \f(CWdie\fP does not have this
80653attribute.
80654It returns \f(CWDW_DLV_ERROR\fP if an error occurred.
80655
80656.H 3 "dwarf_highpc()"
80657.DS
80658\f(CWint dwarf_highpc(
80659        Dwarf_Die die,
80660	Dwarf_Addr  * return_highpc,
80661        Dwarf_Error *error)\fP
80662.DE
80663The function \f(CWdwarf_highpc()\fP returns
80664\f(CWDW_DLV_OK\fP and sets \f(CW*return_highpc\fP
80665the high program counter
80666value associated with the \f(CWdie\fP descriptor if \f(CWdie\fP
80667represents a debugging information entry with this attribute.
80668It returns \f(CWDW_DLV_NO_ENTRY\fP if \f(CWdie\fP does not have this
80669attribute.
80670It returns \f(CWDW_DLV_ERROR\fP if an error occurred.
80671
80672.H 3 "dwarf_bytesize()"
80673.DS
80674\f(CWDwarf_Signed dwarf_bytesize(
80675        Dwarf_Die        die,
80676	Dwarf_Unsigned  *return_size,
80677        Dwarf_Error     *error)\fP
80678.DE
80679When it succeeds,
80680\f(CWdwarf_bytesize()\fP returns
80681\f(CWDW_DLV_OK\fP and sets \f(CW*return_size\fP
80682to the number of bytes
80683needed to contain an instance of the aggregate debugging information
80684entry represented by \f(CWdie\fP.
80685It returns \f(CWDW_DLV_NO_ENTRY\fP if
80686\f(CWdie\fP does not contain the byte size attribute \f(CWDW_AT_byte_size\fP.
80687It returns \f(CWDW_DLV_ERROR\fP if
80688an error occurred.
80689
80690.\"#if 0
80691.\".DS
80692.\"\f(CWDwarf_Bool dwarf_isbitfield(
80693.\"        Dwarf_Die die,
80694.\"        Dwarf_Error *error)\fP
80695.\".DE
80696.\"The function \f(CWdwarf_isbitfield()\fP returns \fInon-zero\fP if
80697.\"\f(CWdie\fP is a descriptor for a debugging information entry that
80698.\"represents a bit field member.  It returns \fIzero\fP if \f(CWdie\fP
80699.\"is not associated with a bit field member.  This function is currently
80700.\"unimplemented.
80701.\"#endif
80702
80703.H 3 "dwarf_bitsize()"
80704.DS
80705\f(CWint dwarf_bitsize(
80706        Dwarf_Die die,
80707	Dwarf_Unsigned  *return_size,
80708        Dwarf_Error *error)\fP
80709.DE
80710When it succeeds,
80711\f(CWdwarf_bitsize()\fP returns
80712\f(CWDW_DLV_OK\fP and sets \f(CW*return_size\fP
80713to the number of
80714bits
80715occupied by the bit field value that is an attribute of the given
80716die.
80717It returns \f(CWDW_DLV_NO_ENTRY\fP if \f(CWdie\fP does not
80718contain the bit size attribute \f(CWDW_AT_bit_size\fP.
80719It returns \f(CWDW_DLV_ERROR\fP if
80720an error occurred.
80721
80722.H 3 "dwarf_bitoffset()"
80723.DS
80724\f(CWint dwarf_bitoffset(
80725        Dwarf_Die die,
80726	Dwarf_Unsigned  *return_size,
80727        Dwarf_Error *error)\fP
80728.DE
80729When it succeeds,
80730\f(CWdwarf_bitoffset()\fP returns
80731\f(CWDW_DLV_OK\fP and sets \f(CW*return_size\fP
80732to the number of bits
80733to the left of the most significant bit of the bit field value.
80734This bit offset is not necessarily the net bit offset within the
80735structure or class , since \f(CWDW_AT_data_member_location\fP
80736may give a byte offset to this \f(CWDIE\fP and the bit offset
80737returned through the pointer
80738does not include the bits in the byte offset.
80739It returns \f(CWDW_DLV_NO_ENTRY\fP if \f(CWdie\fP does not contain the
80740bit offset attribute \f(CWDW_AT_bit_offset\fP.
80741It returns \f(CWDW_DLV_ERROR\fP if
80742an error occurred.
80743
80744.H 3 "dwarf_srclang()"
80745.DS
80746\f(CWint dwarf_srclang(
80747        Dwarf_Die die,
80748	Dwarf_Unsigned  *return_lang,
80749        Dwarf_Error *error)\fP
80750.DE
80751When it succeeds,
80752\f(CWdwarf_srclang()\fP returns
80753\f(CWDW_DLV_OK\fP and sets \f(CW*return_lang\fP
80754to
80755a code indicating the
80756source language of the compilation unit represented by the descriptor
80757\f(CWdie\fP.
80758It returns \f(CWDW_DLV_NO_ENTRY\fP if \f(CWdie\fP does not
80759represent a source file debugging information entry (i.e. contain the
80760attribute \f(CWDW_AT_language\fP).
80761It returns \f(CWDW_DLV_ERROR\fP if
80762an error occurred.
80763
80764.H 3 "dwarf_arrayorder()"
80765.DS
80766\f(CWint dwarf_arrayorder(
80767        Dwarf_Die die,
80768	Dwarf_Unsigned  *return_order,
80769        Dwarf_Error *error)\fP
80770.DE
80771When it succeeds,
80772\f(CWdwarf_arrayorder()\fP returns
80773\f(CWDW_DLV_OK\fP and sets \f(CW*return_order\fP
80774a code indicating
80775the ordering of the array represented by the descriptor \f(CWdie\fP.
80776It returns \f(CWDW_DLV_NO_ENTRY\fP if \f(CWdie\fP does not contain the
80777array order attribute \f(CWDW_AT_ordering\fP.
80778It returns \f(CWDW_DLV_ERROR\fP if
80779an error occurred.
80780
80781.H 2 "Attribute Form Queries"
80782Based on the attribute's form, these operations are concerned with
80783returning uninterpreted attribute data.  Since it is not always
80784obvious from the return value of these functions if an error occurred,
80785one should always supply an \f(CWerror\fP parameter or have arranged
80786to have an error handling function invoked (see \f(CWdwarf_init()\fP)
80787to determine the validity of the returned value and the nature of any
80788errors that may have occurred.
80789
80790A \f(CWDwarf_Attribute\fP descriptor describes an attribute of a
80791specific die.  Thus, each \f(CWDwarf_Attribute\fP descriptor is
80792implicitly associated with a specific die.
80793
80794.H 3 "dwarf_hasform()"
80795.DS
80796\f(CWnt dwarf_hasform(
80797        Dwarf_Attribute attr,
80798        Dwarf_Half form,
80799        Dwarf_Bool  *return_hasform,
80800        Dwarf_Error *error)\fP
80801.DE
80802The function \f(CWdwarf_hasform()\fP returns
80803\f(CWDW_DLV_OK\fP and  and puts a
80804\fInon-zero\fP
80805 value in the
80806\f(CW*return_hasform\fP boolean if the
80807attribute represented by the \f(CWDwarf_Attribute\fP descriptor
80808\f(CWattr\fP has the attribute form \f(CWform\fP.
80809If the attribute does not have that form \fIzero\fP
80810is put into \f(CW*return_hasform\fP.
80811\f(CWDW_DLV_ERROR\fP is returned on error.
80812
80813.H 3 "dwarf_whatform()"
80814.DS
80815\f(CWint dwarf_whatform(
80816        Dwarf_Attribute attr,
80817        Dwarf_Half     *return_form,
80818        Dwarf_Error *error)\fP
80819.DE
80820When it succeeds,
80821\f(CWdwarf_whatform()\fP returns
80822\f(CWDW_DLV_OK\fP and sets \f(CW*return_form\fP
80823to the attribute form code of
80824the attribute represented by the \f(CWDwarf_Attribute\fP descriptor
80825\f(CWattr\fP.
80826It returns  \f(CWDW_DLV_ERROR\fP  on error.
80827An attribute using DW_FORM_indirect effectively has two forms.
80828This function returns the 'final' form for \f(CWDW_FORM_indirect\fP,
80829not the \f(CWDW_FORM_indirect\fP itself. This function is
80830what most applications will want to call.
80831
80832.H 3 "dwarf_whatform_direct()"
80833.DS
80834\f(CWint dwarf_whatform_direct(
80835        Dwarf_Attribute attr,
80836        Dwarf_Half     *return_form,
80837        Dwarf_Error *error)\fP
80838.DE
80839When it succeeds,
80840\f(CWdwarf_whatform_direct()\fP returns
80841\f(CWDW_DLV_OK\fP and sets \f(CW*return_form\fP
80842to the attribute form code of
80843the attribute represented by the \f(CWDwarf_Attribute\fP descriptor
80844\f(CWattr\fP.
80845It returns  \f(CWDW_DLV_ERROR\fP  on error.
80846An attribute using \f(CWDW_FORM_indirect\fP effectively has two forms.
80847This returns the form 'directly' in the initial form field.
80848So when the form field is \f(CWDW_FORM_indirect\fP
80849this call returns the \f(CWDW_FORM_indirect\fP form,
80850which is sometimes useful for dump utilities.
80851
80852.H 3 "dwarf_whatattr()"
80853.DS
80854\f(CWint dwarf_whatattr(
80855        Dwarf_Attribute attr,
80856        Dwarf_Half     *return_attr,
80857        Dwarf_Error *error)\fP
80858.DE
80859When it succeeds,
80860\f(CWdwarf_whatattr()\fP returns
80861\f(CWDW_DLV_OK\fP and sets \f(CW*return_attr\fP
80862to the attribute code
80863represented by the \f(CWDwarf_Attribute\fP descriptor \f(CWattr\fP.
80864It returns  \f(CWDW_DLV_ERROR\fP  on error.
80865
80866.H 3 "dwarf_formref()"
80867.DS
80868\f(CWint dwarf_formref(
80869        Dwarf_Attribute attr,
80870	Dwarf_Off     *return_offset,
80871        Dwarf_Error *error)\fP
80872.DE
80873When it succeeds,
80874\f(CWdwarf_formref()\fP returns
80875\f(CWDW_DLV_OK\fP and sets \f(CW*return_offset\fP
80876to the CU-relative offset
80877represented by the descriptor \f(CWattr\fP if the form of the attribute
80878belongs to the \f(CWREFERENCE\fP class.
80879\f(CWattr\fP must be a CU-local reference,
80880not form \f(CWDW_FORM_ref_addr\fP.
80881It is an error for the form to
80882not belong to this class or to be form \f(CWDW_FORM_ref_addr\fP.
80883It returns \f(CWDW_DLV_ERROR\fP on error.
80884See also \f(CWdwarf_global_formref\fP below.
80885
80886.H 3 "dwarf_global_formref()"
80887.DS
80888\f(CWint dwarf_global_formref(
80889        Dwarf_Attribute attr,
80890	Dwarf_Off     *return_offset,
80891        Dwarf_Error *error)\fP
80892.DE
80893When it succeeds,
80894\f(CWdwarf_global_formref()\fP returns
80895\f(CWDW_DLV_OK\fP and sets \f(CW*return_offset\fP
80896to the .debug_info-section-relative offset
80897represented by the descriptor \f(CWattr\fP if the form of the attribute
80898belongs to the \f(CWREFERENCE\fP class.
80899\f(CWattr\fP can be any legal
80900\f(CWREFERENCE\fP class form including \f(CWDW_FORM_ref_addr\fP.
80901It is an error for the form to
80902not belong to this class.
80903It returns \f(CWDW_DLV_ERROR\fP on error.
80904See also \f(CWdwarf_formref\fP above.
80905
80906.H 3 "dwarf_formaddr()"
80907.DS
80908\f(CWint dwarf_formaddr(
80909        Dwarf_Attribute attr,
80910        Dwarf_Addr    * return_addr,
80911        Dwarf_Error *error)\fP
80912.DE
80913When it succeeds,
80914\f(CWdwarf_formaddr()\fP returns
80915\f(CWDW_DLV_OK\fP and sets \f(CW*return_addr\fP
80916to
80917the address
80918represented by the descriptor \f(CWattr\fP if the form of the attribute
80919belongs to the \f(CWADDRESS\fP class.
80920It is an error for the form to
80921not belong to this class.
80922It returns \f(CWDW_DLV_ERROR\fP on error.
80923
80924.H 3 "dwarf_formflag()"
80925.DS
80926\f(CWint dwarf_formflag(
80927	Dwarf_Attribute attr,
80928	Dwarf_Bool * return_bool,
80929	Dwarf_Error *error)\fP
80930.DE
80931When it succeeds,
80932\f(CWdwarf_formflag()\fP returns
80933\f(CWDW_DLV_OK\fP and sets \f(CW*return_bool\fP
80934\f(CW1\fP (i.e. true) (if the attribute has a non-zero value)
80935or \f(CW0\fP (i.e. false) (if the attribute has a zero value).
80936It returns \f(CWDW_DLV_ERROR\fP on error or if the \f(CWattr\fP
80937does not have form flag.
80938
80939.H 3 "dwarf_formudata()"
80940.DS
80941\f(CWint dwarf_formudata(
80942        Dwarf_Attribute   attr,
80943	Dwarf_Unsigned  * return_uvalue,
80944        Dwarf_Error     * error)\fP
80945.DE
80946The function
80947\f(CWdwarf_formudata()\fP returns
80948\f(CWDW_DLV_OK\fP and sets \f(CW*return_uvalue\fP
80949to
80950the \f(CWDwarf_Unsigned\fP
80951value of the attribute represented by the descriptor \f(CWattr\fP if the
80952form of the attribute belongs to the \f(CWCONSTANT\fP class.
80953It is an
80954error for the form to not belong to this class.
80955It returns \f(CWDW_DLV_ERROR\fP on error.
80956
80957.H 3 "dwarf_formsdata()"
80958.DS
80959\f(CWint dwarf_formsdata(
80960        Dwarf_Attribute attr,
80961	Dwarf_Signed  * return_svalue,
80962        Dwarf_Error *error)\fP
80963.DE
80964The function \f(CWdwarf_formsdata()\fP returns
80965\f(CWDW_DLV_OK\fP and sets \f(CW*return_svalue\fP
80966to
80967the \f(CWDwarf_Signed\fP
80968value of the attribute represented by the descriptor \f(CWattr\fP if the
80969form of the attribute belongs to the \f(CWCONSTANT\fP class.
80970It is an
80971error for the form to not belong to this class.
80972If the size of the data
80973attribute referenced is smaller than the size of the \f(CWDwarf_Signed\fP
80974type, its value is sign extended.
80975It returns \f(CWDW_DLV_ERROR\fP on error.
80976
80977.H 3 "dwarf_formblock()"
80978.DS
80979\f(CWint dwarf_formblock(
80980        Dwarf_Attribute attr,
80981	Dwarf_Block  ** return_block,
80982        Dwarf_Error *   error)\fP
80983.DE
80984The function \f(CWdwarf_formblock()\fP returns
80985\f(CWDW_DLV_OK\fP and sets \f(CW*return_block\fP
80986to
80987a pointer to a
80988\f(CWDwarf_Block\fP structure containing the value of the attribute
80989represented by the descriptor \f(CWattr\fP if the form of the
80990attribute belongs to the \f(CWBLOCK\fP class.
80991It is an error
80992for the form to not belong to this class.
80993The storage pointed
80994to by a successful return of \f(CWdwarf_formblock()\fP should
80995be free'd using the allocation type \f(CWDW_DLA_BLOCK\fP,  when
80996no longer of interest (see \f(CWdwarf_dealloc()\fP).
80997It returns
80998\f(CWDW_DLV_ERROR\fP on error.
80999
81000.H 3 "dwarf_formstring()"
81001
81002.DS
81003\f(CWint dwarf_formstring(
81004        Dwarf_Attribute attr,
81005	char        **  return_string,
81006        Dwarf_Error *error)\fP
81007.DE
81008The function \f(CWdwarf_formstring()\fP returns
81009\f(CWDW_DLV_OK\fP and sets \f(CW*return_string\fP
81010to
81011a pointer to a
81012null-terminated string containing  the value of the attribute
81013represented by the descriptor \f(CWattr\fP if the form of the
81014attribute belongs to the \f(CWSTRING\fP class.
81015It is an error
81016for the form to not belong to this class.
81017The storage pointed
81018to by a successful return of \f(CWdwarf_formstring()\fP should
81019be free'd using the allocation type \f(CWDW_DLA_STRING\fP when
81020no longer of interest (see \f(CWdwarf_dealloc()\fP).
81021It returns \f(CWDW_DLV_ERROR\fP on error.
81022
81023.H 4 "dwarf_loclist_n()"
81024.DS
81025\f(CWint dwarf_loclist_n(
81026        Dwarf_Attribute attr,
81027        Dwarf_Locdesc ***llbuf,
81028        Dwarf_Signed  *listlen,
81029        Dwarf_Error *error)\fP
81030.DE
81031The function \f(CWdwarf_loclist_n()\fP sets \f(CW*llbuf\fP to point to
81032an array of \f(CWDwarf_Locdesc\fP pointers corresponding to each of
81033the location expressions in a location list, and sets
81034\f(CW*listlen\fP to the number
81035of elements in the array and
81036returns \f(CWDW_DLV_OK\fP if the attribute is
81037appropriate.
81038.P
81039This is the preferred function for Dwarf_Locdesc as
81040it is the interface allowing access to an entire
81041loclist. (use of \f(CWdwarf_loclist_n()\fP is
81042suggested as the better interface, though
81043\f(CWdwarf_loclist()\fP is still
81044supported.)
81045.P
81046It returns \f(CWDW_DLV_ERROR\fP on error.
81047\f(CWdwarf_loclist_n()\fP works on \f(CWDW_AT_location\fP,
81048\f(CWDW_AT_data_member_location\fP, \f(CWDW_AT_vtable_elem_location\fP,
81049\f(CWDW_AT_string_length\fP, \f(CWDW_AT_use_location\fP, and
81050\f(CWDW_AT_return_addr\fP attributes.
81051.P
81052Storage allocated by a successful call of \f(CWdwarf_loclist_n()\fP should
81053be deallocated when no longer of interest (see \f(CWdwarf_dealloc()\fP).
81054The block of \f(CWDwarf_Loc\fP structs pointed to by the \f(CWld_s\fP
81055field of each \f(CWDwarf_Locdesc\fP structure
81056should be deallocated with the allocation type
81057\f(CWDW_DLA_LOC_BLOCK\fP.
81058and  the \f(CWllbuf[]\fP space pointed to should be deallocated with
81059allocation type \f(CWDW_DLA_LOCDESC\fP.
81060This should be followed by deallocation of the \f(CWllbuf\fP
81061using the allocation type \f(CWDW_DLA_LIST\fP.
81062.in +2
81063.DS
81064\f(CWDwarf_Signed lcnt;
81065Dwarf_Locdesc **llbuf;
81066int lres;
81067
81068if ((lres = dwarf_loclist_n(someattr, &llbuf,&lcnt &error)) == DW_DLV_OK) {
81069        for (i = 0; i < lcnt; ++i) {
81070            /* use llbuf[i] */
81071
81072            dwarf_dealloc(dbg, llbuf[i]->ld_s, DW_DLA_LOC_BLOCK);
81073	    dwarf_dealloc(dbg,llbuf[i], DW_DLA_LOCDESC);
81074        }
81075        dwarf_dealloc(dbg, llbuf, DW_DLA_LIST);
81076}\fP
81077.DE
81078.in -2
81079.P
81080
81081.H 4 "dwarf_loclist()"
81082.DS
81083\f(CWint dwarf_loclist(
81084        Dwarf_Attribute attr,
81085        Dwarf_Locdesc **llbuf,
81086        Dwarf_Signed  *listlen,
81087        Dwarf_Error *error)\fP
81088.DE
81089The function \f(CWdwarf_loclist()\fP sets \f(CW*llbuf\fP to point to
81090a \f(CWDwarf_Locdesc\fP pointer for the single location expression
81091it can return.
81092It sets
81093\f(CW*listlen\fP to 1.
81094and returns \f(CWDW_DLV_OK\fP
81095if the attribute is
81096appropriate.
81097.P
81098It is less flexible than \f(CWdwarf_loclist_n()\fP in that
81099\f(CWdwarf_loclist()\fP can handle a maximum of one
81100location expression, not a full location list.
81101If a location-list is present it returns only
81102the first location-list entry location description.
81103Use \f(CWdwarf_loclist_n()\fP instead.
81104.P
81105It returns \f(CWDW_DLV_ERROR\fP on error.
81106\f(CWdwarf_loclist()\fP works on \f(CWDW_AT_location\fP,
81107\f(CWDW_AT_data_member_location\fP, \f(CWDW_AT_vtable_elem_location\fP,
81108\f(CWDW_AT_string_length\fP, \f(CWDW_AT_use_location\fP, and
81109\f(CWDW_AT_return_addr\fP attributes.
81110.P
81111Storage allocated by a successful call of \f(CWdwarf_loclist()\fP should
81112be deallocated when no longer of interest (see \f(CWdwarf_dealloc()\fP).
81113The block of \f(CWDwarf_Loc\fP structs pointed to by the \f(CWld_s\fP
81114field of each \f(CWDwarf_Locdesc\fP structure
81115should be deallocated with the allocation type \f(CWDW_DLA_LOC_BLOCK\fP.
81116This should be followed by deallocation of the \f(CWllbuf\fP
81117using the allocation type \f(CWDW_DLA_LOCDESC\fP.
81118.in +2
81119.DS
81120\f(CWDwarf_Signed lcnt;
81121Dwarf_Locdesc *llbuf;
81122int lres;
81123
81124if ((lres = dwarf_loclist(someattr, &llbuf,&lcnt &error)) == DW_DLV_OK) {
81125	/* lcnt is always 1, (and has always been 1) */ */
81126	/* use llbuf */
81127
81128        dwarf_dealloc(dbg, llbuf->ld_s, DW_DLA_LOC_BLOCK);
81129        dwarf_dealloc(dbg, llbuf, DW_DLA_LOCDESC);
81130/*      Earlier version. It works because lcnt is always 1.
81131*         for (i = 0; i < lcnt; ++i) {
81132*             /* use llbuf[i] */
81133*
81134*             /* Deallocate Dwarf_Loc block of llbuf[i] */
81135*             dwarf_dealloc(dbg, llbuf[i].ld_s, DW_DLA_LOC_BLOCK);
81136*         }
81137*         dwarf_dealloc(dbg, llbuf, DW_DLA_LOCDESC);
81138*/
81139
81140}\fP
81141.DE
81142.in -2
81143.P
81144
81145.P
81146.H 2 "Line Number Operations"
81147These functions are concerned with accessing line number entries,
81148mapping debugging information entry objects to their corresponding
81149source lines, and providing a mechanism for obtaining information
81150about line number entries.  Although, the interface talks of "lines"
81151what is really meant is "statements".  In case there is more than
81152one statement on the same line, there will be at least one descriptor
81153per statement, all with the same line number.  If column number is
81154also being represented they will have the column numbers of the start
81155of the statements also represented.
81156.P
81157There can also be more than one Dwarf_Line per statement.
81158For example, if a file is preprocessed by a language translator,
81159this could result in translator output showing 2 or more sets of line
81160numbers per translated line of output.
81161
81162.H 3 "Get A Set of Lines"
81163The function returns information about every source line for a
81164particular compilation-unit.
81165The compilation-unit is specified
81166by the corresponding die.
81167.H 4 "dwarf_srclines()"
81168.DS
81169\f(CWint dwarf_srclines(
81170        Dwarf_Die die,
81171        Dwarf_Line **linebuf,
81172	Dwarf_Signed *linecount,
81173        Dwarf_Error *error)\fP
81174.DE
81175The function \f(CWdwarf_srclines()\fP places all line number descriptors
81176for a single compilation unit into a single block, sets \f(CW*linebuf\fP
81177to point to that block,
81178sets \f(CW*linecount\fP to the number of descriptors in this block
81179and returns \f(CWDW_DLV_OK\fP.
81180The compilation-unit is indicated by the given \f(CWdie\fP which must be
81181a compilation-unit die.
81182It returns \f(CWDW_DLV_ERROR\fP on error.
81183On
81184successful return, each line number information structure pointed to by
81185an entry in the block should be free'd using \f(CWdwarf_dealloc()\fP with
81186the allocation type \f(CWDW_DLA_LINE\fP when no longer of interest.  Also
81187the block of descriptors itself should be free'd using \f(CWdwarf_dealloc()\fP
81188with the allocation type \f(CWDW_DLA_LIST\fP when no longer of interest.
81189.P
81190.in +2
81191.DS
81192\f(CWDwarf_Signed cnt;
81193Dwarf_Line *linebuf;
81194int sres;
81195
81196if ((sres = dwarf_srclines(somedie, &linebuf,&cnt, &error)) == DW_DLV_OK) {
81197
81198        for (i = 0; i < cnt; ++i) {
81199                /* use linebuf[i] */
81200                dwarf_dealloc(dbg, linebuf[i], DW_DLA_LINE);
81201        }
81202        dwarf_dealloc(dbg, linebuf, DW_DLA_LIST);
81203}\fP
81204.DE
81205.in -2
81206
81207.H 3 "Get the set of Source File Names"
81208
81209The function returns the names of the source files that have contributed
81210to the compilation-unit represented by the given DIE.  Only the source
81211files named in the statement program prologue are returned.
81212
81213
81214.DS
81215\f(CWint dwarf_srcfiles(
81216        Dwarf_Die die,
81217        char ***srcfiles,
81218        Dwarf_Signed *srccount,
81219        Dwarf_Error *error)\fP
81220.DE
81221When it succeeds
81222\f(CWdwarf_srcfiles()\fP returns
81223\f(CWDW_DLV_OK\fP
81224and
81225puts
81226the number of source
81227files named in the statement program prologue indicated by the given
81228\f(CWdie\fP
81229into \f(CW*srccount\fP.
81230Source files defined in the statement program are ignored.
81231The given \f(CWdie\fP should have the tag \f(CWDW_TAG_compile_unit\fP.
81232The location pointed to by \f(CWsrcfiles\fP is set to point to a list
81233of pointers to null-terminated strings that name the source
81234files.
81235On a successful return from this function, each of the
81236strings returned should be individually free'd using \f(CWdwarf_dealloc()\fP
81237with the allocation type \f(CWDW_DLA_STRING\fP when no longer of
81238interest.
81239This should be followed by free-ing the list using
81240\f(CWdwarf_dealloc()\fP with the allocation type \f(CWDW_DLA_LIST\fP.
81241It returns \f(CWDW_DLV_ERROR\fP on error.
81242It returns \f(CWDW_DLV_NO_ENTRY\fP
81243if there is no
81244corresponding statement program (i.e., if there is no line information).
81245.in +2
81246.DS
81247\f(CWDwarf_Signed cnt;
81248char **srcfiles;
81249int res;
81250
81251if ((res = dwarf_srcfiles(somedie, &srcfiles,&cnt &error)) == DW_DLV_OK) {
81252
81253        for (i = 0; i < cnt; ++i) {
81254                /* use srcfiles[i] */
81255                dwarf_dealloc(dbg, srcfiles[i], DW_DLA_STRING);
81256        }
81257        dwarf_dealloc(dbg, srcfiles, DW_DLA_LIST);
81258}\fP
81259.DE
81260.in -2
81261.H 3 "Get information about a Single Table Line"
81262The following functions can be used on the \f(CWDwarf_Line\fP descriptors
81263returned by \f(CWdwarf_srclines()\fP to obtain information about the
81264source lines.
81265
81266.H 4 "dwarf_linebeginstatement()"
81267.DS
81268\f(CWint dwarf_linebeginstatement(
81269        Dwarf_Line line,
81270	Dwarf_Bool *return_bool,
81271        Dwarf_Error *error)\fP
81272.DE
81273The function \f(CWdwarf_linebeginstatement()\fP returns
81274\f(CWDW_DLV_OK\fP and sets \f(CW*return_bool\fP
81275to
81276\fInon-zero\fP
81277(if \f(CWline\fP represents a line number entry that is marked as
81278beginning a statement).
81279or
81280\fIzero\fP ((if \f(CWline\fP represents a line number entry
81281that is not marked as beginning a statement).
81282It returns \f(CWDW_DLV_ERROR\fP on error.
81283It never returns \f(CWDW_DLV_NO_ENTRY\fP.
81284
81285.P
81286.H 4 "dwarf_lineendsequence()"
81287.DS
81288\f(CWint dwarf_lineendsequence(
81289	Dwarf_Line line,
81290	Dwarf_Bool *return_bool,
81291	Dwarf_Error *error)\fP
81292.DE
81293The function \f(CWdwarf_lineendsequence()\fP returns
81294\f(CWDW_DLV_OK\fP and sets \f(CW*return_bool\fP
81295\fInon-zero\fP
81296if \f(CWline\fP represents a line number entry that is marked as
81297ending a text sequence)
81298or
81299\fIzero\fP ((if \f(CWline\fP represents a line number entry
81300that is not marked as ending a text sequence).
81301It returns \f(CWDW_DLV_ERROR\fP on error.
81302It never returns \f(CWDW_DLV_NO_ENTRY\fP.
81303
81304.P
81305.H 4 "dwarf_lineno()"
81306.DS
81307\f(CWint dwarf_lineno(
81308        Dwarf_Line       line,
81309	Dwarf_Unsigned * returned_lineno,
81310        Dwarf_Error    * error)\fP
81311.DE
81312The function \f(CWdwarf_lineno()\fP returns
81313\f(CWDW_DLV_OK\fP and sets \f(CW*return_lineno\fP to
81314the source statement line
81315number corresponding to the descriptor \f(CWline\fP.
81316It returns \f(CWDW_DLV_ERROR\fP on error.
81317It never returns \f(CWDW_DLV_NO_ENTRY\fP.
81318
81319.P
81320.H 4 "dwarf_lineaddr()"
81321.DS
81322\f(CWint dwarf_lineaddr(
81323        Dwarf_Line   line,
81324	Dwarf_Addr  *return_lineaddr,
81325        Dwarf_Error *error)\fP
81326.DE
81327The function \f(CWdwarf_lineaddr()\fP returns
81328\f(CWDW_DLV_OK\fP and sets \f(CW*return_lineaddr\fP to
81329the address associated
81330with the descriptor \f(CWline\fP.
81331It returns \f(CWDW_DLV_ERROR\fP  on error.
81332It never returns \f(CWDW_DLV_NO_ENTRY\fP.
81333
81334.P
81335.H 4 "dwarf_lineoff()"
81336.DS
81337\f(CWint dwarf_lineoff(
81338        Dwarf_Line line,
81339	Dwarf_Signed   * return_lineoff,
81340        Dwarf_Error *error)\fP
81341.DE
81342The function \f(CWdwarf_lineoff()\fP returns
81343\f(CWDW_DLV_OK\fP and sets \f(CW*return_lineoff\fP to
81344the column number at which
81345the statement represented by \f(CWline\fP begins.
81346It sets \f(CWreturn_lineoff\fP to \fI-1\fP
81347if the column number of the statement is not represented
81348(meaning the producer library call was given zero
81349as the column number).
81350.P
81351On error it returns \f(CWDW_DLV_ERROR\fP.
81352It never returns \f(CWDW_DLV_NO_ENTRY\fP.
81353
81354.H 4 "dwarf_linesrc()"
81355.DS
81356\f(CWint dwarf_linesrc(
81357        Dwarf_Line line,
81358	char  **   return_linesrc,
81359        Dwarf_Error *error)\fP
81360.DE
81361The function \f(CWdwarf_linesrc()\fP returns
81362\f(CWDW_DLV_OK\fP and sets \f(CW*return_linesrc\fP to
81363a pointer to a
81364null-terminated string of characters that represents the name of the
81365source-file where \f(CWline\fP occurs.
81366It returns \f(CWDW_DLV_ERROR\fP on
81367error.
81368.P
81369If the applicable file name in the line table Statement Program Prolog
81370does not start with a '/' character
81371the string in \f(CWDW_AT_comp_dir\fP (if applicable and present)
81372or the applicable
81373directory name from the line Statement Program Prolog
81374is prepended to the
81375file name in the line table Statement Program Prolog
81376to make a full path.
81377.P
81378The storage pointed to by a successful return of
81379\f(CWdwarf_linesrc()\fP should be free'd using \f(CWdwarf_dealloc()\fP with
81380the allocation type \f(CWDW_DLA_STRING\fP when no longer of interest.
81381It never returns \f(CWDW_DLV_NO_ENTRY\fP.
81382
81383.H 4 "dwarf_lineblock()"
81384.DS
81385\f(CWint dwarf_lineblock(
81386        Dwarf_Line line,
81387	Dwarf_Bool *return_bool,
81388        Dwarf_Error *error)\fP
81389.DE
81390The function
81391\f(CWdwarf_lineblock()\fP returns
81392\f(CWDW_DLV_OK\fP and sets \f(CW*return_linesrc\fP to
81393non-zero (i.e. true)(if the line is marked as
81394beginning a basic block)
81395or zero (i.e. false) (if the line is marked as not
81396beginning a basic block).
81397It returns \f(CWDW_DLV_ERROR\fP on error.
81398It never returns \f(CWDW_DLV_NO_ENTRY\fP.
81399
81400.\"#if 0
81401.\".H 3 "Finding a Line Given A PC value"
81402.\"This is a 'higher level' (High-level) interface to line information.
81403.\"
81404.\".DS
81405.\"\f(CWint dwarf_pclines(
81406.\"        Dwarf_Debug dbg,
81407.\"        Dwarf_Addr pc,
81408.\"        Dwarf_Line **linebuf,
81409.\"        Dwarf_Signed slide,
81410.\"        Dwarf_Signed *linecount,
81411.\"        Dwarf_Error *error)\fP
81412.\".DE
81413.\"The function \f(CWdwarf_pclines()\fP places all line number descriptors
81414.\"that correspond to the value of \f(CWpc\fP into a single block and sets
81415.\"\f(CWlinebuf\fP to point to that block.  A count of the number of
81416.\"\f(CWDwarf_Line\fP descriptors that are in this block is returned.  For
81417.\"most cases, the count returned will be \fIone\fP, though it may be higher
81418.\"if optimizations such as common subexpression elimination result in multiple
81419.\"line number entries for a given value of \f(CWpc\fP.  The \f(CWslide\fP
81420.\"argument specifies the direction to search for the nearest line number
81421.\"entry in the event that there is no line number entry that contains an
81422.\"exact match for \f(CWpc\fP.  This argument may be one of:
81423.\"\f(CWDLS_BACKWARD\fP, \f(CWDLS_NOSLIDE\fP, \f(CWDLS_FORWARD\fP.
81424.\"\f(CWDW_DLV_NOCOUNT\fP is returned on error.  On successful return, each
81425.\"line information structure pointed to by an entry in the block should be
81426.\"free'd using \f(CWdwarf_dealloc()\fP with the allocation type
81427.\"\f(CWDW_DLA_LINE\fP when no longer of interest.  The block itself should
81428.\"be free'd using \f(CWdwarf_dealloc()\fP with the allocation type
81429.\"\f(CWDW_DLA_LIST\fP when no longer of interest.
81430.\"#endif
81431
81432.H 2 "Global Name Space Operations"
81433These operations operate on the .debug_pubnames section of the debugging
81434information.
81435
81436.H 3 "Debugger Interface Operations"
81437
81438.H 4 "dwarf_get_globals()"
81439.DS
81440\f(CWint dwarf_get_globals(
81441        Dwarf_Debug dbg,
81442        Dwarf_Global **globals,
81443        Dwarf_Signed * return_count,
81444        Dwarf_Error *error)\fP
81445.DE
81446The function \f(CWdwarf_get_globals()\fP returns
81447\f(CWDW_DLV_OK\fP and sets \f(CW*return_count\fP to
81448the count of pubnames
81449represented in the section containing pubnames i.e. .debug_pubnames.
81450It also stores at \f(CW*globals\fP, a pointer
81451to a list of \f(CWDwarf_Global\fP descriptors, one for each of the
81452pubnames in the .debug_pubnames section.
81453It returns \f(CWDW_DLV_ERROR\fP on error.
81454It returns \f(CWDW_DLV_NO_ENTRY\fP if the .debug_pubnames
81455section does not exist.
81456
81457On a successful return from
81458this function, the \f(CWDwarf_Global\fP descriptors should be individually
81459free'd using \f(CWdwarf_dealloc()\fP with the allocation type
81460\f(CWDW_DLA_GLOBAL\fP, followed by the deallocation of the list itself
81461with the allocation type \f(CWDW_DLA_LIST\fP when the descriptors are
81462no longer of interest.
81463
81464.in +2
81465.DS
81466\f(CWDwarf_Signed cnt;
81467Dwarf_Global *globs;
81468int res;
81469
81470if ((res = dwarf_get_globals(dbg, &globs,&cnt, &error)) == DW_DLV_OK) {
81471
81472        for (i = 0; i < cnt; ++i) {
81473                /* use globs[i] */
81474                dwarf_dealloc(dbg, globs[i], DW_DLA_GLOBAL);
81475        }
81476        dwarf_dealloc(dbg, globs, DW_DLA_LIST);
81477}\fP
81478.DE
81479.in -2
81480
81481.H 4 "dwarf_globname()"
81482.DS
81483\f(CWint dwarf_globname(
81484        Dwarf_Global global,
81485        char **      return_name,
81486        Dwarf_Error *error)\fP
81487.DE
81488The function \f(CWdwarf_globname()\fP returns
81489\f(CWDW_DLV_OK\fP and sets \f(CW*return_name\fP to
81490a pointer to a
81491null-terminated string that names the pubname represented by the
81492\f(CWDwarf_Global\fP descriptor, \f(CWglobal\fP.
81493It returns \f(CWDW_DLV_ERROR\fP on error.
81494On a successful return from this function, the string should
81495be free'd using \f(CWdwarf_dealloc()\fP, with the allocation type
81496\f(CWDW_DLA_STRING\fP when no longer of interest.
81497It never returns \f(CWDW_DLV_NO_ENTRY\fP.
81498
81499.H 4 "dwarf_global_die_offset()"
81500.DS
81501\f(CWint dwarf_global_die_offset(
81502        Dwarf_Global global,
81503	Dwarf_Off   *return_offset,
81504        Dwarf_Error *error)\fP
81505.DE
81506The function \f(CWdwarf_global_die_offset()\fP returns
81507\f(CWDW_DLV_OK\fP and sets \f(CW*return_offset\fP to
81508the offset in
81509the section containing DIE's, i.e. .debug_info, of the DIE representing
81510the pubname that is described by the \f(CWDwarf_Global\fP descriptor,
81511\f(CWglob\fP.
81512It returns \f(CWDW_DLV_ERROR\fP on error.
81513It never returns \f(CWDW_DLV_NO_ENTRY\fP.
81514
81515.H 4 "dwarf_global_cu_offset()"
81516.DS
81517\f(CWint dwarf_global_cu_offset(
81518        Dwarf_Global global,
81519	Dwarf_Off   *return_offset,
81520        Dwarf_Error *error)\fP
81521.DE
81522The function \f(CWdwarf_global_cu_offset()\fP returns
81523\f(CWDW_DLV_OK\fP and sets \f(CW*return_offset\fP to
81524the offset in
81525the section containing DIE's, i.e. .debug_info, of the compilation-unit
81526header of the compilation-unit that contains the pubname described
81527by the \f(CWDwarf_Global\fP descriptor, \f(CWglobal\fP.
81528It returns \f(CWDW_DLV_ERROR\fP on error.
81529It never returns \f(CWDW_DLV_NO_ENTRY\fP.
81530
81531.H 4 "dwarf_get_cu_die_offset_given_cu_header_offset()"
81532.DS
81533\f(CWint dwarf_get_cu_die_offset_given_cu_header_offset(
81534	Dwarf_Debug dbg,
81535	Dwarf_Off   in_cu_header_offset,
81536        Dwarf_Off * out_cu_die_offset,
81537        Dwarf_Error *error)\fP
81538.DE
81539The function \f(CWdwarf_get_cu_die_offset_given_cu_header_offset()\fP
81540returns
81541\f(CWDW_DLV_OK\fP and sets \f(CW*out_cu_die_offset\fP to
81542the offset of the compilation-unit DIE given the
81543offset \f(CWin_cu_header_offset\fP of a compilation-unit header.
81544It returns \f(CWDW_DLV_ERROR\fP on error.
81545It never returns \f(CWDW_DLV_NO_ENTRY\fP.
81546
81547
81548This effectively turns a compilation-unit-header offset
81549into a compilation-unit DIE offset (by adding the
81550size of the applicable CU header).
81551This function is also sometimes useful with the
81552\f(CWdwarf_weak_cu_offset()\fP,
81553\f(CWdwarf_func_cu_offset()\fP,
81554\f(CWdwarf_type_cu_offset()\fP,
81555and
81556\f(CWint dwarf_var_cu_offset()\fP
81557functions.
81558
81559\f(CWdwarf_get_cu_die_offset_given_cu_header_offset()\fP
81560added Rev 1.45, June, 2001.
81561
81562This function is declared as 'optional' in libdwarf.h
81563on IRIX systems so the _MIPS_SYMBOL_PRESENT
81564predicate may be used at run time to determine if the version of
81565libdwarf linked into an application has this function.
81566
81567.H 4 "dwarf_global_name_offsets()"
81568.DS
81569\f(CWint dwarf_global_name_offsets(
81570        Dwarf_Global global,
81571        char     **return_name,
81572        Dwarf_Off *die_offset,
81573        Dwarf_Off *cu_offset,
81574        Dwarf_Error *error)\fP
81575.DE
81576The function \f(CWdwarf_global_name_offsets()\fP returns
81577\f(CWDW_DLV_OK\fP and sets \f(CW*return_name\fP to
81578a pointer to
81579a null-terminated string that gives the name of the pubname
81580described by the \f(CWDwarf_Global\fP descriptor \f(CWglobal\fP.
81581It returns \f(CWDW_DLV_ERROR\fP on error.
81582It never returns \f(CWDW_DLV_NO_ENTRY\fP.
81583It also returns in the locations
81584pointed to by \f(CWdie_offset\fP, and \f(CWcu_offset\fP, the offsets
81585of the DIE representing the
81586pubname, and the DIE
81587representing the compilation-unit containing the
81588pubname, respectively.
81589On a
81590successful return from \f(CWdwarf_global_name_offsets()\fP the storage
81591pointed to by \f(CWreturn_name\fP
81592should be free'd using \f(CWdwarf_dealloc()\fP,
81593with the allocation type \f(CWDW_DLA_STRING\fP when no longer of interest.
81594
81595.H 2 "Weak Name Space Operations"
81596These operations operate on the .debug_weaknames section of the debugging
81597information.
81598.P
81599These operations are SGI specific, not part of standard DWARF.
81600.P
81601
81602.H 3 "Debugger Interface Operations"
81603
81604.H 4 "dwarf_get_weaks()"
81605.DS
81606\f(CWint dwarf_get_weaks(
81607        Dwarf_Debug dbg,
81608        Dwarf_Weak **weaks,
81609	Dwarf_Signed *weak_count,
81610        Dwarf_Error *error)\fP
81611.DE
81612The function \f(CWdwarf_get_weaks()\fP returns
81613\f(CWDW_DLV_OK\fP and sets \f(CW*weak_count\fP to
81614the count of weak names
81615represented in the section containing weak names i.e. .debug_weaknames.
81616It returns \f(CWDW_DLV_ERROR\fP on error.
81617It returns \f(CWDW_DLV_NO_ENTRY\fP if the section does not exist.
81618It also stores in \f(CW*weaks\fP, a pointer to
81619a list of \f(CWDwarf_Weak\fP descriptors, one for each of the weak names
81620in the .debug_weaknames section.
81621On a successful return from this function,
81622the \f(CWDwarf_Weak\fP descriptors should be individually free'd using
81623\f(CWdwarf_dealloc()\fP with the allocation type \f(CWDW_DLA_WEAK\fP,
81624followed by the deallocation of the list itself with the allocation type
81625\f(CWDW_DLA_LIST\fP when the descriptors are no longer of interest.
81626
81627.in +2
81628.DS
81629\f(CWDwarf_Signed cnt;
81630Dwarf_Weak *weaks;
81631int res;
81632
81633if ((res = dwarf_get_weaks(dbg, &weaks,&cnt, &error)) == DW_DLV_OK) {
81634
81635        for (i = 0; i < cnt; ++i) {
81636                /* use weaks[i] */
81637                dwarf_dealloc(dbg, weaks[i], DW_DLA_WEAK);
81638        }
81639        dwarf_dealloc(dbg, weaks, DW_DLA_LIST);
81640}\fP
81641.DE
81642.in -2
81643
81644.H 4 "dwarf_weakname()"
81645.DS
81646\f(CWint dwarf_weakname(
81647        Dwarf_Weak weak,
81648	char    ** return_name,
81649        Dwarf_Error *error)\fP
81650.DE
81651The function \f(CWdwarf_weakname()\fP returns
81652\f(CWDW_DLV_OK\fP and sets \f(CW*return_name\fP to
81653a pointer to a null-terminated
81654string that names the weak name represented by the
81655\f(CWDwarf_Weak\fP descriptor, \f(CWweak\fP.
81656It returns \f(CWDW_DLV_ERROR\fP on error.
81657It never returns \f(CWDW_DLV_NO_ENTRY\fP.
81658On a successful return from this function, the string should
81659be free'd using \f(CWdwarf_dealloc()\fP, with the allocation type
81660\f(CWDW_DLA_STRING\fP when no longer of interest.
81661
81662.DS
81663\f(CWint dwarf_weak_die_offset(
81664        Dwarf_Weak weak,
81665	Dwarf_Off  *return_offset,
81666        Dwarf_Error *error)\fP
81667.DE
81668The function \f(CWdwarf_weak_die_offset()\fP returns
81669\f(CWDW_DLV_OK\fP and sets \f(CW*return_offset\fP to the offset in
81670the section containing DIE's, i.e. .debug_info, of the DIE representing
81671the weak name that is described by the \f(CWDwarf_Weak\fP descriptor,
81672\f(CWweak\fP.
81673It returns \f(CWDW_DLV_ERROR\fP on error.
81674It never returns \f(CWDW_DLV_NO_ENTRY\fP.
81675
81676.H 4 "dwarf_weak_cu_offset()"
81677.DS
81678\f(CWint dwarf_weak_cu_offset(
81679        Dwarf_Weak weak,
81680	Dwarf_Off  *return_offset,
81681        Dwarf_Error *error)\fP
81682.DE
81683The function \f(CWdwarf_weak_cu_offset()\fP returns
81684\f(CWDW_DLV_OK\fP and sets \f(CW*return_offset\fP to the offset in
81685the section containing DIE's, i.e. .debug_info, of the compilation-unit
81686header of the compilation-unit that contains the weak name described
81687by the \f(CWDwarf_Weak\fP descriptor, \f(CWweak\fP.
81688It returns \f(CWDW_DLV_ERROR\fP on error.
81689It never returns \f(CWDW_DLV_NO_ENTRY\fP.
81690
81691.H 4 "dwarf_weak_name_offsets()"
81692.DS
81693\f(CWint dwarf_weak_name_offsets(
81694        Dwarf_Weak weak,
81695	char **  weak_name,
81696        Dwarf_Off *die_offset,
81697        Dwarf_Off *cu_offset,
81698        Dwarf_Error *error)\fP
81699.DE
81700The function \f(CWdwarf_weak_name_offsets()\fP returns
81701\f(CWDW_DLV_OK\fP and sets \f(CW*weak_name\fP to
81702a pointer to
81703a null-terminated string that gives the name of the weak name
81704described by the \f(CWDwarf_Weak\fP descriptor \f(CWweak\fP.
81705It also returns in the locations
81706pointed to by \f(CWdie_offset\fP, and \f(CWcu_offset\fP, the offsets
81707of the DIE representing the
81708weakname, and the DIE
81709representing the compilation-unit containing the
81710weakname, respectively.
81711It returns \f(CWDW_DLV_ERROR\fP on error.
81712It never returns \f(CWDW_DLV_NO_ENTRY\fP.
81713On a
81714successful return from \f(CWdwarf_weak_name_offsets()\fP the storage
81715pointed to by \f(CWweak_name\fP
81716should be free'd using \f(CWdwarf_dealloc()\fP,
81717with the allocation type \f(CWDW_DLA_STRING\fP when no longer of interest.
81718
81719.H 2 "Static Function Names Operations"
81720This section is SGI specific and is not part of standard DWARF version 2.
81721.P
81722These function operate on the .debug_funcnames section of the debugging
81723information.  The .debug_funcnames section contains the names of static
81724functions defined in the object, the offsets of the \f(CWDIE\fPs that
81725represent the definitions of the corresponding functions, and the offsets
81726of the start of the compilation-units that contain the definitions of
81727those functions.
81728
81729.H 3 "Debugger Interface Operations"
81730
81731.H 4 "dwarf_get_funcs()"
81732.DS
81733\f(CWint dwarf_get_funcs(
81734        Dwarf_Debug dbg,
81735        Dwarf_Func **funcs,
81736        Dwarf_Signed *func_count,
81737        Dwarf_Error *error)\fP
81738.DE
81739The function \f(CWdwarf_get_funcs()\fP returns
81740\f(CWDW_DLV_OK\fP and sets \f(CW*func_count\fP to
81741the count of static
81742function names represented in the section containing static function
81743names, i.e. .debug_funcnames.
81744It also
81745stores, at \f(CW*funcs\fP, a pointer to a list of \f(CWDwarf_Func\fP
81746descriptors, one for each of the static functions in the .debug_funcnames
81747section.
81748It returns \f(CWDW_DLV_NOCOUNT\fP on error.
81749It returns \f(CWDW_DLV_NO_ENTRY\fP
81750if the .debug_funcnames section does not exist.
81751On a successful return from this function, the \f(CWDwarf_Func\fP
81752descriptors should be individually free'd using \f(CWdwarf_dealloc()\fP
81753with the allocation type \f(CWDW_DLA_FUNC\fP, followed by the deallocation
81754of the list itself with the allocation type \f(CWDW_DLA_LIST\fP when
81755the descriptors are no longer of interest.
81756
81757.in +2
81758.DS
81759\f(CWDwarf_Signed cnt;
81760Dwarf_Func *funcs;
81761int fres;
81762
81763if ((fres = dwarf_get_funcs(dbg, &funcs, &error)) == DW_DLV_OK) {
81764
81765        for (i = 0; i < cnt; ++i) {
81766                /* use funcs[i] */
81767                dwarf_dealloc(dbg, funcs[i], DW_DLA_FUNC);
81768        }
81769        dwarf_dealloc(dbg, funcs, DW_DLA_LIST);
81770}\fP
81771.DE
81772.in -2
81773
81774.H 4 "dwarf_funcname()"
81775.DS
81776\f(CWint dwarf_funcname(
81777        Dwarf_Func func,
81778        char **    return_name,
81779        Dwarf_Error *error)\fP
81780.DE
81781The function \f(CWdwarf_funcname()\fP returns
81782\f(CWDW_DLV_OK\fP and sets \f(CW*return_name\fP to
81783a pointer to a
81784null-terminated string that names the static function represented by the
81785\f(CWDwarf_Func\fP descriptor, \f(CWfunc\fP.
81786It returns \f(CWDW_DLV_ERROR\fP on error.
81787It never returns \f(CWDW_DLV_NO_ENTRY\fP.
81788On a successful return from this function, the string should
81789be free'd using \f(CWdwarf_dealloc()\fP, with the allocation type
81790\f(CWDW_DLA_STRING\fP when no longer of interest.
81791
81792.H 4 "dwarf_func_die_offset()"
81793.DS
81794\f(CWint dwarf_func_die_offset(
81795        Dwarf_Func func,
81796	Dwarf_Off  *return_offset,
81797        Dwarf_Error *error)\fP
81798.DE
81799The function \f(CWdwarf_func_die_offset()\fP, returns
81800\f(CWDW_DLV_OK\fP and sets \f(CW*return_offset\fP to
81801the offset in
81802the section containing DIE's, i.e. .debug_info, of the DIE representing
81803the static function that is described by the \f(CWDwarf_Func\fP
81804descriptor, \f(CWfunc\fP.
81805It returns \f(CWDW_DLV_ERROR\fP on error.
81806It never returns \f(CWDW_DLV_NO_ENTRY\fP.
81807
81808.H 4 "dwarf_func_cu_offset()"
81809.DS
81810\f(CWint dwarf_func_cu_offset(
81811        Dwarf_Func func,
81812	Dwarf_Off  *return_offset,
81813        Dwarf_Error *error)\fP
81814.DE
81815The function \f(CWdwarf_func_cu_offset()\fP returns
81816\f(CWDW_DLV_OK\fP and sets \f(CW*return_offset\fP to
81817the offset in
81818the section containing DIE's, i.e. .debug_info, of the compilation-unit
81819header of the
81820compilation-unit that contains the static function
81821described by the \f(CWDwarf_Func\fP descriptor, \f(CWfunc\fP.
81822It returns \f(CWDW_DLV_ERROR\fP on error.
81823It never returns \f(CWDW_DLV_NO_ENTRY\fP.
81824
81825.H 4 "dwarf_func_name_offsets()"
81826.DS
81827\f(CWint dwarf_func_name_offsets(
81828        Dwarf_Func func,
81829	char     **func_name,
81830        Dwarf_Off *die_offset,
81831        Dwarf_Off *cu_offset,
81832        Dwarf_Error *error)\fP
81833.DE
81834The function \f(CWdwarf_func_name_offsets()\fP returns
81835\f(CWDW_DLV_OK\fP and sets \f(CW*func_name\fP to
81836a pointer to
81837a null-terminated string that gives the name of the static
81838function described by the \f(CWDwarf_Func\fP descriptor \f(CWfunc\fP.
81839It also returns in the locations
81840pointed to by \f(CWdie_offset\fP, and \f(CWcu_offset\fP, the offsets
81841of the DIE representing the
81842static function, and the DIE
81843representing the compilation-unit containing the
81844static function, respectively.
81845It returns \f(CWDW_DLV_ERROR\fP on error.
81846It never returns \f(CWDW_DLV_NO_ENTRY\fP.
81847On a successful return from \f(CWdwarf_func_name_offsets()\fP
81848the storage pointed to by  \f(CWfunc_name\fP should be free'd using
81849\f(CWdwarf_dealloc()\fP, with the allocation type \f(CWDW_DLA_STRING\fP
81850when no longer of interest.
81851
81852.H 2 "User Defined Type Names Operations"
81853This section is SGI specific and is not part of standard DWARF version 2.
81854.P
81855These functions operate on the .debug_typenames section of the debugging
81856information.  The .debug_typenames section contains the names of file-scope
81857user-defined types, the offsets of the \f(CWDIE\fPs that represent the
81858definitions of those types, and the offsets of the compilation-units
81859that contain the definitions of those types.
81860
81861.H 3 "Debugger Interface Operations"
81862
81863.H 4 "dwarf_get_types()"
81864.DS
81865\f(CWint dwarf_get_types(
81866        Dwarf_Debug dbg,
81867        Dwarf_Type **types,
81868        Dwarf_Signed *typecount,
81869        Dwarf_Error *error)\fP
81870.DE
81871The function \f(CWdwarf_get_types()\fP returns
81872\f(CWDW_DLV_OK\fP and sets \f(CW*typecount\fP to
81873the count of user-defined
81874type names represented in the section containing user-defined type names,
81875i.e. .debug_typenames.
81876It also stores at \f(CW*types\fP,
81877a pointer to a list of \f(CWDwarf_Type\fP descriptors, one for each of the
81878user-defined type names in the .debug_typenames section.
81879It returns \f(CWDW_DLV_NOCOUNT\fP on error.
81880It returns \f(CWDW_DLV_NO_ENTRY\fP if
81881the .debug_typenames section does not exist.
81882On a successful
81883return from this function, the \f(CWDwarf_Type\fP descriptors should be
81884individually free'd using \f(CWdwarf_dealloc()\fP with the allocation type
81885\f(CWDW_DLA_TYPENAME\fP, followed by the deallocation of the list itself
81886with the allocation type \f(CWDW_DLA_LIST\fP when the descriptors are no
81887longer of interest.
81888
81889.in +2
81890.DS
81891\f(CWDwarf_Signed cnt;
81892Dwarf_Type *types;
81893int res;
81894
81895if ((res = dwarf_get_types(dbg, &types,&cnt, &error)) == DW_DLV_OK) {
81896
81897        for (i = 0; i < cnt; ++i) {
81898                /* use types[i] */
81899                dwarf_dealloc(dbg, types[i], DW_DLA_TYPENAME);
81900        }
81901        dwarf_dealloc(dbg, types, DW_DLA_LIST);
81902}\fP
81903.DE
81904.in -2
81905
81906.H 4 "dwarf_typename()"
81907.DS
81908\f(CWint dwarf_typename(
81909        Dwarf_Type   type,
81910        char       **return_name,
81911        Dwarf_Error *error)\fP
81912.DE
81913The function \f(CWdwarf_typename()\fP returns
81914\f(CWDW_DLV_OK\fP and sets \f(CW*return_name\fP to
81915a pointer to a
81916null-terminated string that names the user-defined type represented by the
81917\f(CWDwarf_Type\fP descriptor, \f(CWtype\fP.
81918It returns \f(CWDW_DLV_ERROR\fP on error.
81919It never returns \f(CWDW_DLV_NO_ENTRY\fP.
81920On a successful return from this function, the string should
81921be free'd using \f(CWdwarf_dealloc()\fP, with the allocation type
81922\f(CWDW_DLA_STRING\fP when no longer of interest.
81923
81924.H 4 "dwarf_type_die_offset()"
81925.DS
81926\f(CWint dwarf_type_die_offset(
81927        Dwarf_Type type,
81928        Dwarf_Off  *return_offset,
81929        Dwarf_Error *error)\fP
81930.DE
81931The function \f(CWdwarf_type_die_offset()\fP returns
81932\f(CWDW_DLV_OK\fP and sets \f(CW*return_offset\fP to
81933the offset in
81934the section containing DIE's, i.e. .debug_info, of the DIE representing
81935the user-defined type that is described by the \f(CWDwarf_Type\fP
81936descriptor, \f(CWtype\fP.
81937It returns \f(CWDW_DLV_ERROR\fP on error.
81938It never returns \f(CWDW_DLV_NO_ENTRY\fP.
81939
81940.H 4 "dwarf_type_cu_offset()"
81941.DS
81942\f(CWint dwarf_type_cu_offset(
81943        Dwarf_Type type,
81944        Dwarf_Off  *return_offset,
81945        Dwarf_Error *error)\fP
81946.DE
81947The function \f(CWdwarf_type_cu_offset()\fP returns
81948\f(CWDW_DLV_OK\fP and sets \f(CW*return_offset\fP to
81949the offset in
81950the section containing DIE's, i.e. .debug_info, of the compilation-unit
81951header of the compilation-unit that contains the user-defined type
81952described by the \f(CWDwarf_Type\fP descriptor, \f(CWtype\fP.
81953It returns \f(CWDW_DLV_ERROR\fP on error.
81954It never returns \f(CWDW_DLV_NO_ENTRY\fP.
81955
81956.H 4 "dwarf_type_name_offsets()"
81957.DS
81958\f(CWint dwarf_type_name_offsets(
81959        Dwarf_Type   type,
81960        char      ** returned_name,
81961        Dwarf_Off *  die_offset,
81962        Dwarf_Off *  cu_offset,
81963        Dwarf_Error *error)\fP
81964.DE
81965The function \f(CWdwarf_type_name_offsets()\fP returns
81966\f(CWDW_DLV_OK\fP and sets \f(CW*returned_name\fP to
81967a pointer to
81968a null-terminated string that gives the name of the user-defined
81969type described by the \f(CWDwarf_Type\fP descriptor \f(CWtype\fP.
81970It also returns in the locations
81971pointed to by \f(CWdie_offset\fP, and \f(CWcu_offset\fP, the offsets
81972of the DIE representing the
81973user-defined type, and the DIE
81974representing the compilation-unit containing the
81975user-defined type, respectively.
81976It returns \f(CWDW_DLV_ERROR\fP on error.
81977It never returns \f(CWDW_DLV_NO_ENTRY\fP.
81978On a successful return from \f(CWdwarf_type_name_offsets()\fP
81979the storage pointed to by \f(CWreturned_name\fP should
81980be free'd using
81981\f(CWdwarf_dealloc()\fP, with the allocation type \f(CWDW_DLA_STRING\fP
81982when no longer of interest.
81983
81984
81985.H 2 "User Defined Static Variable Names Operations"
81986This section is SGI specific and is not part of standard DWARF version 2.
81987.P
81988These functions operate on the .debug_varnames section of the debugging
81989information.  The .debug_varnames section contains the names of file-scope
81990static variables, the offsets of the \f(CWDIE\fPs that represent the
81991definitions of those variables, and the offsets of the compilation-units
81992that contain the definitions of those variables.
81993.P
81994
81995.H 3 "Debugger Interface Operations"
81996
81997.H 4 "dwarf_get_vars()"
81998
81999.DS
82000\f(CWint dwarf_get_vars(
82001        Dwarf_Debug dbg,
82002        Dwarf_Var **vars,
82003        Dwarf_Signed *var_count,
82004        Dwarf_Error *error)\fP
82005.DE
82006The function \f(CWdwarf_get_vars()\fP returns
82007\f(CWDW_DLV_OK\fP and sets \f(CW*var_count\fP to
82008the count of file-scope
82009static variable names represented in the section containing file-scope
82010static variable names, i.e. .debug_varnames.
82011It also stores, at \f(CW*vars\fP, a pointer to a list of
82012\f(CWDwarf_Var\fP descriptors, one for each of the file-scope static
82013variable names in the .debug_varnames section.
82014It returns \f(CWDW_DLV_ERROR\fP on error.
82015It returns \f(CWDW_DLV_NO_ENTRY\fP if the .debug_varnames section does
82016not exist.
82017On a successful return
82018from this function, the \f(CWDwarf_Var\fP descriptors should be individually
82019free'd using \f(CWdwarf_dealloc()\fP with the allocation type
82020\f(CWDW_DLA_VAR\fP, followed by the deallocation of the list itself with
82021the allocation type \f(CWDW_DLA_LIST\fP when the descriptors are no
82022longer of interest.
82023
82024.in +2
82025.DS
82026\f(CWDwarf_Signed cnt;
82027Dwarf_Var *vars;
82028int res;
82029
82030if ((res = dwarf_get_vars(dbg, &vars,&cnt &error)) == DW_DLV_OK) {
82031
82032        for (i = 0; i < cnt; ++i) {
82033                /* use vars[i] */
82034                dwarf_dealloc(dbg, vars[i], DW_DLA_VAR);
82035        }
82036        dwarf_dealloc(dbg, vars, DW_DLA_LIST);
82037}\fP
82038.DE
82039.in -2
82040
82041.H 4 "dwarf_varname()"
82042.DS
82043\f(CWint dwarf_varname(
82044        Dwarf_Var var,
82045        char **    returned_name,
82046        Dwarf_Error *error)\fP
82047.DE
82048The function \f(CWdwarf_varname()\fP returns
82049\f(CWDW_DLV_OK\fP and sets \f(CW*returned_name\fP to
82050a pointer to a
82051null-terminated string that names the file-scope static variable represented
82052by the \f(CWDwarf_Var\fP descriptor, \f(CWvar\fP.
82053It returns \f(CWDW_DLV_ERROR\fP on error.
82054It never returns \f(CWDW_DLV_NO_ENTRY\fP.
82055On a successful return from this function, the string should
82056be free'd using \f(CWdwarf_dealloc()\fP, with the allocation type
82057\f(CWDW_DLA_STRING\fP when no longer of interest.
82058
82059.H 4 "dwarf_var_die_offset()"
82060.DS
82061\f(CWint dwarf_var_die_offset(
82062        Dwarf_Var    var,
82063        Dwarf_Off   *returned_offset,
82064        Dwarf_Error *error)\fP
82065.DE
82066The function \f(CWdwarf_var_die_offset()\fP returns
82067\f(CWDW_DLV_OK\fP and sets \f(CW*returned_offset\fP to
82068the offset in
82069the section containing DIE's, i.e. .debug_info, of the DIE representing
82070the file-scope static variable that is described by the \f(CWDwarf_Var\fP
82071descriptor, \f(CWvar\fP.
82072It returns \f(CWDW_DLV_ERROR\fP on error.
82073It never returns \f(CWDW_DLV_NO_ENTRY\fP.
82074
82075.H 4 "dwarf_var_cu_offset()"
82076.DS
82077\f(CWint dwarf_var_cu_offset(
82078        Dwarf_Var var,
82079        Dwarf_Off   *returned_offset,
82080        Dwarf_Error *error)\fP
82081.DE
82082The function \f(CWdwarf_var_cu_offset()\fP returns
82083\f(CWDW_DLV_OK\fP and sets \f(CW*returned_offset\fP to
82084the offset in
82085the section containing DIE's, i.e. .debug_info, of the compilation-unit
82086header of the compilation-unit that contains the file-scope static
82087variable described by the \f(CWDwarf_Var\fP descriptor, \f(CWvar\fP.
82088It returns \f(CWDW_DLV_ERROR\fP on error.
82089It never returns \f(CWDW_DLV_NO_ENTRY\fP.
82090
82091.H 4 "dwarf_var_name_offsets()"
82092.DS
82093\f(CWint dwarf_var_name_offsets(
82094        Dwarf_Var var,
82095	char     **returned_name,
82096        Dwarf_Off *die_offset,
82097        Dwarf_Off *cu_offset,
82098        Dwarf_Error *error)\fP
82099.DE
82100The function \f(CWdwarf_var_name_offsets()\fP returns
82101\f(CWDW_DLV_OK\fP and sets \f(CW*returned_name\fP to
82102a pointer to
82103a null-terminated string that gives the name of the file-scope
82104static variable described by the \f(CWDwarf_Var\fP descriptor \f(CWvar\fP.
82105It also returns in the locations
82106pointed to by \f(CWdie_offset\fP, and \f(CWcu_offset\fP, the offsets
82107of the DIE representing the
82108file-scope static variable, and the DIE
82109representing the compilation-unit containing the
82110file-scope static variable, respectively.
82111It returns \f(CWDW_DLV_ERROR\fP on error.
82112It never returns \f(CWDW_DLV_NO_ENTRY\fP.
82113On a successful return from
82114\f(CWdwarf_var_name_offsets()\fP the storage pointed to by
82115\f(CWreturned_name\fP
82116should be free'd using \f(CWdwarf_dealloc()\fP, with the allocation
82117type \f(CWDW_DLA_STRING\fP when no longer of interest.
82118
82119.H 2 "Macro Information Operations"
82120.H 3 "General Macro Operations"
82121.H 4 "dwarf_find_macro_value_start()"
82122.DS
82123\f(CWchar *dwarf_find_macro_value_start(char * macro_string);\fP
82124.DE
82125Given a macro string in the standard form defined in the DWARF
82126document ("name <space> value" or "name(args)<space>value")
82127this returns a pointer to the first byte of the macro value.
82128It does not alter the string pointed to by macro_string or copy
82129the string: it returns a pointer into the string whose
82130address was passed in.
82131.H 3 "Debugger Interface Macro Operations"
82132Macro information is accessed from the .debug_info section via the
82133DW_AT_macro_info attribute (whose value is an offset into .debug_macinfo).
82134.P
82135No Functions yet defined.
82136.H 3 "Low Level Macro Information Operations"
82137.H 4 "dwarf_get_macro_details()"
82138.DS
82139\f(CWint dwarf_get_macro_details(Dwarf_Debug /*dbg*/,
82140  Dwarf_Off              macro_offset,
82141  Dwarf_Unsigned         maximum_count,
82142  Dwarf_Signed         * entry_count,
82143  Dwarf_Macro_Details ** details,
82144  Dwarf_Error *          err);\fP
82145.DE
82146\f(CWdwarf_get_macro_details()\fP
82147returns
82148\f(CWDW_DLV_OK\fP and sets
82149\f(CWentry_count\fP to the number of \f(CWdetails\fP records
82150returned through the \f(CWdetails\fP pointer.
82151The data returned thru  \f(CWdetails\fP should be freed
82152by a call to \f(CWdwarf_dealloc()\fP with the allocation type
82153\f(CWDW_DLA_STRING\fP.
82154If \f(CWDW_DLV_OK\fP is returned, the \f(CWentry_count\fP will
82155be at least 1, since
82156a compilation unit with macro information but no macros will
82157have at least one macro data byte of 0.
82158.P
82159\f(CWdwarf_get_macro_details()\fP
82160begins at the \f(CWmacro_offset\fP offset you supply
82161and ends at the end of a compilation unit or at \f(CWmaximum_count\fP
82162detail records (whichever comes first).
82163If \f(CWmaximum_count\fP is 0, it is treated as if it were the maximum
82164possible unsigned integer.
82165.P
82166\f(CWdwarf_get_macro_details()\fP
82167attempts to set \f(CWdmd_fileindex\fP to the correct file in every
82168\f(CWdetails\fP record. If it is unable to do so (or whenever
82169the current file index is unknown, it sets \f(CWdmd_fileindex\fP
82170to -1.
82171.P
82172\f(CWdwarf_get_macro_details()\fP returns \f(CWDW_DLV_ERROR\fP on error.
82173It returns \f(CWDW_DLV_NO_ENTRY\fP if there is no more
82174macro information at that \f(CWmacro_offset\fP. If \f(CWmacro_offset\fP
82175is passed in as 0, a \f(CWDW_DLV_NO_ENTRY\fP return means there is
82176no macro information.
82177.P
82178.in +2
82179.DS
82180\f(CWDwarf_Unsigned max = 0;
82181Dwarf_Off cur_off = 0;
82182Dwarf_Signed count = 0;
82183Dwarf_Macro_Details *maclist;
82184int errv;
82185
82186/* loop thru all the compilation units macro info */
82187while((errv = dwarf_macro_details(dbg, cur_off,max,
82188     &count,&maclist,&error))== DW_DLV_OK) {
82189    for (i = 0; i < count; ++i) {
82190      /* use maclist[i] */
82191    }
82192    cur_off = maclist[count-1].dmd_offset + 1;
82193    dwarf_dealloc(dbg, maclist, DW_DLA_STRING);
82194}\fP
82195.DE
82196
82197
82198.H 2 "Low Level Frame Operations"
82199These functions provide information about stack frames to be
82200used to perform stack traces.  The information is an abstraction
82201of a table with a row per instruction and a column per register
82202and a column for the canonical frame address (CFA, which corresponds
82203to the notion of a frame pointer),
82204as well as a column for the return address.
82205Each cell in the table contains one of the following:
82206
82207.AL
82208.LI
82209A register + offset(a)(b)
82210
82211.LI
82212A register(c)(d)
82213
82214.LI
82215A marker (DW_FRAME_UNDEFINED_VAL) meaning \fIregister value undefined\fP
82216
82217.LI
82218A marker (DW_FRAME_SAME_VAL) meaning \fIregister value same as in caller\fP
82219.LE
82220.P
82221(a) When  the column is DW_FRAME_CFA_COL: the register
82222number is a real hardware register, not a reference
82223to DW_FRAME_CFA_COL, not  DW_FRAME_UNDEFINED_VAL,
82224and not DW_FRAME_SAME_VAL.
82225The CFA rule value should be the stack pointer
82226plus offset 0 when no other value makes sense.
82227A value of DW_FRAME_SAME_VAL would
82228be semi-logical, but since the CFA is not a real register,
82229not really correct.
82230A value of DW_FRAME_UNDEFINED_VAL would imply
82231the CFA is undefined  --
82232this seems to be a useless notion, as
82233the CFA is a means to finding real registers,
82234so those real registers should be marked DW_FRAME_UNDEFINED_VAL,
82235and the CFA column content (whatever register it
82236specifies) becomes unreferenced by anything.
82237.P
82238(b) When the column is not DW_FRAME_CFA_COL, the 'register'
82239will and must be DW_FRAME_CFA_COL, implying that
82240to get the final location for the column one must add
82241the offset here plus the DW_FRAME_CFA_COL rule value.
82242.P
82243(c) When the column is DW_FRAME_CFA_COL, then the register
82244number is (must be) a real hardware register .
82245If it were DW_FRAME_UNDEFINED_VAL or DW_FRAME_SAME_VAL
82246it would be a marker, not a register number.
82247.P
82248(d) When the column is not DW_FRAME_CFA_COL, the register
82249may be a hardware register.
82250It will not be DW_FRAME_CFA_COL.
82251.P
82252There is no 'column' for DW_FRAME_UNDEFINED_VAL or DW_FRAME_SAME_VAL.
82253
82254
82255Figure \n(aX
82256is machine dependent and represents MIPS cpu register
82257assignments.
82258
82259.DS
82260.TS
82261center box, tab(:);
82262lfB lfB lfB
82263l c l.
82264NAME:value:PURPOSE
82265_
82266DW_FRAME_CFA_COL:0:column used for CFA
82267DW_FRAME_REG1:1:integer regster 1
82268DW_FRAME_REG2:2:integer register 2
82269---::obvious names and values here
82270DW_FRAME_REG30:30:integer register 30
82271DW_FRAME_REG31:31:integer register 31
82272DW_FRAME_FREG0:32:floating point register 0
82273DW_FRAME_FREG1:33:floating point register 1
82274---::obvious names and values here
82275DW_FRAME_FREG30:62:floating point register 30
82276DW_FRAME_FREG31:63:floating point register 31
82277DW_FRAME_RA_COL:64:column recording ra
82278DW_FRAME_UNDEFINED_VAL:1034:register val undefined
82279DW_FRAME_SAME_VAL:1035:register same as in caller
82280.TE
82281
82282.FG "Frame Information Rule Assignments"
82283.DE
82284
82285.P
82286The following table shows SGI/MIPS specific
82287special cell values: these values mean
82288that the cell has the value \fIundefined\fP or \fIsame value\fP
82289respectively, rather than containing a \fIregister\fP or
82290\fIregister+offset\fP.
82291.P
82292.DS
82293.TS
82294center box, tab(:);
82295lfB lfB lfB
82296l c l.
82297NAME:value:PURPOSE
82298_
82299DW_FRAME_UNDEFINED_VAL:1034:means undefined value.
82300::Not a column or register value
82301DW_FRAME_SAME_VAL:1035:means 'same value' as
82302::caller had. Not a column or
82303::register value
82304.TE
82305.FG "Frame Information Special Values"
82306.DE
82307
82308.\"#if 0
82309.\".P
82310.\"Since the cie and fde entries are not "organized" by anything
82311.\"outside of the .debug_frame section one must scan them all to
82312.\"find all entry addresses and lengths.  Since there is one fde
82313.\"per function this can be a rather long list.
82314.\"#endif
82315
82316.P
82317.H 4 "dwarf_get_fde_list()"
82318.DS
82319\f(CWint dwarf_get_fde_list(
82320        Dwarf_Debug dbg,
82321        Dwarf_Cie **cie_data,
82322        Dwarf_Signed *cie_element_count,
82323        Dwarf_Fde **fde_data,
82324        Dwarf_Signed *fde_element_count,
82325        Dwarf_Error *error);\fP
82326.DE
82327\f(CWdwarf_get_fde_list()\fP stores a pointer to a list of
82328\f(CWDwarf_Cie\fP descriptors in \f(CW*cie_data\fP, and the
82329count of the number of descriptors in \f(CW*cie_element_count\fP.
82330There is a descriptor for each CIE in the .debug_frame section.
82331Similarly, it stores a pointer to a list of \f(CWDwarf_Fde\fP
82332descriptors in \f(CW*fde_data\fP, and the count of the number
82333of descriptors in \f(CW*fde_element_count\fP.  There is one
82334descriptor per FDE in the .debug_frame section.
82335\f(CWdwarf_get_fde_list()\fP  returns \f(CWDW_DLV_EROR\fP on error.
82336It returns \f(CWDW_DLV_NO_ENTRY\fP if it cannot find frame entries.
82337It returns \f(CWDW_DLV_OK\fP on a successful return.
82338
82339On successful return, each of the structures pointed to by a
82340descriptor should be individually free'd using \f(CWdwarf_dealloc()\fP
82341with either the allocation type \f(CWDW_DLA_CIE\fP, or \f(CWDW_DLA_FDE\fP
82342as appropriate when no longer of interest.  Each of the blocks
82343of descriptors should be free'd using \f(CWdwarf_dealloc()\fP with
82344the allocation type \f(CWDW_DLA_LIST\fP when no longer of interest.
82345
82346
82347.in +2
82348.DS
82349\f(CWDwarf_Signed cnt;
82350Dwarf_Cie *cie_data;
82351Dwarf_Signed cie_count;
82352Dwarf_Fde *fde_data;
82353Dwarf_Signed fde_count;
82354int fres;
82355
82356if ((fres = dwarf_get_fde_list(dbg,&cie_data,&cie_count,
82357		&fde_data,&fde_count,&error)) == DW_DLV_OK) {
82358
82359        for (i = 0; i < cie_count; ++i) {
82360                /* use cie[i] */
82361                dwarf_dealloc(dbg, cie_data[i], DW_DLA_CIE);
82362        }
82363        for (i = 0; i < fde_count; ++i) {
82364                /* use fde[i] */
82365                dwarf_dealloc(dbg, fde_data[i], DW_DLA_FDE);
82366        }
82367        dwarf_dealloc(dbg, cie_data, DW_DLA_LIST);
82368        dwarf_dealloc(dbg, fde_data, DW_DLA_LIST);
82369}\fP
82370.DE
82371.in -2
82372
82373.P
82374.H 4 "dwarf_get_fde_list_eh()"
82375.DS
82376\f(CWint dwarf_get_fde_list_eh(
82377        Dwarf_Debug dbg,
82378        Dwarf_Cie **cie_data,
82379        Dwarf_Signed *cie_element_count,
82380        Dwarf_Fde **fde_data,
82381        Dwarf_Signed *fde_element_count,
82382        Dwarf_Error *error);\fP
82383.DE
82384\f(CWdwarf_get_fde_list_eh()\fP is identical to
82385\f(CWdwarf_get_fde_list()\fP except that
82386\f(CWdwarf_get_fde_list_eh()\fP reads the GNU ecgs
82387section named .eh_frame (C++ exception handling information).
82388
82389\f(CWdwarf_get_fde_list_eh()\fP stores a pointer to a list of
82390\f(CWDwarf_Cie\fP descriptors in \f(CW*cie_data\fP, and the
82391count of the number of descriptors in \f(CW*cie_element_count\fP.
82392There is a descriptor for each CIE in the .debug_frame section.
82393Similarly, it stores a pointer to a list of \f(CWDwarf_Fde\fP
82394descriptors in \f(CW*fde_data\fP, and the count of the number
82395of descriptors in \f(CW*fde_element_count\fP.  There is one
82396descriptor per FDE in the .debug_frame section.
82397\f(CWdwarf_get_fde_list()\fP  returns \f(CWDW_DLV_EROR\fP on error.
82398It returns \f(CWDW_DLV_NO_ENTRY\fP if it cannot find
82399exception handling entries.
82400It returns \f(CWDW_DLV_OK\fP on a successful return.
82401
82402On successful return, each of the structures pointed to by a
82403descriptor should be individually free'd using \f(CWdwarf_dealloc()\fP
82404with either the allocation type \f(CWDW_DLA_CIE\fP, or \f(CWDW_DLA_FDE\fP
82405as appropriate when no longer of interest.  Each of the blocks
82406of descriptors should be free'd using \f(CWdwarf_dealloc()\fP with
82407the allocation type \f(CWDW_DLA_LIST\fP when no longer of interest.
82408
82409
82410.P
82411.H 4 "dwarf_get_cie_of_fde()"
82412.DS
82413\f(CWint dwarf_get_cie_of_fde(Dwarf_Fde fde,
82414        Dwarf_Cie *cie_returned,
82415        Dwarf_Error *error);\fP
82416.DE
82417\f(CWdwarf_get_cie_of_fde()\fP stores a \f(CWDwarf_Cie\fP
82418into the  \f(CWDwarf_Cie\fP that \f(CWcie_returned\fP points at.
82419
82420If one has called dwarf_get_fde_list and does not wish
82421to dwarf_dealloc() all the individual FDEs immediately, one
82422must also avoid dwarf_dealloc-ing the CIEs for those FDEs
82423not immediately dealloc'd.
82424Failing to observe this restriction will cause the  FDE(s) not
82425dealloced to become invalid: an FDE contains (hidden in it)
82426a CIE pointer which will be be invalid (stale, pointing to freed memory)
82427if the CIE is dealloc'd.
82428The invalid CIE pointer internal to the FDE cannot be detected
82429as invalid by libdwarf.
82430If one later passes an FDE with a stale internal CIE pointer
82431to one of the routines taking an FDE as input the result will
82432be failure of the call (returning DW_DLV_ERROR) at best and
82433it is possible a coredump or worse will happpen (eventually).
82434
82435
82436\f(CWdwarf_get_cie_of_fde()\fP returns
82437\f(CWDW_DLV_OK\fP if it is successful (it will be
82438unless fde is the NULL pointer).
82439It returns \f(CWDW_DLV_ERROR\fP if the fde is invalid (NULL).
82440
82441.P
82442Each \f(CWDwarf_Fde\fP descriptor describes information about the
82443frame for a particular subroutine or function.
82444
82445\f(CWint dwarf_get_fde_for_die\fP is SGI/MIPS specific.
82446
82447.H 4 "dwarf_get_fde_for_die()"
82448.DS
82449\f(CWint dwarf_get_fde_for_die(
82450        Dwarf_Debug dbg,
82451        Dwarf_Die die,
82452        Dwarf_Fde *  return_fde,
82453        Dwarf_Error *error)\fP
82454.DE
82455When it succeeds,
82456\f(CWdwarf_get_fde_for_die()\fP returns
82457\f(CWDW_DLV_OK\fP and sets \f(CW*return_fde\fP
82458to
82459a \f(CWDwarf_Fde\fP
82460descriptor representing frame information for the given \f(CWdie\fP.  It
82461looks for the \f(CWDW_AT_MIPS_fde\fP attribute in the given \f(CWdie\fP.
82462If it finds it, is uses the value of the attribute as the offset in
82463the .debug_frame section where the FDE begins.
82464If there is no \f(CWDW_AT_MIPS_fde\fP it returns \f(CWDW_DLV_NO_ENTRY\fP.
82465If there is an error it returns \f(CWDW_DLV_ERROR\fP.
82466
82467.H 4 "dwarf_get_fde_range()"
82468.DS
82469\f(CWint dwarf_get_fde_range(
82470        Dwarf_Fde fde,
82471        Dwarf_Addr *low_pc,
82472        Dwarf_Unsigned *func_length,
82473        Dwarf_Ptr *fde_bytes,
82474        Dwarf_Unsigned *fde_byte_length,
82475        Dwarf_Off *cie_offset,
82476        Dwarf_Signed *cie_index,
82477        Dwarf_Off *fde_offset,
82478        Dwarf_Error *error);\fP
82479.DE
82480On success,
82481\f(CWdwarf_get_fde_range()\fP returns
82482\f(CWDW_DLV_OK\fP.
82483The location pointed to by \f(CWlow_pc\fP is set to the low pc value for
82484this function.
82485The location pointed to by \f(CWfunc_length\fP is
82486set to the length of the function in bytes.
82487This is essentially the
82488length of the text section for the function.
82489The location pointed
82490to by \f(CWfde_bytes\fP is set to the address where the FDE begins
82491in the .debug_frame section.
82492The location pointed to by
82493\f(CWfde_byte_length\fP is set to the length in bytes of the portion
82494of .debug_frame for this FDE.
82495This is the same as the value returned
82496by \f(CWdwarf_get_fde_range\fP.
82497The location pointed to by
82498\f(CWcie_offset\fP is set to the offset in the .debug_frame section
82499of the CIE used by this FDE.
82500The location pointed to by \f(CWcie_index\fP
82501is set to the index of the CIE used by this FDE.
82502The index is the
82503index of the CIE in the list pointed to by \f(CWcie_data\fP as set
82504by the function \f(CWdwarf_get_fde_list()\fP.
82505However, if the function
82506\f(CWdwarf_get_fde_for_die()\fP was used to obtain the given \f(CWfde\fP,
82507this index may not be correct.
82508The location pointed to by
82509\f(CWfde_offset\fP is set to the offset of the start of this FDE in
82510the .debug_frame section.
82511\f(CWdwarf_get_fde_range()\fP returns \f(CWDW_DLV_ERROR\fP on error.
82512
82513.H 4 "dwarf_get_cie_info()"
82514.DS
82515\f(CWint dwarf_get_cie_info(
82516        Dwarf_Cie       cie,
82517	Dwarf_Unsigned *bytes_in_cie,
82518        Dwarf_Small    *version,
82519        char          **augmenter,
82520        Dwarf_Unsigned *code_alignment_factor,
82521        Dwarf_Signed *data_alignment_factor,
82522        Dwarf_Half     *return_address_register_rule,
82523        Dwarf_Ptr      *initial_instructions,
82524        Dwarf_Unsigned *initial_instructions_length,
82525        Dwarf_Error    *error);\fP
82526.DE
82527\f(CWdwarf_get_cie_info()\fP is primarily for Internal-level Interface
82528consumers.
82529If successful,
82530it returns
82531\f(CWDW_DLV_OK\fP and sets \f(CW*bytes_in_cie\fP to
82532the number of bytes in the portion of the
82533frames section for the CIE represented by the given \f(CWDwarf_Cie\fP
82534descriptor, \f(CWcie\fP.
82535The other fields are directly taken from
82536the cie and returned, via the pointers to the caller.
82537It returns \f(CWDW_DLV_ERROR\fP on error.
82538
82539.H 4 "dwarf_get_fde_instr_bytes()"
82540.DS
82541\f(CWint dwarf_get_fde_instr_bytes(
82542        Dwarf_Fde fde,
82543	Dwarf_Ptr *outinstrs,
82544	Dwarf_Unsigned *outlen,
82545        Dwarf_Error *error);\fP
82546.DE
82547\f(CWdwarf_get_fde_instr_bytes()\fP returns
82548\f(CWDW_DLV_OK\fP and sets \f(CW*outinstrs\fP to
82549a pointer to a set of bytes which are the
82550actual frame instructions for this fde.
82551It also sets \f(CW*outlen\fP to the length, in
82552bytes, of the frame instructions.
82553It returns \f(CWDW_DLV_ERROR\fP on error.
82554It never returns \f(CWDW_DLV_NO_ENTRY\fP.
82555The intent is to allow low-level consumers like a dwarf-dumper
82556to print the bytes in some fashion.
82557The memory pointed to by \f(CWoutinstrs\fP
82558must not be changed and there
82559is nothing to free.
82560
82561.H 4 "dwarf_get_fde_info_for_reg()"
82562.DS
82563\f(CWint dwarf_get_fde_info_for_reg(
82564        Dwarf_Fde fde,
82565        Dwarf_Half table_column,
82566        Dwarf_Addr pc_requested,
82567	Dwarf_Signed *offset_relevant,
82568        Dwarf_Signed *register_num,
82569        Dwarf_Signed *offset,
82570        Dwarf_Addr *row_pc,
82571        Dwarf_Error *error);\fP
82572.DE
82573\f(CWdwarf_get_fde_info_for_reg()\fP returns
82574\f(CWDW_DLV_OK\fP and sets \f(CW*offset_relevant\fP to
82575non-zero if the offset is relevant for the
82576row specified by \f(CWpc_requested\fP and column specified by
82577\f(CWtable_column\fP, for the FDE specified by \f(CWfde\fP.
82578The
82579intent is to return the rule for the given pc value and register.
82580The location pointed to by \f(CWregister_num\fP is set to the register
82581value for the rule.
82582The location pointed to by \f(CWoffset\fP
82583is set to the offset value for the rule.
82584If offset is not relevant for this rule, \f(CW*offset_relevant\fP is
82585set to zero.
82586Since more than one pc
82587value will have rows with identical entries, the user may want to
82588know the earliest pc value after which the rules for all the columns
82589remained unchanged.
82590Recall that in the virtual table that the frame information
82591represents there may be one or more table rows with identical data
82592(each such table row at a different pc value).
82593Given a \f(CWpc_requested\fP which refers to a pc in such a group
82594of identical rows,
82595the location pointed to by \f(CWrow_pc\fP is set
82596to the lowest pc value
82597within the group of  identical rows.
82598The  value put in \f(CW*register_num\fP any of the
82599\f(CWDW_FRAME_*\fP table columns values specified in \f(CWlibdwarf.h\fP
82600or \f(CWdwarf.h\fP.
82601
82602\f(CWdwarf_get_fde_info_for_reg\fP returns \f(CWDW_DLV_ERROR\fP if there is an error.
82603
82604It is usable with either
82605\f(CWdwarf_get_fde_n()\fP or \f(CWdwarf_get_fde_at_pc()\fP.
82606
82607.H 4 "dwarf_get_fde_info_for_all_regs()"
82608.DS
82609\f(CWint dwarf_get_fde_info_for_all_regs(
82610        Dwarf_Fde fde,
82611        Dwarf_Addr pc_requested,
82612	Dwarf_Regtable *reg_table,
82613        Dwarf_Addr *row_pc,
82614        Dwarf_Error *error);\fP
82615.DE
82616\f(CWdwarf_get_fde_info_for_all_regs()\fP returns
82617\f(CWDW_DLV_OK\fP and sets \f(CW*reg_table\fP for the row specified by
82618\f(CWpc_requested\fP for the FDE specified by \f(CWfde\fP. The intent is
82619to return the rules for decoding all the registers, given a pc value.
82620\f(CWreg_table\fP is an array of rules, one for each register specified in
82621\f(CWdwarf.h\fP. The rule for each register contains three items -
82622\f(CWdw_regnum\fP which denotes the register value for that rule,
82623\f(CWdw_offset\fP which denotes the offset value for that rule and
82624\f(CWdw_offset_relevant\fP which is set to zero if offset is not relevant
82625for that rule. See \f(CWdwarf_get_fde_info_fo_reg()\fP for a description
82626of \f(CWrow_pc\fP.
82627
82628\f(CWdwarf_get_fde_info_for_all_regs\fP returns \f(CWDW_DLV_ERROR\fP if there is an error.
82629
82630\f(CWint dwarf_get_fde_info_for_all_regs\fP is SGI/MIPS specific.
82631.H 4 "dwarf_get_fde_n()"
82632.DS
82633\f(CWint   dwarf_get_fde_n(
82634        Dwarf_Fde *fde_data,
82635        Dwarf_Unsigned fde_index,
82636	Dwarf_Fde      *returned_fde
82637        Dwarf_Error *error);\fP
82638.DE
82639\f(CWdwarf_get_fde_n()\fP returns
82640\f(CWDW_DLV_OK\fP and sets \f(CWreturned_fde\fP to
82641the \f(CWDwarf_Fde\fP descriptor whose
82642index is \f(CWfde_index\fP in the table of \f(CWDwarf_Fde\fP descriptors
82643pointed to by \fPfde_data\fP.
82644The index starts with 0.
82645Returns \f(CWDW_DLV_NO_ENTRY\fP if the index does not
82646exist in the table of \f(CWDwarf_Fde\fP
82647descriptors.
82648Returns \f(CWDW_DLV_ERROR\fP if there is an error.
82649This function cannot be used unless
82650the block of \f(CWDwarf_Fde\fP descriptors has been created by a call to
82651\f(CWdwarf_get_fde_list()\fP.
82652
82653.H 4 "dwarf_get_fde_at_pc()"
82654.DS
82655\f(CWint   dwarf_get_fde_at_pc(
82656        Dwarf_Fde *fde_data,
82657        Dwarf_Addr pc_of_interest,
82658        Dwarf_Fde *returned_fde,
82659        Dwarf_Addr *lopc,
82660        Dwarf_Addr *hipc,
82661        Dwarf_Error *error);\fP
82662.DE
82663\f(CWdwarf_get_fde_at_pc()\fP returns
82664\f(CWDW_DLV_OK\fP and sets \f(CWreturned_fde\fP to
82665a \f(CWDwarf_Fde\fP descriptor
82666for a function which contains the pc value specified by \f(CWpc_of_interest\fP.
82667In addition, it sets the locations pointed to
82668by \f(CWlopc\fP and \f(CWhipc\fP to the low address and the high address
82669covered by this FDE, respectively.
82670It returns \f(CWDW_DLV_ERROR\fP on error.
82671It returns \f(CWDW_DLV_NO_ENTRY\fP
82672if \f(CWpc_of_interest\fP is not in any of the
82673FDEs represented by the block of \f(CWDwarf_Fde\fP descriptors pointed
82674to by \f(CWfde_data\fP.
82675This function cannot be used unless
82676the block of \f(CWDwarf_Fde\fP descriptors has been created by a call to
82677\f(CWdwarf_get_fde_list()\fP.
82678
82679.H 4 "dwarf_expand_frame_instructions()"
82680.DS
82681\f(CWint dwarf_expand_frame_instructions(
82682        Dwarf_Debug dbg,
82683        Dwarf_Ptr instruction,
82684        Dwarf_Unsigned i_length,
82685        Dwarf_Frame_Op **returned_op_list,
82686        Dwarf_Signed   * returned_op_count,
82687        Dwarf_Error *error);\fP
82688.DE
82689\f(CWdwarf_expand_frame_instructions()\fP is a High-level interface
82690function which expands a frame instruction byte stream into an
82691array of \f(CWDwarf_Frame_Op\fP structures.
82692To indicate success, it returns \f(CWDW_DLV_OK\fP.
82693The address where
82694the byte stream begins is specified by \f(CWinstruction\fP, and
82695the length of the byte stream is specified by \f(CWi_length\fP.
82696The location pointed to by \f(CWreturned_op_list\fP is set to
82697point to a table of
82698\f(CWreturned_op_count\fP
82699pointers to \f(CWDwarf_Frame_Op\fP which
82700contain the frame instructions in the byte stream.
82701It returns \f(CWDW_DLV_ERROR\fP on error.
82702It never returns \f(CWDW_DLV_NO_ENTRY\fP.
82703After a successful return, the
82704array of structures should be freed using
82705\f(CWdwarf_dealloc()\fP with the allocation type \f(CWDW_DLA_FRAME_BLOCK\fP
82706(when they are no longer of interest).
82707
82708.in +2
82709.DS
82710\f(CWDwarf_Signed cnt;
82711Dwarf_Frame_Op *frameops;
82712Dwarf_Ptr instruction;
82713Dwarf_Unsigned len;
82714int res;
82715
82716if (expand_frame_instructions(dbg,instruction,len, &frameops,&cnt, &error)
82717         == DW_DLV_OK) {
82718
82719        for (i = 0; i < cnt; ++i) {
82720                /* use frameops[i] */
82721        }
82722        dwarf_dealloc(dbg, frameops, DW_DLA_FRAME_BLOCK);
82723}\fP
82724.DE
82725.in -2
82726
82727
82728.H 2 "Location Expression Evaluation"
82729
82730An "interpreter" which evaluates a location expression
82731is required in any debugger.  There is no interface defined
82732here at this time.
82733
82734.P
82735One problem with defining an interface is that operations are
82736machine dependent: they depend on the interpretation of
82737register numbers and the methods of getting values from the
82738environment the expression is applied to.
82739
82740.P
82741It would be desirable to specify an interface.
82742
82743.H 3 "Location List Internal-level Interface"
82744
82745.H 4 "dwarf_get_loclist_entry()"
82746.DS
82747\f(CWint dwarf_get_loclist_entry(
82748        Dwarf_Debug dbg,
82749        Dwarf_Unsigned offset,
82750        Dwarf_Addr *hipc_offset,
82751        Dwarf_Addr *lopc_offset,
82752        Dwarf_Ptr *data,
82753        Dwarf_Unsigned *entry_len,
82754        Dwarf_Unsigned *next_entry,
82755        Dwarf_Error *error)\fP
82756.DE
82757\f(CWdwarf_dwarf_get_loclist_entry()\fP returns
82758\f(CWDW_DLV_OK\fP if successful.
82759\f(CWDW_DLV_NO_ENTRY\fP is returned when the offset passed
82760in is beyond the end of the .debug_loc section (expected if
82761you start at offset zero and proceed thru all the entries).
82762\f(CWDW_DLV_ERROR\fP is returned on error.
82763The function reads
82764a location list entry starting at \f(CWoffset\fP and returns
82765through pointers (when successful)
82766the high pc \f(CWhipc_offset\fP, low pc
82767\f(CWlopc_offset\fP, a pointer to the location description data
82768\f(CWdata\fP, the length of the location description data
82769\f(CWentry_len\fP, and the offset of the next location description
82770entry \f(CWnext_entry\fP.
82771.P
82772The \f(CWhipc_offset\fP,
82773low pc \f(CWlopc_offset\fP are offsets from the beginning of the
82774current procedure, not genuine pc values.
82775
82776.H 2 "Abbreviations access"
82777These are Internal-level Interface functions.
82778Debuggers can ignore this.
82779
82780.H 3 "dwarf_get_abbrev()"
82781.DS
82782\f(CWint dwarf_get_abbrev(
82783        Dwarf_Debug dbg,
82784        Dwarf_Unsigned offset,
82785        Dwarf_Abbrev   *returned_abbrev,
82786        Dwarf_Unsigned *length,
82787        Dwarf_Unsigned *attr_count,
82788        Dwarf_Error *error)\fP
82789.DE
82790The function \f(CWdwarf_get_abbrev()\fP returns
82791\f(CWDW_DLV_OK\fP and sets \f(CW*returned_abbrev\fP to
82792\f(CWDwarf_Abbrev\fP
82793descriptor for an abbreviation at offset \f(CW*offset\fP in the abbreviations
82794section (i.e .debug_abbrev) on success.
82795The user is responsible for making sure that
82796a valid abbreviation begins at \f(CWoffset\fP in the abbreviations section.
82797The location pointed to by \f(CWlength\fP
82798is set to the length in bytes of the abbreviation in the abbreviations
82799section.
82800The location pointed to by \f(CWattr_count\fP is set to the
82801number of attributes in the abbreviation.
82802An abbreviation entry with a
82803length of 1 is the 0 byte of the last abbreviation entry of a compilation
82804unit.
82805\f(CWdwarf_get_abbrev()\fP returns \f(CWDW_DLV_ERROR\fP on error.
82806
82807.H 3 "dwarf_get_abbrev_tag()"
82808.DS
82809\f(CWint dwarf_get_abbrev_tag(
82810        Dwarf_abbrev abbrev,
82811	Dwarf_Half  *return_tag,
82812        Dwarf_Error *error);\P
82813.DE
82814If successful,
82815\f(CWdwarf_get_abbrev_tag()\fP returns
82816\f(CWDW_DLV_OK\fP and sets \f(CW*return_tag\fP to
82817the \fItag\fP of
82818the given abbreviation.
82819It returns \f(CWDW_DLV_ERROR\fP on error.
82820It never returns \f(CWDW_DLV_NO_ENTRY\fP.
82821
82822.H 3 "dwarf_get_abbrev_code()"
82823.DS
82824\f(CWint dwarf_get_abbrev_code(
82825        Dwarf_abbrev     abbrev,
82826	Dwarf_Unsigned  *return_code,
82827        Dwarf_Error     *error);\P
82828.DE
82829If successful,
82830\f(CWdwarf_get_abbrev_code()\fP returns
82831\f(CWDW_DLV_OK\fP and sets \f(CW*return_code\fP to
82832the abbreviation code of
82833the given abbreviation.
82834It returns \f(CWDW_DLV_ERROR\fP on error.
82835It never returns \f(CWDW_DLV_NO_ENTRY\fP.
82836
82837.H 3 "dwarf_get_abbrev_children_flag()"
82838.DS
82839\f(CWint dwarf_get_abbrev_children_flag(
82840        Dwarf_Abbrev abbrev,
82841	Dwarf_Signed  *returned_flag,
82842        Dwarf_Error *error)\fP
82843.DE
82844The function \f(CWdwarf_get_abbrev_children_flag()\fP returns
82845\f(CWDW_DLV_OK\fP and sets \f(CWreturned_flag\fP to
82846\f(CWDW_children_no\fP (if the given abbreviation indicates that
82847a die with that abbreviation has no children) or
82848\f(CWDW_children_yes\fP (if the given abbreviation indicates that
82849a die with that abbreviation has a child).
82850It returns \f(CWDW_DLV_ERROR\fP on error.
82851
82852.H 3 "dwarf_get_abbrev_entry()"
82853.DS
82854\f(CWint dwarf_get_abbrev_entry(
82855        Dwarf_Abbrev abbrev,
82856        Dwarf_Signed index,
82857        Dwarf_Half   *attr_num,
82858        Dwarf_Signed *form,
82859        Dwarf_Off *offset,
82860        Dwarf_Error *error)\fP
82861
82862.DE
82863If successful,
82864\f(CWdwarf_get_abbrev_entry()\fP returns
82865\f(CWDW_DLV_OK\fP and sets \f(CW*attr_num\fP to the attribute code of
82866the attribute
82867whose index is specified by \f(CWindex\fP in the given abbreviation.
82868The index starts at 0.
82869The location pointed to by \f(CWform\fP is set
82870to the form of the attribute.
82871The location pointed to by \f(CWoffset\fP
82872is set to the byte offset of the attribute in the abbreviations section.
82873It returns \f(CWDW_DLV_NO_ENTRY\fP if the index specified is outside
82874the range of attributes in this abbreviation.
82875It returns \f(CWDW_DLV_ERROR\fP on error.
82876
82877.H 2 "String Section Operations"
82878The .debug_str section contains only strings.  Debuggers need
82879never use this interface: it is only for debugging problems with
82880the string section itself.
82881
82882.H 3 "dwarf_get_str()"
82883.DS
82884\f(CWint dwarf_get_str(
82885        Dwarf_Debug   dbg,
82886        Dwarf_Off     offset,
82887        char        **string,
82888	Dwarf_Signed *returned_str_len,
82889        Dwarf_Error  *error)\fP
82890.DE
82891The function \f(CWdwarf_get_str()\fP returns
82892\f(CWDW_DLV_OK\fP and sets \f(CW*returned_str_len\fP to
82893the length of
82894the string, not counting the null terminator, that begins at the offset
82895specified by \f(CWoffset\fP in the .debug_str section.
82896The location
82897pointed to by \f(CWstring\fP is set to a pointer to this string.
82898The next string in the .debug_str
82899section begins at the previous \f(CWoffset\fP + 1 + \f(CW*returned_str_len\fP.
82900A zero-length string is NOT the end of the section.
82901If there is no .debug_str section, \f(CWDW_DLV_NO_ENTRY\fP is returned.
82902If there is an error, \f(CWDW_DLV_ERROR\fP is returned.
82903If we are at the end of the section (that is, \f(CWoffset\fP
82904is one past the end of the section) \f(CWDW_DLV_NO_ENTRY\fP is returned.
82905If the \f(CWoffset\fP is some other too-large value then
82906\f(CWDW_DLV_ERROR\fP is returned.
82907
82908.H 2 "Address Range Operations"
82909These functions provide information about address ranges.  Address
82910ranges map ranges of pc values to the corresponding compilation-unit
82911die that covers the address range.
82912
82913.H 3 "dwarf_get_aranges()"
82914.DS
82915\f(CWint dwarf_get_aranges(
82916        Dwarf_Debug dbg,
82917        Dwarf_Arange **aranges,
82918        Dwarf_Signed * returned_arange_count,
82919        Dwarf_Error *error)\fP
82920.DE
82921The function \f(CWdwarf_get_aranges()\fP returns
82922\f(CWDW_DLV_OK\fP and sets \f(CW*returned_arange_count\fP to
82923the count of the
82924number of address ranges in the .debug_aranges section.
82925It sets
82926\f(CW*aranges\fP to point to a block of \f(CWDwarf_Arange\fP
82927descriptors, one for each address range.
82928It returns \f(CWDW_DLV_ERROR\fP on error.
82929It returns \f(CWDW_DLV_NO_ENTRY\fP if there is no .debug_aranges
82930section.
82931
82932.in +2
82933.DS
82934\f(CWDwarf_Signed cnt;
82935Dwarf_Arange *arang;
82936
82937if ((dwarf_get_aranges(dbg, &arang,&cnt, &error)) == DW_DLV_OK) {
82938
82939        for (i = 0; i < cnt; ++i) {
82940                /* use arang[i] */
82941                dwarf_dealloc(dbg, arang[i], DW_DLA_ARANGE);
82942        }
82943        dwarf_dealloc(dbg, arang, DW_DLA_LIST);
82944}\fP
82945.DE
82946.in -2
82947
82948
82949.DS
82950\f(CWint dwarf_get_arange(
82951        Dwarf_Arange *aranges,
82952        Dwarf_Unsigned arange_count,
82953        Dwarf_Addr address,
82954	Dwarf_Arange   *returned_arange,
82955        Dwarf_Error *error)\fP
82956.DE
82957The function \f(CWdwarf_get_arange()\fP takes as input a pointer
82958to a block of \f(CWDwarf_Arange\fP pointers, and a count of the
82959number of descriptors in the block.
82960It then searches for the
82961descriptor that covers the given \f(CWaddress\fP.
82962If it finds
82963one, it returns
82964\f(CWDW_DLV_OK\fP and sets \f(CW*returned_arange\fP to
82965the descriptor.
82966It returns \f(CWDW_DLV_ERROR\fP on error.
82967It returns \f(CWDW_DLV_NO_ENTRY\fP if there is no .debug_aranges
82968entry covering that address.
82969
82970
82971.H 3 "dwarf_get_cu_die_offset()"
82972.DS
82973\f(CWint dwarf_get_cu_die_offset(
82974        Dwarf_Arange arange,
82975        Dwarf_Off   *returned_cu_die_offset,
82976        Dwarf_Error *error)\fP
82977.DE
82978The function \f(CWdwarf_get_cu_die_offset()\fP takes a
82979\f(CWDwarf_Arange\fP descriptor as input, and
82980if successful returns
82981\f(CWDW_DLV_OK\fP and sets \f(CW*returned_cu_die_offset\fP to
82982the offset
82983in the .debug_info section of the compilation-unit DIE for the
82984compilation-unit represented by the given address range.
82985It returns \f(CWDW_DLV_ERROR\fP on error.
82986
82987.H 3 "dwarf_get_arange_cu_header_offset()"
82988.DS
82989\f(CWint dwarf_get_arange_cu_header_offset(
82990        Dwarf_Arange arange,
82991        Dwarf_Off   *returned_cu_header_offset,
82992        Dwarf_Error *error)\fP
82993.DE
82994The function \f(CWdwarf_get_arange_cu_header_offset()\fP takes a
82995\f(CWDwarf_Arange\fP descriptor as input, and
82996if successful returns
82997\f(CWDW_DLV_OK\fP and sets \f(CW*returned_cu_header_offset\fP to
82998the offset
82999in the .debug_info section of the compilation-unit header for the
83000compilation-unit represented by the given address range.
83001It returns \f(CWDW_DLV_ERROR\fP on error.
83002
83003This function added Rev 1.45, June, 2001.
83004
83005This function is declared as 'optional' in libdwarf.h
83006on IRIX systems so the _MIPS_SYMBOL_PRESENT
83007predicate may be used at run time to determine if the version of
83008libdwarf linked into an application has this function.
83009
83010
83011
83012.H 3 "dwarf_get_arange_info()"
83013.DS
83014\f(CWint dwarf_get_arange_info(
83015        Dwarf_Arange arange,
83016        Dwarf_Addr *start,
83017        Dwarf_Unsigned *length,
83018        Dwarf_Off *cu_die_offset,
83019        Dwarf_Error *error)\fP
83020.DE
83021The function \f(CWdwarf_get_arange_info()\fP returns
83022\f(CWDW_DLV_OK\fP
83023and
83024stores the starting value of the address range in the location pointed
83025to by \f(CWstart\fP, the length of the address range in the location
83026pointed to by \f(CWlength\fP, and the offset in the .debug_info section
83027of the compilation-unit DIE for the compilation-unit represented by the
83028address range.
83029It returns \f(CWDW_DLV_ERROR\fP on error.
83030
83031.H 2 "General Low Level Operations"
83032This function is low-level and intended for use only
83033by programs such as dwarf-dumpers.
83034
83035.H 3 "dwarf_get_address_size()"
83036.DS
83037\f(CWint dwarf_get_address_size(Dwarf_Debug dbg,
83038	Dwarf_Half  *addr_size,
83039        Dwarf_Error *error)\fP
83040.DE
83041The function \f(CWdwarf_get_address_size()\fP
83042returns \f(CWDW_DLV_OK\fP on success and sets
83043the \f(CW*addr_size\fP
83044to the size in bytes of an address.
83045In case of error, it returns \f(CWDW_DLV_ERROR\fP
83046and does not set \f(CW*addr_size\fP.
83047
83048
83049.H 2 "Utility Operations"
83050These functions aid in the management of errors encountered when using
83051functions in the \fIlibdwarf\fP library and releasing memory allocated
83052as a result of a \fIlibdwarf\fP operation.
83053
83054.H 3 "dwarf_errno()"
83055.DS
83056\f(CWDwarf_Unsigned dwarf_errno(
83057        Dwarf_Error error)\fP
83058.DE
83059The function \f(CWdwarf_errno()\fP returns the error number corresponding
83060to the error specified by \f(CWerror\fP.
83061
83062.H 3 "dwarf_errmsg()"
83063.DS
83064\f(CWconst char* dwarf_errmsg(
83065        Dwarf_Error error)\fP
83066.DE
83067The function \f(CWdwarf_errmsg()\fP returns a pointer to a
83068null-terminated error message string corresponding to the error specified by
83069\f(CWerror\fP.
83070The string returned by \f(CWdwarf_errmsg()\fP
83071should not be deallocated using \f(CWdwarf_dealloc()\fP.
83072
83073.P
83074The set of errors
83075enumerated in Figure \n(aX below were defined in Dwarf 1.
83076These errors are not used by the current implementation
83077of Dwarf 2.
83078.DS
83079.TS
83080center box, tab(:);
83081lfB lfB
83082l l.
83083SYMBOLIC NAME:DESCRIPTION
83084_
83085DW_DLE_NE:No error (0)
83086DW_DLE_VMM:Version of DWARF information newer than libdwarf
83087DW_DLE_MAP:Memory map failure
83088DW_DLE_LEE:Propagation of libelf error
83089DW_DLE_NDS:No debug section
83090DW_DLE_NLS:No line section
83091DW_DLE_ID:Requested information not associated with descriptor
83092DW_DLE_IOF:I/O failure
83093DW_DLE_MAF:Memory allocation failure
83094DW_DLE_IA:Invalid argument
83095DW_DLE_MDE:Mangled debugging entry
83096DW_DLE_MLE:Mangled line number entry
83097DW_DLE_FNO:File descriptor does not refer to an open file
83098DW_DLE_FNR:File is not a regular file
83099DW_DLE_FWA:File is opened with wrong access
83100DW_DLE_NOB:File is not an object file
83101DW_DLE_MOF:Mangled object file header
83102DW_DLE_EOLL:End of location list entries
83103DW_DLE_NOLL:No location list section
83104DW_DLE_BADOFF:Invalid offset
83105DW_DLE_EOS:End of section
83106DW_DLE_ATRUNC:Abbreviations section appears truncated
83107DW_DLE_BADBITC:Address size passed to dwarf bad
83108.TE
83109.FG "List of Dwarf Error Codes"
83110.DE
83111
83112The set of errors returned by SGI \f(CWLibdwarf\fP functions
83113is listed below.
83114Some of the errors are SGI specific.
83115
83116.DS
83117.TS
83118center box, tab(:);
83119lfB lfB
83120l l.
83121SYMBOLIC NAME:DESCRIPTION
83122_
83123DW_DLE_DBG_ALLOC:Could not allocate Dwarf_Debug struct
83124DW_DLE_FSTAT_ERROR:Error in fstat()-ing object
83125DW_DLE_FSTAT_MODE_ERROR:Error in mode of object file
83126DW_DLE_INIT_ACCESS_WRONG:Incorrect access to dwarf_init()
83127DW_DLE_ELF_BEGIN_ERROR:Error in elf_begin() on object
83128DW_DLE_ELF_GETEHDR_ERROR:Error in elf_getehdr() on object
83129DW_DLE_ELF_GETSHDR_ERROR:Error in elf_getshdr() on object
83130DW_DLE_ELF_STRPTR_ERROR:Error in elf_strptr() on object
83131DW_DLE_DEBUG_INFO_DUPLICATE:Multiple .debug_info sections
83132DW_DLE_DEBUG_INFO_NULL:No data in .debug_info section
83133DW_DLE_DEBUG_ABBREV_DUPLICATE:Multiple .debug_abbrev sections
83134DW_DLE_DEBUG_ABBREV_NULL:No data in .debug_abbrev section
83135DW_DLE_DEBUG_ARANGES_DUPLICATE:Multiple .debug_arange sections
83136DW_DLE_DEBUG_ARANGES_NULL:No data in .debug_arange section
83137DW_DLE_DEBUG_LINE_DUPLICATE:Multiple .debug_line sections
83138DW_DLE_DEBUG_LINE_NULL:No data in .debug_line section
83139DW_DLE_DEBUG_LOC_DUPLICATE:Multiple .debug_loc sections
83140DW_DLE_DEBUG_LOC_NULL:No data in .debug_loc section
83141DW_DLE_DEBUG_MACINFO_DUPLICATE:Multiple .debug_macinfo sections
83142DW_DLE_DEBUG_MACINFO_NULL:No data in .debug_macinfo section
83143DW_DLE_DEBUG_PUBNAMES_DUPLICATE:Multiple .debug_pubnames sections
83144DW_DLE_DEBUG_PUBNAMES_NULL:No data in .debug_pubnames section
83145DW_DLE_DEBUG_STR_DUPLICATE:Multiple .debug_str sections
83146DW_DLE_DEBUG_STR_NULL:No data in .debug_str section
83147DW_DLE_CU_LENGTH_ERROR:Length of compilation-unit bad
83148DW_DLE_VERSION_STAMP_ERROR:Incorrect Version Stamp
83149DW_DLE_ABBREV_OFFSET_ERROR:Offset in .debug_abbrev bad
83150DW_DLE_ADDRESS_SIZE_ERROR:Size of addresses in target bad
83151DW_DLE_DEBUG_INFO_PTR_NULL:Pointer into .debug_info in DIE null
83152DW_DLE_DIE_NULL:Null Dwarf_Die
83153DW_DLE_STRING_OFFSET_BAD:Offset in .debug_str bad
83154DW_DLE_DEBUG_LINE_LENGTH_BAD:Length of .debug_line segment bad
83155DW_DLE_LINE_PROLOG_LENGTH_BAD:Length of .debug_line prolog bad
83156DW_DLE_LINE_NUM_OPERANDS_BAD:Number of operands to line instr bad
83157DW_DLE_LINE_SET_ADDR_ERROR:Error in DW_LNE_set_address instruction
83158DW_DLE_LINE_EXT_OPCODE_BAD:Error in DW_EXTENDED_OPCODE instruction
83159DW_DLE_DWARF_LINE_NULL:Null Dwarf_line argument
83160DW_DLE_INCL_DIR_NUM_BAD:Error in included directory for given line
83161DW_DLE_LINE_FILE_NUM_BAD:File number in .debug_line bad
83162DW_DLE_ALLOC_FAIL:Failed to allocate required structs
83163DW_DLE_DBG_NULL:Null Dwarf_Debug argument
83164DW_DLE_DEBUG_FRAME_LENGTH_BAD:Error in length of frame
83165DW_DLE_FRAME_VERSION_BAD:Bad version stamp for frame
83166DW_DLE_CIE_RET_ADDR_REG_ERROR:Bad register specified for return address
83167DW_DLE_FDE_NULL:Null Dwarf_Fde argument
83168DW_DLE_FDE_DBG_NULL:No Dwarf_Debug associated with FDE
83169DW_DLE_CIE_NULL:Null Dwarf_Cie argument
83170DW_DLE_CIE_DBG_NULL:No Dwarf_Debug associated with CIE
83171DW_DLE_FRAME_TABLE_COL_BAD:Bad column in frame table specified
83172.TE
83173.FG "List of Dwarf 2 Error Codes (continued)"
83174.DE
83175
83176.DS
83177.TS
83178center box, tab(:);
83179lfB lfB
83180l l.
83181SYMBOLIC NAME:DESCRIPTION
83182_
83183DW_DLE_PC_NOT_IN_FDE_RANGE:PC requested not in address range of FDE
83184DW_DLE_CIE_INSTR_EXEC_ERROR:Error in executing instructions in CIE
83185DW_DLE_FRAME_INSTR_EXEC_ERROR:Error in executing instructions in FDE
83186DW_DLE_FDE_PTR_NULL:Null Pointer to Dwarf_Fde specified
83187DW_DLE_RET_OP_LIST_NULL:No location to store pointer to Dwarf_Frame_Op
83188DW_DLE_LINE_CONTEXT_NULL:Dwarf_Line has no context
83189DW_DLE_DBG_NO_CU_CONTEXT:dbg has no CU context for dwarf_siblingof()
83190DW_DLE_DIE_NO_CU_CONTEXT:Dwarf_Die has no CU context
83191DW_DLE_FIRST_DIE_NOT_CU:First DIE in CU not DW_TAG_compilation_unit
83192DW_DLE_NEXT_DIE_PTR_NULL:Error in moving to next DIE in .debug_info
83193DW_DLE_DEBUG_FRAME_DUPLICATE:Multiple .debug_frame sections
83194DW_DLE_DEBUG_FRAME_NULL:No data in .debug_frame section
83195DW_DLE_ABBREV_DECODE_ERROR:Error in decoding abbreviation
83196DW_DLE_DWARF_ABBREV_NULL:Null Dwarf_Abbrev specified
83197DW_DLE_ATTR_NULL:Null Dwarf_Attribute specified
83198DW_DLE_DIE_BAD:DIE bad
83199DW_DLE_DIE_ABBREV_BAD:No abbreviation found for code in DIE
83200DW_DLE_ATTR_FORM_BAD:Inappropriate attribute form for attribute
83201DW_DLE_ATTR_NO_CU_CONTEXT:No CU context for Dwarf_Attribute struct
83202DW_DLE_ATTR_FORM_SIZE_BAD:Size of block in attribute value bad
83203DW_DLE_ATTR_DBG_NULL:No Dwarf_Debug for Dwarf_Attribute struct
83204DW_DLE_BAD_REF_FORM:Inappropriate form for reference attribute
83205DW_DLE_ATTR_FORM_OFFSET_BAD:Offset reference attribute outside current CU
83206DW_DLE_LINE_OFFSET_BAD:Offset of lines for current CU outside .debug_line
83207DW_DLE_DEBUG_STR_OFFSET_BAD:Offset into .debug_str past its end
83208DW_DLE_STRING_PTR_NULL:Pointer to pointer into .debug_str NULL
83209DW_DLE_PUBNAMES_VERSION_ERROR:Version stamp of pubnames incorrect
83210DW_DLE_PUBNAMES_LENGTH_BAD:Read pubnames past end of .debug_pubnames
83211DW_DLE_GLOBAL_NULL:Null Dwarf_Global specified
83212DW_DLE_GLOBAL_CONTEXT_NULL:No context for Dwarf_Global given
83213DW_DLE_DIR_INDEX_BAD:Error in directory index read
83214DW_DLE_LOC_EXPR_BAD:Bad operator read for location expression
83215DW_DLE_DIE_LOC_EXPR_BAD:Expected block value for attribute not found
83216DW_DLE_OFFSET_BAD:Offset for next compilation-unit in .debug_info bad
83217DW_DLE_MAKE_CU_CONTEXT_FAIL:Could not make CU context
83218DW_DLE_ARANGE_OFFSET_BAD:Offset into .debug_info in .debug_aranges bad
83219DW_DLE_SEGMENT_SIZE_BAD:Segment size should be 0 for MIPS processors
83220DW_DLE_ARANGE_LENGTH_BAD:Length of arange section in .debug_arange bad
83221DW_DLE_ARANGE_DECODE_ERROR:Aranges do not end at end of .debug_aranges
83222DW_DLE_ARANGES_NULL:NULL pointer to Dwarf_Arange specified
83223DW_DLE_ARANGE_NULL:NULL Dwarf_Arange specified
83224DW_DLE_NO_FILE_NAME:No file name for Dwarf_Line struct
83225DW_DLE_NO_COMP_DIR:No Compilation directory for compilation-unit
83226DW_DLE_CU_ADDRESS_SIZE_BAD:CU header address size not match Elf class
83227DW_DLE_ELF_GETIDENT_ERROR:Error in elf_getident() on object
83228DW_DLE_NO_AT_MIPS_FDE:DIE does not have DW_AT_MIPS_fde attribute
83229DW_DLE_NO_CIE_FOR_FDE:No CIE specified for FDE
83230DW_DLE_DIE_ABBREV_LIST_NULL:No abbreviation for the code in DIE found
83231DW_DLE_DEBUG_FUNCNAMES_DUPLICATE:Multiple .debug_funcnames sections
83232DW_DLE_DEBUG_FUNCNAMES_NULL:No data in .debug_funcnames section
83233.TE
83234.FG "List of Dwarf 2 Error Codes (continued)"
83235.DE
83236
83237.DS
83238.TS
83239center box, tab(:);
83240lfB lfB
83241l l.
83242SYMBOLIC NAME:DESCRIPTION
83243_
83244DW_DLE_DEBUG_FUNCNAMES_VERSION_ERROR:Version stamp in .debug_funcnames bad
83245DW_DLE_DEBUG_FUNCNAMES_LENGTH_BAD:Length error in reading .debug_funcnames
83246DW_DLE_FUNC_NULL:NULL Dwarf_Func specified
83247DW_DLE_FUNC_CONTEXT_NULL:No context for Dwarf_Func struct
83248DW_DLE_DEBUG_TYPENAMES_DUPLICATE:Multiple .debug_typenames sections
83249DW_DLE_DEBUG_TYPENAMES_NULL:No data in .debug_typenames section
83250DW_DLE_DEBUG_TYPENAMES_VERSION_ERROR:Version stamp in .debug_typenames bad
83251DW_DLE_DEBUG_TYPENAMES_LENGTH_BAD:Length error in reading .debug_typenames
83252DW_DLE_TYPE_NULL:NULL Dwarf_Type specified
83253DW_DLE_TYPE_CONTEXT_NULL:No context for Dwarf_Type given
83254DW_DLE_DEBUG_VARNAMES_DUPLICATE:Multiple .debug_varnames sections
83255DW_DLE_DEBUG_VARNAMES_NULL:No data in .debug_varnames section
83256DW_DLE_DEBUG_VARNAMES_VERSION_ERROR:Version stamp in .debug_varnames bad
83257DW_DLE_DEBUG_VARNAMES_LENGTH_BAD:Length error in reading .debug_varnames
83258DW_DLE_VAR_NULL:NULL Dwarf_Var specified
83259DW_DLE_VAR_CONTEXT_NULL:No context for Dwarf_Var given
83260DW_DLE_DEBUG_WEAKNAMES_DUPLICATE:Multiple .debug_weaknames section
83261DW_DLE_DEBUG_WEAKNAMES_NULL:No data in .debug_varnames section
83262DW_DLE_DEBUG_WEAKNAMES_VERSION_ERROR:Version stamp in .debug_varnames bad
83263DW_DLE_DEBUG_WEAKNAMES_LENGTH_BAD:Length error in reading .debug_weaknames
83264DW_DLE_WEAK_NULL:NULL Dwarf_Weak specified
83265DW_DLE_WEAK_CONTEXT_NULL:No context for Dwarf_Weak given
83266.TE
83267.FG "List of Dwarf 2 Error Codes"
83268.DE
83269
83270This list of errors is not necessarily complete;
83271additional errors
83272might be added when functionality to create debugging information
83273entries are added to \fIlibdwarf\fP and by the implementors of
83274\fIlibdwarf\fP to describe internal errors not addressed by the
83275above list.
83276Some of the above errors may be unused.
83277Errors may not have the same meaning in different implementations.
83278
83279.H 3 "dwarf_seterrhand()"
83280.DS
83281\f(CWDwarf_Handler dwarf_seterrhand(
83282        Dwarf_Debug dbg,
83283        Dwarf_Handler errhand)\fP
83284.DE
83285The function \f(CWdwarf_seterrhand()\fP replaces the error handler
83286(see \f(CWdwarf_init()\fP) with \f(CWerrhand\fP.  The old error handler
83287is returned.  This function is currently unimplemented.
83288
83289.H 3 "dwarf_seterrarg()"
83290.DS
83291\f(CWDwarf_Ptr dwarf_seterrarg(
83292        Dwarf_Debug dbg,
83293        Dwarf_Ptr errarg)\fP
83294.DE
83295The function \f(CWdwarf_seterrarg()\fP replaces the pointer to the
83296error handler communication area (see \f(CWdwarf_init()\fP) with
83297\f(CWerrarg\fP.  A pointer to the old area is returned.  This
83298function is currently unimplemented.
83299
83300.H 3 "dwarf_dealloc()"
83301.DS
83302\f(CWvoid dwarf_dealloc(
83303        Dwarf_Debug dbg,
83304        void* space,
83305        Dwarf_Unsigned type)\fP
83306.DE
83307The function \f(CWdwarf_dealloc\fP frees the dynamic storage pointed
83308to by \f(CWspace\fP, and allocated to the given \f(CWDwarf_Debug\fP.
83309The argument \f(CWtype\fP is an integer code that specifies the allocation
83310type of the region pointed to by the \f(CWspace\fP.  Refer to section
833114 for details on \fIlibdwarf\fP memory management.
83312
83313.SK
83314.S
83315.TC 1 1 4
83316.CS
83317���0707010001ad8f0000812400011e740000000a00000001402068270004f908000000660000000000000000000000000000001800000000libdwarf/libdwarf2.1.ps���%!PS-Adobe-1.0
83318%%Creator: quasar:davea (David Anderson)
83319%%Title: stdin (ditroff)
83320%%CreationDate: Thu Oct  2 17:27:57 2003
83321%%EndComments
83322% Start of psdit.pro -- prolog for ditroff translator
83323% Copyright (c) 1985,1987 Adobe Systems Incorporated. All Rights Reserved.
83324% GOVERNMENT END USERS: See Notice file in TranScript library directory
83325% -- probably /usr/lib/ps/Notice
83326% $Revision: 1.2 $
83327/$DITroff 140 dict def $DITroff begin
83328/fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def
83329/xi {0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto
83330  /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F
83331  /pagesave save def}def
83332/PB{save /psv exch def currentpoint translate
83333  resolution 72 div dup neg scale 0 0 moveto}def
83334/PE{psv restore}def
83335/m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def
83336/tan{dup sin exch cos div}bind def
83337/point{resolution 72 div mul}bind def
83338/dround	{transform round exch round exch itransform}bind def
83339/xT{/devname exch def}def
83340/xr{/mh exch def /my exch def /resolution exch def}def
83341/xp{}def
83342/xs{docsave restore end}def
83343/xt{}def
83344/xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not
83345 {fonts slotno fontname findfont put fontnames slotno fontname put}if}def
83346/xH{/fontheight exch def F}bind def
83347/xS{/fontslant exch def F}bind def
83348/s{/fontsize exch def /fontheight fontsize def F}bind def
83349/f{/fontnum exch def F}bind def
83350/F{fontheight 0 le {/fontheight fontsize def}if
83351   fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore
83352   fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if
83353   makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}bind def
83354/X{exch currentpoint exch pop moveto show}bind def
83355/N{3 1 roll moveto show}bind def
83356/Y{exch currentpoint pop exch moveto show}bind def
83357/S /show load def
83358/ditpush{}def/ditpop{}def
83359/AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}bind def
83360/AN{4 2 roll moveto 0 exch ashow}bind def
83361/AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}bind def
83362/AS{0 exch ashow}bind def
83363/MX{currentpoint exch pop moveto}bind def
83364/MY{currentpoint pop exch moveto}bind def
83365/MXY /moveto load def
83366/cb{pop}def	% action on unknown char -- nothing for now
83367/n{}def/w{}def
83368/p{pop showpage pagesave restore /pagesave save def}def
83369/abspoint{currentpoint exch pop add exch currentpoint pop add exch}def
83370/dstroke{currentpoint stroke moveto}bind def
83371/Dl{2 copy gsave rlineto stroke grestore rmoveto}bind def
83372/arcellipse{oldmat currentmatrix pop
83373 currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def
83374 rad 0 rad -180 180 arc oldmat setmatrix}def
83375/Dc{gsave dup /diamv exch def /diamh exch def arcellipse dstroke
83376    grestore diamh 0 rmoveto}def
83377/De{gsave /diamv exch def /diamh exch def arcellipse dstroke
83378    grestore diamh 0 rmoveto}def
83379/Da{currentpoint /by exch def /bx exch def /fy exch def /fx exch def
83380   /cy exch def /cx exch def /rad cx cx mul cy cy mul add sqrt def
83381   /ang1 cy neg cx neg atan def /ang2 fy fx atan def cx bx add cy by add
83382   2 copy rad ang1 ang2 arcn stroke exch fx add exch fy add moveto}def
83383/Barray 200 array def % 200 values in a wiggle
83384/D~{mark}def
83385/D~~{counttomark Barray exch 0 exch getinterval astore /Bcontrol exch def pop
83386 /Blen Bcontrol length def Blen 4 ge Blen 2 mod 0 eq and
83387 {Bcontrol 0 get Bcontrol 1 get abspoint /Ycont exch def /Xcont exch def
83388  Bcontrol 0 2 copy get 2 mul put Bcontrol 1 2 copy get 2 mul put
83389  Bcontrol Blen 2 sub 2 copy get 2 mul put
83390  Bcontrol Blen 1 sub 2 copy get 2 mul put
83391  /Ybi /Xbi currentpoint 3 1 roll def def 0 2 Blen 4 sub
83392  {/i exch def
83393   Bcontrol i get 3 div Bcontrol i 1 add get 3 div
83394   Bcontrol i get 3 mul Bcontrol i 2 add get add 6 div
83395   Bcontrol i 1 add get 3 mul Bcontrol i 3 add get add 6 div
83396   /Xbi Xcont Bcontrol i 2 add get 2 div add def
83397   /Ybi Ycont Bcontrol i 3 add get 2 div add def
83398   /Xcont Xcont Bcontrol i 2 add get add def
83399   /Ycont Ycont Bcontrol i 3 add get add def
83400   Xbi currentpoint pop sub Ybi currentpoint exch pop sub rcurveto
83401  }for dstroke}if}def
83402end
83403/ditstart{$DITroff begin
83404 /nfonts 60 def			% NFONTS makedev/ditroff dependent!
83405 /fonts[nfonts{0}repeat]def
83406 /fontnames[nfonts{()}repeat]def
83407/docsave save def
83408}def
83409
83410% character outcalls
83411/oc {/pswid exch def /cc exch def /name exch def
83412   /ditwid pswid fontsize mul resolution mul 72000 div def
83413   /ditsiz fontsize resolution mul 72 div def
83414   ocprocs name known{ocprocs name get exec}{name cb}
83415   ifelse}def
83416/fractm [.65 0 0 .6 0 0] def
83417/fraction
83418 {/fden exch def /fnum exch def gsave /cf currentfont def
83419  cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto
83420  fnum show rmoveto currentfont cf setfont(\244)show setfont fden show
83421  grestore ditwid 0 rmoveto} def
83422/oce {grestore ditwid 0 rmoveto}def
83423/dm {ditsiz mul}def
83424/ocprocs 50 dict def ocprocs begin
83425(14){(1)(4)fraction}def
83426(12){(1)(2)fraction}def
83427(34){(3)(4)fraction}def
83428(13){(1)(3)fraction}def
83429(23){(2)(3)fraction}def
83430(18){(1)(8)fraction}def
83431(38){(3)(8)fraction}def
83432(58){(5)(8)fraction}def
83433(78){(7)(8)fraction}def
83434(sr){gsave .05 dm .16 dm rmoveto(\326)show oce}def
83435(is){gsave 0 .15 dm rmoveto(\362)show oce}def
83436(->){gsave 0 .02 dm rmoveto(\256)show oce}def
83437(<-){gsave 0 .02 dm rmoveto(\254)show oce}def
83438(==){gsave 0 .05 dm rmoveto(\272)show oce}def
83439end
83440% DIThacks fonts for some special chars
8344150 dict dup begin
83442/FontType 3 def
83443/FontName /DIThacks def
83444/FontMatrix [.001 0.0 0.0 .001 0.0 0.0] def
83445/FontBBox [-220 -280 900 900] def% a lie but ...
83446/Encoding 256 array def
834470 1 255{Encoding exch /.notdef put}for
83448Encoding
83449 dup 8#040/space put %space
83450 dup 8#110/rc put %right ceil
83451 dup 8#111/lt put %left  top curl
83452 dup 8#112/bv put %bold vert
83453 dup 8#113/lk put %left  mid curl
83454 dup 8#114/lb put %left  bot curl
83455 dup 8#115/rt put %right top curl
83456 dup 8#116/rk put %right mid curl
83457 dup 8#117/rb put %right bot curl
83458 dup 8#120/rf put %right floor
83459 dup 8#121/lf put %left  floor
83460 dup 8#122/lc put %left  ceil
83461 dup 8#140/sq put %square
83462 dup 8#141/bx put %box
83463 dup 8#142/ci put %circle
83464 dup 8#143/br put %box rule
83465 dup 8#144/rn put %root extender
83466 dup 8#145/vr put %vertical rule
83467 dup 8#146/ob put %outline bullet
83468 dup 8#147/bu put %bullet
83469 dup 8#150/ru put %rule
83470 dup 8#151/ul put %underline
83471 pop
83472/DITfd 100 dict def
83473/BuildChar{0 begin
83474 /cc exch def /fd exch def
83475 /charname fd /Encoding get cc get def
83476 /charwid fd /Metrics get charname get def
83477 /charproc fd /CharProcs get charname get def
83478 charwid 0 fd /FontBBox get aload pop setcachedevice
83479 40 setlinewidth
83480 newpath 0 0 moveto gsave charproc grestore
83481 end}def
83482/BuildChar load 0 DITfd put
83483%/UniqueID 5 def
83484/CharProcs 50 dict def
83485CharProcs begin
83486/space{}def
83487/.notdef{}def
83488/ru{500 0 rls}def
83489/rn{0 750 moveto 500 0 rls}def
83490/vr{20 800 moveto 0 -770 rls}def
83491/bv{20 800 moveto 0 -1000 rls}def
83492/br{20 770 moveto 0 -1040 rls}def
83493/ul{0 -250 moveto 500 0 rls}def
83494/ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def
83495/bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def
83496/sq{80 0 rmoveto currentpoint dround newpath moveto
83497    640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def
83498/bx{80 0 rmoveto currentpoint dround newpath moveto
83499    640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def
83500/ci{355 333 rmoveto currentpoint newpath 333 0 360 arc
83501    50 setlinewidth stroke}def
83502
83503/lt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def
83504/lb{20 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def
83505/rt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def
83506/rb{20 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def
83507/lk{20 800 moveto 20 300 -280 300 s4 arcto pop pop 1000 sub
83508    currentpoint stroke moveto
83509    20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def
83510/rk{20 800 moveto 20 300 320 300 s4 arcto pop pop 1000 sub
83511    currentpoint stroke moveto
83512    20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def
83513/lf{20 800 moveto 0 -1000 rlineto s4 0 rls}def
83514/rf{20 800 moveto 0 -1000 rlineto s4 neg 0 rls}def
83515/lc{20 -200 moveto 0 1000 rlineto s4 0 rls}def
83516/rc{20 -200 moveto 0 1000 rlineto s4 neg 0 rls}def
83517end
83518
83519/Metrics 50 dict def Metrics begin
83520/.notdef 0 def
83521/space 500 def
83522/ru 500 def
83523/br 0 def
83524/lt 250 def
83525/lb 250 def
83526/rt 250 def
83527/rb 250 def
83528/lk 250 def
83529/rk 250 def
83530/rc 250 def
83531/lc 250 def
83532/rf 250 def
83533/lf 250 def
83534/bv 250 def
83535/ob 350 def
83536/bu 350 def
83537/ci 750 def
83538/bx 750 def
83539/sq 750 def
83540/rn 500 def
83541/ul 500 def
83542/vr 0 def
83543end
83544
83545DITfd begin
83546/s2 500 def /s4 250 def /s3 333 def
83547/a4p{arcto pop pop pop pop}def
83548/2cx{2 copy exch}def
83549/rls{rlineto stroke}def
83550/currx{currentpoint pop}def
83551/dround{transform round exch round exch itransform} def
83552end
83553end
83554/DIThacks exch definefont pop
83555
83556ditstart
83557(psc)xT
83558576 1 1 xr
835591(Times-Roman)xf 1 f
835602(Times-Italic)xf 2 f
835613(Times-Bold)xf 3 f
835624(Times-BoldItalic)xf 4 f
835635(Helvetica)xf 5 f
835646(Helvetica-Bold)xf 6 f
835657(Courier)xf 7 f
835668(Courier-Bold)xf 8 f
835679(Symbol)xf 9 f
8356810(DIThacks)xf 10 f
8356910 s
835701 f
83571xi
83572%%EndProlog
83573
83574%%Page: 1 1
8357510 s 0 xH 0 xS 1 f
835763 f
8357712 s
835781425 672(A)N
835791518(Consumer)X
835801968(Library)X
835812318(Interface)X
835822716(to)X
835832820(DWARF)X
835842 f
8358511 s
835861084 816(UNIX)N
835871311(International)X
835881799(Programming)X
835892314(Languages)X
835902722(Special)X
835913004(Interest)X
835923295(Group)X
835933 f
83594576 1248(1.)N
83595686(INTRODUCTION)X
835961 f
8359710 s
83598576 1392(This)N
83599752(document)X
836001102(describes)X
836011435(an)X
836021545(interface)X
836031861(to)X
836042 f
836051957(libdwarf)X
836061 f
836072227(,)X
836082281(a)X
836092351(library)X
836102599(of)X
836112700(functions)X
836123032(to)X
836133128(provide)X
836143407(access)X
836153647(to)X
836163743(DWARF)X
83617576 1488(debugging)N
83618951(information)X
836191366(records,)X
836201660(DWARF)X
836211986(line)X
836222143(number)X
836232425(information,)X
836242860(DWARF)X
836253186(address)X
836263464(range)X
836273680(and)X
836283832(global)X
83629576 1584(names)N
83630820(information,)X
836311257(weak)X
836321466(names)X
836331710(information,)X
836342147(DWARF)X
836352475(frame)X
836362702(description)X
836373097(information,)X
836383534(DWARF)X
836393863(static)X
83640576 1680(function)N
83641863(names,)X
836421108(DWARF)X
836431417(static)X
836441606(variables,)X
836451936(and)X
836462072(DWARF)X
836472381(type)X
836482539(information.)X
836493 f
8365011 s
83651576 1968(1.1)N
83652730(Purpose)X
836531060(and)X
836541224(Scope)X
836551 f
8365610 s
83657576 2112(The)N
83658743(purpose)X
836591039(of)X
836601148(this)X
836611305(document)X
836621663(is)X
836631758(to)X
836641862(document)X
836652221(a)X
836662300(library)X
836672557(of)X
836682667(functions)X
836693008(to)X
836703113(access)X
836713362(DWARF)X
836723694(debugging)X
83673576 2208(information.)N
836741005(There)X
836751224(is)X
836761308(no)X
836771419(effort)X
836781629(made)X
836791834(in)X
836801927(this)X
836812073(document)X
836822420(to)X
836832513(address)X
836842785(the)X
836852914(creation)X
836863204(of)X
836873302(these)X
836883498(records)X
836893766(as)X
836903863(those)X
83691576 2304(issues)N
83692787(are)X
83693906(addressed)X
836941243(separately.)X
83695576 2544(Additionally,)N
836961022(the)X
836971142(focus)X
836981338(of)X
836991427(this)X
837001564(document)X
837011902(is)X
837021977(the)X
837032097(functional)X
837042445(interface,)X
837052770(and)X
837062909(as)X
837072999(such,)X
837083189(implementation)X
837093714(as)X
837103804(well)X
837113965(as)X
83712576 2640(optimization)N
837131000(issues)X
837141211(are)X
837151330(intentionally)X
837161754(ignored.)X
837173 f
8371811 s
83719576 2880(1.2)N
83720730(Definitions)X
837210(Courier)xf 0 f
837221 f
8372310 s
83724576 3024(DWARF)N
83725890(debugging)X
837261253(information)X
837271656(entries)X
837281895(\(DIE\))X
837292108(are)X
837302232(the)X
837312355(segments)X
837322678(of)X
837332770(information)X
837343173(placed)X
837353408(in)X
837363496(the)X
837370(Courier)xf 0 f
837381 f
837390 f
837403648(.debug_*)X
837411 f
83742576 3120(sections)N
83743864(by)X
83744974(compilers,)X
837451340(assemblers,)X
837461742(and)X
837471888(linkage)X
837482154(editors)X
837492402(that,)X
837502572(in)X
837512664(conjunction)X
837523072(with)X
837533244(line)X
837543394(number)X
837553669(entries,)X
837563933(are)X
83757576 3216(necessary)N
83758915(for)X
837591035(symbolic)X
837601354(source-level)X
837611773(debugging.)X
837622177(Refer)X
837632382(to)X
837642470(the)X
837652594(document)X
837662936(")X
837672 f
837682969(DWARF)X
837693267(Debugging)X
837703650(Information)X
83771576 3312(Format)N
837721 f
83773(")S
83774869(from)X
837751045(UI)X
837761150(PLSIG)X
837771392(for)X
837781506(a)X
837791562(more)X
837801747(complete)X
837812061(description)X
837822437(of)X
837832524(these)X
837842709(entries.)X
83785576 3552(This)N
83786739(document)X
837871076(adopts)X
837881306(all)X
837891407(the)X
837901526(terms)X
837911725(and)X
837921862(definitions)X
837932226(in)X
837942310(")X
837952 f
837962343(DWARF)X
837972637(Debugging)X
837983015(Information)X
837993419(Format)X
838001 f
83801(")S
838023714(version)X
838033972(2.)X
83804576 3648(It)N
83805669(focuses)X
83806953(on)X
838071076(the)X
838081217(implementation)X
838091762(at)X
838101863(Silicon)X
838112132(Graphics)X
838122465(Computer)X
838132828(Systems.)X
838143177(Although)X
838153522(we)X
838163659(believe)X
838173934(the)X
83818576 3744(interface)N
83819878(is)X
83820951(general)X
838211208(enough)X
838221464(to)X
838231546(be)X
838241642(of)X
838251729(interest)X
838261986(to)X
838272069(other)X
838282255(vendors)X
838292530(too,)X
838302673(there)X
838312855(are)X
838322975(a)X
838333032(few)X
838343174(places)X
838353396(where)X
838363614(changes)X
838373894(may)X
83838576 3840(need)N
83839748(to)X
83840830(be)X
83841926(made.)X
838423 f
8384311 s
83844576 4080(1.3)N
83845730(Overview)X
838461 f
8384710 s
83848576 4224(The)N
83849747(remaining)X
838501118(sections)X
838511422(of)X
838521535(this)X
838531696(document)X
838542058(describe)X
838552373(the)X
838562518(proposed)X
838572859(interface)X
838583188(to)X
838590 f
838603325(libdwarf)X
838611 f
83862(,)S
838633776(first)X
838643952(by)X
83865576 4320(describing)N
83866952(the)X
838671092(purpose)X
838681387(of)X
838691495(additional)X
838701856(types)X
838712066(defined)X
838722348(by)X
838732469(the)X
838742608(interface,)X
838752951(followed)X
838763277(by)X
838773398(descriptions)X
838783826(of)X
838793934(the)X
83880576 4416(available)N
83881892(operations.)X
838821292(This)X
838831460(document)X
838841802(assumes)X
838852095(you)X
838862241(are)X
838872366(thoroughly)X
838882743(familiar)X
838893023(with)X
838903191(the)X
838913315(information)X
838923720(contained)X
83893576 4512(in)N
83894658(the)X
838952 f
83896776(DWARF)X
838971068(Debugging)X
838981444(Information)X
838991846(Format)X
839001 f
839012106(document.)X
83902576 4656(We)N
83903714(separate)X
839041004(the)X
839051129(functions)X
839061454(into)X
839071605(several)X
839081860(categories)X
839092213(to)X
839102302(emphasize)X
839112668(that)X
839122815(not)X
839132944(all)X
839143051(consumers)X
839153421(want)X
839163604(to)X
839173693(use)X
839183827(all)X
839193934(the)X
83920576 4752(functions.)N
83921936(We)X
839221070(call)X
839231208(the)X
839241328(categories)X
839251676(Debugger,)X
839262035(Internal-level,)X
839272510(High-level,)X
839282895(and)X
839293033(Miscellaneous)X
839303517(not)X
839313640(because)X
839323916(one)X
83933576 4848(is)N
83934662(more)X
83935860(important)X
839361204(than)X
839371375(another)X
839381649(but)X
839391784(as)X
839401884(a)X
839411953(way)X
839422120(of)X
839432220(making)X
839442493(the)X
839452625(rather)X
839462847(large)X
839473042(set)X
839483165(of)X
839493266(function)X
839503567(calls)X
839513748(easier)X
839523970(to)X
83953576 4944(understand.)N
83954576 5088(Unless)N
83955823(otherwise)X
839561164(specified,)X
839571503(all)X
839581612(functions)X
839591939(and)X
839602084(structures)X
839612425(should)X
839622667(be)X
839632772(taken)X
839642975(as)X
839653071(being)X
839663278(designed)X
839673592(for)X
839683715(Debugger)X
83969576 5184(consumers.)N
83970576 5328(The)N
83971732(Debugger)X
839721080(Interface)X
839731398(of)X
839741496(this)X
839751642(library)X
839761887(is)X
839771971(intended)X
839782278(to)X
839792372(be)X
839802480(used)X
839812659(by)X
839822771(debuggers.)X
839833173(The)X
839843330(interface)X
839853644(is)X
839863729(low-level)X
83987576 5424(\(close)N
83988796(to)X
83989886(dwarf\))X
839901129(but)X
839911259(suppresses)X
839921630(irrelevant)X
839931966(detail.)X
839942212(A)X
839952298(debugger)X
839962625(will)X
839972777(want)X
839982961(to)X
839993051(absorb)X
840003292(all)X
840013399(of)X
840023493(some)X
840033689(sections)X
840043974(at)X
84005576 5520(startup)N
84006816(and)X
84007954(will)X
840081100(want)X
840091278(to)X
840101362(see)X
840111487(little)X
840121655(or)X
840131744(nothing)X
840142011(of)X
840152101(some)X
840162293(sections)X
840172574(except)X
840182807(at)X
840192888(need.)X
840203103(And)X
840213264(even)X
840223439(then)X
840233600(will)X
840243747(probably)X
84025576 5616(want)N
84026754(to)X
84027838(absorb)X
840281074(only)X
840291238(the)X
840301358(information)X
840311758(in)X
840321842(a)X
840331900(single)X
840342113(compilation)X
840352517(unit)X
840362663(at)X
840372743(a)X
840382801(time.)X
840393005(A)X
840403085(debugger)X
840413406(does)X
840423575(not)X
840433698(care)X
840443854(about)X
84045576 5712(implementation)N
840461098(details)X
840471327(of)X
840481414(the)X
840491532(library.)X
84050576 6164(rev)N
84051699(1.52,)X
84052879(02)X
84053979(Oct)X
840541115(2003)X
840552237(-)X
840562284(1)X
840572344(-)X
84058
840592 p
84060%%Page: 2 2
840610(Courier)xf 0 f
8406210 s 0 xH 0 xS 0 f
840631 f
840642237 384(-)N
840652284(2)X
840662344(-)X
84067576 768(The)N
84068722(Internal-level)X
840691176(Interface)X
840701484(is)X
840711558(for)X
840721673(a)X
840731731(DWARF)X
840742042(prettyprinter)X
840752465(and)X
840762603(checker.)X
840772916(A)X
840782996(thorough)X
840793307(prettyprinter)X
840803730(will)X
840813876(want)X
84082576 864(to)N
84083669(know)X
84084878(all)X
84085989(kinds)X
840861193(of)X
840871291(internal)X
840881567(things)X
840891793(\(like)X
840901971(actual)X
840912194(FORM)X
840922451(numbers)X
840932758(and)X
840942905(actual)X
840953128(offsets\))X
840963400(so)X
840973502(it)X
840983577(can)X
840993720(check)X
841003938(for)X
84101576 960(appropriate)N
84102972(structure)X
841031283(in)X
841041375(the)X
841051503(DWARF)X
841061822(data)X
841071986(and)X
841082132(print)X
841092314(\(on)X
841102452(request\))X
841112742(all)X
841122853(that)X
841133004(internal)X
841143280(information)X
841153689(for)X
841163814(human)X
84117576 1056(users)N
84118767(and)X
84119909(libdwarf)X
841201207(authors)X
841211469(and)X
841221611(compiler-writers.)X
841232212(Calls)X
841242402(in)X
841252490(this)X
841262631(interface)X
841272939(provide)X
841283210(data)X
841293370(a)X
841303432(debugger)X
841313757(does)X
841323930(not)X
84133576 1152(care)N
84134731(about.)X
84135576 1296(The)N
84136721(High-level)X
841371084(Interface)X
841381391(is)X
841391464(for)X
841401578(higher)X
841411803(level)X
841421979(access)X
841432205(\(it's)X
841442354(not)X
841452476(really)X
841462679(a)X
841472735(high)X
841482897(level)X
841493073(interface!\).)X
841503469(Programs)X
841513797(such)X
841523965(as)X
84153576 1392(disassemblers)N
841541060(will)X
841551223(want)X
841561418(to)X
841571519(be)X
841581634(able)X
841591807(to)X
841601908(display)X
841612178(relevant)X
841622476(information)X
841632892(about)X
841643108(functions)X
841653444(and)X
841663598(line)X
841673756(numbers)X
84168576 1488(without)N
84169840(having)X
841701078(to)X
841711160(invest)X
841721371(too)X
841731493(much)X
841741691(effort)X
841751890(in)X
841761972(looking)X
841772236(at)X
841782314(DWARF.)X
84179576 1632(The)N
84180721(miscellaneous)X
841811195(interface)X
841821497(is)X
841831570(just)X
841841705(what)X
841851881(is)X
841861954(left)X
841872081(over:)X
841882266(the)X
841892384(error)X
841902561(handler)X
841912822(functions.)X
84192576 1776(The)N
84193735(following)X
841941080(is)X
841951167(a)X
841961237(brief)X
841971423(mention)X
841981719(of)X
841991820(the)X
842001952(changes)X
842012245(in)X
842022341(this)X
842032490(libdwarf)X
842042796(from)X
842052987(the)X
842063120(libdwarf)X
842073427(draft)X
842083614(for)X
842093743(DWARF)X
84210576 1872(Version)N
84211850(1.)X
842123 f
8421311 s
84214576 2016(1.4)N
84215730(Items)X
84216961(Changed)X
842171 f
8421810 s
84219576 2160(dwarf_nextglob\(\),)N
842201181(dwarf_globname\(\),)X
842211822(and)X
842221961(dwarf_globdie\(\))X
842232506(were)X
842242686(all)X
842252789(changed)X
842263080(to)X
842273165(operate)X
842283425(on)X
842293529(the)X
842303651(items)X
842313848(in)X
842323934(the)X
84233576 2256(.debug_pubnames)N
842341177(section.)X
84235576 2400(All)N
84236707(functions)X
842371034(were)X
842381220(modified)X
842391538(to)X
842401629(return)X
842411850(solely)X
842422070(an)X
842432175(error)X
842442361(code.)X
842452582(Data)X
842462763(is)X
842472845(returned)X
842483142(through)X
842493421(pointer)X
842503678(arguments.)X
84251576 2496(This)N
84252745(makes)X
84253977(writing)X
842541235(safe)X
842551392(and)X
842561535(correct)X
842571786(library-using-code)X
842582406(far)X
842592523(easier.)X
842602778(For)X
842612916(justification)X
842623325(for)X
842633446(this)X
842643588(approach,)X
842653929(see)X
84266576 2592(the)N
84267694(book)X
84268874(by)X
84269974(Steve)X
842701172(Maguire)X
842711464(titled)X
842721648("Writing)X
842731950(Solid)X
842742138(Code")X
842752360(at)X
842762438(your)X
842772605(bookstore.)X
842783 f
8427911 s
84280576 2928(1.5)N
84281730(Items)X
84282961(Removed)X
842831 f
8428410 s
84285576 3072(Dwarf_Type)N
842861007(was)X
842871152(removed)X
842881453(since)X
842891638(types)X
842901827(are)X
842911946(no)X
842922046(longer)X
842932271(special.)X
84294576 3216(dwarf_typeof\(\))N
842951083(was)X
842961228(removed)X
842971529(since)X
842981714(types)X
842991903(are)X
843002022(no)X
843012122(longer)X
843022347(special.)X
84303576 3360(Dwarf_Ellist)N
843041010(was)X
843051155(removed)X
843061456(since)X
843071641(element)X
843081915(lists)X
843092063(no)X
843102163(longer)X
843112388(are)X
843122507(a)X
843132563(special)X
843142806(format.)X
84315576 3504(Dwarf_Bounds)N
843161086(was)X
843171231(removed)X
843181532(since)X
843191717(bounds)X
843201968(have)X
843212140(been)X
843222312(generalized.)X
84323576 3648(dwarf_nextdie\(\))N
843241119(was)X
843251269(replaced)X
843261567(by)X
843271672 0.2321(dwarf_next_cu_header\(\))AX
843282488(to)X
843292575(reflect)X
843302806(the)X
843312929(real)X
843323075(way)X
843333234(dwarf)X
843343447(is)X
843353525(organized.)X
843363907(The)X
84337576 3744(dwarf_nextdie\(\))N
843381118(was)X
843391267(only)X
843401433(useful)X
843411653(for)X
843421771(getting)X
843432017(to)X
843442103(compilation)X
843452508(unit)X
843462655(beginnings,)X
843473049(so)X
843483143(it)X
843493210(does)X
843503380(not)X
843513505(seem)X
843523693(harmful)X
843533970(to)X
84354576 3840(remove)N
84355837(it)X
84356901(in)X
84357983(favor)X
843581173(of)X
843591260(a)X
843601316(more)X
843611501(direct)X
843621704(function.)X
84363576 3984(dwarf_childcnt\(\))N
843641136(is)X
843651209(removed)X
843661510(on)X
843671610(grounds)X
843681888(that)X
843692028(no)X
843702128(good)X
843712308(use)X
843722435(was)X
843732580(apparent.)X
84374576 4128 0.2083(dwarf_prevline\(\))AN
843751151(and)X
843761297(dwarf_nextline\(\))X
843771867(were)X
843782055(removed)X
843792367(on)X
843802478(grounds)X
843812767(this)X
843822913(is)X
843832997(better)X
843843211(left)X
843853349(to)X
843863442(a)X
843873509(debugger)X
843883839(to)X
843893932(do.)X
84390576 4224(Similarly,)N
84391913(dwarf_dieline\(\))X
843921433(was)X
843931578(removed.)X
84394576 4368(dwarf_is1stline\(\))N
843951144(was)X
843961289(removed)X
843971590(as)X
843981677(it)X
843991741(was)X
844001886(not)X
844012008(meaningful)X
844022393(for)X
844032507(the)X
844042625(revised)X
844052877(dwarf)X
844063085(line)X
844073225(operations.)X
84408576 4512(Any)N
84409739(libdwarf)X
844101036(implementation)X
844111563(might)X
844121774(well)X
844131937(decide)X
844142172(to)X
844152259(support)X
844162524(all)X
844172629(the)X
844182753(removed)X
844193060(functionality)X
844203495(and)X
844213637(to)X
844223725(retain)X
844233934(the)X
84424576 4608(DWARF)N
84425893(Version)X
844261175(1)X
844271242(meanings)X
844281576(of)X
844291670(that)X
844301817(functionality.)X
844312293(This)X
844322462(would)X
844332689(be)X
844342792(difficult)X
844353077(because)X
844363359(the)X
844373484(original)X
844383760(libdwarf)X
84439576 4704(draft)N
84440759(specification)X
844411200(used)X
844421378(traditional)X
844431738(C)X
844441822(library)X
844452068(interfaces)X
844462413(which)X
844472641(confuse)X
844482923(the)X
844493053(values)X
844503290(returned)X
844513590(by)X
844523702(successful)X
84453576 4800(calls)N
84454743(with)X
84455905(exceptional)X
844561295(conditions)X
844571648(like)X
844581788(failures)X
844592049(and)X
844602185('no)X
844612312(more)X
844622497(data')X
844632678(indications.)X
844643 f
8446511 s
84466576 5040(1.6)N
84467730(Revision)X
844681075(History)X
844691 f
8447010 s
84471576 5184(March)N
84472806(93)X
844731176(Work)X
844741379(on)X
844751479(dwarf2)X
844761727(SGI)X
844771876(draft)X
844782048(begins)X
84479576 5328(June)N
84480743(94)X
844811176(The)X
844821321(function)X
844831608(returns)X
844841851(are)X
844851970(changed)X
844862258(to)X
844872340(return)X
844882552(an)X
844892648(error/success)X
844903088(code)X
844913260(only.)X
844923 f
8449311 s
84494576 5616(2.)N
84495686(Types)X
84496933(Definitions)X
844971 f
8449810 s
84499576 6164(rev)N
84500699(1.52,)X
84501879(02)X
84502979(Oct)X
845031115(2003)X
845042237(-)X
845052284(2)X
845062344(-)X
84507
845083 p
84509%%Page: 3 3
845100(Courier)xf 0 f
8451110 s 0 xH 0 xS 0 f
845121 f
845132237 384(-)N
845142284(3)X
845152344(-)X
845163 f
8451711 s
84518576 768(2.1)N
84519730(General)X
845201056(Description)X
845211 f
8452210 s
84523576 912(The)N
845242 f
84525733(libdwarf.h)X
845261 f
845271095(header)X
845281342(file)X
845291481(contains)X
845301780(typedefs)X
845312084(and)X
845322232(preprocessor)X
845332675(definitions)X
845343050(of)X
845353150(types)X
845363352(and)X
845373501(symbolic)X
845383827(names)X
84539576 1008(used)N
84540754(to)X
84541847 0.4531(reference)AX
845421179(objects)X
845431437(of)X
845442 f
845451535(libdwarf)X
845461 f
845471805(.)X
845481856(The)X
845492011(types)X
845502210(defined)X
845512481(by)X
845522591(typedefs)X
845532893(contained)X
845543235(in)X
845552 f
845563327(libdwarf.h)X
845571 f
845583687(all)X
845593797(use)X
845603934(the)X
84561576 1104(convention)N
84562952(of)X
845631039(adding)X
845640 f
845651305(Dwarf_)X
845661 f
845671613(as)X
845681700(a)X
845691756(prefix)X
845701968(and)X
845712104(can)X
845722236(be)X
845732332(placed)X
845742562(in)X
845752644(three)X
845762825(categories:)X
845778 s
8457810 f
84579634 1344(g)N
8458010 s
845811 f
84582696(Scalar)X
84583923(types)X
845841118(:)X
845851166(The)X
845861318(scalar)X
845871533(types)X
845881729(defined)X
845891997(in)X
845902 f
845912086(libdwarf.h)X
845921 f
845932443(are)X
845942569(defined)X
845952837(primarily)X
845963162(for)X
845973283(notational)X
845983630(convenience)X
84599696 1440(and)N
84600835(identification.)X
846011325(Depending)X
846021700(on)X
846031803(the)X
846041924(individual)X
846052271(definition,)X
846062624(they)X
846072784(are)X
846082905(interpreted)X
846093275(as)X
846103364(a)X
846113422(value,)X
846123638(a)X
846133696(pointer,)X
846143965(or)X
84615696 1536(as)N
84616783(a)X
84617839(flag.)X
846188 s
8461910 f
84620634 1680(g)N
8462110 s
846221 f
84623696(Aggregate)X
846241052(types)X
846251242(:)X
846261285(Some)X
846271488(values)X
846281714(can)X
846291847(not)X
846301970(be)X
846312068(represented)X
846322461(by)X
846332563(a)X
846342621(single)X
846352834(scalar)X
846363044(type;)X
846373226(they)X
846383386(must)X
846393563(be)X
846403661(represented)X
84641696 1776(by)N
84642796(a)X
84643852(collection)X
846441188(of,)X
846451295(or)X
846461382(as)X
846471469(a)X
846481525(union)X
846491727(of,)X
846501834(scalar)X
846512042(and/or)X
846522267(aggregate)X
846532600(types.)X
846548 s
8465510 f
84656634 1920(g)N
8465710 s
846581 f
84659696(Opaque)X
84660972(types)X
846611167(:)X
846621215(The)X
846631366(complete)X
846641686(definition)X
846652023(of)X
846662116(these)X
846672307(types)X
846682502(is)X
846692581(intentionally)X
846703012(omitted;)X
846713305(their)X
846723479(use)X
846733613(is)X
846743693(as)X
846753787(handles)X
84676696 2016(for)N
84677816(query)X
846781025(operations,)X
846791405(which)X
846801627(will)X
846811777(yield)X
846821963(either)X
846832172(an)X
846842274(instance)X
846852563(of)X
846862656(another)X
846872923(opaque)X
846883181(type)X
846893344(to)X
846903431(be)X
846913532(used)X
846923704(in)X
846933791(another)X
84694696 2112(query,)N
84695919(or)X
846961006(an)X
846971102(instance)X
846981385(of)X
846991472(a)X
847001528(scalar)X
847011736(or)X
847021823(aggregate)X
847032156(type,)X
847042334(which)X
847052550(is)X
847062623(the)X
847072741(actual)X
847082953(result.)X
847093 f
8471011 s
84711576 2400(2.2)N
84712730(Scalar)X
84713992(Types)X
847141 f
8471510 s
84716576 2544(The)N
84717721(following)X
847181052(are)X
847191171(the)X
847201289(defined)X
847211550(by)X
847222 f
847231650(libdwarf.h)X
847241 f
847251980(:)X
847260 f
84727576 2880(typedef)N
84728960(int)X
847291872(Dwarf_Bool;)X
84730576 2976(typedef)N
84731960(unsigned)X
847321392(long)X
847331632(long)X
847341872(Dwarf_Off;)X
84735576 3072(typedef)N
84736960(unsigned)X
847371392(long)X
847381632(long)X
847391872(Dwarf_Unsigned;)X
84740576 3168(typedef)N
84741960(unsigned)X
847421392(short)X
847431872(Dwarf_Half;)X
84744576 3264(typedef)N
84745960(unsigned)X
847461392(char)X
847471872(Dwarf_Small;)X
84748576 3360(typedef)N
84749960(signed)X
847501296(long)X
847511536(long)X
847521872(Dwarf_Signed;)X
84753576 3456(typedef)N
84754960(unsigned)X
847551392(long)X
847561632(long)X
847571872(Dwarf_Addr;)X
84758576 3552(typedef)N
84759960(void)X
847601872(*Dwarf_Ptr;)X
84761576 3648(typedef)N
84762960(void)X
847631296(\(*Dwarf_Handler\)\(Dwarf_Error)X
847642688(*error,)X
847653072(Dwarf_Ptr)X
847663552(errarg\);)X
847671 f
84768576 3888(Dwarf_Ptr)N
84769959(is)X
847701056(an)X
847711176(address)X
847721462(for)X
847731601(use)X
847741753(by)X
847751878(the)X
847762021(host)X
847772199(program)X
847782516(calling)X
847792779(the)X
847802922(library,)X
847813201(not)X
847823348(for)X
847833487(representing)X
847843929(pc-)X
84785576 3984(values/addresses)N
847861141(within)X
847871375(the)X
847881503(target)X
847891716(object)X
847901942(file.)X
847912119(Dwarf_Addr)X
847922560(is)X
847932643(for)X
847942767(pc-values)X
847953105(within)X
847963339(the)X
847973467(target)X
847983680(object)X
847993905(file.)X
84800576 4080(The)N
84801732(sample)X
84802990(scalar)X
848031209(type)X
848041378(assignments)X
848051800(above)X
848062023(are)X
848072153(for)X
848082278(a)X
848092 f
848102345(libdwarf.h)X
848111 f
848122707(that)X
848132859(can)X
848143003(read)X
848153174(and)X
848163322(write)X
848173519(32-bit)X
848183742(or)X
848193841(64-bit)X
84820576 4176(binaries)N
84821880(on)X
848221009(a)X
848231094(32-bit)X
848241334(or)X
848251450(64-bit)X
848261690(host)X
848271872(machine.)X
848282233(The)X
848292407(types)X
848302625(must)X
848312829(be)X
848322974(defined)X
848333264(appropriately)X
848343741(for)X
848353884(each)X
84836576 4272(implementation)N
848371103(of)X
848381195(libdwarf.)X
848391532(A)X
848401615(description)X
848411996(of)X
848422088(these)X
848432278(scalar)X
848442491(types)X
848452685(in)X
848462772(the)X
848472895(SGI/MIPS)X
848483257(environment)X
848493687(is)X
848503766(given)X
848513970(in)X
84852576 4368(Figure)N
84853805(1.)X
84854576 6164(rev)N
84855699(1.52,)X
84856879(02)X
84857979(Oct)X
848581115(2003)X
848592237(-)X
848602284(3)X
848612344(-)X
84862
848634 p
84864%%Page: 4 4
848650(Courier)xf 0 f
8486610 s 0 xH 0 xS 0 f
848671 f
848682237 384(-)N
848692284(4)X
848702344(-)X
848710 f
8487210 f
84873854 688(i)N
84874873(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
848753 f
84876894 784(NAME)N
848771686(SIZE)X
848781987(ALIGNMENT)X
848792609(PURPOSE)X
8488010 f
84881854 800(i)N
84882873(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
848833 f
84884894 896(Dwarf_Bool)N
848851756(4)X
848862218(4)X
848872609(Boolean)X
848882904(states)X
84889894 992(Dwarf_Off)N
848901756(8)X
848912218(8)X
848922609(Unsigned)X
848932948(file)X
848943075(offset)X
84895894 1088(Dwarf_Unsigned)N
848961756(8)X
848972218(8)X
848982609(Unsigned)X
848992948(large)X
849003142(integer)X
84901894 1184(Dwarf_Half)N
849021756(2)X
849032218(2)X
849042609(Unsigned)X
849052948(medium)X
849063248(integer)X
84907894 1280(Dwarf_Small)N
849081756(1)X
849092218(1)X
849102609(Unsigned)X
849112948(small)X
849123150(integer)X
84913894 1376(Dwarf_Signed)N
849141756(8)X
849152218(8)X
849162609(Signed)X
849172859(large)X
849183053(integer)X
84919894 1472(Dwarf_Addr)N
849201756(8)X
849212218(8)X
849222609(Program)X
849232937(address)X
849242609 1568(\(target)N
849252862(program\))X
84926894 1664(Dwarf_Ptr)N
849271728(4)X
849289 f
84929(|)S
849303 f
84931(8)S
849322190(4)X
849339 f
84934(|)S
849353 f
84936(8)S
849372609(Dwarf)X
849382848(section)X
849393104(pointer)X
849402609 1760(\(host)N
849412798(program\))X
84942894 1856(Dwarf_Handler)N
849431728(4)X
849449 f
84945(|)S
849463 f
84947(8)S
849482190(4)X
849499 f
84950(|)S
849513 f
84952(8)S
849532609(Pointer)X
849542883(to)X
849552609 1952(error)N
849562813(handler)X
849573099(function)X
8495810 f
84959854 1968(i)N
84960873(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
84961854(c)X
849621888(c)Y
849631808(c)Y
849641728(c)Y
849651648(c)Y
849661568(c)Y
849671488(c)Y
849681408(c)Y
849691328(c)Y
849701248(c)Y
849711168(c)Y
849721088(c)Y
849731008(c)Y
84974928(c)Y
84975848(c)Y
84976768(c)Y
849773753 1968(c)N
849781888(c)Y
849791808(c)Y
849801728(c)Y
849811648(c)Y
849821568(c)Y
849831488(c)Y
849841408(c)Y
849851328(c)Y
849861248(c)Y
849871168(c)Y
849881088(c)Y
849891008(c)Y
84990928(c)Y
84991848(c)Y
84992768(c)Y
849933 f
849941909 2064(Figure)N
849952156(1.)X
849962256(Scalar)X
849972494(Types)X
8499811 s
84999576 2352(2.3)N
85000730(Aggregate)X
850011137(Types)X
850021 f
8500310 s
85004576 2496(The)N
85005731(following)X
850061072(aggregate)X
850071416(types)X
850081616(are)X
850091746(defined)X
850102018(by)X
850112129(the)X
850122258(SGI)X
850132 f
850142418(libdwarf.h)X
850151 f
850162748(:)X
850170 f
850182877(Dwarf_Loc)X
850191 f
85020(,)S
850210 f
850223388(Dwarf_Locdesc)X
850231 f
85024(,)S
850250 f
85026576 2592(Dwarf_Block)N
850271 f
85028(,)S
850290 f
850301182(Dwarf_Frame_Op)X
850311 f
85032(.)S
850331924(While)X
850342150(most)X
850352335(of)X
850360 f
850372460(libdwarf)X
850381 f
850392874(acts)X
850403029(on)X
850413139(or)X
850423236(returns)X
850433489(simple)X
850443731(values)X
850453965(or)X
85046576 2688(opaque)N
85047828(pointer)X
850481075(types,)X
850491284(this)X
850501419(small)X
850511612(set)X
850521721(of)X
850531808(structures)X
850542140(seems)X
850552356(useful.)X
850563 f
85057576 2928(2.3.1)N
85058776(Location)X
850591098(Record)X
850601 f
85061576 3072(The)N
850620 f
85063749(Dwarf_Loc)X
850641 f
850651201(type)X
850661359(identifies)X
850671677(a)X
850681733(single)X
850691944(atom)X
850702124(of)X
850712211(a)X
850722267(location)X
850732545(description)X
850742921(or)X
850753008(a)X
850763064(location)X
850773342(expression.)X
850780 f
85079576 3312(typedef)N
85080960(struct)X
850811296({)X
85082960 3408(Dwarf_Small)N
850831872(lr_atom;)X
85084960 3504(Dwarf_Unsigned)N
850851872(lr_number;)X
85086960 3600(Dwarf_Unsigned)N
850871872(lr_number2;)X
85088960 3696(Dwarf_Unsigned)N
850891872(lr_offset;)X
85090576 3792(})N
85091672(Dwarf_Loc;)X
850921 f
85093576 4032(The)N
850940 f
85095752(lr_atom)X
850961 f
850971111(identifies)X
850981432(the)X
850991553(atom)X
851001736(corresponding)X
851012218(to)X
851022303(the)X
851030 f
851042452(DW_OP_*)X
851051 f
851062811(definition)X
851073145(in)X
851082 f
851093230(dwarf.h)X
851101 f
851113499(and)X
851123638(it)X
851133706(represents)X
85114576 4128(the)N
85115694(operation)X
851161017(to)X
851171099(be)X
851181195(performed)X
851191550(in)X
851201632(order)X
851211822(to)X
851221904(locate)X
851232116(the)X
851242234(item)X
851252396(in)X
851262478(question.)X
85127576 4368(The)N
851280 f
85129753(lr_number)X
851301 f
851311209(field)X
851321380(is)X
851331457(the)X
851341579(operand)X
851351862(to)X
851361948(be)X
851372048(used)X
851382219(in)X
851392305(the)X
851402427(calculation)X
851412804(specified)X
851423119(by)X
851433224(the)X
851440 f
851453375(lr_atom)X
851461 f
851473736(field;)X
851483930(not)X
85149576 4464(all)N
85150685(atoms)X
85151905(use)X
851521041(this)X
851531185(field.)X
851541401(Some)X
851551612(atom)X
851561801(operations)X
851572164(imply)X
851582379(signed)X
851592617(numbers)X
851602922(so)X
851613022(it)X
851623095(is)X
851633177(necessary)X
851643519(to)X
851653610(cast)X
851663763(this)X
851673906(to)X
851683996(a)X
851690 f
85170576 4560(Dwarf_Signed)N
851711 f
851721172(type)X
851731330(for)X
851741444(those)X
851751633(operations.)X
85176576 4800(The)N
851770 f
85178755(lr_number2)X
851791 f
851801261(field)X
851811434(is)X
851821513(the)X
851831637(second)X
851841886(operand)X
851852171(specified)X
851862488(by)X
851872595(the)X
851880 f
851892748(lr_atom)X
851901 f
851913111(field;)X
851923307(only)X
851930 f
851943504(DW_OP_BREGX)X
851951 f
85196576 4896(has)N
85197720(this)X
85198872(field.)X
851991096(Some)X
852001315(atom)X
852011512(operations)X
852021883(imply)X
852032106(signed)X
852042352(numbers)X
852052665(so)X
852062773(it)X
852072853(may)X
852083027(be)X
852093139(necessary)X
852103488(to)X
852113586(cast)X
852123747(this)X
852133898(to)X
852143996(a)X
852150 f
85216576 4992(Dwarf_Signed)N
852171 f
852181172(type)X
852191330(for)X
852201444(those)X
852211633(operations.)X
85222576 5232(The)N
852230 f
85224758(lr_offset)X
852251 f
852261219(field)X
852271395(is)X
852281477(the)X
852291604(byte)X
852301772(offset)X
852311985(\(within)X
852322246(the)X
852332374(block)X
852342582(the)X
852352710(location)X
852362998(record)X
852373234(came)X
852383434(from\))X
852393647(of)X
852403744(the)X
852413872(atom)X
85242576 5328(specified)N
85243894(by)X
852441002(the)X
852450 f
852461156(lr_atom)X
852471 f
852481519(field.)X
852491733(This)X
852501902(is)X
852511982(set)X
852522098(on)X
852532205(all)X
852542312(atoms.)X
852552570(This)X
852562739(is)X
852572819(useful)X
852583042(for)X
852593163(operations)X
852600 f
852613552(DW_OP_SKIP)X
852621 f
85263576 5424(and)N
852640 f
85265740(DW_OP_BRA)X
852661 f
85267(.)S
85268576 6164(rev)N
85269699(1.52,)X
85270879(02)X
85271979(Oct)X
852721115(2003)X
852732237(-)X
852742284(4)X
852752344(-)X
85276
852775 p
85278%%Page: 5 5
852790(Courier)xf 0 f
8528010 s 0 xH 0 xS 0 f
852811 f
852822237 384(-)N
852832284(5)X
852842344(-)X
852853 f
85286576 768(2.3.2)N
85287776(Location)X
852881098(Description)X
852891 f
85290576 912(The)N
852910 f
85292751(Dwarf_Locdesc)X
852931 f
852941397(type)X
852951557(represents)X
852961905(an)X
852972003(ordered)X
852982271(list)X
852992390(of)X
853000 f
853012507(Dwarf_Loc)X
853021 f
853032961(records)X
853043220(used)X
853053389(in)X
853063474(the)X
853073595(calculation)X
853083970(to)X
85309576 1008(locate)N
85310795(an)X
85311898(item.)X
853121107(Note)X
853131290(that)X
853141437(in)X
853151526(many)X
853161731(cases,)X
853171948(the)X
853182073(location)X
853192358(can)X
853202497(only)X
853212666(be)X
853222769(calculated)X
853233122(at)X
853243207(runtime)X
853253483(of)X
853263577(the)X
853273702(associated)X
85328576 1104(program.)N
853290 f
85330576 1344(typedef)N
85331960(struct)X
853321296({)X
85333960 1440(Dwarf_Addr)N
853341824(ld_lopc;)X
85335960 1536(Dwarf_Addr)N
853361824(ld_hipc;)X
85337960 1632(Dwarf_Unsigned)N
853381824(ld_cents;)X
85339960 1728(Dwarf_Loc*)N
853401824(ld_s;)X
85341576 1824(})N
85342672(Dwarf_Locdesc;)X
853431 f
85344576 2064(The)N
853450 f
85346752(ld_lopc)X
853471 f
853481111(and)X
853490 f
853501278(ld_hipc)X
853511 f
853521637(fields)X
853531838(provide)X
853542106(an)X
853552205(address)X
853562469(range)X
853572671(for)X
853582789(which)X
853593009(this)X
853603148(location)X
853613430(descriptor)X
853623775(is)X
853633852(valid.)X
85364576 2160(Both)N
85365757(of)X
85366850(these)X
853671041(fields)X
853681244(are)X
853691368(set)X
853701482(to)X
853712 f
853721569(zero)X
853731 f
853741732(if)X
853751806(the)X
853761929(location)X
853772212(descriptor)X
853782558(is)X
853792636(valid)X
853802821(throughout)X
853813197(the)X
853823320(scope)X
853833528(of)X
853843620(the)X
853853743(item)X
853863910(it)X
853873979(is)X
85388576 2256(associated)N
85389934(with.)X
853901144(These)X
853911364(addresses)X
853921700(are)X
853931827(virtual)X
853942064(memory)X
853952359(addresses,)X
853962715(not)X
853972845(offsets-from-something.)X
853983670(The)X
853993823(virtual)X
85400576 2352(memory)N
85401867(addresses)X
854021199(do)X
854031303(not)X
854041429(account)X
854051703(for)X
854061821(dso)X
854071956(movement)X
854082318(\(none)X
854092525(of)X
854102616(the)X
854112738(pc)X
854122838(values)X
854133067(from)X
854143247(libdwarf)X
854153543(do)X
854163646(that,)X
854173809(it)X
854183876(is)X
854193952(up)X
85420576 2448(to)N
85421658(the)X
85422776(consumer)X
854231108(to)X
854241190(do)X
854251290(that\).)X
85426576 2688(The)N
854270 f
85428756(ld_cents)X
854291 f
854301167(field)X
854311341(contains)X
854321635(a)X
854331698(count)X
854341903(of)X
854351997(the)X
854362122(number)X
854372395(of)X
854380 f
854392518(Dwarf_Loc)X
854401 f
854412978(entries)X
854423220(pointed)X
854433488(to)X
854443578(by)X
854453686(the)X
854460 f
854473840(ld_s)X
854481 f
85449576 2784(field.)N
85450576 3024(The)N
854510 f
85452749(ld_s)X
854531 f
85454961(field)X
854551128(points)X
854561343(to)X
854571425(an)X
854581521(array)X
854591707(of)X
854600 f
854611822(Dwarf_Loc)X
854621 f
854632274(records.)X
854643 f
85465576 3264(2.3.3)N
85466776(Data)X
85467961(Block)X
854681 f
85469576 3456(The)N
854700 f
85471786(Dwarf_Block)X
854721 f
854731371(type)X
854741566(is)X
854751676(used)X
854761880(to)X
854771999(contain)X
854782292(the)X
854792447(value)X
854802678(of)X
854812802(an)X
854822936(attribute)X
854833261(whose)X
854843524(form)X
854853738(is)X
854863849(either)X
854870 f
85488576 3552(DW_FORM_block1)N
854891 f
85490(,)S
854910 f
854921431(DW_FORM_block2)X
854931 f
85494(,)S
854950 f
854962285(DW_FORM_block4)X
854971 f
85498(,)S
854990 f
855003139(DW_FORM_block8)X
855011 f
85502(,)S
855033965(or)X
855040 f
85505576 3648(DW_FORM_block)N
855061 f
85507(.)S
855081260(Its)X
855091360(intended)X
855101656(use)X
855111783(is)X
855121856(to)X
855131938(deliver)X
855142181(the)X
855152299(value)X
855162493(for)X
855172607(an)X
855182703(attribute)X
855192990(of)X
855203077(any)X
855213213(of)X
855223300(these)X
855233485(forms.)X
855240 f
85525576 3888(typedef)N
85526960(struct)X
855271296({)X
85528960 3984(Dwarf_Unsigned)N
855291872(bl_len;)X
85530960 4080(Dwarf_Ptr)N
855311872(bl_data;)X
85532576 4176(})N
85533672(Dwarf_Block;)X
855341 f
85535576 4464(The)N
855360 f
85537749(bl_len)X
855381 f
855391057(field)X
855401224(contains)X
855411511(the)X
855421629(length)X
855431849(in)X
855441931(bytes)X
855452120(of)X
855462207(the)X
855472325(data)X
855482479(pointed)X
855492739(to)X
855502821(by)X
855512921(the)X
855520 f
855533067(bl_data)X
855541 f
855553423(field.)X
85556576 4704(The)N
855570 f
85558752(bl_data)X
855591 f
855601111(field)X
855611281(contains)X
855621571(a)X
855631630(pointer)X
855641880(to)X
855651966(the)X
855662088(uninterpreted)X
855672540(data.)X
855682738(Since)X
855692940(we)X
855703058(use)X
855713209(a)X
855720 f
855733297(Dwarf_Ptr)X
855741 f
855753753(here)X
855763916(one)X
85577576 4800(must)N
85578755(copy)X
85579935(the)X
855801057(pointer)X
855811308(to)X
855821394(some)X
855831587(other)X
855841776(type)X
855851938(\(typically)X
855862269(an)X
855870 f
855882397(unsigned)X
855892832(char)X
855903075(*)X
855911 f
85592(\))S
855933173(so)X
855943267(one)X
855953406(can)X
855963541(add)X
855973680(increments)X
85598576 4896(to)N
85599658(index)X
85600856(through)X
856011125(the)X
856021243(data.)X
856031437(The)X
856041582(data)X
856051736(pointed)X
856061996(to)X
856072078(by)X
856080 f
856092206(bl_data)X
856101 f
856112562(is)X
856122635(not)X
856132757(necessarily)X
856143134(at)X
856153212(any)X
856163348(useful)X
856173564(alignment.)X
856183 f
85619576 5136(2.3.4)N
85620776(Frame)X
856211024(Operation)X
856221395(Codes)X
856231 f
85624576 5280(The)N
856250 f
85626750(Dwarf_Frame_Op)X
856271 f
856281443(type)X
856291602(is)X
856301676(used)X
856311844(to)X
856321927(contain)X
856332184(the)X
856342303(data)X
856352458(of)X
856362546(a)X
856372604(single)X
856382817(instruction)X
856393181(of)X
856403270(an)X
856413368(instruction-sequence)X
85642576 5376(of)N
85643685(low-level)X
856441030(information)X
856451450(from)X
856461648(the)X
856471788(section)X
856482057(containing)X
856492437(frame)X
856502667(information.)X
856513127(This)X
856523311(is)X
856533406(ordinarily)X
856543764(used)X
856553952(by)X
85656576 5472(Internal-level)N
856571029(Consumers)X
856581409(trying)X
856591620(to)X
856601702(print)X
856611873(everything)X
856622236(in)X
856632318(detail.)X
85664576 6164(rev)N
85665699(1.52,)X
85666879(02)X
85667979(Oct)X
856681115(2003)X
856692237(-)X
856702284(5)X
856712344(-)X
85672
856736 p
85674%%Page: 6 6
856750(Courier)xf 0 f
8567610 s 0 xH 0 xS 0 f
856771 f
856782237 384(-)N
856792284(6)X
856802344(-)X
856810 f
85682576 768(typedef)N
85683960(struct)X
856841296({)X
85685960 864(Dwarf_Small)N
856861584(fp_base_op;)X
85687960 960(Dwarf_Small)N
856881584(fp_extended_op;)X
85689960 1056(Dwarf_Half)N
856901584(fp_register;)X
85691960 1152(Dwarf_Signed)N
856921584(fp_offset;)X
85693960 1248(Dwarf_Offset)N
856941584(fp_instr_offset;)X
85695576 1344(})N
85696672(Dwarf_Frame_Op;)X
85697576 1584(fp_base_op)N
856981 f
856991105(is)X
857001207(the)X
857011354(2-bit)X
857021554(basic)X
857031768(op)X
857041897(code.)X
857050 f
857062166(fp_extended_op)X
857071 f
857082887(is)X
857092989(the)X
857103136(6-bit)X
857113336(extended)X
857123675(opcode)X
857133956(\(if)X
857140 f
85715576 1680(fp_base_op)N
857161 f
857171076(indicated)X
857181390(there)X
857191571(was)X
857201716(an)X
857211812(extended)X
857222122(op)X
857232222(code\))X
857242421(and)X
857252557(is)X
857262630(zero)X
857272789(otherwise.)X
857280 f
85729576 1824(fp_register)N
857301 f
857311138(is)X
857321225(any)X
857331375(\(or)X
857341503(the)X
857351635(first\))X
857361825(register)X
857372101(value)X
857382310(as)X
857392412(defined)X
857402688(in)X
857412785(the)X
857420 f
857432946(Call)X
857443201(Frame)X
857453504(Instruction)X
85746576 1920(Encodings)N
857471 f
857481028(figure)X
857491240(in)X
857501322(the)X
857510 f
857521468(dwarf)X
857531 f
857541728(document.)X
857552104(If)X
857562178(not)X
857572300(used)X
857582467(with)X
857592629(the)X
857602747(Op)X
857612865(it)X
857622929(is)X
857633002(0.)X
857640 f
85765576 2064(fp_offset)N
857661 f
857671061(is)X
857681167(the)X
857691318(address,)X
857701632(delta,)X
857711861(offset,)X
857722117(or)X
857732237(second)X
857742513(register)X
857752807(as)X
857762927(defined)X
857773222(in)X
857783338(the)X
857790 f
857803518(Call)X
857813792(Frame)X
85782576 2160(Instruction)N
857831162(Encodings)X
857841 f
857851624(figure)X
857861846(in)X
857871938(the)X
857880 f
857892094(dwarf)X
857901 f
857912364(document.)X
857922750(If)X
857932834(this)X
857942979(is)X
857953062(an)X
857960 f
857973196(address)X
857981 f
857993562(then)X
858003730(the)X
858013858(value)X
85802576 2256(should)N
85803821(be)X
85804929(cast)X
858051086(to)X
858060 f
858071208(\(Dwarf_Addr\))X
858081 f
858091816(before)X
858102054(being)X
858112264(used.)X
858122483(In)X
858132582(any)X
858142730(implementation)X
858153264(this)X
858163411(field)X
858173590(*must*)X
858183857(be)X
858193965(as)X
85820576 2352(large)N
85821758(as)X
85822846(the)X
85823965(larger)X
858241174(of)X
858251262(Dwarf_Signed)X
858261751(and)X
858271888(Dwarf_Addr)X
858282320(for)X
858292435(this)X
858302571(to)X
858312654(work)X
858322840(properly.)X
858333172(If)X
858343246(not)X
858353368(used)X
858363535(with)X
858373697(the)X
858383815(op)X
858393915(it)X
858403979(is)X
85841576 2448(0.)N
858420 f
85843576 2592(fp_instr_offset)N
858441 f
858451327(is)X
858461411(the)X
858471540(byte_offset)X
858481932(\(within)X
858492194(the)X
858502323(instruction)X
858512696(stream)X
858522941(of)X
858533039(the)X
858543168(frame)X
858553387(instructions\))X
858563818(of)X
858573917(this)X
85858576 2688(operation.)N
85859939(It)X
858601008(starts)X
858611197(at)X
858621275(0)X
858631335(for)X
858641449(a)X
858651505(given)X
858661703(frame)X
858671911(descriptor.)X
858683 f
85869576 2832(2.3.5)N
85870776(Macro)X
858711024(Details)X
858721280(Record)X
858731 f
85874576 2976(The)N
858750 f
85876772(Dwarf_Macro_Details)X
858771 f
858781727(type)X
858791908(gives)X
858802120(information)X
858812541(about)X
858822762(a)X
858832841(single)X
858843076(entry)X
858853285(in)X
858863391(the)X
858873533(.debug.macinfo)X
85888576 3072(section.)N
858890 f
85890576 3216(struct)N
85891912(Dwarf_Macro_Details_s)X
858921968({)X
85893672 3312(Dwarf_Off)N
858941296(dmd_offset;)X
85895672 3408(Dwarf_Small)N
858961296(dmd_type;)X
85897672 3504(Dwarf_Signed)N
858981296(dmd_lineno;)X
85899672 3600(Dwarf_Signed)N
859001296(dmd_fileindex;)X
85901672 3696(char)N
85902912(*)X
859031296(dmd_macro;)X
85904576 3792(};)N
85905576 3888(typedef)N
85906960(struct)X
859071296(Dwarf_Macro_Details_s)X
859082352(Dwarf_Macro_Details;)X
85909576 4032(dmd_offset)N
859101 f
859111076(is)X
859121149(the)X
859131267(byte)X
859141425(offset,)X
859151648(within)X
859161872(the)X
859171990(.debug_macinfo)X
859182529(section,)X
859192796(of)X
859202883(this)X
859213018(macro)X
859223239(information.)X
859230 f
85924576 4176(dmd_type)N
859251 f
85926984(is)X
859271061(the)X
859281184(type)X
859291347(code)X
859301524(of)X
859311616(this)X
859321756(macro)X
859331982(info)X
859342136(entry)X
859352326(\(or)X
859362445(0,)X
859372530(the)X
859382653(type)X
859392816(code)X
859402993(indicating)X
859413338(that)X
859423483(this)X
859433623(is)X
859443701(the)X
859453824(end)X
859463965(of)X
85947576 4272(macro)N
85948816(information)X
859491233(entries)X
859501486(for)X
859511619(a)X
859521694(compilation)X
859532115(unit.)X
859542318(See)X
859550 f
859562501(DW_MACINFO_define)X
859571 f
85958(,)S
859593375(etc)X
859603507(in)X
859613607(the)X
859623743(DWARF)X
85963576 4368(document.)N
859640 f
85965576 4512(dmd_lineno)N
859661 f
859671076(is)X
859681149(the)X
859691267(line)X
859701407(number)X
859711672(where)X
859721889(this)X
859732024(entry)X
859742209(was)X
859752354(found,)X
859762581(or)X
859772668(0)X
859782728(if)X
859792797(there)X
859802978(is)X
859813051(no)X
859823151(applicable)X
859833501(line)X
859843641(number.)X
859850 f
85986576 4656(dmd_fileindex)N
859871 f
859881242(is)X
859891337(the)X
859901477(file)X
859911626(index)X
859921846(of)X
859931955(the)X
859942095(file)X
859952244(involved.)X
859962606(This)X
859972790(is)X
859982885(only)X
859993069(guaranteed)X
860003465(meaningful)X
860013873(on)X
860023996(a)X
860030 f
86004576 4752(DW_MACINFO_start_file)N
860051639(dmd_type)X
860061 f
86007(.)S
860082090(Set)X
860092219(to)X
860102308(-1)X
860112402(if)X
860122478(unknown)X
860132803(\(see)X
860142960(the)X
860153085(functional)X
860163437(interface)X
860173746(for)X
860183867(more)X
86019576 4848(details\).)N
860200 f
86021576 4992(dmd_macro)N
860221 f
860231035(is)X
860241115(the)X
860251240(applicable)X
860261597(string.)X
860271846(For)X
860281984(a)X
860290 f
860302075(DW_MACINFO_define)X
860311 f
860322918(this)X
860333060(is)X
860343140(the)X
860353265(macro)X
860363493(name)X
860373694(and)X
860383838(value.)X
86039576 5088(For)N
86040709(a)X
860410 f
86042795(DW_MACINFO_undef)X
860431 f
86044(,)S
860451604(or)X
860461692(this)X
860471828(is)X
860481902(the)X
860492021(macro)X
860502243(name.)X
860512478(For)X
860522610(a)X
860530 f
860542695(DW_MACINFO_vendor_ext)X
860551 f
860563724(this)X
860573860(is)X
860583934(the)X
86059576 5184(vendor-defined)N
860601087(string)X
860611289(value.)X
860621523(For)X
860631654(other)X
860640 f
860651867(dmd_type)X
860661 f
86067(s)S
860682302(this)X
860692437(is)X
860702510(0.)X
860713 f
8607211 s
86073576 5424(2.4)N
86074730(Opaque)X
860751051(Types)X
860761 f
8607710 s
86078576 5568(The)N
86079735(opaque)X
860801001(types)X
860811204(declared)X
860821511(in)X
860832 f
860841607(libdwarf.h)X
860851 f
860861971(are)X
860872104(used)X
860882285(as)X
860892386(descriptors)X
860902773(for)X
860912902(queries)X
860923169(against)X
860933431(dwarf)X
860943654(information)X
86095576 5664(stored)N
86096797(in)X
86097884(various)X
860981145(debugging)X
860991508(sections.)X
861001831(Each)X
861012017(time)X
861022184(an)X
861032285(instance)X
861042573(of)X
861052665(an)X
861062765(opaque)X
861073021(type)X
861083183(is)X
861093260(returned)X
861103552(as)X
861113643(a)X
861123703(result)X
861133905(of)X
861143996(a)X
861152 f
86116576 5760(libdwarf)N
861171 f
86118867(operation)X
861191191(\()X
861200 f
861211218(Dwarf_Debug)X
861221 f
861231767(excepted\),)X
861242121(it)X
861252186(should)X
861262420(be)X
861272517(free'd,)X
861282752(using)X
861290 f
861302975(dwarf_dealloc\(\))X
861311 f
861323717(when)X
861333913(it)X
861343979(is)X
86135576 5856(no)N
86136678(longer)X
86137905(of)X
86138994(use.)X
861391163(Some)X
861401367(functions)X
861411686(return)X
861421899(a)X
861431956(number)X
861442222(of)X
861452310(instances)X
861462625(of)X
861472713(an)X
861482810(opaque)X
861493063(type)X
861503222(in)X
861513305(a)X
861523362(block,)X
861533581(by)X
861543682(means)X
861553908(of)X
861563996(a)X
86157576 6164(rev)N
86158699(1.52,)X
86159879(02)X
86160979(Oct)X
861611115(2003)X
861622237(-)X
861632284(6)X
861642344(-)X
86165
861667 p
86167%%Page: 7 7
861680(Courier)xf 0 f
8616910 s 0 xH 0 xS 0 f
861701 f
861712237 384(-)N
861722284(7)X
861732344(-)X
86174576 768(pointer)N
86175839(to)X
86176937(the)X
861771071(block)X
861781285(and)X
861791437(a)X
861801509(count)X
861811723(of)X
861821826(the)X
861831960(number)X
861842241(of)X
861852344(opaque)X
861862612(descriptors)X
861873000(in)X
861883098(the)X
861893233(block:)X
861903490(see)X
861913630(the)X
861923765(function)X
86193576 864(description)N
86194954(for)X
861951069(deallocation)X
861961482(rules)X
861971659(for)X
861981774(such)X
861991942(functions.)X
862002301(The)X
862012447(list)X
862022565(of)X
862032653(opaque)X
862042906(types)X
862053096(defined)X
862063358(in)X
862072 f
862083441(libdwarf.h)X
862091 f
862103792(that)X
862113933(are)X
86212576 960(pertinent)N
86213881(to)X
86214963(the)X
862151081(Consumer)X
862161430(Library,)X
862171711(and)X
862181847(their)X
862192014(intended)X
862202310(use)X
862212437(is)X
862222510(described)X
862232838(below.)X
862240 f
86225576 1200(typedef)N
86226960(struct)X
862271296(Dwarf_Debug_s*)X
862282016(Dwarf_Debug;)X
862291 f
86230576 1344(An)N
86231695(instance)X
86232979(of)X
862331067(the)X
862340 f
862351214(Dwarf_Debug)X
862361 f
862371763(type)X
862381922(is)X
862391996(created)X
862402251(as)X
862412340(a)X
862422398(result)X
862432598(of)X
862442687(a)X
862452745(successful)X
862463097(call)X
862473235(to)X
862480 f
862493347(dwarf_init\(\))X
862501 f
86251(,)S
862523965(or)X
862530 f
86254576 1440(dwarf_elf_init\(\))N
862551 f
86256(,)S
862571391(and)X
862581534(is)X
862591614(used)X
862601788(as)X
862611882(a)X
862621945(descriptor)X
862632293(for)X
862642413(subsequent)X
862652795(access)X
862663027(to)X
862673115(most)X
862680 f
862693324(libdwarf)X
862701 f
862713734(functions)X
86272576 1536(on)N
86273711(that)X
86274886(object.)X
862751178(The)X
862761359(storage)X
862771647(pointed)X
862781943(to)X
862792061(by)X
862802197(this)X
862812368(descriptor)X
862822745(should)X
862833014(be)X
862843146(not)X
862853304(be)X
862863436(free'd,)X
862873705(using)X
862883934(the)X
862890 f
86290576 1632(dwarf_dealloc\(\))N
862911 f
862921316(function.)X
862931643(Instead)X
862941895(free)X
862952041(it)X
862962105(with)X
862970 f
862982295(dwarf_finish\(\))X
862991 f
86300(.)S
863010 f
86302576 1920(typedef)N
86303960(struct)X
863041296(Dwarf_Die_s*)X
863051920(Dwarf_Die;)X
863061 f
86307576 2064(An)N
86308703(instance)X
86309995(of)X
863101091(a)X
863110 f
863121184(Dwarf_Die)X
863131 f
863141645(type)X
863151812(is)X
863161894(returned)X
863172191(from)X
863182376(a)X
863192442(successful)X
863202802(call)X
863212948(to)X
863223040(the)X
863230 f
863243196(dwarf_siblingof\(\))X
863251 f
86326(,)S
863270 f
86328576 2160(dwarf_child)N
863291 f
86330(,)S
863311175(or)X
863320 f
863331321(dwarf_offdie\(\))X
863341 f
863352044(function,)X
863362382(and)X
863372549(is)X
863382653(used)X
863392851(as)X
863402969(a)X
863413056(descriptor)X
863423428(for)X
863433572(queries)X
863443854(about)X
86345576 2256(information)N
86346997(related)X
863471259(to)X
863481364(that)X
863491527(DIE.)X
863501744(The)X
863511912(storage)X
863522187(pointed)X
863532471(to)X
863542577(by)X
863552701(this)X
863562860(descriptor)X
863573225(should)X
863583482(be)X
863593602(free'd,)X
863603859(using)X
863610 f
86362576 2352(dwarf_dealloc\(\))N
863631 f
863641316(with)X
863651478(the)X
863661596(allocation)X
863671932(type)X
863680 f
863692118(DW_DLA_DIE)X
863701 f
863712618(when)X
863722812(no)X
863732912(longer)X
863743137(needed.)X
863750 f
86376576 2592(typedef)N
86377960(struct)X
863781296(Dwarf_Line_s*)X
863791968(Dwarf_Line;)X
863801 f
86381576 2736(Instances)N
86382915(of)X
863830 f
863841050(Dwarf_Line)X
863851 f
863861570(type)X
863871748(are)X
863881887(returned)X
863892195(from)X
863902391(a)X
863912467(successful)X
863922837(call)X
863932994(to)X
863943097(the)X
863950 f
863963264(dwarf_srclines\(\))X
863971 f
86398576 2832(function,)N
86399900(and)X
864001053(are)X
864011189(used)X
864021372(as)X
864031475(descriptors)X
864041863(for)X
864051993(queries)X
864062261(about)X
864072475(source)X
864082721(lines.)X
864092948(The)X
864103109(storage)X
864113377(pointed)X
864123653(to)X
864133751(by)X
864143867(these)X
86415576 2928(descriptors)N
86416988(should)X
864171261(be)X
864181397(individually)X
864191843(free'd,)X
864202116(using)X
864210 f
864222377(dwarf_dealloc\(\))X
864231 f
864243157(with)X
864253359(the)X
864263517(allocation)X
864273894(type)X
864280 f
86429576 3024(DW_DLA_LINE)N
864301 f
864311124(when)X
864321318(no)X
864331418(longer)X
864341643(needed.)X
864350 f
86436576 3264(typedef)N
86437960(struct)X
864381296(Dwarf_Global_s*)X
864392064(Dwarf_Global;)X
864401 f
86441576 3408(Instances)N
86442895(of)X
864430 f
864441010(Dwarf_Global)X
864451 f
864461606(type)X
864471764(are)X
864481883(returned)X
864492171(from)X
864502347(a)X
864512403(successful)X
864522753(call)X
864532890(to)X
864542973(the)X
864550 f
864563120(dwarf_get_globals\(\))X
864571 f
86458576 3504(function,)N
86459884(and)X
864601020(are)X
864611139(used)X
864621306(as)X
864631393(descriptors)X
864641765(for)X
864651879(queries)X
864662131(about)X
864672329(global)X
864682549(names)X
864692774(\(pubnames\).)X
864703213(The)X
864713358(storage)X
864723610(pointed)X
864733870(to)X
864743952(by)X
86475576 3600(these)N
86476780(descriptors)X
864771171(should)X
864781423(be)X
864791538(individually)X
864801964(free'd,)X
864812217(using)X
864820 f
864832458(dwarf_dealloc\(\))X
864841 f
864853218(with)X
864863400(the)X
864873538(allocation)X
864883894(type)X
864890 f
86490576 3696(DW_DLA_GLOBAL)N
864911 f
86492(,)S
864931240(when)X
864941434(no)X
864951534(longer)X
864961759(needed.)X
864970 f
86498576 3936(typedef)N
86499960(struct)X
865001296(Dwarf_Weak_s*)X
865011968(Dwarf_Weak;)X
865021 f
86503576 4080(Instances)N
86504947(of)X
865050 f
865061114(Dwarf_Weak)X
865071 f
865081666(type)X
865091877(are)X
865102049(returned)X
865112390(from)X
865122619(a)X
865132728(successful)X
865143131(call)X
865153320(to)X
865163455(the)X
865173626(SGI-specific)X
865180 f
86519576 4176(dwarf_get_weaks\(\))N
865201 f
865211415(function,)X
865221725(and)X
865231864(are)X
865241986(used)X
865252156(as)X
865262246(descriptors)X
865272621(for)X
865282738(queries)X
865292993(about)X
865303194(weak)X
865313386(names.)X
865323653(The)X
865333800(storage)X
86534576 4272(pointed)N
86535858(to)X
86536962(by)X
865371084(these)X
865381291(descriptors)X
865391685(should)X
865401940(be)X
865412058(individually)X
865422486(free'd,)X
865432742(using)X
865440 f
865452986(dwarf_dealloc\(\))X
865461 f
865473749(with)X
865483934(the)X
86549576 4368(allocation)N
86550912(type)X
865510 f
865521098(DW_DLA_WEAK)X
865531 f
865541646(when)X
865551840(no)X
865561940(longer)X
865572165(needed.)X
865580 f
86559576 4608(typedef)N
86560960(struct)X
865611296(Dwarf_Func_s*)X
865621968(Dwarf_Func;)X
865631 f
86564576 4752(Instances)N
86565947(of)X
865660 f
865671114(Dwarf_Func)X
865681 f
865691666(type)X
865701877(are)X
865712049(returned)X
865722390(from)X
865732619(a)X
865742728(successful)X
865753131(call)X
865763320(to)X
865773455(the)X
865783626(SGI-specific)X
865790 f
86580576 4848(dwarf_get_funcs\(\))N
865811 f
865821413(function,)X
865831721(and)X
865841857(are)X
865851976(used)X
865862143(as)X
865872230(descriptors)X
865882602(for)X
865892716(queries)X
865902968(about)X
865913166(static)X
865923355(function)X
865933642(names.)X
865943907(The)X
86595576 4944(storage)N
86596829(pointed)X
865971090(to)X
865981173(by)X
865991274(these)X
866001460(descriptors)X
866011833(should)X
866022067(be)X
866032164(individually)X
866042571(free'd,)X
866052805(using)X
866060 f
866073028(dwarf_dealloc\(\))X
866081 f
866093770(with)X
866103934(the)X
86611576 5040(allocation)N
86612912(type)X
866130 f
866141098(DW_DLA_FUNC)X
866151 f
86616(,)S
866171666(when)X
866181860(no)X
866191960(longer)X
866202185(needed.)X
866210 f
86622576 5280(typedef)N
86623960(struct)X
866241296(Dwarf_Type_s*)X
866251968(Dwarf_Type;)X
866261 f
86627576 5424(Instances)N
86628947(of)X
866290 f
866301114(Dwarf_Type)X
866311 f
866321666(type)X
866331877(are)X
866342049(returned)X
866352390(from)X
866362619(a)X
866372728(successful)X
866383131(call)X
866393320(to)X
866403455(the)X
866413626(SGI-specific)X
866420 f
86643576 5520(dwarf_get_types\(\))N
866441 f
866451420(function,)X
866461735(and)X
866471879(are)X
866482006(used)X
866492181(as)X
866502276(descriptors)X
866512656(for)X
866522778(queries)X
866533037(about)X
866543242(user)X
866553403(defined)X
866563671(types.)X
866573907(The)X
86658576 5616(storage)N
86659835(pointed)X
866601102(to)X
866611191(by)X
866621298(this)X
866631440(descriptor)X
866641788(should)X
866652028(be)X
866662132(individually)X
866672546(free'd,)X
866682787(using)X
866690 f
866703016(dwarf_dealloc\(\))X
866711 f
866723764(with)X
866733934(the)X
86674576 5712(allocation)N
86675912(type)X
866760 f
866771098(DW_DLA_TYPENAME)X
866781 f
866791838(when)X
866802032(no)X
866812132(longer)X
866822357(needed.)X
86683576 6164(rev)N
86684699(1.52,)X
86685879(02)X
86686979(Oct)X
866871115(2003)X
866882237(-)X
866892284(7)X
866902344(-)X
86691
866928 p
86693%%Page: 8 8
866940(Courier)xf 0 f
8669510 s 0 xH 0 xS 0 f
866961 f
866972237 384(-)N
866982284(8)X
866992344(-)X
867000 f
86701576 768(typedef)N
86702960(struct)X
867031296(Dwarf_Var_s*)X
867041920(Dwarf_Var;)X
867051 f
86706576 912(Instances)N
86707951(of)X
867080 f
867091122(Dwarf_Var)X
867101 f
867111630(type)X
867121845(are)X
867132021(returned)X
867142366(from)X
867152599(a)X
867162712(successful)X
867173119(call)X
867183312(to)X
867193451(the)X
867203626(SGI-specific)X
867210 f
86722576 1008(dwarf_get_vars\(\))N
867231 f
867241364(function,)X
867251671(and)X
867261807(are)X
867271926(used)X
867282093(as)X
867292180(descriptors)X
867302552(for)X
867312666(queries)X
867322918(about)X
867333116(static)X
867343305(variables.)X
867353655(The)X
867363800(storage)X
86737576 1104(pointed)N
86738837(to)X
86739920(by)X
867401021(this)X
867411157(descriptor)X
867421499(should)X
867431733(be)X
867441830(individually)X
867452237(free'd,)X
867462471(using)X
867470 f
867482693(dwarf_dealloc\(\))X
867491 f
867503434(with)X
867513597(the)X
867523716(allocation)X
86753576 1200(type)N
867540 f
86755762(DW_DLA_VAR)X
867561 f
867571262(when)X
867581456(no)X
867591556(longer)X
867601781(needed.)X
867610 f
86762576 1440(typedef)N
86763960(struct)X
867641296(Dwarf_Error_s*)X
867652016(Dwarf_Error;)X
867661 f
86767576 1584(This)N
86768770(descriptor)X
867691143(points)X
867701390(to)X
867711504(a)X
867721592(structure)X
867731925(that)X
867742097(provides)X
867752425(detailed)X
867762731(information)X
867773161(about)X
867783391(errors)X
867793631(detected)X
867803952(by)X
867810 f
86782576 1680(libdwarf)N
867831 f
86784(.)S
867851033(Users)X
867861249(typically)X
867871561(provide)X
867881838(a)X
867891906(location)X
867902196(for)X
867910 f
867922350(libdwarf)X
867931 f
867942766(to)X
867952860(store)X
867963048(this)X
867973195(descriptor)X
867983548(for)X
867993674(the)X
868003804(user)X
868013970(to)X
86802576 1776(obtain)N
86803800(more)X
86804989(information)X
868051391(about)X
868061593(the)X
868071715(error.)X
868081936(The)X
868092085(storage)X
868102341(pointed)X
868112605(to)X
868122691(by)X
868132796(this)X
868142936(descriptor)X
868153282(should)X
868163520(be)X
868173621(free'd,)X
868183859(using)X
868190 f
86820576 1872(dwarf_dealloc\(\))N
868211 f
868221316(with)X
868231478(the)X
868241596(allocation)X
868251932(type)X
868260 f
868272118(DW_DLA_ERROR)X
868281 f
868292714(when)X
868302908(no)X
868313008(longer)X
868323233(needed.)X
868330 f
86834576 2112(typedef)N
86835960(struct)X
868361296(Dwarf_Attribute_s*)X
868372208(Dwarf_Attribute;)X
868381 f
86839576 2256(Instances)N
86840969(of)X
868410 f
868421158(Dwarf_Attribute)X
868431 f
868441972(type)X
868452204(are)X
868462397(returned)X
868472759(from)X
868483010(a)X
868493141(successful)X
868503566(call)X
868513777(to)X
868523934(the)X
868530 f
86854576 2352(dwarf_attrlist\(\))N
868551 f
86856(,)S
868571400(or)X
868580 f
868591531(dwarf_attr\(\))X
868601 f
868612143(functions,)X
868622497(and)X
868632649(are)X
868642784(used)X
868652967(as)X
868663070(descriptors)X
868673458(for)X
868683587(queries)X
868693854(about)X
86870576 2448(attribute)N
86871897(values.)X
868721196(The)X
868731375(storage)X
868741661(pointed)X
868751955(to)X
868762071(by)X
868772205(this)X
868782375(descriptor)X
868792751(should)X
868803019(be)X
868813150(individually)X
868823591(free'd,)X
868833859(using)X
868840 f
86885576 2544(dwarf_dealloc\(\))N
868861 f
868871316(with)X
868881478(the)X
868891596(allocation)X
868901932(type)X
868910 f
868922118(DW_DLA_ATTR)X
868931 f
868942666(when)X
868952860(no)X
868962960(longer)X
868973185(needed.)X
868980 f
86899576 2784(typedef)N
86900960(struct)X
869011296(Dwarf_Abbrev_s*)X
869022064(Dwarf_Abbrev;)X
869031 f
86904576 2928(An)N
86905698(instance)X
86906985(of)X
869071076(a)X
869080 f
869091164(Dwarf_Abbrev)X
869101 f
869111764(type)X
869121926(is)X
869132003(returned)X
869142295(from)X
869152476(a)X
869162537(successful)X
869172892(call)X
869183033(to)X
869190 f
869203148(dwarf_get_abbrev\(\))X
869211 f
86922(,)S
86923576 3024(and)N
86924727(is)X
86925815(used)X
86926997(as)X
869271099(a)X
869281170(descriptor)X
869291526(for)X
869301655(queries)X
869311922(about)X
869322135(abbreviations)X
869332602(in)X
869342699(the)X
869352831(.debug_abbrev)X
869363340(section.)X
869373641(The)X
869383800(storage)X
86939576 3120(pointed)N
86940856(to)X
86941958(by)X
869421078(this)X
869431233(descriptor)X
869441594(should)X
869451847(be)X
869461963(free'd,)X
869472216(using)X
869480 f
869492457(dwarf_dealloc\(\))X
869501 f
869513217(with)X
869523399(the)X
869533537(allocation)X
869543894(type)X
869550 f
86956576 3216(DW_DLA_ABBREV)N
869571 f
869581220(when)X
869591414(no)X
869601514(longer)X
869611739(needed.)X
869620 f
86963576 3456(typedef)N
86964960(struct)X
869651296(Dwarf_Fde_s*)X
869661920(Dwarf_Fde;)X
869671 f
86968576 3600(Instances)N
86969901(of)X
869700 f
869711022(Dwarf_Fde)X
869721 f
869731480(type)X
869741644(are)X
869751769(returned)X
869762064(from)X
869772247(a)X
869782310(successful)X
869792667(call)X
869802810(to)X
869812899(the)X
869820 f
869833052(dwarf_get_fde_list\(\))X
869841 f
86985(,)S
869860 f
86987576 3696(dwarf_get_fde_for_die\(\))N
869881 f
86989(,)S
869901769(or)X
869910 f
869921933(dwarf_get_fde_at_pc\(\))X
869931 f
869943010(functions,)X
869953397(and)X
869963582(are)X
869973750(used)X
869983965(as)X
86999576 3792(descriptors)N
87000959(for)X
870011084(queries)X
870021347(about)X
870031556(frames)X
870041807(descriptors.)X
870052231(The)X
870062388(storage)X
870072652(pointed)X
870082924(to)X
870093018(by)X
870103130(these)X
870113327(descriptors)X
870123711(should)X
870133956(be)X
87014576 3888(individually)N
87015987(free'd,)X
870161225(using)X
870170 f
870181451(dwarf_dealloc\(\))X
870191 f
870202196(with)X
870212363(the)X
870222486(allocation)X
870232827(type)X
870240 f
870253018(DW_DLA_FDE)X
870261 f
870273523(when)X
870283722(no)X
870293827(longer)X
87030576 3984(needed.)N
870310 f
87032576 4224(typedef)N
87033960(struct)X
870341296(Dwarf_Cie_s*)X
870351920(Dwarf_Cie;)X
870361 f
87037576 4368(Instances)N
87038903(of)X
870390 f
870401026(Dwarf_Cie)X
870411 f
870421486(type)X
870431652(are)X
870441779(returned)X
870452075(from)X
870462259(a)X
870472323(successful)X
870482681(call)X
870492826(to)X
870502917(the)X
870510 f
870523072(dwarf_get_fde_list\(\))X
870531 f
87054576 4464(function,)N
87055887(and)X
870561027(are)X
870571150(used)X
870581321(as)X
870591412(descriptors)X
870601788(for)X
870611906(queries)X
870622162(about)X
870632364(information)X
870642766(that)X
870652910(is)X
870662986(common)X
870673289(to)X
870683374(several)X
870693625(frames.)X
870703907(The)X
87071576 4560(storage)N
87072835(pointed)X
870731102(to)X
870741191(by)X
870751298(this)X
870761440(descriptor)X
870771788(should)X
870782028(be)X
870792132(individually)X
870802546(free'd,)X
870812787(using)X
870820 f
870833016(dwarf_dealloc\(\))X
870841 f
870853764(with)X
870863934(the)X
87087576 4656(allocation)N
87088912(type)X
870890 f
870901098(DW_DLA_CIE)X
870911 f
870921598(when)X
870931792(no)X
870941892(longer)X
870952117(needed.)X
870960 f
87097576 4896(typedef)N
87098960(struct)X
870991296(Dwarf_Arange_s*)X
871002064(Dwarf_Arange;)X
871011 f
87102576 5040(Instances)N
87103895(of)X
871040 f
871051010(Dwarf_Arange)X
871061 f
871071606(type)X
871081765(are)X
871091885(returned)X
871102174(from)X
871112351(successful)X
871122702(calls)X
871132870(to)X
871142953(the)X
871150 f
871163100(dwarf_get_aranges\(\))X
871171 f
87118(,)S
87119576 5136(or)N
871200 f
87121693(dwarf_get_arange\(\))X
871221 f
871231579(functions,)X
871241919(and)X
871252057(are)X
871262178(used)X
871272346(as)X
871282434(descriptors)X
871292807(for)X
871302922(queries)X
871313175(about)X
871323374(address)X
871333636(ranges.)X
871343907(The)X
87135576 5232(storage)N
87136835(pointed)X
871371102(to)X
871381191(by)X
871391298(this)X
871401440(descriptor)X
871411788(should)X
871422028(be)X
871432132(individually)X
871442546(free'd,)X
871452787(using)X
871460 f
871473016(dwarf_dealloc\(\))X
871481 f
871493764(with)X
871503934(the)X
87151576 5328(allocation)N
87152912(type)X
871530 f
871541098(DW_DLA_ARANGE)X
871551 f
871561742(when)X
871571936(no)X
871582036(longer)X
871592261(needed.)X
871603 f
8716111 s
87162576 5616(3.)N
87163686(Error)X
87164928(Handling)X
871651 f
8716610 s
87167576 5760(The)N
87168743(method)X
871691025(for)X
871701161(detection)X
871711497(and)X
871721655(disposition)X
871732047(of)X
871742156(error)X
871752355(conditions)X
871762730(that)X
871772892(arise)X
871783086(during)X
871793337(access)X
871803585(of)X
871813694(debugging)X
87182576 5856(information)N
87183980(via)X
871842 f
871851104(libdwarf)X
871861 f
871871400(is)X
871881478(consistent)X
871891823(across)X
871902049(all)X
871912 f
871922154(libdwarf)X
871931 f
871942449(functions)X
871952772(that)X
871962917(are)X
871973041(capable)X
871983312(of)X
871993404(producing)X
872003754(an)X
872013855(error.)X
87202576 6164(rev)N
87203699(1.52,)X
87204879(02)X
87205979(Oct)X
872061115(2003)X
872072237(-)X
872082284(8)X
872092344(-)X
87210
872119 p
87212%%Page: 9 9
872130(Courier)xf 0 f
8721410 s 0 xH 0 xS 0 f
872151 f
872162237 384(-)N
872172284(9)X
872182344(-)X
87219576 768(This)N
87220738(section)X
87221985(describes)X
872221304(the)X
872231422(method)X
872241682(used)X
872251849(by)X
872262 f
872271949(libdwarf)X
872281 f
872292239(in)X
872302321(notifying)X
872312634(client)X
872322832(programs)X
872333155(of)X
872343242(error)X
872353419(conditions.)X
87236576 1008(Most)N
87237766(functions)X
872381090(within)X
872392 f
872401320(libdwarf)X
872411 f
872421616(accept)X
872431848(as)X
872441941(an)X
872452043(argument)X
872462372(a)X
872472435(pointer)X
872482689(to)X
872492778(a)X
872500 f
872512869(Dwarf_Error)X
872521 f
872533424(descriptor)X
872543772(where)X
872553996(a)X
872560 f
87257576 1104(Dwarf_Error)N
872581 f
872591128(descriptor)X
872601473(is)X
872611550(stored)X
872621770(if)X
872631843(an)X
872641943(error)X
872652124(is)X
872662201(detected)X
872672492(by)X
872682595(the)X
872692716(function.)X
872703046(Routines)X
872713353(in)X
872723438(the)X
872733559(client)X
872743760(program)X
87275576 1200(that)N
87276722(provide)X
87277993(this)X
872781134(argument)X
872791463(can)X
872801601(query)X
872811810(the)X
872820 f
872831963(Dwarf_Error)X
872841 f
872852518(descriptor)X
872862866(to)X
872872955(determine)X
872883303(the)X
872893428(nature)X
872903656(of)X
872913750(the)X
872923875(error)X
87293576 1296(and)N
87294712(perform)X
87295991(appropriate)X
872961377(processing.)X
87297576 1536(A)N
87298654(client)X
87299852(program)X
873001144(can)X
873011276(also)X
873021425(specify)X
873031677(a)X
873041733(function)X
873052020(to)X
873062103(be)X
873072200(invoked)X
873082479(upon)X
873092660(detection)X
873102975(of)X
873113063(an)X
873123160(error)X
873133338(at)X
873143417(the)X
873153536(time)X
873163699(the)X
873173818(library)X
87318576 1632(is)N
87319650(initialized)X
87320991(\(see)X
873210 f
873221170(dwarf_init\(\))X
873231 f
87324(\).)S
873251834(When)X
873262047(a)X
873272 f
873282104(libdwarf)X
873291 f
873302395(routine)X
873312643(detects)X
873322887(an)X
873332984(error,)X
873343182(this)X
873353318(function)X
873363605(is)X
873373678(called)X
873383890(with)X
87339576 1728(two)N
87340716(arguments:)X
873411092(a)X
873421148(code)X
873431320(indicating)X
873441660(the)X
873451778(nature)X
873461999(of)X
873472086(the)X
873482204(error)X
873492382(and)X
873502519(a)X
873512576(pointer)X
873522824(provided)X
873533130(by)X
873543231(the)X
873553350(client)X
873563549(at)X
873573628(initialization)X
87358576 1824(\(again)N
87359802(see)X
873600 f
87361958(dwarf_init\(\))X
873621 f
87363(\).)S
873641626(This)X
873651793(pointer)X
873662045(argument)X
873672373(can)X
873682510(be)X
873692611(used)X
873702783(to)X
873712870(relay)X
873723056(information)X
873733459(between)X
873743752(the)X
873753875(error)X
87376576 1920(handler)N
87377845(and)X
87378989(other)X
873791182(routines)X
873801468(of)X
873811563(the)X
873821689(client)X
873831895(program.)X
873842235(A)X
873852321(client)X
873862527(program)X
873872827(can)X
873882967(specify)X
873893227(or)X
873903322(change)X
873913578(both)X
873923748(the)X
873933875(error)X
87394576 2016(handling)N
87395900(function)X
873961211(and)X
873971370(the)X
873981511(pointer)X
873991781(argument)X
874002127(after)X
874012318(initialization)X
874022765(using)X
874030 f
874043009(dwarf_seterrhand\(\))X
874051 f
874063916(and)X
874070 f
87408576 2112(dwarf_seterrarg\(\))N
874091 f
87410(.)S
87411576 2352(In)N
87412670(the)X
87413796(case)X
87414963(where)X
874152 f
874161188(libdwarf)X
874171 f
874181486(functions)X
874191812(are)X
874201939(not)X
874212069(provided)X
874222382(a)X
874232446(pointer)X
874242701(to)X
874252791(a)X
874260 f
874272883(Dwarf_Error)X
874281 f
874293439(descriptor,)X
874303808(and)X
874313952(no)X
87432576 2448(error)N
87433765(handling)X
874341077(function)X
874351376(was)X
874361533(provided)X
874371850(at)X
874381940(initialization,)X
874392 f
874402396(libdwarf)X
874411 f
874422697(functions)X
874433026(terminate)X
874443360(execution)X
874453703(by)X
874463814(calling)X
874470 f
87448576 2544(abort\(3C\))N
874491 f
87450(.)S
87451576 2784(The)N
87452721(following)X
874531052(lists)X
874541200(the)X
874551318(processing)X
874561681(steps)X
874571861(taken)X
874582055(upon)X
874592235(detection)X
874602549(of)X
874612636(an)X
874622732(error:)X
87463636 2928(1.)N
87464776(Check)X
874651018(the)X
874660 f
874671181(error)X
874681 f
874691458(argument;)X
874701820(if)X
874711906(not)X
874722046(a)X
874732 f
874742120(NULL)X
874751 f
874762357(pointer,)X
874772642(allocate)X
874782930(and)X
874793084(initialize)X
874803402(a)X
874810 f
874823504(Dwarf_Error)X
874831 f
87484776 3024(descriptor)N
874851135(with)X
874861315(information)X
874871731(describing)X
874882103(the)X
874892239(error,)X
874902453(place)X
874912660(this)X
874922812(descriptor)X
874933170(in)X
874943269(the)X
874953404(area)X
874963576(pointed)X
874973853(to)X
874983952(by)X
874990 f
87500776 3120(error)N
875011 f
87502(,)S
875031056(and)X
875041192(return)X
875051404(a)X
875061460(value)X
875071654(indicating)X
875081994(an)X
875092090(error)X
875102267(condition.)X
87511636 3264(2.)N
87512776(If)X
87513859(an)X
875140 f
87515992(errhand)X
875161 f
875171357(argument)X
875181689(was)X
875191843(provided)X
875202158(to)X
875210 f
875222278(dwarf_init\(\))X
875231 f
875242884(at)X
875252972(initialization,)X
875263426(call)X
875270 f
875283600(errhand\(\))X
875291 f
87530776 3360(passing)N
875311084(it)X
875321196(the)X
875331362(error)X
875341587(descriptor)X
875351976(and)X
875362160(the)X
875372325(value)X
875382566(of)X
875392700(the)X
875400 f
875412893(errarg)X
875421 f
875433248(argument)X
875443618(provided)X
875453970(to)X
875460 f
87547776 3456(dwarf_init\(\))N
875481 f
87549(.)S
875501412(If)X
875511486(the)X
875521604(error)X
875531781(handling)X
875542081(function)X
875552368(returns,)X
875562631(return)X
875572843(a)X
875582899(value)X
875593093(indicating)X
875603433(an)X
875613529(error)X
875623706(condition.)X
87563636 3600(3.)N
87564776(Terminate)X
875651126(program)X
875661418(execution)X
875671750(by)X
875681850(calling)X
875690 f
875702116(abort\(3C\))X
875711 f
87572(.)S
87573576 3888(In)N
87574674(all)X
87575785(cases,)X
875761006(it)X
875771081(is)X
875781165(clear)X
875791354(from)X
875801542(the)X
875811672(value)X
875821878(returned)X
875832178(from)X
875842366(a)X
875852434(function)X
875862733(that)X
875872885(an)X
875882993(error)X
875893182(occurred)X
875903496(in)X
875913590(executing)X
875923934(the)X
87593576 3984(function,)N
87594883(since)X
875951068(DW_DLV_ERROR)X
875961733(is)X
875971806(returned.)X
87598576 4128(As)N
87599689(can)X
87600825(be)X
87601925(seen)X
876021092(from)X
876031272(the)X
876041394(above)X
876051610(steps,)X
876061814(the)X
876071936(client)X
876082138(program)X
876092434(can)X
876102570(provide)X
876112839(an)X
876122939(error)X
876133120(handler)X
876143385(at)X
876153467(initialization,)X
876163916(and)X
87617576 4224(still)N
87618725(provide)X
876191000(an)X
876200 f
876211134(error)X
876221 f
876231404(argument)X
876241737(to)X
876252 f
876261829(libdwarf)X
876271 f
876282129(functions)X
876292456(when)X
876302659(it)X
876312732(is)X
876322814(not)X
876332945(desired)X
876343206(to)X
876353297(have)X
876363478(the)X
876373605(error)X
876383791(handler)X
87639576 4320(invoked.)N
87640576 4560(If)N
87641665(a)X
876420 f
87643764(libdwarf)X
876441 f
876451183(function)X
876461485(is)X
876471573(called)X
876481800(with)X
876491977(invalid)X
876502234(arguments,)X
876512624(the)X
876522758(behaviour)X
876533115(is)X
876543204(undefined.)X
876553601(In)X
876563704(particular,)X
87657576 4656(supplying)N
87658920(a)X
876590 f
876601013(NULL)X
876611 f
876621234(pointer)X
876631490(to)X
876641581(a)X
876650 f
876661674(libdwarf)X
876671 f
876682087(function)X
876692383(\(except)X
876702649(where)X
876712875(explicitly)X
876723206(permitted\),)X
876733589(or)X
876743684(pointers)X
876753970(to)X
87676576 4752(invalid)N
87677837(addresses)X
876781184(or)X
876791290(uninitialized)X
876801729(data)X
876811902(causes)X
876822152(undefined)X
876832513(behaviour;)X
876842896(the)X
876853034(return)X
876863266(value)X
876873480(in)X
876883582(such)X
876893769(cases)X
876903979(is)X
87691576 4848(undefined,)N
87692943(and)X
876931085(the)X
876941209(function)X
876951502(may)X
876961666(fail)X
876971799(to)X
876981887(invoke)X
876992131(the)X
877002255(caller)X
877012460(supplied)X
877022757(error)X
877032940(handler)X
877043207(or)X
877053300(to)X
877063388(return)X
877073606(a)X
877083667(meaningful)X
87709576 4944(error)N
87710753(number.)X
877111058(Implementations)X
877121616(also)X
877131765(may)X
877141923(abort)X
877152108(execution)X
877162440(for)X
877172554(such)X
877182721(cases.)X
877193 f
8772011 s
87721576 5184(3.1)N
87722730(Returned)X
877231108(values)X
877241365(in)X
877251461(the)X
877261600(functional)X
877272004(interface)X
877281 f
8772910 s
87730576 5328(Values)N
87731823(returned)X
877321115(by)X
877330 f
877341247(libdwarf)X
877351 f
877361655(functions)X
877371977(to)X
877382063(indicate)X
877392341(success)X
877402606(and)X
877412746(errors)X
877422958(are)X
877433081(enumerated)X
877443481(in)X
877453568(Figure)X
877463802(2.)X
877473907(The)X
877480 f
87749576 5424(DW_DLV_NO_ENTRY)N
877501 f
877511324(case)X
877521491(is)X
877531572(useful)X
877541796(for)X
877551917(functions)X
877562242(need)X
877572421(to)X
877582510(indicate)X
877592791(that)X
877602938(while)X
877613143(there)X
877623331(was)X
877633483(no)X
877643590(data)X
877653751(to)X
877663840(return)X
87767576 5520(there)N
87768766(was)X
87769920(no)X
877701029(error)X
877711215(either.)X
877721467(For)X
877731607(example,)X
877740 f
877751956(dwarf_siblingof\(\))X
877761 f
877772802(may)X
877782970(return)X
877790 f
877803220(DW_DLV_NO_ENTRY)X
877811 f
877823970(to)X
87783576 5616(indicate)N
87784850(that)X
87785990(that)X
877861130(there)X
877871311(was)X
877881456(no)X
877891556(sibling)X
877901793(to)X
877911875(return.)X
87792576 6164(rev)N
87793699(1.52,)X
87794879(02)X
87795979(Oct)X
877961115(2003)X
877972237(-)X
877982284(9)X
877992344(-)X
87800
8780110 p
87802%%Page: 10 10
878030(Courier)xf 0 f
8780410 s 0 xH 0 xS 0 f
878051 f
878062217 384(-)N
878072264(10)X
878082364(-)X
878090 f
8781010 f
878111188 688(i)N
878121220(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
878133 f
878141228 784(SYMBOLIC)N
878151683(NAME)X
878162068(VALUE)X
878172468(MEANING)X
8781810 f
878191188 800(i)N
878201220(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
878213 f
878221228 896(DW_DLV_ERROR)N
878232188(1)X
878242468(Error)X
878251228 992(DW_DLV_OK)N
878262188(0)X
878272468(Successful)X
878282839(call)X
878291228 1088(DW_DLV_NO_ENTRY)N
878302174(-1)X
878312468(No)X
878322586(applicable)X
878332956(value)X
8783410 f
878351188 1104(i)N
878361220(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
878371188(c)X
878381088(c)Y
878391008(c)Y
87840928(c)Y
87841848(c)Y
87842768(c)Y
878433420 1104(c)N
878441088(c)Y
878451008(c)Y
87846928(c)Y
87847848(c)Y
87848768(c)Y
878493 f
878501829 1200(Figure)N
878512076(2.)X
878522176(Error)X
878532397(Indications)X
878541 f
87855576 1344(Each)N
87856757(function)X
878571044(in)X
878581126(the)X
878591244(interface)X
878601546(that)X
878611686(returns)X
878621929(a)X
878631985(value)X
878642179(returns)X
878652422(one)X
878662558(of)X
878672645(the)X
878682763(integers)X
878693037(in)X
878703119(the)X
878713237(above)X
878723449(figure.)X
87873576 1488(If)N
878740 f
87875680(DW_DLV_ERROR)X
878761 f
878771278(is)X
878781353(returned)X
878791644(and)X
878801783(a)X
878811842(pointer)X
878822092(to)X
878832177(a)X
878840 f
878852264(Dwarf_Error)X
878861 f
878872815(pointer)X
878883065(is)X
878893141(passed)X
878903378(to)X
878913463(the)X
878923584(function,)X
878933894(then)X
87894576 1584(a)N
87895638(Dwarf_Error)X
878961080(handle)X
878971320(is)X
878981399(returned)X
878991693(thru)X
879001848(the)X
879011972(pointer.)X
879022245(No)X
879032369(other)X
879042560(pointer)X
879052813(value)X
879063012(in)X
879073099(the)X
879083222(interface)X
879093529(returns)X
879103777(a)X
879113838(value.)X
87912576 1680(After)N
87913987(the)X
879140 f
879151355(Dwarf_Error)X
879161 f
879172125(is)X
879182420(no)X
879192742(longer)X
879203189(of)X
879213498(interest,)X
879223996(a)X
879230 f
87924576 1776(dwarf_dealloc\(dbg,dw_err,DW_DLA_ERROR\))N
879251 f
879262439(on)X
879272558(the)X
879282695(error)X
879292891(pointer)X
879303157(is)X
879313248(appropriate)X
879323652(to)X
879333752(free)X
879343916(any)X
87935576 1872(space)N
87936775(used)X
87937942(by)X
879381042(the)X
879391160(error)X
879401337(information.)X
87941576 2016(If)N
879420 f
87943678(DW_DLV_NO_ENTRY)X
879441 f
879451418(is)X
879461491(returned)X
879471779(no)X
879481879(pointer)X
879492126(value)X
879502320(in)X
879512402(the)X
879522520(interface)X
879532822(returns)X
879543065(a)X
879553121(value.)X
87956576 2160(If)N
879570 f
87958680(DW_DLV_OK)X
879591 f
879601134(is)X
879611210(returned)X
879621521(the)X
879630 f
879641670(Dwarf_Error)X
879651 f
879662221(pointer,)X
879672491(if)X
879682563(supplied,)X
879692877(is)X
879702953(not)X
879713078(touched,)X
879723375(but)X
879733500(any)X
879743639(other)X
879753827(values)X
87976576 2256(to)N
87977663(be)X
87978764(returned)X
879791057(through)X
879801331(pointers)X
879811614(are)X
879821738(returned.)X
879832071(In)X
879842163(this)X
879852303(case)X
879862467(calls)X
879872639(\(depending)X
879883025(on)X
879893130(the)X
879903253(exact)X
879913447(function)X
879923738(returning)X
87993576 2352(the)N
87994695(error\))X
87995900(to)X
879960 f
879971011(dwarf_dealloc\(\))X
879981 f
879991752(may)X
880001912(be)X
880012010(appropriate)X
880022398(once)X
880032572(the)X
880042692(particular)X
880053022(pointer)X
880063271(returned)X
880073561(is)X
880083636(no)X
880093738(longer)X
880103965(of)X
88011576 2448(interest.)N
88012576 2592(Pointers)N
88013863(passed)X
880141103(to)X
880151191(allow)X
880161395(values)X
880171626(to)X
880181714(be)X
880191816(returned)X
880202110(thru)X
880212265(them)X
880222451(are)X
880232576(uniformly)X
880242922(the)X
880253046(last)X
880263183(pointers)X
880273467(in)X
880283555(each)X
880293729(argument)X
88030576 2688(list.)N
88031576 2832(All)N
88032703(the)X
88033826(interface)X
880341133(functions)X
880351456(are)X
880361580(defined)X
880371846(from)X
880382027(the)X
880392150(point)X
880402339(of)X
880412431(view)X
880422612(of)X
880432704(the)X
880442827 0.1750(writer-of-the-library)AX
880453504(\(as)X
880463624(is)X
880473703(traditional)X
88048576 2928(for)N
88049696(UN*X)X
88050936(library)X
880511176(documentation\),)X
880521725(not)X
880531853(from)X
880542035(the)X
880552159(point)X
880562349(of)X
880572442(view)X
880582624(of)X
880592716(the)X
880602839(user)X
880612998(of)X
880623090(the)X
880633213(library.)X
880643492(The)X
880653642(caller)X
880663846(might)X
88067576 3024(code:)N
880683 f
88069576 3168(Dwarf_Line)N
880701010(line;)X
88071576 3264(Dwarf_Signed)N
880721085(ret_loff;)X
88073576 3360(Dwarf_Error)N
880741076(err;)X
88075576 3456(int)N
88076689(retval)X
88077910(=)X
88078976 0.1654(dwarf_lineoff\(line,&ret_loff,&err\);)AX
880791 f
88080576 3600(for)N
88081690(the)X
88082808(function)X
880831095(defined)X
880841356(as)X
880853 f
88086576 3744(int)N
88087689(dwarf_lineoff\(Dwarf_Line)X
880881613(line,Dwarf_Signed)X
880892266(*return_lineoff,)X
88090616 3840(Dwarf_Error*)N
880911136(err\);)X
880921 f
88093576 3984(and)N
88094724(this)X
88095871(document)X
880961219(refers)X
880971435(to)X
880981529(the)X
880991659(function)X
881001958(as)X
881012057(returning)X
881022383(the)X
881032513(value)X
881042719(thru)X
881052881(*err)X
881063044(or)X
881073144(*return_lineoff)X
881083663(or)X
881093763(uses)X
881103934(the)X
88111576 4080(phrase)N
88112806("returns)X
881131082(in)X
881141164(the)X
881151282(location)X
881161560(pointed)X
881171820(to)X
881181902(by)X
881192002(err".)X
881202185(Sometimes)X
881212560(other)X
881222745(similar)X
881232987(phrases)X
881243248(are)X
881253367(used.)X
881263 f
8812711 s
88128576 4368(4.)N
88129686(Memory)X
881301030(Management)X
881311 f
8813210 s
88133576 4512(Several)N
88134840(of)X
88135930(the)X
881361052(functions)X
881371374(that)X
881381518(comprise)X
881392 f
881401836(libdwarf)X
881411 f
881422130(return)X
881432346(pointers)X
881442628(\(opaque)X
881452911(descriptors\))X
881463314(to)X
881473400(structures)X
881483736(that)X
881493880(have)X
88150576 4608(been)N
88151757(dynamically)X
881521182(allocated)X
881531501(by)X
881541610(the)X
881551737(library.)X
881562020(To)X
881572138(aid)X
881582265(in)X
881592356(the)X
881602483(management)X
881612922(of)X
881623018(dynamic)X
881633323(memory,)X
881643639(the)X
881653765(function)X
881660 f
88167576 4704(dwarf_dealloc\(\))N
881681 f
881691317(is)X
881701391(provided)X
881711697(to)X
881721781(free)X
881731929(storage)X
881742183(allocated)X
881752495(as)X
881762584(a)X
881772642(result)X
881782842(of)X
881792931(a)X
881802989(call)X
881813127(to)X
881823211(a)X
881832 f
881843269(libdwarf)X
881851 f
881863561(function.)X
881873890(This)X
88188576 4800(section)N
88189823(describes)X
881901142(the)X
881911260(strategy)X
881921534(that)X
881931674(should)X
881941907(be)X
881952003(taken)X
881962197(by)X
881972297(a)X
881982353(client)X
881992551(program)X
882002843(in)X
882012925(managing)X
882023261(dynamic)X
882033557(storage.)X
882043 f
8820511 s
88206576 5040(4.1)N
88207730(Read-only)X
882081138(Properties)X
882091 f
8821010 s
88211576 5184(All)N
88212702(pointers)X
88213984(\(opaque)X
882141267(descriptors\))X
882151670(returned)X
882161962(by)X
882172066(or)X
882182157(as)X
882192248(a)X
882202308(result)X
882212510(of)X
882222601(a)X
882232 f
882242661(libdwarf)X
882252955(Consumer)X
882263308(Library)X
882271 f
882283577(call)X
882293718(should)X
882303956(be)X
88231576 5280(assumed)N
88232874(to)X
88233958(point)X
882341144(to)X
882351228(read-only)X
882361558(memory.)X
882371887(The)X
882382034(results)X
882392264(are)X
882402384(undefined)X
882412726(for)X
882422 f
882432841(libdwarf)X
882441 f
882453152(clients)X
882463382(that)X
882473523(attempt)X
882483784(to)X
882493867(write)X
88250576 5376(to)N
88251658(a)X
88252714(region)X
88253939(pointed)X
882541199(to)X
882551281(by)X
882561381(a)X
882571437(value)X
882581631(returned)X
882591919(by)X
882602019(a)X
882612 f
882622075(libdwarf)X
882632365(Consumer)X
882642714(Library)X
882651 f
882662978(call.)X
882673 f
8826811 s
88269576 5616(4.2)N
88270730(Storage)X
882711040(Deallocation)X
882721 f
8827310 s
88274576 5760(See)N
88275720(the)X
88276846(section)X
882771101("Returned)X
882781456(values)X
882791690(in)X
882801781(the)X
882811908(functional)X
882822262(interface",)X
882832626(above,)X
882842867(for)X
882852990(the)X
882863117(general)X
882873383(rules)X
882883568(where)X
882893794(calls)X
882903970(to)X
882910 f
88292576 5856(dwarf_dealloc\(\))N
882931 f
882941316(is)X
882951389(appropriate.)X
88296576 6164(rev)N
88297699(1.52,)X
88298879(02)X
88299979(Oct)X
883001115(2003)X
883012217(-)X
883022264(10)X
883032364(-)X
88304
8830511 p
88306%%Page: 11 11
883070(Courier)xf 0 f
8830810 s 0 xH 0 xS 0 f
883091 f
883102217 384(-)N
883112264(11)X
883122364(-)X
88313576 768(In)N
88314674(some)X
88315874(cases)X
883161075(the)X
883171204(pointers)X
883181493(returned)X
883191792(by)X
883201903(a)X
883212 f
883221970(libdwarf)X
883231 f
883242272(call)X
883252420(are)X
883262551(pointers)X
883272841(to)X
883282935(data)X
883293101(which)X
883303329(is)X
883313414(not)X
883323548(free-able.)X
883333907(The)X
88334576 864(library)N
88335814(knows)X
883361047(from)X
883371227(the)X
883381349(allocation)X
883391689(type)X
883401851(provided)X
883412160(to)X
883422246(it)X
883432314(whether)X
883442597(the)X
883452719(space)X
883462921(is)X
883472997(freeable)X
883483280(or)X
883493370(not)X
883503495(and)X
883513634(will)X
883523781(not)X
883533906(free)X
88354576 960(inappropriately)N
883551091(when)X
883560 f
883571318(dwarf_dealloc\(\))X
883581 f
883592063(is)X
883602141(called.)X
883612398(So)X
883622507(it)X
883632576(is)X
883642654(vital)X
883652821(that)X
883660 f
883672994(dwarf_dealloc\(\))X
883681 f
883693739(be)X
883703840(called)X
88371576 1056(with)N
88372738(the)X
88373856(proper)X
883741086(allocation)X
883751422(type.)X
88376576 1200(For)N
88377746(most)X
88378960(storage)X
883791251(allocated)X
883801600(by)X
883812 f
883821739(libdwarf)X
883831 f
883842009(,)X
883852088(the)X
883862245(client)X
883872482(can)X
883882654(free)X
883892840(the)X
883902998(storage)X
883913290(for)X
883923444(reuse)X
883933674(by)X
883943814(calling)X
883950 f
88396576 1296(dwarf_dealloc\(\))N
883971 f
88398(,)S
883991346(providing)X
884001687(it)X
884011761(with)X
884021933(the)X
884030 f
884042089(Dwarf_Debug)X
884051 f
884062647(descriptor)X
884072998(specifying)X
884083361(the)X
884093488(object)X
884103713(for)X
884113836(which)X
88412576 1392(the)N
88413707(storage)X
88414972(was)X
884151130(allocated,)X
884161473(a)X
884171542(pointer)X
884181802(to)X
884191897(the)X
884202029(area)X
884212198(to)X
884222294(be)X
884232404(free-ed,)X
884242687(and)X
884252837(an)X
884262947(identifier)X
884273275(that)X
884283429(specifies)X
884293744(what)X
884303934(the)X
88431576 1488(pointer)N
88432826(points)X
884331044(to)X
884341129(\(the)X
884351276(allocation)X
884361614(type\).)X
884371841(For)X
884381974(example,)X
884392288(to)X
884402372(free)X
884412520(a)X
884420 f
884432606(Dwarf_Die)X
884443088(die)X
884451 f
884463254(belonging)X
884473596(the)X
884483716(the)X
884493836(object)X
88450576 1584(represented)N
88451991(by)X
884520 f
884531143(Dwarf_Debug)X
884541743(dbg)X
884551 f
88456(,)S
884571951(allocated)X
884582285(by)X
884592409(a)X
884602489(call)X
884612650(to)X
884620 f
884632785(dwarf_siblingof\(\))X
884641 f
88465(,)S
884663666(the)X
884673809(call)X
884683970(to)X
884690 f
88470576 1680(dwarf_dealloc\(\))N
884711 f
884721316(would)X
884731536(be:)X
884740 f
88475656 1824(dwarf_dealloc\(dbg,)N
884761568(die,)X
884771808(DW_DLA_DIE\);)X
884781 f
88479576 2064(To)N
88480695(free)X
88481851(storage)X
884821113(allocated)X
884831433(in)X
884841525(the)X
884851653(form)X
884861839(of)X
884871936(a)X
884882002(list)X
884892129(of)X
884902226(pointers)X
884912515(\(opaque)X
884922805(descriptors\),)X
884933235(each)X
884943414(member)X
884953708(of)X
884963806(the)X
884973935(list)X
88498576 2160(should)N
88499813(be)X
88500913(deallocated,)X
885011323(followed)X
885021632(by)X
885031736(deallocation)X
885042152(of)X
885052243(the)X
885062365(actual)X
885072581(list)X
885082701(itself.)X
885092924(The)X
885103072(following)X
885113406(code)X
885123581(fragment)X
885133894(uses)X
88514576 2256(an)N
88515678(invocation)X
885161043(of)X
885170 f
885181165(dwarf_attrlist\(\))X
885191 f
885201960(as)X
885212054(an)X
885222157(example)X
885232456(to)X
885242545(illustrate)X
885252852(a)X
885262915(technique)X
885273254(that)X
885283401(can)X
885293540(be)X
885303643(used)X
885313817(to)X
885323906(free)X
88533576 2352(storage)N
88534828(from)X
885351004(any)X
885362 f
885371140(libdwarf)X
885381 f
885391430(routine)X
885401677(that)X
885411817(returns)X
885422060(a)X
885432116(list:)X
885440 f
88545576 2496(Dwarf_Unsigned)N
885461296(atcnt;)X
88547576 2592(Dwarf_Attribute)N
885481344(*atlist;)X
88549576 2688(int)N
88550768(errv;)X
88551576 2880(if)N
88552720(\(\(errv)X
885531056(=)X
885541152(dwarf_attrlist\(somedie,)X
885552304(&atlist,&atcnt,)X
885563072(&error\)\))X
885573504(==)X
885583648(DW_DLV_OK\))X
885594176({)X
88560960 3072(for)N
885611152(\(i)X
885621296(=)X
885631392(0;)X
885641536(i)X
885651632(<)X
885661728(atcnt;)X
885672064(++i\))X
885682304({)X
885691344 3168(/*)N
885701488(use)X
885711680(atlist[i])X
885722160(*/)X
885731344 3264(dwarf_dealloc\(dbg,)N
885742256(atlist[i],)X
885752784(DW_DLA_ATTR\);)X
88576960 3360(})N
88577960 3456(dwarf_dealloc\(dbg,)N
885781872(atlist,)X
885792256(DW_DLA_LIST\);)X
88580576 3552(})N
885811 f
88582576 3792(The)N
885830 f
88584751(Dwarf_Debug)X
885851 f
885861301(returned)X
885871592(from)X
885880 f
885891799(dwarf_init\(\))X
885901 f
885912398(or)X
885920 f
885932516(dwarf_elf_init\(\))X
885941 f
885953307(cannot)X
885963544(be)X
885973643(free'd)X
885983859(using)X
885990 f
88600576 3888(dwarf_dealloc\(\))N
886011 f
88602(.)S
886031363(The)X
886041515(function)X
886050 f
886061836(dwarf_finish\(\))X
886071 f
886082534(will)X
886092684(deallocate)X
886103036(all)X
886113142(dynamic)X
886123444(storage)X
886133702(associated)X
88614576 3984(with)N
88615738(an)X
88616834(instance)X
886171117(of)X
886181204(a)X
886190 f
886201288(Dwarf_Debug)X
886211 f
886221836(type.)X
886232034(In)X
886242121(particular,)X
886252469(it)X
886262533(will)X
886272677(deallocate)X
886283024(all)X
886293125(dynamically)X
886303542(allocated)X
886313853(space)X
88632576 4080(associated)N
88633926(with)X
886341088(the)X
886350 f
886361234(Dwarf_Debug)X
886371 f
886381782(descriptor,)X
886392143(and)X
886402279(finally)X
886412508(make)X
886422702(the)X
886432820(descriptor)X
886443161(invalid.)X
88645576 4272(An)N
886460 f
88647738(Dwarf_Error)X
886481 f
886491302(returned)X
886501606(from)X
886510 f
886521826(dwarf_init\(\))X
886531 f
886542438(or)X
886550 f
886562569(dwarf_elf_init\(\))X
886571 f
886583373(in)X
886593471(case)X
886603646(of)X
886613749(a)X
886623822(failure)X
88663576 4368(cannot)N
88664816(be)X
88665918(free'd)X
886661137(using)X
886670 f
886681364(dwarf_dealloc\(\))X
886691 f
88670(.)S
886712150(The)X
886722301(only)X
886732469(way)X
886742629(to)X
886752717(free)X
886762869(the)X
886770 f
886783021(Dwarf_Error)X
886791 f
886803575(from)X
886813757(either)X
886823965(of)X
88683576 4464(those)N
88684776(calls)X
88685954(is)X
886861039(to)X
886871133(use)X
886882 f
886891272(free\(3\))X
886901 f
886911523(directly.)X
886921840(Every)X
886930 f
886942092(Dwarf_Error)X
886951 f
886962652(must)X
886972839(be)X
886982947(free'd)X
886993172(by)X
887000 f
887013312(dwarf_dealloc\(\))X
887021 f
88703576 4560(except)N
88704806(those)X
88705995(returned)X
887061283(by)X
887070 f
887081411(dwarf_init\(\))X
887091 f
887102007(or)X
887110 f
887122122(dwarf_elf_init\(\))X
887131 f
88714(.)S
88715576 4800(The)N
88716721(codes)X
88717924(that)X
887181064(identify)X
887191333(the)X
887201451(storage)X
887211703(pointed)X
887221963(to)X
887232045(in)X
887242127(calls)X
887252294(to)X
887260 f
887272404(dwarf_dealloc\(\))X
887281 f
887293144(are)X
887303263(described)X
887313591(in)X
887323673(figure)X
887333885(3.)X
88734576 6164(rev)N
88735699(1.52,)X
88736879(02)X
88737979(Oct)X
887381115(2003)X
887392217(-)X
887402264(11)X
887412364(-)X
88742
8874312 p
88744%%Page: 12 12
887450(Courier)xf 0 f
8874610 s 0 xH 0 xS 0 f
887471 f
887482217 384(-)N
887492264(12)X
887502364(-)X
887513 f
8875210 f
887531058 688(i)N
887541069(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
887553 f
887561098 784(IDENTIFIER)N
887572347(USED)X
887582580(TO)X
887592715(FREE)X
8876010 f
887611058 800(i)N
887621069(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
887633 f
887641098 896(DW_DLA_STRING)N
887652447(char*)X
887661098 992(DW_DLA_LOC)N
887672447(Dwarf_Loc)X
887681098 1088(DW_DLA_LOCDESC)N
887692447(Dwarf_Locdesc)X
887701098 1184(DW_DLA_ELLIST)N
887712447(Dwarf_Ellist)X
887722903(\(not)X
887733061(used\))X
887741098 1280(DW_DLA_BOUNDS)N
887752447(Dwarf_Bounds)X
887762982(\(not)X
887773140(used\))X
887781098 1376(DW_DLA_BLOCK)N
887792447(Dwarf_Block)X
887801098 1472(DW_DLA_DEBUG)N
887812447(Dwarf_Debug)X
887822948(\(do)X
887833079(not)X
887843210(use\))X
887851098 1568(DW_DLA_DIE)N
887862447(Dwarf_Die)X
887871098 1664(DW_DLA_LINE)N
887882447(Dwarf_Line)X
887891098 1760(DW_DLA_ATTR)N
887902447(Dwarf_Attribute)X
887911098 1856(DW_DLA_TYPE)N
887922447(Dwarf_Type)X
887932919(\(not)X
887943077(used\))X
887951098 1952(DW_DLA_SUBSCR)N
887962447(Dwarf_Subscr)X
887972961(\(not)X
887983119(used\))X
887991098 2048(DW_DLA_GLOBAL)N
888002447(Dwarf_Global)X
888011098 2144(DW_DLA_ERROR)N
888022447(Dwarf_Error)X
888031098 2240(DW_DLA_LIST)N
888042447(a)X
888052507(list)X
888062629(of)X
888072716(opaque)X
888082984(descriptors)X
888091098 2336(DW_DLA_LINEBUF)N
888102447(Dwarf_Line*)X
888112921(\(not)X
888123079(used\))X
888131098 2432(DW_DLA_ARANGE)N
888142447(Dwarf_Arange)X
888151098 2528(DW_DLA_ABBREV)N
888162447(Dwarf_Abbrev)X
888171098 2624(DW_DLA_FRAME_OP)N
888182447(Dwarf_Frame_Op)X
888191098 2720(DW_DLA_CIE)N
888202447(Dwarf_Cie)X
888211098 2816(DW_DLA_FDE)N
888222447(Dwarf_Fde)X
888231098 2912(DW_DLA_LOC_BLOCK)N
888242447(Dwarf_Loc)X
888252855(Block)X
888261098 3008(DW_DLA_FRAME_BLOCK)N
888272447(Dwarf_Frame)X
888282954(Block)X
888293169(\(not)X
888303327(used\))X
888311098 3104(DW_DLA_FUNC)N
888322447(Dwarf_Func)X
888331098 3200(DW_DLA_TYPENAME)N
888342447(Dwarf_Type)X
888351098 3296(DW_DLA_VAR)N
888362447(Dwarf_Var)X
888371098 3392(DW_DLA_WEAK)N
888382447(Dwarf_Weak)X
8883910 f
888401058 3408(i)N
888411069(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
888421058(c)X
888433328(c)Y
888443248(c)Y
888453168(c)Y
888463088(c)Y
888473008(c)Y
888482928(c)Y
888492848(c)Y
888502768(c)Y
888512688(c)Y
888522608(c)Y
888532528(c)Y
888542448(c)Y
888552368(c)Y
888562288(c)Y
888572208(c)Y
888582128(c)Y
888592048(c)Y
888601968(c)Y
888611888(c)Y
888621808(c)Y
888631728(c)Y
888641648(c)Y
888651568(c)Y
888661488(c)Y
888671408(c)Y
888681328(c)Y
888691248(c)Y
888701168(c)Y
888711088(c)Y
888721008(c)Y
88873928(c)Y
88874848(c)Y
88875768(c)Y
888763549 3408(c)N
888773328(c)Y
888783248(c)Y
888793168(c)Y
888803088(c)Y
888813008(c)Y
888822928(c)Y
888832848(c)Y
888842768(c)Y
888852688(c)Y
888862608(c)Y
888872528(c)Y
888882448(c)Y
888892368(c)Y
888902288(c)Y
888912208(c)Y
888922128(c)Y
888932048(c)Y
888941968(c)Y
888951888(c)Y
888961808(c)Y
888971728(c)Y
888981648(c)Y
888991568(c)Y
889001488(c)Y
889011408(c)Y
889021328(c)Y
889031248(c)Y
889041168(c)Y
889051088(c)Y
889061008(c)Y
88907928(c)Y
88908848(c)Y
88909768(c)Y
889103 f
889111542 3504(Figure)N
889121789(3.)X
889131889(Allocation/Deallocation)X
889142709(Identifiers)X
8891511 s
88916576 3840(5.)N
88917686(Functional)X
889181115(Interface)X
889191 f
8892010 s
88921576 3984(This)N
88922738(section)X
88923985(describes)X
889241305(the)X
889251424(functions)X
889261743(available)X
889272054(in)X
889282137(the)X
889292 f
889302256(libdwarf)X
889311 f
889322547(library.)X
889332822(Each)X
889343004(function)X
889353292(description)X
889363669(includes)X
889373957(its)X
88938576 4080(definition,)N
88939927(followed)X
889401232(by)X
889411332(one)X
889421468(or)X
889431555(more)X
889441740(paragraph)X
889452082(describing)X
889462436(the)X
889472554(function's)X
889482899(operation.)X
88949576 4320(The)N
88950721(following)X
889511052(sections)X
889521330(describe)X
889531618(these)X
889541803(functions.)X
889553 f
8895611 s
88957576 4560(5.1)N
88958730(Initialization)X
889591238(Operations)X
889601 f
8896110 s
88962576 4704(These)N
88963802(functions)X
889641134(are)X
889651267(concerned)X
889661632(with)X
889671808(preparing)X
889682150(an)X
889692260(object)X
889702490(file)X
889712631(for)X
889722759(subsequent)X
889733149(access)X
889743389(by)X
889753504(the)X
889763637(functions)X
889773970(in)X
889782 f
88979576 4800(libdwarf)N
889801 f
88981866(and)X
889821002(with)X
889831164(releasing)X
889841474(allocated)X
889851784(resources)X
889862108(when)X
889872302(access)X
889882528(is)X
889892601(complete.)X
889903 f
88991576 5040(5.1.1)N
88992776(dwarf_init\(\))X
889931 f
88994576 6164(rev)N
88995699(1.52,)X
88996879(02)X
88997979(Oct)X
889981115(2003)X
889992217(-)X
890002264(12)X
890012364(-)X
89002
8900313 p
89004%%Page: 13 13
890050(Courier)xf 0 f
8900610 s 0 xH 0 xS 0 f
890071 f
890082217 384(-)N
890092264(13)X
890102364(-)X
890110 f
89012576 768(int)N
89013768(dwarf_init\()X
89014960 864(int)N
890151152(fd,)X
89016960 960(Dwarf_Unsigned)N
890171680(access,)X
89018960 1056(Dwarf_Handler)N
890191632(errhand,)X
89020960 1152(Dwarf_Ptr)N
890211440(errarg,)X
89022960 1248(Dwarf_Debug)N
890231536(*)X
890241632(dbg,)X
89025960 1344(Dwarf_Error)N
890261536(*error\))X
890271 f
89028576 1488(When)N
89029805(it)X
89030886(returns)X
890310 f
890321174(DW_DLV_OK)X
890331 f
89034(,)S
890351663(the)X
890361798(function)X
890370 f
890382130(dwarf_init\(\))X
890391 f
890402744(returns)X
890413025(thru)X
890420 f
890433220(dbg)X
890441 f
890453402(a)X
890460 f
890473504(Dwarf_Debug)X
890481 f
89049576 1584(descriptor)N
89050919(that)X
890511061(represents)X
890521409(a)X
890531467(handle)X
890541703(for)X
890551819(accessing)X
890562149(debugging)X
890572509(records)X
890582768(associated)X
890593120(with)X
890603284(the)X
890613404(open)X
890623582(file)X
890633711(descriptor)X
890640 f
89065576 1680(fd)N
890661 f
89067(.)S
890680 f
89069798(DW_DLV_NO_ENTRY)X
890701 f
890711548(is)X
890721632(returned)X
890731931(if)X
890742011(the)X
890752140(object)X
890762367(does)X
890772545(not)X
890782678(contain)X
890792945(DWARF)X
890803265(debugging)X
890813634(information.)X
890820 f
89083576 1776(DW_DLV_ERROR)N
890841 f
890851192(is)X
890861285(returned)X
890871593(if)X
890881682(an)X
890891797(error)X
890901993(occurred.)X
890912354(The)X
890920 f
890932546(access)X
890941 f
890952873(argument)X
890963215(indicates)X
890973539(what)X
890983734(access)X
890993979(is)X
89100576 1872(allowed)N
89101864(for)X
89102992(the)X
891031124(section.)X
891041425(The)X
891050 f
891061613(DW_DLC_READ)X
891071 f
891082176(parameter)X
891092533(is)X
891102621(valid)X
891112816(for)X
891122945(read)X
891133119(access)X
891143360(\(only)X
891153564(read)X
891163738(access)X
891173979(is)X
89118576 1968(defined)N
89119846(or)X
89120942(discussed)X
891211278(in)X
891221369(this)X
891231513(document\).)X
891241925(The)X
891250 f
891262107(errhand)X
891271 f
891282472(argument)X
891292804(is)X
891302886(a)X
891312951(pointer)X
891323207(to)X
891333297(a)X
891343361(function)X
891353656(that)X
891363804(will)X
891373956(be)X
89138576 2064(invoked)N
89139867(whenever)X
891401213(an)X
891411322(error)X
891421512(is)X
891431598(detected)X
891441899(as)X
891451999(a)X
891462069(result)X
891472281(of)X
891482382(a)X
891492 f
891502452(libdwarf)X
891511 f
891522756(operation.)X
891533133(The)X
891540 f
891553320(errarg)X
891561 f
891573642(argument)X
891583979(is)X
89159576 2160(passed)N
89160818(as)X
89161913(an)X
891621017(argument)X
891631348(to)X
891641438(the)X
891650 f
891661592(errhand)X
891671 f
891681956(function.)X
891692291(The)X
891702444(file)X
891712579(descriptor)X
891722927(associated)X
891733284(with)X
891743453(the)X
891750 f
891763606(fd)X
891771 f
891783729(argument)X
89179576 2256(must)N
89180751(refer)X
89181924(to)X
891821006(an)X
891831102(ordinary)X
891841394(file)X
891851521(\(i.e.)X
891861666(not)X
891871788(a)X
891881844(pipe,)X
891892022(socket,)X
891902267(device,)X
891912517(/proc)X
891922702(entry,)X
891932907(etc.\),)X
891943088(be)X
891953184(opened)X
891963436(with)X
891973599(the)X
891983718(at)X
891993797(least)X
892003965(as)X
89201576 2352(much)N
89202779(permission)X
892031155(as)X
892041247(specified)X
892051562(by)X
892061667(the)X
892070 f
892081818(access)X
892091 f
892102131(argument,)X
892112479(and)X
892122620(cannot)X
892132859(be)X
892142960(closed)X
892153190(or)X
892163281(used)X
892173452(as)X
892183543(an)X
892193643(argument)X
892203970(to)X
89221576 2448(any)N
89222725(system)X
89223980(calls)X
892241160(by)X
892251273(the)X
892261404(client)X
892271616(until)X
892281796(after)X
892290 f
892302006(dwarf_finish\(\))X
892311 f
892322712(is)X
892332799(called.)X
892343065(The)X
892353224(seek)X
892363401(position)X
892373692(of)X
892383793(the)X
892393925(file)X
89240576 2544(associated)N
89241926(with)X
892420 f
892431116(fd)X
892441 f
892451232(is)X
892461305(undefined)X
892471646(upon)X
892481826(return)X
892492038(of)X
892500 f
892512153(dwarf_init\(\))X
892521 f
89253(.)S
89254576 2736(With)N
89255785(SGI)X
89256963(IRIX,)X
892571197(by)X
892581326(default)X
892591598(it)X
892601691(is)X
892611793(allowed)X
892622096(that)X
892632265(the)X
892642412(app)X
892650 f
892662606(close\(\))X
892673020(fd)X
892681 f
892693166(immediately)X
892703616(after)X
892713814(calling)X
892720 f
89273576 2832(dwarf_init\(\))N
892741 f
89275(,)S
892761196(but)X
892771322(that)X
892781466(is)X
892791543(not)X
892801689(a)X
892811749(portable)X
892822036(approach)X
892832355(\(that)X
892842526(it)X
892852594(works)X
892862814(is)X
892872891(an)X
892882991(accidental)X
892893341(side)X
892903493(effect)X
892913700(of)X
892923790(the)X
892933911(fact)X
89294576 2928(that)N
89295724(SGI)X
89296881(IRIX)X
892971074(uses)X
892980 f
892991268(ELF_C_READ_MMAP)X
893001 f
893012016(in)X
893022106(its)X
893032209(hidden)X
893042455(internal)X
893052728(call)X
893062872(to)X
893070 f
893082991(elf_begin\(\))X
893091 f
89310(\).)S
893113615(The)X
893123769(portable)X
89313576 3024(approach)N
89314906(is)X
89315994(to)X
893161091(consider)X
893171398(that)X
893180 f
893191581(fd)X
893201 f
893211712(must)X
893221902(be)X
893232013(left)X
893242155(open)X
893252346(till)X
893262469(after)X
893272652(the)X
893282784(corresponding)X
893293277(dwarf_finish\(\))X
893303775(call)X
893313925(has)X
89332576 3120(returned.)N
89333576 3312(Since)N
893340 f
89335811(dwarf_init\(\))X
893361 f
893371416(uses)X
893381583(the)X
893391710(same)X
893401904(error)X
893412090(handling)X
893422399(processing)X
893432771(as)X
893442867(other)X
893452 f
893463062(libdwarf)X
893471 f
893483362(functions)X
893493690(\(see)X
893502 f
893513850(Error)X
89352576 3408(Handling)N
893531 f
89354900(above\),)X
893551161(client)X
893561361(programs)X
893571686(will)X
893581832(generally)X
893592153(supply)X
893602388(an)X
893610 f
893622514(error)X
893631 f
893642776(parameter)X
893653120(to)X
893663203(bypass)X
893673442(the)X
893683561(default)X
893693805(actions)X
89370576 3504(during)N
89371805(initialization)X
893721229(unless)X
893731449(the)X
893741567(default)X
893751810(actions)X
893762057(are)X
893772176(appropriate.)X
893783 f
89379576 3744(5.1.2)N
89380776(dwarf_elf_init\(\))X
893810 f
89382576 3888(int)N
89383768(dwarf_elf_init\()X
89384960 3984(Elf)N
893851152(*)X
893861248(elf_file_pointer,)X
89387960 4080(Dwarf_Unsigned)N
893881680(access,)X
89389960 4176(Dwarf_Handler)N
893901632(errhand,)X
89391960 4272(Dwarf_Ptr)N
893921440(errarg,)X
89393960 4368(Dwarf_Debug)N
893941536(*)X
893951632(dbg,)X
89396960 4464(Dwarf_Error)N
893971536(*error\))X
893981 f
89399576 4608(The)N
89400739(function)X
894010 f
894021072(dwarf_elf_init\(\))X
894031 f
894041878(is)X
894051969(identical)X
894062283(to)X
894070 f
894082412(dwarf_init\(\))X
894091 f
894103027(except)X
894113276(that)X
894123435(an)X
894133550(open)X
894140 f
894153773(Elf)X
894163984(*)X
894171 f
89418576 4704(pointer)N
89419833(is)X
89420916(passed)X
894211160(instead)X
894221417(of)X
894231514(a)X
894241580(file)X
894251717(descriptor.)X
894262108(In)X
894272205(systems)X
894282487(supporting)X
894290 f
894302886(ELF)X
894311 f
894323059(object)X
894333284(files)X
894343451(this)X
894353595(may)X
894363762(be)X
894373867(more)X
89438576 4800(space)N
89439778(or)X
89440868(time-efficient)X
894411328(than)X
894421489(using)X
894430 f
894441713(dwarf_init\(\))X
894451 f
89446(.)S
894472352(The)X
894482500(client)X
894492701(is)X
894502777(allowed)X
894513054(to)X
894523139(use)X
894533269(the)X
894540 f
894553419(Elf)X
894563615(*)X
894571 f
894583687(pointer)X
894593938(for)X
89460576 4896(its)N
89461682(own)X
89462850(purposes)X
894631165(without)X
894641439(restriction)X
894651794(during)X
894662033(the)X
894672161(time)X
894682333(the)X
894690 f
894702489(Dwarf_Debug)X
894711 f
894723047(is)X
894733130(open,)X
894743336(except)X
894753576(that)X
894763726(the)X
894773854(client)X
89478576 4992(should)N
89479809(not)X
894800 f
89481979(elf_end\(\))X
894821 f
894831431(the)X
894841549(pointer)X
894851796(till)X
894861904(after)X
894870 f
894882120(dwarf_finish)X
894891 f
894902716(is)X
894912789(called.)X
894923 f
89493576 5232(5.1.3)N
89494776(dwarf_get_elf\(\))X
894950 f
89496576 5376(int)N
89497768(dwarf_get_elf\()X
89498960 5472(Dwarf_Debug)N
894991536(dbg,)X
89500960 5568(Elf)N
895011152(**)X
895021536(elf,)X
89503960 5664(Dwarf_Error)N
895041536(*error\))X
895051 f
89506576 5808(When)N
89507789(it)X
89508855(returns)X
895090 f
895101128(DW_DLV_OK)X
895111 f
89512(,)S
895131602(the)X
895141722(function)X
895150 f
895162039(dwarf_get_elf\(\))X
895171 f
895182781(returns)X
895193026(thru)X
895203177(the)X
895213297(pointer)X
895220 f
895233574(elf)X
895241 f
895253740(the)X
895260 f
895273888(Elf)X
895281 f
89529576 6164(rev)N
89530699(1.52,)X
89531879(02)X
89532979(Oct)X
895331115(2003)X
895342217(-)X
895352264(13)X
895362364(-)X
89537
8953814 p
89539%%Page: 14 14
895400(Courier)xf 0 f
8954110 s 0 xH 0 xS 0 f
895421 f
895432217 384(-)N
895442264(14)X
895452364(-)X
895460 f
89547576 768(*)N
895481 f
89549666(handle)X
89550921(used)X
895511109(to)X
895521212(access)X
895531459(the)X
895541598(object)X
895551835(represented)X
895562247(by)X
895572368(the)X
895580 f
895592535(Dwarf_Debug)X
895601 f
895613104(descriptor)X
895620 f
895633494(dbg)X
895641 f
89565(.)S
895663719(It)X
895673809(returns)X
895680 f
89569576 864(DW_DLV_ERROR)N
895701 f
895711172(on)X
895721272(error.)X
89573576 1056(Because)N
895740 f
89575906(int)X
895761112(dwarf_init\(\))X
895771 f
895781722(opens)X
895791943(an)X
895802053(Elf)X
895812185(descriptor)X
895822540(on)X
895832654(its)X
895842763(fd)X
895852864(and)X
895860 f
895873042(dwarf_finish\(\))X
895881 f
895893748(does)X
895903930(not)X
89591576 1152(close)N
89592769(that)X
89593917(descriptor,)X
895941286(an)X
895951390(app)X
895961534(should)X
895971775(use)X
895980 f
895991938(dwarf_get_elf)X
896001 f
896012590(and)X
896022734(should)X
896032975(call)X
896040 f
896053147(elf_end)X
896061 f
896073511(with)X
896083680(the)X
896093805(pointer)X
89610576 1248(returned)N
89611864(thru)X
896121013(the)X
896130 f
896141159(Elf**)X
896151 f
896161419(handle)X
896171653(created)X
896181906(by)X
896190 f
896202034(int)X
896212226(dwarf_init\(\))X
896221 f
89623(.)S
89624576 1440(This)N
89625738(function)X
896261025(is)X
896271098(not)X
896281220(meaningful)X
896291605(for)X
896301719(a)X
896311775(system)X
896322017(that)X
896332157(does)X
896342324(not)X
896352446(used)X
896362613(the)X
896372731(Elf)X
896382849(format)X
896393083(for)X
896403197(objects.)X
896413 f
89642576 1680(5.1.4)N
89643776(dwarf_finish\(\))X
896440 f
89645576 1824(int)N
89646768(dwarf_finish\()X
89647960 1920(Dwarf_Debug)N
896481536(dbg,)X
89649960 2016(Dwarf_Error)N
896501536(*error\))X
896511 f
89652576 2160(The)N
89653728(function)X
896540 f
896551050(dwarf_finish\(\))X
896561 f
896571749(releases)X
896582031(all)X
896592 f
896602138(Libdwarf)X
896611 f
896622457(internal)X
896632729(resources)X
896643060(associated)X
896653417(with)X
896663586(the)X
896673711(descriptor)X
896680 f
89669576 2256(dbg)N
896701 f
89671(,)S
89672763(and)X
89673901(invalidates)X
896740 f
896751298(dbg)X
896761 f
89677(.)S
896781504(It)X
896791575(returns)X
896800 f
896811848(DW_DLV_ERROR)X
896821 f
896832446(if)X
896842517(there)X
896852700(is)X
896862775(an)X
896872873(error)X
896883052(during)X
896893283(the)X
896903403(finishing)X
896913709(operation.)X
89692576 2352(It)N
89693645(returns)X
896940 f
89695916(DW_DLV_OK)X
896961 f
896971368(for)X
896981482(a)X
896991538(successful)X
897001888(operation.)X
89701576 2544(Because)N
897020 f
89703906(int)X
897041112(dwarf_init\(\))X
897051 f
897061722(opens)X
897071943(an)X
897082053(Elf)X
897092185(descriptor)X
897102540(on)X
897112654(its)X
897122763(fd)X
897132864(and)X
897140 f
897153042(dwarf_finish\(\))X
897161 f
897173748(does)X
897183930(not)X
89719576 2640(close)N
89720769(that)X
89721917(descriptor,)X
897221286(an)X
897231390(app)X
897241534(should)X
897251775(use)X
897260 f
897271938(dwarf_get_elf)X
897281 f
897292590(and)X
897302734(should)X
897312975(call)X
897320 f
897333147(elf_end)X
897341 f
897353511(with)X
897363680(the)X
897373805(pointer)X
89738576 2736(returned)N
89739864(thru)X
897401013(the)X
897410 f
897421159(Elf**)X
897431 f
897441419(handle)X
897451653(created)X
897461906(by)X
897470 f
897482034(int)X
897492226(dwarf_init\(\))X
897501 f
89751(.)S
897523 f
8975311 s
89754576 2976(5.2)N
89755730(Debugging)X
897561158(Information)X
897571639(Entry)X
897581881(Delivery)X
897592221(Operations)X
897601 f
8976110 s
89762576 3120(These)N
89763788(functions)X
897641106(are)X
897651225(concerned)X
897661576(with)X
897671738(accessing)X
897682066(debugging)X
897692424(information)X
897702822(entries.)X
897713 f
89772576 3360(5.2.1)N
89773776(Debugging)X
897741164(Information)X
897751602(Entry)X
897761822(Debugger)X
897772176(Delivery)X
897782486(Operations)X
89779576 3648(5.2.2)N
89780776(dwarf_next_cu_header\(\))X
897810 f
89782576 3792(int)N
89783768(dwarf_next_cu_header\()X
89784960 3888(Dwarf_debug)N
897851536(dbg,)X
89786960 3984(Dwarf_Unsigned)N
897871680(*cu_header_length,)X
89788960 4080(Dwarf_Half)N
897891680(*version_stamp,)X
89790960 4176(Dwarf_Unsigned)N
897911680(*abbrev_offset,)X
89792960 4272(Dwarf_Half)N
897931680(*address_size,)X
89794960 4368(Dwarf_Unsigned)N
897951680(*next_cu_header,)X
89796960 4464(Dwarf_Error)N
897971680(*error\);)X
897981 f
89799576 4608(The)N
89800722(function)X
898010 f
898021038(dwarf_next_cu_header\(\))X
898031 f
898042115(returns)X
898050 f
898062387(DW_DLV_ERROR)X
898071 f
898082984(if)X
898093054(it)X
898103119(fails,)X
898113298(and)X
898120 f
898133463(DW_DLV_OK)X
898141 f
898153917(if)X
898163988(it)X
89817576 4704(succeeds.)N
89818576 4848(If)N
89819679(it)X
89820772(succeeds,)X
898210 f
898221155(*next_cu_header)X
898231 f
898241924(is)X
898252026(set)X
898262164(to)X
898272276(the)X
898282424(offset)X
898292657(in)X
898302769(the)X
898312917(.debug_info)X
898323352(section)X
898333629(of)X
898343746(the)X
898353894(next)X
89836576 4944(compilation-unit)N
898371144(header)X
898381394(if)X
898391478(it)X
898401557(succeeds.)X
898411918(On)X
898422051(reading)X
898432326(the)X
898442458(last)X
898452603(compilation-unit)X
898463170(header)X
898473419(in)X
898483515(the)X
898493647(.debug_info)X
89850576 5040(section)N
89851830(it)X
89852901(contains)X
898531195(the)X
898541320(size)X
898551472(of)X
898561566(the)X
898571691(.debug_info)X
898582103(section.)X
898592397(The)X
898602549(next)X
898612714(call)X
898622858(to)X
898630 f
898642976(dwarf_next_cu_header\(\))X
898651 f
89866576 5136(returns)N
898670 f
89868875(DW_DLV_NO_ENTRY)X
898691 f
898701643(without)X
898711935(reading)X
898722224(a)X
898732308(compilation-unit)X
898742889(or)X
898753004(setting)X
898760 f
898773292(*next_cu_header)X
898781 f
89879(.)S
89880576 5232(Subsequent)N
89881967(calls)X
898821136(to)X
898830 f
898841248(dwarf_next_cu_header\(\))X
898851 f
898862326(repeat)X
898872545(the)X
898882666(cycle)X
898892859(by)X
898902962(reading)X
898913226(the)X
898923347(first)X
898933499(compilation-unit)X
89894576 5328(and)N
89895712(so)X
89896803(on.)X
89897576 5472(The)N
89898740(other)X
89899945(values)X
899001190(returned)X
899011498(through)X
899021787(pointers)X
899032085(are)X
899042224(the)X
899052362(values)X
899062607(in)X
899072709(the)X
899082847(compilation-unit)X
899093420(header.)X
899103715(If)X
899113809(any)X
899123965(of)X
899130 f
89914576 5568(cu_header_length)N
899151 f
89916(,)S
899170 f
899181430(version_stamp)X
899191 f
89920(,)S
899210 f
899222140(abbrev_offset)X
899231 f
89924(,)S
899252822(or)X
899260 f
899272954(address_size)X
899281 f
899293567(is)X
899300 f
899313685(NULL)X
899321 f
89933(,)S
899343934(the)X
89935576 5664(argument)N
89936899(is)X
89937972(ignored)X
899381237(\(meaning)X
899391560(it)X
899401624(is)X
899411697(not)X
899421819(an)X
899431915(error)X
899442092(to)X
899452174(provide)X
899462439(a)X
899470 f
899482523(NULL)X
899491 f
899502735(pointer\).)X
89951576 6164(rev)N
89952699(1.52,)X
89953879(02)X
89954979(Oct)X
899551115(2003)X
899562217(-)X
899572264(14)X
899582364(-)X
89959
8996015 p
89961%%Page: 15 15
899620(Courier)xf 0 f
8996310 s 0 xH 0 xS 0 f
899641 f
899652217 384(-)N
899662264(15)X
899672364(-)X
899683 f
89969576 768(5.2.3)N
89970776(dwarf_siblingof\(\))X
899710 f
89972576 912(int)N
89973768(dwarf_siblingof\()X
89974960 1008(Dwarf_Debug)N
899751536(dbg,)X
89976960 1104(Dwarf_Die)N
899771440(die,)X
89978960 1200(Dwarf_Die)N
899791440(*return_sib,)X
89980960 1296(Dwarf_Error)N
899811536(*error\))X
899821 f
89983576 1440(The)N
89984728(function)X
899850 f
899861051(dwarf_siblingof\(\))X
899871 f
899881895(returns)X
899890 f
899902174(DW_DLV_ERROR)X
899911 f
899922778(and)X
899932922(sets)X
899943070(the)X
899950 f
899963224(error)X
899971 f
899983492(pointer)X
899993747(on)X
900003855(error.)X
90001576 1536(If)N
90002671(there)X
90003873(is)X
90004967(no)X
900051088(sibling)X
900061346(it)X
900071431(returns)X
900080 f
900091723(DW_DLV_NO_ENTRY)X
900101 f
90011(.)S
900122524(When)X
900132757(it)X
900142842(succeeds,)X
900150 f
900163216(dwarf_siblingof\(\))X
900171 f
90018576 1632(returns)N
900190 f
90020848(DW_DLV_OK)X
900211 f
900221321(and)X
900231458(sets)X
900240 f
900251628(*return_sib)X
900261 f
900272178(to)X
900282262(the)X
900290 f
900302410(Dwarf_Die)X
900311 f
900322864(descriptor)X
900333207(of)X
900343296(the)X
900353416(sibling)X
900363655(of)X
900370 f
900383772(die)X
900391 f
90040(.)S
900413978(If)X
900420 f
90043576 1728(die)N
900441 f
90045742(is)X
900462 f
90047817(NULL)X
900481 f
900491016(,)X
900501058(the)X
900510 f
900521206(Dwarf_Die)X
900531 f
900541660(descriptor)X
900552003(of)X
900562092(the)X
900572212(first)X
900582363(die)X
900592483(in)X
900602567(the)X
900612686(compilation-unit)X
900623240(is)X
900633314(returned.)X
900643643(This)X
900653806(die)X
900663925(has)X
90067576 1824(the)N
900680 f
90069722(DW_TAG_compile_unit)X
900701 f
900711654(tag.)X
900723 f
90073576 1968(5.2.4)N
90074776(dwarf_child\(\))X
900750 f
90076576 2112(int)N
90077768(dwarf_child\()X
90078960 2208(Dwarf_Die)N
900791440(die,)X
90080960 2304(Dwarf_Die)N
900811440(*return_kid,)X
90082960 2400(Dwarf_Error)N
900831536(*error\))X
900841 f
90085576 2544(The)N
90086725(function)X
900870 f
900881044(dwarf_child\(\))X
900891 f
900901692(returns)X
900910 f
900921967(DW_DLV_ERROR)X
900931 f
900942567(and)X
900952707(sets)X
900962851(the)X
900970 f
900983001(error)X
900991 f
901003265(die)X
901013387(on)X
901023492(error.)X
901033714(If)X
901043793(there)X
901053979(is)X
90106576 2640(no)N
90107685(child)X
90108874(it)X
90109947(returns)X
901100 f
901111227(DW_DLV_NO_ENTRY)X
901121 f
90113(.)S
901142015(When)X
901152235(it)X
901162307(succeeds,)X
901170 f
901182669(dwarf_child\(\))X
901191 f
901203321(returns)X
901210 f
901223600(DW_DLV_OK)X
901231 f
90124576 2736(and)N
90125734(sets)X
901260 f
90127924(*return_kid)X
901281 f
901291494(to)X
901301598(the)X
901310 f
901321767(Dwarf_Die)X
901331 f
901342242(descriptor)X
901352606(of)X
901362716(the)X
901372857(first)X
901383029(child)X
901393232(of)X
901400 f
901413370(die)X
901421 f
90143(.)S
901443597(The)X
901453765(function)X
901460 f
90147576 2832(dwarf_siblingof\(\))N
901481 f
901491427(can)X
901501574(be)X
901511685(used)X
901521867(with)X
901532044(the)X
901542177(return)X
901552404(value)X
901562612(of)X
901570 f
901582741(dwarf_child\(\))X
901591 f
901603399(to)X
901613495(access)X
901623735(the)X
901633867(other)X
90164576 2928(children)N
90165859(of)X
901660 f
90167974(die)X
901681 f
90169(.)S
901703 f
90171576 3168(5.2.5)N
90172776(dwarf_offdie\(\))X
901730 f
90174576 3312(int)N
90175768(dwarf_offdie\()X
90176960 3408(Dwarf_Debug)N
901771536(dbg,)X
90178960 3504(Dwarf_Off)N
901791440(offset,)X
90180960 3600(Dwarf_Die)N
901811440(*return_die,)X
90182960 3696(Dwarf_Error)N
901831536(*error\))X
901841 f
90185576 3840(The)N
90186725(function)X
901870 f
901881045(dwarf_offdie\(\))X
901891 f
901901742(returns)X
901910 f
901922018(DW_DLV_ERROR)X
901931 f
901942619(and)X
901952760(sets)X
901962905(the)X
901970 f
901983056(error)X
901991 f
902003321(die)X
902013444(on)X
902023549(error.)X
902033771(When)X
902043988(it)X
90205576 3936(succeeds,)N
902060 f
90207936(dwarf_offdie\(\))X
902081 f
902091634(returns)X
902100 f
902111911(DW_DLV_OK)X
902121 f
902132369(and)X
902142511(sets)X
902150 f
902162685(*return_die)X
902171 f
902183239(to)X
902193326(the)X
902203449(the)X
902210 f
902223600(Dwarf_Die)X
902231 f
90224576 4032(descriptor)N
90225918(of)X
902261006(the)X
902271125(debugging)X
902281484(information)X
902291883(entry)X
902302069(at)X
902310 f
902322176(offset)X
902331 f
902342485(in)X
902352568(the)X
902362687(section)X
902372935(containing)X
902383294(debugging)X
902393654(information)X
90240576 4128(entries)N
90241823(i.e)X
90242934(the)X
902431064(.debug_info)X
902441481(section.)X
902451780(A)X
902461870(return)X
902472094(of)X
902480 f
902492221(DW_DLV_NO_ENTRY)X
902501 f
902512973(means)X
902523210(that)X
902533362(the)X
902540 f
902553520(offset)X
902561 f
902573840(in)X
902583934(the)X
90259576 4224(section)N
90260831(is)X
90261912(of)X
902621007(a)X
902631071(byte)X
902641237(containing)X
902651603(all)X
902661711(0)X
902671779(bits,)X
902681942(indicating)X
902692290(that)X
902702438(there)X
902712627(is)X
902722709(no)X
902732818(abbreviation)X
902743248(code.)X
902753449(Meaning)X
902763763(this)X
902773907('die)X
90278576 4320(offset')N
90279808(is)X
90280883(not)X
902811007(the)X
902821127(offset)X
902831332(of)X
902841421(a)X
902851479(real)X
902861622(die,)X
902871762(but)X
902881886(is)X
902891961(instead)X
902902210(an)X
902912308(offset)X
902922513(of)X
902932602(a)X
902942660(null)X
902952806(die,)X
902962946(a)X
902973003(padding)X
902983282(die,)X
902993421(or)X
903003509(of)X
903013597(some)X
903023787(random)X
90303576 4416(zero)N
90304750(byte:)X
90305945(this)X
903061095(should)X
903071343(not)X
903081480(be)X
903091591(returned)X
903101894(in)X
903111991(normal)X
903122253(use.)X
903132435(It)X
903142519(is)X
903152607(the)X
903162740(user's)X
903172967(responsibility)X
903183437(to)X
903193534(make)X
903203743(sure)X
903213912(that)X
903220 f
90323576 4512(offset)N
903241 f
90325886(is)X
90326961(the)X
903271081(start)X
903281241(of)X
903291329(a)X
903301386(valid)X
903311567(debugging)X
903321926(information)X
903332325(entry.)X
903342551(The)X
903352697(result)X
903362896(of)X
903372984(passing)X
903383245(it)X
903393310(an)X
903403407(invalid)X
903413650(offset)X
903423854(could)X
90343576 4608(be)N
90344672(chaos.)X
903453 f
9034611 s
90347576 5040(5.3)N
90348730(Debugging)X
903491158(Information)X
903501639(Entry)X
903511881(Query)X
903522143(Operations)X
903531 f
9035410 s
90355576 5184(These)N
90356794(queries)X
903571052(return)X
903581270(specific)X
903591546(information)X
903601950(about)X
903612154(debugging)X
903622519(information)X
903632924(entries)X
903643165(or)X
903653259(a)X
903663322(descriptor)X
903673670(that)X
903683817(can)X
903693956(be)X
90370576 5280(used)N
90371745(on)X
90372847(subsequent)X
903731225(queries)X
903741479(when)X
903751675(given)X
903761875(a)X
903770 f
903781961(Dwarf_Die)X
903791 f
903802415(descriptor.)X
903812798(Note)X
903822976(that)X
903833117(some)X
903843307(operations)X
903853662(are)X
903863782(specific)X
90387576 5376(to)N
90388660(debugging)X
903891020(information)X
903901420(entries)X
903911656(that)X
903921798(are)X
903931919(represented)X
903942312(by)X
903952414(a)X
903960 f
903972500(Dwarf_Die)X
903981 f
903992954(descriptor)X
904003298(of)X
904013388(a)X
904023447(specific)X
904033720(type.)X
904043921(For)X
90405576 5472(example,)N
90406892(not)X
904071018(all)X
904081122(debugging)X
904091484(information)X
904101886(entries)X
904112124(contain)X
904122384(an)X
904132484(attribute)X
904142775(having)X
904153017(a)X
904163077(name,)X
904173295(so)X
904183390(consequently,)X
904193857(a)X
904203916(call)X
90421576 5568(to)N
904220 f
90423690(dwarf_diename\(\))X
904241 f
904251434(using)X
904261631(a)X
904270 f
904281719(Dwarf_Die)X
904291 f
904302175(descriptor)X
904312520(that)X
904322664(does)X
904332835(not)X
904342962(have)X
904353139(a)X
904363200(name)X
904373399(attribute)X
904383691(will)X
904393840(return)X
904400 f
90441576 5664(DW_DLV_NO_ENTRY)N
904421 f
90443(.)S
904441362(This)X
904451530(is)X
904461609(not)X
904471737(an)X
904481839(error,)X
904492042(i.e.)X
904502166(calling)X
904512410(a)X
904522472(function)X
904532765(that)X
904542911(needs)X
904553120(a)X
904563182(specific)X
904573458(attribute)X
904583751(is)X
904593829(not)X
904603956(an)X
90461576 5760(error)N
90462753(for)X
90463867(a)X
90464923(die)X
904651041(that)X
904661181(does)X
904671348(not)X
904681470(contain)X
904691726(that)X
904701866(specific)X
904712136(attribute.)X
90472576 6164(rev)N
90473699(1.52,)X
90474879(02)X
90475979(Oct)X
904761115(2003)X
904772217(-)X
904782264(15)X
904792364(-)X
90480
9048116 p
90482%%Page: 16 16
904830(Courier)xf 0 f
9048410 s 0 xH 0 xS 0 f
904851 f
904862217 384(-)N
904872264(16)X
904882364(-)X
90489576 768(There)N
90490784(are)X
90491903(several)X
904921151(methods)X
904931442(that)X
904941582(can)X
904951714(be)X
904961810(used)X
904971977(to)X
904982059(obtain)X
904992279(the)X
905002397(value)X
905012591(of)X
905022678(an)X
905032774(attribute)X
905043061(in)X
905053143(a)X
905063199(given)X
905073397(die:)X
90508636 912(1.)N
90509776(Call)X
905100 f
90511972(dwarf_hasattr\(\))X
905121 f
905131727(to)X
905141824(determine)X
905152180(if)X
905162264(the)X
905172397(debugging)X
905182770(information)X
905193184(entry)X
905203385(has)X
905213528(the)X
905223662(attribute)X
905233965(of)X
90524776 1008(interest)N
905251032(prior)X
905261208(to)X
905271290(issuing)X
905281536(the)X
905291654(query)X
905301857(for)X
905311971(information)X
905322369(about)X
905332567(the)X
905342685(attribute.)X
90535636 1248(2.)N
90536776(Supply)X
905371026(an)X
905380 f
905391154(error)X
905401 f
905411418(argument,)X
905421765(and)X
905431906(check)X
905442119(its)X
905452219(value)X
905462418(after)X
905472591(the)X
905482714(call)X
905492855(to)X
905502942(a)X
905513003(query)X
905523211(indicates)X
905533521(an)X
905543622(unsuccessful)X
90555776 1344(return,)N
905561010(to)X
905571094(determine)X
905581437(the)X
905591557(nature)X
905601780(of)X
905611869(the)X
905621989(problem.)X
905632318(The)X
905640 f
905652493(error)X
905661 f
905672754(argument)X
905683078(will)X
905693223(indicate)X
905703498(whether)X
905713778(an)X
905723875(error)X
90573776 1440(occurred,)N
905741098(or)X
905751185(the)X
905761303(specific)X
905771573(attribute)X
905781860(needed)X
905792108(was)X
905802253(missing)X
905812521(in)X
905822603(that)X
905832743(die.)X
90584636 1680(3.)N
90585776(Arrange)X
905861105(to)X
905871232(have)X
905881450(an)X
905891592(error)X
905901815(handling)X
905912161(function)X
905922494(invoked)X
905932818(upon)X
905943044(detection)X
905953404(of)X
905963537(an)X
905973679(error)X
905983902(\(see)X
905990 f
90600776 1776(dwarf_init\(\))N
906011 f
90602(\).)S
90603636 2016(4.)N
90604776(Call)X
906050 f
90606957(dwarf_attrlist\(\))X
906071 f
906081745(and)X
906091882(iterate)X
906102104(through)X
906112374(the)X
906122493(returned)X
906132782(list)X
906142900(of)X
906152988(attributes,)X
906163327(dealing)X
906173584(with)X
906183747(each)X
906193916(one)X
90620776 2112(as)N
90621863(appropriate.)X
906223 f
90623576 2400(5.3.1)N
90624776(dwarf_tag\(\))X
906250 f
90626576 2544(int)N
90627768(dwarf_tag\()X
90628960 2640(Dwarf_Die)N
906291440(die,)X
90630960 2736(Dwarf_Half)N
906311488(*tagval,)X
90632960 2832(Dwarf_Error)N
906331536(*error\))X
906341 f
90635576 2976(The)N
90636723(function)X
906370 f
906381040(dwarf_tag\(\))X
906391 f
906401590(returns)X
906411836(the)X
906422 f
906431957(tag)X
906441 f
906452082(of)X
906460 f
906472200(die)X
906481 f
906492367(thru)X
906502519(the)X
906512640(pointer)X
906520 f
906532938(tagval)X
906541 f
906553249(if)X
906563321(it)X
906573388(succeeds.)X
906583737(It)X
906593809(returns)X
906600 f
90661576 3072(DW_DLV_OK)N
906621 f
906631028(if)X
906641097(it)X
906651161(succeeds.)X
906661507(It)X
906671576(returns)X
906680 f
906691847(DW_DLV_ERROR)X
906701 f
906712443(on)X
906722543(error.)X
906733 f
90674576 3312(5.3.2)N
90675776(dwarf_dieoffset\(\))X
906760 f
90677576 3456(int)N
90678768(dwarf_dieoffset\()X
90679960 3552(Dwarf_Die)N
906801440(die,)X
90681960 3648(Dwarf_Off)N
906821440(*)X
906831536(return_offset,)X
90684960 3744(Dwarf_Error)N
906851536(*error\))X
906861 f
90687576 3888(When)N
90688855(it)X
90689986(succeeds,)X
906901379(the)X
906911564(function)X
906920 f
906931946(dwarf_dieoffset\(\))X
906941 f
906952849(returns)X
906960 f
906973188(DW_DLV_OK)X
906981 f
906993708(and)X
907003912(sets)X
907010 f
90702576 3984(*return_offset)N
907031 f
907041275(to)X
907051364(the)X
907061489(position)X
907071773(of)X
907080 f
907091895(die)X
907101 f
907112066(in)X
907122155(the)X
907132280(section)X
907142534(containing)X
907152899(debugging)X
907163263(information)X
907173667(entries)X
907183907(\(the)X
907190 f
90720576 4080(return_offset)N
907211 f
907221223(is)X
907231299(a)X
907241358(section-relative)X
907251876(offset\).)X
907262149(In)X
907272239(other)X
907282427(words,)X
907292666(it)X
907302733(sets)X
907310 f
907322904(return_offset)X
907331 f
907343551(to)X
907353636(the)X
907363758(offset)X
907373965(of)X
90738576 4176(the)N
90739718(start)X
90740900(of)X
907411011(the)X
907421153(debugging)X
907431535(information)X
907441957(entry)X
907452166(described)X
907462518(by)X
907470 f
907482670(die)X
907491 f
907502858(in)X
907512963(the)X
907523104(section)X
907533374(containing)X
907543755(die's)X
907553954(i.e)X
90756576 4272(.debug_info.)N
907571021(It)X
907581090(returns)X
907590 f
907601361(DW_DLV_ERROR)X
907611 f
907621957(on)X
907632057(error.)X
907643 f
90765576 4512(5.3.3)N
90766776 0.1562(dwarf_die_CU_offset\(\))AX
907670 f
90768576 4656(int)N
90769768(dwarf_die_CU_offset\()X
90770960 4752(Dwarf_Die)N
907711440(die,)X
90772960 4848(Dwarf_Off)N
907731440(*return_offset,)X
90774960 4944(Dwarf_Error)N
907751536(*error\))X
907761 f
90777576 5088(The)N
90778721(function)X
907790 f
907801036(dwarf_die_CU_offset\(\))X
907811 f
907822064(is)X
907832137(similar)X
907842379(to)X
907850 f
907862489(dwarf_dieoffset\(\))X
907871 f
90788(,)S
907893345(except)X
907903575(that)X
907913715(it)X
907923780(puts)X
907933934(the)X
90794576 5184(offset)N
90795792(of)X
90796892(the)X
907971023(DIE)X
907981190(represented)X
907991594(by)X
908001707(the)X
908010 f
908021866(Dwarf_Die)X
908032358(die)X
908041 f
90805(,)S
908062554(from)X
908072742(the)X
908082872(start)X
908093042(of)X
908103141(the)X
908113271(compilation-unit)X
908123836(that)X
908133988(it)X
90814576 5280(belongs)N
90815845(to)X
90816927(rather)X
908171135(than)X
908181293(the)X
908191411(start)X
908201569(of)X
908211656(.debug_info)X
908222061(\(the)X
908230 f
908242234(return_offset)X
908251 f
908262878(is)X
908272951(a)X
908283007(CU-relative)X
908293406(offset\).)X
908303 f
90831576 5616(5.3.4)N
90832776(dwarf_diename\(\))X
908331 f
90834576 6164(rev)N
90835699(1.52,)X
90836879(02)X
90837979(Oct)X
908381115(2003)X
908392217(-)X
908402264(16)X
908412364(-)X
90842
9084317 p
90844%%Page: 17 17
908450(Courier)xf 0 f
9084610 s 0 xH 0 xS 0 f
908471 f
908482217 384(-)N
908492264(17)X
908502364(-)X
908510 f
90852576 768(int)N
90853768(dwarf_diename\()X
90854960 864(Dwarf_Die)N
908551440(die,)X
90856960 960(char)N
908571248(**)X
908581392(return_name,)X
90859960 1056(Dwarf_Error)N
908601536(*error\))X
908611 f
90862576 1200(When)N
90863795(it)X
90864866(succeeds,)X
908651200(the)X
908661326(function)X
908670 f
908681649(dwarf_diename\(\))X
908691 f
908702397(returns)X
908710 f
908722676(DW_DLV_OK)X
908731 f
908743136(and)X
908753280(sets)X
908760 f
908773456(*return_name)X
908781 f
90879576 1296(to)N
90880664(a)X
90881726(pointer)X
90882978(to)X
908831065(a)X
908841126(null-terminated)X
908851645(string)X
908861852(of)X
908871944(characters)X
908882296(that)X
908892441(represents)X
908902792(the)X
908912915(name)X
908923114(attribute)X
908933406(of)X
908940 f
908953526(die)X
908961 f
90897(.)S
908983735(It)X
908993809(returns)X
909000 f
90901576 1392(DW_DLV_NO_ENTRY)N
909021 f
909031327(if)X
909040 f
909051435(die)X
909061 f
909071610(does)X
909081788(not)X
909091921(have)X
909102104(a)X
909112171(name)X
909122376(attribute.)X
909132714(It)X
909142795(returns)X
909150 f
909163078(DW_DLV_ERROR)X
909171 f
909183686(if)X
909193767(an)X
909203875(error)X
90921576 1488(occurred.)N
90922925(The)X
909231077(storage)X
909241336(pointed)X
909251602(to)X
909261690(by)X
909271796(a)X
909281858(successful)X
909292214(return)X
909302432(of)X
909310 f
909322553(dwarf_diename\(\))X
909331 f
909343299(should)X
909353538(be)X
909363640(free'd)X
909373859(using)X
90938576 1584(the)N
90939694(allocation)X
909401030(type)X
909410 f
909421216(DW_DLA_STRING)X
909431 f
909441860(when)X
909452054(no)X
909462154(longer)X
909472379(of)X
909482466(interest)X
909492722(\(see)X
909500 f
909512900(dwarf_dealloc\(\))X
909521 f
90953(\).)S
909543 f
90955576 1824(5.3.5)N
90956776(dwarf_attrlist\(\))X
909570 f
90958576 1968(int)N
90959768(dwarf_attrlist\()X
90960960 2064(Dwarf_Die)N
909611440(die,)X
90962960 2160(Dwarf_Attribute**)N
909631824(attrbuf,)X
90964960 2256(Dwarf_Signed)N
909651584(*attrcount,)X
90966960 2352(Dwarf_Error)N
909671536(*error\))X
909681 f
90969576 2496(When)N
90970794(it)X
90971864(returns)X
909720 f
909731141(DW_DLV_OK)X
909741 f
90975(,)S
909761619(the)X
909771743(function)X
909780 f
909792064(dwarf_attrlist\(\))X
909801 f
909812858(sets)X
909820 f
909833032(attrbuf)X
909841 f
909853394(to)X
909863483(point)X
909873674(to)X
909883763(an)X
909893866(array)X
90990576 2592(of)N
909910 f
90992693(Dwarf_Attribute)X
909931 f
909941434(descriptors)X
909951807(corresponding)X
909962287(to)X
909972370(each)X
909982539(of)X
909992627(the)X
910002746(attributes)X
910013065(in)X
910023148(die,)X
910033287(and)X
910043424(returns)X
910053668(the)X
910063787(number)X
91007576 2688(of)N
91008671(elements)X
91009984(in)X
910101074(the)X
910111200(array)X
910121394(thru)X
910130 f
910141579(attrcount)X
910151 f
91016(.)S
910170 f
910182135(DW_DLV_NO_ENTRY)X
910191 f
910202884(is)X
910212966(returned)X
910223263(if)X
910233341(the)X
910243468(count)X
910253675(is)X
910263757(zero)X
910273925(\(no)X
910280 f
91029576 2784(attrbuf)N
910301 f
91031936(is)X
910321013(allocated)X
910331327(in)X
910341413(this)X
910351552(case\).)X
910360 f
910371838(DW_DLV_ERROR)X
910381 f
910392438(is)X
910402514(returned)X
910412805(on)X
910422908(error.)X
910433128(On)X
910443249(a)X
910453308(successful)X
910463661(return)X
910473876(from)X
910480 f
91049576 2880(dwarf_attrlist\(\))N
910501 f
91051(,)S
910521385(each)X
910531554(of)X
910541642(the)X
910550 f
910561789(Dwarf_Attribute)X
910571 f
910582530(descriptors)X
910592903(should)X
910603138(be)X
910613236(individually)X
910623644(free'd)X
910633859(using)X
910640 f
91065576 2976(dwarf_dealloc\(\))N
910661 f
910671317(with)X
910681480(the)X
910691599(allocation)X
910701936(type)X
910710 f
910722123(DW_DLA_ATTR)X
910731 f
91074(,)S
910752692(followed)X
910762998(by)X
910773099(free-ing)X
910783375(the)X
910793493(list)X
910803610(pointed)X
910813870(to)X
910823952(by)X
910830 f
91084576 3072(*attrbuf)N
910851 f
91086992(using)X
910870 f
910881225(dwarf_dealloc\(\))X
910891 f
910901977(with)X
910912151(the)X
910922281(allocation)X
910932629(type)X
910940 f
910952827(DW_DLA_LIST)X
910961 f
91097(,)S
910983407(when)X
910993614(no)X
911003727(longer)X
911013965(of)X
91102576 3168(interest)N
91103832(\(see)X
911040 f
911051010(dwarf_dealloc\(\))X
911061 f
91107(\).)S
91108576 3360(Freeing)N
91109841(the)X
91110959(attrlist:)X
911110 f
91112736 3504(Dwarf_Unsigned)N
911131456(atcnt;)X
91114736 3600(Dwarf_Attribute)N
911151504(*atlist;)X
91116736 3696(int)N
91117928(errv;)X
91118736 3888(if)N
91119880(\(\(errv)X
911201216(=)X
911211312(dwarf_attrlist\(somedie,)X
911222464(&atlist,&atcnt,)X
911233232(&error\)\))X
911243664(==)X
911253808(DW_DLV_OK\))X
911264336({)X
911271120 4080(for)N
911281312(\(i)X
911291456(=)X
911301552(0;)X
911311696(i)X
911321792(<)X
911331888(atcnt;)X
911342224(++i\))X
911352464({)X
911361504 4176(/*)N
911371648(use)X
911381840(atlist[i])X
911392320(*/)X
911401504 4272(dwarf_dealloc\(dbg,)N
911412416(atlist[i],)X
911422944(DW_DLA_ATTR\);)X
911431120 4368(})N
911441120 4464(dwarf_dealloc\(dbg,)N
911452032(atlist,)X
911462416(DW_DLA_LIST\);)X
91147736 4560(})N
911483 f
91149576 4704(5.3.6)N
91150776(dwarf_hasattr\(\))X
911510 f
91152576 4848(int)N
91153768(dwarf_hasattr\()X
91154960 4944(Dwarf_Die)N
911551440(die,)X
91156960 5040(Dwarf_Half)N
911571488(attr,)X
91158960 5136(Dwarf_Bool)N
911591488(*return_bool,)X
91160960 5232(Dwarf_Error)N
911611536(*error\))X
911621 f
91163576 5376(When)N
91164795(it)X
91165866(succeeds,)X
911661200(the)X
911671326(function)X
911680 f
911691649(dwarf_hasattr\(\))X
911701 f
911712397(returns)X
911720 f
911732676(DW_DLV_OK)X
911741 f
911753136(and)X
911763280(sets)X
911770 f
911783456(*return_bool)X
911791 f
91180576 5472(to)N
911812 f
91182658(non-zero)X
911831 f
91184963(if)X
911850 f
911861060(die)X
911871 f
911881224(has)X
911891351(the)X
911901469(attribute)X
911910 f
911921784(attr)X
911931 f
911941996(and)X
911952 f
911962132(zero)X
911971 f
911982290(otherwise.)X
911992662(If)X
912002736(it)X
912012800(fails,)X
912022978(it)X
912033042(returns)X
912040 f
912053313(DW_DLV_ERROR)X
912061 f
91207(.)S
91208576 6164(rev)N
91209699(1.52,)X
91210879(02)X
91211979(Oct)X
912121115(2003)X
912132217(-)X
912142264(17)X
912152364(-)X
91216
9121718 p
91218%%Page: 18 18
912190(Courier)xf 0 f
9122010 s 0 xH 0 xS 0 f
912211 f
912222217 384(-)N
912232264(18)X
912242364(-)X
912253 f
91226576 768(5.3.7)N
91227776(dwarf_attr\(\))X
912280 f
91229576 912(int)N
91230768(dwarf_attr\()X
91231960 1008(Dwarf_Die)N
912321440(die,)X
91233960 1104(Dwarf_Half)N
912341488(attr,)X
91235960 1200(Dwarf_Attribute)N
912361728(*return_attr,)X
91237960 1296(Dwarf_Error)N
912381536(*error\))X
912391 f
91240576 1440(When)N
91241834(it)X
91242944(returns)X
912430 f
912441261(DW_DLV_OK)X
912451 f
91246(,)S
912471779(the)X
912481943(function)X
912490 f
912502304(dwarf_attr\(\))X
912511 f
912522947(sets)X
912530 f
912543162(*return_attr)X
912551 f
912563805(to)X
912573934(the)X
912580(Courier-BoldOblique)xf 0 f
912591 f
912600(Courier)xf 0 f
912611 f
912620 f
91263576 1536(Dwarf_Attribute)N
912641 f
912651325(descriptor)X
912661675(of)X
912670 f
912681799(die)X
912691 f
912701972(having)X
912712218(the)X
912722344(attribute)X
912730 f
912742667(attr)X
912751 f
91276(.)S
912772927(It)X
912783004(returns)X
912790(Courier-BoldOblique)xf 0 f
912801 f
912810 f
912823283(W_DLV_NO_ENTRY)X
912831 f
912843983(if)X
912850(Courier)xf 0 f
912861 f
912870 f
91288576 1632(attr)N
912891 f
91290788(is)X
91291861(not)X
91292983(contained)X
912931315(in)X
912940 f
912951425(die)X
912961 f
91297(.)S
912981629(It)X
912991698(returns)X
913000(Courier-BoldOblique)xf 0 f
913011 f
913020 f
913031969(W_DLV_ERROR)X
913041 f
913052517(if)X
913062586(an)X
913072682(error)X
913082859(occurred.)X
913093 f
91310576 2064(5.3.8)N
91311776(dwarf_lowpc\(\))X
913120(Courier)xf 0 f
913130(Courier)xf 0 f
91314576 2208(int)N
91315768(dwarf_lowpc\()X
91316960 2304(Dwarf_Die)N
913171632(die,)X
91318960 2400(Dwarf_Addr)N
913191536(*)X
913201632(return_lowpc,)X
91321960 2496(Dwarf_Error)N
913221536(*)X
913231632(error\))X
913241 f
91325576 2640(The)N
91326727(function)X
913270 f
913281048(dwarf_lowpc\(\))X
913291 f
913301698(returns)X
913310 f
913321975(DW_DLV_OK)X
913331 f
913342433(and)X
913352575(sets)X
913360 f
913372749(*return_lowpc)X
913381 f
913393399(to)X
913403488(the)X
913413613(low)X
913423760(program)X
91343576 2736(counter)N
91344844(value)X
913451045(associated)X
913461402(with)X
913471571(the)X
913480 f
913491724(die)X
913501 f
913511895(descriptor)X
913522243(if)X
913530 f
913542347(die)X
913551 f
913562517(represents)X
913572869(a)X
913582931(debugging)X
913593295(information)X
913603699(entry)X
913613890(with)X
91362576 2832(this)N
91363744(attribute.)X
913641104(It)X
913651206(returns)X
913660 f
913671510(DW_DLV_NO_ENTRY)X
913681 f
913692284(if)X
913700 f
913712415(die)X
913721 f
913732613(does)X
913742814(not)X
913752970(have)X
913763176(this)X
913773345(attribute.)X
913783706(It)X
913793809(returns)X
913800 f
91381576 2928(DW_DLV_ERROR)N
913821 f
913831172(if)X
913841241(an)X
913851337(error)X
913861514(occurred.)X
913873 f
91388576 3168(5.3.9)N
91389776(dwarf_highpc\(\))X
913900 f
91391576 3312(int)N
91392768(dwarf_highpc\()X
91393960 3408(Dwarf_Die)N
913941440(die,)X
91395960 3504(Dwarf_Addr)N
913961536(*)X
913971632(return_highpc,)X
91398960 3600(Dwarf_Error)N
913991536(*error\))X
914001 f
91401576 3744(The)N
91402724(function)X
914030 f
914041042(dwarf_highpc\(\))X
914051 f
914061737(returns)X
914070 f
914082011(DW_DLV_OK)X
914091 f
914102466(and)X
914112605(sets)X
914120 f
914132776(*return_highpc)X
914141 f
914153472(the)X
914163594(high)X
914173760(program)X
91418576 3840(counter)N
91419844(value)X
914201045(associated)X
914211402(with)X
914221571(the)X
914230 f
914241724(die)X
914251 f
914261895(descriptor)X
914272243(if)X
914280 f
914292347(die)X
914301 f
914312517(represents)X
914322869(a)X
914332931(debugging)X
914343295(information)X
914353699(entry)X
914363890(with)X
91437576 3936(this)N
91438744(attribute.)X
914391104(It)X
914401206(returns)X
914410 f
914421510(DW_DLV_NO_ENTRY)X
914431 f
914442284(if)X
914450 f
914462415(die)X
914471 f
914482613(does)X
914492814(not)X
914502970(have)X
914513176(this)X
914523345(attribute.)X
914533706(It)X
914543809(returns)X
914550 f
91456576 4032(DW_DLV_ERROR)N
914571 f
914581172(if)X
914591241(an)X
914601337(error)X
914611514(occurred.)X
914623 f
91463576 4272(5.3.10)N
91464816(dwarf_bytesize\(\))X
914650 f
91466576 4416(Dwarf_Signed)N
914671200(dwarf_bytesize\()X
91468960 4512(Dwarf_Die)N
914691776(die,)X
91470960 4608(Dwarf_Unsigned)N
914711728(*return_size,)X
91472960 4704(Dwarf_Error)N
914731728(*error\))X
914741 f
91475576 4848(When)N
91476811(it)X
91477898(succeeds,)X
914780 f
914791275(dwarf_bytesize\(\))X
914801 f
914812086(returns)X
914820 f
914832380(DW_DLV_OK)X
914841 f
914852856(and)X
914863016(sets)X
914870 f
914883208(*return_size)X
914891 f
914903828(to)X
914913934(the)X
91492576 4944(number)N
91493841(of)X
91494928(bytes)X
914951117(needed)X
914961365(to)X
914971447(contain)X
914981703(an)X
914991799(instance)X
915002082(of)X
915012169(the)X
915022287(aggregate)X
915032620(debugging)X
915042978(information)X
915053376(entry)X
915063561(represented)X
915073952(by)X
915080 f
91509576 5040(die)N
915101 f
91511(.)S
91512836(It)X
91513961(returns)X
915140 f
915151288(DW_DLV_NO_ENTRY)X
915161 f
915172084(if)X
915180 f
915192237(die)X
915201 f
915212457(does)X
915222681(not)X
915232860(contain)X
915243173(the)X
915253348(byte)X
915263563(size)X
915273765(attribute)X
915280 f
91529576 5136(DW_AT_byte_size)N
915301 f
91531(.)S
915321356(It)X
915331425(returns)X
915340 f
915351696(DW_DLV_ERROR)X
915361 f
915372292(if)X
915382361(an)X
915392457(error)X
915402634(occurred.)X
915413 f
91542576 5472(5.3.11)N
91543816(dwarf_bitsize\(\))X
915441 f
91545576 6164(rev)N
91546699(1.52,)X
91547879(02)X
91548979(Oct)X
915491115(2003)X
915502217(-)X
915512264(18)X
915522364(-)X
91553
9155419 p
91555%%Page: 19 19
915560(Courier)xf 0 f
9155710 s 0 xH 0 xS 0 f
915581 f
915592217 384(-)N
915602264(19)X
915612364(-)X
915620 f
91563576 768(int)N
91564768(dwarf_bitsize\()X
91565960 864(Dwarf_Die)N
915661440(die,)X
91567960 960(Dwarf_Unsigned)N
915681728(*return_size,)X
91569960 1056(Dwarf_Error)N
915701536(*error\))X
915711 f
91572576 1200(When)N
91573789(it)X
91574854(succeeds,)X
915750 f
915761209(dwarf_bitsize\(\))X
915771 f
915781950(returns)X
915790 f
915802223(DW_DLV_OK)X
915811 f
915822677(and)X
915832815(sets)X
915840 f
915852985(*return_size)X
915861 f
915873583(to)X
915883667(the)X
915893787(number)X
91590576 1296(of)N
91591665(bits)X
91592802(occupied)X
915931114(by)X
915941216(the)X
915951336(bit)X
915961442(field)X
915971610(value)X
915981805(that)X
915991946(is)X
916002020(an)X
916012117(attribute)X
916022405(of)X
916032493(the)X
916042612(given)X
916052811(die.)X
916062970(It)X
916073040(returns)X
916080 f
916093312(DW_DLV_NO_ENTRY)X
916101 f
91611576 1392(if)N
916120 f
91613684(die)X
916141 f
91615859(does)X
916161037(not)X
916171170(contain)X
916181437(the)X
916191566(bit)X
916201681(size)X
916211837(attribute)X
916220 f
916232163(DW_AT_bit_size)X
916241 f
91625(.)S
916262906(It)X
916272986(returns)X
916280 f
916293268(DW_DLV_ERROR)X
916301 f
916313875(if)X
916323956(an)X
91633576 1488(error)N
91634753(occurred.)X
916353 f
91636576 1728(5.3.12)N
91637816(dwarf_bitoffset\(\))X
916380 f
91639576 1872(int)N
91640768(dwarf_bitoffset\()X
91641960 1968(Dwarf_Die)N
916421440(die,)X
91643960 2064(Dwarf_Unsigned)N
916441728(*return_size,)X
91645960 2160(Dwarf_Error)N
916461536(*error\))X
916471 f
91648576 2304(When)N
91649806(it)X
91650888(succeeds,)X
916510 f
916521260(dwarf_bitoffset\(\))X
916531 f
916542115(returns)X
916550 f
916562405(DW_DLV_OK)X
916571 f
916582876(and)X
916593031(sets)X
916600 f
916613218(*return_size)X
916621 f
916633833(to)X
916643934(the)X
91665576 2400(number)N
91666845(of)X
91667936(bits)X
916681075(to)X
916691161(the)X
916701283(left)X
916711414(of)X
916721504(the)X
916731625(most)X
916741803(significant)X
916752164(bit)X
916762271(of)X
916772361(the)X
916782482(bit)X
916792589(field)X
916802759(value.)X
916812996(This)X
916823161(bit)X
916833268(offset)X
916843474(is)X
916853550(not)X
916863675(necessarily)X
91687576 2496(the)N
91688703(net)X
91689830(bit)X
91690943(offset)X
916911155(within)X
916921388(the)X
916931515(structure)X
916941826(or)X
916951923(class)X
916962109(,)X
916972159(since)X
916980 f
916992382(DW_AT_data_member_location)X
917001 f
917013660(may)X
917023828(give)X
917033996(a)X
91704576 2592(byte)N
91705738(offset)X
91706945(to)X
917071031(this)X
917080 f
917091198(DIE)X
917101 f
917111366(and)X
917121506(the)X
917131628(bit)X
917141735(offset)X
917151941(returned)X
917162232(through)X
917172504(the)X
917182625(pointer)X
917192875(does)X
917203045(not)X
917213170(include)X
917223429(the)X
917233550(bits)X
917243688(in)X
917253773(the)X
917263894(byte)X
91727576 2688(offset.)N
91728871(It)X
91729993(returns)X
917300 f
917311317(DW_DLV_NO_ENTRY)X
917321 f
917332110(if)X
917340 f
917352260(die)X
917361 f
917372477(does)X
917382697(not)X
917392872(contain)X
917403181(the)X
917413352(bit)X
917423509(offset)X
917433765(attribute)X
917440 f
91745576 2784(DW_AT_bit_offset)N
917461 f
91747(.)S
917481404(It)X
917491473(returns)X
917500 f
917511744(DW_DLV_ERROR)X
917521 f
917532340(if)X
917542409(an)X
917552505(error)X
917562682(occurred.)X
917573 f
91758576 3024(5.3.13)N
91759816(dwarf_srclang\(\))X
917600 f
91761576 3168(int)N
91762768(dwarf_srclang\()X
91763960 3264(Dwarf_Die)N
917641440(die,)X
91765960 3360(Dwarf_Unsigned)N
917661728(*return_lang,)X
91767960 3456(Dwarf_Error)N
917681536(*error\))X
917691 f
91770576 3600(When)N
91771803(it)X
91772882(succeeds,)X
917730 f
917741251(dwarf_srclang\(\))X
917751 f
917762007(returns)X
917770 f
917782294(DW_DLV_OK)X
917791 f
917802762(and)X
917812914(sets)X
917820 f
917833098(*return_lang)X
917841 f
917853710(to)X
917863808(a)X
917873880(code)X
91788576 3696(indicating)N
91789933(the)X
917901068(source)X
917911315(language)X
917921642(of)X
917931746(the)X
917941881(compilation)X
917952300(unit)X
917962461(represented)X
917972869(by)X
917982985(the)X
917993119(descriptor)X
918000 f
918013504(die)X
918021 f
91803(.)S
918043724(It)X
918053809(returns)X
918060 f
91807576 3792(DW_DLV_NO_ENTRY)N
918081 f
918091324(if)X
918100 f
918111430(die)X
918121 f
918131603(does)X
918141779(not)X
918151910(represent)X
918162234(a)X
918172299(source)X
918182538(file)X
918192674(debugging)X
918203041(information)X
918213448(entry)X
918223642(\(i.e.)X
918233796(contain)X
91824576 3888(the)N
91825694(attribute)X
918260 f
918271009(DW_AT_language)X
918281 f
91829(\).)S
918301768(It)X
918311837(returns)X
918320 f
918332108(DW_DLV_ERROR)X
918341 f
918352704(if)X
918362773(an)X
918372869(error)X
918383046(occurred.)X
918393 f
91840576 4128(5.3.14)N
91841816 0.1985(dwarf_arrayorder\(\))AX
918420 f
91843576 4272(int)N
91844768(dwarf_arrayorder\()X
91845960 4368(Dwarf_Die)N
918461440(die,)X
91847960 4464(Dwarf_Unsigned)N
918481728(*return_order,)X
91849960 4560(Dwarf_Error)N
918501536(*error\))X
918511 f
91852576 4704(When)N
91853794(it)X
91854864(succeeds,)X
918550 f
918561224(dwarf_arrayorder\(\))X
918571 f
918582114(returns)X
918590 f
918602391(DW_DLV_OK)X
918611 f
918622849(and)X
918632991(sets)X
918640 f
918653166(*return_order)X
918661 f
918673817(a)X
918683880(code)X
91869576 4800(indicating)N
91870917(the)X
918711036(ordering)X
918721329(of)X
918731417(the)X
918741535(array)X
918751721(represented)X
918762112(by)X
918772212(the)X
918782330(descriptor)X
918790 f
918802699(die)X
918811 f
91882(.)S
918832903(It)X
918842972(returns)X
918850 f
918863243(DW_DLV_NO_ENTRY)X
918871 f
918883983(if)X
918890 f
91890576 4896(die)N
918911 f
91892749(does)X
91893925(not)X
918941056(contain)X
918951321(the)X
918961448(array)X
918971644(order)X
918981844(attribute)X
918990 f
919002169(DW_AT_ordering)X
919011 f
91902(.)S
919032911(It)X
919042990(returns)X
919050 f
919063271(DW_DLV_ERROR)X
919071 f
919083877(if)X
919093956(an)X
91910576 4992(error)N
91911753(occurred.)X
919123 f
9191311 s
91914576 5232(5.4)N
91915730(Attribute)X
919161103(Form)X
919171335(Queries)X
919181 f
9191910 s
91920576 5376(Based)N
91921800(on)X
91922908(the)X
919231034(attribute's)X
919241387(form,)X
919251591(these)X
919261784(operations)X
919272146(are)X
919282273(concerned)X
919292632(with)X
919302802(returning)X
919313125(uninterpreted)X
919323582(attribute)X
919333878(data.)X
91934576 5472(Since)N
91935784(it)X
91936858(is)X
91937941(not)X
919381073(always)X
919391326(obvious)X
919401609(from)X
919411795(the)X
919421923(return)X
919432145(value)X
919442349(of)X
919452446(these)X
919462641(functions)X
919472969(if)X
919483048(an)X
919493154(error)X
919503341(occurred,)X
919513673(one)X
919523819(should)X
91953576 5568(always)N
91954830(supply)X
919551074(an)X
919560 f
919571209(error)X
919581 f
919591480(parameter)X
919601833(or)X
919611931(have)X
919622114(arranged)X
919632427(to)X
919642520(have)X
919652704(an)X
919662812(error)X
919673001(handling)X
919683313(function)X
919693612(invoked)X
919703902(\(see)X
919710 f
91972576 5664(dwarf_init\(\))N
919731 f
91974(\))S
919751209(to)X
919761301(determine)X
919771652(the)X
919781780(validity)X
919792054(of)X
919802151(the)X
919812279(returned)X
919822577(value)X
919832781(and)X
919842927(the)X
919853055(nature)X
919863286(of)X
919873383(any)X
919883528(errors)X
919893745(that)X
919903894(may)X
91991576 5760(have)N
91992748(occurred.)X
91993576 6164(rev)N
91994699(1.52,)X
91995879(02)X
91996979(Oct)X
919971115(2003)X
919982217(-)X
919992264(19)X
920002364(-)X
92001
9200220 p
92003%%Page: 20 20
920040(Courier)xf 0 f
9200510 s 0 xH 0 xS 0 f
920061 f
920072217 384(-)N
920082264(20)X
920092364(-)X
92010576 768(A)N
920110 f
92012740(Dwarf_Attribute)X
920131 f
920141539(descriptor)X
920151939(describes)X
920162317(an)X
920172472(attribute)X
920182818(of)X
920192964(a)X
920203079(specific)X
920213408(die.)X
920223625(Thus,)X
920233884(each)X
920240 f
92025576 864(Dwarf_Attribute)N
920261 f
920271316(descriptor)X
920281657(is)X
920291730(implicitly)X
920302060(associated)X
920312410(with)X
920322572(a)X
920332628(specific)X
920342898(die.)X
920353 f
92036576 1104(5.4.1)N
92037776(dwarf_hasform\(\))X
920380 f
92039576 1248(nt)N
92040720(dwarf_hasform\()X
92041960 1344(Dwarf_Attribute)N
920421728(attr,)X
92043960 1440(Dwarf_Half)N
920441488(form,)X
92045960 1536(Dwarf_Bool)N
920461536(*return_hasform,)X
92047960 1632(Dwarf_Error)N
920481536(*error\))X
920491 f
92050576 1776(The)N
92051721(function)X
920520 f
920531036(dwarf_hasform\(\))X
920541 f
920551776(returns)X
920560 f
920572047(DW_DLV_OK)X
920581 f
920592499(and)X
920602655(and)X
920612791(puts)X
920622944(a)X
920632 f
920643000(non-zero)X
920651 f
92066596 1872(value)N
92067805(in)X
92068902(the)X
920690 f
920701063(*return_hasform)X
920711 f
920721818(boolean)X
920732107(if)X
920742191(the)X
920752324(attribute)X
920762627(represented)X
920773034(by)X
920783150(the)X
920790 f
920803312(Dwarf_Attribute)X
920811 f
92082576 1968(descriptor)N
920830 f
92084954(attr)X
920851 f
920861175(has)X
920871311(the)X
920881438(attribute)X
920891734(form)X
920900 f
920911947(form)X
920921 f
92093(.)S
920942208(If)X
920952291(the)X
920962418(attribute)X
920972714(does)X
920982889(not)X
920993019(have)X
921003199(that)X
921013347(form)X
921022 f
921033531(zero)X
921041 f
921053697(is)X
921063778(put)X
921073908(into)X
921080 f
92109576 2064(*return_hasform)N
921101 f
92111(.)S
921120 f
921131412(DW_DLV_ERROR)X
921141 f
921152008(is)X
921162081(returned)X
921172369(on)X
921182469(error.)X
921193 f
92120576 2304(5.4.2)N
92121776(dwarf_whatform\(\))X
921220 f
92123576 2448(int)N
92124768(dwarf_whatform\()X
92125960 2544(Dwarf_Attribute)N
921261728(attr,)X
92127960 2640(Dwarf_Half)N
921281680(*return_form,)X
92129960 2736(Dwarf_Error)N
921301536(*error\))X
921311 f
92132576 2880(When)N
92133811(it)X
92134898(succeeds,)X
921350 f
921361275(dwarf_whatform\(\))X
921371 f
921382086(returns)X
921390 f
921402380(DW_DLV_OK)X
921411 f
921422856(and)X
921433016(sets)X
921440 f
921453208(*return_form)X
921461 f
921473828(to)X
921483934(the)X
92149576 2976(attribute)N
92150866(form)X
921511045(code)X
921521220(of)X
921531310(the)X
921541431(attribute)X
921551721(represented)X
921562115(by)X
921572218(the)X
921580 f
921592367(Dwarf_Attribute)X
921601 f
921613110(descriptor)X
921620 f
921633482(attr)X
921641 f
92165(.)S
921663737(It)X
921673809(returns)X
921680 f
92169576 3072(DW_DLV_ERROR)N
921701 f
921711210(on)X
921721328(error.)X
921731563(An)X
921741699(attribute)X
921752004(using)X
921762215(DW_FORM_indirect)X
921772938(effectively)X
921783320(has)X
921793465(two)X
921803624(forms.)X
921813890(This)X
92182576 3168(function)N
92183869(returns)X
921841118(the)X
921851242('final')X
921861469(form)X
921871651(for)X
921880 f
921891799(DW_FORM_indirect)X
921901 f
92191(,)S
921922613(not)X
921932741(the)X
921940 f
921952892(DW_FORM_indirect)X
921961 f
921973685(itself.)X
921983890(This)X
92199576 3264(function)N
92200863(is)X
92201936(what)X
922021112(most)X
922031287(applications)X
922041694(will)X
922051838(want)X
922062014(to)X
922072096(call.)X
922083 f
92209576 3504(5.4.3)N
92210776 0.1761(dwarf_whatform_direct\(\))AX
922110 f
92212576 3648(int)N
92213768(dwarf_whatform_direct\()X
92214960 3744(Dwarf_Attribute)N
922151728(attr,)X
92216960 3840(Dwarf_Half)N
922171680(*return_form,)X
92218960 3936(Dwarf_Error)N
922191536(*error\))X
922201 f
92221576 4080(When)N
92222789(it)X
92223855(succeeds,)X
922240 f
922251211(dwarf_whatform_direct\(\))X
922261 f
922272337(returns)X
922280 f
922292610(DW_DLV_OK)X
922301 f
922313064(and)X
922323202(sets)X
922330 f
922343372(*return_form)X
922351 f
922363970(to)X
92237576 4176(the)N
92238707(attribute)X
922391007(form)X
922401196(code)X
922411381(of)X
922421481(the)X
922431612(attribute)X
922441912(represented)X
922452316(by)X
922462428(the)X
922470 f
922482586(Dwarf_Attribute)X
922491 f
922503338(descriptor)X
922510 f
922523719(attr)X
922531 f
92254(.)S
922553983(It)X
92256576 4272(returns)N
922570 f
92258887(DW_DLV_ERROR)X
922591 f
922601523(on)X
922611643(error.)X
922621881(An)X
922632020(attribute)X
922642328(using)X
922650 f
922662570(DW_FORM_indirect)X
922671 f
922683379(effectively)X
922693764(has)X
922703912(two)X
92271576 4368(forms.)N
92272860(This)X
922731059(returns)X
922741339(the)X
922751494(form)X
922761707('directly')X
922772063(in)X
922782182(the)X
922792337(initial)X
922802580(form)X
922812793(field.)X
922823037(So)X
922833178(when)X
922843409(the)X
922853564(form)X
922863776(field)X
922873979(is)X
922880 f
92289576 4464(DW_FORM_indirect)N
922901 f
922911369(this)X
922921509(call)X
922931650(returns)X
922941899(the)X
922950 f
922962051(DW_FORM_indirect)X
922971 f
922982845(form,)X
922993047(which)X
923003269(is)X
923013348(sometimes)X
923023716(useful)X
923033938(for)X
92304576 4560(dump)N
92305778(utilities.)X
923063 f
92307576 4800(5.4.4)N
92308776(dwarf_whatattr\(\))X
923090 f
92310576 4944(int)N
92311768(dwarf_whatattr\()X
92312960 5040(Dwarf_Attribute)N
923131728(attr,)X
92314960 5136(Dwarf_Half)N
923151680(*return_attr,)X
92316960 5232(Dwarf_Error)N
923171536(*error\))X
923181 f
92319576 5376(When)N
92320811(it)X
92321898(succeeds,)X
923220 f
923231275(dwarf_whatattr\(\))X
923241 f
923252086(returns)X
923260 f
923272380(DW_DLV_OK)X
923281 f
923292856(and)X
923303016(sets)X
923310 f
923323208(*return_attr)X
923331 f
923343828(to)X
923353934(the)X
92336576 5472(attribute)N
92337870(code)X
923381049(represented)X
923391447(by)X
923401553(the)X
923410 f
923421705(Dwarf_Attribute)X
923431 f
923442451(descriptor)X
923450 f
923462826(attr)X
923471 f
92348(.)S
923493084(It)X
923503159(returns)X
923510 f
923523456(DW_DLV_ERROR)X
923531 f
92354576 5568(on)N
92355676(error.)X
92356576 6164(rev)N
92357699(1.52,)X
92358879(02)X
92359979(Oct)X
923601115(2003)X
923612217(-)X
923622264(20)X
923632364(-)X
92364
9236521 p
92366%%Page: 21 21
923670(Courier)xf 0 f
9236810 s 0 xH 0 xS 0 f
923691 f
923702217 384(-)N
923712264(21)X
923722364(-)X
923733 f
92374576 768(5.4.5)N
92375776 0.2857(dwarf_formref\(\))AX
923760 f
92377576 912(int)N
92378768(dwarf_formref\()X
92379960 1008(Dwarf_Attribute)N
923801728(attr,)X
92381960 1104(Dwarf_Off)N
923821632(*return_offset,)X
92383960 1200(Dwarf_Error)N
923841536(*error\))X
923851 f
92386576 1344(When)N
92387790(it)X
92388856(succeeds,)X
923890 f
923901212(dwarf_formref\(\))X
923911 f
923921954(returns)X
923930 f
923942228(DW_DLV_OK)X
923951 f
923962683(and)X
923972822(sets)X
923980 f
923992993(*return_offset)X
924001 f
924013688(to)X
924023773(the)X
924033894(CU-)X
92404576 1440(relative)N
92405839(offset)X
924061044(represented)X
924071436(by)X
924081537(the)X
924091656(descriptor)X
924100 f
924112026(attr)X
924121 f
924132239(if)X
924142309(the)X
924152428(form)X
924162605(of)X
924172693(the)X
924182812(attribute)X
924193100(belongs)X
924203370(to)X
924213453(the)X
924220 f
924233600(REFERENCE)X
924241 f
92425576 1536(class.)N
924260 f
92427850(attr)X
924281 f
924291064(must)X
924301241(be)X
924311339(a)X
924321397(CU-local)X
924331713 0.4028(reference,)AX
924342056(not)X
924352180(form)X
924360 f
924372386(DW_FORM_ref_addr)X
924381 f
92439(.)S
924403216(It)X
924413287(is)X
924423362(an)X
924433460(error)X
924443639(for)X
924453755(the)X
924463876(form)X
92447576 1632(to)N
92448666(not)X
92449796(belong)X
924501042(to)X
924511132(this)X
924521275(class)X
924531459(or)X
924541553(to)X
924551642(be)X
924561745(form)X
924570 f
924581956(DW_FORM_ref_addr)X
924591 f
92460(.)S
924612791(It)X
924622867(returns)X
924630 f
924643145(DW_DLV_ERROR)X
924651 f
924663748(on)X
924673855(error.)X
92468576 1728(See)N
92469712(also)X
924700 f
92471889(dwarf_global_formref)X
924721 f
924731869(below.)X
924743 f
92475576 1968(5.4.6)N
92476776(dwarf_global_formref\(\))X
924770 f
92478576 2112(int)N
92479768(dwarf_global_formref\()X
92480960 2208(Dwarf_Attribute)N
924811728(attr,)X
92482960 2304(Dwarf_Off)N
924831632(*return_offset,)X
92484960 2400(Dwarf_Error)N
924851536(*error\))X
924861 f
92487576 2544(When)N
92488794(it)X
92489864(succeeds,)X
924900 f
924911224(dwarf_global_formref\(\))X
924921 f
924932306(returns)X
924940 f
924952583(DW_DLV_OK)X
924961 f
924973042(and)X
924983185(sets)X
924990 f
925003360(*return_offset)X
925011 f
92502576 2640(to)N
92503666(the)X
92504792(.debug_info-section-relative)X
925051727(offset)X
925061937(represented)X
925072335(by)X
925082442(the)X
925092567(descriptor)X
925100 f
925112943(attr)X
925121 f
925133162(if)X
925143238(the)X
925153363(form)X
925163546(of)X
925173640(the)X
925183765(attribute)X
92519576 2736(belongs)N
92520871(to)X
92521979(the)X
925220 f
925231152(REFERENCE)X
925241 f
925251631(class.)X
925260 f
925271930(attr)X
925281 f
925292169(can)X
925302328(be)X
925312451(any)X
925322614(legal)X
925330 f
925342845(REFERENCE)X
925351 f
925363324(class)X
925373527(form)X
925383730(including)X
925390 f
92540576 2832(DW_FORM_ref_addr)N
925411 f
92542(.)S
925431405(It)X
925441475(is)X
925451549(an)X
925461646(error)X
925471824(for)X
925481939(the)X
925492058(form)X
925502235(to)X
925512318(not)X
925522441(belong)X
925532680(to)X
925542763(this)X
925552899(class.)X
925563116(It)X
925573185(returns)X
925580 f
925593456(DW_DLV_ERROR)X
925601 f
92561576 2928(on)N
92562676(error.)X
92563893(See)X
925641029(also)X
925650 f
925661206(dwarf_formref)X
925671 f
925681850(above.)X
925693 f
92570576 3168(5.4.7)N
92571776(dwarf_formaddr\(\))X
925720 f
92573576 3312(int)N
92574768(dwarf_formaddr\()X
92575960 3408(Dwarf_Attribute)N
925761728(attr,)X
92577960 3504(Dwarf_Addr)N
925781632(*)X
925791728(return_addr,)X
92580960 3600(Dwarf_Error)N
925811536(*error\))X
925821 f
92583576 3744(When)N
92584811(it)X
92585898(succeeds,)X
925860 f
925871275(dwarf_formaddr\(\))X
925881 f
925892086(returns)X
925900 f
925912380(DW_DLV_OK)X
925921 f
925932856(and)X
925943016(sets)X
925950 f
925963208(*return_addr)X
925971 f
925983828(to)X
925993934(the)X
92600576 3840(address)N
92601839(represented)X
926021232(by)X
926031334(the)X
926041454(descriptor)X
926050 f
926061825(attr)X
926071 f
926082039(if)X
926092110(the)X
926102230(form)X
926112408(of)X
926122497(the)X
926132617(attribute)X
926142906(belongs)X
926153177(to)X
926163261(the)X
926170 f
926183409(ADDRESS)X
926191 f
926203766(class.)X
926213983(It)X
92622576 3936(is)N
92623649(an)X
92624745(error)X
92625922(for)X
926261036(the)X
926271154(form)X
926281330(to)X
926291412(not)X
926301534(belong)X
926311772(to)X
926321854(this)X
926331989(class.)X
926342205(It)X
926352274(returns)X
926360 f
926372545(DW_DLV_ERROR)X
926381 f
926393141(on)X
926403241(error.)X
926413 f
92642576 4176(5.4.8)N
92643776(dwarf_formflag\(\))X
926440 f
92645576 4320(int)N
92646768(dwarf_formflag\()X
92647960 4416(Dwarf_Attribute)N
926481728(attr,)X
92649960 4512(Dwarf_Bool)N
926501488(*)X
926511584(return_bool,)X
92652960 4608(Dwarf_Error)N
926531536(*error\))X
926541 f
92655576 4752(When)N
92656790(it)X
92657856(succeeds,)X
926580 f
926591212(dwarf_formflag\(\))X
926601 f
926612002(returns)X
926620 f
926632275(DW_DLV_OK)X
926641 f
926652729(and)X
926662867(sets)X
926670 f
926683037(*return_bool)X
926693663(1)X
926701 f
926713733(\(i.e.)X
926723880(true\))X
92673576 4848(\(if)N
92674689(the)X
92675824(attribute)X
926761128(has)X
926771272(a)X
926781345(non-zero)X
926791668(value\))X
926801906(or)X
926810 f
926822038(0)X
926831 f
926842123(\(i.e.)X
926852285(false\))X
926862501(\(if)X
926872614(the)X
926882749(attribute)X
926893053(has)X
926903197(a)X
926913270(zero)X
926923446(value\).)X
926933724(It)X
926943809(returns)X
926950 f
92696576 4944(DW_DLV_ERROR)N
926971 f
926981172(on)X
926991272(error)X
927001449(or)X
927011536(if)X
927021605(the)X
927030 f
927041751(attr)X
927051 f
927061963(does)X
927072130(not)X
927082252(have)X
927092424(form)X
927102600(flag.)X
927113 f
92712576 5184(5.4.9)N
92713776(dwarf_formudata\(\))X
927140 f
92715576 5328(int)N
92716768(dwarf_formudata\()X
92717960 5424(Dwarf_Attribute)N
927181824(attr,)X
92719960 5520(Dwarf_Unsigned)N
927201728(*)X
927211824(return_uvalue,)X
92722960 5616(Dwarf_Error)N
927231728(*)X
927241824(error\))X
927251 f
92726576 5760(The)N
92727750(function)X
927280 f
927291094(dwarf_formudata\(\))X
927301 f
927311959(returns)X
927320 f
927332259(DW_DLV_OK)X
927341 f
927352740(and)X
927362905(sets)X
927370 f
927383102(*return_uvalue)X
927391 f
927403823(to)X
927413934(the)X
927420 f
92743576 5856(Dwarf_Unsigned)N
927441 f
927451272(value)X
927461470(of)X
927471561(the)X
927481683(attribute)X
927491974(represented)X
927502369(by)X
927512473(the)X
927522595(descriptor)X
927530 f
927542967(attr)X
927551 f
927563182(if)X
927573254(the)X
927583375(form)X
927593554(of)X
927603644(the)X
927613765(attribute)X
92762576 6164(rev)N
92763699(1.52,)X
92764879(02)X
92765979(Oct)X
927661115(2003)X
927672217(-)X
927682264(21)X
927692364(-)X
92770
9277122 p
92772%%Page: 22 22
927730(Courier)xf 0 f
9277410 s 0 xH 0 xS 0 f
927751 f
927762217 384(-)N
927772264(22)X
927782364(-)X
92779576 768(belongs)N
92780863(to)X
92781963(the)X
927820 f
927831127(CONSTANT)X
927841 f
927851549(class.)X
927861783(It)X
927871870(is)X
927881961(an)X
927892075(error)X
927902270(for)X
927912402(the)X
927922538(form)X
927932732(to)X
927942833(not)X
927952974(belong)X
927963231(to)X
927973332(this)X
927983486(class.)X
927993721(It)X
928003809(returns)X
928010 f
92802576 864(DW_DLV_ERROR)N
928031 f
928041172(on)X
928051272(error.)X
928063 f
92807576 1104(5.4.10)N
92808816(dwarf_formsdata\(\))X
928090 f
92810576 1248(int)N
92811768(dwarf_formsdata\()X
92812960 1344(Dwarf_Attribute)N
928131728(attr,)X
92814960 1440(Dwarf_Signed)N
928151632(*)X
928161728(return_svalue,)X
92817960 1536(Dwarf_Error)N
928181536(*error\))X
928191 f
92820576 1680(The)N
92821750(function)X
928220 f
928231094(dwarf_formsdata\(\))X
928241 f
928251959(returns)X
928260 f
928272259(DW_DLV_OK)X
928281 f
928292740(and)X
928302905(sets)X
928310 f
928323102(*return_svalue)X
928331 f
928343823(to)X
928353934(the)X
928360 f
92837576 1776(Dwarf_Signed)N
928381 f
928391182(value)X
928401386(of)X
928411483(the)X
928421611(attribute)X
928431908(represented)X
928442309(by)X
928452419(the)X
928462547(descriptor)X
928470 f
928482926(attr)X
928491 f
928503148(if)X
928513227(the)X
928523355(form)X
928533541(of)X
928543638(the)X
928553765(attribute)X
92856576 1872(belongs)N
92857850(to)X
92858937(the)X
928590 f
928601088(CONSTANT)X
928611 f
928621497(class.)X
928631718(It)X
928641792(is)X
928651870(an)X
928661971(error)X
928672153(for)X
928682272(the)X
928692395(form)X
928702576(to)X
928712663(not)X
928722791(belong)X
928733035(to)X
928743123(this)X
928753264(class.)X
928763486(If)X
928773566(the)X
928783690(size)X
928793841(of)X
928803934(the)X
92881576 1968(data)N
92882735(attribute)X
928831027 0.4028(referenced)AX
928841393(is)X
928851471(smaller)X
928861732(than)X
928871895(the)X
928882018(size)X
928892168(of)X
928902259(the)X
928910 f
928922409(Dwarf_Signed)X
928931 f
928943009(type,)X
928953191(its)X
928963290(value)X
928973488(is)X
928983565(sign)X
928993722(extended.)X
92900576 2064(It)N
92901645(returns)X
929020 f
92903916(DW_DLV_ERROR)X
929041 f
929051512(on)X
929061612(error.)X
929073 f
92908576 2304(5.4.11)N
92909816(dwarf_formblock\(\))X
929100 f
92911576 2448(int)N
92912768(dwarf_formblock\()X
92913960 2544(Dwarf_Attribute)N
929141728(attr,)X
92915960 2640(Dwarf_Block)N
929161584(**)X
929171728(return_block,)X
92918960 2736(Dwarf_Error)N
929191536(*)X
929201728(error\))X
929211 f
92922576 2880(The)N
92923724(function)X
929240 f
929251042(dwarf_formblock\(\))X
929261 f
929271882(returns)X
929280 f
929292157(DW_DLV_OK)X
929301 f
929312613(and)X
929322753(sets)X
929330 f
929342925(*return_block)X
929351 f
929363573(to)X
929373659(a)X
929383719(pointer)X
929393970(to)X
92940576 2976(a)N
929410 f
92942661(Dwarf_Block)X
929431 f
929441210(structure)X
929451512(containing)X
929461871(the)X
929471989(value)X
929482183(of)X
929492270(the)X
929502388(attribute)X
929512675(represented)X
929523066(by)X
929533166(the)X
929543284(descriptor)X
929550 f
929563653(attr)X
929571 f
929583865(if)X
929593934(the)X
92960576 3072(form)N
92961759(of)X
92962853(the)X
92963978(attribute)X
929641272(belongs)X
929651548(to)X
929661637(the)X
929670 f
929681790(BLOCK)X
929691 f
929702057(class.)X
929712280(It)X
929722356(is)X
929732436(an)X
929742540(error)X
929752725(for)X
929762847(the)X
929772973(form)X
929783157(to)X
929793247(not)X
929803377(belong)X
929813623(to)X
929823713(this)X
929833856(class.)X
92984576 3168(The)N
92985737(storage)X
929861005(pointed)X
929871281(to)X
929881379(by)X
929891495(a)X
929901566(successful)X
929911931(return)X
929922158(of)X
929930 f
929942288(dwarf_formblock\(\))X
929951 f
929963139(should)X
929973387(be)X
929983498(free'd)X
929993726(using)X
930003934(the)X
93001576 3264(allocation)N
93002926(type)X
930030 f
930041126(DW_DLA_BLOCK)X
930051 f
93006(,)S
930071776(when)X
930081984(no)X
930092098(longer)X
930102337(of)X
930112439(interest)X
930122710(\(see)X
930130 f
930142903(dwarf_dealloc\(\))X
930151 f
93016(\).)S
930173725(It)X
930183809(returns)X
930190 f
93020576 3360(DW_DLV_ERROR)N
930211 f
930221172(on)X
930231272(error.)X
930243 f
93025576 3600(5.4.12)N
93026816(dwarf_formstring\(\))X
930270 f
93028576 3888(int)N
93029768(dwarf_formstring\()X
93030960 3984(Dwarf_Attribute)N
930311728(attr,)X
93032960 4080(char)N
930331536(**)X
930341728(return_string,)X
93035960 4176(Dwarf_Error)N
930361536(*error\))X
930371 f
93038576 4320(The)N
93039723(function)X
930400 f
930411040(dwarf_formstring\(\))X
930421 f
930431927(returns)X
930440 f
930452201(DW_DLV_OK)X
930461 f
930472656(and)X
930482795(sets)X
930490 f
930502966(*return_string)X
930511 f
930523661(to)X
930533746(a)X
930543805(pointer)X
93055576 4416(to)N
93056662(a)X
93057722(null-terminated)X
930581240(string)X
930591446(containing)X
930601828(the)X
930611950(value)X
930622148(of)X
930632239(the)X
930642361(attribute)X
930652652(represented)X
930663047(by)X
930673151(the)X
930683273(descriptor)X
930690 f
930703646(attr)X
930711 f
930723862(if)X
930733934(the)X
93074576 4512(form)N
93075757(of)X
93076849(the)X
93077972(attribute)X
930781264(belongs)X
930791538(to)X
930801625(the)X
930810 f
930821776(STRING)X
930831 f
930842089(class.)X
930852310(It)X
930862384(is)X
930872462(an)X
930882563(error)X
930892745(for)X
930902864(the)X
930912987(form)X
930923168(to)X
930933255(not)X
930943383(belong)X
930953627(to)X
930963715(this)X
930973856(class.)X
93098576 4608(The)N
93099733(storage)X
93100997(pointed)X
931011269(to)X
931021363(by)X
931031475(a)X
931041543(successful)X
931051905(return)X
931062129(of)X
931070 f
931082256(dwarf_formstring\(\))X
931091 f
931103152(should)X
931113397(be)X
931123505(free'd)X
931133730(using)X
931143934(the)X
93115576 4704(allocation)N
93116925(type)X
931170 f
931181124(DW_DLA_STRING)X
931191 f
931201781(when)X
931211989(no)X
931222103(longer)X
931232342(of)X
931242443(interest)X
931252713(\(see)X
931260 f
931272905(dwarf_dealloc\(\))X
931281 f
93129(\).)S
931303726(It)X
931313809(returns)X
931320 f
93133576 4800(DW_DLV_ERROR)N
931341 f
931351172(on)X
931361272(error.)X
931373 f
931389 s
93139576 5040(5.4.12.1)N
93140846(dwarf_loclist_n\(\))X
931410 f
9314210 s
93143576 5184(int)N
93144768(dwarf_loclist_n\()X
93145960 5280(Dwarf_Attribute)N
931461728(attr,)X
93147960 5376(Dwarf_Locdesc)N
931481632(***llbuf,)X
93149960 5472(Dwarf_Signed)N
931501632(*listlen,)X
93151960 5568(Dwarf_Error)N
931521536(*error\))X
931531 f
93154576 5712(The)N
93155724(function)X
931560 f
931571042(dwarf_loclist_n\(\))X
931581 f
931591881(sets)X
931600 f
931612052(*llbuf)X
931621 f
931632363(to)X
931642448(point)X
931652635(to)X
931662720(an)X
931672819(array)X
931683008(of)X
931690 f
931703126(Dwarf_Locdesc)X
931711 f
931723774(pointers)X
93173576 5808(corresponding)N
931741059(to)X
931751145(each)X
931761317(of)X
931771408(the)X
931781530(location)X
931791812(expressions)X
931802209(in)X
931812294(a)X
931822353(location)X
931832634(list,)X
931842774(and)X
931852913(sets)X
931860 f
931873084(*listlen)X
931881 f
931893491(to)X
931903576(the)X
931913697(number)X
931923965(of)X
93193576 6164(rev)N
93194699(1.52,)X
93195879(02)X
93196979(Oct)X
931971115(2003)X
931982217(-)X
931992264(22)X
932002364(-)X
93201
9320223 p
93203%%Page: 23 23
932040(Courier)xf 0 f
9320510 s 0 xH 0 xS 0 f
932061 f
932072217 384(-)N
932082264(23)X
932092364(-)X
93210576 768(elements)N
93211881(in)X
93212963(the)X
932131081(array)X
932141267(and)X
932151403(returns)X
932160 f
932171674(DW_DLV_OK)X
932181 f
932192126(if)X
932202195(the)X
932212313(attribute)X
932222600(is)X
932232673(appropriate.)X
93224576 912(This)N
93225743(is)X
93226821(the)X
93227944(preferred)X
932281265(function)X
932291557(for)X
932301676 0.2708(Dwarf_Locdesc)AX
932312215(as)X
932322307(it)X
932332376(is)X
932342454(the)X
932352577(interface)X
932362884(allowing)X
932373189(access)X
932383420(to)X
932393507(an)X
932403608(entire)X
932413817(loclist.)X
93242576 1008(\(use)N
93243731(of)X
932440 f
93245847(dwarf_loclist_n\(\))X
932461 f
932471684(is)X
932481758(suggested)X
932492095(as)X
932502183(the)X
932512302(better)X
932522506(interface,)X
932532829(though)X
932540 f
932553100(dwarf_loclist\(\))X
932561 f
932573840(is)X
932583913(still)X
93259576 1104(supported.\))N
93260576 1248(It)N
93261679(returns)X
932620 f
93263984(DW_DLV_ERROR)X
932641 f
932651614(on)X
932661748(error.)X
932670 f
932682055(dwarf_loclist_n\(\))X
932691 f
932702926(works)X
932713177(on)X
932720 f
932733340(DW_AT_location)X
932741 f
93275(,)S
932760 f
93277576 1344(DW_AT_data_member_location)N
932781 f
93279(,)S
932800 f
932812764(DW_AT_vtable_elem_location)X
932821 f
93283(,)S
932840 f
93285576 1440(DW_AT_string_length)N
932861 f
93287(,)S
932880 f
932891556(DW_AT_use_location)X
932901 f
93291(,)S
932922460(and)X
932930 f
932942624(DW_AT_return_addr)X
932951 f
932963460(attributes.)X
93297576 1584(Storage)N
93298846(allocated)X
932991161(by)X
933001266(a)X
933011327(successful)X
933021683(call)X
933031825(of)X
933040 f
933051946(dwarf_loclist_n\(\))X
933061 f
933072788(should)X
933083027(be)X
933093129(deallocated)X
933103521(when)X
933113721(no)X
933123827(longer)X
93313576 1680(of)N
93314666(interest)X
93315925(\(see)X
933160 f
933171106(dwarf_dealloc\(\))X
933181 f
93319(\).)S
933201916(The)X
933212064(block)X
933222265(of)X
933230 f
933242383(Dwarf_Loc)X
933251 f
933262838(structs)X
933273070(pointed)X
933283333(to)X
933293418(by)X
933303521(the)X
933310 f
933323670(ld_s)X
933331 f
933343885(field)X
93335576 1776(of)N
93336738(each)X
933370 f
933381010(Dwarf_Locdesc)X
933391 f
933401730(structure)X
933412107(should)X
933422416(be)X
933432588(deallocated)X
933443050(with)X
933453288(the)X
933463482(allocation)X
933473894(type)X
933480 f
93349576 1872(DW_DLA_LOC_BLOCK)N
933501 f
93351(.)S
933521411(and)X
933531574(the)X
933540 f
933551727(llbuf[])X
933561 f
933572090(space)X
933582296(pointed)X
933592563(to)X
933602651(should)X
933612890(be)X
933622992(deallocated)X
933633384(with)X
933643552(allocation)X
933653894(type)X
933660 f
93367576 1968(DW_DLA_LOCDESC)N
933681 f
93369(.)S
933701318(This)X
933711490(should)X
933721733(be)X
933731839(followed)X
933742154(by)X
933752265(deallocation)X
933762688(of)X
933772786(the)X
933780 f
933792943(llbuf)X
933801 f
933813214(using)X
933823418(the)X
933833547(allocation)X
933843894(type)X
933850 f
93386576 2064(DW_DLA_LIST)N
933871 f
93388(.)S
933890 f
93390736 2208(Dwarf_Signed)N
933911360(lcnt;)X
93392736 2304(Dwarf_Locdesc)N
933931408(**llbuf;)X
93394736 2400(int)N
93395928(lres;)X
93396736 2592(if)N
93397880(\(\(lres)X
933981216(=)X
933991312(dwarf_loclist_n\(someattr,)X
934002560(&llbuf,&lcnt)X
934013184(&error\)\))X
934023616(==)X
934033760(DW_DLV_OK\))X
934044288({)X
934051120 2688(for)N
934061312(\(i)X
934071456(=)X
934081552(0;)X
934091696(i)X
934101792(<)X
934111888(lcnt;)X
934122176(++i\))X
934132416({)X
934141312 2784(/*)N
934151456(use)X
934161648(llbuf[i])X
934172080(*/)X
934181312 2976(dwarf_dealloc\(dbg,)N
934192224(llbuf[i]->ld_s,)X
934202992(DW_DLA_LOC_BLOCK\);)X
934211312 3072(dwarf_dealloc\(dbg,llbuf[i],)N
934222656(DW_DLA_LOCDESC\);)X
934231120 3168(})N
934241120 3264(dwarf_dealloc\(dbg,)N
934252032(llbuf,)X
934262368(DW_DLA_LIST\);)X
93427736 3360(})N
934283 f
934299 s
93430576 3648(5.4.12.2)N
93431846(dwarf_loclist\(\))X
934320 f
9343310 s
93434576 3792(int)N
93435768(dwarf_loclist\()X
93436960 3888(Dwarf_Attribute)N
934371728(attr,)X
93438960 3984(Dwarf_Locdesc)N
934391632(**llbuf,)X
93440960 4080(Dwarf_Signed)N
934411632(*listlen,)X
93442960 4176(Dwarf_Error)N
934431536(*error\))X
934441 f
93445576 4320(The)N
93446722(function)X
934470 f
934481038(dwarf_loclist\(\))X
934491 f
934501779(sets)X
934510 f
934521948(*llbuf)X
934531 f
934542257(to)X
934552340(point)X
934562525(to)X
934572608(a)X
934580 f
934592693(Dwarf_Locdesc)X
934601 f
934613338(pointer)X
934623606(for)X
934633721(the)X
934643841(single)X
93465576 4416(location)N
93466864(expression)X
934671237(it)X
934681311(can)X
934691453(return.)X
934701715(It)X
934711794(sets)X
934720 f
934731972(*listlen)X
934741 f
934752386(to)X
934762478(1.)X
934772588(and)X
934782734(returns)X
934790 f
934803015(DW_DLV_OK)X
934811 f
934823477(if)X
934833556(the)X
934843683(attribute)X
934853979(is)X
93486576 4512(appropriate.)N
93487576 4656(It)N
93488649(is)X
93489727(less)X
93490872(flexible)X
934911142(than)X
934920 f
934931333(dwarf_loclist_n\(\))X
934941 f
934952174(in)X
934962261(that)X
934970 f
934982434(dwarf_loclist\(\))X
934991 f
935003179(can)X
935013316(handle)X
935023555(a)X
935033616(maximum)X
935043965(of)X
93505576 4752(one)N
93506715(location)X
93507995(expression,)X
935081380(not)X
935091504(a)X
935101562(full)X
935111695(location)X
935121975(list.)X
935132134(If)X
935142210(a)X
935152268(location-list)X
935162672(is)X
935172747(present)X
935183001(it)X
935193067(returns)X
935203312(only)X
935213476(the)X
935223596(first)X
935233747(location-)X
93524576 4848(list)N
93525693(entry)X
93526878(location)X
935271156(description.)X
935281572(Use)X
935290 f
935301745(dwarf_loclist_n\(\))X
935311 f
935322581(instead.)X
93533576 4992(It)N
93534691(returns)X
935350 f
935361008(DW_DLV_ERROR)X
935371 f
935381650(on)X
935391796(error.)X
935400 f
935412115(dwarf_loclist\(\))X
935421 f
935432902(works)X
935443165(on)X
935450 f
935463340(DW_AT_location)X
935471 f
93548(,)S
935490 f
93550576 5088(DW_AT_data_member_location)N
935511 f
93552(,)S
935530 f
935542764(DW_AT_vtable_elem_location)X
935551 f
93556(,)S
935570 f
93558576 5184(DW_AT_string_length)N
935591 f
93560(,)S
935610 f
935621556(DW_AT_use_location)X
935631 f
93564(,)S
935652460(and)X
935660 f
935672624(DW_AT_return_addr)X
935681 f
935693460(attributes.)X
93570576 5328(Storage)N
93571846(allocated)X
935721162(by)X
935731268(a)X
935741330(successful)X
935751686(call)X
935761828(of)X
935770 f
935781949(dwarf_loclist\(\))X
935791 f
935802695(should)X
935812934(be)X
935823036(deallocated)X
935833428(when)X
935843628(no)X
935853734(longer)X
935863965(of)X
93587576 5424(interest)N
93588835(\(see)X
935890 f
935901016(dwarf_dealloc\(\))X
935911 f
93592(\).)S
935931826(The)X
935941974(block)X
935952175(of)X
935960 f
935972293(Dwarf_Loc)X
935981 f
935992748(structs)X
936002980(pointed)X
936013243(to)X
936023328(by)X
936033431(the)X
936040 f
936053580(ld_s)X
936061 f
936073795(field)X
936083965(of)X
93609576 5520(each)N
936100 f
93611773(Dwarf_Locdesc)X
936121 f
936131418(structure)X
936141720(should)X
936151954(be)X
936162051(deallocated)X
936172438(with)X
936182601(the)X
936192720(allocation)X
936203057(type)X
936210 f
936223244(DW_DLA_LOC_BLOCK)X
936231 f
93624(.)S
93625576 5616(This)N
93626738(should)X
93627971(be)X
936281067(followed)X
936291372(by)X
936301472(deallocation)X
936311884(of)X
936321971(the)X
936330 f
936342117(llbuf)X
936351 f
936362377(using)X
936372570(the)X
936382688(allocation)X
936393024(type)X
936400 f
936413210(DW_DLA_LOCDESC)X
936421 f
93643(.)S
93644576 6164(rev)N
93645699(1.52,)X
93646879(02)X
93647979(Oct)X
936481115(2003)X
936492217(-)X
936502264(23)X
936512364(-)X
93652
9365324 p
93654%%Page: 24 24
936550(Courier)xf 0 f
9365610 s 0 xH 0 xS 0 f
936571 f
936582217 384(-)N
936592264(24)X
936602364(-)X
936610 f
93662736 768(Dwarf_Signed)N
936631360(lcnt;)X
93664736 864(Dwarf_Locdesc)N
936651408(*llbuf;)X
93666736 960(int)N
93667928(lres;)X
93668736 1152(if)N
93669880(\(\(lres)X
936701216(=)X
936711312(dwarf_loclist\(someattr,)X
936722464(&llbuf,&lcnt)X
936733088(&error\)\))X
936743520(==)X
936753664(DW_DLV_OK\))X
936764192({)X
936771120 1248(/*)N
936781264(lcnt)X
936791504(is)X
936801648(always)X
936811984(1,)X
936822128(\(and)X
936832368(has)X
936842560(always)X
936852896(been)X
936863136(1\))X
936873280(*/)X
936883424(*/)X
936891120 1344(/*)N
936901264(use)X
936911456(llbuf)X
936921744(*/)X
936931120 1536(dwarf_dealloc\(dbg,)N
936942032(llbuf->ld_s,)X
936952656(DW_DLA_LOC_BLOCK\);)X
936961120 1632(dwarf_dealloc\(dbg,)N
936972032(llbuf,)X
936982368(DW_DLA_LOCDESC\);)X
93699736 1728(/*)N
937001120(Earlier)X
937011504(version.)X
937021936(It)X
937032080(works)X
937042368(because)X
937052752(lcnt)X
937062992(is)X
937073136(always)X
937083472(1.)X
93709736 1824(*)N
937101216(for)X
937111408(\(i)X
937121552(=)X
937131648(0;)X
937141792(i)X
937151888(<)X
937161984(lcnt;)X
937172272(++i\))X
937182512({)X
93719736 1920(*)N
937201408(/*)X
937211552(use)X
937221744(llbuf[i])X
937232176(*/)X
93724736 2016(*)N
93725736 2112(*)N
937261408(/*)X
937271552(Deallocate)X
937282080(Dwarf_Loc)X
937292560(block)X
937302848(of)X
937312992(llbuf[i])X
937323424(*/)X
93733736 2208(*)N
937341408(dwarf_dealloc\(dbg,)X
937352320(llbuf[i].ld_s,)X
937363040(DW_DLA_LOC_BLOCK\);)X
93737736 2304(*)N
937381216(})X
93739736 2400(*)N
937401216(dwarf_dealloc\(dbg,)X
937412128(llbuf,)X
937422464(DW_DLA_LOCDESC\);)X
93743736 2496(*/)N
93744736 2688(})N
937453 f
9374611 s
93747576 2976(5.5)N
93748730(Line)X
93749924(Number)X
937501258(Operations)X
937511 f
9375210 s
93753576 3120(These)N
93754795(functions)X
937551120(are)X
937561246(concerned)X
937571604(with)X
937581773(accessing)X
937592108(line)X
937602255(number)X
937612527(entries,)X
937622788(mapping)X
937633095(debugging)X
937643461(information)X
937653867(entry)X
93766576 3216(objects)N
93767823(to)X
93768905(their)X
937691072(corresponding)X
937701551(source)X
937711781(lines,)X
937721972(and)X
937732108(providing)X
937742439(a)X
937752495(mechanism)X
937762880(for)X
937772994(obtaining)X
937783316(information)X
937793714(about)X
937803912(line)X
93781576 3312(number)N
93782844(entries.)X
937831121(Although,)X
937841466(the)X
937851587(interface)X
937861892(talks)X
937872066(of)X
937882156("lines")X
937892396(what)X
937902575(is)X
937912651(really)X
937922857(meant)X
937933076(is)X
937943152("statements".)X
937953619(In)X
937963709(case)X
937973871(there)X
93798576 3408(is)N
93799652(more)X
93800839(than)X
93801999(one)X
938021137(statement)X
938031466(on)X
938041568(the)X
938051688(same)X
938061875(line,)X
938072037(there)X
938082220(will)X
938092366(be)X
938102464(at)X
938112544(least)X
938122713(one)X
938132851(descriptor)X
938143194(per)X
938153319(statement,)X
938163668(all)X
938173770(with)X
938183934(the)X
93819576 3504(same)N
93820765(line)X
93821909(number.)X
938221219(If)X
938231298(column)X
938241563(number)X
938251833(is)X
938261911(also)X
938272065(being)X
938282268(represented)X
938292664(they)X
938302827(will)X
938312976(have)X
938323153(the)X
938333276(column)X
938343541(numbers)X
938353842(of)X
938363934(the)X
93837576 3600(start)N
93838734(of)X
93839821(the)X
93840939(statements)X
938411297(also)X
938421446(represented.)X
93843576 3744(There)N
93844792(can)X
93845932(also)X
938461089(be)X
938471193(more)X
938481386(than)X
938491552(one)X
938501696(Dwarf_Line)X
938512117(per)X
938522248(statement.)X
938532623(For)X
938542762(example,)X
938553082(if)X
938563159(a)X
938573223(file)X
938583358(is)X
938593439(preprocessed)X
938603887(by)X
938613996(a)X
93862576 3840(language)N
93863902(translator,)X
938641261(this)X
938651412(could)X
938661626(result)X
938671840(in)X
938681938(translator)X
938692277(output)X
938702517(showing)X
938712824(2)X
938722900(or)X
938733003(more)X
938743204(sets)X
938753360(of)X
938763463(line)X
938773618(numbers)X
938783929(per)X
93879576 3936(translated)N
93880908(line)X
938811048(of)X
938821135(output.)X
938833 f
93884576 4176(5.5.1)N
93885776(Get)X
93886921(A)X
93887999(Set)X
938881126(of)X
938891213(Lines)X
938901 f
93891576 4320(The)N
93892754(function)X
938931074(returns)X
938941350(information)X
938951781(about)X
938962012(every)X
938972244(source)X
938982507(line)X
938992680(for)X
939002828(a)X
939012918(particular)X
939023280(compilation-unit.)X
939033907(The)X
93904576 4416(compilation-unit)N
939051129(is)X
939061202(specified)X
939071512(by)X
939081612(the)X
939091730(corresponding)X
939102209(die.)X
939113 f
939129 s
93913576 4560(5.5.1.1)N
93914810(dwarf_srclines\(\))X
939150 f
9391610 s
93917576 4704(int)N
93918768(dwarf_srclines\()X
93919960 4800(Dwarf_Die)N
939201440(die,)X
93921960 4896(Dwarf_Line)N
939221488(**linebuf,)X
93923960 4992(Dwarf_Signed)N
939241584(*linecount,)X
93925960 5088(Dwarf_Error)N
939261536(*error\))X
939271 f
93928576 5232(The)N
93929721(function)X
939300 f
939311036(dwarf_srclines\(\))X
939321 f
939331824(places)X
939342045(all)X
939352145(line)X
939362285(number)X
939372550(descriptors)X
939382922(for)X
939393036(a)X
939403092(single)X
939413303(compilation)X
939423706(unit)X
939433851(into)X
939443996(a)X
93945576 5328(single)N
93946793(block,)X
939471017(sets)X
939480 f
939491191(*linebuf)X
939501 f
939511601(to)X
939521689(point)X
939531879(to)X
939541967(that)X
939552113(block,)X
939562337(sets)X
939570 f
939582511(*linecount)X
939591 f
939603017(to)X
939613105(the)X
939623229(number)X
939633500(of)X
939643593(descriptors)X
939653970(in)X
93966576 5424(this)N
93967711(block)X
93968909(and)X
939691045(returns)X
939700 f
939711316(DW_DLV_OK)X
939721 f
93973(.)S
939741808(The)X
939751953(compilation-unit)X
939762506(is)X
939772579(indicated)X
939782894(by)X
939792995(the)X
939803114(given)X
939810 f
939823341(die)X
939831 f
939843506(which)X
939853723(must)X
939863899(be)X
939873996(a)X
93988576 5520(compilation-unit)N
939891149(die.)X
939901327(It)X
939911416(returns)X
939920 f
939931707(DW_DLV_ERROR)X
939941 f
939952323(on)X
939962443(error.)X
939972680(On)X
939982818(successful)X
939993188(return,)X
940003440(each)X
940013628(line)X
940023787(number)X
94003576 5616(information)N
94004984(structure)X
940051296(pointed)X
940061567(to)X
940071660(by)X
940081771(an)X
940091878(entry)X
940102074(in)X
940112167(the)X
940122296(block)X
940132505(should)X
940142749(be)X
940152856(free'd)X
940163080(using)X
940170 f
940183312(dwarf_dealloc\(\))X
940191 f
94020576 5712(with)N
94021745(the)X
94022870(allocation)X
940231213(type)X
940240 f
940251406(DW_DLA_LINE)X
940261 f
940271961(when)X
940282162(no)X
940292269(longer)X
940302501(of)X
940312594(interest.)X
940322896(Also)X
940333073(the)X
940343197(block)X
940353401(of)X
940363494(descriptors)X
940373872(itself)X
94038576 5808(should)N
94039810(be)X
94040907(free'd)X
940411121(using)X
940420 f
940431343(dwarf_dealloc\(\))X
940441 f
940452084(with)X
940462247(the)X
940472366(allocation)X
940482703(type)X
940490 f
940502890(DW_DLA_LIST)X
940511 f
940523440(when)X
940533636(no)X
940543738(longer)X
940553965(of)X
94056576 6164(rev)N
94057699(1.52,)X
94058879(02)X
94059979(Oct)X
940601115(2003)X
940612217(-)X
940622264(24)X
940632364(-)X
94064
9406525 p
94066%%Page: 25 25
940670(Courier)xf 0 f
9406810 s 0 xH 0 xS 0 f
940691 f
940702217 384(-)N
940712264(25)X
940722364(-)X
94073576 768(interest.)N
940740 f
94075736 912(Dwarf_Signed)N
940761360(cnt;)X
94077736 1008(Dwarf_Line)N
940781264(*linebuf;)X
94079736 1104(int)N
94080928(sres;)X
94081736 1296(if)N
94082880(\(\(sres)X
940831216(=)X
940841312(dwarf_srclines\(somedie,)X
940852464(&linebuf,&cnt,)X
940863184(&error\)\))X
940873616(==)X
940883760(DW_DLV_OK\))X
940894288({)X
940901120 1488(for)N
940911312(\(i)X
940921456(=)X
940931552(0;)X
940941696(i)X
940951792(<)X
940961888(cnt;)X
940972128(++i\))X
940982368({)X
940991504 1584(/*)N
941001648(use)X
941011840(linebuf[i])X
941022368(*/)X
941031504 1680(dwarf_dealloc\(dbg,)N
941042416(linebuf[i],)X
941052992(DW_DLA_LINE\);)X
941061120 1776(})N
941071120 1872(dwarf_dealloc\(dbg,)N
941082032(linebuf,)X
941092464(DW_DLA_LIST\);)X
94110736 1968(})N
941113 f
94112576 2256(5.5.2)N
94113776(Get)X
94114921(the)X
941151048(set)X
941161162(of)X
941171249(Source)X
941181505(File)X
941191654(Names)X
941201 f
94121576 2496(The)N
94122722(function)X
941231010(returns)X
941241254(the)X
941251373(names)X
941261599(of)X
941271687(the)X
941281807(source)X
941292039(files)X
941302199(that)X
941312341(have)X
941322515(contributed)X
941332902(to)X
941342986(the)X
941353106(compilation-unit)X
941363661(represented)X
94137576 2592(by)N
94138676(the)X
94139794(given)X
94140992(DIE.)X
941411186(Only)X
941421366(the)X
941431484(source)X
941441714(files)X
941451872(named)X
941462106(in)X
941472188(the)X
941482306(statement)X
941492633(program)X
941502925(prologue)X
941513230(are)X
941523349(returned.)X
941530 f
94154576 2928(int)N
94155768(dwarf_srcfiles\()X
94156960 3024(Dwarf_Die)N
941571440(die,)X
94158960 3120(char)N
941591200(***srcfiles,)X
94160960 3216(Dwarf_Signed)N
941611584(*srccount,)X
94162960 3312(Dwarf_Error)N
941631536(*error\))X
941641 f
94165576 3456(When)N
94166805(it)X
94167886(succeeds)X
941680 f
941691237(dwarf_srcfiles\(\))X
941701 f
941712042(returns)X
941720 f
941732330(DW_DLV_OK)X
941741 f
941752799(and)X
941762952(puts)X
941773122(the)X
941783258(number)X
941793541(of)X
941803646(source)X
941813894(files)X
94182576 3552(named)N
94183820(in)X
94184912(the)X
941851040(statement)X
941861377(program)X
941871679(prologue)X
941881993(indicated)X
941892316(by)X
941902425(the)X
941912552(given)X
941920 f
941932787(die)X
941941 f
941952960(into)X
941960 f
941973141(*srccount)X
941981 f
94199(.)S
942003642(Source)X
942013894(files)X
94202576 3648(defined)N
94203898(in)X
942041041(the)X
942051220(statement)X
942061608(program)X
942071961(are)X
942082141(ignored.)X
942092507(The)X
942102713(given)X
942110 f
942123000(die)X
942131 f
942143225(should)X
942153520(have)X
942163754(the)X
942173934(tag)X
942180 f
94219576 3744(DW_TAG_compile_unit)N
942201 f
94221(.)S
942221552(The)X
942231701(location)X
942241983(pointed)X
942252247(to)X
942262333(by)X
942270 f
942282465(srcfiles)X
942291 f
942302873(is)X
942312950(set)X
942323063(to)X
942333148(point)X
942343335(to)X
942353420(a)X
942363479(list)X
942373599(of)X
942383689(pointers)X
942393970(to)X
94240576 3840(null-terminated)N
942411097(strings)X
942421337(that)X
942431484(name)X
942441685(the)X
942451810(source)X
942462047(files.)X
942472253(On)X
942482379(a)X
942492443(successful)X
942502801(return)X
942513021(from)X
942523205(this)X
942533348(function,)X
942543663(each)X
942553839(of)X
942563934(the)X
94257576 3936(strings)N
94258834(returned)X
942591147(should)X
942601405(be)X
942611526(individually)X
942621957(free'd)X
942632195(using)X
942640 f
942652441(dwarf_dealloc\(\))X
942661 f
942673206(with)X
942683392(the)X
942693534(allocation)X
942703894(type)X
942710 f
94272576 4032(DW_DLA_STRING)N
942731 f
942741243(when)X
942751460(no)X
942761583(longer)X
942771831(of)X
942781941(interest.)X
942792261(This)X
942802447(should)X
942812704(be)X
942822824(followed)X
942833153(by)X
942843277(free-ing)X
942853576(the)X
942863718(list)X
942873859(using)X
942880 f
94289576 4128(dwarf_dealloc\(\))N
942901 f
942911319(with)X
942921484(the)X
942931604(allocation)X
942941942(type)X
942950 f
942962130(DW_DLA_LIST)X
942971 f
94298(.)S
942992720(It)X
943002791(returns)X
943010 f
943023064(DW_DLV_ERROR)X
943031 f
943043662(on)X
943053764(error.)X
943063983(It)X
94307576 4224(returns)N
943080 f
94309862(DW_DLV_NO_ENTRY)X
943101 f
943111617(if)X
943121701(there)X
943131897(is)X
943141985(no)X
943152100(corresponding)X
943162594(statement)X
943172936(program)X
943183244(\(i.e.,)X
943193425(if)X
943203510(there)X
943213707(is)X
943223796(no)X
943233912(line)X
94324576 4320(information\).)N
943250 f
94326736 4464(Dwarf_Signed)N
943271360(cnt;)X
94328736 4560(char)N
94329976(**srcfiles;)X
94330736 4656(int)N
94331928(res;)X
94332736 4848(if)N
94333880(\(\(res)X
943341168(=)X
943351264(dwarf_srcfiles\(somedie,)X
943362416(&srcfiles,&cnt)X
943373136(&error\)\))X
943383568(==)X
943393712(DW_DLV_OK\))X
943404240({)X
943411120 5040(for)N
943421312(\(i)X
943431456(=)X
943441552(0;)X
943451696(i)X
943461792(<)X
943471888(cnt;)X
943482128(++i\))X
943492368({)X
943501504 5136(/*)N
943511648(use)X
943521840(srcfiles[i])X
943532416(*/)X
943541504 5232(dwarf_dealloc\(dbg,)N
943552416(srcfiles[i],)X
943563040(DW_DLA_STRING\);)X
943571120 5328(})N
943581120 5424(dwarf_dealloc\(dbg,)N
943592032(srcfiles,)X
943602512(DW_DLA_LIST\);)X
94361736 5520(})N
943621 f
94363576 6164(rev)N
94364699(1.52,)X
94365879(02)X
94366979(Oct)X
943671115(2003)X
943682217(-)X
943692264(25)X
943702364(-)X
94371
9437226 p
94373%%Page: 26 26
943740(Courier)xf 0 f
9437510 s 0 xH 0 xS 0 f
943761 f
943772217 384(-)N
943782264(26)X
943792364(-)X
943803 f
94381576 768(5.5.3)N
94382776(Get)X
94383921(information)X
943841350(about)X
943851565(a)X
943861625(Single)X
943871853(Table)X
943882068(Line)X
943891 f
94390576 912(The)N
94391792(following)X
943921194(functions)X
943931583(can)X
943941786(be)X
943951953(used)X
943962191(on)X
943972362(the)X
943980 f
943992579(Dwarf_Line)X
944001 f
944013150(descriptors)X
944023593(returned)X
944033952(by)X
944040 f
94405576 1008(dwarf_srclines\(\))N
944061 f
944071364(to)X
944081446(obtain)X
944091666(information)X
944102064(about)X
944112262(the)X
944122380(source)X
944132610(lines.)X
944143 f
944159 s
94416576 1248(5.5.3.1)N
94417810(dwarf_linebeginstatement\(\))X
944180 f
9441910 s
94420576 1392(int)N
94421768(dwarf_linebeginstatement\()X
94422960 1488(Dwarf_Line)N
944231488(line,)X
94424960 1584(Dwarf_Bool)N
944251488(*return_bool,)X
94426960 1680(Dwarf_Error)N
944271536(*error\))X
944281 f
94429576 1824(The)N
94430726(function)X
944310 f
944321046(dwarf_linebeginstatement\(\))X
944331 f
944342319(returns)X
944350 f
944362595(DW_DLV_OK)X
944371 f
944383052(and)X
944393194(sets)X
944400 f
944413368(*return_bool)X
944421 f
944433970(to)X
944442 f
94445576 1920(non-zero)N
944461 f
94447889(\(if)X
944480 f
944491021(line)X
944501 f
944511241(represents)X
944521595(a)X
944531659(line)X
944541806(number)X
944552078(entry)X
944562270(that)X
944572417(is)X
944582497(marked)X
944592765(as)X
944602859(beginning)X
944613206(a)X
944623269(statement\).)X
944633670(or)X
944642 f
944653764(zero)X
944661 f
944673929(\(\(if)X
944680 f
94469576 2016(line)N
944701 f
94471820(represents)X
944721198(a)X
944731286(line)X
944741458(number)X
944751755(entry)X
944761972(that)X
944772144(is)X
944782249(not)X
944792404(marked)X
944802698(as)X
944812818(beginning)X
944823191(a)X
944833280(statement\).)X
944843707(It)X
944853809(returns)X
944860 f
94487576 2112(DW_DLV_ERROR)N
944881 f
944891172(on)X
944901272(error.)X
944911489(It)X
944921558(never)X
944931757(returns)X
944940 f
944952028(DW_DLV_NO_ENTRY)X
944961 f
94497(.)S
944983 f
944999 s
94500576 2352(5.5.3.2)N
94501810(dwarf_lineendsequence\(\))X
945020 f
9450310 s
94504576 2496(int)N
94505768(dwarf_lineendsequence\()X
94506960 2592(Dwarf_Line)N
945071488(line,)X
94508960 2688(Dwarf_Bool)N
945091488(*return_bool,)X
94510960 2784(Dwarf_Error)N
945111536(*error\))X
945121 f
94513576 2928(The)N
94514733(function)X
945150 f
945161060(dwarf_lineendsequence\(\))X
945171 f
945182197(returns)X
945190 f
945202481(DW_DLV_OK)X
945211 f
945222946(and)X
945233095(sets)X
945240 f
945253276(*return_bool)X
945262 f
945273885(non-)X
94528576 3024(zero)N
945291 f
94530738(if)X
945310 f
94532839(line)X
945331 f
945341055(represents)X
945351405(a)X
945361465(line)X
945371609(number)X
945381878(entry)X
945392067(that)X
945402211(is)X
945412288(marked)X
945422553(as)X
945432644(ending)X
945442886(a)X
945452946(text)X
945463090(sequence\))X
945473435(or)X
945482 f
945493525(zero)X
945501 f
945513686(\(\(if)X
945520 f
945533840(line)X
945541 f
94555576 3120(represents)N
94556925(a)X
94557984(line)X
945581127(number)X
945591395(entry)X
945601583(that)X
945611726(is)X
945621802(not)X
945631927(marked)X
945642191(as)X
945652281(ending)X
945662522(a)X
945672581(text)X
945682724(sequence\).)X
945693109(It)X
945703181(returns)X
945710 f
945723456(DW_DLV_ERROR)X
945731 f
94574576 3216(on)N
94575676(error.)X
94576893(It)X
94577962(never)X
945781161(returns)X
945790 f
945801432(DW_DLV_NO_ENTRY)X
945811 f
94582(.)S
945833 f
945849 s
94585576 3456(5.5.3.3)N
94586810(dwarf_lineno\(\))X
945870 f
9458810 s
94589576 3600(int)N
94590768(dwarf_lineno\()X
94591960 3696(Dwarf_Line)N
945921776(line,)X
94593960 3792(Dwarf_Unsigned)N
945941680(*)X
945951776(returned_lineno,)X
94596960 3888(Dwarf_Error)N
945971680(*)X
945981776(error\))X
945991 f
94600576 4032(The)N
94601738(function)X
946020 f
946031070(dwarf_lineno\(\))X
946041 f
946051779(returns)X
946060 f
946072067(DW_DLV_OK)X
946081 f
946092536(and)X
946102690(sets)X
946110 f
946122876(*return_lineno)X
946131 f
946143586(to)X
946153686(the)X
946163822(source)X
94617576 4128(statement)N
94618913(line)X
946191063(number)X
946201338(corresponding)X
946211827(to)X
946221919(the)X
946232046(descriptor)X
946240 f
946252424(line)X
946261 f
94627(.)S
946282685(It)X
946292763(returns)X
946300 f
946313043(DW_DLV_ERROR)X
946321 f
946333648(on)X
946343757(error.)X
946353983(It)X
94636576 4224(never)N
94637775(returns)X
946380 f
946391046(DW_DLV_NO_ENTRY)X
946401 f
94641(.)S
946423 f
946439 s
94644576 4464(5.5.3.4)N
94645810(dwarf_lineaddr\(\))X
946460 f
9464710 s
94648576 4608(int)N
94649768(dwarf_lineaddr\()X
94650960 4704(Dwarf_Line)N
946511584(line,)X
94652960 4800(Dwarf_Addr)N
946531536(*return_lineaddr,)X
94654960 4896(Dwarf_Error)N
946551536(*error\))X
946561 f
94657576 5040(The)N
94658744(function)X
946590 f
946601082(dwarf_lineaddr\(\))X
946611 f
946621893(returns)X
946630 f
946642188(DW_DLV_OK)X
946651 f
946662664(and)X
946672824(sets)X
946680 f
946693016(*return_lineaddr)X
946701 f
946713828(to)X
946723934(the)X
94673576 5136(address)N
94674851(associated)X
946751215(with)X
946761391(the)X
946771523(descriptor)X
946780 f
946791906(line)X
946801 f
94681(.)S
946822172(It)X
946832255(returns)X
946840 f
946852540(DW_DLV_ERROR)X
946861 f
946873170(on)X
946883284(error.)X
946893515(It)X
946903597(never)X
946913809(returns)X
946920 f
94693576 5232(DW_DLV_NO_ENTRY)N
946941 f
94695(.)S
946963 f
946979 s
94698576 5472(5.5.3.5)N
94699810(dwarf_lineoff\(\))X
947001 f
9470110 s
94702576 6164(rev)N
94703699(1.52,)X
94704879(02)X
94705979(Oct)X
947061115(2003)X
947072217(-)X
947082264(26)X
947092364(-)X
94710
9471127 p
94712%%Page: 27 27
947130(Courier)xf 0 f
9471410 s 0 xH 0 xS 0 f
947151 f
947162217 384(-)N
947172264(27)X
947182364(-)X
947190 f
94720576 768(int)N
94721768(dwarf_lineoff\()X
94722960 864(Dwarf_Line)N
947231488(line,)X
94724960 960(Dwarf_Signed)N
947251680(*)X
947261776(return_lineoff,)X
94727960 1056(Dwarf_Error)N
947281536(*error\))X
947291 f
94730576 1200(The)N
94731725(function)X
947320 f
947331045(dwarf_lineoff\(\))X
947341 f
947351790(returns)X
947360 f
947372066(DW_DLV_OK)X
947381 f
947392523(and)X
947402664(sets)X
947410 f
947422837(*return_lineoff)X
947431 f
947443582(to)X
947453669(the)X
947463792(column)X
94747576 1296(number)N
94748854(at)X
94749945(which)X
947501174(the)X
947511305(statement)X
947521645(represented)X
947532049(by)X
947540 f
947552190(line)X
947561 f
947572414(begins.)X
947582695(It)X
947592776(sets)X
947600 f
947612956(return_lineoff)X
947621 f
947633660(to)X
947642 f
947653754(-1)X
947661 f
947673853(if)X
947683934(the)X
94769576 1392(column)N
94770836(number)X
947711101(of)X
947721188(the)X
947731306(statement)X
947741633(is)X
947751706(not)X
947761828(represented)X
947772219(\(meaning)X
947782543(the)X
947792662(producer)X
947802969(library)X
947813204(call)X
947823341(was)X
947833487(given)X
947843686(zero)X
947853846(as)X
947863934(the)X
94787576 1488(column)N
94788836(number\).)X
94789576 1632(On)N
94790694(error)X
94791871(it)X
94792935(returns)X
947930 f
947941206(DW_DLV_ERROR)X
947951 f
94796(.)S
947971842(It)X
947981911(never)X
947992110(returns)X
948000 f
948012381(DW_DLV_NO_ENTRY)X
948021 f
94803(.)S
948043 f
948059 s
94806576 1872(5.5.3.6)N
94807810(dwarf_linesrc\(\))X
948080 f
9480910 s
94810576 2016(int)N
94811768(dwarf_linesrc\()X
94812960 2112(Dwarf_Line)N
948131488(line,)X
94814960 2208(char)N
948151248(**)X
948161488(return_linesrc,)X
94817960 2304(Dwarf_Error)N
948181536(*error\))X
948191 f
94820576 2448(The)N
94821724(function)X
948220 f
948231042(dwarf_linesrc\(\))X
948241 f
948251786(returns)X
948260 f
948272061(DW_DLV_OK)X
948281 f
948292517(and)X
948302657(sets)X
948310 f
948322829(*return_linesrc)X
948331 f
948343573(to)X
948353659(a)X
948363719(pointer)X
948373970(to)X
94838576 2544(a)N
94839640(null-terminated)X
948401162(string)X
948411371(of)X
948421465(characters)X
948431819(that)X
948441966(represents)X
948452319(the)X
948462444(name)X
948472645(of)X
948482739(the)X
948492864(source-file)X
948503235(where)X
948510 f
948523487(line)X
948531 f
948543706(occurs.)X
948553983(It)X
94856576 2640(returns)N
948570 f
94858847(DW_DLV_ERROR)X
948591 f
948601443(on)X
948611543(error.)X
94862576 2784(If)N
94863651(the)X
94864770(applicable)X
948651121(file)X
948661249(name)X
948671444(in)X
948681528(the)X
948691648(line)X
948701790(table)X
948711968(Statement)X
948722310(Program)X
948732608(Prolog)X
948742843(does)X
948753012(not)X
948763136(start)X
948773296(with)X
948783460(a)X
948793518('/')X
948803616(character)X
948813934(the)X
94882576 2880(string)N
94883787(in)X
948840 f
94885906(DW_AT_comp_dir)X
948861 f
948871607(\(if)X
948881712(applicable)X
948892071(and)X
948902216(present\))X
948912503(or)X
948922598(the)X
948932724(applicable)X
948943082(directory)X
948953400(name)X
948963602(from)X
948973786(the)X
948983912(line)X
94899576 2976(Statement)N
94900927(Program)X
949011235(Prolog)X
949021480(is)X
949031565(prepended)X
949041932(to)X
949052026(the)X
949062156(file)X
949072295(name)X
949082501(in)X
949092595(the)X
949102725(line)X
949112877(table)X
949123065(Statement)X
949133417(Program)X
949143725(Prolog)X
949153970(to)X
94916576 3072(make)N
94917770(a)X
94918826(full)X
94919957(path.)X
94920576 3216(The)N
94921754(storage)X
949221039(pointed)X
949231332(to)X
949241447(by)X
949251580(a)X
949261669(successful)X
949272052(return)X
949282297(of)X
949290 f
949302445(dwarf_linesrc\(\))X
949311 f
949323218(should)X
949333484(be)X
949343613(free'd)X
949353859(using)X
949360 f
94937576 3312(dwarf_dealloc\(\))N
949381 f
949391326(with)X
949401498(the)X
949411626(allocation)X
949421972(type)X
949430 f
949442168(DW_DLA_STRING)X
949451 f
949462822(when)X
949473026(no)X
949483136(longer)X
949493371(of)X
949503468(interest.)X
949513774(It)X
949523853(never)X
94953576 3408(returns)N
949540 f
94955847(DW_DLV_NO_ENTRY)X
949561 f
94957(.)S
949583 f
949599 s
94960576 3648(5.5.3.7)N
94961810(dwarf_lineblock\(\))X
949620 f
9496310 s
94964576 3792(int)N
94965768(dwarf_lineblock\()X
94966960 3888(Dwarf_Line)N
949671488(line,)X
94968960 3984(Dwarf_Bool)N
949691488(*return_bool,)X
94970960 4080(Dwarf_Error)N
949711536(*error\))X
949721 f
94973576 4224(The)N
94974723(function)X
949750 f
949761040(dwarf_lineblock\(\))X
949771 f
949781879(returns)X
949790 f
949802153(DW_DLV_OK)X
949811 f
949822608(and)X
949832747(sets)X
949840 f
949852918(*return_linesrc)X
949861 f
949873661(to)X
949883746(non-zero)X
94989576 4320(\(i.e.)N
94990727(true\)\(if)X
94991981(the)X
949921105(line)X
949931251(is)X
949941330(marked)X
949951597(as)X
949961689(beginning)X
949972034(a)X
949982095(basic)X
949992285(block\))X
950002515(or)X
950012607(zero)X
950022771(\(i.e.)X
950032921(false\))X
950043125(\(if)X
950053226(the)X
950063349(line)X
950073494(is)X
950083572(marked)X
950093838(as)X
950103930(not)X
95011576 4416(beginning)N
95012916(a)X
95013972(basic)X
950141157(block\).)X
950151422(It)X
950161491(returns)X
950170 f
950181762(DW_DLV_ERROR)X
950191 f
950202358(on)X
950212458(error.)X
950222675(It)X
950232744(never)X
950242943(returns)X
950250 f
950263214(DW_DLV_NO_ENTRY)X
950271 f
95028(.)S
950293 f
9503011 s
95031576 4752(5.6)N
95032730(Global)X
950331008(Name)X
950341249(Space)X
950351491(Operations)X
950361 f
9503710 s
95038576 4896(These)N
95039788(operations)X
950401142(operate)X
950411399(on)X
950421499(the)X
950431617(.debug_pubnames)X
950442218(section)X
950452465(of)X
950462552(the)X
950472670(debugging)X
950483028(information.)X
950493 f
95050576 5136(5.6.1)N
95051776(Debugger)X
950521130(Interface)X
950531463(Operations)X
950549 s
95055576 5424(5.6.1.1)N
95056810(dwarf_get_globals\(\))X
950571 f
9505810 s
95059576 6164(rev)N
95060699(1.52,)X
95061879(02)X
95062979(Oct)X
950631115(2003)X
950642217(-)X
950652264(27)X
950662364(-)X
95067
9506828 p
95069%%Page: 28 28
950700(Courier)xf 0 f
9507110 s 0 xH 0 xS 0 f
950721 f
950732217 384(-)N
950742264(28)X
950752364(-)X
950760 f
95077576 768(int)N
95078768(dwarf_get_globals\()X
95079960 864(Dwarf_Debug)N
950801536(dbg,)X
95081960 960(Dwarf_Global)N
950821584(**globals,)X
95083960 1056(Dwarf_Signed)N
950841584(*)X
950851680(return_count,)X
95086960 1152(Dwarf_Error)N
950871536(*error\))X
950881 f
95089576 1296(The)N
95090722(function)X
950910 f
950921038(dwarf_get_globals\(\))X
950931 f
950941971(returns)X
950950 f
950962243(DW_DLV_OK)X
950971 f
950982696(and)X
950992834(sets)X
951000 f
951013004(*return_count)X
951021 f
951033650(to)X
951043734(the)X
951053854(count)X
95106576 1392(of)N
95107682(pubnames)X
951081046(represented)X
951091456(in)X
951101557(the)X
951111694(section)X
951121960(containing)X
951132337(pubnames)X
951142700(i.e.)X
951152836(.debug_pubnames.)X
951163495(It)X
951173582(also)X
951183749(stores)X
951193974(at)X
951200 f
95121576 1488(*globals)N
951221 f
95123(,)S
951241013(a)X
951251083(pointer)X
951261344(to)X
951271440(a)X
951281510(list)X
951291641(of)X
951300 f
951311770(Dwarf_Global)X
951321 f
951332380(descriptors,)X
951342786(one)X
951352936(for)X
951363064(each)X
951373246(of)X
951383347(the)X
951393479(pubnames)X
951403838(in)X
951413934(the)X
95142576 1584(.debug_pubnames)N
951431184(section.)X
951441478(It)X
951451553(returns)X
951460 f
951471830(DW_DLV_ERROR)X
951481 f
951492432(on)X
951502538(error.)X
951512761(It)X
951522836(returns)X
951530 f
951543113(DW_DLV_NO_ENTRY)X
951551 f
951563859(if)X
951573934(the)X
95158576 1680(.debug_pubnames)N
951591177(section)X
951601424(does)X
951611591(not)X
951621713(exist.)X
95163576 1872(On)N
95164698(a)X
95165758(successful)X
951661112(return)X
951671328(from)X
951681508(this)X
951691648(function,)X
951701960(the)X
951710 f
951722111(Dwarf_Global)X
951731 f
951742712(descriptors)X
951753089(should)X
951763327(be)X
951773428(individually)X
951783839(free'd)X
95179576 1968(using)N
951800 f
95181800(dwarf_dealloc\(\))X
951821 f
951831543(with)X
951841708(the)X
951851829(allocation)X
951862168(type)X
951870 f
951882356(DW_DLA_GLOBAL)X
951891 f
95190(,)S
951913022(followed)X
951923329(by)X
951933431(the)X
951943551(deallocation)X
951953965(of)X
95196576 2064(the)N
95197694(list)X
95198811(itself)X
95199991(with)X
952001153(the)X
952011271(allocation)X
952021607(type)X
952030 f
952041793(DW_DLA_LIST)X
952051 f
952062341(when)X
952072535(the)X
952082653(descriptors)X
952093025(are)X
952103144(no)X
952113244(longer)X
952123469(of)X
952133556(interest.)X
952140 f
95215736 2304(Dwarf_Signed)N
952161360(cnt;)X
95217736 2400(Dwarf_Global)N
952181360(*globs;)X
95219736 2496(int)N
95220928(res;)X
95221736 2688(if)N
95222880(\(\(res)X
952231168(=)X
952241264(dwarf_get_globals\(dbg,)X
952252368(&globs,&cnt,)X
952262992(&error\)\))X
952273424(==)X
952283568(DW_DLV_OK\))X
952294096({)X
952301120 2880(for)N
952311312(\(i)X
952321456(=)X
952331552(0;)X
952341696(i)X
952351792(<)X
952361888(cnt;)X
952372128(++i\))X
952382368({)X
952391504 2976(/*)N
952401648(use)X
952411840(globs[i])X
952422272(*/)X
952431504 3072(dwarf_dealloc\(dbg,)N
952442416(globs[i],)X
952452896(DW_DLA_GLOBAL\);)X
952461120 3168(})N
952471120 3264(dwarf_dealloc\(dbg,)N
952482032(globs,)X
952492368(DW_DLA_LIST\);)X
95250736 3360(})N
952513 f
952529 s
95253576 3648(5.6.1.2)N
95254810(dwarf_globname\(\))X
952550 f
9525610 s
95257576 3792(int)N
95258768(dwarf_globname\()X
95259960 3888(Dwarf_Global)N
952601584(global,)X
95261960 3984(char)N
952621200(**)X
952631584(return_name,)X
95264960 4080(Dwarf_Error)N
952651536(*error\))X
952661 f
95267576 4224(The)N
95268727(function)X
952690 f
952701048(dwarf_globname\(\))X
952711 f
952721843(returns)X
952730 f
952742121(DW_DLV_OK)X
952751 f
952762580(and)X
952772723(sets)X
952780 f
952792898(*return_name)X
952801 f
952813501(to)X
952823590(a)X
952833653(pointer)X
952843907(to)X
952853996(a)X
95286576 4320(null-terminated)N
952871092(string)X
952881296(that)X
952891437(names)X
952901663(the)X
952911782(pubname)X
952922097(represented)X
952932489(by)X
952942590(the)X
952950 f
952962737(Dwarf_Global)X
952971 f
952983334(descriptor,)X
952990 f
953003724(global)X
953011 f
95302(.)S
95303576 4416(It)N
95304645(returns)X
953050 f
95306916(DW_DLV_ERROR)X
953071 f
953081512(on)X
953091612(error.)X
953101829(On)X
953111947(a)X
953122003(successful)X
953132353(return)X
953142565(from)X
953152742(this)X
953162878(function,)X
953173186(the)X
953183305(string)X
953193508(should)X
953203742(be)X
953213839(free'd)X
95322576 4512(using)N
953230 f
95324804(dwarf_dealloc\(\))X
953251 f
95326(,)S
953271571(with)X
953281740(the)X
953291865(allocation)X
953302208(type)X
953310 f
953322401(DW_DLA_STRING)X
953331 f
953343051(when)X
953353251(no)X
953363357(longer)X
953373588(of)X
953383681(interest.)X
953393983(It)X
95340576 4608(never)N
95341775(returns)X
953420 f
953431046(DW_DLV_NO_ENTRY)X
953441 f
95345(.)S
953463 f
953479 s
95348576 4848(5.6.1.3)N
95349810(dwarf_global_die_offset\(\))X
953500 f
9535110 s
95352576 4992(int)N
95353768(dwarf_global_die_offset\()X
95354960 5088(Dwarf_Global)N
953551584(global,)X
95356960 5184(Dwarf_Off)N
953571536(*return_offset,)X
95358960 5280(Dwarf_Error)N
953591536(*error\))X
953601 f
95361576 5424(The)N
95362732(function)X
953630 f
953641058(dwarf_global_die_offset\(\))X
953651 f
953662289(returns)X
953670 f
953682571(DW_DLV_OK)X
953691 f
953703034(and)X
953713181(sets)X
953720 f
953733360(*return_offset)X
953741 f
95375576 5520(to)N
95376663(the)X
95377786(offset)X
95378994(in)X
953791081(the)X
953801203(section)X
953811454(containing)X
953821816(DIE's,)X
953832052(i.e.)X
953842174(.debug_info,)X
953852603(of)X
953862694(the)X
953872816(DIE)X
953882974(representing)X
953893395(the)X
953903517(pubname)X
953913835(that)X
953923979(is)X
95393576 5616(described)N
95394916(by)X
953951028(the)X
953960 f
953971186(Dwarf_Global)X
953981 f
953991794(descriptor,)X
954000 f
954012195(glob)X
954021 f
95403(.)S
954042459(It)X
954052540(returns)X
954060 f
954072823(DW_DLV_ERROR)X
954081 f
954093431(on)X
954103543(error.)X
954113772(It)X
954123853(never)X
95413576 5712(returns)N
954140 f
95415847(DW_DLV_NO_ENTRY)X
954161 f
95417(.)S
95418576 6164(rev)N
95419699(1.52,)X
95420879(02)X
95421979(Oct)X
954221115(2003)X
954232217(-)X
954242264(28)X
954252364(-)X
95426
9542729 p
95428%%Page: 29 29
954290(Courier)xf 0 f
9543010 s 0 xH 0 xS 0 f
954311 f
954322217 384(-)N
954332264(29)X
954342364(-)X
954353 f
954369 s
95437576 768(5.6.1.4)N
95438810(dwarf_global_cu_offset\(\))X
954390 f
9544010 s
95441576 912(int)N
95442768(dwarf_global_cu_offset\()X
95443960 1008(Dwarf_Global)N
954441584(global,)X
95445960 1104(Dwarf_Off)N
954461536(*return_offset,)X
95447960 1200(Dwarf_Error)N
954481536(*error\))X
954491 f
95450576 1344(The)N
95451726(function)X
954520 f
954531046(dwarf_global_cu_offset\(\))X
954541 f
954552223(returns)X
954560 f
954572499(DW_DLV_OK)X
954581 f
954592956(and)X
954603098(sets)X
954610 f
954623272(*return_offset)X
954631 f
954643970(to)X
95465576 1440(the)N
95466721(offset)X
95467951(in)X
954681060(the)X
954691205(section)X
954701479(containing)X
954711864(DIE's,)X
954722123(i.e.)X
954732268(.debug_info,)X
954742720(of)X
954752834(the)X
954762979(compilation-unit)X
954773559(header)X
954783821(of)X
954793934(the)X
95480576 1536(compilation-unit)N
954811137(that)X
954821285(contains)X
954831580(the)X
954841706(pubname)X
954852028(described)X
954862364(by)X
954872472(the)X
954880 f
954892626(Dwarf_Global)X
954901 f
954913230(descriptor,)X
954920 f
954933627(global)X
954941 f
95495(.)S
954963983(It)X
95497576 1632(returns)N
954980 f
95499847(DW_DLV_ERROR)X
955001 f
955011443(on)X
955021543(error.)X
955031760(It)X
955041829(never)X
955052028(returns)X
955060 f
955072299(DW_DLV_NO_ENTRY)X
955081 f
95509(.)S
955103 f
955119 s
95512576 1872(5.6.1.5)N
95513810(dwarf_get_cu_die_offset_given_cu_header_offset\(\))X
955140 f
9551510 s
95516576 2016(int)N
95517768(dwarf_get_cu_die_offset_given_cu_header_offset\()X
95518960 2112(Dwarf_Debug)N
955191536(dbg,)X
95520960 2208(Dwarf_Off)N
955211536(in_cu_header_offset,)X
95522960 2304(Dwarf_Off)N
955231440(*)X
955241536(out_cu_die_offset,)X
95525960 2400(Dwarf_Error)N
955261536(*error\))X
955271 f
95528576 2544(The)N
95529870(function)X
955300 f
955311335(dwarf_get_cu_die_offset_given_cu_header_offset\(\))X
955321 f
955333809(returns)X
955340 f
95535576 2640(DW_DLV_OK)N
955361 f
955371029(and)X
955381166(sets)X
955390 f
955401334(*out_cu_die_offset)X
955411 f
955422218(to)X
955432300(the)X
955442418(offset)X
955452621(of)X
955462708(the)X
955472826(compilation-unit)X
955483379(DIE)X
955493533(given)X
955503731(the)X
955513849(offset)X
955520 f
95553576 2736(in_cu_header_offset)N
955541 f
955551512(of)X
955561603(a)X
955571663(compilation-unit)X
955582221(header.)X
955592501(It)X
955602575(returns)X
955610 f
955622851(DW_DLV_ERROR)X
955631 f
955643452(on)X
955653557(error.)X
955663779(It)X
955673853(never)X
95568576 2832(returns)N
955690 f
95570847(DW_DLV_NO_ENTRY)X
955711 f
95572(.)S
95573576 3120(This)N
95574747(effectively)X
955751120(turns)X
955761309(a)X
955771374(compilation-unit-header)X
955782178(offset)X
955792390(into)X
955802543(a)X
955812609(compilation-unit)X
955823172(DIE)X
955833336(offset)X
955843549(\(by)X
955853686(adding)X
955863934(the)X
95587576 3216(size)N
95588784(of)X
95589934(the)X
955901115(applicable)X
955911528(CU)X
955921722(header\).)X
955932087(This)X
955942312(function)X
955952662(is)X
955962797(also)X
955973008(sometimes)X
955983432(useful)X
955993710(with)X
956003934(the)X
956010 f
95602576 3312(dwarf_weak_cu_offset\(\))N
956031 f
95604(,)S
956050 f
956061766(dwarf_func_cu_offset\(\))X
956071 f
95608(,)S
956090 f
956102956(dwarf_type_cu_offset\(\))X
956111 f
95612(,)S
95613576 3408(and)N
956140 f
95615740(int)X
95616932(dwarf_var_cu_offset\(\))X
956171 f
956181960(functions.)X
956190 f
95620576 3600(dwarf_get_cu_die_offset_given_cu_header_offset\(\))N
956211 f
956222900(added)X
956233112(Rev)X
956243261(1.45,)X
956253441(June,)X
956263628(2001.)X
95627576 3792(This)N
95628740(function)X
956291029(is)X
956301104(declared)X
956311399(as)X
956321488('optional')X
956331826(in)X
956341910(libdwarf.h)X
956352265(on)X
956362368(IRIX)X
956372556(systems)X
956382832(so)X
956392926(the)X
956403047(_MIPS_SYMBOL_PRESENT)X
95641576 3888(predicate)N
95642893(may)X
956431053(be)X
956441151(used)X
956451320(at)X
956461400(run)X
956471529(time)X
956481693(to)X
956491777(determine)X
956502120(if)X
956512191(the)X
956522311(version)X
956532568(of)X
956542656(libdwarf)X
956552949(linked)X
956563170(into)X
956573315(an)X
956583412(application)X
956593789(has)X
956603917(this)X
95661576 3984(function.)N
956623 f
956639 s
95664576 4224(5.6.1.6)N
95665810(dwarf_global_name_offsets\(\))X
956660 f
9566710 s
95668576 4368(int)N
95669768(dwarf_global_name_offsets\()X
95670960 4464(Dwarf_Global)N
956711584(global,)X
95672960 4560(char)N
956731392(**return_name,)X
95674960 4656(Dwarf_Off)N
956751440(*die_offset,)X
95676960 4752(Dwarf_Off)N
956771440(*cu_offset,)X
95678960 4848(Dwarf_Error)N
956791536(*error\))X
956801 f
95681576 4992(The)N
95682732(function)X
956830 f
956841058(dwarf_global_name_offsets\(\))X
956851 f
956862385(returns)X
956870 f
956882667(DW_DLV_OK)X
956891 f
956903130(and)X
956913277(sets)X
956920 f
956933456(*return_name)X
956941 f
95695576 5088(to)N
95696692(a)X
95697782(pointer)X
956981063(to)X
956991178(a)X
957001267(null-terminated)X
957011814(string)X
957022049(that)X
957032222(gives)X
957042444(the)X
957052595(name)X
957062822(of)X
957072942(the)X
957083093(pubname)X
957093440(described)X
957103801(by)X
957113934(the)X
957120 f
95713576 5184(Dwarf_Global)N
957141 f
957151211(descriptor)X
957160 f
957171620(global)X
957181 f
95719(.)S
957202008(It)X
957212117(returns)X
957220 f
957232428(DW_DLV_ERROR)X
957241 f
957253064(on)X
957263204(error.)X
957273461(It)X
957283570(never)X
957293809(returns)X
957300 f
95731576 5280(DW_DLV_NO_ENTRY)N
957321 f
95733(.)S
957341365(It)X
957351443(also)X
957361601(returns)X
957371853(in)X
957381943(the)X
957392069(locations)X
957402386(pointed)X
957412654(to)X
957422744(by)X
957430 f
957442880(die_offset)X
957451 f
95746(,)S
957473408(and)X
957480 f
957493580(cu_offset)X
957501 f
95751(,)S
95752576 5376(the)N
95753697(offsets)X
95754934(of)X
957551024(the)X
957561145(DIE)X
957571302(representing)X
957581722(the)X
957591843(pubname,)X
957602180(and)X
957612319(the)X
957622440(DIE)X
957632597(representing)X
957643017(the)X
957653138(compilation-unit)X
957663694(containing)X
95767576 5472(the)N
95768717(pubname,)X
957691074(respectively.)X
957701545(On)X
957711686(a)X
957721764(successful)X
957732136(return)X
957742370(from)X
957750 f
957762596(dwarf_global_name_offsets\(\))X
957771 f
957783934(the)X
95779576 5568(storage)N
95780833(pointed)X
957811098(to)X
957821185(by)X
957830 f
957841318(return_name)X
957851 f
957861871(should)X
957872110(be)X
957882212(free'd)X
957892431(using)X
957900 f
957912658(dwarf_dealloc\(\))X
957921 f
95793(,)S
957943424(with)X
957953592(the)X
957963716(allocation)X
95797576 5664(type)N
957980 f
95799762(DW_DLA_STRING)X
958001 f
958011406(when)X
958021600(no)X
958031700(longer)X
958041925(of)X
958052012(interest.)X
95806576 6164(rev)N
95807699(1.52,)X
95808879(02)X
95809979(Oct)X
958101115(2003)X
958112217(-)X
958122264(29)X
958132364(-)X
95814
9581530 p
95816%%Page: 30 30
958170(Courier)xf 0 f
9581810 s 0 xH 0 xS 0 f
958191 f
958202217 384(-)N
958212264(30)X
958222364(-)X
958233 f
9582411 s
95825576 768(5.7)N
95826730(Weak)X
95827972(Name)X
958281213(Space)X
958291455(Operations)X
958301 f
9583110 s
95832576 912(These)N
95833788(operations)X
958341142(operate)X
958351399(on)X
958361499(the)X
958371617(.debug_weaknames)X
958382268(section)X
958392515(of)X
958402602(the)X
958412720(debugging)X
958423078(information.)X
95843576 1056(These)N
95844788(operations)X
958451142(are)X
958461261(SGI)X
958471410(specific,)X
958481700(not)X
958491822(part)X
958501967(of)X
958512054(standard)X
958522346(DWARF.)X
958533 f
95854576 1344(5.7.1)N
95855776(Debugger)X
958561130(Interface)X
958571463(Operations)X
958589 s
95859576 1632(5.7.1.1)N
95860810(dwarf_get_weaks\(\))X
958610 f
9586210 s
95863576 1776(int)N
95864768(dwarf_get_weaks\()X
95865960 1872(Dwarf_Debug)N
958661536(dbg,)X
95867960 1968(Dwarf_Weak)N
958681488(**weaks,)X
95869960 2064(Dwarf_Signed)N
958701584(*weak_count,)X
95871960 2160(Dwarf_Error)N
958721536(*error\))X
958731 f
95874576 2304(The)N
95875731(function)X
958760 f
958771057(dwarf_get_weaks\(\))X
958781 f
958791904(returns)X
958800 f
958812186(DW_DLV_OK)X
958821 f
958832649(and)X
958842796(sets)X
958850 f
958862975(*weak_count)X
958871 f
958883534(to)X
958893627(the)X
958903756(count)X
958913965(of)X
95892576 2400(weak)N
95893794(names)X
958941047(represented)X
958951466(in)X
958961576(the)X
958971722(section)X
958981996(containing)X
958992381(weak)X
959002598(names)X
959012850(i.e.)X
959022995(.debug_weaknames.)X
959033713(It)X
959043809(returns)X
959050 f
95906576 2496(DW_DLV_ERROR)N
959071 f
959081174(on)X
959091276(error.)X
959101495(It)X
959111567(returns)X
959120 f
959131841(DW_DLV_NO_ENTRY)X
959141 f
959152584(if)X
959162656(the)X
959172777(section)X
959183027(does)X
959193197(not)X
959203322(exist.)X
959213536(It)X
959223608(also)X
959233760(stores)X
959243970(in)X
959250 f
95926576 2592(*weaks)N
959271 f
95928(,)S
95929925(a)X
959301002(pointer)X
959311270(to)X
959321373(a)X
959331450(list)X
959341587(of)X
959350 f
959361722(Dwarf_Weak)X
959371 f
959382242(descriptors,)X
959392654(one)X
959402810(for)X
959412944(each)X
959423132(of)X
959433239(the)X
959443377(weak)X
959453587(names)X
959463832(in)X
959473934(the)X
95948576 2688(.debug_weaknames)N
959491242(section.)X
959501544(On)X
959511677(a)X
959521748(successful)X
959532113(return)X
959542340(from)X
959552531(this)X
959562681(function,)X
959573003(the)X
959580 f
959593164(Dwarf_Weak)X
959601 f
959613680(descriptors)X
95962576 2784(should)N
95963829(be)X
95964945(individually)X
959651371(free'd)X
959661604(using)X
959670 f
959681845(dwarf_dealloc\(\))X
959691 f
959702605(with)X
959712787(the)X
959722924(allocation)X
959733279(type)X
959740 f
959753484(DW_DLA_WEAK)X
959761 f
95977(,)S
95978576 2880(followed)N
95979881(by)X
95980981(the)X
959811099(deallocation)X
959821511(of)X
959831598(the)X
959841716(list)X
959851833(itself)X
959862013(with)X
959872175(the)X
959882293(allocation)X
959892630(type)X
959900 f
959912817(DW_DLA_LIST)X
959921 f
959933366(when)X
959943561(the)X
959953680(descriptors)X
95996576 2976(are)N
95997695(no)X
95998795(longer)X
959991020(of)X
960001107(interest.)X
960010 f
96002736 3216(Dwarf_Signed)N
960031360(cnt;)X
96004736 3312(Dwarf_Weak)N
960051264(*weaks;)X
96006736 3408(int)N
96007928(res;)X
96008736 3600(if)N
96009880(\(\(res)X
960101168(=)X
960111264(dwarf_get_weaks\(dbg,)X
960122272(&weaks,&cnt,)X
960132896(&error\)\))X
960143328(==)X
960153472(DW_DLV_OK\))X
960164000({)X
960171120 3792(for)N
960181312(\(i)X
960191456(=)X
960201552(0;)X
960211696(i)X
960221792(<)X
960231888(cnt;)X
960242128(++i\))X
960252368({)X
960261504 3888(/*)N
960271648(use)X
960281840(weaks[i])X
960292272(*/)X
960301504 3984(dwarf_dealloc\(dbg,)N
960312416(weaks[i],)X
960322896(DW_DLA_WEAK\);)X
960331120 4080(})N
960341120 4176(dwarf_dealloc\(dbg,)N
960352032(weaks,)X
960362368(DW_DLA_LIST\);)X
96037736 4272(})N
960383 f
960399 s
96040576 4560(5.7.1.2)N
96041810(dwarf_weakname\(\))X
960420 f
9604310 s
96044576 4704(int)N
96045768(dwarf_weakname\()X
96046960 4800(Dwarf_Weak)N
960471488(weak,)X
96048960 4896(char)N
960491344(**)X
960501488(return_name,)X
96051960 4992(Dwarf_Error)N
960521536(*error\))X
960531 f
96054576 5136(The)N
96055727(function)X
960560 f
960571048(dwarf_weakname\(\))X
960581 f
960591843(returns)X
960600 f
960612121(DW_DLV_OK)X
960621 f
960632580(and)X
960642723(sets)X
960650 f
960662898(*return_name)X
960671 f
960683501(to)X
960693590(a)X
960703653(pointer)X
960713907(to)X
960723996(a)X
96073576 5232(null-terminated)N
960741094(string)X
960751300(that)X
960761444(names)X
960771673(the)X
960781795(weak)X
960791989(name)X
960802187(represented)X
960812581(by)X
960822684(the)X
960830 f
960842833(Dwarf_Weak)X
960851 f
960863336(descriptor,)X
960870 f
960883728(weak)X
960891 f
96090(.)S
960913983(It)X
96092576 5328(returns)N
960930 f
96094852(DW_DLV_ERROR)X
960951 f
960961453(on)X
960971558(error.)X
960981780(It)X
960991854(never)X
961002058(returns)X
961010 f
961022334(DW_DLV_NO_ENTRY)X
961031 f
96104(.)S
961053119(On)X
961063242(a)X
961073303(successful)X
961083658(return)X
961093876(from)X
96110576 5424(this)N
96111746(function,)X
961121088(the)X
961131241(string)X
961141478(should)X
961151746(be)X
961161877(free'd)X
961172125(using)X
961180 f
961192381(dwarf_dealloc\(\))X
961201 f
96121(,)S
961223176(with)X
961233372(the)X
961243524(allocation)X
961253894(type)X
961260 f
96127576 5520(DW_DLA_STRING)N
961281 f
961291220(when)X
961301414(no)X
961311514(longer)X
961321739(of)X
961331826(interest.)X
96134576 6164(rev)N
96135699(1.52,)X
96136879(02)X
96137979(Oct)X
961381115(2003)X
961392217(-)X
961402264(30)X
961412364(-)X
96142
9614331 p
96144%%Page: 31 31
961450(Courier)xf 0 f
9614610 s 0 xH 0 xS 0 f
961471 f
961482217 384(-)N
961492264(31)X
961502364(-)X
961510 f
96152576 768(int)N
96153768(dwarf_weak_die_offset\()X
96154960 864(Dwarf_Weak)N
961551488(weak,)X
96156960 960(Dwarf_Off)N
961571488(*return_offset,)X
96158960 1056(Dwarf_Error)N
961591536(*error\))X
961601 f
96161576 1200(The)N
96162732(function)X
961630 f
961641058(dwarf_weak_die_offset\(\))X
961651 f
961662193(returns)X
961670 f
961682475(DW_DLV_OK)X
961691 f
961702938(and)X
961713086(sets)X
961720 f
961733266(*return_offset)X
961741 f
961753970(to)X
96176576 1296(the)N
96177699(offset)X
96178907(in)X
96179994(the)X
961801117(section)X
961811369(containing)X
961821732(DIE's,)X
961831969(i.e.)X
961842092(.debug_info,)X
961852522(of)X
961862614(the)X
961872737(DIE)X
961882896(representing)X
961893318(the)X
961903441(weak)X
961913636(name)X
961923835(that)X
961933979(is)X
96194576 1392(described)N
96195924(by)X
961961044(the)X
961970 f
961981210(Dwarf_Weak)X
961991 f
962001730(descriptor,)X
962010 f
962022139(weak)X
962031 f
96204(.)S
962052411(It)X
962062500(returns)X
962070 f
962082791(DW_DLV_ERROR)X
962091 f
962103407(on)X
962113527(error.)X
962123764(It)X
962133853(never)X
96214576 1488(returns)N
962150 f
96216847(DW_DLV_NO_ENTRY)X
962171 f
96218(.)S
962193 f
962209 s
96221576 1728(5.7.1.3)N
96222810(dwarf_weak_cu_offset\(\))X
962230 f
9622410 s
96225576 1872(int)N
96226768(dwarf_weak_cu_offset\()X
96227960 1968(Dwarf_Weak)N
962281488(weak,)X
96229960 2064(Dwarf_Off)N
962301488(*return_offset,)X
96231960 2160(Dwarf_Error)N
962321536(*error\))X
962331 f
96234576 2304(The)N
96235723(function)X
962360 f
962371040(dwarf_weak_cu_offset\(\))X
962381 f
962392118(returns)X
962400 f
962412391(DW_DLV_OK)X
962421 f
962432845(and)X
962442983(sets)X
962450 f
962463154(*return_offset)X
962471 f
962483849(to)X
962493934(the)X
96250576 2400(offset)N
96251784(in)X
96252871(the)X
96253994(section)X
962541246(containing)X
962551609(DIE's,)X
962561846(i.e.)X
962571969(.debug_info,)X
962582399(of)X
962592491(the)X
962602614(compilation-unit)X
962613171(header)X
962623410(of)X
962633501(the)X
962643623(compilation-)X
96265576 2496(unit)N
96266748(that)X
96267917(contains)X
962681233(the)X
962691380(weak)X
962701599(name)X
962711822(described)X
962722179(by)X
962732308(the)X
962740 f
962752483(Dwarf_Weak)X
962761 f
962773012(descriptor,)X
962780 f
962793430(weak)X
962801 f
96281(.)S
962823711(It)X
962833809(returns)X
962840 f
96285576 2592(DW_DLV_ERROR)N
962861 f
962871172(on)X
962881272(error.)X
962891489(It)X
962901558(never)X
962911757(returns)X
962920 f
962932028(DW_DLV_NO_ENTRY)X
962941 f
96295(.)S
962963 f
962979 s
96298576 2832(5.7.1.4)N
96299810(dwarf_weak_name_offsets\(\))X
963000 f
9630110 s
96302576 2976(int)N
96303768(dwarf_weak_name_offsets\()X
96304960 3072(Dwarf_Weak)N
963051488(weak,)X
96306960 3168(char)N
963071200(**)X
963081392(weak_name,)X
96309960 3264(Dwarf_Off)N
963101440(*die_offset,)X
96311960 3360(Dwarf_Off)N
963121440(*cu_offset,)X
96313960 3456(Dwarf_Error)N
963141536(*error\))X
963151 f
96316576 3600(The)N
96317735(function)X
963180 f
963191064(dwarf_weak_name_offsets\(\))X
963201 f
963212298(returns)X
963220 f
963232583(DW_DLV_OK)X
963241 f
963253050(and)X
963263201(sets)X
963270 f
963283384(*weak_name)X
963291 f
963303899(to)X
963313996(a)X
96332576 3696(pointer)N
96333828(to)X
96334915(a)X
96335976(null-terminated)X
963361495(string)X
963371702(that)X
963381847(gives)X
963392041(the)X
963402163(name)X
963412361(of)X
963422452(the)X
963432574(weak)X
963442768(name)X
963452966(described)X
963463298(by)X
963473402(the)X
963480 f
963493552(Dwarf_Weak)X
963501 f
96351576 3792(descriptor)N
963520 f
96353955(weak)X
963541 f
96355(.)S
963561217(It)X
963571296(also)X
963581455(returns)X
963591708(in)X
963601800(the)X
963611928(locations)X
963622247(pointed)X
963632517(to)X
963642609(by)X
963650 f
963662747(die_offset)X
963671 f
96368(,)S
963693277(and)X
963700 f
963713451(cu_offset)X
963721 f
96373(,)S
963743934(the)X
96375576 3888(offsets)N
96376819(of)X
96377915(the)X
963781042(DIE)X
963791205(representing)X
963801631(the)X
963811758(weakname,)X
963822150(and)X
963832294(the)X
963842420(DIE)X
963852582(representing)X
963863007(the)X
963873133(compilation-unit)X
963883694(containing)X
96389576 3984(the)N
96390770(weakname,)X
963911230(respectively.)X
963921754(It)X
963931899(returns)X
963940 f
963952246(DW_DLV_ERROR)X
963961 f
963972918(on)X
963983094(error.)X
963993387(It)X
964003533(never)X
964013809(returns)X
964020 f
96403576 4080(DW_DLV_NO_ENTRY)N
964041 f
96405(.)S
964061377(On)X
964071516(a)X
964081593(successful)X
964091964(return)X
964102197(from)X
964110 f
964122422(dwarf_weak_name_offsets\(\))X
964131 f
964143662(the)X
964153800(storage)X
96416576 4176(pointed)N
96417857(to)X
96418960(by)X
964190 f
964201109(weak_name)X
964211 f
964221582(should)X
964231836(be)X
964241953(free'd)X
964252187(using)X
964260 f
964272430(dwarf_dealloc\(\))X
964281 f
96429(,)S
964303212(with)X
964313396(the)X
964323536(allocation)X
964333894(type)X
964340 f
96435576 4272(DW_DLA_STRING)N
964361 f
964371220(when)X
964381414(no)X
964391514(longer)X
964401739(of)X
964411826(interest.)X
964423 f
9644311 s
96444576 4512(5.8)N
96445730(Static)X
96446967(Function)X
964471327(Names)X
964481602(Operations)X
964491 f
9645010 s
96451576 4656(This)N
96452738(section)X
96453985(is)X
964541058(SGI)X
964551207(specific)X
964561477(and)X
964571613(is)X
964581686(not)X
964591808(part)X
964601953(of)X
964612040(standard)X
964622332(DWARF)X
964632641(version)X
964642897(2.)X
96465576 4800(These)N
96466832(function)X
964671163(operate)X
964681464(on)X
964691608(the)X
964701770(.debug_funcnames)X
964712438(section)X
964722729(of)X
964732860(the)X
964743022(debugging)X
964753424(information.)X
964763907(The)X
96477576 4896(.debug_funcnames)N
964781209(section)X
964791465(contains)X
964801761(the)X
964811888(names)X
964822122(of)X
964832218(static)X
964842416(functions)X
964852742(defined)X
964863011(in)X
964873101(the)X
964883227(object,)X
964893471(the)X
964903597(offsets)X
964913839(of)X
964923934(the)X
964930 f
96494576 4992(DIE)N
964951 f
96496(s)S
96497787(that)X
96498943(represent)X
964991274(the)X
965001408(definitions)X
965011787(of)X
965021891(the)X
965032026(corresponding)X
965042522(functions,)X
965052877(and)X
965063030(the)X
965073165(offsets)X
965083416(of)X
965093520(the)X
965103655(start)X
965113830(of)X
965123934(the)X
96513576 5088(compilation-units)N
965141160(that)X
965151300(contain)X
965161556(the)X
965171674(definitions)X
965182036(of)X
965192123(those)X
965202312(functions.)X
965213 f
96522576 5328(5.8.1)N
96523776(Debugger)X
965241130(Interface)X
965251463(Operations)X
965269 s
96527576 5616(5.8.1.1)N
96528810(dwarf_get_funcs\(\))X
965291 f
9653010 s
96531576 6164(rev)N
96532699(1.52,)X
96533879(02)X
96534979(Oct)X
965351115(2003)X
965362217(-)X
965372264(31)X
965382364(-)X
96539
9654032 p
96541%%Page: 32 32
965420(Courier)xf 0 f
9654310 s 0 xH 0 xS 0 f
965441 f
965452217 384(-)N
965462264(32)X
965472364(-)X
965480 f
96549576 768(int)N
96550768(dwarf_get_funcs\()X
96551960 864(Dwarf_Debug)N
965521536(dbg,)X
96553960 960(Dwarf_Func)N
965541488(**funcs,)X
96555960 1056(Dwarf_Signed)N
965561584(*func_count,)X
96557960 1152(Dwarf_Error)N
965581536(*error\))X
965591 f
96560576 1296(The)N
96561731(function)X
965620 f
965631057(dwarf_get_funcs\(\))X
965641 f
965651904(returns)X
965660 f
965672186(DW_DLV_OK)X
965681 f
965692649(and)X
965702796(sets)X
965710 f
965722975(*func_count)X
965731 f
965743534(to)X
965753627(the)X
965763756(count)X
965773965(of)X
96578576 1392(static)N
96579766(function)X
965801054(names)X
965811280(represented)X
965821672(in)X
965831755(the)X
965841874(section)X
965852122(containing)X
965862480(static)X
965872669(function)X
965882956(names,)X
965893201(i.e.)X
965903319(.debug_funcnames.)X
965913983(It)X
96592576 1488(also)N
96593742(stores,)X
96594986(at)X
965950 f
965961109(*funcs)X
965971 f
96598(,)S
965991454(a)X
966001527(pointer)X
966011791(to)X
966021890(a)X
966031963(list)X
966042097(of)X
966050 f
966062229(Dwarf_Func)X
966071 f
966082746(descriptors,)X
966093155(one)X
966103308(for)X
966113439(each)X
966123624(of)X
966133728(the)X
966143863(static)X
96615576 1584(functions)N
96616930(in)X
966171047(the)X
966181200(.debug_funcnames)X
966191859(section.)X
966202181(It)X
966212285(returns)X
966220 f
966232591(DW_DLV_NOCOUNT)X
966241 f
966253318(on)X
966263453(error.)X
966273705(It)X
966283809(returns)X
966290 f
96630576 1680(DW_DLV_NO_ENTRY)N
966311 f
966321326(if)X
966331405(the)X
966341533(.debug_funcnames)X
966352167(section)X
966362424(does)X
966372601(not)X
966382733(exist.)X
966392954(On)X
966403082(a)X
966413148(successful)X
966423508(return)X
966433730(from)X
966443917(this)X
96645576 1776(function,)N
96646891(the)X
966470 f
966481045(Dwarf_Func)X
966491 f
966501553(descriptors)X
966511933(should)X
966522174(be)X
966532278(individually)X
966542692(free'd)X
966552913(using)X
966560 f
966573142(dwarf_dealloc\(\))X
966581 f
966593890(with)X
96660576 1872(the)N
96661697(allocation)X
966621036(type)X
966630 f
966641225(DW_DLA_FUNC)X
966651 f
96666(,)S
966671797(followed)X
966682106(by)X
966692210(the)X
966702332(deallocation)X
966712748(of)X
966722839(the)X
966732961(list)X
966743082(itself)X
966753266(with)X
966763432(the)X
966773554(allocation)X
966783894(type)X
966790 f
96680576 1968(DW_DLA_LIST)N
966811 f
966821124(when)X
966831318(the)X
966841436(descriptors)X
966851808(are)X
966861927(no)X
966872027(longer)X
966882252(of)X
966892339(interest.)X
966900 f
96691736 2208(Dwarf_Signed)N
966921360(cnt;)X
96693736 2304(Dwarf_Func)N
966941264(*funcs;)X
96695736 2400(int)N
96696928(fres;)X
96697736 2592(if)N
96698880(\(\(fres)X
966991216(=)X
967001312(dwarf_get_funcs\(dbg,)X
967012320(&funcs,)X
967022704(&error\)\))X
967033136(==)X
967043280(DW_DLV_OK\))X
967053808({)X
967061120 2784(for)N
967071312(\(i)X
967081456(=)X
967091552(0;)X
967101696(i)X
967111792(<)X
967121888(cnt;)X
967132128(++i\))X
967142368({)X
967151504 2880(/*)N
967161648(use)X
967171840(funcs[i])X
967182272(*/)X
967191504 2976(dwarf_dealloc\(dbg,)N
967202416(funcs[i],)X
967212896(DW_DLA_FUNC\);)X
967221120 3072(})N
967231120 3168(dwarf_dealloc\(dbg,)N
967242032(funcs,)X
967252368(DW_DLA_LIST\);)X
96726736 3264(})N
967273 f
967289 s
96729576 3552(5.8.1.2)N
96730810(dwarf_funcname\(\))X
967310 f
9673210 s
96733576 3696(int)N
96734768(dwarf_funcname\()X
96735960 3792(Dwarf_Func)N
967361488(func,)X
96737960 3888(char)N
967381200(**)X
967391488(return_name,)X
96740960 3984(Dwarf_Error)N
967411536(*error\))X
967421 f
96743576 4128(The)N
96744727(function)X
967450 f
967461048(dwarf_funcname\(\))X
967471 f
967481843(returns)X
967490 f
967502121(DW_DLV_OK)X
967511 f
967522580(and)X
967532723(sets)X
967540 f
967552898(*return_name)X
967561 f
967573501(to)X
967583590(a)X
967593653(pointer)X
967603907(to)X
967613996(a)X
96762576 4224(null-terminated)N
967631094(string)X
967641300(that)X
967651444(names)X
967661673(the)X
967671795(static)X
967681988(function)X
967692279(represented)X
967702673(by)X
967712776(the)X
967720 f
967732925(Dwarf_Func)X
967741 f
967753428(descriptor,)X
967760 f
967773820(func)X
967781 f
96779(.)S
96780576 4320(It)N
96781659(returns)X
967820 f
96783944(DW_DLV_ERROR)X
967841 f
967851554(on)X
967861668(error.)X
967871899(It)X
967881982(never)X
967892195(returns)X
967900 f
967912480(DW_DLV_NO_ENTRY)X
967921 f
96793(.)S
967943274(On)X
967953406(a)X
967963476(successful)X
967973840(return)X
96798576 4416(from)N
96799771(this)X
96800925(function,)X
968011251(the)X
968021388(string)X
968031609(should)X
968041861(be)X
968051976(free'd)X
968062207(using)X
968070 f
968082446(dwarf_dealloc\(\))X
968091 f
96810(,)S
968113224(with)X
968123404(the)X
968133540(allocation)X
968143894(type)X
968150 f
96816576 4512(DW_DLA_STRING)N
968171 f
968181220(when)X
968191414(no)X
968201514(longer)X
968211739(of)X
968221826(interest.)X
968233 f
968249 s
96825576 4752(5.8.1.3)N
96826810(dwarf_func_die_offset\(\))X
968270 f
9682810 s
96829576 4896(int)N
96830768(dwarf_func_die_offset\()X
96831960 4992(Dwarf_Func)N
968321488(func,)X
96833960 5088(Dwarf_Off)N
968341488(*return_offset,)X
96835960 5184(Dwarf_Error)N
968361536(*error\))X
968371 f
96838576 5328(The)N
96839729(function)X
968400 f
968411053(dwarf_func_die_offset\(\))X
968421 f
96843(,)S
968442206(returns)X
968450 f
968462486(DW_DLV_OK)X
968471 f
968482947(and)X
968493092(sets)X
968500 f
968513269(*return_offset)X
968521 f
968533970(to)X
96854576 5424(the)N
96855699(offset)X
96856906(in)X
96857992(the)X
968581114(section)X
968591365(containing)X
968601727(DIE's,)X
968611963(i.e.)X
968622085(.debug_info,)X
968632514(of)X
968642605(the)X
968652727(DIE)X
968662885(representing)X
968673306(the)X
968683428(static)X
968693621(function)X
968703912(that)X
96871576 5520(is)N
96872661(described)X
968731001(by)X
968741114(the)X
968750 f
968761273(Dwarf_Func)X
968771 f
968781786(descriptor,)X
968790 f
968802188(func)X
968811 f
96882(.)S
968832453(It)X
968842535(returns)X
968850 f
968862819(DW_DLV_ERROR)X
968871 f
968883428(on)X
968893541(error.)X
968903771(It)X
968913853(never)X
96892576 5616(returns)N
968930 f
96894847(DW_DLV_NO_ENTRY)X
968951 f
96896(.)S
96897576 6164(rev)N
96898699(1.52,)X
96899879(02)X
96900979(Oct)X
969011115(2003)X
969022217(-)X
969032264(32)X
969042364(-)X
96905
9690633 p
96907%%Page: 33 33
969080(Courier)xf 0 f
9690910 s 0 xH 0 xS 0 f
969101 f
969112217 384(-)N
969122264(33)X
969132364(-)X
969143 f
969159 s
96916576 768(5.8.1.4)N
96917810(dwarf_func_cu_offset\(\))X
969180 f
9691910 s
96920576 912(int)N
96921768(dwarf_func_cu_offset\()X
96922960 1008(Dwarf_Func)N
969231488(func,)X
96924960 1104(Dwarf_Off)N
969251488(*return_offset,)X
96926960 1200(Dwarf_Error)N
969271536(*error\))X
969281 f
96929576 1344(The)N
96930723(function)X
969310 f
969321040(dwarf_func_cu_offset\(\))X
969331 f
969342118(returns)X
969350 f
969362391(DW_DLV_OK)X
969371 f
969382845(and)X
969392983(sets)X
969400 f
969413154(*return_offset)X
969421 f
969433849(to)X
969443934(the)X
96945576 1440(offset)N
96946784(in)X
96947871(the)X
96948994(section)X
969491246(containing)X
969501609(DIE's,)X
969511846(i.e.)X
969521969(.debug_info,)X
969532399(of)X
969542491(the)X
969552614(compilation-unit)X
969563171(header)X
969573410(of)X
969583501(the)X
969593623(compilation-)X
96960576 1536(unit)N
96961741(that)X
96962902(contains)X
969631211(the)X
969641351(static)X
969651562(function)X
969661871(described)X
969672221(by)X
969682343(the)X
969690 f
969702511(Dwarf_Func)X
969711 f
969723033(descriptor,)X
969730 f
969743444(func)X
969751 f
96976(.)S
969773718(It)X
969783809(returns)X
969790 f
96980576 1632(DW_DLV_ERROR)N
969811 f
969821172(on)X
969831272(error.)X
969841489(It)X
969851558(never)X
969861757(returns)X
969870 f
969882028(DW_DLV_NO_ENTRY)X
969891 f
96990(.)S
969913 f
969929 s
96993576 1872(5.8.1.5)N
96994810(dwarf_func_name_offsets\(\))X
969950 f
9699610 s
96997576 2016(int)N
96998768(dwarf_func_name_offsets\()X
96999960 2112(Dwarf_Func)N
970001488(func,)X
97001960 2208(char)N
970021392(**func_name,)X
97003960 2304(Dwarf_Off)N
970041440(*die_offset,)X
97005960 2400(Dwarf_Off)N
970061440(*cu_offset,)X
97007960 2496(Dwarf_Error)N
970081536(*error\))X
970091 f
97010576 2640(The)N
97011735(function)X
970120 f
970131064(dwarf_func_name_offsets\(\))X
970141 f
970152298(returns)X
970160 f
970172583(DW_DLV_OK)X
970181 f
970193050(and)X
970203201(sets)X
970210 f
970223384(*func_name)X
970231 f
970243899(to)X
970253996(a)X
97026576 2736(pointer)N
97027857(to)X
97028973(a)X
970291063(null-terminated)X
970301611(string)X
970311847(that)X
970322021(gives)X
970332244(the)X
970342396(name)X
970352624(of)X
970362745(the)X
970372897(static)X
970383120(function)X
970393440(described)X
970403801(by)X
970413934(the)X
970420 f
97043576 2832(Dwarf_Func)N
970441 f
970451095(descriptor)X
970460 f
970471484(func)X
970481 f
97049(.)S
970501756(It)X
970511845(also)X
970522014(returns)X
970532277(in)X
970542379(the)X
970552517(locations)X
970562846(pointed)X
970573126(to)X
970583228(by)X
970590 f
970603376(die_offset)X
970611 f
97062(,)S
970633916(and)X
970640 f
97065576 2928(cu_offset)N
970661 f
97067(,)S
970681071(the)X
970691212(offsets)X
970701469(of)X
970711579(the)X
970721720(DIE)X
970731897(representing)X
970742337(the)X
970752478(static)X
970762690(function,)X
970773020(and)X
970783179(the)X
970793319(DIE)X
970803495(representing)X
970813934(the)X
97082576 3024(compilation-unit)N
970831145(containing)X
970841519(the)X
970851653(static)X
970861858(function,)X
970872181(respectively.)X
970882645(It)X
970892731(returns)X
970900 f
970913019(DW_DLV_ERROR)X
970921 f
970933632(on)X
970943749(error.)X
970953983(It)X
97096576 3120(never)N
97097784(returns)X
970980 f
970991064(DW_DLV_NO_ENTRY)X
971001 f
97101(.)S
971021852(On)X
971031978(a)X
971042042(successful)X
971052400(return)X
971062620(from)X
971070 f
971082832(dwarf_func_name_offsets\(\))X
971091 f
97110576 3216(the)N
97111695(storage)X
97112949(pointed)X
971131211(to)X
971141295(by)X
971150 f
971161445(func_name)X
971171 f
971181899(should)X
971192134(be)X
971202232(free'd)X
971212447(using)X
971220 f
971232670(dwarf_dealloc\(\))X
971241 f
97125(,)S
971263432(with)X
971273596(the)X
971283716(allocation)X
97129576 3312(type)N
971300 f
97131762(DW_DLA_STRING)X
971321 f
971331406(when)X
971341600(no)X
971351700(longer)X
971361925(of)X
971372012(interest.)X
971383 f
9713911 s
97140576 3552(5.9)N
97141730(User)X
97142927(Defined)X
971431242(Type)X
971441455(Names)X
971451730(Operations)X
971461 f
9714710 s
97148576 3696(This)N
97149738(section)X
97150985(is)X
971511058(SGI)X
971521207(specific)X
971531477(and)X
971541613(is)X
971551686(not)X
971561808(part)X
971571953(of)X
971582040(standard)X
971592332(DWARF)X
971602641(version)X
971612897(2.)X
97162576 3840(These)N
97163829(functions)X
971641188(operate)X
971651486(on)X
971661628(the)X
971671788(.debug_typenames)X
971682449(section)X
971692738(of)X
971702867(the)X
971713027(debugging)X
971723427(information.)X
971733907(The)X
97174576 3936(.debug_typenames)N
971751196(section)X
971761444(contains)X
971771732(the)X
971781851(names)X
971792077(of)X
971802164(file-scope)X
971812501(user-defined)X
971822923(types,)X
971833132(the)X
971843250(offsets)X
971853484(of)X
971863571(the)X
971870 f
971883717(DIE)X
971891 f
97190(s)S
971913912(that)X
97192576 4032(represent)N
97193893(the)X
971941013(definitions)X
971951378(of)X
971961468(those)X
971971660(types,)X
971981872(and)X
971992011(the)X
972002132(offsets)X
972012369(of)X
972022459(the)X
972032580(compilation-units)X
972043167(that)X
972053310(contain)X
972063569(the)X
972073690(definitions)X
97208576 4128(of)N
97209663(those)X
97210852(types.)X
972113 f
97212576 4368(5.9.1)N
97213776(Debugger)X
972141130(Interface)X
972151463(Operations)X
972169 s
97217576 4656(5.9.1.1)N
97218810(dwarf_get_types\(\))X
972190 f
9722010 s
97221576 4800(int)N
97222768(dwarf_get_types\()X
97223960 4896(Dwarf_Debug)N
972241536(dbg,)X
97225960 4992(Dwarf_Type)N
972261488(**types,)X
97227960 5088(Dwarf_Signed)N
972281584(*typecount,)X
97229960 5184(Dwarf_Error)N
972301536(*error\))X
972311 f
97232576 5328(The)N
97233736(function)X
972340 f
972351066(dwarf_get_types\(\))X
972361 f
972371917(returns)X
972380 f
972392203(DW_DLV_OK)X
972401 f
972412670(and)X
972422821(sets)X
972430 f
972443004(*typecount)X
972451 f
972463519(to)X
972473617(the)X
972483751(count)X
972493965(of)X
97250576 5424(user-defined)N
972511047(type)X
972521254(names)X
972531528(represented)X
972541968(in)X
972552098(the)X
972562264(section)X
972572559(containing)X
972582965(user-defined)X
972593435(type)X
972603641(names,)X
972613934(i.e.)X
97262576 5520(.debug_typenames.)N
972631244(It)X
972641322(also)X
972651480(stores)X
972661696(at)X
972670 f
972681811(*types)X
972691 f
97270(,)S
972712148(a)X
972722213(pointer)X
972732470(to)X
972742562(a)X
972752628(list)X
972762755(of)X
972770 f
972782880(Dwarf_Type)X
972791 f
972803390(descriptors,)X
972813792(one)X
972823938(for)X
97283576 5616(each)N
97284749(of)X
97285841(the)X
97286964(user-defined)X
972871391(type)X
972881554(names)X
972891784(in)X
972901871(the)X
972911994(.debug_typenames)X
972922617(section.)X
972932908(It)X
972942981(returns)X
972950 f
972963256(DW_DLV_NOCOUNT)X
972971 f
972983952(on)X
97299576 5712(error.)N
97300800(It)X
97301876(returns)X
973020 f
973031155(DW_DLV_NO_ENTRY)X
973041 f
973051903(if)X
973061980(the)X
973072106(.debug_typenames)X
973082733(section)X
973092988(does)X
973103163(not)X
973113293(exist.)X
973123512(On)X
973133638(a)X
973143702(successful)X
97315576 5808(return)N
97316833(from)X
973171054(this)X
973181234(function,)X
973191585(the)X
973200 f
973211775(Dwarf_Type)X
973221 f
973232319(descriptors)X
973242735(should)X
973253012(be)X
973263152(individually)X
973273602(free'd)X
973283859(using)X
97329576 6164(rev)N
97330699(1.52,)X
97331879(02)X
97332979(Oct)X
973331115(2003)X
973342217(-)X
973352264(33)X
973362364(-)X
97337
9733834 p
97339%%Page: 34 34
973400(Courier)xf 0 f
9734110 s 0 xH 0 xS 0 f
973421 f
973432217 384(-)N
973442264(34)X
973452364(-)X
973460 f
97347576 768(dwarf_dealloc\(\))N
973481 f
973491319(with)X
973501484(the)X
973511605(allocation)X
973521944(type)X
973530 f
973542133(DW_DLA_TYPENAME)X
973551 f
97356(,)S
973572896(followed)X
973583204(by)X
973593307(the)X
973603428(deallocation)X
973613843(of)X
973623934(the)X
97363576 864(list)N
97364693(itself)X
97365873(with)X
973661035(the)X
973671153(allocation)X
973681489(type)X
973690 f
973701675(DW_DLA_LIST)X
973711 f
973722223(when)X
973732417(the)X
973742535(descriptors)X
973752907(are)X
973763026(no)X
973773126(longer)X
973783351(of)X
973793438(interest.)X
973800 f
97381736 1104(Dwarf_Signed)N
973821360(cnt;)X
97383736 1200(Dwarf_Type)N
973841264(*types;)X
97385736 1296(int)N
97386928(res;)X
97387736 1488(if)N
97388880(\(\(res)X
973891168(=)X
973901264(dwarf_get_types\(dbg,)X
973912272(&types,&cnt,)X
973922896(&error\)\))X
973933328(==)X
973943472(DW_DLV_OK\))X
973954000({)X
973961120 1680(for)N
973971312(\(i)X
973981456(=)X
973991552(0;)X
974001696(i)X
974011792(<)X
974021888(cnt;)X
974032128(++i\))X
974042368({)X
974051504 1776(/*)N
974061648(use)X
974071840(types[i])X
974082272(*/)X
974091504 1872(dwarf_dealloc\(dbg,)N
974102416(types[i],)X
974112896(DW_DLA_TYPENAME\);)X
974121120 1968(})N
974131120 2064(dwarf_dealloc\(dbg,)N
974142032(types,)X
974152368(DW_DLA_LIST\);)X
97416736 2160(})N
974173 f
974189 s
97419576 2448(5.9.1.2)N
97420810(dwarf_typename\(\))X
974210 f
9742210 s
97423576 2592(int)N
97424768(dwarf_typename\()X
97425960 2688(Dwarf_Type)N
974261584(type,)X
97427960 2784(char)N
974281488(**return_name,)X
97429960 2880(Dwarf_Error)N
974301536(*error\))X
974311 f
97432576 3024(The)N
97433727(function)X
974340 f
974351048(dwarf_typename\(\))X
974361 f
974371843(returns)X
974380 f
974392121(DW_DLV_OK)X
974401 f
974412580(and)X
974422723(sets)X
974430 f
974442898(*return_name)X
974451 f
974463501(to)X
974473590(a)X
974483653(pointer)X
974493907(to)X
974503996(a)X
97451576 3120(null-terminated)N
974521109(string)X
974531329(that)X
974541487(names)X
974551730(the)X
974561866(user-defined)X
974572306(type)X
974582482(represented)X
974592891(by)X
974603009(the)X
974610 f
974623173(Dwarf_Type)X
974631 f
974643691(descriptor,)X
974650 f
97466576 3216(type)N
974671 f
97468(.)S
97469838(It)X
97470917(returns)X
974710 f
974721198(DW_DLV_ERROR)X
974731 f
974741804(on)X
974751915(error.)X
974762143(It)X
974772223(never)X
974782433(returns)X
974790 f
974802715(DW_DLV_NO_ENTRY)X
974811 f
97482(.)S
974833506(On)X
974843635(a)X
974853702(successful)X
97486576 3312(return)N
97487791(from)X
97488969(this)X
974891106(function,)X
974901415(the)X
974911535(string)X
974921739(should)X
974931974(be)X
974942072(free'd)X
974952287(using)X
974960 f
974972510(dwarf_dealloc\(\))X
974981 f
97499(,)S
975003272(with)X
975013436(the)X
975023556(allocation)X
975033894(type)X
975040 f
97505576 3408(DW_DLA_STRING)N
975061 f
975071220(when)X
975081414(no)X
975091514(longer)X
975101739(of)X
975111826(interest.)X
975123 f
975139 s
97514576 3648(5.9.1.3)N
97515810(dwarf_type_die_offset\(\))X
975160 f
9751710 s
97518576 3792(int)N
97519768(dwarf_type_die_offset\()X
97520960 3888(Dwarf_Type)N
975211488(type,)X
97522960 3984(Dwarf_Off)N
975231488(*return_offset,)X
97524960 4080(Dwarf_Error)N
975251536(*error\))X
975261 f
97527576 4224(The)N
97528732(function)X
975290 f
975301058(dwarf_type_die_offset\(\))X
975311 f
975322193(returns)X
975330 f
975342475(DW_DLV_OK)X
975351 f
975362938(and)X
975373086(sets)X
975380 f
975393266(*return_offset)X
975401 f
975413970(to)X
97542576 4320(the)N
97543701(offset)X
97544911(in)X
975451000(the)X
975461125(section)X
975471379(containing)X
975481744(DIE's,)X
975491983(i.e.)X
975502108(.debug_info,)X
975512540(of)X
975522634(the)X
975532759(DIE)X
975542919(representing)X
975553342(the)X
975563466(user-defined)X
975573894(type)X
97558576 4416(that)N
97559717(is)X
97560792(described)X
975611122(by)X
975621224(the)X
975630 f
975641372(Dwarf_Type)X
975651 f
975661874(descriptor,)X
975670 f
975682265(type)X
975691 f
97570(.)S
975712519(It)X
975722590(returns)X
975730 f
975742863(DW_DLV_ERROR)X
975751 f
975763461(on)X
975773563(error.)X
975783782(It)X
975793853(never)X
97580576 4512(returns)N
975810 f
97582847(DW_DLV_NO_ENTRY)X
975831 f
97584(.)S
975853 f
975869 s
97587576 4752(5.9.1.4)N
97588810(dwarf_type_cu_offset\(\))X
975890 f
9759010 s
97591576 4896(int)N
97592768(dwarf_type_cu_offset\()X
97593960 4992(Dwarf_Type)N
975941488(type,)X
97595960 5088(Dwarf_Off)N
975961488(*return_offset,)X
97597960 5184(Dwarf_Error)N
975981536(*error\))X
975991 f
97600576 5328(The)N
97601723(function)X
976020 f
976031040(dwarf_type_cu_offset\(\))X
976041 f
976052118(returns)X
976060 f
976072391(DW_DLV_OK)X
976081 f
976092845(and)X
976102983(sets)X
976110 f
976123154(*return_offset)X
976131 f
976143849(to)X
976153934(the)X
97616576 5424(offset)N
97617784(in)X
97618871(the)X
97619994(section)X
976201246(containing)X
976211609(DIE's,)X
976221846(i.e.)X
976231969(.debug_info,)X
976242399(of)X
976252491(the)X
976262614(compilation-unit)X
976273171(header)X
976283410(of)X
976293501(the)X
976303623(compilation-)X
97631576 5520(unit)N
97632733(that)X
97633886(contains)X
976341187(the)X
976351319(user-defined)X
976361755(type)X
976371927(described)X
976382269(by)X
976392383(the)X
976400 f
976412543(Dwarf_Type)X
976421 f
976433057(descriptor,)X
976440 f
976453460(type)X
976461 f
97647(.)S
976483726(It)X
976493809(returns)X
976500 f
97651576 5616(DW_DLV_ERROR)N
976521 f
976531172(on)X
976541272(error.)X
976551489(It)X
976561558(never)X
976571757(returns)X
976580 f
976592028(DW_DLV_NO_ENTRY)X
976601 f
97661(.)S
97662576 6164(rev)N
97663699(1.52,)X
97664879(02)X
97665979(Oct)X
976661115(2003)X
976672217(-)X
976682264(34)X
976692364(-)X
97670
9767135 p
97672%%Page: 35 35
976730(Courier)xf 0 f
9767410 s 0 xH 0 xS 0 f
976751 f
976762217 384(-)N
976772264(35)X
976782364(-)X
976793 f
976809 s
97681576 768(5.9.1.5)N
97682810(dwarf_type_name_offsets\(\))X
976830 f
9768410 s
97685576 912(int)N
97686768(dwarf_type_name_offsets\()X
97687960 1008(Dwarf_Type)N
976881584(type,)X
97689960 1104(char)N
976901440(**)X
976911584(returned_name,)X
97692960 1200(Dwarf_Off)N
976931440(*)X
976941584(die_offset,)X
97695960 1296(Dwarf_Off)N
976961440(*)X
976971584(cu_offset,)X
97698960 1392(Dwarf_Error)N
976991536(*error\))X
977001 f
97701576 1536(The)N
97702732(function)X
977030 f
977041058(dwarf_type_name_offsets\(\))X
977051 f
977062289(returns)X
977070 f
977082571(DW_DLV_OK)X
977091 f
977103034(and)X
977113181(sets)X
977120 f
977133360(*returned_name)X
977141 f
97715576 1632(to)N
97716674(a)X
97717746(pointer)X
977181009(to)X
977191107(a)X
977201179(null-terminated)X
977211709(string)X
977221927(that)X
977232083(gives)X
977242288(the)X
977252422(name)X
977262631(of)X
977272733(the)X
977282866(user-defined)X
977293303(type)X
977303476(described)X
977313819(by)X
977323934(the)X
977330 f
97734576 1728(Dwarf_Type)N
977351 f
977361095(descriptor)X
977370 f
977381484(type)X
977391 f
97740(.)S
977411756(It)X
977421845(also)X
977432014(returns)X
977442277(in)X
977452379(the)X
977462517(locations)X
977472846(pointed)X
977483126(to)X
977493228(by)X
977500 f
977513376(die_offset)X
977521 f
97753(,)S
977543916(and)X
977550 f
97756576 1824(cu_offset)N
977571 f
97758(,)S
977591064(the)X
977601198(offsets)X
977611448(of)X
977621551(the)X
977631685(DIE)X
977641854(representing)X
977652286(the)X
977662419(user-defined)X
977672856(type,)X
977683049(and)X
977693200(the)X
977703333(DIE)X
977713502(representing)X
977723934(the)X
97773576 1920(compilation-unit)N
977741136(containing)X
977751501(the)X
977761626(user-defined)X
977772055(type,)X
977782240(respectively.)X
977792695(It)X
977802771(returns)X
977810 f
977823049(DW_DLV_ERROR)X
977831 f
977843652(on)X
977853759(error.)X
977863983(It)X
97787576 2016(never)N
97788784(returns)X
977890 f
977901064(DW_DLV_NO_ENTRY)X
977911 f
97792(.)S
977931852(On)X
977941978(a)X
977952042(successful)X
977962400(return)X
977972620(from)X
977980 f
977992832(dwarf_type_name_offsets\(\))X
978001 f
97801576 2112(the)N
97802709(storage)X
97803976(pointed)X
978041251(to)X
978051349(by)X
978060 f
978071493(returned_name)X
978081 f
978092153(should)X
978102402(be)X
978112514(free'd)X
978122743(using)X
978130 f
978142980(dwarf_dealloc\(\))X
978151 f
97816(,)S
978173756(with)X
978183934(the)X
97819576 2208(allocation)N
97820912(type)X
978210 f
978221098(DW_DLA_STRING)X
978231 f
978241742(when)X
978251936(no)X
978262036(longer)X
978272261(of)X
978282348(interest.)X
978293 f
9783011 s
97831576 2544(5.10)N
97832774(User)X
97833971(Defined)X
978341286(Static)X
978351523(Variable)X
978361873(Names)X
978372148(Operations)X
978381 f
9783910 s
97840576 2688(This)N
97841738(section)X
97842985(is)X
978431058(SGI)X
978441207(specific)X
978451477(and)X
978461613(is)X
978471686(not)X
978481808(part)X
978491953(of)X
978502040(standard)X
978512332(DWARF)X
978522641(version)X
978532897(2.)X
97854576 2832(These)N
97855832(functions)X
978561195(operate)X
978571497(on)X
978581642(the)X
978591805(.debug_varnames)X
978602434(section)X
978612726(of)X
978622858(the)X
978633021(debugging)X
978643424(information.)X
978653907(The)X
97866576 2928(.debug_varnames)N
978671171(section)X
978681429(contains)X
978691727(the)X
978701856(names)X
978712092(of)X
978722190(file-scope)X
978732538(static)X
978742738(variables,)X
978753079(the)X
978763208(offsets)X
978773453(of)X
978783551(the)X
978790 f
978803707(DIE)X
978811 f
97882(s)S
978833912(that)X
97884576 3024(represent)N
97885911(the)X
978861049(definitions)X
978871431(of)X
978881538(those)X
978891747(variables,)X
978902097(and)X
978912253(the)X
978922391(offsets)X
978932645(of)X
978942752(the)X
978952891(compilation-units)X
978963496(that)X
978973657(contain)X
978983934(the)X
97899576 3120(definitions)N
97900938(of)X
979011025(those)X
979021214(variables.)X
979033 f
97904576 3408(5.10.1)N
97905816(Debugger)X
979061170(Interface)X
979071503(Operations)X
979089 s
97909576 3696(5.10.1.1)N
97910846(dwarf_get_vars\(\))X
979110 f
9791210 s
97913576 3984(int)N
97914768(dwarf_get_vars\()X
97915960 4080(Dwarf_Debug)N
979161536(dbg,)X
97917960 4176(Dwarf_Var)N
979181440(**vars,)X
97919960 4272(Dwarf_Signed)N
979201584(*var_count,)X
97921960 4368(Dwarf_Error)N
979221536(*error\))X
979231 f
97924576 4512(The)N
97925726(function)X
979260 f
979271046(dwarf_get_vars\(\))X
979281 f
979291839(returns)X
979300 f
979312115(DW_DLV_OK)X
979321 f
979332572(and)X
979342713(sets)X
979350 f
979362886(*var_count)X
979371 f
979383391(to)X
979393478(the)X
979403601(count)X
979413805(of)X
979423898(file-)X
97943576 4608(scope)N
97944796(static)X
979451002(variable)X
979461298(names)X
979471540(represented)X
979481948(in)X
979492047(the)X
979502182(section)X
979512446(containing)X
979522820(file-scope)X
979533173(static)X
979543378(variable)X
979553673(names,)X
979563934(i.e.)X
97957576 4704(.debug_varnames.)N
979581205(It)X
979591279(also)X
979601433(stores,)X
979611665(at)X
979620 f
979631776(*vars)X
979641 f
97965(,)S
979662061(a)X
979672122(pointer)X
979682374(to)X
979692461(a)X
979702522(list)X
979712645(of)X
979720 f
979732766(Dwarf_Var)X
979741 f
979753224(descriptors,)X
979763622(one)X
979773764(for)X
979783884(each)X
97979576 4800(of)N
97980674(the)X
97981803(file-scope)X
979821151(static)X
979831351(variable)X
979841640(names)X
979851875(in)X
979861967(the)X
979872095(.debug_varnames)X
979882689(section.)X
979892986(It)X
979903065(returns)X
979910 f
979923346(DW_DLV_ERROR)X
979931 f
979943952(on)X
97995576 4896(error.)N
97996803(It)X
97997882(returns)X
979980 f
979991163(DW_DLV_NO_ENTRY)X
980001 f
980011913(if)X
980021992(the)X
980032120(.debug_varnames)X
980042715(section)X
980052973(does)X
980063151(not)X
980073284(exist.)X
980083506(On)X
980093635(a)X
980103702(successful)X
98011576 4992(return)N
98012837(from)X
980131062(this)X
980141246(function,)X
980151602(the)X
980160 f
980171797(Dwarf_Var)X
980181 f
980192298(descriptors)X
980202719(should)X
980213000(be)X
980223144(individually)X
980233598(free'd)X
980243859(using)X
980250 f
98026576 5088(dwarf_dealloc\(\))N
980271 f
980281329(with)X
980291504(the)X
980301635(allocation)X
980311984(type)X
980320 f
980332183(DW_DLA_VAR)X
980341 f
98035(,)S
980362716(followed)X
980373034(by)X
980383147(the)X
980393278(deallocation)X
980403703(of)X
980413803(the)X
980423935(list)X
98043576 5184(itself)N
98044756(with)X
98045918(the)X
980461036(allocation)X
980471372(type)X
980480 f
980491558(DW_DLA_LIST)X
980501 f
980512106(when)X
980522300(the)X
980532418(descriptors)X
980542790(are)X
980552909(no)X
980563009(longer)X
980573234(of)X
980583321(interest.)X
98059576 6164(rev)N
98060699(1.52,)X
98061879(02)X
98062979(Oct)X
980631115(2003)X
980642217(-)X
980652264(35)X
980662364(-)X
98067
9806836 p
98069%%Page: 36 36
980700(Courier)xf 0 f
9807110 s 0 xH 0 xS 0 f
980721 f
980732217 384(-)N
980742264(36)X
980752364(-)X
980760 f
98077736 768(Dwarf_Signed)N
980781360(cnt;)X
98079736 864(Dwarf_Var)N
980801216(*vars;)X
98081736 960(int)N
98082928(res;)X
98083736 1152(if)N
98084880(\(\(res)X
980851168(=)X
980861264(dwarf_get_vars\(dbg,)X
980872224(&vars,&cnt)X
980882752(&error\)\))X
980893184(==)X
980903328(DW_DLV_OK\))X
980913856({)X
980921120 1344(for)N
980931312(\(i)X
980941456(=)X
980951552(0;)X
980961696(i)X
980971792(<)X
980981888(cnt;)X
980992128(++i\))X
981002368({)X
981011504 1440(/*)N
981021648(use)X
981031840(vars[i])X
981042224(*/)X
981051504 1536(dwarf_dealloc\(dbg,)N
981062416(vars[i],)X
981072848(DW_DLA_VAR\);)X
981081120 1632(})N
981091120 1728(dwarf_dealloc\(dbg,)N
981102032(vars,)X
981112320(DW_DLA_LIST\);)X
98112736 1824(})N
981133 f
981149 s
98115576 2112(5.10.1.2)N
98116846(dwarf_varname\(\))X
981170 f
9811810 s
98119576 2256(int)N
98120768(dwarf_varname\()X
98121960 2352(Dwarf_Var)N
981221440(var,)X
98123960 2448(char)N
981241200(**)X
981251488(returned_name,)X
98126960 2544(Dwarf_Error)N
981271536(*error\))X
981281 f
98129576 2688(The)N
98130723(function)X
981310 f
981321040(dwarf_varname\(\))X
981331 f
981341783(returns)X
981350 f
981362057(DW_DLV_OK)X
981371 f
981382512(and)X
981392651(sets)X
981400 f
981412822(*returned_name)X
981421 f
981433517(to)X
981443602(a)X
981453661(pointer)X
981463911(to)X
981473996(a)X
98148576 2784(null-terminated)N
981491092(string)X
981501296(that)X
981511438(names)X
981521665(the)X
981531785(file-scope)X
981542124(static)X
981552315(variable)X
981562596(represented)X
981572989(by)X
981583091(the)X
981590 f
981603238(Dwarf_Var)X
981611 f
981623691(descriptor,)X
981630 f
98164576 2880(var)N
981651 f
98166(.)S
98167794(It)X
98168877(returns)X
981690 f
981701162(DW_DLV_ERROR)X
981711 f
981721772(on)X
981731887(error.)X
981742119(It)X
981752203(never)X
981762417(returns)X
981770 f
981782703(DW_DLV_NO_ENTRY)X
981791 f
98180(.)S
981813498(On)X
981823631(a)X
981833702(successful)X
98184576 2976(return)N
98185791(from)X
98186969(this)X
981871106(function,)X
981881415(the)X
981891535(string)X
981901739(should)X
981911974(be)X
981922072(free'd)X
981932287(using)X
981940 f
981952510(dwarf_dealloc\(\))X
981961 f
98197(,)S
981983272(with)X
981993436(the)X
982003556(allocation)X
982013894(type)X
982020 f
98203576 3072(DW_DLA_STRING)N
982041 f
982051220(when)X
982061414(no)X
982071514(longer)X
982081739(of)X
982091826(interest.)X
982103 f
982119 s
98212576 3312(5.10.1.3)N
98213846(dwarf_var_die_offset\(\))X
982140 f
9821510 s
98216576 3456(int)N
98217768(dwarf_var_die_offset\()X
98218960 3552(Dwarf_Var)N
982191584(var,)X
98220960 3648(Dwarf_Off)N
982211536(*returned_offset,)X
98222960 3744(Dwarf_Error)N
982231536(*error\))X
982241 f
98225576 3888(The)N
98226726(function)X
982270 f
982281046(dwarf_var_die_offset\(\))X
982291 f
982302127(returns)X
982310 f
982322403(DW_DLV_OK)X
982331 f
982342860(and)X
982353002(sets)X
982360 f
982373176(*returned_offset)X
982381 f
982393970(to)X
98240576 3984(the)N
98241705(offset)X
98242919(in)X
982431012(the)X
982441141(section)X
982451399(containing)X
982461767(DIE's,)X
982472009(i.e.)X
982482137(.debug_info,)X
982492572(of)X
982502669(the)X
982512797(DIE)X
982522961(representing)X
982533388(the)X
982543516(file-scope)X
982553863(static)X
98256576 4080(variable)N
98257858(that)X
982581001(is)X
982591077(described)X
982601408(by)X
982611511(the)X
982620 f
982631660(Dwarf_Var)X
982641 f
982652115(descriptor,)X
982660 f
982672507(var)X
982681 f
98269(.)S
982702714(It)X
982712786(returns)X
982720 f
982733060(DW_DLV_ERROR)X
982741 f
982753659(on)X
982763762(error.)X
982773983(It)X
98278576 4176(never)N
98279775(returns)X
982800 f
982811046(DW_DLV_NO_ENTRY)X
982821 f
98283(.)S
982843 f
982859 s
98286576 4416(5.10.1.4)N
98287846(dwarf_var_cu_offset\(\))X
982880 f
9828910 s
98290576 4560(int)N
98291768(dwarf_var_cu_offset\()X
98292960 4656(Dwarf_Var)N
982931440(var,)X
98294960 4752(Dwarf_Off)N
982951536(*returned_offset,)X
98296960 4848(Dwarf_Error)N
982971536(*error\))X
982981 f
98299576 4992(The)N
98300732(function)X
983010 f
983021058(dwarf_var_cu_offset\(\))X
983031 f
983042097(returns)X
983050 f
983062379(DW_DLV_OK)X
983071 f
983082842(and)X
983092990(sets)X
983100 f
983113170(*returned_offset)X
983121 f
983133970(to)X
98314576 5088(the)N
98315721(offset)X
98316951(in)X
983171060(the)X
983181205(section)X
983191479(containing)X
983201864(DIE's,)X
983212123(i.e.)X
983222268(.debug_info,)X
983232720(of)X
983242834(the)X
983252979(compilation-unit)X
983263559(header)X
983273821(of)X
983283934(the)X
98329576 5184(compilation-unit)N
983301145(that)X
983311302(contains)X
983321606(the)X
983331741(file-scope)X
983342095(static)X
983352301(variable)X
983362597(described)X
983372942(by)X
983383059(the)X
983390 f
983403222(Dwarf_Var)X
983411 f
983423691(descriptor,)X
983430 f
98344576 5280(var)N
983451 f
98346(.)S
98347780(It)X
98348849(returns)X
983490 f
983501120(DW_DLV_ERROR)X
983511 f
983521716(on)X
983531816(error.)X
983542033(It)X
983552102(never)X
983562301(returns)X
983570 f
983582572(DW_DLV_NO_ENTRY)X
983591 f
98360(.)S
983613 f
983629 s
98363576 5520(5.10.1.5)N
98364846(dwarf_var_name_offsets\(\))X
983651 f
9836610 s
98367576 6164(rev)N
98368699(1.52,)X
98369879(02)X
98370979(Oct)X
983711115(2003)X
983722217(-)X
983732264(36)X
983742364(-)X
98375
9837637 p
98377%%Page: 37 37
983780(Courier)xf 0 f
9837910 s 0 xH 0 xS 0 f
983801 f
983812217 384(-)N
983822264(37)X
983832364(-)X
983840 f
98385576 768(int)N
98386768(dwarf_var_name_offsets\()X
98387960 864(Dwarf_Var)N
983881440(var,)X
98389960 960(char)N
983901392(**returned_name,)X
98391960 1056(Dwarf_Off)N
983921440(*die_offset,)X
98393960 1152(Dwarf_Off)N
983941440(*cu_offset,)X
98395960 1248(Dwarf_Error)N
983961536(*error\))X
983971 f
98398576 1392(The)N
98399726(function)X
984000 f
984011046(dwarf_var_name_offsets\(\))X
984021 f
984032223(returns)X
984040 f
984052499(DW_DLV_OK)X
984061 f
984072956(and)X
984083098(sets)X
984090 f
984103272(*returned_name)X
984111 f
984123970(to)X
98413576 1488(a)N
98414640(pointer)X
98415895(to)X
98416985(a)X
984171048(null-terminated)X
984181569(string)X
984191778(that)X
984201925(gives)X
984212121(the)X
984222246(name)X
984232447(of)X
984242541(the)X
984252666(file-scope)X
984263010(static)X
984273206(variable)X
984283492(described)X
984293827(by)X
984303934(the)X
984310 f
98432576 1584(Dwarf_Var)N
984331 f
984341055(descriptor)X
984350 f
984361451(var)X
984371 f
98438(.)S
984391682(It)X
984401778(also)X
984411954(returns)X
984422224(in)X
984432333(the)X
984442478(locations)X
984452814(pointed)X
984463102(to)X
984473212(by)X
984480 f
984493368(die_offset)X
984501 f
98451(,)S
984523916(and)X
984530 f
98454576 1680(cu_offset)N
984551 f
98456(,)S
984571056(the)X
984581182(offsets)X
984591424(of)X
984601519(the)X
984611645(DIE)X
984621807(representing)X
984632232(the)X
984642358(file-scope)X
984652703(static)X
984662900(variable,)X
984673206(and)X
984683349(the)X
984693474(DIE)X
984703635(representing)X
98471576 1776(the)N
98472695(compilation-unit)X
984731249(containing)X
984741609(the)X
984751729(file-scope)X
984762068(static)X
984772259(variable,)X
984782560(respectively.)X
984793010(It)X
984803081(returns)X
984810 f
984823354(DW_DLV_ERROR)X
984831 f
984843952(on)X
98485576 1872(error.)N
98486908(It)X
984871092(never)X
984881405(returns)X
984890 f
984901790(DW_DLV_NO_ENTRY)X
984911 f
98492(.)S
984932684(On)X
984942916(a)X
984953086(successful)X
984963550(return)X
984973876(from)X
984980 f
98499576 1968(dwarf_var_name_offsets\(\))N
985001 f
985011756(the)X
985021882(storage)X
985032142(pointed)X
985042410(to)X
985052500(by)X
985060 f
985072637(returned_name)X
985081 f
985093290(should)X
985103532(be)X
985113637(free'd)X
985123859(using)X
985130 f
98514576 2064(dwarf_dealloc\(\))N
985151 f
98516(,)S
985171336(with)X
985181498(the)X
985191616(allocation)X
985201952(type)X
985210 f
985222138(DW_DLA_STRING)X
985231 f
985242782(when)X
985252976(no)X
985263076(longer)X
985273301(of)X
985283388(interest.)X
985293 f
9853011 s
98531576 2304(5.11)N
98532774(Macro)X
985331045(Information)X
985341526(Operations)X
9853510 s
98536576 2448(5.11.1)N
98537816(General)X
985381112(Macro)X
985391360(Operations)X
985409 s
98541576 2592(5.11.1.1)N
98542846(dwarf_find_macro_value_start\(\))X
985430 f
9854410 s
98545576 2736(char)N
98546816(*dwarf_find_macro_value_start\(char)X
985472496(*)X
985482592(macro_string\);)X
985491 f
98550576 2880(Given)N
98551801(a)X
98552866(macro)X
985531096(string)X
985541307(in)X
985551398(the)X
985561525(standard)X
985571826(form)X
985582011(defined)X
985592281(in)X
985602372(the)X
985612500(DWARF)X
985622819(document)X
985633165(\("name)X
985643429(<space>)X
985653728(value")X
985663965(or)X
98567576 2976 0.2188("name\(args\)<space>value"\))AN
985681499(this)X
985691639(returns)X
985701887(a)X
985711947(pointer)X
985722198(to)X
985732284(the)X
985742406(first)X
985752559(byte)X
985762721(of)X
985772812(the)X
985782934(macro)X
985793159(value.)X
985803397(It)X
985813470(does)X
985823641(not)X
985833767(alter)X
985843934(the)X
98585576 3072(string)N
98586782(pointed)X
985871046(to)X
985881132(by)X
985891236(macro_string)X
985901683(or)X
985911774(copy)X
985921954(the)X
985932076(string:)X
985942304(it)X
985952372(returns)X
985962619(a)X
985972680(pointer)X
985982932(into)X
985993081(the)X
986003204(string)X
986013411(whose)X
986023641(address)X
986033907(was)X
98604576 3168(passed)N
98605810(in.)X
986063 f
98607576 3312(5.11.2)N
98608816(Debugger)X
986091170(Interface)X
986101503(Macro)X
986111751(Operations)X
986121 f
98613576 3456(Macro)N
98614809(information)X
986151210(is)X
986161286(accessed)X
986171591(from)X
986181770(the)X
986191891(.debug_info)X
986202299(section)X
986212550(via)X
986222672(the)X
986232794(DW_AT_macro_info)X
986243509(attribute)X
986253800(\(whose)X
98626576 3552(value)N
98627770(is)X
98628843(an)X
98629939(offset)X
986301142(into)X
986311286(.debug_macinfo\).)X
98632576 3696(No)N
98633694(Functions)X
986341029(yet)X
986351147(defined.)X
986363 f
98637576 3840(5.11.3)N
98638816(Low)X
98639987(Level)X
986401194(Macro)X
986411442(Information)X
986421880(Operations)X
986439 s
98644576 3984(5.11.3.1)N
98645846(dwarf_get_macro_details\(\))X
986460 f
9864710 s
98648576 4128(int)N
98649768(dwarf_get_macro_details\(Dwarf_Debug)X
986502496(/*dbg*/,)X
98651672 4224(Dwarf_Off)N
986521776(macro_offset,)X
98653672 4320(Dwarf_Unsigned)N
986541776(maximum_count,)X
98655672 4416(Dwarf_Signed)N
986561680(*)X
986571776(entry_count,)X
98658672 4512(Dwarf_Macro_Details)N
986591632(**)X
986601776(details,)X
98661672 4608(Dwarf_Error)N
986621248(*)X
986631776(err\);)X
98664576 4752(dwarf_get_macro_details\(\))N
986651 f
986661810(returns)X
986670 f
986682095(DW_DLV_OK)X
986691 f
986702561(and)X
986712711(sets)X
986720 f
986732893(entry_count)X
986741 f
986753455(to)X
986763552(the)X
986773685(number)X
986783965(of)X
986790 f
98680576 4848(details)N
986811 f
98682936(records)X
986831197(returned)X
986841489(through)X
986851762(the)X
986860 f
986871912(details)X
986881 f
986892272(pointer.)X
986902563(The)X
986912712(data)X
986922870(returned)X
986933161(thru)X
986940 f
986953361(details)X
986961 f
986973720(should)X
986983956(be)X
98699576 4944(freed)N
98700764(by)X
98701866(a)X
98702924(call)X
987031062(to)X
987040 f
987051175(dwarf_dealloc\(\))X
987061 f
987071918(with)X
987082083(the)X
987092204(allocation)X
987102543(type)X
987110 f
987122732(DW_DLA_STRING)X
987131 f
98714(.)S
987153419(If)X
987160 f
987173524(DW_DLV_OK)X
987181 f
987193979(is)X
98720576 5040(returned,)N
98721892(the)X
987220 f
987231046(entry_count)X
987241 f
987251602(will)X
987261754(be)X
987271858(at)X
987281944(least)X
987292119(1,)X
987302206(since)X
987312398(a)X
987322461(compilation)X
987332870(unit)X
987343021(with)X
987353190(macro)X
987363418(information)X
987373823(but)X
987383952(no)X
98739576 5136(macros)N
98740828(will)X
98741972(have)X
987421144(at)X
987431222(least)X
987441389(one)X
987451525(macro)X
987461746(data)X
987471900(byte)X
987482058(of)X
987492145(0.)X
987500 f
98751576 5280(dwarf_get_macro_details\(\))N
987521 f
987531808(begins)X
987542049(at)X
987552139(the)X
987560 f
987572297(macro_offset)X
987581 f
987592905(offset)X
987603120(you)X
987613272(supply)X
987623517(and)X
987633665(ends)X
987643844(at)X
987653934(the)X
98766576 5376(end)N
98767748(of)X
98768871(a)X
98769963(compilation)X
987701401(unit)X
987711581(or)X
987721704(at)X
987730 f
987741846(maximum_count)X
987751 f
987762525(detail)X
987772758(records)X
987783050(\(whichever)X
987793467(comes)X
987803727(first\).)X
987813978(If)X
987820 f
98783576 5472(maximum_count)N
987841 f
987851220(is)X
987861293(0,)X
987871373(it)X
987881437(is)X
987891510(treated)X
987901749(as)X
987911836(if)X
987921905(it)X
987931969(were)X
987942146(the)X
987952264(maximum)X
987962608(possible)X
987972890(unsigned)X
987983199(integer.)X
987990 f
98800576 5616(dwarf_get_macro_details\(\))N
988011 f
988021821(attempts)X
988032137(to)X
988042244(set)X
988050 f
988062406(dmd_fileindex)X
988071 f
988083075(to)X
988093182(the)X
988103325(correct)X
988113594(file)X
988123746(in)X
988133853(every)X
988140 f
98815576 5712(details)N
988161 f
98817955(record.)X
988181224(If)X
988191321(it)X
988201408(is)X
988211504(unable)X
988221761(to)X
988231866(do)X
988241988(so)X
988252101(\(or)X
988262237(whenever)X
988272592(the)X
988282732(current)X
988293002(file)X
988303151(index)X
988313371(is)X
988323466(unknown,)X
988333826(it)X
988343912(sets)X
988350 f
98836576 5808(dmd_fileindex)N
988371 f
988381220(to)X
988391302(-1.)X
98840576 6164(rev)N
98841699(1.52,)X
98842879(02)X
98843979(Oct)X
988441115(2003)X
988452217(-)X
988462264(37)X
988472364(-)X
98848
9884938 p
98850%%Page: 38 38
988510(Courier)xf 0 f
9885210 s 0 xH 0 xS 0 f
988531 f
988542217 384(-)N
988552264(38)X
988562364(-)X
988570 f
98858576 768(dwarf_get_macro_details\(\))N
988591 f
988601922(returns)X
988610 f
988622319(DW_DLV_ERROR)X
988631 f
988643042(on)X
988653269(error.)X
988663613(It)X
988673809(returns)X
988680 f
98869576 864(DW_DLV_NO_ENTRY)N
988701 f
988711369(if)X
988721490(there)X
988731723(is)X
988741848(no)X
988752000(more)X
988762237(macro)X
988772510(information)X
988782960(at)X
988793090(that)X
988800 f
988813310(macro_offset)X
988821 f
98883(.)S
988843978(If)X
988850 f
98886576 960(macro_offset)N
988871 f
988881172(is)X
988891245(passed)X
988901479(in)X
988911561(as)X
988921648(0,)X
988931728(a)X
988940 f
988951812(DW_DLV_NO_ENTRY)X
988961 f
988972552(return)X
988982764(means)X
988992989(there)X
989003170(is)X
989013243(no)X
989023343(macro)X
989033564(information.)X
989040 f
98905736 1104(Dwarf_Unsigned)N
989061456(max)X
989071648(=)X
989081744(0;)X
98909736 1200(Dwarf_Off)N
989101216(cur_off)X
989111600(=)X
989121696(0;)X
98913736 1296(Dwarf_Signed)N
989141360(count)X
989151648(=)X
989161744(0;)X
98917736 1392(Dwarf_Macro_Details)N
989181696(*maclist;)X
98919736 1488(int)N
98920928(errv;)X
98921736 1680(/*)N
98922880(loop)X
989231120(thru)X
989241360(all)X
989251552(the)X
989261744(compilation)X
989272320(units)X
989282608(macro)X
989292896(info)X
989303136(*/)X
98931736 1776(while\(\(errv)N
989321312(=)X
989331408(dwarf_macro_details\(dbg,)X
989342608(cur_off,max,)X
98935976 1872(&count,&maclist,&error\)\)==)N
989362272(DW_DLV_OK\))X
989372800({)X
98938928 1968(for)N
989391120(\(i)X
989401264(=)X
989411360(0;)X
989421504(i)X
989431600(<)X
989441696(count;)X
989452032(++i\))X
989462272({)X
989471024 2064(/*)N
989481168(use)X
989491360(maclist[i])X
989501888(*/)X
98951928 2160(})N
98952928 2256(cur_off)N
989531312(=)X
989541408(maclist[count-1].dmd_offset)X
989552752(+)X
989562848(1;)X
98957928 2352(dwarf_dealloc\(dbg,)N
989581840(maclist,)X
989592272(DW_DLA_STRING\);)X
98960736 2448(})N
989613 f
9896211 s
98963576 2832(5.12)N
98964774(Low)X
98965962(Level)X
989661190(Frame)X
989671461(Operations)X
989681 f
9896910 s
98970576 2976(These)N
98971814(functions)X
989721159(provide)X
989731451(information)X
989741876(about)X
989752101(stack)X
989762313(frames)X
989772579(to)X
989782688(be)X
989792811(used)X
989803005(to)X
989813114(perform)X
989823420(stack)X
989833632(traces.)X
989843907(The)X
98985576 3072(information)N
98986979(is)X
989871057(an)X
989881158(abstraction)X
989891535(of)X
989901627(a)X
989911688(table)X
989921868(with)X
989932034(a)X
989942094(row)X
989952243(per)X
989962370(instruction)X
989972736(and)X
989982876(a)X
989992936(column)X
990003200(per)X
990013327(register)X
990023592(and)X
990033732(a)X
990043792(column)X
99005576 3168(for)N
99006698(the)X
99007824(canonical)X
990081160(frame)X
990091376(address)X
990101645(\(CFA,)X
990111875(which)X
990122099(corresponds)X
990132515(to)X
990142605(the)X
990152731(notion)X
990162963(of)X
990173058(a)X
990183122(frame)X
990193338(pointer\),)X
990203640(as)X
990213735(well)X
990223901(as)X
990233996(a)X
99024576 3264(column)N
99025836(for)X
99026950(the)X
990271068(return)X
990281280(address.)X
990291581(Each)X
990301762(cell)X
990311898(in)X
990321980(the)X
990332098(table)X
990342274(contains)X
990352561(one)X
990362697(of)X
990372784(the)X
990382902(following:)X
99039636 3504(1.)N
99040776(A)X
99041854(register)X
990421115(+)X
990431180(offset\(a\)\(b\))X
99044636 3744(2.)N
99045776(A)X
99046854 0.2404(register\(c\)\(d\))AX
99047636 3984(3.)N
99048776(A)X
99049854(marker)X
990501102(\(DW_FRAME_UNDEFINED_VAL\))X
990512329(meaning)X
990522 f
990532625(register)X
990542894(value)X
990553088(undefined)X
990561 f
99057636 4224(4.)N
99058776(A)X
99059854(marker)X
990601102(\(DW_FRAME_SAME_VAL\))X
990612092(meaning)X
990622 f
990632388(register)X
990642657(value)X
990652851(same)X
990663036(as)X
990673127(in)X
990683209(caller)X
990691 f
99070576 4368(\(a\))N
99071692(When)X
99072931(the)X
990731056(column)X
990741323(is)X
990751403(DW_FRAME_CFA_COL:)X
990762296(the)X
990772421(register)X
990782689(number)X
990792961(is)X
990803041(a)X
990813104(real)X
990823252(hardware)X
990833579(register,)X
990843867(not)X
990853996(a)X
99086576 4464 0.4531(reference)AN
99087997(to)X
990881179(DW_FRAME_CFA_COL,)X
990892162(not)X
990902403(DW_FRAME_UNDEFINED_VAL,)X
990913695(and)X
990923930(not)X
99093576 4560(DW_FRAME_SAME_VAL.)N
990941556(The)X
990951705(CFA)X
990961884(rule)X
990972033(value)X
990982231(should)X
990992468(be)X
991002568(the)X
991012690(stack)X
991022880(pointer)X
991033132(plus)X
991043290(offset)X
991053498(0)X
991063563(when)X
991073762(no)X
991083867(other)X
99109576 4656(value)N
99110778(makes)X
991111011(sense.)X
991121253(A)X
991131339(value)X
991141541(of)X
991151635(DW_FRAME_SAME_VAL)X
991162578(would)X
991172805(be)X
991182908(semi-logical,)X
991193351(but)X
991203480(since)X
991213672(the)X
991223797(CFA)X
991233979(is)X
99124576 4752(not)N
99125699(a)X
99126756(real)X
99127898(register,)X
991281180(not)X
991291303(really)X
991301507(correct.)X
991311792(A)X
991321871(value)X
991332066(of)X
991342154(DW_FRAME_UNDEFINED_VAL)X
991353328(would)X
991363549(imply)X
991373757(the)X
991383877(CFA)X
99139576 4848(is)N
99140654(undefined)X
991411020(--)X
991421099(this)X
991431239(seems)X
991441460(to)X
991451547(be)X
991461648(a)X
991471709(useless)X
991481960(notion,)X
991492208(as)X
991502299(the)X
991512421(CFA)X
991522600(is)X
991532677(a)X
991542737(means)X
991552966(to)X
991563052(finding)X
991573307(real)X
991583452(registers,)X
991593768(so)X
991603863(those)X
99161576 4944(real)N
99162748(registers)X
991631071(should)X
991641335(be)X
991651462(marked)X
991661754(DW_FRAME_UNDEFINED_VAL,)X
991672979(and)X
991683147(the)X
991693297(CFA)X
991703504(column)X
991713796(content)X
99172576 5040(\(whatever)N
99173918(register)X
991741179(it)X
991751243(specifies\))X
991761571(becomes)X
991771872 0.3295(unreferenced)AX
991782313(by)X
991792413(anything.)X
99180576 5184(\(b\))N
99181749(When)X
991821020(the)X
991831197(column)X
991841516(is)X
991851648(not)X
991861829(DW_FRAME_CFA_COL,)X
991872772(the)X
991882949('register')X
991893323(will)X
991903526(and)X
991913721(must)X
991923956(be)X
99193576 5280(DW_FRAME_CFA_COL,)N
991941469(implying)X
991951785(that)X
991961933(to)X
991972023(get)X
991982149(the)X
991992275(final)X
992002450(location)X
992012736(for)X
992022858(the)X
992032984(column)X
992043252(one)X
992053396(must)X
992063579(add)X
992073723(the)X
992083849(offset)X
99209576 5376(here)N
99210735(plus)X
99211888(the)X
992121006(DW_FRAME_CFA_COL)X
992131870(rule)X
992142015(value.)X
99215576 5520(\(c\))N
99216692(When)X
99217910(the)X
992181034(column)X
992191301(is)X
992201381(DW_FRAME_CFA_COL,)X
992212272(then)X
992222437(the)X
992232562(register)X
992242830(number)X
992253102(is)X
992263182(\(must)X
992273391(be\))X
992283521(a)X
992293584(real)X
992303732(hardware)X
99231576 5616(register)N
99232856(.)X
99233935(If)X
992341028(it)X
992351111(were)X
992361307(DW_FRAME_UNDEFINED_VAL)X
992372499(or)X
992382605(DW_FRAME_SAME_VAL)X
992393560(it)X
992403643(would)X
992413882(be)X
992423996(a)X
99243576 5712(marker,)N
99244844(not)X
99245966(a)X
992461022(register)X
992471283(number.)X
99248576 6164(rev)N
99249699(1.52,)X
99250879(02)X
99251979(Oct)X
992521115(2003)X
992532217(-)X
992542264(38)X
992552364(-)X
99256
9925739 p
99258%%Page: 39 39
992590(Courier)xf 0 f
9926010 s 0 xH 0 xS 0 f
992611 f
992622217 384(-)N
992632264(39)X
992642364(-)X
99265576 768(\(d\))N
99266693(When)X
99267908(the)X
992681029(column)X
992691292(is)X
992701368(not)X
992711493(DW_FRAME_CFA_COL,)X
992722380(the)X
992732501(register)X
992742765(may)X
992752926(be)X
992763025(a)X
992773084(hardware)X
992783407(register.)X
992793711(It)X
992803783(will)X
992813930(not)X
99282576 864(be)N
99283672(DW_FRAME_CFA_COL.)X
99284576 1008(There)N
99285784(is)X
99286857(no)X
99287957('column')X
992881271(for)X
992891385(DW_FRAME_UNDEFINED_VAL)X
992902558(or)X
992912645(DW_FRAME_SAME_VAL.)X
99292576 1296(Figure)N
99293805(3)X
99294865(is)X
99295938(machine)X
992961230(dependent)X
992971580(and)X
992981716(represents)X
992992062(MIPS)X
993002268(cpu)X
993012404(register)X
993022665(assignments.)X
993030 f
9930410 f
99305824 1456(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N
993063 f
99307864 1552(NAME)N
993082040(value)X
993092352(PURPOSE)X
9931010 f
99311824 1568(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N
993123 f
99313864 1664(DW_FRAME_CFA_COL)N
993142116(0)X
993152352(column)X
993162625(used)X
993172800(for)X
993182923(CFA)X
99319864 1760(DW_FRAME_REG1)N
993202116(1)X
993212352(integer)X
993222613(regster)X
993232875(1)X
99324864 1856(DW_FRAME_REG2)N
993252116(2)X
993262352(integer)X
993272613(register)X
993282897(2)X
99329864 1952(---)N
993302352(obvious)X
993312633(names)X
993322871(and)X
993333019(values)X
993343252(here)X
99335864 2048(DW_FRAME_REG30)N
993362096(30)X
993372352(integer)X
993382613(register)X
993392897(30)X
99340864 2144(DW_FRAME_REG31)N
993412096(31)X
993422352(integer)X
993432613(register)X
993442897(31)X
99345864 2240(DW_FRAME_FREG0)N
993462096(32)X
993472352(floating)X
993482634(point)X
993492831(register)X
993503115(0)X
99351864 2336(DW_FRAME_FREG1)N
993522096(33)X
993532352(floating)X
993542634(point)X
993552831(register)X
993563115(1)X
99357864 2432(---)N
993582352(obvious)X
993592633(names)X
993602871(and)X
993613019(values)X
993623252(here)X
99363864 2528(DW_FRAME_FREG30)N
993642096(62)X
993652352(floating)X
993662634(point)X
993672831(register)X
993683115(30)X
99369864 2624(DW_FRAME_FREG31)N
993702096(63)X
993712352(floating)X
993722634(point)X
993732831(register)X
993743115(31)X
99375864 2720(DW_FRAME_RA_COL)N
993762096(64)X
993772352(column)X
993782625(recording)X
993792979(ra)X
99380864 2816(DW_FRAME_UNDEFINED_VAL)N
993812056(1034)X
993822352(register)X
993832636(val)X
993842758(undefined)X
99385864 2912(DW_FRAME_SAME_VAL)N
993862056(1035)X
993872352(register)X
993882636(same)X
993892830(as)X
993902921(in)X
993913007(caller)X
9939210 f
99393824 2928(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N
99394824(c)X
993952896(c)Y
993962816(c)Y
993972736(c)Y
993982656(c)Y
993992576(c)Y
994002496(c)Y
994012416(c)Y
994022336(c)Y
994032256(c)Y
994042176(c)Y
994052096(c)Y
994062016(c)Y
994071936(c)Y
994081856(c)Y
994091776(c)Y
994101696(c)Y
994111616(c)Y
994121536(c)Y
994133784 2928(c)N
994142896(c)Y
994152816(c)Y
994162736(c)Y
994172656(c)Y
994182576(c)Y
994192496(c)Y
994202416(c)Y
994212336(c)Y
994222256(c)Y
994232176(c)Y
994242096(c)Y
994252016(c)Y
994261936(c)Y
994271856(c)Y
994281776(c)Y
994291696(c)Y
994301616(c)Y
994311536(c)Y
994323 f
994331482 3120(Figure)N
994341729(4.)X
994351829(Frame)X
994362077(Information)X
994372515(Rule)X
994382695(Assignments)X
994391 f
99440576 3408(The)N
99441727(following)X
994421064(table)X
994431246(shows)X
994441472(SGI/MIPS)X
994451836(specific)X
994462113(special)X
994472363(cell)X
994482506(values:)X
994492760(these)X
994502952(values)X
994513184(mean)X
994523385(that)X
994533532(the)X
994543657(cell)X
994553800(has)X
994563934(the)X
99457576 3504(value)N
994582 f
99459770(undefined)X
994601 f
994611106(or)X
994622 f
994631193(same)X
994641378(value)X
994651 f
994661572(respectively,)X
994672000(rather)X
994682208(than)X
994692366(containing)X
994702724(a)X
994712 f
994722780(register)X
994731 f
994743049(or)X
994752 f
994763136(register+offset)X
994771 f
994783612(.)X
994793 f
9948010 f
99481934 3568(i)N
99482953(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
994833 f
99484974 3664(NAME)N
994852291(value)X
994862593(PURPOSE)X
9948710 f
99488934 3680(i)N
99489953(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
994903 f
99491974 3776(DW_FRAME_UNDEFINED_VAL)N
994922302(1034)X
994932593(means)X
994942831(undefined)X
994953192(value.)X
994962593 3872(Not)N
994972738(a)X
994982798(column)X
994993071(or)X
995003167(register)X
995013451(value)X
99502974 3968(DW_FRAME_SAME_VAL)N
995032302(1035)X
995042593(means)X
995052831('same)X
995063052(value')X
995073281(as)X
995082593 4064(caller)N
995092805(had.)X
995102973(Not)X
995113118(a)X
995123178(column)X
995133451(or)X
995142593 4160(register)N
995152877(value)X
9951610 f
99517934 4176(i)N
99518953(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
99519934(c)X
995204128(c)Y
995214048(c)Y
995223968(c)Y
995233888(c)Y
995243808(c)Y
995253728(c)Y
995263648(c)Y
995273673 4176(c)N
995284128(c)Y
995294048(c)Y
995303968(c)Y
995313888(c)Y
995323808(c)Y
995333728(c)Y
995343648(c)Y
995353 f
995361540 4272(Figure)N
995371787(5.)X
995381887(Frame)X
995392135(Information)X
995402573(Special)X
995412837(Values)X
995429 s
99543576 4656(5.12.0.1)N
99544846(dwarf_get_fde_list\(\))X
995450 f
9954610 s
99547576 4800(int)N
99548768(dwarf_get_fde_list\()X
99549960 4896(Dwarf_Debug)N
995501536(dbg,)X
99551960 4992(Dwarf_Cie)N
995521440(**cie_data,)X
99553960 5088(Dwarf_Signed)N
995541584(*cie_element_count,)X
99555960 5184(Dwarf_Fde)N
995561440(**fde_data,)X
99557960 5280(Dwarf_Signed)N
995581584(*fde_element_count,)X
99559960 5376(Dwarf_Error)N
995601536(*error\);)X
99561576 5520(dwarf_get_fde_list\(\))N
995621 f
995631562(stores)X
995641775(a)X
995651837(pointer)X
995662090(to)X
995672178(a)X
995682240(list)X
995692363(of)X
995700 f
995712484(Dwarf_Cie)X
995721 f
995732942(descriptors)X
995743320(in)X
995750 f
995763437(*cie_data)X
995771 f
99578(,)S
995793916(and)X
99580576 5616(the)N
99581695(count)X
99582894(of)X
99583982(the)X
995841101(number)X
995851367(of)X
995861455(descriptors)X
995871827(in)X
995880 f
995891937(*cie_element_count)X
995901 f
99591(.)S
995922861(There)X
995933069(is)X
995943142(a)X
995953198(descriptor)X
995963539(for)X
995973653(each)X
995983821(CIE)X
995993970(in)X
99600576 5712(the)N
99601724(.debug_frame)X
996021218(section.)X
996031535(Similarly,)X
996041902(it)X
996051996(stores)X
996062233(a)X
996072319(pointer)X
996082596(to)X
996092708(a)X
996102794(list)X
996112941(of)X
996120 f
996133086(Dwarf_Fde)X
996141 f
996153568(descriptors)X
996163970(in)X
996170 f
99618576 5808(*fde_data)N
996191 f
99620(,)S
996211062(and)X
996221212(the)X
996231344(count)X
996241555(of)X
996251655(the)X
996261786(number)X
996272064(of)X
996282164(descriptors)X
996292549(in)X
996300 f
996312672(*fde_element_count)X
996321 f
99633(.)S
996343609(There)X
996353830(is)X
996363916(one)X
99637576 6164(rev)N
99638699(1.52,)X
99639879(02)X
99640979(Oct)X
996411115(2003)X
996422217(-)X
996432264(39)X
996442364(-)X
99645
9964640 p
99647%%Page: 40 40
996480(Courier)xf 0 f
9964910 s 0 xH 0 xS 0 f
996501 f
996512217 384(-)N
996522264(40)X
996532364(-)X
99654576 768(descriptor)N
99655918(per)X
996561042(FDE)X
996571214(in)X
996581298(the)X
996591418(.debug_frame)X
996601884(section.)X
996610 f
996622229(dwarf_get_fde_list\(\))X
996631 f
996643231(returns)X
996650 f
996663504(DW_DLV_EROR)X
996671 f
99668576 864(on)N
99669685(error.)X
99670911(It)X
99671989(returns)X
996720 f
996731269(DW_DLV_NO_ENTRY)X
996741 f
996752018(if)X
996762096(it)X
996772169(cannot)X
996782412(find)X
996792570(frame)X
996802787(entries.)X
996813070(It)X
996823148(returns)X
996830 f
996843428(DW_DLV_OK)X
996851 f
996863888(on)X
996873996(a)X
99688576 960(successful)N
99689926(return.)X
99690576 1152(On)N
99691699(successful)X
996921054(return,)X
996931291(each)X
996941464(of)X
996951556(the)X
996961680(structures)X
996972018(pointed)X
996982284(to)X
996992372(by)X
997002478(a)X
997012540(descriptor)X
997022887(should)X
997033126(be)X
997043228(individually)X
997053640(free'd)X
997063859(using)X
997070 f
99708576 1248(dwarf_dealloc\(\))N
997091 f
997101329(with)X
997111504(either)X
997121720(the)X
997131850(allocation)X
997142198(type)X
997150 f
997162396(DW_DLA_CIE)X
997171 f
99718(,)S
997192928(or)X
997200 f
997213055(DW_DLA_FDE)X
997221 f
997233567(as)X
997243666(appropriate)X
99725576 1344(when)N
99726824(no)X
99727978(longer)X
997281257(of)X
997291398(interest.)X
997301748(Each)X
997311984(of)X
997322126(the)X
997332299(blocks)X
997342583(of)X
997352725(descriptors)X
997363152(should)X
997373440(be)X
997383591(free'd)X
997393859(using)X
997400 f
99741576 1440(dwarf_dealloc\(\))N
997421 f
997431316(with)X
997441478(the)X
997451596(allocation)X
997461932(type)X
997470 f
997482118(DW_DLA_LIST)X
997491 f
997502666(when)X
997512860(no)X
997522960(longer)X
997533185(of)X
997543272(interest.)X
997550 f
99756736 1776(Dwarf_Signed)N
997571360(cnt;)X
99758736 1872(Dwarf_Cie)N
997591216(*cie_data;)X
99760736 1968(Dwarf_Signed)N
997611360(cie_count;)X
99762736 2064(Dwarf_Fde)N
997631216(*fde_data;)X
99764736 2160(Dwarf_Signed)N
997651360(fde_count;)X
99766736 2256(int)N
99767928(fres;)X
99768736 2448(if)N
99769880(\(\(fres)X
997701216(=)X
997711312(dwarf_get_fde_list\(dbg,&cie_data,&cie_count,)X
997721504 2544(&fde_data,&fde_count,&error\)\))N
997732944(==)X
997743088(DW_DLV_OK\))X
997753616({)X
997761120 2736(for)N
997771312(\(i)X
997781456(=)X
997791552(0;)X
997801696(i)X
997811792(<)X
997821888(cie_count;)X
997832416(++i\))X
997842656({)X
997851504 2832(/*)N
997861648(use)X
997871840(cie[i])X
997882176(*/)X
997891504 2928(dwarf_dealloc\(dbg,)N
997902416(cie_data[i],)X
997913040(DW_DLA_CIE\);)X
997921120 3024(})N
997931120 3120(for)N
997941312(\(i)X
997951456(=)X
997961552(0;)X
997971696(i)X
997981792(<)X
997991888(fde_count;)X
998002416(++i\))X
998012656({)X
998021504 3216(/*)N
998031648(use)X
998041840(fde[i])X
998052176(*/)X
998061504 3312(dwarf_dealloc\(dbg,)N
998072416(fde_data[i],)X
998083040(DW_DLA_FDE\);)X
998091120 3408(})N
998101120 3504(dwarf_dealloc\(dbg,)N
998112032(cie_data,)X
998122512(DW_DLA_LIST\);)X
998131120 3600(dwarf_dealloc\(dbg,)N
998142032(fde_data,)X
998152512(DW_DLA_LIST\);)X
99816736 3696(})N
998173 f
998189 s
99819576 3984(5.12.0.2)N
99820846(dwarf_get_fde_list_eh\(\))X
998210 f
9982210 s
99823576 4128(int)N
99824768(dwarf_get_fde_list_eh\()X
99825960 4224(Dwarf_Debug)N
998261536(dbg,)X
99827960 4320(Dwarf_Cie)N
998281440(**cie_data,)X
99829960 4416(Dwarf_Signed)N
998301584(*cie_element_count,)X
99831960 4512(Dwarf_Fde)N
998321440(**fde_data,)X
99833960 4608(Dwarf_Signed)N
998341584(*fde_element_count,)X
99835960 4704(Dwarf_Error)N
998361536(*error\);)X
99837576 4848(dwarf_get_fde_list_eh\(\))N
998381 f
998391787(is)X
998401947(identical)X
998412330(to)X
998420 f
998432527(dwarf_get_fde_list\(\))X
998441 f
998453594(except)X
998463912(that)X
998470 f
99848576 4944(dwarf_get_fde_list_eh\(\))N
998491 f
998501704(reads)X
998511898(the)X
998522020(GNU)X
998532218(ecgs)X
998542385(section)X
998552636(named)X
998562874(.eh_frame)X
998573222(\(C++)X
998583416(exception)X
998593752(handling)X
99860576 5040(information\).)N
998610 f
99862576 5232(dwarf_get_fde_list_eh\(\))N
998631 f
998641706(stores)X
998651919(a)X
998661981(pointer)X
998672234(to)X
998682322(a)X
998692384(list)X
998702507(of)X
998710 f
998722628(Dwarf_Cie)X
998731 f
998743086(descriptors)X
998753464(in)X
998760 f
998773580(*cie_data)X
998781 f
99879(,)S
99880576 5328(and)N
99881719(the)X
99882844(count)X
998831049(of)X
998841143(the)X
998851268(number)X
998861540(of)X
998871634(descriptors)X
998882013(in)X
998890 f
998902130(*cie_element_count)X
998911 f
99892(.)S
998933061(There)X
998943276(is)X
998953355(a)X
998963417(descriptor)X
998973764(for)X
998983884(each)X
99899576 5424(CIE)N
99900736(in)X
99901829(the)X
99902958(.debug_frame)X
999031434(section.)X
999041733(Similarly,)X
999052082(it)X
999062158(stores)X
999072377(a)X
999082445(pointer)X
999092704(to)X
999102798(a)X
999112866(list)X
999122995(of)X
999130 f
999143122(Dwarf_Fde)X
999151 f
999163586(descriptors)X
999173970(in)X
999180 f
99919576 5520(*fde_data)N
999201 f
99921(,)S
999221062(and)X
999231212(the)X
999241344(count)X
999251555(of)X
999261655(the)X
999271786(number)X
999282064(of)X
999292164(descriptors)X
999302549(in)X
999310 f
999322672(*fde_element_count)X
999331 f
99934(.)S
999353609(There)X
999363830(is)X
999373916(one)X
99938576 5616(descriptor)N
99939918(per)X
999401042(FDE)X
999411214(in)X
999421298(the)X
999431418(.debug_frame)X
999441884(section.)X
999450 f
999462229(dwarf_get_fde_list\(\))X
999471 f
999483231(returns)X
999490 f
999503504(DW_DLV_EROR)X
999511 f
99952576 5712(on)N
99953703(error.)X
99954947(It)X
999551043(returns)X
999560 f
999571341(DW_DLV_NO_ENTRY)X
999581 f
999592108(if)X
999602204(it)X
999612295(cannot)X
999622555(find)X
999632730(exception)X
999643088(handling)X
999653414(entries.)X
999663714(It)X
999673809(returns)X
999680 f
99969576 5808(DW_DLV_OK)N
999701 f
999711028(on)X
999721128(a)X
999731184(successful)X
999741534(return.)X
99975576 6164(rev)N
99976699(1.52,)X
99977879(02)X
99978979(Oct)X
999791115(2003)X
999802217(-)X
999812264(40)X
999822364(-)X
99983
9998441 p
99985%%Page: 41 41
999860(Courier)xf 0 f
9998710 s 0 xH 0 xS 0 f
999881 f
999892217 384(-)N
999902264(41)X
999912364(-)X
99992576 768(On)N
99993699(successful)X
999941054(return,)X
999951291(each)X
999961464(of)X
999971556(the)X
999981680(structures)X
999992018(pointed)X
1000002284(to)X
1000012372(by)X
1000022478(a)X
1000032540(descriptor)X
1000042887(should)X
1000053126(be)X
1000063228(individually)X
1000073640(free'd)X
1000083859(using)X
1000090 f
100010576 864(dwarf_dealloc\(\))N
1000111 f
1000121329(with)X
1000131504(either)X
1000141720(the)X
1000151850(allocation)X
1000162198(type)X
1000170 f
1000182396(DW_DLA_CIE)X
1000191 f
100020(,)S
1000212928(or)X
1000220 f
1000233055(DW_DLA_FDE)X
1000241 f
1000253567(as)X
1000263666(appropriate)X
100027576 960(when)N
100028824(no)X
100029978(longer)X
1000301257(of)X
1000311398(interest.)X
1000321748(Each)X
1000331984(of)X
1000342126(the)X
1000352299(blocks)X
1000362583(of)X
1000372725(descriptors)X
1000383152(should)X
1000393440(be)X
1000403591(free'd)X
1000413859(using)X
1000420 f
100043576 1056(dwarf_dealloc\(\))N
1000441 f
1000451316(with)X
1000461478(the)X
1000471596(allocation)X
1000481932(type)X
1000490 f
1000502118(DW_DLA_LIST)X
1000511 f
1000522666(when)X
1000532860(no)X
1000542960(longer)X
1000553185(of)X
1000563272(interest.)X
1000573 f
1000589 s
100059576 1392(5.12.0.3)N
100060846(dwarf_get_cie_of_fde\(\))X
1000610 f
10006210 s
100063576 1536(int)N
100064768(dwarf_get_cie_of_fde\(Dwarf_Fde)X
1000652256(fde,)X
100066960 1632(Dwarf_Cie)N
1000671440(*cie_returned,)X
100068960 1728(Dwarf_Error)N
1000691536(*error\);)X
100070576 1872(dwarf_get_cie_of_fde\(\))N
1000711 f
1000721668(stores)X
1000731891(a)X
1000740 f
1000751991(Dwarf_Cie)X
1000761 f
1000772459(into)X
1000782619(the)X
1000790 f
1000802802(Dwarf_Cie)X
1000811 f
1000823271(that)X
1000830 f
1000843456(cie_returned)X
1000851 f
100086576 1968(points)N
100087791(at.)X
100088576 2160(If)N
100089673(one)X
100090832(has)X
100091982(called)X
1000921217(dwarf_get_fde_list)X
1000931866(and)X
1000942025(does)X
1000952215(not)X
1000962360(wish)X
1000972554(to)X
1000982659 0.2321(dwarf_dealloc\(\))AX
1000993216(all)X
1001003340(the)X
1001013482(individual)X
1001023850(FDEs)X
100103576 2256(immediately,)N
1001041023(one)X
1001051166(must)X
1001061348(also)X
1001071504(avoid)X
1001081709(dwarf_dealloc-ing)X
1001092325(the)X
1001102450(CIEs)X
1001112636(for)X
1001122756(those)X
1001132951(FDEs)X
1001143159(not)X
1001153287(immediately)X
1001163713(dealloc'd.)X
100117576 2352(Failing)N
100118824(to)X
100119908(observe)X
1001201180(this)X
1001211317(restriction)X
1001221664(will)X
1001231810(cause)X
1001242011(the)X
1001252152(FDE\(s\))X
1001262411(not)X
1001272536(dealloced)X
1001282867(to)X
1001292952(become)X
1001303225(invalid:)X
1001313492(an)X
1001323591(FDE)X
1001333765(contains)X
100134576 2448(\(hidden)N
100135857(in)X
100136955(it\))X
1001371062(a)X
1001381134(CIE)X
1001391299(pointer)X
1001401562(which)X
1001411794(will)X
1001421954(be)X
1001432066(be)X
1001442178(invalid)X
1001452436(\(stale,)X
1001462666(pointing)X
1001472968(to)X
1001483066(freed)X
1001493268(memory\))X
1001503598(if)X
1001513682(the)X
1001523815(CIE)X
1001533979(is)X
100154576 2544(dealloc'd.)N
100155941(The)X
1001561092(invalid)X
1001571340(CIE)X
1001581495(pointer)X
1001591748(internal)X
1001602019(to)X
1001612107(the)X
1001622231(FDE)X
1001632408(cannot)X
1001642648(be)X
1001652751(detected)X
1001663046(as)X
1001673140(invalid)X
1001683389(by)X
1001693496(libdwarf.)X
1001703835(If)X
1001713916(one)X
100172576 2640(later)N
100173739(passes)X
100174964(an)X
1001751060(FDE)X
1001761231(with)X
1001771393(a)X
1001781449(stale)X
1001791616(internal)X
1001801881(CIE)X
1001812030(pointer)X
1001822277(to)X
1001832359(one)X
1001842495(of)X
1001852582(the)X
1001862700(routines)X
1001872978(taking)X
1001883198(an)X
1001893294(FDE)X
1001903465(as)X
1001913552(input)X
1001923736(the)X
1001933854(result)X
100194576 2736(will)N
100195720(be)X
100196816(failure)X
1001971046(of)X
1001981133(the)X
1001991251(call)X
1002001387(\(returning)X
1002011728(DW_DLV_ERROR\))X
1002022420(at)X
1002032499(best)X
1002042649(and)X
1002052786(it)X
1002062851(is)X
1002072925(possible)X
1002083208(a)X
1002093265(coredump)X
1002103607(or)X
1002113695(worse)X
1002123908(will)X
100213576 2832(happpen)N
100214868(\(eventually\).)X
1002150 f
100216576 3120(dwarf_get_cie_of_fde\(\))N
1002171 f
1002181653(returns)X
1002190 f
1002201925(DW_DLV_OK)X
1002211 f
1002222378(if)X
1002232448(it)X
1002242513(is)X
1002252587(successful)X
1002262939(\(it)X
1002273032(will)X
1002283178(be)X
1002293276(unless)X
1002303498(fde)X
1002313623(is)X
1002323698(the)X
1002333818(NULL)X
100234576 3216(pointer\).)N
100235890(It)X
100236959(returns)X
1002370 f
1002381230(DW_DLV_ERROR)X
1002391 f
1002401826(if)X
1002411895(the)X
1002422013(fde)X
1002432136(is)X
1002442209(invalid)X
1002452451(\(NULL\).)X
100246576 3456(Each)N
1002470 f
100248809(Dwarf_Fde)X
1002491 f
1002501285(descriptor)X
1002511650(describes)X
1002521993(information)X
1002532415(about)X
1002542637(the)X
1002552779(frame)X
1002563011(for)X
1002573149(a)X
1002583229(particular)X
1002593582(subroutine)X
1002603965(or)X
100261576 3552(function.)N
1002620 f
100263576 3744(int)N
100264768(dwarf_get_fde_for_die)X
1002651 f
1002661796(is)X
1002671869(SGI/MIPS)X
1002682226(specific.)X
1002693 f
1002709 s
100271576 3984(5.12.0.4)N
100272846(dwarf_get_fde_for_die\(\))X
1002730 f
10027410 s
100275576 4128(int)N
100276768(dwarf_get_fde_for_die\()X
100277960 4224(Dwarf_Debug)N
1002781536(dbg,)X
100279960 4320(Dwarf_Die)N
1002801440(die,)X
100281960 4416(Dwarf_Fde)N
1002821440(*)X
1002831584(return_fde,)X
100284960 4512(Dwarf_Error)N
1002851536(*error\))X
1002861 f
100287576 4656(When)N
100288788(it)X
100289853(succeeds,)X
1002900 f
1002911208(dwarf_get_fde_for_die\(\))X
1002921 f
1002932333(returns)X
1002940 f
1002952605(DW_DLV_OK)X
1002961 f
1002973058(and)X
1002983195(sets)X
1002990 f
1003003364(*return_fde)X
1003011 f
1003023913(to)X
1003033996(a)X
1003040 f
100305576 4752(Dwarf_Fde)N
1003061 f
1003071070(descriptor)X
1003081453(representing)X
1003091912(frame)X
1003102162(information)X
1003112602(for)X
1003122758(the)X
1003132918(given)X
1003140 f
1003153186(die)X
1003161 f
100317(.)S
1003183432(It)X
1003193543(looks)X
1003203778(for)X
1003213934(the)X
1003220 f
100323576 4848(DW_AT_MIPS_fde)N
1003241 f
1003251269(attribute)X
1003261557(in)X
1003271640(the)X
1003281759(given)X
1003290 f
1003301986(die)X
1003311 f
100332(.)S
1003332191(If)X
1003342266(it)X
1003352331(finds)X
1003362512(it,)X
1003372597(is)X
1003382671(uses)X
1003392830(the)X
1003402949(value)X
1003413144(of)X
1003423232(the)X
1003433351(attribute)X
1003443640(as)X
1003453729(the)X
1003463849(offset)X
100347576 4944(in)N
100348682(the)X
100349824(.debug_frame)X
1003501312(section)X
1003511583(where)X
1003521824(the)X
1003531966(FDE)X
1003542161(begins.)X
1003552454(If)X
1003562552(there)X
1003572757(is)X
1003582854(no)X
1003590 f
1003603006(DW_AT_MIPS_fde)X
1003611 f
1003623722(it)X
1003633809(returns)X
1003640 f
100365576 5040(DW_DLV_NO_ENTRY)N
1003661 f
100367(.)S
1003681356(If)X
1003691430(there)X
1003701611(is)X
1003711684(an)X
1003721780(error)X
1003731957(it)X
1003742021(returns)X
1003750 f
1003762292(DW_DLV_ERROR)X
1003771 f
100378(.)S
1003793 f
1003809 s
100381576 5280(5.12.0.5)N
100382846(dwarf_get_fde_range\(\))X
1003831 f
10038410 s
100385576 6164(rev)N
100386699(1.52,)X
100387879(02)X
100388979(Oct)X
1003891115(2003)X
1003902217(-)X
1003912264(41)X
1003922364(-)X
100393
10039442 p
100395%%Page: 42 42
1003960(Courier)xf 0 f
10039710 s 0 xH 0 xS 0 f
1003981 f
1003992217 384(-)N
1004002264(42)X
1004012364(-)X
1004020 f
100403576 768(int)N
100404768(dwarf_get_fde_range\()X
100405960 864(Dwarf_Fde)N
1004061440(fde,)X
100407960 960(Dwarf_Addr)N
1004081488(*low_pc,)X
100409960 1056(Dwarf_Unsigned)N
1004101680(*func_length,)X
100411960 1152(Dwarf_Ptr)N
1004121440(*fde_bytes,)X
100413960 1248(Dwarf_Unsigned)N
1004141680(*fde_byte_length,)X
100415960 1344(Dwarf_Off)N
1004161440(*cie_offset,)X
100417960 1440(Dwarf_Signed)N
1004181584(*cie_index,)X
100419960 1536(Dwarf_Off)N
1004201440(*fde_offset,)X
100421960 1632(Dwarf_Error)N
1004221536(*error\);)X
1004231 f
100424576 1776(On)N
100425699(success,)X
1004260 f
1004271013(dwarf_get_fde_range\(\))X
1004281 f
1004292046(returns)X
1004300 f
1004312323(DW_DLV_OK)X
1004321 f
100433(.)S
1004342821(The)X
1004352972(location)X
1004363256(pointed)X
1004373522(to)X
1004383610(by)X
1004390 f
1004403744(low_pc)X
1004411 f
100442576 1872(is)N
100443652(set)X
100444764(to)X
100445849(the)X
100446970(low)X
1004471113(pc)X
1004481211(value)X
1004491407(for)X
1004501523(this)X
1004511660(function.)X
1004521989(The)X
1004532136(location)X
1004542416(pointed)X
1004552678(to)X
1004562762(by)X
1004570 f
1004582892(func_length)X
1004591 f
1004603442(is)X
1004613517(set)X
1004623628(to)X
1004633712(the)X
1004643832(length)X
100465576 1968(of)N
100466672(the)X
100467799(function)X
1004681095(in)X
1004691186(bytes.)X
1004701424(This)X
1004711595(is)X
1004721677(essentially)X
1004732044(the)X
1004742171(length)X
1004752400(of)X
1004762496(the)X
1004772623(text)X
1004782773(section)X
1004793030(for)X
1004803154(the)X
1004813282(function.)X
1004823619(The)X
1004833774(location)X
100484576 2064(pointed)N
100485841(to)X
100486928(by)X
1004870 f
1004881061(fde_bytes)X
1004891 f
1004901518(is)X
1004911596(set)X
1004921710(to)X
1004931797(the)X
1004941920(address)X
1004952186(where)X
1004962408(the)X
1004972531(FDE)X
1004982707(begins)X
1004992940(in)X
1005003026(the)X
1005013148(.debug_frame)X
1005023616(section.)X
1005033907(The)X
100504576 2160(location)N
100505860(pointed)X
1005061126(to)X
1005071214(by)X
1005080 f
1005091348(fde_byte_length)X
1005101 f
1005112095(is)X
1005122175(set)X
1005132291(to)X
1005142380(the)X
1005152505(length)X
1005162732(in)X
1005172821(bytes)X
1005183017(of)X
1005193111(the)X
1005203236(portion)X
1005213494(of)X
1005223588(.debug_frame)X
100523576 2256(for)N
100524691(this)X
100525827(FDE.)X
1005261039(This)X
1005271202(is)X
1005281276(the)X
1005291395(same)X
1005301581(as)X
1005311669(the)X
1005321787(value)X
1005331981(returned)X
1005342269(by)X
1005350 f
1005362397(dwarf_get_fde_range)X
1005371 f
100538(.)S
1005393369(The)X
1005403514(location)X
1005413792(pointed)X
100542576 2352(to)N
100543666(by)X
1005440 f
100545802(cie_offset)X
1005461 f
1005471310(is)X
1005481391(set)X
1005491508(to)X
1005501598(the)X
1005511724(offset)X
1005521935(in)X
1005532025(the)X
1005542151(.debug_frame)X
1005552623(section)X
1005562878(of)X
1005572973(the)X
1005583100(CIE)X
1005593258(used)X
1005603434(by)X
1005613543(this)X
1005623687(FDE.)X
1005633907(The)X
100564576 2448(location)N
100565864(pointed)X
1005661134(to)X
1005671226(by)X
1005680 f
1005691364(cie_index)X
1005701 f
1005711826(is)X
1005721909(set)X
1005732028(to)X
1005742120(the)X
1005752248(index)X
1005762456(of)X
1005772553(the)X
1005782681(CIE)X
1005792840(used)X
1005803017(by)X
1005813127(this)X
1005823271(FDE.)X
1005833491(The)X
1005843645(index)X
1005853852(is)X
1005863934(the)X
100587576 2544(index)N
100588774(of)X
100589861(the)X
100590979(CIE)X
1005911128(in)X
1005921210(the)X
1005931328(list)X
1005941445(pointed)X
1005951705(to)X
1005961787(by)X
1005970 f
1005981915(cie_data)X
1005991 f
1006002319(as)X
1006012406(set)X
1006022516(by)X
1006032617(the)X
1006042736(function)X
1006050 f
1006063052(dwarf_get_fde_list\(\))X
1006071 f
100608(.)S
100609576 2640(However,)N
100610915(if)X
100611987(the)X
1006121108(function)X
1006130 f
1006141426(dwarf_get_fde_for_die\(\))X
1006151 f
1006162553(was)X
1006172701(used)X
1006182871(to)X
1006192956(obtain)X
1006203179(the)X
1006213300(given)X
1006220 f
1006233529(fde)X
1006241 f
100625(,)S
1006263716(this)X
1006273854(index)X
100628576 2736(may)N
100629734(not)X
100630856(be)X
100631952(correct.)X
1006321236(The)X
1006331381(location)X
1006341659(pointed)X
1006351919(to)X
1006362001(by)X
1006370 f
1006382129(fde_offset)X
1006391 f
1006402629(is)X
1006412702(set)X
1006422811(to)X
1006432893(the)X
1006443011(offset)X
1006453214(of)X
1006463301(the)X
1006473419(start)X
1006483577(of)X
1006493664(this)X
1006503799(FDE)X
1006513970(in)X
100652576 2832(the)N
100653694(.debug_frame)X
1006541158(section.)X
1006550 f
1006561501(dwarf_get_fde_range\(\))X
1006571 f
1006582529(returns)X
1006590 f
1006602800(DW_DLV_ERROR)X
1006611 f
1006623396(on)X
1006633496(error.)X
1006643 f
1006659 s
100666576 3072(5.12.0.6)N
100667846(dwarf_get_cie_info\(\))X
1006680 f
10066910 s
100670576 3216(int)N
100671768(dwarf_get_cie_info\()X
100672960 3312(Dwarf_Cie)N
1006731728(cie,)X
100674960 3408(Dwarf_Unsigned)N
1006751680(*bytes_in_cie,)X
100676960 3504(Dwarf_Small)N
1006771680(*version,)X
100678960 3600(char)N
1006791632(**augmenter,)X
100680960 3696(Dwarf_Unsigned)N
1006811680(*code_alignment_factor,)X
100682960 3792(Dwarf_Signed)N
1006831584(*data_alignment_factor,)X
100684960 3888(Dwarf_Half)N
1006851680(*return_address_register_rule,)X
100686960 3984(Dwarf_Ptr)N
1006871680(*initial_instructions,)X
100688960 4080(Dwarf_Unsigned)N
1006891680(*initial_instructions_length,)X
100690960 4176(Dwarf_Error)N
1006911680(*error\);)X
100692576 4320(dwarf_get_cie_info\(\))N
1006931 f
1006941563(is)X
1006951643(primarily)X
1006961968(for)X
1006972090(Internal-level)X
1006982551(Interface)X
1006992866(consumers.)X
1007003277(If)X
1007013359(successful,)X
1007023737(it)X
1007033809(returns)X
1007040 f
100705576 4416(DW_DLV_OK)N
1007061 f
1007071033(and)X
1007081174(sets)X
1007090 f
1007101347(*bytes_in_cie)X
1007111 f
1007121996(to)X
1007132083(the)X
1007142206(number)X
1007152476(of)X
1007162568(bytes)X
1007172762(in)X
1007182849(the)X
1007192972(portion)X
1007203228(of)X
1007213320(the)X
1007223443(frames)X
1007233687(section)X
1007243938(for)X
100725576 4512(the)N
100726697(CIE)X
100727849(represented)X
1007281243(by)X
1007291346(the)X
1007301467(given)X
1007310 f
1007321696(Dwarf_Cie)X
1007331 f
1007342151(descriptor,)X
1007350 f
1007362543(cie)X
1007371 f
100738(.)S
1007392750(The)X
1007402898(other)X
1007413086(fields)X
1007423287(are)X
1007433409(directly)X
1007443678(taken)X
1007453876(from)X
100746576 4608(the)N
100747694(cie)X
100748808(and)X
100749944(returned,)X
1007501252(via)X
1007511370(the)X
1007521488(pointers)X
1007531766(to)X
1007541848(the)X
1007551966(caller.)X
1007562205(It)X
1007572274(returns)X
1007580 f
1007592545(DW_DLV_ERROR)X
1007601 f
1007613141(on)X
1007623241(error.)X
1007633 f
1007649 s
100765576 4848(5.12.0.7)N
100766846(dwarf_get_fde_instr_bytes\(\))X
1007670 f
10076810 s
100769576 4992(int)N
100770768(dwarf_get_fde_instr_bytes\()X
100771960 5088(Dwarf_Fde)N
1007721440(fde,)X
100773960 5184(Dwarf_Ptr)N
1007741440(*outinstrs,)X
100775960 5280(Dwarf_Unsigned)N
1007761680(*outlen,)X
100777960 5376(Dwarf_Error)N
1007781536(*error\);)X
100779576 5520(dwarf_get_fde_instr_bytes\(\))N
1007801 f
1007811892(returns)X
1007820 f
1007832163(DW_DLV_OK)X
1007841 f
1007852615(and)X
1007862751(sets)X
1007870 f
1007882919(*outinstrs)X
1007891 f
1007903419(to)X
1007913501(a)X
1007923557(pointer)X
1007933804(to)X
1007943886(a)X
1007953943(set)X
100796576 5616(of)N
100797666(bytes)X
100798858(which)X
1007991077(are)X
1008001199(the)X
1008011320(actual)X
1008021535(frame)X
1008031746(instructions)X
1008042142(for)X
1008052259(this)X
1008062397(fde.)X
1008072563(It)X
1008082634(also)X
1008092785(sets)X
1008100 f
1008112955(*outlen)X
1008121 f
1008133313(to)X
1008143397(the)X
1008153517(length,)X
1008163759(in)X
1008173843(bytes,)X
100818576 5712(of)N
100819669(the)X
100820793(frame)X
1008211007(instructions.)X
1008221446(It)X
1008231521(returns)X
1008240 f
1008251798(DW_DLV_ERROR)X
1008261 f
1008272401(on)X
1008282508(error.)X
1008292732(It)X
1008302808(never)X
1008313014(returns)X
1008320 f
1008333292(DW_DLV_NO_ENTRY)X
1008341 f
100835(.)S
100836576 5808(The)N
100837730(intent)X
100838941(is)X
1008391023(to)X
1008401114(allow)X
1008411321(low-level)X
1008421653(consumers)X
1008432024(like)X
1008442172(a)X
1008452236(dwarf-dumper)X
1008462724(to)X
1008472814(print)X
1008482993(the)X
1008493119(bytes)X
1008503316(in)X
1008513406(some)X
1008523603(fashion.)X
1008533907(The)X
100854576 6164(rev)N
100855699(1.52,)X
100856879(02)X
100857979(Oct)X
1008581115(2003)X
1008592217(-)X
1008602264(42)X
1008612364(-)X
100862
10086343 p
100864%%Page: 43 43
1008650(Courier)xf 0 f
10086610 s 0 xH 0 xS 0 f
1008671 f
1008682217 384(-)N
1008692264(43)X
1008702364(-)X
100871576 768(memory)N
100872863(pointed)X
1008731123(to)X
1008741205(by)X
1008750 f
1008761333(outinstrs)X
1008771 f
1008781785(must)X
1008791960(not)X
1008802082(be)X
1008812178(changed)X
1008822466(and)X
1008832602(there)X
1008842783(is)X
1008852856(nothing)X
1008863120(to)X
1008873202(free.)X
1008883 f
1008899 s
100890576 1008(5.12.0.8)N
100891846(dwarf_get_fde_info_for_reg\(\))X
1008920 f
10089310 s
100894576 1152(int)N
100895768(dwarf_get_fde_info_for_reg\()X
100896960 1248(Dwarf_Fde)N
1008971440(fde,)X
100898960 1344(Dwarf_Half)N
1008991488(table_column,)X
100900960 1440(Dwarf_Addr)N
1009011488(pc_requested,)X
100902960 1536(Dwarf_Signed)N
1009031584(*offset_relevant,)X
100904960 1632(Dwarf_Signed)N
1009051584(*register_num,)X
100906960 1728(Dwarf_Signed)N
1009071584(*offset,)X
100908960 1824(Dwarf_Addr)N
1009091488(*row_pc,)X
100910960 1920(Dwarf_Error)N
1009111536(*error\);)X
100912576 2064(dwarf_get_fde_info_for_reg\(\))N
1009131 f
1009141946(returns)X
1009150 f
1009162224(DW_DLV_OK)X
1009171 f
1009182683(and)X
1009192826(sets)X
1009200 f
1009213001(*offset_relevant)X
1009221 f
1009233796(to)X
1009243885(non-)X
100925576 2160(zero)N
100926759(if)X
100927852(the)X
100928994(offset)X
1009291221(is)X
1009301318(relevant)X
1009311621(for)X
1009321759(the)X
1009331901(row)X
1009342070(specified)X
1009352404(by)X
1009360 f
1009372556(pc_requested)X
1009381 f
1009393176(and)X
1009403336(column)X
1009413619(specified)X
1009423952(by)X
1009430 f
100944576 2256(table_column)N
1009451 f
100946(,)S
1009471198(for)X
1009481318(the)X
1009491442(FDE)X
1009501619(specified)X
1009511935(by)X
1009520 f
1009532069(fde)X
1009541 f
100955(.)S
1009562279(The)X
1009572430(intent)X
1009582639(is)X
1009592719(to)X
1009602808(return)X
1009613027(the)X
1009623152(rule)X
1009633304(for)X
1009643425(the)X
1009653550(given)X
1009663755(pc)X
1009673858(value)X
100968576 2352(and)N
100969721(register.)X
1009701031(The)X
1009711185(location)X
1009721472(pointed)X
1009731741(to)X
1009741832(by)X
1009750 f
1009761969(register_num)X
1009771 f
1009782574(is)X
1009792656(set)X
1009802774(to)X
1009812865(the)X
1009822992(register)X
1009833262(value)X
1009843465(for)X
1009853588(the)X
1009863714(rule.)X
1009873907(The)X
100988576 2448(location)N
100989856(pointed)X
1009901118(to)X
1009911202(by)X
1009920 f
1009931332(offset)X
1009941 f
1009951643(is)X
1009961719(set)X
1009971831(to)X
1009981916(the)X
1009992037(offset)X
1010002243(value)X
1010012440(for)X
1010022557(the)X
1010032678(rule.)X
1010042866(If)X
1010052943(offset)X
1010063149(is)X
1010073225(not)X
1010083350(relevant)X
1010093632(for)X
1010103749(this)X
1010113887(rule,)X
1010120 f
101013576 2544(*offset_relevant)N
1010141 f
1010151368(is)X
1010161445(set)X
1010171558(to)X
1010181644(zero.)X
1010191847(Since)X
1010202049(more)X
1010212237(than)X
1010222398(one)X
1010232537(pc)X
1010242636(value)X
1010252833(will)X
1010262980(have)X
1010273155(rows)X
1010283334(with)X
1010293499(identical)X
1010303798(entries,)X
101031576 2640(the)N
101032711(user)X
101033882(may)X
1010341057(want)X
1010351250(to)X
1010361349(know)X
1010371564(the)X
1010381699(earliest)X
1010391968(pc)X
1010402081(value)X
1010412292(after)X
1010422477(which)X
1010432710(the)X
1010442845(rules)X
1010453038(for)X
1010463170(all)X
1010473288(the)X
1010483424(columns)X
1010493733(remained)X
101050576 2736(unchanged.)N
101051987(Recall)X
1010521215(that)X
1010531358(in)X
1010541443(the)X
1010551564(virtual)X
1010561796(table)X
1010571975(that)X
1010582118(the)X
1010592239(frame)X
1010602450(information)X
1010612851(represents)X
1010623199(there)X
1010633382(may)X
1010643542(be)X
1010653640(one)X
1010663778(or)X
1010673867(more)X
101068576 2832(table)N
101069761(rows)X
101070946(with)X
1010711117(identical)X
1010721422(data)X
1010731585(\(each)X
1010741789(such)X
1010751965(table)X
1010762150(row)X
1010772304(at)X
1010782391(a)X
1010792456(different)X
1010802762(pc)X
1010812867(value\).)X
1010823137(Given)X
1010833362(a)X
1010840 f
1010853456(pc_requested)X
1010861 f
101087576 2928(which)N
101088801(refers)X
1010891014(to)X
1010901105(a)X
1010911170(pc)X
1010921275(in)X
1010931366(such)X
1010941542(a)X
1010951606(group)X
1010961821(of)X
1010971916(identical)X
1010982220(rows,)X
1010992424(the)X
1011002550(location)X
1011012836(pointed)X
1011023104(to)X
1011033194(by)X
1011040 f
1011053330(row_pc)X
1011061 f
1011073646(is)X
1011083727(set)X
1011093844(to)X
1011103934(the)X
101111576 3024(lowest)N
101112818(pc)X
101113927(value)X
1011141134(within)X
1011151371(the)X
1011161502(group)X
1011171722(of)X
1011181842(identical)X
1011192151(rows.)X
1011202380(The)X
1011212558(value)X
1011222765(put)X
1011232901(in)X
1011240 f
1011253025(*register_num)X
1011261 f
1011273683(any)X
1011283833(of)X
1011293934(the)X
1011300 f
101131576 3120(DW_FRAME_*)N
1011321 f
1011331076(table)X
1011341252(columns)X
1011351543(values)X
1011361768(specified)X
1011372078(in)X
1011380 f
1011392188(libdwarf.h)X
1011401 f
1011412688(or)X
1011420 f
1011432803(dwarf.h)X
1011441 f
101145(.)S
1011460 f
101147576 3312(dwarf_get_fde_info_for_reg)N
1011481 f
1011491844(returns)X
1011500 f
1011512115(DW_DLV_ERROR)X
1011521 f
1011532711(if)X
1011542780(there)X
1011552961(is)X
1011563034(an)X
1011573130(error.)X
101158576 3504(It)N
101159645(is)X
101160718(usable)X
101161943(with)X
1011621105(either)X
1011630 f
1011641336(dwarf_get_fde_n\(\))X
1011651 f
1011662172(or)X
1011670 f
1011682287(dwarf_get_fde_at_pc\(\))X
1011691 f
101170(.)S
1011713 f
1011729 s
101173576 3744(5.12.0.9)N
101174846(dwarf_get_fde_info_for_all_regs\(\))X
1011750 f
10117610 s
101177576 3888(int)N
101178768(dwarf_get_fde_info_for_all_regs\()X
101179960 3984(Dwarf_Fde)N
1011801440(fde,)X
101181960 4080(Dwarf_Addr)N
1011821488(pc_requested,)X
101183960 4176(Dwarf_Regtable)N
1011841680(*reg_table,)X
101185960 4272(Dwarf_Addr)N
1011861488(*row_pc,)X
101187960 4368(Dwarf_Error)N
1011881536(*error\);)X
101189576 4512(dwarf_get_fde_info_for_all_regs\(\))N
1011901 f
1011912196(returns)X
1011920 f
1011932483(DW_DLV_OK)X
1011941 f
1011952951(and)X
1011963103(sets)X
1011970 f
1011983287(*reg_table)X
1011991 f
1012003803(for)X
1012013934(the)X
101202576 4608(row)N
101203730(specified)X
1012041049(by)X
1012050 f
1012061186(pc_requested)X
1012071 f
1012081791(for)X
1012091914(the)X
1012102041(FDE)X
1012112221(specified)X
1012122540(by)X
1012130 f
1012142677(fde)X
1012151 f
101216(.)S
1012172870(The)X
1012183024(intent)X
1012193235(is)X
1012203317(to)X
1012213408(return)X
1012223628(the)X
1012233754(rules)X
1012243938(for)X
101225576 4704(decoding)N
101226903(all)X
1012271016(the)X
1012281147(registers,)X
1012291472(given)X
1012301683(a)X
1012311752(pc)X
1012321861(value.)X
1012330 f
1012342164(reg_table)X
1012351 f
1012362629(is)X
1012372715(an)X
1012382824(array)X
1012393023(of)X
1012403123(rules,)X
1012413332(one)X
1012423481(for)X
1012433609(each)X
1012443791(register)X
101245576 4800(specified)N
101246890(in)X
1012470 f
1012481004(dwarf.h)X
1012491 f
101250(.)S
1012511384(The)X
1012521533(rule)X
1012531682(for)X
1012541800(each)X
1012551972(register)X
1012562237(contains)X
1012572528(three)X
1012582713(items)X
1012592910(-)X
1012600 f
1012612989(dw_regnum)X
1012621 f
1012633445(which)X
1012643665(denotes)X
1012653934(the)X
101266576 4896(register)N
101267879(value)X
1012681115(for)X
1012691271(that)X
1012701453(rule,)X
1012710 f
1012721688(dw_offset)X
1012731 f
1012742182(which)X
1012752440(denotes)X
1012762747(the)X
1012772907(offset)X
1012783152(value)X
1012793388(for)X
1012803545(that)X
1012813728(rule)X
1012823916(and)X
1012830 f
101284576 4992(dw_offset_relevant)N
1012851 f
1012861507(which)X
1012871770(is)X
1012881890(set)X
1012892046(to)X
1012902175(zero)X
1012912381(if)X
1012922497(offset)X
1012932747(is)X
1012942866(not)X
1012953034(relevant)X
1012963359(for)X
1012973519(that)X
1012983705(rule.)X
1012993916(See)X
1013000 f
101301576 5088(dwarf_get_fde_info_fo_reg\(\))N
1013021 f
1013031892(for)X
1013042006(a)X
1013052062(description)X
1013062438(of)X
1013070 f
1013082553(row_pc)X
1013091 f
101310(.)S
1013110 f
101312576 5280(dwarf_get_fde_info_for_all_regs)N
1013131 f
1013142084(returns)X
1013150 f
1013162355(DW_DLV_ERROR)X
1013171 f
1013182951(if)X
1013193020(there)X
1013203201(is)X
1013213274(an)X
1013223370(error.)X
1013230 f
101324576 5472(int)N
101325768(dwarf_get_fde_info_for_all_regs)X
1013261 f
1013272276(is)X
1013282349(SGI/MIPS)X
1013292706(specific.)X
1013303 f
1013319 s
101332576 5616(5.12.0.10)N
101333882(dwarf_get_fde_n\(\))X
1013341 f
10133510 s
101336576 6164(rev)N
101337699(1.52,)X
101338879(02)X
101339979(Oct)X
1013401115(2003)X
1013412217(-)X
1013422264(43)X
1013432364(-)X
101344
10134544 p
101346%%Page: 44 44
1013470(Courier)xf 0 f
10134810 s 0 xH 0 xS 0 f
1013491 f
1013502217 384(-)N
1013512264(44)X
1013522364(-)X
1013530 f
101354576 768(int)N
101355864(dwarf_get_fde_n\()X
101356960 864(Dwarf_Fde)N
1013571440(*fde_data,)X
101358960 960(Dwarf_Unsigned)N
1013591680(fde_index,)X
101360960 1056(Dwarf_Fde)N
1013611680(*returned_fde)X
101362960 1152(Dwarf_Error)N
1013631536(*error\);)X
101364576 1296(dwarf_get_fde_n\(\))N
1013651 f
1013661454(returns)X
1013670 f
1013681767(DW_DLV_OK)X
1013691 f
1013702261(and)X
1013712439(sets)X
1013720 f
1013732649(returned_fde)X
1013741 f
1013753287(to)X
1013763411(the)X
1013770 f
1013783600(Dwarf_Fde)X
1013791 f
101380576 1392(descriptor)N
101381948(whose)X
1013821204(index)X
1013831433(is)X
1013840 f
1013851565(fde_index)X
1013861 f
1013872048(in)X
1013882161(the)X
1013892310(table)X
1013902517(of)X
1013910 f
1013922663(Dwarf_Fde)X
1013931 f
1013943146(descriptors)X
1013953549(pointed)X
1013963840(to)X
1013973952(by)X
1013980 f
101399576 1488(fde_data)N
1014001 f
101401(.)S
1014021030(The)X
1014031185(index)X
1014041393(starts)X
1014051592(with)X
1014061764(0.)X
1014071874(Returns)X
1014080 f
1014092181(DW_DLV_NO_ENTRY)X
1014101 f
1014112931(if)X
1014123010(the)X
1014133139(index)X
1014143348(does)X
1014153526(not)X
1014163659(exist)X
1014173841(in)X
1014183934(the)X
101419576 1584(table)N
101420753(of)X
1014210 f
101422869(Dwarf_Fde)X
1014231 f
1014241322(descriptors.)X
1014251735(Returns)X
1014260 f
1014272033(DW_DLV_ERROR)X
1014281 f
1014292630(if)X
1014302700(there)X
1014312882(is)X
1014322956(an)X
1014333053(error.)X
1014343271(This)X
1014353434(function)X
1014363722(cannot)X
1014373956(be)X
101438576 1680(used)N
101439812(unless)X
1014401101(the)X
1014411289(block)X
1014421557(of)X
1014430 f
1014441742(Dwarf_Fde)X
1014451 f
1014462264(descriptors)X
1014472706(has)X
1014482903(been)X
1014493145(created)X
1014503468(by)X
1014513638(a)X
1014523764(call)X
1014533970(to)X
1014540 f
101455576 1776(dwarf_get_fde_list\(\))N
1014561 f
101457(.)S
1014583 f
1014599 s
101460576 2016(5.12.0.11)N
101461882(dwarf_get_fde_at_pc\(\))X
1014620 f
10146310 s
101464576 2160(int)N
101465864(dwarf_get_fde_at_pc\()X
101466960 2256(Dwarf_Fde)N
1014671440(*fde_data,)X
101468960 2352(Dwarf_Addr)N
1014691488(pc_of_interest,)X
101470960 2448(Dwarf_Fde)N
1014711440(*returned_fde,)X
101472960 2544(Dwarf_Addr)N
1014731488(*lopc,)X
101474960 2640(Dwarf_Addr)N
1014751488(*hipc,)X
101476960 2736(Dwarf_Error)N
1014771536(*error\);)X
101478576 2880(dwarf_get_fde_at_pc\(\))N
1014791 f
1014801629(returns)X
1014810 f
1014821926(DW_DLV_OK)X
1014831 f
1014842404(and)X
1014852566(sets)X
1014860 f
1014872760(returned_fde)X
1014881 f
1014893382(to)X
1014903490(a)X
1014910 f
1014923600(Dwarf_Fde)X
1014931 f
101494576 2976(descriptor)N
101495918(for)X
1014961033(a)X
1014971090(function)X
1014981378(which)X
1014991594(contains)X
1015001881(the)X
1015011999(pc)X
1015022095(value)X
1015032289(specified)X
1015042599(by)X
1015050 f
1015062727(pc_of_interest)X
1015071 f
101508(.)S
1015093459(In)X
1015103546(addition,)X
1015113848(it)X
1015123912(sets)X
101513576 3072(the)N
101514694(locations)X
1015151003(pointed)X
1015161263(to)X
1015171345(by)X
1015180 f
1015191473(lopc)X
1015201 f
1015211685(and)X
1015220 f
1015231849(hipc)X
1015241 f
1015252062(to)X
1015262145(the)X
1015272264(low)X
1015282405(address)X
1015292667(and)X
1015302804(the)X
1015312923(high)X
1015323086(address)X
1015333348(covered)X
1015343624(by)X
1015353725(this)X
1015363861(FDE,)X
101537576 3168(respectively.)N
1015381094(It)X
1015391233(returns)X
1015400 f
1015411574(DW_DLV_ERROR)X
1015421 f
1015432240(on)X
1015442410(error.)X
1015452696(It)X
1015462834(returns)X
1015470 f
1015483174(DW_DLV_NO_ENTRY)X
1015491 f
1015503983(if)X
1015510 f
101552576 3264(pc_of_interest)N
1015531 f
1015541283(is)X
1015551371(not)X
1015561508(in)X
1015571605(any)X
1015581756(of)X
1015591858(the)X
1015601992(FDEs)X
1015612210(represented)X
1015622617(by)X
1015632733(the)X
1015642867(block)X
1015653081(of)X
1015660 f
1015673212(Dwarf_Fde)X
1015681 f
1015693680(descriptors)X
101570576 3360(pointed)N
101571837(to)X
101572920(by)X
1015730 f
1015741049(fde_data)X
1015751 f
101576(.)S
1015771494(This)X
1015781657(function)X
1015791945(cannot)X
1015802180(be)X
1015812277(used)X
1015822445(unless)X
1015832666(the)X
1015842785(block)X
1015852984(of)X
1015860 f
1015873100(Dwarf_Fde)X
1015881 f
1015893553(descriptors)X
1015903925(has)X
101591576 3456(been)N
101592748(created)X
1015931001(by)X
1015941101(a)X
1015951157(call)X
1015961293(to)X
1015970 f
1015981403(dwarf_get_fde_list\(\))X
1015991 f
101600(.)S
1016013 f
1016029 s
101603576 3696(5.12.0.12)N
101604882(dwarf_expand_frame_instructions\(\))X
1016050 f
10160610 s
101607576 3840(int)N
101608768(dwarf_expand_frame_instructions\()X
101609960 3936(Dwarf_Debug)N
1016101536(dbg,)X
101611960 4032(Dwarf_Ptr)N
1016121440(instruction,)X
101613960 4128(Dwarf_Unsigned)N
1016141680(i_length,)X
101615960 4224(Dwarf_Frame_Op)N
1016161680(**returned_op_list,)X
101617960 4320(Dwarf_Signed)N
1016181680(*)X
1016191776(returned_op_count,)X
101620960 4416(Dwarf_Error)N
1016211536(*error\);)X
101622576 4560(dwarf_expand_frame_instructions\(\))N
1016231 f
1016242183(is)X
1016252259(a)X
1016262318(High-level)X
1016272684(interface)X
1016282989(function)X
1016293279(which)X
1016303498(expands)X
1016313784(a)X
1016323844(frame)X
101633576 4656(instruction)N
101634950(byte)X
1016351120(stream)X
1016361366(into)X
1016371521(an)X
1016381628(array)X
1016391825(of)X
1016400 f
1016411951(Dwarf_Frame_Op)X
1016421 f
1016432654(structures.)X
1016443037(To)X
1016453157(indicate)X
1016463442(success,)X
1016473734(it)X
1016483809(returns)X
1016490 f
101650576 4752(DW_DLV_OK)N
1016511 f
101652(.)S
1016531072(The)X
1016541222(address)X
1016551488(where)X
1016561710(the)X
1016571833(byte)X
1016581996(stream)X
1016592235(begins)X
1016602469(is)X
1016612547(specified)X
1016622862(by)X
1016630 f
1016642995(instruction)X
1016651 f
101666(,)S
1016673568(and)X
1016683709(the)X
1016693832(length)X
101670576 4848(of)N
101671668(the)X
101672790(byte)X
101673952(stream)X
1016741190(is)X
1016751267(specified)X
1016761581(by)X
1016770 f
1016781713(i_length)X
1016791 f
101680(.)S
1016812161(The)X
1016822310(location)X
1016832592(pointed)X
1016842856(to)X
1016852942(by)X
1016860 f
1016873074(returned_op_list)X
1016881 f
1016893866(is)X
1016903943(set)X
101691576 4944(to)N
101692663(point)X
101693852(to)X
101694939(a)X
1016951000(table)X
1016961181(of)X
1016970 f
1016981301(returned_op_count)X
1016991 f
1017002142(pointers)X
1017012425(to)X
1017020 f
1017032540(Dwarf_Frame_Op)X
1017041 f
1017053237(which)X
1017063458(contain)X
1017073720(the)X
1017083844(frame)X
101709576 5040(instructions)N
1017101027(in)X
1017111167(the)X
1017121343(byte)X
1017131558(stream.)X
1017141889(It)X
1017152015(returns)X
1017160 f
1017172343(DW_DLV_ERROR)X
1017181 f
1017192996(on)X
1017203153(error.)X
1017213427(It)X
1017223553(never)X
1017233809(returns)X
1017240 f
101725576 5136(DW_DLV_NO_ENTRY)N
1017261 f
101727(.)S
1017281392(After)X
1017291618(a)X
1017301710(successful)X
1017312096(return,)X
1017322364(the)X
1017332518(array)X
1017342740(of)X
1017352864(structures)X
1017363233(should)X
1017373503(be)X
1017383636(freed)X
1017393859(using)X
1017400 f
101741576 5232(dwarf_dealloc\(\))N
1017421 f
1017431329(with)X
1017441504(the)X
1017451635(allocation)X
1017461984(type)X
1017470 f
1017482183(DW_DLA_FRAME_BLOCK)X
1017491 f
1017503080(\(when)X
1017513314(they)X
1017523485(are)X
1017533616(no)X
1017543728(longer)X
1017553965(of)X
101756576 5328(interest\).)N
101757576 6164(rev)N
101758699(1.52,)X
101759879(02)X
101760979(Oct)X
1017611115(2003)X
1017622217(-)X
1017632264(44)X
1017642364(-)X
101765
10176645 p
101767%%Page: 45 45
1017680(Courier)xf 0 f
10176910 s 0 xH 0 xS 0 f
1017701 f
1017712217 384(-)N
1017722264(45)X
1017732364(-)X
1017740 f
101775736 768(Dwarf_Signed)N
1017761360(cnt;)X
101777736 864(Dwarf_Frame_Op)N
1017781456(*frameops;)X
101779736 960(Dwarf_Ptr)N
1017801216(instruction;)X
101781736 1056(Dwarf_Unsigned)N
1017821456(len;)X
101783736 1152(int)N
101784928(res;)X
101785736 1344(if)N
101786880(\(expand_frame_instructions\(dbg,instruction,len,)X
1017873184(&frameops,&cnt,)X
1017883952(&error\))X
1017891168 1440(==)N
1017901312(DW_DLV_OK\))X
1017911840({)X
1017921120 1632(for)N
1017931312(\(i)X
1017941456(=)X
1017951552(0;)X
1017961696(i)X
1017971792(<)X
1017981888(cnt;)X
1017992128(++i\))X
1018002368({)X
1018011504 1728(/*)N
1018021648(use)X
1018031840(frameops[i])X
1018042416(*/)X
1018051120 1824(})N
1018061120 1920(dwarf_dealloc\(dbg,)N
1018072032(frameops,)X
1018082512(DW_DLA_FRAME_BLOCK\);)X
101809736 2016(})N
1018103 f
10181111 s
101812576 2400(5.13)N
101813774(Location)X
1018141129(Expression)X
1018151567(Evaluation)X
1018161 f
10181710 s
101818576 2640(An)N
101819699("interpreter")X
1018201125(which)X
1018211346(evaluates)X
1018221670(a)X
1018231731(location)X
1018242014(expression)X
1018252383(is)X
1018262462(required)X
1018272756(in)X
1018282844(any)X
1018292986(debugger.)X
1018303351(There)X
1018313565(is)X
1018323644(no)X
1018333750(interface)X
101834576 2736(defined)N
101835837(here)X
101836996(at)X
1018371074(this)X
1018381209(time.)X
101839576 2976(One)N
101840744(problem)X
1018411045(with)X
1018421221(defining)X
1018431522(an)X
1018441632(interface)X
1018451948(is)X
1018462035(that)X
1018472189(operations)X
1018482557(are)X
1018492690(machine)X
1018502996(dependent:)X
1018513382(they)X
1018523554(depend)X
1018533820(on)X
1018543934(the)X
101855576 3072(interpretation)N
1018561029(of)X
1018571117(register)X
1018581379(numbers)X
1018591676(and)X
1018601813(the)X
1018611932(methods)X
1018622224(of)X
1018632312(getting)X
1018642554(values)X
1018652779(from)X
1018662955(the)X
1018673073(environment)X
1018683498(the)X
1018693616(expression)X
1018703979(is)X
101871576 3168(applied)N
101872832(to.)X
101873576 3408(It)N
101874645(would)X
101875865(be)X
101876961(desirable)X
1018771271(to)X
1018781353(specify)X
1018791605(an)X
1018801701(interface.)X
1018813 f
101882576 3648(5.13.1)N
101883816(Location)X
1018841138(List)X
1018851291(Internal-level)X
1018861774(Interface)X
1018879 s
101888576 3936(5.13.1.1)N
101889846(dwarf_get_loclist_entry\(\))X
1018900 f
10189110 s
101892576 4080(int)N
101893768(dwarf_get_loclist_entry\()X
101894960 4176(Dwarf_Debug)N
1018951536(dbg,)X
101896960 4272(Dwarf_Unsigned)N
1018971680(offset,)X
101898960 4368(Dwarf_Addr)N
1018991488(*hipc_offset,)X
101900960 4464(Dwarf_Addr)N
1019011488(*lopc_offset,)X
101902960 4560(Dwarf_Ptr)N
1019031440(*data,)X
101904960 4656(Dwarf_Unsigned)N
1019051680(*entry_len,)X
101906960 4752(Dwarf_Unsigned)N
1019071680(*next_entry,)X
101908960 4848(Dwarf_Error)N
1019091536(*error\))X
101910576 4992(dwarf_dwarf_get_loclist_entry\(\))N
1019111 f
1019122285(returns)X
1019130 f
1019142757(DW_DLV_OK)X
1019151 f
1019163411(if)X
1019173682(successful.)X
1019180 f
101919576 5088(DW_DLV_NO_ENTRY)N
1019201 f
1019211325(is)X
1019221407(returned)X
1019231704(when)X
1019241907(the)X
1019252034(offset)X
1019262246(passed)X
1019272489(in)X
1019282580(is)X
1019292662(beyond)X
1019302927(the)X
1019313054(end)X
1019323199(of)X
1019333295(the)X
1019343422(.debug_loc)X
1019353805(section)X
101936576 5184(\(expected)N
101937918(if)X
101938996(you)X
1019391145(start)X
1019401312(at)X
1019411399(offset)X
1019421611(zero)X
1019431779(and)X
1019441924(proceed)X
1019452208(thru)X
1019462366(all)X
1019472475(the)X
1019482602(entries\).)X
1019490 f
1019502968(DW_DLV_ERROR)X
1019511 f
1019523573(is)X
1019533655(returned)X
1019543952(on)X
101955576 5280(error.)N
101956805(The)X
101957962(function)X
1019581261(reads)X
1019591463(a)X
1019601531(location)X
1019611821(list)X
1019621950(entry)X
1019632147(starting)X
1019642419(at)X
1019650 f
1019662537(offset)X
1019671 f
1019682857(and)X
1019693005(returns)X
1019703260(through)X
1019713541(pointers)X
1019723831(\(when)X
101973576 5376(successful\))N
101974963(the)X
1019751091(high)X
1019761263(pc)X
1019770 f
1019781397(hipc_offset)X
1019791 f
101980(,)S
1019811975(low)X
1019822126(pc)X
1019830 f
1019842261(lopc_offset)X
1019851 f
101986(,)S
1019872840(a)X
1019882907(pointer)X
1019893165(to)X
1019903258(the)X
1019913387(location)X
1019923676(description)X
101993576 5472(data)N
1019940 f
101995766(data)X
1019961 f
101997(,)S
1019981005(the)X
1019991130(length)X
1020001357(of)X
1020011451(the)X
1020021576(location)X
1020031861(description)X
1020042244(data)X
1020050 f
1020062433(entry_len)X
1020071 f
102008(,)S
1020092912(and)X
1020103055(the)X
1020113180(offset)X
1020123390(of)X
1020133484(the)X
1020143609(next)X
1020153774(location)X
102016576 5568(description)N
102017952(entry)X
1020180 f
1020191165(next_entry)X
1020201 f
102021(.)S
102022576 5712(The)N
1020230 f
102024758(hipc_offset)X
1020251 f
102026(,)S
1020271335(low)X
1020281484(pc)X
1020290 f
1020301617(lopc_offset)X
1020311 f
1020322174(are)X
1020332302(offsets)X
1020342545(from)X
1020352730(the)X
1020362857(beginning)X
1020373207(of)X
1020383304(the)X
1020393432(current)X
1020403690(procedure,)X
102041576 5808(not)N
102042698(genuine)X
102043972(pc)X
1020441068(values.)X
102045576 6164(rev)N
102046699(1.52,)X
102047879(02)X
102048979(Oct)X
1020491115(2003)X
1020502217(-)X
1020512264(45)X
1020522364(-)X
102053
10205446 p
102055%%Page: 46 46
1020560(Courier)xf 0 f
10205710 s 0 xH 0 xS 0 f
1020581 f
1020592217 384(-)N
1020602264(46)X
1020612364(-)X
1020623 f
10206311 s
102064576 768(5.14)N
102065774(Abbreviations)X
1020661329(access)X
1020671 f
10206810 s
102069576 912(These)N
102070788(are)X
102071907(Internal-level)X
1020721360(Interface)X
1020731667(functions.)X
1020742025(Debuggers)X
1020752393(can)X
1020762525(ignore)X
1020772750(this.)X
1020783 f
102079576 1152(5.14.1)N
102080816(dwarf_get_abbrev\(\))X
1020810 f
102082576 1296(int)N
102083768(dwarf_get_abbrev\()X
102084960 1392(Dwarf_Debug)N
1020851536(dbg,)X
102086960 1488(Dwarf_Unsigned)N
1020871680(offset,)X
102088960 1584(Dwarf_Abbrev)N
1020891680(*returned_abbrev,)X
102090960 1680(Dwarf_Unsigned)N
1020911680(*length,)X
102092960 1776(Dwarf_Unsigned)N
1020931680(*attr_count,)X
102094960 1872(Dwarf_Error)N
1020951536(*error\))X
1020961 f
102097576 2016(The)N
102098750(function)X
1020990 f
1021001094(dwarf_get_abbrev\(\))X
1021011 f
1021022007(returns)X
1021030 f
1021042307(DW_DLV_OK)X
1021051 f
1021062788(and)X
1021072954(sets)X
1021080 f
1021093152(*returned_abbrev)X
1021101 f
1021113970(to)X
1021120 f
102113576 2112(Dwarf_Abbrev)N
1021141 f
1021151191(descriptor)X
1021161551(for)X
1021171684(an)X
1021181798(abbreviation)X
1021192237(at)X
1021202333(offset)X
1021210 f
1021222582(*offset)X
1021231 f
1021242956(in)X
1021253056(the)X
1021263192(abbreviations)X
1021273662(section)X
1021283927(\(i.e)X
102129576 2208(.debug_abbrev\))N
1021301108(on)X
1021311219(success.)X
1021321531(The)X
1021331687(user)X
1021341852(is)X
1021351936(responsible)X
1021362332(for)X
1021372457(making)X
1021382728(sure)X
1021392893(that)X
1021403044(a)X
1021413111(valid)X
1021423302(abbreviation)X
1021433734(begins)X
1021443974(at)X
1021450 f
102146576 2304(offset)N
1021471 f
102148888(in)X
102149974(the)X
1021501096(abbreviations)X
1021511552(section.)X
1021521843(The)X
1021531992(location)X
1021542274(pointed)X
1021552538(to)X
1021562624(by)X
1021570 f
1021582756(length)X
1021591 f
1021603068(is)X
1021613145(set)X
1021623258(to)X
1021633344(the)X
1021643465(length)X
1021653688(in)X
1021663773(bytes)X
1021673965(of)X
102168576 2400(the)N
102169708(abbreviation)X
1021701143(in)X
1021711240(the)X
1021721373(abbreviations)X
1021731840(section.)X
1021742142(The)X
1021752302(location)X
1021762595(pointed)X
1021772870(to)X
1021782967(by)X
1021790 f
1021803110(attr_count)X
1021811 f
1021823625(is)X
1021833713(set)X
1021843837(to)X
1021853934(the)X
102186576 2496(number)N
102187846(of)X
102188938(attributes)X
1021891261(in)X
1021901348(the)X
1021911471(abbreviation.)X
1021921937(An)X
1021932060(abbreviation)X
1021942486(entry)X
1021952676(with)X
1021962843(a)X
1021972904(length)X
1021983128(of)X
1021993219(1)X
1022003283(is)X
1022013360(the)X
1022023482(0)X
1022033546(byte)X
1022043708(of)X
1022053799(the)X
1022063921(last)X
102207576 2592(abbreviation)N
102208997(entry)X
1022091182(of)X
1022101269(a)X
1022111325(compilation)X
1022121727(unit.)X
1022130 f
1022141967(dwarf_get_abbrev\(\))X
1022151 f
1022162851(returns)X
1022170 f
1022183122(DW_DLV_ERROR)X
1022191 f
1022203718(on)X
1022213818(error.)X
1022223 f
102223576 2832(5.14.2)N
102224816(dwarf_get_abbrev_tag\(\))X
1022250 f
102226576 2976(int)N
102227768(dwarf_get_abbrev_tag\()X
102228960 3072(Dwarf_abbrev)N
1022291584(abbrev,)X
102230960 3168(Dwarf_Half)N
1022311536(*return_tag,)X
102232960 3264(Dwarf_Error)N
1022331536(*error\);P)X
1022341 f
102235576 3408(If)N
102236653(successful,)X
1022370 f
1022381054(dwarf_get_abbrev_tag\(\))X
1022391 f
1022402133(returns)X
1022410 f
1022422407(DW_DLV_OK)X
1022431 f
1022442862(and)X
1022453001(sets)X
1022460 f
1022473172(*return_tag)X
1022481 f
1022493723(to)X
1022503808(the)X
1022512 f
1022523930(tag)X
1022531 f
102254576 3504(of)N
102255663(the)X
102256781(given)X
102257979(abbreviation.)X
1022581440(It)X
1022591509(returns)X
1022600 f
1022611780(DW_DLV_ERROR)X
1022621 f
1022632376(on)X
1022642476(error.)X
1022652693(It)X
1022662762(never)X
1022672961(returns)X
1022680 f
1022693232(DW_DLV_NO_ENTRY)X
1022701 f
102271(.)S
1022723 f
102273576 3744(5.14.3)N
102274816(dwarf_get_abbrev_code\(\))X
1022750 f
102276576 3888(int)N
102277768(dwarf_get_abbrev_code\()X
102278960 3984(Dwarf_abbrev)N
1022791776(abbrev,)X
102280960 4080(Dwarf_Unsigned)N
1022811728(*return_code,)X
102282960 4176(Dwarf_Error)N
1022831728(*error\);P)X
1022841 f
102285576 4320(If)N
102286656(successful,)X
1022870 f
1022881060(dwarf_get_abbrev_code\(\))X
1022891 f
1022902190(returns)X
1022910 f
1022922467(DW_DLV_OK)X
1022931 f
1022942925(and)X
1022953067(sets)X
1022960 f
1022973242(*return_code)X
1022981 f
1022993845(to)X
1023003934(the)X
102301576 4416(abbreviation)N
1023021017(code)X
1023031209(of)X
1023041316(the)X
1023051454(given)X
1023061672(abbreviation.)X
1023072153(It)X
1023082242(returns)X
1023090 f
1023102533(DW_DLV_ERROR)X
1023111 f
1023123148(on)X
1023133267(error.)X
1023143503(It)X
1023153591(never)X
1023163809(returns)X
1023170 f
102318576 4512(DW_DLV_NO_ENTRY)N
1023191 f
102320(.)S
1023213 f
102322576 4752(5.14.4)N
102323816(dwarf_get_abbrev_children_flag\(\))X
1023240 f
102325576 4896(int)N
102326768(dwarf_get_abbrev_children_flag\()X
102327960 4992(Dwarf_Abbrev)N
1023281584(abbrev,)X
102329960 5088(Dwarf_Signed)N
1023301632(*returned_flag,)X
102331960 5184(Dwarf_Error)N
1023321536(*error\))X
1023331 f
102334576 5328(The)N
102335797(function)X
1023360 f
1023371189(dwarf_get_abbrev_children_flag\(\))X
1023381 f
1023392822(returns)X
1023400 f
1023413170(DW_DLV_OK)X
1023421 f
1023433699(and)X
1023443912(sets)X
1023450 f
102346576 5424(returned_flag)N
1023471 f
1023481243(to)X
1023490 f
1023501376(DW_children_no)X
1023511 f
1023522091(\(if)X
1023532210(the)X
1023542351(given)X
1023552572(abbreviation)X
1023563016(indicates)X
1023573344(that)X
1023583507(a)X
1023593586(die)X
1023603727(with)X
1023613912(that)X
102362576 5520(abbreviation)N
1023631000(has)X
1023641130(no)X
1023651233(children\))X
1023661546(or)X
1023670 f
1023681664(DW_children_yes)X
1023691 f
1023702407(\(if)X
1023712506(the)X
1023722628(given)X
1023732830(abbreviation)X
1023743255(indicates)X
1023753564(that)X
1023763708(a)X
1023773768(die)X
1023783890(with)X
102379576 5616(that)N
102380716(abbreviation)X
1023811137(has)X
1023821264(a)X
1023831320(child\).)X
1023841567(It)X
1023851636(returns)X
1023860 f
1023871907(DW_DLV_ERROR)X
1023881 f
1023892503(on)X
1023902603(error.)X
102391576 6164(rev)N
102392699(1.52,)X
102393879(02)X
102394979(Oct)X
1023951115(2003)X
1023962217(-)X
1023972264(46)X
1023982364(-)X
102399
10240047 p
102401%%Page: 47 47
1024020(Courier)xf 0 f
10240310 s 0 xH 0 xS 0 f
1024041 f
1024052217 384(-)N
1024062264(47)X
1024072364(-)X
1024083 f
102409576 768(5.14.5)N
102410816 0.1359(dwarf_get_abbrev_entry\(\))AX
1024110 f
102412576 912(int)N
102413768(dwarf_get_abbrev_entry\()X
102414960 1008(Dwarf_Abbrev)N
1024151584(abbrev,)X
102416960 1104(Dwarf_Signed)N
1024171584(index,)X
102418960 1200(Dwarf_Half)N
1024191584(*attr_num,)X
102420960 1296(Dwarf_Signed)N
1024211584(*form,)X
102422960 1392(Dwarf_Off)N
1024231440(*offset,)X
102424960 1488(Dwarf_Error)N
1024251536(*error\))X
1024261 f
102427576 1728(If)N
102428667(successful,)X
1024290 f
1024301082(dwarf_get_abbrev_entry\(\))X
1024311 f
1024322271(returns)X
1024330 f
1024342559(DW_DLV_OK)X
1024351 f
1024363028(and)X
1024373181(sets)X
1024380 f
1024393366(*attr_num)X
1024401 f
1024413835(to)X
1024423934(the)X
102443576 1824(attribute)N
102444872(code)X
1024451052(of)X
1024461147(the)X
1024471273(attribute)X
1024481568(whose)X
1024491801(index)X
1024502007(is)X
1024512088(specified)X
1024522406(by)X
1024530 f
1024542542(index)X
1024551 f
1024562810(in)X
1024572900(the)X
1024583026(given)X
1024593232(abbreviation.)X
1024603701(The)X
1024613854(index)X
102462576 1920(starts)N
102463767(at)X
102464847(0.)X
102465949(The)X
1024661096(location)X
1024671376(pointed)X
1024681638(to)X
1024691722(by)X
1024700 f
1024711852(form)X
1024721 f
1024732066(is)X
1024742141(set)X
1024752252(to)X
1024762336(the)X
1024772456(form)X
1024782634(of)X
1024792724(the)X
1024802845(attribute.)X
1024813175(The)X
1024823323(location)X
1024833604(pointed)X
1024843867(to)X
1024853952(by)X
1024860 f
102487576 2016(offset)N
1024881 f
102489930(is)X
1024901049(set)X
1024911204(to)X
1024921332(the)X
1024931496(byte)X
1024941700(offset)X
1024951949(of)X
1024962081(the)X
1024972244(attribute)X
1024982576(in)X
1024992703(the)X
1025002866(abbreviations)X
1025013363(section.)X
1025023695(It)X
1025033809(returns)X
1025040 f
102505576 2112(DW_DLV_NO_ENTRY)N
1025061 f
1025071316(if)X
1025081385(the)X
1025091503(index)X
1025101701(specified)X
1025112011(is)X
1025122084(outside)X
1025132335(the)X
1025142453(range)X
1025152652(of)X
1025162739(attributes)X
1025173058(in)X
1025183141(this)X
1025193277(abbreviation.)X
1025203739(It)X
1025213809(returns)X
1025220 f
102523576 2208(DW_DLV_ERROR)N
1025241 f
1025251172(on)X
1025261272(error.)X
1025273 f
10252811 s
102529576 2448(5.15)N
102530774(String)X
1025311031(Section)X
1025321327(Operations)X
1025331 f
10253410 s
102535576 2592(The)N
102536738(.debug_str)X
1025371111(section)X
1025381376(contains)X
1025391681(only)X
1025401861(strings.)X
1025412152(Debuggers)X
1025422538(need)X
1025432728(never)X
1025442945(use)X
1025453090(this)X
1025463243(interface:)X
1025473585(it)X
1025483667(is)X
1025493758(only)X
1025503938(for)X
102551576 2688(debugging)N
102552934(problems)X
1025531252(with)X
1025541414(the)X
1025551532(string)X
1025561734(section)X
1025571981(itself.)X
1025583 f
102559576 2928(5.15.1)N
102560816(dwarf_get_str\(\))X
1025610 f
102562576 3072(int)N
102563768(dwarf_get_str\()X
102564960 3168(Dwarf_Debug)N
1025651632(dbg,)X
102566960 3264(Dwarf_Off)N
1025671632(offset,)X
102568960 3360(char)N
1025691536(**string,)X
102570960 3456(Dwarf_Signed)N
1025711584(*returned_str_len,)X
102572960 3552(Dwarf_Error)N
1025731584(*error\))X
1025741 f
102575576 3696(The)N
102576744(function)X
1025770 f
1025781082(dwarf_get_str\(\))X
1025791 f
1025801845(returns)X
1025810 f
1025822140(DW_DLV_OK)X
1025831 f
1025842616(and)X
1025852776(sets)X
1025860 f
1025872968(*returned_str_len)X
1025881 f
1025893828(to)X
1025903934(the)X
102591576 3792(length)N
102592800(of)X
102593891(the)X
1025941013(string,)X
1025951238(not)X
1025961363(counting)X
1025971666(the)X
1025981787(null)X
1025991934(terminator,)X
1026002311(that)X
1026012454(begins)X
1026022686(at)X
1026032767(the)X
1026042888(offset)X
1026053094(specified)X
1026063407(by)X
1026070 f
1026083538(offset)X
1026091 f
1026103849(in)X
1026113934(the)X
102612576 3888(.debug_str)N
102613933(section.)X
1026141221(The)X
1026151367(location)X
1026161646(pointed)X
1026171907(to)X
1026181990(by)X
1026190 f
1026202119(string)X
1026211 f
1026222428(is)X
1026232502(set)X
1026242612(to)X
1026252695(a)X
1026262752(pointer)X
1026273000(to)X
1026283083(this)X
1026293219(string.)X
1026303462(The)X
1026313608(next)X
1026323767(string)X
1026333970(in)X
102634576 3984(the)N
102635705(.debug_str)X
1026361072(section)X
1026371330(begins)X
1026381570(at)X
1026391659(the)X
1026401788(previous)X
1026410 f
1026422123(offset)X
1026431 f
1026442442(+)X
1026452518(1)X
1026462589(+)X
1026470 f
1026482692(*returned_str_len)X
1026491 f
102650(.)S
1026513578(A)X
1026523666(zero-length)X
102653576 4080(string)N
102654782(is)X
102655859(NOT)X
1026561048(the)X
1026571170(end)X
1026581310(of)X
1026591401(the)X
1026601523(section.)X
1026611814(If)X
1026621892(there)X
1026632077(is)X
1026642155(no)X
1026652260(.debug_str)X
1026662621(section,)X
1026670 f
1026682921(DW_DLV_NO_ENTRY)X
1026691 f
1026703666(is)X
1026713744(returned.)X
102672576 4176(If)N
102673654(there)X
102674839(is)X
102675916(an)X
1026761016(error,)X
1026770 f
1026781245(DW_DLV_ERROR)X
1026791 f
1026801845(is)X
1026811922(returned.)X
1026822254(If)X
1026832332(we)X
1026842450(are)X
1026852572(at)X
1026862653(the)X
1026872774(end)X
1026882913(of)X
1026893003(the)X
1026903124(section)X
1026913374(\(that)X
1026923544(is,)X
1026930 f
1026943668(offset)X
1026951 f
1026963979(is)X
102697576 4272(one)N
102698712(past)X
102699861(the)X
102700979(end)X
1027011115(of)X
1027021202(the)X
1027031320(section\))X
1027040 f
1027051622(DW_DLV_NO_ENTRY)X
1027061 f
1027072362(is)X
1027082435(returned.)X
1027092763(If)X
1027102837(the)X
1027110 f
1027122983(offset)X
1027131 f
1027143292(is)X
1027153366(some)X
1027163556(other)X
1027173742(too-large)X
102718576 4368(value)N
102719770(then)X
1027200 f
102721956(DW_DLV_ERROR)X
1027221 f
1027231552(is)X
1027241625(returned.)X
1027253 f
10272611 s
102727576 4608(5.16)N
102728774(Address)X
1027291103(Range)X
1027301364(Operations)X
1027311 f
10273210 s
102733576 4752(These)N
102734791(functions)X
1027351112(provide)X
1027361380(information)X
1027371781(about)X
1027381982(address)X
1027392246(ranges.)X
1027402519(Address)X
1027412805(ranges)X
1027423038(map)X
1027433199(ranges)X
1027443432(of)X
1027453522(pc)X
1027463621(values)X
1027473849(to)X
1027483934(the)X
102749576 4848(corresponding)N
1027501055(compilation-unit)X
1027511608(die)X
1027521726(that)X
1027531866(covers)X
1027542096(the)X
1027552214(address)X
1027562475(range.)X
1027573 f
102758576 5088(5.16.1)N
102759816(dwarf_get_aranges\(\))X
1027600 f
102761576 5232(int)N
102762768(dwarf_get_aranges\()X
102763960 5328(Dwarf_Debug)N
1027641536(dbg,)X
102765960 5424(Dwarf_Arange)N
1027661584(**aranges,)X
102767960 5520(Dwarf_Signed)N
1027681584(*)X
1027691680(returned_arange_count,)X
102770960 5616(Dwarf_Error)N
1027711536(*error\))X
1027721 f
102773576 5760(The)N
102774901(function)X
1027750 f
1027761397(dwarf_get_aranges\(\))X
1027771 f
1027782510(returns)X
1027790 f
1027802962(DW_DLV_OK)X
1027811 f
1027823595(and)X
1027833912(sets)X
1027840 f
102785576 5856(*returned_arange_count)N
1027861 f
1027871672(to)X
1027881774(the)X
1027891912(count)X
1027902130(of)X
1027912236(the)X
1027922373(number)X
1027932657(of)X
1027942763(address)X
1027953043(ranges)X
1027963292(in)X
1027973393(the)X
1027983530(.debug_aranges)X
102799576 6164(rev)N
102800699(1.52,)X
102801879(02)X
102802979(Oct)X
1028031115(2003)X
1028042217(-)X
1028052264(47)X
1028062364(-)X
102807
10280848 p
102809%%Page: 48 48
1028100(Courier)xf 0 f
10281110 s 0 xH 0 xS 0 f
1028121 f
1028132217 384(-)N
1028142264(48)X
1028152364(-)X
102816576 768(section.)N
102817873(It)X
102818953(sets)X
1028190 f
1028201132(*aranges)X
1028211 f
1028221547(to)X
1028231640(point)X
1028241835(to)X
1028251928(a)X
1028261995(block)X
1028272204(of)X
1028280 f
1028292330(Dwarf_Arange)X
1028301 f
1028312937(descriptors,)X
1028323340(one)X
1028333487(for)X
1028343612(each)X
1028353791(address)X
102836576 864(range.)N
102837856(It)X
102838965(returns)X
1028390 f
1028401276(DW_DLV_ERROR)X
1028411 f
1028421912(on)X
1028432052(error.)X
1028442309(It)X
1028452418(returns)X
1028460 f
1028472729(DW_DLV_NO_ENTRY)X
1028481 f
1028493509(if)X
1028503618(there)X
1028513839(is)X
1028523952(no)X
102853576 960(.debug_aranges)N
1028541098(section.)X
1028550 f
102856736 1200(Dwarf_Signed)N
1028571360(cnt;)X
102858736 1296(Dwarf_Arange)N
1028591360(*arang;)X
102860736 1488(if)N
102861880(\(\(dwarf_get_aranges\(dbg,)X
1028622080(&arang,&cnt,)X
1028632704(&error\)\))X
1028643136(==)X
1028653280(DW_DLV_OK\))X
1028663808({)X
1028671120 1680(for)N
1028681312(\(i)X
1028691456(=)X
1028701552(0;)X
1028711696(i)X
1028721792(<)X
1028731888(cnt;)X
1028742128(++i\))X
1028752368({)X
1028761504 1776(/*)N
1028771648(use)X
1028781840(arang[i])X
1028792272(*/)X
1028801504 1872(dwarf_dealloc\(dbg,)N
1028812416(arang[i],)X
1028822896(DW_DLA_ARANGE\);)X
1028831120 1968(})N
1028841120 2064(dwarf_dealloc\(dbg,)N
1028852032(arang,)X
1028862368(DW_DLA_LIST\);)X
102887736 2160(})N
102888576 2544(int)N
102889768(dwarf_get_arange\()X
102890960 2640(Dwarf_Arange)N
1028911584(*aranges,)X
102892960 2736(Dwarf_Unsigned)N
1028931680(arange_count,)X
102894960 2832(Dwarf_Addr)N
1028951488(address,)X
102896960 2928(Dwarf_Arange)N
1028971680(*returned_arange,)X
102898960 3024(Dwarf_Error)N
1028991536(*error\))X
1029001 f
102901576 3168(The)N
102902723(function)X
1029030 f
1029041040(dwarf_get_arange\(\))X
1029051 f
1029061926(takes)X
1029072113(as)X
1029082202(input)X
1029092388(a)X
1029102446(pointer)X
1029112695(to)X
1029122779(a)X
1029132837(block)X
1029143037(of)X
1029150 f
1029163155(Dwarf_Arange)X
1029171 f
1029183754(pointers,)X
102919576 3264(and)N
102920720(a)X
102921784(count)X
102922990(of)X
1029231085(the)X
1029241211(number)X
1029251483(of)X
1029261577(descriptors)X
1029271956(in)X
1029282045(the)X
1029292170(block.)X
1029302415(It)X
1029312491(then)X
1029322656(searches)X
1029332956(for)X
1029343077(the)X
1029353202(descriptor)X
1029363550(that)X
1029373697(covers)X
1029383934(the)X
102939576 3360(given)N
1029400 f
102941825(address)X
1029421 f
102943(.)S
1029441244(If)X
1029451341(it)X
1029461428(finds)X
1029471631(one,)X
1029481810(it)X
1029491897(returns)X
1029500 f
1029512191(DW_DLV_OK)X
1029521 f
1029532666(and)X
1029542825(sets)X
1029550 f
1029563016(*returned_arange)X
1029571 f
1029583828(to)X
1029593934(the)X
102960576 3456(descriptor.)N
102961986(It)X
1029621084(returns)X
1029630 f
1029641384(DW_DLV_ERROR)X
1029651 f
1029662008(on)X
1029672136(error.)X
1029682381(It)X
1029692478(returns)X
1029700 f
1029712777(DW_DLV_NO_ENTRY)X
1029721 f
1029733545(if)X
1029743642(there)X
1029753851(is)X
1029763952(no)X
102977576 3552(.debug_aranges)N
1029781098(entry)X
1029791283(covering)X
1029801584(that)X
1029811724(address.)X
1029823 f
102983576 3888(5.16.2)N
102984816 0.1458(dwarf_get_cu_die_offset\(\))AX
1029850 f
102986576 4032(int)N
102987768(dwarf_get_cu_die_offset\()X
102988960 4128(Dwarf_Arange)N
1029891584(arange,)X
102990960 4224(Dwarf_Off)N
1029911536(*returned_cu_die_offset,)X
102992960 4320(Dwarf_Error)N
1029931536(*error\))X
1029941 f
102995576 4464(The)N
102996730(function)X
1029970 f
1029981054(dwarf_get_cu_die_offset\(\))X
1029991 f
1030002283(takes)X
1030012477(a)X
1030020 f
1030032570(Dwarf_Arange)X
1030041 f
1030053175(descriptor)X
1030063526(as)X
1030073623(input,)X
1030083837(and)X
1030093983(if)X
103010576 4560(successful)N
103011964(returns)X
1030120 f
1030131273(DW_DLV_OK)X
1030141 f
1030151762(and)X
1030161935(sets)X
1030170 f
1030182140(*returned_cu_die_offset)X
1030191 f
1030203301(to)X
1030213420(the)X
1030223575(offset)X
1030233815(in)X
1030243934(the)X
103025576 4656(.debug_info)N
103026985(section)X
1030271236(of)X
1030281327(the)X
1030291449(compilation-unit)X
1030302006(DIE)X
1030312164(for)X
1030322283(the)X
1030332406(compilation-unit)X
1030342964(represented)X
1030353360(by)X
1030363465(the)X
1030373588(given)X
1030383791(address)X
103039576 4752(range.)N
103040815(It)X
103041884(returns)X
1030420 f
1030431155(DW_DLV_ERROR)X
1030441 f
1030451751(on)X
1030461851(error.)X
1030473 f
103048576 4992(5.16.3)N
103049816 0.1397(dwarf_get_arange_cu_header_offset\(\))AX
1030500 f
103051576 5136(int)N
103052768(dwarf_get_arange_cu_header_offset\()X
103053960 5232(Dwarf_Arange)N
1030541584(arange,)X
103055960 5328(Dwarf_Off)N
1030561536(*returned_cu_header_offset,)X
103057960 5424(Dwarf_Error)N
1030581536(*error\))X
1030591 f
103060576 5568(The)N
103061724(function)X
1030620 f
1030631042(dwarf_get_arange_cu_header_offset\(\))X
1030641 f
1030652745(takes)X
1030662933(a)X
1030670 f
1030683020(Dwarf_Arange)X
1030691 f
1030703620(descriptor)X
1030713965(as)X
103072576 5664(input,)N
103073782(and)X
103074920(if)X
103075991(successful)X
1030761343(returns)X
1030770 f
1030781616(DW_DLV_OK)X
1030791 f
1030802070(and)X
1030812208(sets)X
1030820 f
1030832378(*returned_cu_header_offset)X
1030841 f
1030853647(to)X
1030863730(the)X
1030873849(offset)X
103088576 5760(in)N
103089660(the)X
103090780(.debug_info)X
1030911187(section)X
1030921437(of)X
1030931527(the)X
1030941648(compilation-unit)X
1030952204(header)X
1030962442(for)X
1030972559(the)X
1030982680(compilation-unit)X
1030993236(represented)X
1031003630(by)X
1031013733(the)X
1031023854(given)X
103103576 5856(address)N
103104837(range.)X
1031051076(It)X
1031061145(returns)X
1031070 f
1031081416(DW_DLV_ERROR)X
1031091 f
1031102012(on)X
1031112112(error.)X
103112576 6164(rev)N
103113699(1.52,)X
103114879(02)X
103115979(Oct)X
1031161115(2003)X
1031172217(-)X
1031182264(48)X
1031192364(-)X
103120
10312149 p
103122%%Page: 49 49
1031230(Courier)xf 0 f
10312410 s 0 xH 0 xS 0 f
1031251 f
1031262217 384(-)N
1031272264(49)X
1031282364(-)X
103129576 768(This)N
103130738(function)X
1031311025(added)X
1031321237(Rev)X
1031331386(1.45,)X
1031341566(June,)X
1031351753(2001.)X
103136576 960(This)N
103137740(function)X
1031381029(is)X
1031391104(declared)X
1031401399(as)X
1031411488('optional')X
1031421826(in)X
1031431910(libdwarf.h)X
1031442265(on)X
1031452368(IRIX)X
1031462556(systems)X
1031472832(so)X
1031482926(the)X
1031493047(_MIPS_SYMBOL_PRESENT)X
103150576 1056(predicate)N
103151893(may)X
1031521053(be)X
1031531151(used)X
1031541320(at)X
1031551400(run)X
1031561529(time)X
1031571693(to)X
1031581777(determine)X
1031592120(if)X
1031602191(the)X
1031612311(version)X
1031622568(of)X
1031632656(libdwarf)X
1031642949(linked)X
1031653170(into)X
1031663315(an)X
1031673412(application)X
1031683789(has)X
1031693917(this)X
103170576 1152(function.)N
1031713 f
103172576 1584(5.16.4)N
103173816(dwarf_get_arange_info\(\))X
1031740 f
103175576 1728(int)N
103176768(dwarf_get_arange_info\()X
103177960 1824(Dwarf_Arange)N
1031781584(arange,)X
103179960 1920(Dwarf_Addr)N
1031801488(*start,)X
103181960 2016(Dwarf_Unsigned)N
1031821680(*length,)X
103183960 2112(Dwarf_Off)N
1031841440(*cu_die_offset,)X
103185960 2208(Dwarf_Error)N
1031861536(*error\))X
1031871 f
103188576 2352(The)N
103189725(function)X
1031900 f
1031911044(dwarf_get_arange_info\(\))X
1031921 f
1031932172(returns)X
1031940 f
1031952447(DW_DLV_OK)X
1031961 f
1031972903(and)X
1031983043(stores)X
1031993255(the)X
1032003378(starting)X
1032013643(value)X
1032023842(of)X
1032033934(the)X
103204576 2448(address)N
103205840(range)X
1032061042(in)X
1032071127(the)X
1032081248(location)X
1032091529(pointed)X
1032101792(to)X
1032111877(by)X
1032120 f
1032132008(start)X
1032141 f
103215(,)S
1032162291(the)X
1032172412(length)X
1032182635(of)X
1032192724(the)X
1032202844(address)X
1032213107(range)X
1032223308(in)X
1032233392(the)X
1032243512(location)X
1032253792(pointed)X
103226576 2544(to)N
103227661(by)X
1032280 f
103229792(length)X
1032301 f
103231(,)S
1032321123(and)X
1032331262(the)X
1032341383(offset)X
1032351589(in)X
1032361674(the)X
1032371795(.debug_info)X
1032382204(section)X
1032392455(of)X
1032402546(the)X
1032412668(compilation-unit)X
1032423225(DIE)X
1032433383(for)X
1032443501(the)X
1032453623(compilation-)X
103246576 2640(unit)N
103247720(represented)X
1032481111(by)X
1032491211(the)X
1032501329(address)X
1032511590(range.)X
1032521829(It)X
1032531898(returns)X
1032540 f
1032552169(DW_DLV_ERROR)X
1032561 f
1032572765(on)X
1032582865(error.)X
1032593 f
10326011 s
103261576 2880(5.17)N
103262774(General)X
1032631100(Low)X
1032641288(Level)X
1032651516(Operations)X
1032661 f
10326710 s
103268576 3024(This)N
103269738(function)X
1032701025(is)X
1032711098(low-level)X
1032721421(and)X
1032731557(intended)X
1032741853(for)X
1032751967(use)X
1032762094(only)X
1032772256(by)X
1032782356(programs)X
1032792679(such)X
1032802846(as)X
1032812933(dwarf-dumpers.)X
1032823 f
103283576 3264(5.17.1)N
103284816(dwarf_get_address_size\(\))X
1032850 f
103286576 3408(int)N
103287768(dwarf_get_address_size\(Dwarf_Debug)X
1032882448(dbg,)X
103289960 3504(Dwarf_Half)N
1032901536(*addr_size,)X
103291960 3600(Dwarf_Error)N
1032921536(*error\))X
1032931 f
103294576 3744(The)N
103295761(function)X
1032960 f
1032971116(dwarf_get_address_size\(\))X
1032981 f
1032992328(returns)X
1033000 f
1033012640(DW_DLV_OK)X
1033021 f
1033033133(on)X
1033043274(success)X
1033053576(and)X
1033063753(sets)X
1033073934(the)X
1033080 f
103309576 3840(*addr_size)N
1033101 f
1033111083(to)X
1033121172(the)X
1033131297(size)X
1033141449(in)X
1033151538(bytes)X
1033161734(of)X
1033171828(an)X
1033181931(address.)X
1033192239(In)X
1033202333(case)X
1033212498(of)X
1033222591(error,)X
1033232794(it)X
1033242864(returns)X
1033250 f
1033263141(DW_DLV_ERROR)X
1033271 f
1033283743(and)X
1033293885(does)X
103330576 3936(not)N
103331698(set)X
1033320 f
103333835(*addr_size)X
1033341 f
103335(.)S
1033363 f
10333711 s
103338576 4272(5.18)N
103339774(Utility)X
1033401036(Operations)X
1033411 f
10334210 s
103343576 4416(These)N
103344792(functions)X
1033451114(aid)X
1033461236(in)X
1033471322(the)X
1033481444(management)X
1033491878(of)X
1033501969(errors)X
1033512181(encountered)X
1033522598(when)X
1033532796(using)X
1033542993(functions)X
1033553315(in)X
1033563401(the)X
1033572 f
1033583523(libdwarf)X
1033591 f
1033603818(library)X
103361576 4512(and)N
103362712(releasing)X
1033631022(memory)X
1033641309(allocated)X
1033651619(as)X
1033661706(a)X
1033671762(result)X
1033681960(of)X
1033692047(a)X
1033702 f
1033712103(libdwarf)X
1033721 f
1033732393(operation.)X
1033743 f
103375576 4752(5.18.1)N
103376816(dwarf_errno\(\))X
1033770 f
103378576 4896(Dwarf_Unsigned)N
1033791296(dwarf_errno\()X
103380960 4992(Dwarf_Error)N
1033811536(error\))X
1033821 f
103383576 5136(The)N
103384746(function)X
1033850 f
1033861086(dwarf_errno\(\))X
1033871 f
1033881755(returns)X
1033892023(the)X
1033902166(error)X
1033912368(number)X
1033922658(corresponding)X
1033933162(to)X
1033943269(the)X
1033953413(error)X
1033963616(specified)X
1033973952(by)X
1033980 f
103399576 5232(error)N
1034001 f
103401(.)S
1034023 f
103403576 5472(5.18.2)N
103404816 0.2404(dwarf_errmsg\(\))AX
1034050 f
103406576 5616(const)N
103407864(char*)X
1034081152(dwarf_errmsg\()X
103409960 5712(Dwarf_Error)N
1034101536(error\))X
1034111 f
103412576 5856(The)N
103413762(function)X
1034140 f
1034151118(dwarf_errmsg\(\))X
1034161 f
1034171851(returns)X
1034182135(a)X
1034192232(pointer)X
1034202520(to)X
1034212643(a)X
1034222741(null-terminated)X
1034233297(error)X
1034243516(message)X
1034253850(string)X
103426576 6164(rev)N
103427699(1.52,)X
103428879(02)X
103429979(Oct)X
1034301115(2003)X
1034312217(-)X
1034322264(49)X
1034332364(-)X
103434
10343550 p
103436%%Page: 50 50
1034370(Courier)xf 0 f
10343810 s 0 xH 0 xS 0 f
1034391 f
1034402217 384(-)N
1034412264(50)X
1034422364(-)X
103443576 768(corresponding)N
1034441061(to)X
1034451149(the)X
1034461273(error)X
1034471456(specified)X
1034481772(by)X
1034490 f
1034501906(error)X
1034511 f
103452(.)S
1034532212(The)X
1034542362(string)X
1034552569(returned)X
1034562862(by)X
1034570 f
1034582995(dwarf_errmsg\(\))X
1034591 f
1034603692(should)X
1034613930(not)X
103462576 864(be)N
103463672(deallocated)X
1034641058(using)X
1034650 f
1034661279(dwarf_dealloc\(\))X
1034671 f
103468(.)S
103469576 1104(The)N
103470723(set)X
103471834(of)X
103472923(errors)X
1034731133(enumerated)X
1034741530(in)X
1034751614(Figure)X
1034761845(3)X
1034771908(below)X
1034782127(were)X
1034792307(defined)X
1034802571(in)X
1034812656(Dwarf)X
1034822885(1.)X
1034832988(These)X
1034843203(errors)X
1034853414(are)X
1034863536(not)X
1034873661(used)X
1034883831(by)X
1034893934(the)X
103490576 1200(current)N
103491824(implementation)X
1034921346(of)X
1034931433(Dwarf)X
1034941659(2.)X
1034950 f
10349610 f
103497606 1264 -0.0476(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)AN
1034983 f
103499646 1360(SYMBOLIC)N
1035001101(NAME)X
1035011466(DESCRIPTION)X
10350210 f
103503606 1376 -0.0476(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)AN
1035043 f
103505646 1472(DW_DLE_NE)N
1035061466(No)X
1035071584(error)X
1035081788(\(0\))X
103509646 1568(DW_DLE_VMM)N
1035101466(Version)X
1035111753(of)X
1035121840(DWARF)X
1035132163(information)X
1035142592(newer)X
1035152822(than)X
1035162997(libdwarf)X
103517646 1664(DW_DLE_MAP)N
1035181466(Memory)X
1035191781(map)X
1035201952(failure)X
103521646 1760(DW_DLE_LEE)N
1035221466(Propagation)X
1035231908(of)X
1035241995(libelf)X
1035252188(error)X
103526646 1856(DW_DLE_NDS)N
1035271466(No)X
1035281584(debug)X
1035291812(section)X
103530646 1952(DW_DLE_NLS)N
1035311466(No)X
1035321584(line)X
1035331728(section)X
103534646 2048(DW_DLE_ID)N
1035351466(Requested)X
1035361842(information)X
1035372271(not)X
1035382402(associated)X
1035392769(with)X
1035402940(descriptor)X
103541646 2144(DW_DLE_IOF)N
1035421466(I/O)X
1035431601(failure)X
103544646 2240(DW_DLE_MAF)N
1035451466(Memory)X
1035461781(allocation)X
1035472134(failure)X
103548646 2336(DW_DLE_IA)N
1035491466(Invalid)X
1035501729(argument)X
103551646 2432(DW_DLE_MDE)N
1035521466(Mangled)X
1035531788(debugging)X
1035542162(entry)X
103555646 2528(DW_DLE_MLE)N
1035561466(Mangled)X
1035571788(line)X
1035581932(number)X
1035592223(entry)X
103560646 2624(DW_DLE_FNO)N
1035611466(File)X
1035621615(descriptor)X
1035631987(does)X
1035642158(not)X
1035652289(refer)X
1035662480(to)X
1035672567(an)X
1035682671(open)X
1035692855(file)X
103570646 2720(DW_DLE_FNR)N
1035711466(File)X
1035721615(is)X
1035731688(not)X
1035741819(a)X
1035751879(regular)X
1035762153(file)X
103577646 2816(DW_DLE_FWA)N
1035781466(File)X
1035791615(is)X
1035801688(opened)X
1035811952(with)X
1035822123(wrong)X
1035832361(access)X
103584646 2912(DW_DLE_NOB)N
1035851466(File)X
1035861615(is)X
1035871688(not)X
1035881819(an)X
1035891923(object)X
1035902153(file)X
103591646 3008(DW_DLE_MOF)N
1035921466(Mangled)X
1035931788(object)X
1035942018(file)X
1035952145(header)X
103596646 3104(DW_DLE_EOLL)N
1035971466(End)X
1035981627(of)X
1035991714(location)X
1036002005(list)X
1036012127(entries)X
103602646 3200(DW_DLE_NOLL)N
1036031466(No)X
1036041584(location)X
1036051875(list)X
1036061997(section)X
103607646 3296(DW_DLE_BADOFF)N
1036081466(Invalid)X
1036091729(offset)X
103610646 3392(DW_DLE_EOS)N
1036111466(End)X
1036121627(of)X
1036131714(section)X
103614646 3488(DW_DLE_ATRUNC)N
1036151466(Abbreviations)X
1036161970(section)X
1036172226(appears)X
1036182517(truncated)X
103619646 3584(DW_DLE_BADBITC)N
1036201466(Address)X
1036211766(size)X
1036221911(passed)X
1036232157(to)X
1036242244(dwarf)X
1036252469(bad)X
10362610 f
103627606 3600 -0.0476(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)AN
103628606(c)X
1036293584(c)Y
1036303504(c)Y
1036313424(c)Y
1036323344(c)Y
1036333264(c)Y
1036343184(c)Y
1036353104(c)Y
1036363024(c)Y
1036372944(c)Y
1036382864(c)Y
1036392784(c)Y
1036402704(c)Y
1036412624(c)Y
1036422544(c)Y
1036432464(c)Y
1036442384(c)Y
1036452304(c)Y
1036462224(c)Y
1036472144(c)Y
1036482064(c)Y
1036491984(c)Y
1036501904(c)Y
1036511824(c)Y
1036521744(c)Y
1036531664(c)Y
1036541584(c)Y
1036551504(c)Y
1036561424(c)Y
1036571344(c)Y
1036584002 3600(c)N
1036593584(c)Y
1036603504(c)Y
1036613424(c)Y
1036623344(c)Y
1036633264(c)Y
1036643184(c)Y
1036653104(c)Y
1036663024(c)Y
1036672944(c)Y
1036682864(c)Y
1036692784(c)Y
1036702704(c)Y
1036712624(c)Y
1036722544(c)Y
1036732464(c)Y
1036742384(c)Y
1036752304(c)Y
1036762224(c)Y
1036772144(c)Y
1036782064(c)Y
1036791984(c)Y
1036801904(c)Y
1036811824(c)Y
1036821744(c)Y
1036831664(c)Y
1036841584(c)Y
1036851504(c)Y
1036861424(c)Y
1036871344(c)Y
1036883 f
1036891676 3696(Figure)N
1036901923(6.)X
1036912023(List)X
1036922176(of)X
1036932263(Dwarf)X
1036942502(Error)X
1036952723(Codes)X
1036961 f
103697576 3936(The)N
103698734(set)X
103699856(of)X
103700956(errors)X
1037011178(returned)X
1037021480(by)X
1037031594(SGI)X
1037040 f
1037051785(Libdwarf)X
1037061 f
1037072203(functions)X
1037082535(is)X
1037092622(listed)X
1037102829(below.)X
1037113099(Some)X
1037123315(of)X
1037133416(the)X
1037143548(errors)X
1037153770(are)X
1037163903(SGI)X
103717576 4032(specific.)N
103718576 6164(rev)N
103719699(1.52,)X
103720879(02)X
103721979(Oct)X
1037221115(2003)X
1037232217(-)X
1037242264(50)X
1037252364(-)X
103726
10372751 p
103728%%Page: 51 51
1037290(Courier)xf 0 f
10373010 s 0 xH 0 xS 0 f
1037311 f
1037322217 384(-)N
1037332264(51)X
1037342364(-)X
1037353 f
10373610 f
103737576 688(i)N
103738586(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
1037393 f
103740616 784(SYMBOLIC)N
1037411071(NAME)X
1037422402(DESCRIPTION)X
10374310 f
103744576 800(i)N
103745586(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
1037463 f
103747616 896(DW_DLE_DBG_ALLOC)N
1037482402(Could)X
1037492630(not)X
1037502761(allocate)X
1037513044(Dwarf_Debug)X
1037523545(struct)X
103753616 992(DW_DLE_FSTAT_ERROR)N
1037542402(Error)X
1037552623(in)X
1037562709(fstat\(\)-ing)X
1037573068(object)X
103758616 1088(DW_DLE_FSTAT_MODE_ERROR)N
1037592402(Error)X
1037602623(in)X
1037612709(mode)X
1037622916(of)X
1037633003(object)X
1037643233(file)X
103765616 1184(DW_DLE_INIT_ACCESS_WRONG)N
1037662402(Incorrect)X
1037672744(access)X
1037682974(to)X
1037693061(dwarf_init\(\))X
103770616 1280(DW_DLE_ELF_BEGIN_ERROR)N
1037712402(Error)X
1037722623(in)X
1037732709(elf_begin\(\))X
1037743094(on)X
1037753198(object)X
103776616 1376(DW_DLE_ELF_GETEHDR_ERROR)N
1037772402(Error)X
1037782623(in)X
1037792709(elf_getehdr\(\))X
1037803171(on)X
1037813275(object)X
103782616 1472(DW_DLE_ELF_GETSHDR_ERROR)N
1037832402(Error)X
1037842623(in)X
1037852709(elf_getshdr\(\))X
1037863166(on)X
1037873270(object)X
103788616 1568(DW_DLE_ELF_STRPTR_ERROR)N
1037892402(Error)X
1037902623(in)X
1037912709(elf_strptr\(\))X
1037923109(on)X
1037933213(object)X
103794616 1664(DW_DLE_DEBUG_INFO_DUPLICATE)N
1037952402(Multiple)X
1037962715(.debug_info)X
1037973136(sections)X
103798616 1760(DW_DLE_DEBUG_INFO_NULL)N
1037992402(No)X
1038002520(data)X
1038012691(in)X
1038022777(.debug_info)X
1038033198(section)X
103804616 1856(DW_DLE_DEBUG_ABBREV_DUPLICATE)N
1038052402(Multiple)X
1038062715(.debug_abbrev)X
1038073243(sections)X
103808616 1952(DW_DLE_DEBUG_ABBREV_NULL)N
1038092402(No)X
1038102520(data)X
1038112691(in)X
1038122777(.debug_abbrev)X
1038133305(section)X
103814616 2048(DW_DLE_DEBUG_ARANGES_DUPLICATE)N
1038152402(Multiple)X
1038162715(.debug_arange)X
1038173239(sections)X
103818616 2144(DW_DLE_DEBUG_ARANGES_NULL)N
1038192402(No)X
1038202520(data)X
1038212691(in)X
1038222777(.debug_arange)X
1038233301(section)X
103824616 2240(DW_DLE_DEBUG_LINE_DUPLICATE)N
1038252402(Multiple)X
1038262715(.debug_line)X
1038273127(sections)X
103828616 2336(DW_DLE_DEBUG_LINE_NULL)N
1038292402(No)X
1038302520(data)X
1038312691(in)X
1038322777(.debug_line)X
1038333189(section)X
103834616 2432(DW_DLE_DEBUG_LOC_DUPLICATE)N
1038352402(Multiple)X
1038362715(.debug_loc)X
1038373101(sections)X
103838616 2528(DW_DLE_DEBUG_LOC_NULL)N
1038392402(No)X
1038402520(data)X
1038412691(in)X
1038422777(.debug_loc)X
1038433163(section)X
103844616 2624(DW_DLE_DEBUG_MACINFO_DUPLICATE)N
1038452402(Multiple)X
1038462715(.debug_macinfo)X
1038473279(sections)X
103848616 2720(DW_DLE_DEBUG_MACINFO_NULL)N
1038492402(No)X
1038502520(data)X
1038512691(in)X
1038522777(.debug_macinfo)X
1038533341(section)X
103854616 2816(DW_DLE_DEBUG_PUBNAMES_DUPLICATE)N
1038552402(Multiple)X
1038562715(.debug_pubnames)X
1038573353(sections)X
103858616 2912(DW_DLE_DEBUG_PUBNAMES_NULL)N
1038592402(No)X
1038602520(data)X
1038612691(in)X
1038622777(.debug_pubnames)X
1038633415(section)X
103864616 3008(DW_DLE_DEBUG_STR_DUPLICATE)N
1038652402(Multiple)X
1038662715(.debug_str)X
1038673097(sections)X
103868616 3104(DW_DLE_DEBUG_STR_NULL)N
1038692402(No)X
1038702520(data)X
1038712691(in)X
1038722777(.debug_str)X
1038733159(section)X
103874616 3200(DW_DLE_CU_LENGTH_ERROR)N
1038752402(Length)X
1038762666(of)X
1038772753(compilation-unit)X
1038783341(bad)X
103879616 3296(DW_DLE_VERSION_STAMP_ERROR)N
1038802402(Incorrect)X
1038812744(Version)X
1038823031(Stamp)X
103883616 3392(DW_DLE_ABBREV_OFFSET_ERROR)N
1038842402(Offset)X
1038852632(in)X
1038862718(.debug_abbrev)X
1038873246(bad)X
103888616 3488(DW_DLE_ADDRESS_SIZE_ERROR)N
1038892402(Size)X
1038902560(of)X
1038912647(addresses)X
1038922996(in)X
1038933082(target)X
1038943308(bad)X
103895616 3584(DW_DLE_DEBUG_INFO_PTR_NULL)N
1038962402(Pointer)X
1038972676(into)X
1038982829(.debug_info)X
1038993250(in)X
1039003336(DIE)X
1039013498(null)X
103902616 3680(DW_DLE_DIE_NULL)N
1039032402(Null)X
1039042568(Dwarf_Die)X
103905616 3776(DW_DLE_STRING_OFFSET_BAD)N
1039062402(Offset)X
1039072632(in)X
1039082718(.debug_str)X
1039093100(bad)X
103910616 3872(DW_DLE_DEBUG_LINE_LENGTH_BAD)N
1039112402(Length)X
1039122666(of)X
1039132753(.debug_line)X
1039143165(segment)X
1039153466(bad)X
103916616 3968(DW_DLE_LINE_PROLOG_LENGTH_BAD)N
1039172402(Length)X
1039182666(of)X
1039192753(.debug_line)X
1039203165(prolog)X
1039213407(bad)X
103922616 4064(DW_DLE_LINE_NUM_OPERANDS_BAD)N
1039232402(Number)X
1039242707(of)X
1039252794(operands)X
1039263129(to)X
1039273216(line)X
1039283360(instr)X
1039293540(bad)X
103930616 4160(DW_DLE_LINE_SET_ADDR_ERROR)N
1039312402(Error)X
1039322623(in)X
1039332709(DW_LNE_set_address)X
1039343507(instruction)X
103935616 4256(DW_DLE_LINE_EXT_OPCODE_BAD)N
1039362402(Error)X
1039372623(in)X
1039382709(DW_EXTENDED_OPCODE)X
1039393733(instruction)X
103940616 4352(DW_DLE_DWARF_LINE_NULL)N
1039412402(Null)X
1039422568(Dwarf_line)X
1039432971(argument)X
103944616 4448(DW_DLE_INCL_DIR_NUM_BAD)N
1039452402(Error)X
1039462623(in)X
1039472709(included)X
1039483021(directory)X
1039493358(for)X
1039503481(given)X
1039513683(line)X
103952616 4544(DW_DLE_LINE_FILE_NUM_BAD)N
1039532402(File)X
1039542551(number)X
1039552842(in)X
1039562928(.debug_line)X
1039573340(bad)X
103958616 4640(DW_DLE_ALLOC_FAIL)N
1039592402(Failed)X
1039602635(to)X
1039612722(allocate)X
1039623005(required)X
1039633323(structs)X
103964616 4736(DW_DLE_DBG_NULL)N
1039652402(Null)X
1039662568(Dwarf_Debug)X
1039673069(argument)X
103968616 4832(DW_DLE_DEBUG_FRAME_LENGTH_BAD)N
1039692402(Error)X
1039702623(in)X
1039712709(length)X
1039722942(of)X
1039733029(frame)X
103974616 4928(DW_DLE_FRAME_VERSION_BAD)N
1039752402(Bad)X
1039762559(version)X
1039772828(stamp)X
1039783057(for)X
1039793180(frame)X
103980616 5024(DW_DLE_CIE_RET_ADDR_REG_ERROR)N
1039812402(Bad)X
1039822559(register)X
1039832843(specified)X
1039843161(for)X
1039853284(return)X
1039863527(address)X
103987616 5120(DW_DLE_FDE_NULL)N
1039882402(Null)X
1039892568(Dwarf_Fde)X
1039902976(argument)X
103991616 5216(DW_DLE_FDE_DBG_NULL)N
1039922402(No)X
1039932520(Dwarf_Debug)X
1039943021(associated)X
1039953388(with)X
1039963559(FDE)X
103997616 5312(DW_DLE_CIE_NULL)N
1039982402(Null)X
1039992568(Dwarf_Cie)X
1040002963(argument)X
104001616 5408(DW_DLE_CIE_DBG_NULL)N
1040022402(No)X
1040032520(Dwarf_Debug)X
1040043021(associated)X
1040053388(with)X
1040063559(CIE)X
104007616 5504(DW_DLE_FRAME_TABLE_COL_BAD)N
1040082402(Bad)X
1040092559(column)X
1040102832(in)X
1040112918(frame)X
1040123144(table)X
1040133333(specified)X
10401410 f
104015576 5520(i)N
104016586(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
104017576(c)X
1040185488(c)Y
1040195408(c)Y
1040205328(c)Y
1040215248(c)Y
1040225168(c)Y
1040235088(c)Y
1040245008(c)Y
1040254928(c)Y
1040264848(c)Y
1040274768(c)Y
1040284688(c)Y
1040294608(c)Y
1040304528(c)Y
1040314448(c)Y
1040324368(c)Y
1040334288(c)Y
1040344208(c)Y
1040354128(c)Y
1040364048(c)Y
1040373968(c)Y
1040383888(c)Y
1040393808(c)Y
1040403728(c)Y
1040413648(c)Y
1040423568(c)Y
1040433488(c)Y
1040443408(c)Y
1040453328(c)Y
1040463248(c)Y
1040473168(c)Y
1040483088(c)Y
1040493008(c)Y
1040502928(c)Y
1040512848(c)Y
1040522768(c)Y
1040532688(c)Y
1040542608(c)Y
1040552528(c)Y
1040562448(c)Y
1040572368(c)Y
1040582288(c)Y
1040592208(c)Y
1040602128(c)Y
1040612048(c)Y
1040621968(c)Y
1040631888(c)Y
1040641808(c)Y
1040651728(c)Y
1040661648(c)Y
1040671568(c)Y
1040681488(c)Y
1040691408(c)Y
1040701328(c)Y
1040711248(c)Y
1040721168(c)Y
1040731088(c)Y
1040741008(c)Y
104075928(c)Y
104076848(c)Y
104077768(c)Y
1040784146 5520(c)N
1040795488(c)Y
1040805408(c)Y
1040815328(c)Y
1040825248(c)Y
1040835168(c)Y
1040845088(c)Y
1040855008(c)Y
1040864928(c)Y
1040874848(c)Y
1040884768(c)Y
1040894688(c)Y
1040904608(c)Y
1040914528(c)Y
1040924448(c)Y
1040934368(c)Y
1040944288(c)Y
1040954208(c)Y
1040964128(c)Y
1040974048(c)Y
1040983968(c)Y
1040993888(c)Y
1041003808(c)Y
1041013728(c)Y
1041023648(c)Y
1041033568(c)Y
1041043488(c)Y
1041053408(c)Y
1041063328(c)Y
1041073248(c)Y
1041083168(c)Y
1041093088(c)Y
1041103008(c)Y
1041112928(c)Y
1041122848(c)Y
1041132768(c)Y
1041142688(c)Y
1041152608(c)Y
1041162528(c)Y
1041172448(c)Y
1041182368(c)Y
1041192288(c)Y
1041202208(c)Y
1041212128(c)Y
1041222048(c)Y
1041231968(c)Y
1041241888(c)Y
1041251808(c)Y
1041261728(c)Y
1041271648(c)Y
1041281568(c)Y
1041291488(c)Y
1041301408(c)Y
1041311328(c)Y
1041321248(c)Y
1041331168(c)Y
1041341088(c)Y
1041351008(c)Y
104136928(c)Y
104137848(c)Y
104138768(c)Y
1041393 f
1041401440 5616(Figure)N
1041411687(7.)X
1041421787(List)X
1041431940(of)X
1041442027(Dwarf)X
1041452266(2)X
1041462326(Error)X
1041472547(Codes)X
1041482776(\(continued\))X
1041491 f
104150576 6164(rev)N
104151699(1.52,)X
104152879(02)X
104153979(Oct)X
1041541115(2003)X
1041552217(-)X
1041562264(51)X
1041572364(-)X
104158
10415952 p
104160%%Page: 52 52
1041610(Courier)xf 0 f
10416210 s 0 xH 0 xS 0 f
1041631 f
1041642217 384(-)N
1041652264(52)X
1041662364(-)X
1041673 f
10416810 f
104169576 688(i)N
104170608(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
1041713 f
104172616 784(SYMBOLIC)N
1041731071(NAME)X
1041742465(DESCRIPTION)X
10417510 f
104176576 800(i)N
104177608(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
1041783 f
104179616 896(DW_DLE_PC_NOT_IN_FDE_RANGE)N
1041802465(PC)X
1041812592(requested)X
1041822946(not)X
1041833077(in)X
1041843163(address)X
1041853445(range)X
1041863661(of)X
1041873748(FDE)X
104188616 992(DW_DLE_CIE_INSTR_EXEC_ERROR)N
1041892465(Error)X
1041902686(in)X
1041912772(executing)X
1041923117(instructions)X
1041933541(in)X
1041943627(CIE)X
104195616 1088(DW_DLE_FRAME_INSTR_EXEC_ERROR)N
1041962465(Error)X
1041972686(in)X
1041982772(executing)X
1041993117(instructions)X
1042003541(in)X
1042013627(FDE)X
104202616 1184(DW_DLE_FDE_PTR_NULL)N
1042032465(Null)X
1042042631(Pointer)X
1042052905(to)X
1042062992(Dwarf_Fde)X
1042073400(specified)X
104208616 1280(DW_DLE_RET_OP_LIST_NULL)N
1042092465(No)X
1042102583(location)X
1042112874(to)X
1042122961(store)X
1042133151(pointer)X
1042143420(to)X
1042153507(Dwarf_Frame_Op)X
104216616 1376(DW_DLE_LINE_CONTEXT_NULL)N
1042172465(Dwarf_Line)X
1042182899(has)X
1042193034(no)X
1042203138(context)X
104221616 1472(DW_DLE_DBG_NO_CU_CONTEXT)N
1042222465(dbg)X
1042232613(has)X
1042242748(no)X
1042252852(CU)X
1042262988(context)X
1042273258(for)X
1042283381(dwarf_siblingof\(\))X
104229616 1568(DW_DLE_DIE_NO_CU_CONTEXT)N
1042302465(Dwarf_Die)X
1042312860(has)X
1042322995(no)X
1042333099(CU)X
1042343235(context)X
104235616 1664(DW_DLE_FIRST_DIE_NOT_CU)N
1042362465(First)X
1042372650(DIE)X
1042382812(in)X
1042392898(CU)X
1042403034(not)X
1042413165(DW_TAG_compilation_unit)X
104242616 1760(DW_DLE_NEXT_DIE_PTR_NULL)N
1042432465(Error)X
1042442686(in)X
1042452772(moving)X
1042463045(to)X
1042473132(next)X
1042483299(DIE)X
1042493461(in)X
1042503547(.debug_info)X
104251616 1856(DW_DLE_DEBUG_FRAME_DUPLICATE)N
1042522465(Multiple)X
1042532778(.debug_frame)X
1042543272(sections)X
104255616 1952(DW_DLE_DEBUG_FRAME_NULL)N
1042562465(No)X
1042572583(data)X
1042582754(in)X
1042592840(.debug_frame)X
1042603334(section)X
104261616 2048(DW_DLE_ABBREV_DECODE_ERROR)N
1042622465(Error)X
1042632686(in)X
1042642772(decoding)X
1042653098(abbreviation)X
104266616 2144(DW_DLE_DWARF_ABBREV_NULL)N
1042672465(Null)X
1042682631(Dwarf_Abbrev)X
1042693168(specified)X
104270616 2240(DW_DLE_ATTR_NULL)N
1042712465(Null)X
1042722631(Dwarf_Attribute)X
1042733231(specified)X
104274616 2336(DW_DLE_DIE_BAD)N
1042752465(DIE)X
1042762627(bad)X
104277616 2432(DW_DLE_DIE_ABBREV_BAD)N
1042782465(No)X
1042792583(abbreviation)X
1042803038(found)X
1042813257(for)X
1042823380(code)X
1042833556(in)X
1042843642(DIE)X
104285616 2528(DW_DLE_ATTR_FORM_BAD)N
1042862465(Inappropriate)X
1042872969(attribute)X
1042883292(form)X
1042893482(for)X
1042903605(attribute)X
104291616 2624(DW_DLE_ATTR_NO_CU_CONTEXT)N
1042922465(No)X
1042932583(CU)X
1042942719(context)X
1042952989(for)X
1042963112(Dwarf_Attribute)X
1042973712(struct)X
104298616 2720(DW_DLE_ATTR_FORM_SIZE_BAD)N
1042992465(Size)X
1043002623(of)X
1043012710(block)X
1043022916(in)X
1043033002(attribute)X
1043043325(value)X
1043053527(bad)X
104306616 2816(DW_DLE_ATTR_DBG_NULL)N
1043072465(No)X
1043082583(Dwarf_Debug)X
1043093084(for)X
1043103207(Dwarf_Attribute)X
1043113807(struct)X
104312616 2912(DW_DLE_BAD_REF_FORM)N
1043132465(Inappropriate)X
1043142969(form)X
1043153159(for)X
1043163282 0.4219(reference)AX
1043173625(attribute)X
104318616 3008(DW_DLE_ATTR_FORM_OFFSET_BAD)N
1043192465(Offset)X
1043202695 0.4219(reference)AX
1043213038(attribute)X
1043223361(outside)X
1043233625(current)X
1043243904(CU)X
104325616 3104(DW_DLE_LINE_OFFSET_BAD)N
1043262465(Offset)X
1043272695(of)X
1043282782(lines)X
1043292957(for)X
1043303080(current)X
1043313359(CU)X
1043323495(outside)X
1043333759(.debug_line)X
104334616 3200(DW_DLE_DEBUG_STR_OFFSET_BAD)N
1043352465(Offset)X
1043362695(into)X
1043372848(.debug_str)X
1043383230(past)X
1043393392(its)X
1043403492(end)X
104341616 3296(DW_DLE_STRING_PTR_NULL)N
1043422465(Pointer)X
1043432739(to)X
1043442826(pointer)X
1043453095(into)X
1043463248(.debug_str)X
1043473630(NULL)X
104348616 3392(DW_DLE_PUBNAMES_VERSION_ERROR)N
1043492465(Version)X
1043502752(stamp)X
1043512981(of)X
1043523068(pubnames)X
1043533438(incorrect)X
104354616 3488(DW_DLE_PUBNAMES_LENGTH_BAD)N
1043552465(Read)X
1043562663(pubnames)X
1043573033(past)X
1043583195(end)X
1043593339(of)X
1043603426(.debug_pubnames)X
104361616 3584(DW_DLE_GLOBAL_NULL)N
1043622465(Null)X
1043632631(Dwarf_Global)X
1043643140(specified)X
104365616 3680(DW_DLE_GLOBAL_CONTEXT_NULL)N
1043662465(No)X
1043672583(context)X
1043682853(for)X
1043692976(Dwarf_Global)X
1043703485(given)X
104371616 3776(DW_DLE_DIR_INDEX_BAD)N
1043722465(Error)X
1043732686(in)X
1043742772(directory)X
1043753109(index)X
1043763315(read)X
104377616 3872(DW_DLE_LOC_EXPR_BAD)N
1043782465(Bad)X
1043792622(operator)X
1043802941(read)X
1043813117(for)X
1043823240(location)X
1043833531(expression)X
104384616 3968(DW_DLE_DIE_LOC_EXPR_BAD)N
1043852465(Expected)X
1043862801(block)X
1043873007(value)X
1043883209(for)X
1043893332(attribute)X
1043903655(not)X
1043913786(found)X
104392616 4064(DW_DLE_OFFSET_BAD)N
1043932465(Offset)X
1043942695(for)X
1043952818(next)X
1043962985(compilation-unit)X
1043973573(in)X
1043983659(.debug_info)X
1043994080(bad)X
104400616 4160(DW_DLE_MAKE_CU_CONTEXT_FAIL)N
1044012465(Could)X
1044022693(not)X
1044032824(make)X
1044043031(CU)X
1044053167(context)X
104406616 4256(DW_DLE_ARANGE_OFFSET_BAD)N
1044072465(Offset)X
1044082695(into)X
1044092848(.debug_info)X
1044103269(in)X
1044113355(.debug_aranges)X
1044123910(bad)X
104413616 4352(DW_DLE_SEGMENT_SIZE_BAD)N
1044142465(Segment)X
1044152779(size)X
1044162924(should)X
1044173169(be)X
1044183269(0)X
1044193329(for)X
1044203452(MIPS)X
1044213672(processors)X
104422616 4448(DW_DLE_ARANGE_LENGTH_BAD)N
1044232465(Length)X
1044242729(of)X
1044252816(arange)X
1044263072(section)X
1044273328(in)X
1044283414(.debug_arange)X
1044293938(bad)X
104430616 4544(DW_DLE_ARANGE_DECODE_ERROR)N
1044312465(Aranges)X
1044322770(do)X
1044332874(not)X
1044343005(end)X
1044353149(at)X
1044363236(end)X
1044373380(of)X
1044383467(.debug_aranges)X
104439616 4640(DW_DLE_ARANGES_NULL)N
1044402465(NULL)X
1044412707(pointer)X
1044422976(to)X
1044433063(Dwarf_Arange)X
1044443596(specified)X
104445616 4736(DW_DLE_ARANGE_NULL)N
1044462465(NULL)X
1044472707(Dwarf_Arange)X
1044483240(specified)X
104449616 4832(DW_DLE_NO_FILE_NAME)N
1044502465(No)X
1044512583(file)X
1044522710(name)X
1044532917(for)X
1044543040(Dwarf_Line)X
1044553474(struct)X
104456616 4928(DW_DLE_NO_COMP_DIR)N
1044572465(No)X
1044582583(Compilation)X
1044593029(directory)X
1044603366(for)X
1044613489(compilation-unit)X
104462616 5024(DW_DLE_CU_ADDRESS_SIZE_BAD)N
1044632465(CU)X
1044642601(header)X
1044652857(address)X
1044663139(size)X
1044673284(not)X
1044683415(match)X
1044693649(Elf)X
1044703771(class)X
104471616 5120(DW_DLE_ELF_GETIDENT_ERROR)N
1044722465(Error)X
1044732686(in)X
1044742772(elf_getident\(\))X
1044753247(on)X
1044763351(object)X
104477616 5216(DW_DLE_NO_AT_MIPS_FDE)N
1044782465(DIE)X
1044792627(does)X
1044802798(not)X
1044812929(have)X
1044823109(DW_AT_MIPS_fde)X
1044833805(attribute)X
104484616 5312(DW_DLE_NO_CIE_FOR_FDE)N
1044852465(No)X
1044862583(CIE)X
1044872745(specified)X
1044883063(for)X
1044893186(FDE)X
104490616 5408(DW_DLE_DIE_ABBREV_LIST_NULL)N
1044912465(No)X
1044922583(abbreviation)X
1044933038(for)X
1044943161(the)X
1044953288(code)X
1044963464(in)X
1044973550(DIE)X
1044983712(found)X
104499616 5504(DW_DLE_DEBUG_FUNCNAMES_DUPLICATE)N
1045002465(Multiple)X
1045012778(.debug_funcnames)X
1045023435(sections)X
104503616 5600(DW_DLE_DEBUG_FUNCNAMES_NULL)N
1045042465(No)X
1045052583(data)X
1045062754(in)X
1045072840(.debug_funcnames)X
1045083497(section)X
10450910 f
104510576 5616(i)N
104511608(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
104512576(c)X
1045135568(c)Y
1045145488(c)Y
1045155408(c)Y
1045165328(c)Y
1045175248(c)Y
1045185168(c)Y
1045195088(c)Y
1045205008(c)Y
1045214928(c)Y
1045224848(c)Y
1045234768(c)Y
1045244688(c)Y
1045254608(c)Y
1045264528(c)Y
1045274448(c)Y
1045284368(c)Y
1045294288(c)Y
1045304208(c)Y
1045314128(c)Y
1045324048(c)Y
1045333968(c)Y
1045343888(c)Y
1045353808(c)Y
1045363728(c)Y
1045373648(c)Y
1045383568(c)Y
1045393488(c)Y
1045403408(c)Y
1045413328(c)Y
1045423248(c)Y
1045433168(c)Y
1045443088(c)Y
1045453008(c)Y
1045462928(c)Y
1045472848(c)Y
1045482768(c)Y
1045492688(c)Y
1045502608(c)Y
1045512528(c)Y
1045522448(c)Y
1045532368(c)Y
1045542288(c)Y
1045552208(c)Y
1045562128(c)Y
1045572048(c)Y
1045581968(c)Y
1045591888(c)Y
1045601808(c)Y
1045611728(c)Y
1045621648(c)Y
1045631568(c)Y
1045641488(c)Y
1045651408(c)Y
1045661328(c)Y
1045671248(c)Y
1045681168(c)Y
1045691088(c)Y
1045701008(c)Y
104571928(c)Y
104572848(c)Y
104573768(c)Y
1045744248 5616(c)N
1045755568(c)Y
1045765488(c)Y
1045775408(c)Y
1045785328(c)Y
1045795248(c)Y
1045805168(c)Y
1045815088(c)Y
1045825008(c)Y
1045834928(c)Y
1045844848(c)Y
1045854768(c)Y
1045864688(c)Y
1045874608(c)Y
1045884528(c)Y
1045894448(c)Y
1045904368(c)Y
1045914288(c)Y
1045924208(c)Y
1045934128(c)Y
1045944048(c)Y
1045953968(c)Y
1045963888(c)Y
1045973808(c)Y
1045983728(c)Y
1045993648(c)Y
1046003568(c)Y
1046013488(c)Y
1046023408(c)Y
1046033328(c)Y
1046043248(c)Y
1046053168(c)Y
1046063088(c)Y
1046073008(c)Y
1046082928(c)Y
1046092848(c)Y
1046102768(c)Y
1046112688(c)Y
1046122608(c)Y
1046132528(c)Y
1046142448(c)Y
1046152368(c)Y
1046162288(c)Y
1046172208(c)Y
1046182128(c)Y
1046192048(c)Y
1046201968(c)Y
1046211888(c)Y
1046221808(c)Y
1046231728(c)Y
1046241648(c)Y
1046251568(c)Y
1046261488(c)Y
1046271408(c)Y
1046281328(c)Y
1046291248(c)Y
1046301168(c)Y
1046311088(c)Y
1046321008(c)Y
104633928(c)Y
104634848(c)Y
104635768(c)Y
1046363 f
1046371440 5712(Figure)N
1046381687(8.)X
1046391787(List)X
1046401940(of)X
1046412027(Dwarf)X
1046422266(2)X
1046432326(Error)X
1046442547(Codes)X
1046452776(\(continued\))X
1046461 f
104647576 6164(rev)N
104648699(1.52,)X
104649879(02)X
104650979(Oct)X
1046511115(2003)X
1046522217(-)X
1046532264(52)X
1046542364(-)X
104655
10465653 p
104657%%Page: 53 53
1046580(Courier)xf 0 f
10465910 s 0 xH 0 xS 0 f
1046601 f
1046612217 384(-)N
1046622264(53)X
1046632364(-)X
1046643 f
10466510 f
104666576 688(i)N
104667577(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
1046683 f
104669616 784(SYMBOLIC)N
1046701071(NAME)X
1046712717(DESCRIPTION)X
10467210 f
104673576 800(i)N
104674577(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
1046753 f
104676616 896(DW_DLE_DEBUG_FUNCNAMES_VERSION_ERROR)N
1046772717(Version)X
1046783004(stamp)X
1046793233(in)X
1046803319(.debug_funcnames)X
1046813976(bad)X
104682616 992(DW_DLE_DEBUG_FUNCNAMES_LENGTH_BAD)N
1046832717(Length)X
1046842981(error)X
1046853185(in)X
1046863271(reading)X
1046873553(.debug_funcnames)X
104688616 1088(DW_DLE_FUNC_NULL)N
1046892717(NULL)X
1046902959(Dwarf_Func)X
1046913411(specified)X
104692616 1184(DW_DLE_FUNC_CONTEXT_NULL)N
1046932717(No)X
1046942835(context)X
1046953105(for)X
1046963228(Dwarf_Func)X
1046973680(struct)X
104698616 1280(DW_DLE_DEBUG_TYPENAMES_DUPLICATE)N
1046992717(Multiple)X
1047003030(.debug_typenames)X
1047013683(sections)X
104702616 1376(DW_DLE_DEBUG_TYPENAMES_NULL)N
1047032717(No)X
1047042835(data)X
1047053006(in)X
1047063092(.debug_typenames)X
1047073745(section)X
104708616 1472(DW_DLE_DEBUG_TYPENAMES_VERSION_ERROR)N
1047092717(Version)X
1047103004(stamp)X
1047113233(in)X
1047123319(.debug_typenames)X
1047133972(bad)X
104714616 1568(DW_DLE_DEBUG_TYPENAMES_LENGTH_BAD)N
1047152717(Length)X
1047162981(error)X
1047173185(in)X
1047183271(reading)X
1047193553(.debug_typenames)X
104720616 1664(DW_DLE_TYPE_NULL)N
1047212717(NULL)X
1047222959(Dwarf_Type)X
1047233411(specified)X
104724616 1760(DW_DLE_TYPE_CONTEXT_NULL)N
1047252717(No)X
1047262835(context)X
1047273105(for)X
1047283228(Dwarf_Type)X
1047293680(given)X
104730616 1856(DW_DLE_DEBUG_VARNAMES_DUPLICATE)N
1047312717(Multiple)X
1047323030(.debug_varnames)X
1047333652(sections)X
104734616 1952(DW_DLE_DEBUG_VARNAMES_NULL)N
1047352717(No)X
1047362835(data)X
1047373006(in)X
1047383092(.debug_varnames)X
1047393714(section)X
104740616 2048(DW_DLE_DEBUG_VARNAMES_VERSION_ERROR)N
1047412717(Version)X
1047423004(stamp)X
1047433233(in)X
1047443319(.debug_varnames)X
1047453941(bad)X
104746616 2144(DW_DLE_DEBUG_VARNAMES_LENGTH_BAD)N
1047472717(Length)X
1047482981(error)X
1047493185(in)X
1047503271(reading)X
1047513553(.debug_varnames)X
104752616 2240(DW_DLE_VAR_NULL)N
1047532717(NULL)X
1047542959(Dwarf_Var)X
1047553372(specified)X
104756616 2336(DW_DLE_VAR_CONTEXT_NULL)N
1047572717(No)X
1047582835(context)X
1047593105(for)X
1047603228(Dwarf_Var)X
1047613641(given)X
104762616 2432(DW_DLE_DEBUG_WEAKNAMES_DUPLICATE)N
1047632717(Multiple)X
1047643030(.debug_weaknames)X
1047653714(section)X
104766616 2528(DW_DLE_DEBUG_WEAKNAMES_NULL)N
1047672717(No)X
1047682835(data)X
1047693006(in)X
1047703092(.debug_varnames)X
1047713714(section)X
104772616 2624(DW_DLE_DEBUG_WEAKNAMES_VERSION_ERROR)N
1047732717(Version)X
1047743004(stamp)X
1047753233(in)X
1047763319(.debug_varnames)X
1047773941(bad)X
104778616 2720(DW_DLE_DEBUG_WEAKNAMES_LENGTH_BAD)N
1047792717(Length)X
1047802981(error)X
1047813185(in)X
1047823271(reading)X
1047833553(.debug_weaknames)X
104784616 2816(DW_DLE_WEAK_NULL)N
1047852717(NULL)X
1047862959(Dwarf_Weak)X
1047873438(specified)X
104788616 2912(DW_DLE_WEAK_CONTEXT_NULL)N
1047892717(No)X
1047902835(context)X
1047913105(for)X
1047923228(Dwarf_Weak)X
1047933707(given)X
10479410 f
104795576 2928(i)N
104796577(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
104797576(c)X
1047982848(c)Y
1047992768(c)Y
1048002688(c)Y
1048012608(c)Y
1048022528(c)Y
1048032448(c)Y
1048042368(c)Y
1048052288(c)Y
1048062208(c)Y
1048072128(c)Y
1048082048(c)Y
1048091968(c)Y
1048101888(c)Y
1048111808(c)Y
1048121728(c)Y
1048131648(c)Y
1048141568(c)Y
1048151488(c)Y
1048161408(c)Y
1048171328(c)Y
1048181248(c)Y
1048191168(c)Y
1048201088(c)Y
1048211008(c)Y
104822928(c)Y
104823848(c)Y
104824768(c)Y
1048254257 2928(c)N
1048262848(c)Y
1048272768(c)Y
1048282688(c)Y
1048292608(c)Y
1048302528(c)Y
1048312448(c)Y
1048322368(c)Y
1048332288(c)Y
1048342208(c)Y
1048352128(c)Y
1048362048(c)Y
1048371968(c)Y
1048381888(c)Y
1048391808(c)Y
1048401728(c)Y
1048411648(c)Y
1048421568(c)Y
1048431488(c)Y
1048441408(c)Y
1048451328(c)Y
1048461248(c)Y
1048471168(c)Y
1048481088(c)Y
1048491008(c)Y
104850928(c)Y
104851848(c)Y
104852768(c)Y
1048533 f
1048541646 3024(Figure)N
1048551893(9.)X
1048561993(List)X
1048572146(of)X
1048582233(Dwarf)X
1048592472(2)X
1048602532(Error)X
1048612753(Codes)X
1048621 f
104863576 3264(This)N
104864738(list)X
104865855(of)X
104866943(errors)X
1048671152(is)X
1048681226(not)X
1048691349(necessarily)X
1048701727(complete;)X
1048712064(additional)X
1048722405(errors)X
1048732614(might)X
1048742821(be)X
1048752918(added)X
1048763131(when)X
1048773326(functionality)X
1048783756(to)X
1048793839(create)X
104880576 3360(debugging)N
104881950(information)X
1048821364(entries)X
1048831614(are)X
1048841749(added)X
1048851977(to)X
1048862 f
1048872075(libdwarf)X
1048881 f
1048892381(and)X
1048902533(by)X
1048912649(the)X
1048922783(implementors)X
1048933259(of)X
1048942 f
1048953362(libdwarf)X
1048961 f
1048973667(to)X
1048983764(describe)X
104899576 3456(internal)N
104900845(errors)X
1049011057(not)X
1049021184(addressed)X
1049031526(by)X
1049041631(the)X
1049051754(above)X
1049061971(list.)X
1049072133(Some)X
1049082340(of)X
1049092432(the)X
1049102555(above)X
1049112772(errors)X
1049122985(may)X
1049133148(be)X
1049143249(unused.)X
1049153541(Errors)X
1049163767(may)X
1049173930(not)X
104918576 3552(have)N
104919748(the)X
104920866(same)X
1049211051(meaning)X
1049221347(in)X
1049231429(different)X
1049241726(implementations.)X
1049253 f
104926576 3792(5.18.3)N
104927816(dwarf_seterrhand\(\))X
1049280 f
104929576 3936(Dwarf_Handler)N
1049301248(dwarf_seterrhand\()X
104931960 4032(Dwarf_Debug)N
1049321536(dbg,)X
104933960 4128(Dwarf_Handler)N
1049341632(errhand\))X
1049351 f
104936576 4272(The)N
104937757(function)X
1049380 f
1049391108(dwarf_seterrhand\(\))X
1049401 f
1049412028(replaces)X
1049422348(the)X
1049432503(error)X
1049442717(handler)X
1049453015(\(see)X
1049460 f
1049473230(dwarf_init\(\))X
1049481 f
104949(\))S
1049503890(with)X
1049510 f
104952576 4368(errhand)N
1049531 f
104954(.)S
104955972(The)X
1049561117(old)X
1049571239(error)X
1049581416(handler)X
1049591677(is)X
1049601750(returned.)X
1049612078(This)X
1049622240(function)X
1049632527(is)X
1049642600(currently)X
1049652910(unimplemented.)X
1049663 f
104967576 4608(5.18.4)N
104968816 0.2578(dwarf_seterrarg\(\))AX
1049690 f
104970576 4752(Dwarf_Ptr)N
1049711056(dwarf_seterrarg\()X
104972960 4848(Dwarf_Debug)N
1049731536(dbg,)X
104974960 4944(Dwarf_Ptr)N
1049751440(errarg\))X
1049761 f
104977576 5088(The)N
104978726(function)X
1049790 f
1049801046(dwarf_seterrarg\(\))X
1049811 f
1049821888(replaces)X
1049832178(the)X
1049842302(pointer)X
1049852555(to)X
1049862643(the)X
1049872767(error)X
1049882950(handler)X
1049893217(communication)X
1049903741(area)X
1049913902(\(see)X
1049920 f
104993576 5184(dwarf_init\(\))N
1049941 f
104995(\))S
1049961219(with)X
1049970 f
1049981429(errarg)X
1049991 f
105000(.)S
1050011797(A)X
1050021895(pointer)X
1050032162(to)X
1050042264(the)X
1050052402(old)X
1050062544(area)X
1050072719(is)X
1050082812(returned.)X
1050093160(This)X
1050103342(function)X
1050113649(is)X
1050123742(currently)X
105013576 5280(unimplemented.)N
1050143 f
105015576 5520(5.18.5)N
105016816(dwarf_dealloc\(\))X
1050171 f
105018576 6164(rev)N
105019699(1.52,)X
105020879(02)X
105021979(Oct)X
1050221115(2003)X
1050232217(-)X
1050242264(53)X
1050252364(-)X
105026
10502754 p
105028%%Page: 54 54
1050290(Courier)xf 0 f
10503010 s 0 xH 0 xS 0 f
1050311 f
1050322217 384(-)N
1050332264(54)X
1050342364(-)X
1050350 f
105036576 768(void)N
105037816(dwarf_dealloc\()X
105038960 864(Dwarf_Debug)N
1050391536(dbg,)X
105040960 960(void*)N
1050411248(space,)X
105042960 1056(Dwarf_Unsigned)N
1050431680(type\))X
1050441 f
105045576 1200(The)N
105046730(function)X
1050470 f
1050481054(dwarf_dealloc)X
1050491 f
1050501707(frees)X
1050511893(the)X
1050522020(dynamic)X
1050532325(storage)X
1050542586(pointed)X
1050552856(to)X
1050562948(by)X
1050570 f
1050583086(space)X
1050591 f
105060(,)S
1050613376(and)X
1050623522(allocated)X
1050633842(to)X
1050643934(the)X
105065576 1296(given)N
1050660 f
105067810(Dwarf_Debug)X
1050681 f
105069(.)S
1050701406(The)X
1050711559(argument)X
1050720 f
1050731918(type)X
1050741 f
1050752138(is)X
1050762219(an)X
1050772323(integer)X
1050782573(code)X
1050792752(that)X
1050802899(specifies)X
1050813207(the)X
1050823332(allocation)X
1050833675(type)X
1050843840(of)X
1050853934(the)X
105086576 1392(region)N
105087801(pointed)X
1050881061(to)X
1050891143(by)X
1050901243(the)X
1050910 f
1050921389(space)X
1050931 f
105094(.)S
1050951689(Refer)X
1050961888(to)X
1050971970(section)X
1050982217(4)X
1050992277(for)X
1051002391(details)X
1051012620(on)X
1051022 f
1051032720(libdwarf)X
1051041 f
1051053010(memory)X
1051063297(management.)X
105107576 6164(rev)N
105108699(1.52,)X
105109879(02)X
105110979(Oct)X
1051111115(2003)X
1051122217(-)X
1051132264(54)X
1051142364(-)X
105115
10511655 p
105117%%Page: 55 55
1051180(Courier)xf 0 f
10511910 s 0 xH 0 xS 0 f
1051201 f
1051212217 384(-)N
1051222264(55)X
1051232364(-)X
105124576 6164(rev)N
105125699(1.52,)X
105126879(02)X
105127979(Oct)X
1051281115(2003)X
1051292217(-)X
1051302264(55)X
1051312364(-)X
105132
10513356 p
105134%%Page: 56 56
1051350(Courier)xf 0 f
10513610 s 0 xH 0 xS 0 f
1051371 f
1051382095 768(CONTENTS)N
105139576 1008(1.)N
105140676(INTRODUCTION)X
1051413 f
1051421371(.)X
1051431477(.)X
1051441583(.)X
1051451689(.)X
1051461795(.)X
1051471901(.)X
1051482007(.)X
1051492113(.)X
1051502219(.)X
1051512325(.)X
1051522431(.)X
1051532537(.)X
1051542643(.)X
1051552749(.)X
1051562855(.)X
1051572961(.)X
1051583067(.)X
1051593173(.)X
1051603279(.)X
1051613385(.)X
1051623491(.)X
1051633597(.)X
1051643703(.)X
1051653809(.)X
1051661 f
1051673992(1)X
105168676 1104(1.1)N
105169856(Purpose)X
1051701134(and)X
1051711270(Scope)X
1051723 f
1051731583(.)X
1051741689(.)X
1051751795(.)X
1051761901(.)X
1051772007(.)X
1051782113(.)X
1051792219(.)X
1051802325(.)X
1051812431(.)X
1051822537(.)X
1051832643(.)X
1051842749(.)X
1051852855(.)X
1051862961(.)X
1051873067(.)X
1051883173(.)X
1051893279(.)X
1051903385(.)X
1051913491(.)X
1051923597(.)X
1051933703(.)X
1051943809(.)X
1051951 f
1051963992(1)X
105197676 1200(1.2)N
105198856(Definitions)X
1051993 f
1052001265(.)X
1052011371(.)X
1052021477(.)X
1052031583(.)X
1052041689(.)X
1052051795(.)X
1052061901(.)X
1052072007(.)X
1052082113(.)X
1052092219(.)X
1052102325(.)X
1052112431(.)X
1052122537(.)X
1052132643(.)X
1052142749(.)X
1052152855(.)X
1052162961(.)X
1052173067(.)X
1052183173(.)X
1052193279(.)X
1052203385(.)X
1052213491(.)X
1052223597(.)X
1052233703(.)X
1052243809(.)X
1052251 f
1052263992(1)X
105227676 1296(1.3)N
105228856(Overview)X
1052293 f
1052301265(.)X
1052311371(.)X
1052321477(.)X
1052331583(.)X
1052341689(.)X
1052351795(.)X
1052361901(.)X
1052372007(.)X
1052382113(.)X
1052392219(.)X
1052402325(.)X
1052412431(.)X
1052422537(.)X
1052432643(.)X
1052442749(.)X
1052452855(.)X
1052462961(.)X
1052473067(.)X
1052483173(.)X
1052493279(.)X
1052503385(.)X
1052513491(.)X
1052523597(.)X
1052533703(.)X
1052543809(.)X
1052551 f
1052563992(1)X
105257676 1392(1.4)N
105258856(Items)X
1052591054(Changed)X
1052603 f
1052611477(.)X
1052621583(.)X
1052631689(.)X
1052641795(.)X
1052651901(.)X
1052662007(.)X
1052672113(.)X
1052682219(.)X
1052692325(.)X
1052702431(.)X
1052712537(.)X
1052722643(.)X
1052732749(.)X
1052742855(.)X
1052752961(.)X
1052763067(.)X
1052773173(.)X
1052783279(.)X
1052793385(.)X
1052803491(.)X
1052813597(.)X
1052823703(.)X
1052833809(.)X
1052841 f
1052853992(2)X
105286676 1488(1.5)N
105287856(Items)X
1052881054(Removed)X
1052893 f
1052901477(.)X
1052911583(.)X
1052921689(.)X
1052931795(.)X
1052941901(.)X
1052952007(.)X
1052962113(.)X
1052972219(.)X
1052982325(.)X
1052992431(.)X
1053002537(.)X
1053012643(.)X
1053022749(.)X
1053032855(.)X
1053042961(.)X
1053053067(.)X
1053063173(.)X
1053073279(.)X
1053083385(.)X
1053093491(.)X
1053103597(.)X
1053113703(.)X
1053123809(.)X
1053131 f
1053143992(2)X
105315676 1584(1.6)N
105316856(Revision)X
1053171160(History)X
1053183 f
1053191477(.)X
1053201583(.)X
1053211689(.)X
1053221795(.)X
1053231901(.)X
1053242007(.)X
1053252113(.)X
1053262219(.)X
1053272325(.)X
1053282431(.)X
1053292537(.)X
1053302643(.)X
1053312749(.)X
1053322855(.)X
1053332961(.)X
1053343067(.)X
1053353173(.)X
1053363279(.)X
1053373385(.)X
1053383491(.)X
1053393597(.)X
1053403703(.)X
1053413809(.)X
1053421 f
1053433992(2)X
105344576 1728(2.)N
105345676(Types)X
105346892(Definitions)X
1053473 f
1053481371(.)X
1053491477(.)X
1053501583(.)X
1053511689(.)X
1053521795(.)X
1053531901(.)X
1053542007(.)X
1053552113(.)X
1053562219(.)X
1053572325(.)X
1053582431(.)X
1053592537(.)X
1053602643(.)X
1053612749(.)X
1053622855(.)X
1053632961(.)X
1053643067(.)X
1053653173(.)X
1053663279(.)X
1053673385(.)X
1053683491(.)X
1053693597(.)X
1053703703(.)X
1053713809(.)X
1053721 f
1053733992(2)X
105374676 1824(2.1)N
105375856(General)X
1053761131(Description)X
1053773 f
1053781583(.)X
1053791689(.)X
1053801795(.)X
1053811901(.)X
1053822007(.)X
1053832113(.)X
1053842219(.)X
1053852325(.)X
1053862431(.)X
1053872537(.)X
1053882643(.)X
1053892749(.)X
1053902855(.)X
1053912961(.)X
1053923067(.)X
1053933173(.)X
1053943279(.)X
1053953385(.)X
1053963491(.)X
1053973597(.)X
1053983703(.)X
1053993809(.)X
1054001 f
1054013992(3)X
105402676 1920(2.2)N
105403856(Scalar)X
1054041077(Types)X
1054053 f
1054061371(.)X
1054071477(.)X
1054081583(.)X
1054091689(.)X
1054101795(.)X
1054111901(.)X
1054122007(.)X
1054132113(.)X
1054142219(.)X
1054152325(.)X
1054162431(.)X
1054172537(.)X
1054182643(.)X
1054192749(.)X
1054202855(.)X
1054212961(.)X
1054223067(.)X
1054233173(.)X
1054243279(.)X
1054253385(.)X
1054263491(.)X
1054273597(.)X
1054283703(.)X
1054293809(.)X
1054301 f
1054313992(3)X
105432676 2016(2.3)N
105433856(Aggregate)X
1054341211(Types)X
1054353 f
1054361477(.)X
1054371583(.)X
1054381689(.)X
1054391795(.)X
1054401901(.)X
1054412007(.)X
1054422113(.)X
1054432219(.)X
1054442325(.)X
1054452431(.)X
1054462537(.)X
1054472643(.)X
1054482749(.)X
1054492855(.)X
1054502961(.)X
1054513067(.)X
1054523173(.)X
1054533279(.)X
1054543385(.)X
1054553491(.)X
1054563597(.)X
1054573703(.)X
1054583809(.)X
1054591 f
1054603992(4)X
105461856 2112(2.3.1)N
1054621096(Location)X
1054631401(Record)X
1054643 f
1054651689(.)X
1054661795(.)X
1054671901(.)X
1054682007(.)X
1054692113(.)X
1054702219(.)X
1054712325(.)X
1054722431(.)X
1054732537(.)X
1054742643(.)X
1054752749(.)X
1054762855(.)X
1054772961(.)X
1054783067(.)X
1054793173(.)X
1054803279(.)X
1054813385(.)X
1054823491(.)X
1054833597(.)X
1054843703(.)X
1054853809(.)X
1054861 f
1054873992(4)X
105488856 2208(2.3.2)N
1054891096(Location)X
1054901401(Description)X
1054913 f
1054921901(.)X
1054932007(.)X
1054942113(.)X
1054952219(.)X
1054962325(.)X
1054972431(.)X
1054982537(.)X
1054992643(.)X
1055002749(.)X
1055012855(.)X
1055022961(.)X
1055033067(.)X
1055043173(.)X
1055053279(.)X
1055063385(.)X
1055073491(.)X
1055083597(.)X
1055093703(.)X
1055103809(.)X
1055111 f
1055123992(5)X
105513856 2304(2.3.3)N
1055141096(Data)X
1055151268(Block)X
1055163 f
1055171583(.)X
1055181689(.)X
1055191795(.)X
1055201901(.)X
1055212007(.)X
1055222113(.)X
1055232219(.)X
1055242325(.)X
1055252431(.)X
1055262537(.)X
1055272643(.)X
1055282749(.)X
1055292855(.)X
1055302961(.)X
1055313067(.)X
1055323173(.)X
1055333279(.)X
1055343385(.)X
1055353491(.)X
1055363597(.)X
1055373703(.)X
1055383809(.)X
1055391 f
1055403992(5)X
105541856 2400(2.3.4)N
1055421096(Frame)X
1055431321(Operation)X
1055441662(Codes)X
1055453 f
1055462007(.)X
1055472113(.)X
1055482219(.)X
1055492325(.)X
1055502431(.)X
1055512537(.)X
1055522643(.)X
1055532749(.)X
1055542855(.)X
1055552961(.)X
1055563067(.)X
1055573173(.)X
1055583279(.)X
1055593385(.)X
1055603491(.)X
1055613597(.)X
1055623703(.)X
1055633809(.)X
1055641 f
1055653992(5)X
105566856 2496(2.3.5)N
1055671096(Macro)X
1055681326(Details)X
1055691573(Record)X
1055703 f
1055711901(.)X
1055722007(.)X
1055732113(.)X
1055742219(.)X
1055752325(.)X
1055762431(.)X
1055772537(.)X
1055782643(.)X
1055792749(.)X
1055802855(.)X
1055812961(.)X
1055823067(.)X
1055833173(.)X
1055843279(.)X
1055853385(.)X
1055863491(.)X
1055873597(.)X
1055883703(.)X
1055893809(.)X
1055901 f
1055913992(6)X
105592676 2592(2.4)N
105593856(Opaque)X
1055941126(Types)X
1055953 f
1055961371(.)X
1055971477(.)X
1055981583(.)X
1055991689(.)X
1056001795(.)X
1056011901(.)X
1056022007(.)X
1056032113(.)X
1056042219(.)X
1056052325(.)X
1056062431(.)X
1056072537(.)X
1056082643(.)X
1056092749(.)X
1056102855(.)X
1056112961(.)X
1056123067(.)X
1056133173(.)X
1056143279(.)X
1056153385(.)X
1056163491(.)X
1056173597(.)X
1056183703(.)X
1056193809(.)X
1056201 f
1056213992(6)X
105622576 2736(3.)N
105623676(Error)X
105624866(Handling)X
1056253 f
1056261265(.)X
1056271371(.)X
1056281477(.)X
1056291583(.)X
1056301689(.)X
1056311795(.)X
1056321901(.)X
1056332007(.)X
1056342113(.)X
1056352219(.)X
1056362325(.)X
1056372431(.)X
1056382537(.)X
1056392643(.)X
1056402749(.)X
1056412855(.)X
1056422961(.)X
1056433067(.)X
1056443173(.)X
1056453279(.)X
1056463385(.)X
1056473491(.)X
1056483597(.)X
1056493703(.)X
1056503809(.)X
1056511 f
1056523992(8)X
105653676 2832(3.1)N
105654856(Returned)X
1056551170(values)X
1056561395(in)X
1056571477(the)X
1056581595(functional)X
1056591940(interface)X
1056603 f
1056612325(.)X
1056622431(.)X
1056632537(.)X
1056642643(.)X
1056652749(.)X
1056662855(.)X
1056672961(.)X
1056683067(.)X
1056693173(.)X
1056703279(.)X
1056713385(.)X
1056723491(.)X
1056733597(.)X
1056743703(.)X
1056753809(.)X
1056761 f
1056773992(9)X
105678576 2976(4.)N
105679676(Memory)X
105680972(Management)X
1056813 f
1056821477(.)X
1056831583(.)X
1056841689(.)X
1056851795(.)X
1056861901(.)X
1056872007(.)X
1056882113(.)X
1056892219(.)X
1056902325(.)X
1056912431(.)X
1056922537(.)X
1056932643(.)X
1056942749(.)X
1056952855(.)X
1056962961(.)X
1056973067(.)X
1056983173(.)X
1056993279(.)X
1057003385(.)X
1057013491(.)X
1057023597(.)X
1057033703(.)X
1057043809(.)X
1057051 f
1057063952(10)X
105707676 3072(4.1)N
105708856(Read-only)X
1057091210(Properties)X
1057103 f
1057111583(.)X
1057121689(.)X
1057131795(.)X
1057141901(.)X
1057152007(.)X
1057162113(.)X
1057172219(.)X
1057182325(.)X
1057192431(.)X
1057202537(.)X
1057212643(.)X
1057222749(.)X
1057232855(.)X
1057242961(.)X
1057253067(.)X
1057263173(.)X
1057273279(.)X
1057283385(.)X
1057293491(.)X
1057303597(.)X
1057313703(.)X
1057323809(.)X
1057331 f
1057343952(10)X
105735676 3168(4.2)N
105736856(Storage)X
1057371121(Deallocation)X
1057383 f
1057391583(.)X
1057401689(.)X
1057411795(.)X
1057421901(.)X
1057432007(.)X
1057442113(.)X
1057452219(.)X
1057462325(.)X
1057472431(.)X
1057482537(.)X
1057492643(.)X
1057502749(.)X
1057512855(.)X
1057522961(.)X
1057533067(.)X
1057543173(.)X
1057553279(.)X
1057563385(.)X
1057573491(.)X
1057583597(.)X
1057593703(.)X
1057603809(.)X
1057611 f
1057623952(10)X
105763576 3312(5.)N
105764676(Functional)X
1057651038(Interface)X
1057663 f
1057671371(.)X
1057681477(.)X
1057691583(.)X
1057701689(.)X
1057711795(.)X
1057721901(.)X
1057732007(.)X
1057742113(.)X
1057752219(.)X
1057762325(.)X
1057772431(.)X
1057782537(.)X
1057792643(.)X
1057802749(.)X
1057812855(.)X
1057822961(.)X
1057833067(.)X
1057843173(.)X
1057853279(.)X
1057863385(.)X
1057873491(.)X
1057883597(.)X
1057893703(.)X
1057903809(.)X
1057911 f
1057923952(12)X
105793676 3408(5.1)N
105794856(Initialization)X
1057951285(Operations)X
1057963 f
1057971689(.)X
1057981795(.)X
1057991901(.)X
1058002007(.)X
1058012113(.)X
1058022219(.)X
1058032325(.)X
1058042431(.)X
1058052537(.)X
1058062643(.)X
1058072749(.)X
1058082855(.)X
1058092961(.)X
1058103067(.)X
1058113173(.)X
1058123279(.)X
1058133385(.)X
1058143491(.)X
1058153597(.)X
1058163703(.)X
1058173809(.)X
1058181 f
1058193952(12)X
105820856 3504(5.1.1)N
1058211096(dwarf_init\(\))X
1058223 f
1058231583(.)X
1058241689(.)X
1058251795(.)X
1058261901(.)X
1058272007(.)X
1058282113(.)X
1058292219(.)X
1058302325(.)X
1058312431(.)X
1058322537(.)X
1058332643(.)X
1058342749(.)X
1058352855(.)X
1058362961(.)X
1058373067(.)X
1058383173(.)X
1058393279(.)X
1058403385(.)X
1058413491(.)X
1058423597(.)X
1058433703(.)X
1058443809(.)X
1058451 f
1058463952(12)X
105847856 3600(5.1.2)N
1058481096(dwarf_elf_init\(\))X
1058493 f
1058501689(.)X
1058511795(.)X
1058521901(.)X
1058532007(.)X
1058542113(.)X
1058552219(.)X
1058562325(.)X
1058572431(.)X
1058582537(.)X
1058592643(.)X
1058602749(.)X
1058612855(.)X
1058622961(.)X
1058633067(.)X
1058643173(.)X
1058653279(.)X
1058663385(.)X
1058673491(.)X
1058683597(.)X
1058693703(.)X
1058703809(.)X
1058711 f
1058723952(13)X
105873856 3696(5.1.3)N
1058741096 0.2232(dwarf_get_elf\(\))AX
1058753 f
1058761689(.)X
1058771795(.)X
1058781901(.)X
1058792007(.)X
1058802113(.)X
1058812219(.)X
1058822325(.)X
1058832431(.)X
1058842537(.)X
1058852643(.)X
1058862749(.)X
1058872855(.)X
1058882961(.)X
1058893067(.)X
1058903173(.)X
1058913279(.)X
1058923385(.)X
1058933491(.)X
1058943597(.)X
1058953703(.)X
1058963809(.)X
1058971 f
1058983952(13)X
105899856 3792(5.1.4)N
1059001096(dwarf_finish\(\))X
1059013 f
1059021689(.)X
1059031795(.)X
1059041901(.)X
1059052007(.)X
1059062113(.)X
1059072219(.)X
1059082325(.)X
1059092431(.)X
1059102537(.)X
1059112643(.)X
1059122749(.)X
1059132855(.)X
1059142961(.)X
1059153067(.)X
1059163173(.)X
1059173279(.)X
1059183385(.)X
1059193491(.)X
1059203597(.)X
1059213703(.)X
1059223809(.)X
1059231 f
1059243952(14)X
105925676 3888(5.2)N
105926856(Debugging)X
1059271232(Information)X
1059281635(Entry)X
1059291833(Delivery)X
1059302134(Operations)X
1059313 f
1059322537(.)X
1059332643(.)X
1059342749(.)X
1059352855(.)X
1059362961(.)X
1059373067(.)X
1059383173(.)X
1059393279(.)X
1059403385(.)X
1059413491(.)X
1059423597(.)X
1059433703(.)X
1059443809(.)X
1059451 f
1059463952(14)X
105947856 3984(5.2.1)N
1059481096(Debugging)X
1059491472(Information)X
1059501875(Entry)X
1059512073(Debugger)X
1059522410(Delivery)X
1059532711(Operations)X
1059543 f
1059553173(.)X
1059563279(.)X
1059573385(.)X
1059583491(.)X
1059593597(.)X
1059603703(.)X
1059613809(.)X
1059621 f
1059633952(14)X
105964856 4080(5.2.2)N
1059651096 0.2321(dwarf_next_cu_header\(\))AX
1059663 f
1059672007(.)X
1059682113(.)X
1059692219(.)X
1059702325(.)X
1059712431(.)X
1059722537(.)X
1059732643(.)X
1059742749(.)X
1059752855(.)X
1059762961(.)X
1059773067(.)X
1059783173(.)X
1059793279(.)X
1059803385(.)X
1059813491(.)X
1059823597(.)X
1059833703(.)X
1059843809(.)X
1059851 f
1059863952(14)X
105987856 4176(5.2.3)N
1059881096(dwarf_siblingof\(\))X
1059893 f
1059901795(.)X
1059911901(.)X
1059922007(.)X
1059932113(.)X
1059942219(.)X
1059952325(.)X
1059962431(.)X
1059972537(.)X
1059982643(.)X
1059992749(.)X
1060002855(.)X
1060012961(.)X
1060023067(.)X
1060033173(.)X
1060043279(.)X
1060053385(.)X
1060063491(.)X
1060073597(.)X
1060083703(.)X
1060093809(.)X
1060101 f
1060113952(15)X
106012856 4272(5.2.4)N
1060131096(dwarf_child\(\))X
1060143 f
1060151583(.)X
1060161689(.)X
1060171795(.)X
1060181901(.)X
1060192007(.)X
1060202113(.)X
1060212219(.)X
1060222325(.)X
1060232431(.)X
1060242537(.)X
1060252643(.)X
1060262749(.)X
1060272855(.)X
1060282961(.)X
1060293067(.)X
1060303173(.)X
1060313279(.)X
1060323385(.)X
1060333491(.)X
1060343597(.)X
1060353703(.)X
1060363809(.)X
1060371 f
1060383952(15)X
106039856 4368(5.2.5)N
1060401096 0.2500(dwarf_offdie\(\))AX
1060413 f
1060421689(.)X
1060431795(.)X
1060441901(.)X
1060452007(.)X
1060462113(.)X
1060472219(.)X
1060482325(.)X
1060492431(.)X
1060502537(.)X
1060512643(.)X
1060522749(.)X
1060532855(.)X
1060542961(.)X
1060553067(.)X
1060563173(.)X
1060573279(.)X
1060583385(.)X
1060593491(.)X
1060603597(.)X
1060613703(.)X
1060623809(.)X
1060631 f
1060643952(15)X
106065676 4464(5.3)N
106066856(Debugging)X
1060671232(Information)X
1060681635(Entry)X
1060691833(Query)X
1060702054(Operations)X
1060713 f
1060722537(.)X
1060732643(.)X
1060742749(.)X
1060752855(.)X
1060762961(.)X
1060773067(.)X
1060783173(.)X
1060793279(.)X
1060803385(.)X
1060813491(.)X
1060823597(.)X
1060833703(.)X
1060843809(.)X
1060851 f
1060863952(15)X
106087856 4560(5.3.1)N
1060881096(dwarf_tag\(\))X
1060893 f
1060901583(.)X
1060911689(.)X
1060921795(.)X
1060931901(.)X
1060942007(.)X
1060952113(.)X
1060962219(.)X
1060972325(.)X
1060982431(.)X
1060992537(.)X
1061002643(.)X
1061012749(.)X
1061022855(.)X
1061032961(.)X
1061043067(.)X
1061053173(.)X
1061063279(.)X
1061073385(.)X
1061083491(.)X
1061093597(.)X
1061103703(.)X
1061113809(.)X
1061121 f
1061133952(16)X
106114856 4656(5.3.2)N
1061151096 0.2109(dwarf_dieoffset\(\))AX
1061163 f
1061171795(.)X
1061181901(.)X
1061192007(.)X
1061202113(.)X
1061212219(.)X
1061222325(.)X
1061232431(.)X
1061242537(.)X
1061252643(.)X
1061262749(.)X
1061272855(.)X
1061282961(.)X
1061293067(.)X
1061303173(.)X
1061313279(.)X
1061323385(.)X
1061333491(.)X
1061343597(.)X
1061353703(.)X
1061363809(.)X
1061371 f
1061383952(16)X
106139856 4752(5.3.3)N
1061401096 0.1625(dwarf_die_CU_offset\(\))AX
1061413 f
1061421901(.)X
1061432007(.)X
1061442113(.)X
1061452219(.)X
1061462325(.)X
1061472431(.)X
1061482537(.)X
1061492643(.)X
1061502749(.)X
1061512855(.)X
1061522961(.)X
1061533067(.)X
1061543173(.)X
1061553279(.)X
1061563385(.)X
1061573491(.)X
1061583597(.)X
1061593703(.)X
1061603809(.)X
1061611 f
1061623952(16)X
106163856 4848(5.3.4)N
1061641096 0.2321(dwarf_diename\(\))AX
1061653 f
1061661795(.)X
1061671901(.)X
1061682007(.)X
1061692113(.)X
1061702219(.)X
1061712325(.)X
1061722431(.)X
1061732537(.)X
1061742643(.)X
1061752749(.)X
1061762855(.)X
1061772961(.)X
1061783067(.)X
1061793173(.)X
1061803279(.)X
1061813385(.)X
1061823491(.)X
1061833597(.)X
1061843703(.)X
1061853809(.)X
1061861 f
1061873952(16)X
106188856 4944(5.3.5)N
1061891096(dwarf_attrlist\(\))X
1061903 f
1061911689(.)X
1061921795(.)X
1061931901(.)X
1061942007(.)X
1061952113(.)X
1061962219(.)X
1061972325(.)X
1061982431(.)X
1061992537(.)X
1062002643(.)X
1062012749(.)X
1062022855(.)X
1062032961(.)X
1062043067(.)X
1062053173(.)X
1062063279(.)X
1062073385(.)X
1062083491(.)X
1062093597(.)X
1062103703(.)X
1062113809(.)X
1062121 f
1062133952(17)X
106214856 5040(5.3.6)N
1062151096(dwarf_hasattr\(\))X
1062163 f
1062171689(.)X
1062181795(.)X
1062191901(.)X
1062202007(.)X
1062212113(.)X
1062222219(.)X
1062232325(.)X
1062242431(.)X
1062252537(.)X
1062262643(.)X
1062272749(.)X
1062282855(.)X
1062292961(.)X
1062303067(.)X
1062313173(.)X
1062323279(.)X
1062333385(.)X
1062343491(.)X
1062353597(.)X
1062363703(.)X
1062373809(.)X
1062381 f
1062393952(17)X
106240856 5136(5.3.7)N
1062411096(dwarf_attr\(\))X
1062423 f
1062431583(.)X
1062441689(.)X
1062451795(.)X
1062461901(.)X
1062472007(.)X
1062482113(.)X
1062492219(.)X
1062502325(.)X
1062512431(.)X
1062522537(.)X
1062532643(.)X
1062542749(.)X
1062552855(.)X
1062562961(.)X
1062573067(.)X
1062583173(.)X
1062593279(.)X
1062603385(.)X
1062613491(.)X
1062623597(.)X
1062633703(.)X
1062643809(.)X
1062651 f
1062663952(18)X
106267856 5232(5.3.8)N
1062681096(dwarf_lowpc\(\))X
1062693 f
1062701689(.)X
1062711795(.)X
1062721901(.)X
1062732007(.)X
1062742113(.)X
1062752219(.)X
1062762325(.)X
1062772431(.)X
1062782537(.)X
1062792643(.)X
1062802749(.)X
1062812855(.)X
1062822961(.)X
1062833067(.)X
1062843173(.)X
1062853279(.)X
1062863385(.)X
1062873491(.)X
1062883597(.)X
1062893703(.)X
1062903809(.)X
1062911 f
1062923952(18)X
106293856 5328(5.3.9)N
1062941096(dwarf_highpc\(\))X
1062953 f
1062961689(.)X
1062971795(.)X
1062981901(.)X
1062992007(.)X
1063002113(.)X
1063012219(.)X
1063022325(.)X
1063032431(.)X
1063042537(.)X
1063052643(.)X
1063062749(.)X
1063072855(.)X
1063082961(.)X
1063093067(.)X
1063103173(.)X
1063113279(.)X
1063123385(.)X
1063133491(.)X
1063143597(.)X
1063153703(.)X
1063163809(.)X
1063171 f
1063183952(18)X
106319856 5424(5.3.10)N
1063201096 0.2083(dwarf_bytesize\(\))AX
1063213 f
1063221689(.)X
1063231795(.)X
1063241901(.)X
1063252007(.)X
1063262113(.)X
1063272219(.)X
1063282325(.)X
1063292431(.)X
1063302537(.)X
1063312643(.)X
1063322749(.)X
1063332855(.)X
1063342961(.)X
1063353067(.)X
1063363173(.)X
1063373279(.)X
1063383385(.)X
1063393491(.)X
1063403597(.)X
1063413703(.)X
1063423809(.)X
1063431 f
1063443952(18)X
106345856 5520(5.3.11)N
1063461096(dwarf_bitsize\(\))X
1063473 f
1063481689(.)X
1063491795(.)X
1063501901(.)X
1063512007(.)X
1063522113(.)X
1063532219(.)X
1063542325(.)X
1063552431(.)X
1063562537(.)X
1063572643(.)X
1063582749(.)X
1063592855(.)X
1063602961(.)X
1063613067(.)X
1063623173(.)X
1063633279(.)X
1063643385(.)X
1063653491(.)X
1063663597(.)X
1063673703(.)X
1063683809(.)X
1063691 f
1063703952(18)X
106371856 5616(5.3.12)N
1063721096(dwarf_bitoffset\(\))X
1063733 f
1063741689(.)X
1063751795(.)X
1063761901(.)X
1063772007(.)X
1063782113(.)X
1063792219(.)X
1063802325(.)X
1063812431(.)X
1063822537(.)X
1063832643(.)X
1063842749(.)X
1063852855(.)X
1063862961(.)X
1063873067(.)X
1063883173(.)X
1063893279(.)X
1063903385(.)X
1063913491(.)X
1063923597(.)X
1063933703(.)X
1063943809(.)X
1063951 f
1063963952(19)X
106397856 5712(5.3.13)N
1063981096 0.2321(dwarf_srclang\(\))AX
1063993 f
1064001689(.)X
1064011795(.)X
1064021901(.)X
1064032007(.)X
1064042113(.)X
1064052219(.)X
1064062325(.)X
1064072431(.)X
1064082537(.)X
1064092643(.)X
1064102749(.)X
1064112855(.)X
1064122961(.)X
1064133067(.)X
1064143173(.)X
1064153279(.)X
1064163385(.)X
1064173491(.)X
1064183597(.)X
1064193703(.)X
1064203809(.)X
1064211 f
1064223952(19)X
106423856 5808(5.3.14)N
1064241096 0.3088(dwarf_arrayorder\(\))AX
1064253 f
1064261795(.)X
1064271901(.)X
1064282007(.)X
1064292113(.)X
1064302219(.)X
1064312325(.)X
1064322431(.)X
1064332537(.)X
1064342643(.)X
1064352749(.)X
1064362855(.)X
1064372961(.)X
1064383067(.)X
1064393173(.)X
1064403279(.)X
1064413385(.)X
1064423491(.)X
1064433597(.)X
1064443703(.)X
1064453809(.)X
1064461 f
1064473952(19)X
1064482246 6164(-)N
1064492293(i)X
1064502335(-)X
106451
10645257 p
106453%%Page: 57 57
1064540(Courier)xf 0 f
10645510 s 0 xH 0 xS 0 f
1064561 f
106457676 768(5.4)N
106458856(Attribute)X
1064591165(Form)X
1064601358(Queries)X
1064613 f
1064621689(.)X
1064631795(.)X
1064641901(.)X
1064652007(.)X
1064662113(.)X
1064672219(.)X
1064682325(.)X
1064692431(.)X
1064702537(.)X
1064712643(.)X
1064722749(.)X
1064732855(.)X
1064742961(.)X
1064753067(.)X
1064763173(.)X
1064773279(.)X
1064783385(.)X
1064793491(.)X
1064803597(.)X
1064813703(.)X
1064823809(.)X
1064831 f
1064843952(19)X
106485856 864(5.4.1)N
1064861096 0.2232(dwarf_hasform\(\))AX
1064873 f
1064881689(.)X
1064891795(.)X
1064901901(.)X
1064912007(.)X
1064922113(.)X
1064932219(.)X
1064942325(.)X
1064952431(.)X
1064962537(.)X
1064972643(.)X
1064982749(.)X
1064992855(.)X
1065002961(.)X
1065013067(.)X
1065023173(.)X
1065033279(.)X
1065043385(.)X
1065053491(.)X
1065063597(.)X
1065073703(.)X
1065083809(.)X
1065091 f
1065103952(20)X
106511856 960(5.4.2)N
1065121096 0.2167(dwarf_whatform\(\))AX
1065133 f
1065141795(.)X
1065151901(.)X
1065162007(.)X
1065172113(.)X
1065182219(.)X
1065192325(.)X
1065202431(.)X
1065212537(.)X
1065222643(.)X
1065232749(.)X
1065242855(.)X
1065252961(.)X
1065263067(.)X
1065273173(.)X
1065283279(.)X
1065293385(.)X
1065303491(.)X
1065313597(.)X
1065323703(.)X
1065333809(.)X
1065341 f
1065353952(20)X
106536856 1056(5.4.3)N
1065371096 0.1875(dwarf_whatform_direct\(\))AX
1065383 f
1065392007(.)X
1065402113(.)X
1065412219(.)X
1065422325(.)X
1065432431(.)X
1065442537(.)X
1065452643(.)X
1065462749(.)X
1065472855(.)X
1065482961(.)X
1065493067(.)X
1065503173(.)X
1065513279(.)X
1065523385(.)X
1065533491(.)X
1065543597(.)X
1065553703(.)X
1065563809(.)X
1065571 f
1065583952(20)X
106559856 1152(5.4.4)N
1065601096 0.2083(dwarf_whatattr\(\))AX
1065613 f
1065621689(.)X
1065631795(.)X
1065641901(.)X
1065652007(.)X
1065662113(.)X
1065672219(.)X
1065682325(.)X
1065692431(.)X
1065702537(.)X
1065712643(.)X
1065722749(.)X
1065732855(.)X
1065742961(.)X
1065753067(.)X
1065763173(.)X
1065773279(.)X
1065783385(.)X
1065793491(.)X
1065803597(.)X
1065813703(.)X
1065823809(.)X
1065831 f
1065843952(20)X
106585856 1248(5.4.5)N
1065861096 0.2857(dwarf_formref\(\))AX
1065873 f
1065881689(.)X
1065891795(.)X
1065901901(.)X
1065912007(.)X
1065922113(.)X
1065932219(.)X
1065942325(.)X
1065952431(.)X
1065962537(.)X
1065972643(.)X
1065982749(.)X
1065992855(.)X
1066002961(.)X
1066013067(.)X
1066023173(.)X
1066033279(.)X
1066043385(.)X
1066053491(.)X
1066063597(.)X
1066073703(.)X
1066083809(.)X
1066091 f
1066103952(21)X
106611856 1344(5.4.6)N
1066121096 0.1905(dwarf_global_formref\(\))AX
1066133 f
1066142007(.)X
1066152113(.)X
1066162219(.)X
1066172325(.)X
1066182431(.)X
1066192537(.)X
1066202643(.)X
1066212749(.)X
1066222855(.)X
1066232961(.)X
1066243067(.)X
1066253173(.)X
1066263279(.)X
1066273385(.)X
1066283491(.)X
1066293597(.)X
1066303703(.)X
1066313809(.)X
1066321 f
1066333952(21)X
106634856 1440(5.4.7)N
1066351096 0.2417(dwarf_formaddr\(\))AX
1066363 f
1066371795(.)X
1066381901(.)X
1066392007(.)X
1066402113(.)X
1066412219(.)X
1066422325(.)X
1066432431(.)X
1066442537(.)X
1066452643(.)X
1066462749(.)X
1066472855(.)X
1066482961(.)X
1066493067(.)X
1066503173(.)X
1066513279(.)X
1066523385(.)X
1066533491(.)X
1066543597(.)X
1066553703(.)X
1066563809(.)X
1066571 f
1066583952(21)X
106659856 1536(5.4.8)N
1066601096 0.2250(dwarf_formflag\(\))AX
1066613 f
1066621795(.)X
1066631901(.)X
1066642007(.)X
1066652113(.)X
1066662219(.)X
1066672325(.)X
1066682431(.)X
1066692537(.)X
1066702643(.)X
1066712749(.)X
1066722855(.)X
1066732961(.)X
1066743067(.)X
1066753173(.)X
1066763279(.)X
1066773385(.)X
1066783491(.)X
1066793597(.)X
1066803703(.)X
1066813809(.)X
1066821 f
1066833952(21)X
106684856 1632(5.4.9)N
1066851096 0.2188(dwarf_formudata\(\))AX
1066863 f
1066871795(.)X
1066881901(.)X
1066892007(.)X
1066902113(.)X
1066912219(.)X
1066922325(.)X
1066932431(.)X
1066942537(.)X
1066952643(.)X
1066962749(.)X
1066972855(.)X
1066982961(.)X
1066993067(.)X
1067003173(.)X
1067013279(.)X
1067023385(.)X
1067033491(.)X
1067043597(.)X
1067053703(.)X
1067063809(.)X
1067071 f
1067083952(21)X
106709856 1728(5.4.10)N
1067101096 0.2109(dwarf_formsdata\(\))AX
1067113 f
1067121795(.)X
1067131901(.)X
1067142007(.)X
1067152113(.)X
1067162219(.)X
1067172325(.)X
1067182431(.)X
1067192537(.)X
1067202643(.)X
1067212749(.)X
1067222855(.)X
1067232961(.)X
1067243067(.)X
1067253173(.)X
1067263279(.)X
1067273385(.)X
1067283491(.)X
1067293597(.)X
1067303703(.)X
1067313809(.)X
1067321 f
1067333952(22)X
106734856 1824(5.4.11)N
1067351096(dwarf_formblock\(\))X
1067363 f
1067371795(.)X
1067381901(.)X
1067392007(.)X
1067402113(.)X
1067412219(.)X
1067422325(.)X
1067432431(.)X
1067442537(.)X
1067452643(.)X
1067462749(.)X
1067472855(.)X
1067482961(.)X
1067493067(.)X
1067503173(.)X
1067513279(.)X
1067523385(.)X
1067533491(.)X
1067543597(.)X
1067553703(.)X
1067563809(.)X
1067571 f
1067583952(22)X
106759856 1920(5.4.12)N
1067601096(dwarf_formstring\(\))X
1067613 f
1067621795(.)X
1067631901(.)X
1067642007(.)X
1067652113(.)X
1067662219(.)X
1067672325(.)X
1067682431(.)X
1067692537(.)X
1067702643(.)X
1067712749(.)X
1067722855(.)X
1067732961(.)X
1067743067(.)X
1067753173(.)X
1067763279(.)X
1067773385(.)X
1067783491(.)X
1067793597(.)X
1067803703(.)X
1067813809(.)X
1067821 f
1067833952(22)X
1067841096 2016(5.4.12.1)N
1067851436(dwarf_loclist_n\(\))X
1067863 f
1067872113(.)X
1067882219(.)X
1067892325(.)X
1067902431(.)X
1067912537(.)X
1067922643(.)X
1067932749(.)X
1067942855(.)X
1067952961(.)X
1067963067(.)X
1067973173(.)X
1067983279(.)X
1067993385(.)X
1068003491(.)X
1068013597(.)X
1068023703(.)X
1068033809(.)X
1068041 f
1068053952(22)X
1068061096 2112(5.4.12.2)N
1068071436(dwarf_loclist\(\))X
1068083 f
1068092007(.)X
1068102113(.)X
1068112219(.)X
1068122325(.)X
1068132431(.)X
1068142537(.)X
1068152643(.)X
1068162749(.)X
1068172855(.)X
1068182961(.)X
1068193067(.)X
1068203173(.)X
1068213279(.)X
1068223385(.)X
1068233491(.)X
1068243597(.)X
1068253703(.)X
1068263809(.)X
1068271 f
1068283952(23)X
106829676 2208(5.5)N
106830856(Line)X
1068311023(Number)X
1068321306(Operations)X
1068333 f
1068341795(.)X
1068351901(.)X
1068362007(.)X
1068372113(.)X
1068382219(.)X
1068392325(.)X
1068402431(.)X
1068412537(.)X
1068422643(.)X
1068432749(.)X
1068442855(.)X
1068452961(.)X
1068463067(.)X
1068473173(.)X
1068483279(.)X
1068493385(.)X
1068503491(.)X
1068513597(.)X
1068523703(.)X
1068533809(.)X
1068541 f
1068553952(24)X
106856856 2304(5.5.1)N
1068571096(Get)X
1068581232(A)X
1068591310(Set)X
1068601432(of)X
1068611519(Lines)X
1068623 f
1068631795(.)X
1068641901(.)X
1068652007(.)X
1068662113(.)X
1068672219(.)X
1068682325(.)X
1068692431(.)X
1068702537(.)X
1068712643(.)X
1068722749(.)X
1068732855(.)X
1068742961(.)X
1068753067(.)X
1068763173(.)X
1068773279(.)X
1068783385(.)X
1068793491(.)X
1068803597(.)X
1068813703(.)X
1068823809(.)X
1068831 f
1068843952(24)X
1068851096 2400(5.5.1.1)N
1068861436(dwarf_srclines\(\))X
1068873 f
1068882007(.)X
1068892113(.)X
1068902219(.)X
1068912325(.)X
1068922431(.)X
1068932537(.)X
1068942643(.)X
1068952749(.)X
1068962855(.)X
1068972961(.)X
1068983067(.)X
1068993173(.)X
1069003279(.)X
1069013385(.)X
1069023491(.)X
1069033597(.)X
1069043703(.)X
1069053809(.)X
1069061 f
1069073952(24)X
106908856 2496(5.5.2)N
1069091096(Get)X
1069101232(the)X
1069111350(set)X
1069121459(of)X
1069131546(Source)X
1069141789(File)X
1069151933(Names)X
1069163 f
1069172219(.)X
1069182325(.)X
1069192431(.)X
1069202537(.)X
1069212643(.)X
1069222749(.)X
1069232855(.)X
1069242961(.)X
1069253067(.)X
1069263173(.)X
1069273279(.)X
1069283385(.)X
1069293491(.)X
1069303597(.)X
1069313703(.)X
1069323809(.)X
1069331 f
1069343952(25)X
106935856 2592(5.5.3)N
1069361096(Get)X
1069371232(information)X
1069381630(about)X
1069391828(a)X
1069401884(Single)X
1069412108(Table)X
1069422311(Line)X
1069433 f
1069442537(.)X
1069452643(.)X
1069462749(.)X
1069472855(.)X
1069482961(.)X
1069493067(.)X
1069503173(.)X
1069513279(.)X
1069523385(.)X
1069533491(.)X
1069543597(.)X
1069553703(.)X
1069563809(.)X
1069571 f
1069583952(26)X
1069591096 2688(5.5.3.1)N
1069601436(dwarf_linebeginstatement\(\))X
1069613 f
1069622431(.)X
1069632537(.)X
1069642643(.)X
1069652749(.)X
1069662855(.)X
1069672961(.)X
1069683067(.)X
1069693173(.)X
1069703279(.)X
1069713385(.)X
1069723491(.)X
1069733597(.)X
1069743703(.)X
1069753809(.)X
1069761 f
1069773952(26)X
1069781096 2784(5.5.3.2)N
1069791436 0.2102(dwarf_lineendsequence\(\))AX
1069803 f
1069812325(.)X
1069822431(.)X
1069832537(.)X
1069842643(.)X
1069852749(.)X
1069862855(.)X
1069872961(.)X
1069883067(.)X
1069893173(.)X
1069903279(.)X
1069913385(.)X
1069923491(.)X
1069933597(.)X
1069943703(.)X
1069953809(.)X
1069961 f
1069973952(26)X
1069981096 2880(5.5.3.3)N
1069991436(dwarf_lineno\(\))X
1070003 f
1070012007(.)X
1070022113(.)X
1070032219(.)X
1070042325(.)X
1070052431(.)X
1070062537(.)X
1070072643(.)X
1070082749(.)X
1070092855(.)X
1070102961(.)X
1070113067(.)X
1070123173(.)X
1070133279(.)X
1070143385(.)X
1070153491(.)X
1070163597(.)X
1070173703(.)X
1070183809(.)X
1070191 f
1070203952(26)X
1070211096 2976(5.5.3.4)N
1070221436 0.2083(dwarf_lineaddr\(\))AX
1070233 f
1070242113(.)X
1070252219(.)X
1070262325(.)X
1070272431(.)X
1070282537(.)X
1070292643(.)X
1070302749(.)X
1070312855(.)X
1070322961(.)X
1070333067(.)X
1070343173(.)X
1070353279(.)X
1070363385(.)X
1070373491(.)X
1070383597(.)X
1070393703(.)X
1070403809(.)X
1070411 f
1070423952(26)X
1070431096 3072(5.5.3.5)N
1070441436(dwarf_lineoff\(\))X
1070453 f
1070462007(.)X
1070472113(.)X
1070482219(.)X
1070492325(.)X
1070502431(.)X
1070512537(.)X
1070522643(.)X
1070532749(.)X
1070542855(.)X
1070552961(.)X
1070563067(.)X
1070573173(.)X
1070583279(.)X
1070593385(.)X
1070603491(.)X
1070613597(.)X
1070623703(.)X
1070633809(.)X
1070641 f
1070653952(26)X
1070661096 3168(5.5.3.6)N
1070671436(dwarf_linesrc\(\))X
1070683 f
1070692007(.)X
1070702113(.)X
1070712219(.)X
1070722325(.)X
1070732431(.)X
1070742537(.)X
1070752643(.)X
1070762749(.)X
1070772855(.)X
1070782961(.)X
1070793067(.)X
1070803173(.)X
1070813279(.)X
1070823385(.)X
1070833491(.)X
1070843597(.)X
1070853703(.)X
1070863809(.)X
1070871 f
1070883952(27)X
1070891096 3264(5.5.3.7)N
1070901436(dwarf_lineblock\(\))X
1070913 f
1070922113(.)X
1070932219(.)X
1070942325(.)X
1070952431(.)X
1070962537(.)X
1070972643(.)X
1070982749(.)X
1070992855(.)X
1071002961(.)X
1071013067(.)X
1071023173(.)X
1071033279(.)X
1071043385(.)X
1071053491(.)X
1071063597(.)X
1071073703(.)X
1071083809(.)X
1071091 f
1071103952(27)X
107111676 3360(5.6)N
107112856(Global)X
1071131094(Name)X
1071141306(Space)X
1071151518(Operations)X
1071163 f
1071172007(.)X
1071182113(.)X
1071192219(.)X
1071202325(.)X
1071212431(.)X
1071222537(.)X
1071232643(.)X
1071242749(.)X
1071252855(.)X
1071262961(.)X
1071273067(.)X
1071283173(.)X
1071293279(.)X
1071303385(.)X
1071313491(.)X
1071323597(.)X
1071333703(.)X
1071343809(.)X
1071351 f
1071363952(27)X
107137856 3456(5.6.1)N
1071381096(Debugger)X
1071391433(Interface)X
1071401740(Operations)X
1071413 f
1071422219(.)X
1071432325(.)X
1071442431(.)X
1071452537(.)X
1071462643(.)X
1071472749(.)X
1071482855(.)X
1071492961(.)X
1071503067(.)X
1071513173(.)X
1071523279(.)X
1071533385(.)X
1071543491(.)X
1071553597(.)X
1071563703(.)X
1071573809(.)X
1071581 f
1071593952(27)X
1071601096 3552(5.6.1.1)N
1071611436(dwarf_get_globals\(\))X
1071623 f
1071632219(.)X
1071642325(.)X
1071652431(.)X
1071662537(.)X
1071672643(.)X
1071682749(.)X
1071692855(.)X
1071702961(.)X
1071713067(.)X
1071723173(.)X
1071733279(.)X
1071743385(.)X
1071753491(.)X
1071763597(.)X
1071773703(.)X
1071783809(.)X
1071791 f
1071803952(27)X
1071811096 3648(5.6.1.2)N
1071821436(dwarf_globname\(\))X
1071833 f
1071842113(.)X
1071852219(.)X
1071862325(.)X
1071872431(.)X
1071882537(.)X
1071892643(.)X
1071902749(.)X
1071912855(.)X
1071922961(.)X
1071933067(.)X
1071943173(.)X
1071953279(.)X
1071963385(.)X
1071973491(.)X
1071983597(.)X
1071993703(.)X
1072003809(.)X
1072011 f
1072023952(28)X
1072031096 3744(5.6.1.3)N
1072041436 0.1406(dwarf_global_die_offset\(\))AX
1072053 f
1072062325(.)X
1072072431(.)X
1072082537(.)X
1072092643(.)X
1072102749(.)X
1072112855(.)X
1072122961(.)X
1072133067(.)X
1072143173(.)X
1072153279(.)X
1072163385(.)X
1072173491(.)X
1072183597(.)X
1072193703(.)X
1072203809(.)X
1072211 f
1072223952(28)X
1072231096 3840(5.6.1.4)N
1072241436 0.1576(dwarf_global_cu_offset\(\))AX
1072253 f
1072262325(.)X
1072272431(.)X
1072282537(.)X
1072292643(.)X
1072302749(.)X
1072312855(.)X
1072322961(.)X
1072333067(.)X
1072343173(.)X
1072353279(.)X
1072363385(.)X
1072373491(.)X
1072383597(.)X
1072393703(.)X
1072403809(.)X
1072411 f
1072423952(29)X
1072431096 3936(5.6.1.5)N
1072441436 0.1622(dwarf_get_cu_die_offset_given_cu_header_offset\(\))AX
1072453 f
1072463173(.)X
1072473279(.)X
1072483385(.)X
1072493491(.)X
1072503597(.)X
1072513703(.)X
1072523809(.)X
1072531 f
1072543952(29)X
1072551096 4032(5.6.1.6)N
1072561436 0.1442(dwarf_global_name_offsets\(\))AX
1072573 f
1072582431(.)X
1072592537(.)X
1072602643(.)X
1072612749(.)X
1072622855(.)X
1072632961(.)X
1072643067(.)X
1072653173(.)X
1072663279(.)X
1072673385(.)X
1072683491(.)X
1072693597(.)X
1072703703(.)X
1072713809(.)X
1072721 f
1072733952(29)X
107274676 4128(5.7)N
107275856(Weak)X
1072761064(Name)X
1072771276(Space)X
1072781488(Operations)X
1072793 f
1072801901(.)X
1072812007(.)X
1072822113(.)X
1072832219(.)X
1072842325(.)X
1072852431(.)X
1072862537(.)X
1072872643(.)X
1072882749(.)X
1072892855(.)X
1072902961(.)X
1072913067(.)X
1072923173(.)X
1072933279(.)X
1072943385(.)X
1072953491(.)X
1072963597(.)X
1072973703(.)X
1072983809(.)X
1072991 f
1073003952(30)X
107301856 4224(5.7.1)N
1073021096(Debugger)X
1073031433(Interface)X
1073041740(Operations)X
1073053 f
1073062219(.)X
1073072325(.)X
1073082431(.)X
1073092537(.)X
1073102643(.)X
1073112749(.)X
1073122855(.)X
1073132961(.)X
1073143067(.)X
1073153173(.)X
1073163279(.)X
1073173385(.)X
1073183491(.)X
1073193597(.)X
1073203703(.)X
1073213809(.)X
1073221 f
1073233952(30)X
1073241096 4320(5.7.1.1)N
1073251436 0.2266(dwarf_get_weaks\(\))AX
1073263 f
1073272113(.)X
1073282219(.)X
1073292325(.)X
1073302431(.)X
1073312537(.)X
1073322643(.)X
1073332749(.)X
1073342855(.)X
1073352961(.)X
1073363067(.)X
1073373173(.)X
1073383279(.)X
1073393385(.)X
1073403491(.)X
1073413597(.)X
1073423703(.)X
1073433809(.)X
1073441 f
1073453952(30)X
1073461096 4416(5.7.1.2)N
1073471436 0.2833(dwarf_weakname\(\))AX
1073483 f
1073492113(.)X
1073502219(.)X
1073512325(.)X
1073522431(.)X
1073532537(.)X
1073542643(.)X
1073552749(.)X
1073562855(.)X
1073572961(.)X
1073583067(.)X
1073593173(.)X
1073603279(.)X
1073613385(.)X
1073623491(.)X
1073633597(.)X
1073643703(.)X
1073653809(.)X
1073661 f
1073673952(30)X
1073681096 4512(5.7.1.3)N
1073691436 0.2321(dwarf_weak_cu_offset\(\))AX
1073703 f
1073712325(.)X
1073722431(.)X
1073732537(.)X
1073742643(.)X
1073752749(.)X
1073762855(.)X
1073772961(.)X
1073783067(.)X
1073793173(.)X
1073803279(.)X
1073813385(.)X
1073823491(.)X
1073833597(.)X
1073843703(.)X
1073853809(.)X
1073861 f
1073873952(31)X
1073881096 4608(5.7.1.4)N
1073891436 0.2083(dwarf_weak_name_offsets\(\))AX
1073903 f
1073912431(.)X
1073922537(.)X
1073932643(.)X
1073942749(.)X
1073952855(.)X
1073962961(.)X
1073973067(.)X
1073983173(.)X
1073993279(.)X
1074003385(.)X
1074013491(.)X
1074023597(.)X
1074033703(.)X
1074043809(.)X
1074051 f
1074063952(31)X
107407676 4704(5.8)N
107408856(Static)X
1074091058(Function)X
1074101362(Names)X
1074111605(Operations)X
1074123 f
1074132007(.)X
1074142113(.)X
1074152219(.)X
1074162325(.)X
1074172431(.)X
1074182537(.)X
1074192643(.)X
1074202749(.)X
1074212855(.)X
1074222961(.)X
1074233067(.)X
1074243173(.)X
1074253279(.)X
1074263385(.)X
1074273491(.)X
1074283597(.)X
1074293703(.)X
1074303809(.)X
1074311 f
1074323952(31)X
107433856 4800(5.8.1)N
1074341096(Debugger)X
1074351433(Interface)X
1074361740(Operations)X
1074373 f
1074382219(.)X
1074392325(.)X
1074402431(.)X
1074412537(.)X
1074422643(.)X
1074432749(.)X
1074442855(.)X
1074452961(.)X
1074463067(.)X
1074473173(.)X
1074483279(.)X
1074493385(.)X
1074503491(.)X
1074513597(.)X
1074523703(.)X
1074533809(.)X
1074541 f
1074553952(31)X
1074561096 4896(5.8.1.1)N
1074571436 0.2031(dwarf_get_funcs\(\))AX
1074583 f
1074592113(.)X
1074602219(.)X
1074612325(.)X
1074622431(.)X
1074632537(.)X
1074642643(.)X
1074652749(.)X
1074662855(.)X
1074672961(.)X
1074683067(.)X
1074693173(.)X
1074703279(.)X
1074713385(.)X
1074723491(.)X
1074733597(.)X
1074743703(.)X
1074753809(.)X
1074761 f
1074773952(31)X
1074781096 4992(5.8.1.2)N
1074791436 0.2583(dwarf_funcname\(\))AX
1074803 f
1074812113(.)X
1074822219(.)X
1074832325(.)X
1074842431(.)X
1074852537(.)X
1074862643(.)X
1074872749(.)X
1074882855(.)X
1074892961(.)X
1074903067(.)X
1074913173(.)X
1074923279(.)X
1074933385(.)X
1074943491(.)X
1074953597(.)X
1074963703(.)X
1074973809(.)X
1074981 f
1074993952(32)X
1075001096 5088(5.8.1.3)N
1075011436 0.1932(dwarf_func_die_offset\(\))AX
1075023 f
1075032325(.)X
1075042431(.)X
1075052537(.)X
1075062643(.)X
1075072749(.)X
1075082855(.)X
1075092961(.)X
1075103067(.)X
1075113173(.)X
1075123279(.)X
1075133385(.)X
1075143491(.)X
1075153597(.)X
1075163703(.)X
1075173809(.)X
1075181 f
1075193952(32)X
1075201096 5184(5.8.1.4)N
1075211436 0.2143(dwarf_func_cu_offset\(\))AX
1075223 f
1075232325(.)X
1075242431(.)X
1075252537(.)X
1075262643(.)X
1075272749(.)X
1075282855(.)X
1075292961(.)X
1075303067(.)X
1075313173(.)X
1075323279(.)X
1075333385(.)X
1075343491(.)X
1075353597(.)X
1075363703(.)X
1075373809(.)X
1075381 f
1075393952(33)X
1075401096 5280(5.8.1.5)N
1075411436 0.1927(dwarf_func_name_offsets\(\))AX
1075423 f
1075432431(.)X
1075442537(.)X
1075452643(.)X
1075462749(.)X
1075472855(.)X
1075482961(.)X
1075493067(.)X
1075503173(.)X
1075513279(.)X
1075523385(.)X
1075533491(.)X
1075543597(.)X
1075553703(.)X
1075563809(.)X
1075571 f
1075583952(33)X
107559676 5376(5.9)N
107560856(User)X
1075611028(Defined)X
1075621307(Type)X
1075631492(Names)X
1075641735(Operations)X
1075653 f
1075662219(.)X
1075672325(.)X
1075682431(.)X
1075692537(.)X
1075702643(.)X
1075712749(.)X
1075722855(.)X
1075732961(.)X
1075743067(.)X
1075753173(.)X
1075763279(.)X
1075773385(.)X
1075783491(.)X
1075793597(.)X
1075803703(.)X
1075813809(.)X
1075821 f
1075833952(33)X
107584856 5472(5.9.1)N
1075851096(Debugger)X
1075861433(Interface)X
1075871740(Operations)X
1075883 f
1075892219(.)X
1075902325(.)X
1075912431(.)X
1075922537(.)X
1075932643(.)X
1075942749(.)X
1075952855(.)X
1075962961(.)X
1075973067(.)X
1075983173(.)X
1075993279(.)X
1076003385(.)X
1076013491(.)X
1076023597(.)X
1076033703(.)X
1076043809(.)X
1076051 f
1076063952(33)X
1076071096 5568(5.9.1.1)N
1076081436(dwarf_get_types\(\))X
1076093 f
1076102113(.)X
1076112219(.)X
1076122325(.)X
1076132431(.)X
1076142537(.)X
1076152643(.)X
1076162749(.)X
1076172855(.)X
1076182961(.)X
1076193067(.)X
1076203173(.)X
1076213279(.)X
1076223385(.)X
1076233491(.)X
1076243597(.)X
1076253703(.)X
1076263809(.)X
1076271 f
1076283952(33)X
1076291096 5664(5.9.1.2)N
1076301436 0.2167(dwarf_typename\(\))AX
1076313 f
1076322113(.)X
1076332219(.)X
1076342325(.)X
1076352431(.)X
1076362537(.)X
1076372643(.)X
1076382749(.)X
1076392855(.)X
1076402961(.)X
1076413067(.)X
1076423173(.)X
1076433279(.)X
1076443385(.)X
1076453491(.)X
1076463597(.)X
1076473703(.)X
1076483809(.)X
1076491 f
1076503952(34)X
1076511096 5760(5.9.1.3)N
1076521436 0.1648(dwarf_type_die_offset\(\))AX
1076533 f
1076542325(.)X
1076552431(.)X
1076562537(.)X
1076572643(.)X
1076582749(.)X
1076592855(.)X
1076602961(.)X
1076613067(.)X
1076623173(.)X
1076633279(.)X
1076643385(.)X
1076653491(.)X
1076663597(.)X
1076673703(.)X
1076683809(.)X
1076691 f
1076703952(34)X
1076711096 5856(5.9.1.4)N
1076721436 0.1845(dwarf_type_cu_offset\(\))AX
1076733 f
1076742325(.)X
1076752431(.)X
1076762537(.)X
1076772643(.)X
1076782749(.)X
1076792855(.)X
1076802961(.)X
1076813067(.)X
1076823173(.)X
1076833279(.)X
1076843385(.)X
1076853491(.)X
1076863597(.)X
1076873703(.)X
1076883809(.)X
1076891 f
1076903952(34)X
1076912235 6164(-)N
1076922282(ii)X
1076932346(-)X
107694
10769558 p
107696%%Page: 58 58
1076970(Courier)xf 0 f
10769810 s 0 xH 0 xS 0 f
1076991 f
1077001096 768(5.9.1.5)N
1077011436 0.1667(dwarf_type_name_offsets\(\))AX
1077023 f
1077032431(.)X
1077042537(.)X
1077052643(.)X
1077062749(.)X
1077072855(.)X
1077082961(.)X
1077093067(.)X
1077103173(.)X
1077113279(.)X
1077123385(.)X
1077133491(.)X
1077143597(.)X
1077153703(.)X
1077163809(.)X
1077171 f
1077183952(35)X
107719676 864(5.10)N
107720856(User)X
1077211028(Defined)X
1077221307(Static)X
1077231509(Variable)X
1077241806(Names)X
1077252049(Operations)X
1077263 f
1077272537(.)X
1077282643(.)X
1077292749(.)X
1077302855(.)X
1077312961(.)X
1077323067(.)X
1077333173(.)X
1077343279(.)X
1077353385(.)X
1077363491(.)X
1077373597(.)X
1077383703(.)X
1077393809(.)X
1077401 f
1077413952(35)X
107742856 960(5.10.1)N
1077431096(Debugger)X
1077441433(Interface)X
1077451740(Operations)X
1077463 f
1077472219(.)X
1077482325(.)X
1077492431(.)X
1077502537(.)X
1077512643(.)X
1077522749(.)X
1077532855(.)X
1077542961(.)X
1077553067(.)X
1077563173(.)X
1077573279(.)X
1077583385(.)X
1077593491(.)X
1077603597(.)X
1077613703(.)X
1077623809(.)X
1077631 f
1077643952(35)X
1077651096 1056(5.10.1.1)N
1077661436 0.2167(dwarf_get_vars\(\))AX
1077673 f
1077682113(.)X
1077692219(.)X
1077702325(.)X
1077712431(.)X
1077722537(.)X
1077732643(.)X
1077742749(.)X
1077752855(.)X
1077762961(.)X
1077773067(.)X
1077783173(.)X
1077793279(.)X
1077803385(.)X
1077813491(.)X
1077823597(.)X
1077833703(.)X
1077843809(.)X
1077851 f
1077863952(35)X
1077871096 1152(5.10.1.2)N
1077881436 0.2768(dwarf_varname\(\))AX
1077893 f
1077902113(.)X
1077912219(.)X
1077922325(.)X
1077932431(.)X
1077942537(.)X
1077952643(.)X
1077962749(.)X
1077972855(.)X
1077982961(.)X
1077993067(.)X
1078003173(.)X
1078013279(.)X
1078023385(.)X
1078033491(.)X
1078043597(.)X
1078053703(.)X
1078063809(.)X
1078071 f
1078083952(36)X
1078091096 1248(5.10.1.3)N
1078101436 0.2024(dwarf_var_die_offset\(\))AX
1078113 f
1078122325(.)X
1078132431(.)X
1078142537(.)X
1078152643(.)X
1078162749(.)X
1078172855(.)X
1078182961(.)X
1078193067(.)X
1078203173(.)X
1078213279(.)X
1078223385(.)X
1078233491(.)X
1078243597(.)X
1078253703(.)X
1078263809(.)X
1078271 f
1078283952(36)X
1078291096 1344(5.10.1.4)N
1078301436 0.2250(dwarf_var_cu_offset\(\))AX
1078313 f
1078322219(.)X
1078332325(.)X
1078342431(.)X
1078352537(.)X
1078362643(.)X
1078372749(.)X
1078382855(.)X
1078392961(.)X
1078403067(.)X
1078413173(.)X
1078423279(.)X
1078433385(.)X
1078443491(.)X
1078453597(.)X
1078463703(.)X
1078473809(.)X
1078481 f
1078493952(36)X
1078501096 1440(5.10.1.5)N
1078511436 0.2011(dwarf_var_name_offsets\(\))AX
1078523 f
1078532431(.)X
1078542537(.)X
1078552643(.)X
1078562749(.)X
1078572855(.)X
1078582961(.)X
1078593067(.)X
1078603173(.)X
1078613279(.)X
1078623385(.)X
1078633491(.)X
1078643597(.)X
1078653703(.)X
1078663809(.)X
1078671 f
1078683952(36)X
107869676 1536(5.11)N
107870856(Macro)X
1078711086(Information)X
1078721489(Operations)X
1078733 f
1078741901(.)X
1078752007(.)X
1078762113(.)X
1078772219(.)X
1078782325(.)X
1078792431(.)X
1078802537(.)X
1078812643(.)X
1078822749(.)X
1078832855(.)X
1078842961(.)X
1078853067(.)X
1078863173(.)X
1078873279(.)X
1078883385(.)X
1078893491(.)X
1078903597(.)X
1078913703(.)X
1078923809(.)X
1078931 f
1078943952(37)X
107895856 1632(5.11.1)N
1078961096(General)X
1078971371(Macro)X
1078981601(Operations)X
1078993 f
1079002007(.)X
1079012113(.)X
1079022219(.)X
1079032325(.)X
1079042431(.)X
1079052537(.)X
1079062643(.)X
1079072749(.)X
1079082855(.)X
1079092961(.)X
1079103067(.)X
1079113173(.)X
1079123279(.)X
1079133385(.)X
1079143491(.)X
1079153597(.)X
1079163703(.)X
1079173809(.)X
1079181 f
1079193952(37)X
1079201096 1728(5.11.1.1)N
1079211436 0.1552(dwarf_find_macro_value_start\(\))AX
1079223 f
1079232537(.)X
1079242643(.)X
1079252749(.)X
1079262855(.)X
1079272961(.)X
1079283067(.)X
1079293173(.)X
1079303279(.)X
1079313385(.)X
1079323491(.)X
1079333597(.)X
1079343703(.)X
1079353809(.)X
1079361 f
1079373952(37)X
107938856 1824(5.11.2)N
1079391096(Debugger)X
1079401433(Interface)X
1079411740(Macro)X
1079421970(Operations)X
1079433 f
1079442431(.)X
1079452537(.)X
1079462643(.)X
1079472749(.)X
1079482855(.)X
1079492961(.)X
1079503067(.)X
1079513173(.)X
1079523279(.)X
1079533385(.)X
1079543491(.)X
1079553597(.)X
1079563703(.)X
1079573809(.)X
1079581 f
1079593952(37)X
107960856 1920(5.11.3)N
1079611096(Low)X
1079621263(Level)X
1079631466(Macro)X
1079641696(Information)X
1079652099(Operations)X
1079663 f
1079672537(.)X
1079682643(.)X
1079692749(.)X
1079702855(.)X
1079712961(.)X
1079723067(.)X
1079733173(.)X
1079743279(.)X
1079753385(.)X
1079763491(.)X
1079773597(.)X
1079783703(.)X
1079793809(.)X
1079801 f
1079813952(37)X
1079821096 2016(5.11.3.1)N
1079831436 0.1562(dwarf_get_macro_details\(\))AX
1079843 f
1079852431(.)X
1079862537(.)X
1079872643(.)X
1079882749(.)X
1079892855(.)X
1079902961(.)X
1079913067(.)X
1079923173(.)X
1079933279(.)X
1079943385(.)X
1079953491(.)X
1079963597(.)X
1079973703(.)X
1079983809(.)X
1079991 f
1080003952(37)X
108001676 2112(5.12)N
108002856(Low)X
1080031023(Level)X
1080041226(Frame)X
1080051451(Operations)X
1080063 f
1080071901(.)X
1080082007(.)X
1080092113(.)X
1080102219(.)X
1080112325(.)X
1080122431(.)X
1080132537(.)X
1080142643(.)X
1080152749(.)X
1080162855(.)X
1080172961(.)X
1080183067(.)X
1080193173(.)X
1080203279(.)X
1080213385(.)X
1080223491(.)X
1080233597(.)X
1080243703(.)X
1080253809(.)X
1080261 f
1080273952(38)X
1080281096 2208(5.12.0.1)N
1080291436(dwarf_get_fde_list\(\))X
1080303 f
1080312219(.)X
1080322325(.)X
1080332431(.)X
1080342537(.)X
1080352643(.)X
1080362749(.)X
1080372855(.)X
1080382961(.)X
1080393067(.)X
1080403173(.)X
1080413279(.)X
1080423385(.)X
1080433491(.)X
1080443597(.)X
1080453703(.)X
1080463809(.)X
1080471 f
1080483952(39)X
1080491096 2304(5.12.0.2)N
1080501436(dwarf_get_fde_list_eh\(\))X
1080513 f
1080522325(.)X
1080532431(.)X
1080542537(.)X
1080552643(.)X
1080562749(.)X
1080572855(.)X
1080582961(.)X
1080593067(.)X
1080603173(.)X
1080613279(.)X
1080623385(.)X
1080633491(.)X
1080643597(.)X
1080653703(.)X
1080663809(.)X
1080671 f
1080683952(40)X
1080691096 2400(5.12.0.3)N
1080701436 0.2143(dwarf_get_cie_of_fde\(\))AX
1080713 f
1080722325(.)X
1080732431(.)X
1080742537(.)X
1080752643(.)X
1080762749(.)X
1080772855(.)X
1080782961(.)X
1080793067(.)X
1080803173(.)X
1080813279(.)X
1080823385(.)X
1080833491(.)X
1080843597(.)X
1080853703(.)X
1080863809(.)X
1080871 f
1080883952(41)X
1080891096 2496(5.12.0.4)N
1080901436 0.1989(dwarf_get_fde_for_die\(\))AX
1080913 f
1080922325(.)X
1080932431(.)X
1080942537(.)X
1080952643(.)X
1080962749(.)X
1080972855(.)X
1080982961(.)X
1080993067(.)X
1081003173(.)X
1081013279(.)X
1081023385(.)X
1081033491(.)X
1081043597(.)X
1081053703(.)X
1081063809(.)X
1081071 f
1081083952(41)X
1081091096 2592(5.12.0.5)N
1081101436 0.2375(dwarf_get_fde_range\(\))AX
1081113 f
1081122325(.)X
1081132431(.)X
1081142537(.)X
1081152643(.)X
1081162749(.)X
1081172855(.)X
1081182961(.)X
1081193067(.)X
1081203173(.)X
1081213279(.)X
1081223385(.)X
1081233491(.)X
1081243597(.)X
1081253703(.)X
1081263809(.)X
1081271 f
1081283952(41)X
1081291096 2688(5.12.0.6)N
1081301436 0.1776(dwarf_get_cie_info\(\))AX
1081313 f
1081322219(.)X
1081332325(.)X
1081342431(.)X
1081352537(.)X
1081362643(.)X
1081372749(.)X
1081382855(.)X
1081392961(.)X
1081403067(.)X
1081413173(.)X
1081423279(.)X
1081433385(.)X
1081443491(.)X
1081453597(.)X
1081463703(.)X
1081473809(.)X
1081481 f
1081493952(42)X
1081501096 2784(5.12.0.7)N
1081511436 0.1250(dwarf_get_fde_instr_bytes\(\))AX
1081523 f
1081532431(.)X
1081542537(.)X
1081552643(.)X
1081562749(.)X
1081572855(.)X
1081582961(.)X
1081593067(.)X
1081603173(.)X
1081613279(.)X
1081623385(.)X
1081633491(.)X
1081643597(.)X
1081653703(.)X
1081663809(.)X
1081671 f
1081683952(42)X
1081691096 2880(5.12.0.8)N
1081701436 0.1898(dwarf_get_fde_info_for_reg\(\))AX
1081713 f
1081722537(.)X
1081732643(.)X
1081742749(.)X
1081752855(.)X
1081762961(.)X
1081773067(.)X
1081783173(.)X
1081793279(.)X
1081803385(.)X
1081813491(.)X
1081823597(.)X
1081833703(.)X
1081843809(.)X
1081851 f
1081863952(43)X
1081871096 2976(5.12.0.9)N
1081881436 0.1562(dwarf_get_fde_info_for_all_regs\(\))AX
1081893 f
1081902643(.)X
1081912749(.)X
1081922855(.)X
1081932961(.)X
1081943067(.)X
1081953173(.)X
1081963279(.)X
1081973385(.)X
1081983491(.)X
1081993597(.)X
1082003703(.)X
1082013809(.)X
1082021 f
1082033952(43)X
1082041096 3072(5.12.0.10)N
1082051436 0.2109(dwarf_get_fde_n\(\))AX
1082063 f
1082072113(.)X
1082082219(.)X
1082092325(.)X
1082102431(.)X
1082112537(.)X
1082122643(.)X
1082132749(.)X
1082142855(.)X
1082152961(.)X
1082163067(.)X
1082173173(.)X
1082183279(.)X
1082193385(.)X
1082203491(.)X
1082213597(.)X
1082223703(.)X
1082233809(.)X
1082241 f
1082253952(43)X
1082261096 3168(5.12.0.11)N
1082271436 0.2062(dwarf_get_fde_at_pc\(\))AX
1082283 f
1082292219(.)X
1082302325(.)X
1082312431(.)X
1082322537(.)X
1082332643(.)X
1082342749(.)X
1082352855(.)X
1082362961(.)X
1082373067(.)X
1082383173(.)X
1082393279(.)X
1082403385(.)X
1082413491(.)X
1082423597(.)X
1082433703(.)X
1082443809(.)X
1082451 f
1082463952(44)X
1082471096 3264(5.12.0.12)N
1082481436 0.1367(dwarf_expand_frame_instructions\(\))AX
1082493 f
1082502643(.)X
1082512749(.)X
1082522855(.)X
1082532961(.)X
1082543067(.)X
1082553173(.)X
1082563279(.)X
1082573385(.)X
1082583491(.)X
1082593597(.)X
1082603703(.)X
1082613809(.)X
1082621 f
1082633952(44)X
108264676 3360(5.13)N
108265856(Location)X
1082661161(Expression)X
1082671537(Evaluation)X
1082683 f
1082692007(.)X
1082702113(.)X
1082712219(.)X
1082722325(.)X
1082732431(.)X
1082742537(.)X
1082752643(.)X
1082762749(.)X
1082772855(.)X
1082782961(.)X
1082793067(.)X
1082803173(.)X
1082813279(.)X
1082823385(.)X
1082833491(.)X
1082843597(.)X
1082853703(.)X
1082863809(.)X
1082871 f
1082883952(45)X
108289856 3456(5.13.1)N
1082901096(Location)X
1082911401(List)X
1082921545(Internal-level)X
1082931998(Interface)X
1082943 f
1082952431(.)X
1082962537(.)X
1082972643(.)X
1082982749(.)X
1082992855(.)X
1083002961(.)X
1083013067(.)X
1083023173(.)X
1083033279(.)X
1083043385(.)X
1083053491(.)X
1083063597(.)X
1083073703(.)X
1083083809(.)X
1083091 f
1083103952(45)X
1083111096 3552(5.13.1.1)N
1083121436(dwarf_get_loclist_entry\(\))X
1083133 f
1083142325(.)X
1083152431(.)X
1083162537(.)X
1083172643(.)X
1083182749(.)X
1083192855(.)X
1083202961(.)X
1083213067(.)X
1083223173(.)X
1083233279(.)X
1083243385(.)X
1083253491(.)X
1083263597(.)X
1083273703(.)X
1083283809(.)X
1083291 f
1083303952(45)X
108331676 3648(5.14)N
108332856(Abbreviations)X
1083331330(access)X
1083343 f
1083351583(.)X
1083361689(.)X
1083371795(.)X
1083381901(.)X
1083392007(.)X
1083402113(.)X
1083412219(.)X
1083422325(.)X
1083432431(.)X
1083442537(.)X
1083452643(.)X
1083462749(.)X
1083472855(.)X
1083482961(.)X
1083493067(.)X
1083503173(.)X
1083513279(.)X
1083523385(.)X
1083533491(.)X
1083543597(.)X
1083553703(.)X
1083563809(.)X
1083571 f
1083583952(46)X
108359856 3744(5.14.1)N
1083601096 0.2279(dwarf_get_abbrev\(\))AX
1083613 f
1083621795(.)X
1083631901(.)X
1083642007(.)X
1083652113(.)X
1083662219(.)X
1083672325(.)X
1083682431(.)X
1083692537(.)X
1083702643(.)X
1083712749(.)X
1083722855(.)X
1083732961(.)X
1083743067(.)X
1083753173(.)X
1083763279(.)X
1083773385(.)X
1083783491(.)X
1083793597(.)X
1083803703(.)X
1083813809(.)X
1083821 f
1083833952(46)X
108384856 3840(5.14.2)N
1083851096 0.1964(dwarf_get_abbrev_tag\(\))AX
1083863 f
1083872007(.)X
1083882113(.)X
1083892219(.)X
1083902325(.)X
1083912431(.)X
1083922537(.)X
1083932643(.)X
1083942749(.)X
1083952855(.)X
1083962961(.)X
1083973067(.)X
1083983173(.)X
1083993279(.)X
1084003385(.)X
1084013491(.)X
1084023597(.)X
1084033703(.)X
1084043809(.)X
1084051 f
1084063952(46)X
108407856 3936(5.14.3)N
1084081096 0.2216(dwarf_get_abbrev_code\(\))AX
1084093 f
1084102007(.)X
1084112113(.)X
1084122219(.)X
1084132325(.)X
1084142431(.)X
1084152537(.)X
1084162643(.)X
1084172749(.)X
1084182855(.)X
1084192961(.)X
1084203067(.)X
1084213173(.)X
1084223279(.)X
1084233385(.)X
1084243491(.)X
1084253597(.)X
1084263703(.)X
1084273809(.)X
1084281 f
1084293952(46)X
108430856 4032(5.14.4)N
1084311096 0.1734(dwarf_get_abbrev_children_flag\(\))AX
1084323 f
1084332325(.)X
1084342431(.)X
1084352537(.)X
1084362643(.)X
1084372749(.)X
1084382855(.)X
1084392961(.)X
1084403067(.)X
1084413173(.)X
1084423279(.)X
1084433385(.)X
1084443491(.)X
1084453597(.)X
1084463703(.)X
1084473809(.)X
1084481 f
1084493952(46)X
108450856 4128(5.14.5)N
1084511096 0.1957(dwarf_get_abbrev_entry\(\))AX
1084523 f
1084532007(.)X
1084542113(.)X
1084552219(.)X
1084562325(.)X
1084572431(.)X
1084582537(.)X
1084592643(.)X
1084602749(.)X
1084612855(.)X
1084622961(.)X
1084633067(.)X
1084643173(.)X
1084653279(.)X
1084663385(.)X
1084673491(.)X
1084683597(.)X
1084693703(.)X
1084703809(.)X
1084711 f
1084723952(47)X
108473676 4224(5.15)N
108474856(String)X
1084751071(Section)X
1084761331(Operations)X
1084773 f
1084781795(.)X
1084791901(.)X
1084802007(.)X
1084812113(.)X
1084822219(.)X
1084832325(.)X
1084842431(.)X
1084852537(.)X
1084862643(.)X
1084872749(.)X
1084882855(.)X
1084892961(.)X
1084903067(.)X
1084913173(.)X
1084923279(.)X
1084933385(.)X
1084943491(.)X
1084953597(.)X
1084963703(.)X
1084973809(.)X
1084981 f
1084993952(47)X
108500856 4320(5.15.1)N
1085011096(dwarf_get_str\(\))X
1085023 f
1085031689(.)X
1085041795(.)X
1085051901(.)X
1085062007(.)X
1085072113(.)X
1085082219(.)X
1085092325(.)X
1085102431(.)X
1085112537(.)X
1085122643(.)X
1085132749(.)X
1085142855(.)X
1085152961(.)X
1085163067(.)X
1085173173(.)X
1085183279(.)X
1085193385(.)X
1085203491(.)X
1085213597(.)X
1085223703(.)X
1085233809(.)X
1085241 f
1085253952(47)X
108526676 4416(5.16)N
108527856(Address)X
1085281139(Range)X
1085291364(Operations)X
1085303 f
1085311795(.)X
1085321901(.)X
1085332007(.)X
1085342113(.)X
1085352219(.)X
1085362325(.)X
1085372431(.)X
1085382537(.)X
1085392643(.)X
1085402749(.)X
1085412855(.)X
1085422961(.)X
1085433067(.)X
1085443173(.)X
1085453279(.)X
1085463385(.)X
1085473491(.)X
1085483597(.)X
1085493703(.)X
1085503809(.)X
1085511 f
1085523952(47)X
108553856 4512(5.16.1)N
1085541096 0.2361(dwarf_get_aranges\(\))AX
1085553 f
1085561901(.)X
1085572007(.)X
1085582113(.)X
1085592219(.)X
1085602325(.)X
1085612431(.)X
1085622537(.)X
1085632643(.)X
1085642749(.)X
1085652855(.)X
1085662961(.)X
1085673067(.)X
1085683173(.)X
1085693279(.)X
1085703385(.)X
1085713491(.)X
1085723597(.)X
1085733703(.)X
1085743809(.)X
1085751 f
1085763952(47)X
108577856 4608(5.16.2)N
1085781096 0.1719(dwarf_get_cu_die_offset\(\))AX
1085793 f
1085802007(.)X
1085812113(.)X
1085822219(.)X
1085832325(.)X
1085842431(.)X
1085852537(.)X
1085862643(.)X
1085872749(.)X
1085882855(.)X
1085892961(.)X
1085903067(.)X
1085913173(.)X
1085923279(.)X
1085933385(.)X
1085943491(.)X
1085953597(.)X
1085963703(.)X
1085973809(.)X
1085981 f
1085993952(48)X
108600856 4704(5.16.3)N
1086011096 0.2243(dwarf_get_arange_cu_header_offset\(\))AX
1086023 f
1086032431(.)X
1086042537(.)X
1086052643(.)X
1086062749(.)X
1086072855(.)X
1086082961(.)X
1086093067(.)X
1086103173(.)X
1086113279(.)X
1086123385(.)X
1086133491(.)X
1086143597(.)X
1086153703(.)X
1086163809(.)X
1086171 f
1086183952(48)X
108619856 4800(5.16.4)N
1086201096 0.2045(dwarf_get_arange_info\(\))AX
1086213 f
1086222007(.)X
1086232113(.)X
1086242219(.)X
1086252325(.)X
1086262431(.)X
1086272537(.)X
1086282643(.)X
1086292749(.)X
1086302855(.)X
1086312961(.)X
1086323067(.)X
1086333173(.)X
1086343279(.)X
1086353385(.)X
1086363491(.)X
1086373597(.)X
1086383703(.)X
1086393809(.)X
1086401 f
1086413952(49)X
108642676 4896(5.17)N
108643856(General)X
1086441131(Low)X
1086451298(Level)X
1086461501(Operations)X
1086473 f
1086481901(.)X
1086492007(.)X
1086502113(.)X
1086512219(.)X
1086522325(.)X
1086532431(.)X
1086542537(.)X
1086552643(.)X
1086562749(.)X
1086572855(.)X
1086582961(.)X
1086593067(.)X
1086603173(.)X
1086613279(.)X
1086623385(.)X
1086633491(.)X
1086643597(.)X
1086653703(.)X
1086663809(.)X
1086671 f
1086683952(49)X
108669856 4992(5.17.1)N
1086701096 0.1848(dwarf_get_address_size\(\))AX
1086713 f
1086722007(.)X
1086732113(.)X
1086742219(.)X
1086752325(.)X
1086762431(.)X
1086772537(.)X
1086782643(.)X
1086792749(.)X
1086802855(.)X
1086812961(.)X
1086823067(.)X
1086833173(.)X
1086843279(.)X
1086853385(.)X
1086863491(.)X
1086873597(.)X
1086883703(.)X
1086893809(.)X
1086901 f
1086913952(49)X
108692676 5088(5.18)N
108693856(Utility)X
1086941084(Operations)X
1086953 f
1086961583(.)X
1086971689(.)X
1086981795(.)X
1086991901(.)X
1087002007(.)X
1087012113(.)X
1087022219(.)X
1087032325(.)X
1087042431(.)X
1087052537(.)X
1087062643(.)X
1087072749(.)X
1087082855(.)X
1087092961(.)X
1087103067(.)X
1087113173(.)X
1087123279(.)X
1087133385(.)X
1087143491(.)X
1087153597(.)X
1087163703(.)X
1087173809(.)X
1087181 f
1087193952(49)X
108720856 5184(5.18.1)N
1087211096 0.2917(dwarf_errno\(\))AX
1087223 f
1087231689(.)X
1087241795(.)X
1087251901(.)X
1087262007(.)X
1087272113(.)X
1087282219(.)X
1087292325(.)X
1087302431(.)X
1087312537(.)X
1087322643(.)X
1087332749(.)X
1087342855(.)X
1087352961(.)X
1087363067(.)X
1087373173(.)X
1087383279(.)X
1087393385(.)X
1087403491(.)X
1087413597(.)X
1087423703(.)X
1087433809(.)X
1087441 f
1087453952(49)X
108746856 5280(5.18.2)N
1087471096 0.2404(dwarf_errmsg\(\))AX
1087483 f
1087491689(.)X
1087501795(.)X
1087511901(.)X
1087522007(.)X
1087532113(.)X
1087542219(.)X
1087552325(.)X
1087562431(.)X
1087572537(.)X
1087582643(.)X
1087592749(.)X
1087602855(.)X
1087612961(.)X
1087623067(.)X
1087633173(.)X
1087643279(.)X
1087653385(.)X
1087663491(.)X
1087673597(.)X
1087683703(.)X
1087693809(.)X
1087701 f
1087713952(49)X
108772856 5376(5.18.3)N
1087731096 0.2426(dwarf_seterrhand\(\))AX
1087743 f
1087751795(.)X
1087761901(.)X
1087772007(.)X
1087782113(.)X
1087792219(.)X
1087802325(.)X
1087812431(.)X
1087822537(.)X
1087832643(.)X
1087842749(.)X
1087852855(.)X
1087862961(.)X
1087873067(.)X
1087883173(.)X
1087893279(.)X
1087903385(.)X
1087913491(.)X
1087923597(.)X
1087933703(.)X
1087943809(.)X
1087951 f
1087963952(53)X
108797856 5472(5.18.4)N
1087981096 0.2812(dwarf_seterrarg\(\))AX
1087993 f
1088001795(.)X
1088011901(.)X
1088022007(.)X
1088032113(.)X
1088042219(.)X
1088052325(.)X
1088062431(.)X
1088072537(.)X
1088082643(.)X
1088092749(.)X
1088102855(.)X
1088112961(.)X
1088123067(.)X
1088133173(.)X
1088143279(.)X
1088153385(.)X
1088163491(.)X
1088173597(.)X
1088183703(.)X
1088193809(.)X
1088201 f
1088213952(53)X
108822856 5568(5.18.5)N
1088231096 0.2321(dwarf_dealloc\(\))AX
1088243 f
1088251689(.)X
1088261795(.)X
1088271901(.)X
1088282007(.)X
1088292113(.)X
1088302219(.)X
1088312325(.)X
1088322431(.)X
1088332537(.)X
1088342643(.)X
1088352749(.)X
1088362855(.)X
1088372961(.)X
1088383067(.)X
1088393173(.)X
1088403279(.)X
1088413385(.)X
1088423491(.)X
1088433597(.)X
1088443703(.)X
1088453809(.)X
1088461 f
1088473952(53)X
1088482224 6164(-)N
1088492271(iii)X
1088502357(-)X
108851
10885259 p
108853%%Page: 59 59
1088540(Courier)xf 0 f
10885510 s 0 xH 0 xS 0 f
1088561 f
1088571982 1056(LIST)N
1088582171(OF)X
1088592293(FIGURES)X
108860576 1296(Figure)N
108861805(1.)X
108862905(Scalar)X
1088631126(Types)X
1088643 f
1088651371(.)X
1088661477(.)X
1088671583(.)X
1088681689(.)X
1088691795(.)X
1088701901(.)X
1088712007(.)X
1088722113(.)X
1088732219(.)X
1088742325(.)X
1088752431(.)X
1088762537(.)X
1088772643(.)X
1088782749(.)X
1088792855(.)X
1088802961(.)X
1088813067(.)X
1088823173(.)X
1088833279(.)X
1088843385(.)X
1088853491(.)X
1088863597(.)X
1088873703(.)X
1088883809(.)X
1088891 f
1088903992(4)X
108891576 1440(Figure)N
108892805(2.)X
108893905(Error)X
1088941095(Indications)X
1088953 f
1088961583(.)X
1088971689(.)X
1088981795(.)X
1088991901(.)X
1089002007(.)X
1089012113(.)X
1089022219(.)X
1089032325(.)X
1089042431(.)X
1089052537(.)X
1089062643(.)X
1089072749(.)X
1089082855(.)X
1089092961(.)X
1089103067(.)X
1089113173(.)X
1089123279(.)X
1089133385(.)X
1089143491(.)X
1089153597(.)X
1089163703(.)X
1089173809(.)X
1089181 f
1089193952(10)X
108920576 1584(Figure)N
108921805(3.)X
108922905(Allocation/Deallocation)X
1089231695(Identifiers)X
1089243 f
1089252113(.)X
1089262219(.)X
1089272325(.)X
1089282431(.)X
1089292537(.)X
1089302643(.)X
1089312749(.)X
1089322855(.)X
1089332961(.)X
1089343067(.)X
1089353173(.)X
1089363279(.)X
1089373385(.)X
1089383491(.)X
1089393597(.)X
1089403703(.)X
1089413809(.)X
1089421 f
1089433952(12)X
108944576 1728(Figure)N
108945805(4.)X
108946905(Frame)X
1089471130(Information)X
1089481533(Rule)X
1089491704(Assignments)X
1089503 f
1089512219(.)X
1089522325(.)X
1089532431(.)X
1089542537(.)X
1089552643(.)X
1089562749(.)X
1089572855(.)X
1089582961(.)X
1089593067(.)X
1089603173(.)X
1089613279(.)X
1089623385(.)X
1089633491(.)X
1089643597(.)X
1089653703(.)X
1089663809(.)X
1089671 f
1089683952(39)X
108969576 1872(Figure)N
108970805(5.)X
108971905(Frame)X
1089721130(Information)X
1089731533(Special)X
1089741789(Values)X
1089753 f
1089762113(.)X
1089772219(.)X
1089782325(.)X
1089792431(.)X
1089802537(.)X
1089812643(.)X
1089822749(.)X
1089832855(.)X
1089842961(.)X
1089853067(.)X
1089863173(.)X
1089873279(.)X
1089883385(.)X
1089893491(.)X
1089903597(.)X
1089913703(.)X
1089923809(.)X
1089931 f
1089943952(39)X
108995576 2016(Figure)N
108996805(6.)X
108997905(List)X
1089981049(of)X
1089991136(Dwarf)X
1090001362(Error)X
1090011552(Codes)X
1090023 f
1090031795(.)X
1090041901(.)X
1090052007(.)X
1090062113(.)X
1090072219(.)X
1090082325(.)X
1090092431(.)X
1090102537(.)X
1090112643(.)X
1090122749(.)X
1090132855(.)X
1090142961(.)X
1090153067(.)X
1090163173(.)X
1090173279(.)X
1090183385(.)X
1090193491(.)X
1090203597(.)X
1090213703(.)X
1090223809(.)X
1090231 f
1090243952(50)X
109025576 2160(Figure)N
109026805(7.)X
109027905(List)X
1090281049(of)X
1090291136(Dwarf)X
1090301362(2)X
1090311422(Error)X
1090321612(Codes)X
1090331832(\(continued\))X
1090343 f
1090352325(.)X
1090362431(.)X
1090372537(.)X
1090382643(.)X
1090392749(.)X
1090402855(.)X
1090412961(.)X
1090423067(.)X
1090433173(.)X
1090443279(.)X
1090453385(.)X
1090463491(.)X
1090473597(.)X
1090483703(.)X
1090493809(.)X
1090501 f
1090513952(51)X
109052576 2304(Figure)N
109053805(8.)X
109054905(List)X
1090551049(of)X
1090561136(Dwarf)X
1090571362(2)X
1090581422(Error)X
1090591612(Codes)X
1090601832(\(continued\))X
1090613 f
1090622325(.)X
1090632431(.)X
1090642537(.)X
1090652643(.)X
1090662749(.)X
1090672855(.)X
1090682961(.)X
1090693067(.)X
1090703173(.)X
1090713279(.)X
1090723385(.)X
1090733491(.)X
1090743597(.)X
1090753703(.)X
1090763809(.)X
1090771 f
1090783952(52)X
109079576 2448(Figure)N
109080805(9.)X
109081905(List)X
1090821049(of)X
1090831136(Dwarf)X
1090841362(2)X
1090851422(Error)X
1090861612(Codes)X
1090873 f
1090881901(.)X
1090892007(.)X
1090902113(.)X
1090912219(.)X
1090922325(.)X
1090932431(.)X
1090942537(.)X
1090952643(.)X
1090962749(.)X
1090972855(.)X
1090982961(.)X
1090993067(.)X
1091003173(.)X
1091013279(.)X
1091023385(.)X
1091033491(.)X
1091043597(.)X
1091053703(.)X
1091063809(.)X
1091071 f
1091083952(53)X
1091092226 6164(-)N
1091102273(iv)X
1091112355(-)X
109112
10911360 p
109114%%Page: 60 60
1091150(Courier)xf 0 f
10911610 s 0 xH 0 xS 0 f
1091171 f
1091183 f
10911912 s
1091201425 576(A)N
1091211518(Consumer)X
1091221968(Library)X
1091232318(Interface)X
1091242716(to)X
1091252820(DWARF)X
1091262 f
10912711 s
1091281084 720(UNIX)N
1091291311(International)X
1091301799(Programming)X
1091312314(Languages)X
1091322722(Special)X
1091333004(Interest)X
1091343295(Group)X
10913510 s
1091362115 1152(ABSTRACT)N
1091371 f
109138576 1392(This)N
109139745(document)X
1091401089(describes)X
1091411416(an)X
1091421520(interface)X
1091431830(to)X
1091441920(a)X
1091451984(library)X
1091462226(of)X
1091472321(functions)X
1091482647(to)X
1091492737(access)X
1091502971(DWARF)X
1091513288(debugging)X
1091523654(information)X
109153576 1488(entries)N
109154815(and)X
109155956(DWARF)X
1091561270(line)X
1091571415(number)X
1091581685(information.)X
1091592108(It)X
1091602182(does)X
1091612354(not)X
1091622481(make)X
1091632679(recommendations)X
1091643273(as)X
1091653364(to)X
1091663450(how)X
1091673612(the)X
1091683734(functions)X
109169576 1584(described)N
109170904(in)X
109171986(this)X
1091721121(document)X
1091731457(should)X
1091741690(be)X
1091751786(implemented)X
1091762224(nor)X
1091772351(does)X
1091782518(it)X
1091792582(suggest)X
1091802842(possible)X
1091813124(optimizations.)X
109182576 1728(The)N
109183722(document)X
1091841059(is)X
1091851133(oriented)X
1091861417(to)X
1091871501(reading)X
1091881764(DWARF)X
1091892075(version)X
1091902333(2.)X
1091912435(There)X
1091922645(are)X
1091932766(certain)X
1091943007(sections)X
1091953287(which)X
1091963505(are)X
1091973626(SGI-specific)X
109198576 1824(\(those)N
109199794(are)X
109200915(clearly)X
1092011156(identified)X
1092021485(in)X
1092031569(the)X
1092041689(document\).)X
1092052094(We)X
1092062228(would)X
1092072450(propose)X
1092082725(this)X
1092092861(to)X
1092102944(the)X
1092113063(PLSIG)X
1092123306(committee)X
1092133665(as)X
1092143753(the)X
1092153872(basis)X
109216576 1920(for)N
109217690(a)X
109218746(standard)X
1092191038(libdwarf)X
1092201330(interface,)X
1092211652(but)X
1092221774(as)X
1092231861(of)X
1092241948(this)X
1092252083(writing,)X
1092262354(the)X
1092272472(committee)X
1092282830(is)X
1092292903(dormant.)X
109230576 2064(This)N
109231738(document)X
1092321074(are)X
1092331193(subject)X
1092341440(to)X
1092351522(change.)X
109236576 2208(rev)N
109237699(1.52,)X
109238879(02)X
109239979(Oct)X
1092401115(2003)X
10924110 f
109242576 5568(hhhhhhhhhhhh)N
1092438 s
1092441 f
109245576 5664(0.)N
109246672(UNIX)X
109247847(is)X
109248906(a)X
109249950(registered)X
1092501217(trademark)X
1092511491(of)X
1092521560(UNIX)X
1092531735(System)X
1092541940(Laboratories,)X
1092552294(Inc.)X
1092562423(in)X
1092572489(the)X
1092582583(United)X
1092592773(States)X
1092602942(and)X
1092613050(other)X
1092623197(countries.)X
109263
10926461 p
109265%%Page: 61 61
1092660(Courier)xf 0 f
1092678 s 0 xH 0 xS 0 f
1092681 f
109269
10927061 p
109271%%Trailer
109272xt
109273
109274xs
1092750707010001ad900000812400011e740000000a000000014020682700013abe000000660000000000000000000000000000001900000000libdwarf/libdwarf2p.1.mm��\." $Revision: 1.12 $
109276\." $Date: 2002/01/14 23:40:11 $
109277\."
109278\."
109279\." the following line may be removed if the ff ligature works on your machine
109280.lg 0
109281\." set up heading formats
109282.ds HF 3 3 3 3 3 2 2
109283.ds HP +2 +2 +1 +0 +0
109284.nr Hs 5
109285.nr Hb 5
109286\." ==============================================
109287\." Put current date in the following at each rev
109288.ds vE rev 1.18, 10 Jan 2002
109289\." ==============================================
109290\." ==============================================
109291.ds | |
109292.ds ~ ~
109293.ds ' '
109294.if t .ds Cw \&\f(CW
109295.if n .ds Cw \fB
109296.de Cf          \" Place every other arg in Cw font, beginning with first
109297.if \\n(.$=1 \&\*(Cw\\$1\fP
109298.if \\n(.$=2 \&\*(Cw\\$1\fP\\$2
109299.if \\n(.$=3 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP
109300.if \\n(.$=4 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP\\$4
109301.if \\n(.$=5 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP\\$4\*(Cw\\$5\fP
109302.if \\n(.$=6 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP\\$4\*(Cw\\$5\fP\\$6
109303.if \\n(.$=7 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP\\$4\*(Cw\\$5\fP\\$6\*(Cw\\$7\fP
109304.if \\n(.$=8 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP\\$4\*(Cw\\$5\fP\\$6\*(Cw\\$7\fP\\$8
109305.if \\n(.$=9 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP\\$4\*(Cw\\$5\fP\\$6\*(Cw\\$7\fP\\$8\
109306*(Cw
109307..
109308.nr Cl 3
109309.SA 1
109310.TL
109311A Producer Library Interface to DWARF
109312.AF ""
109313.AU "UNIX International Programming Languages Special Interest Group"
109314.PF "'\*(vE '- \\\\nP -''"
109315.PM ""
109316.AS 1
109317This document describes an interface to a library of functions
109318.FS \(rg
109319UNIX is a registered trademark of UNIX System Laboratories, Inc.
109320in the United States and other countries.
109321.FE
109322to create DWARF debugging information entries and DWARF line number
109323information. It does not make recommendations as to how the functions
109324described in this document should be implemented nor does it
109325suggest possible optimizations.
109326.P
109327The document is oriented to creating DWARF version 2.
109328It was intended be proposed to the PLSIG DWARF committee
109329but that committee is now dormant.
109330.P
109331The library interfaces documented
109332in this document are subject to change.
109333.P
109334\*(vE
109335.AE
109336.MT 4
109337.H 1 "INTRODUCTION"
109338This document describes the proposed interface to \f(CWlibdwarf\fP, a
109339library of functions to provide creation of DWARF debugging information
109340records, DWARF line number information, DWARF address range and
109341pubnames information, weak names information, and DWARF frame description
109342information.
109343
109344.H 2 "Purpose and Scope"
109345The purpose of this document is to propose a library of functions to
109346create DWARF debugging information.  Reading (consuming) of such records
109347is discussed in a separate document.
109348
109349The functions in this document have been implemented at Silicon Graphics
109350and are being used by the code generator to provide debugging information.
109351
109352.P
109353Additionally, the focus of this document is the functional interface,
109354and as such, implementation and optimization issues are
109355intentionally ignored.
109356
109357.P
109358Error handling, error codes, and certain \f(CWLibdwarf\fP codes are discussed
109359in the "\fIProposed Interface to DWARF Consumer Library\fP", which should
109360be read (or at least skimmed) before reading this document.
109361
109362.H 2 "Definitions"
109363DWARF debugging information entries (DIEs) are the segments of information
109364placed in the \f(CW.debug_info\fP  and related
109365sections by compilers, assemblers, and linkage
109366editors that, in conjunction with line number entries, are necessary for
109367symbolic source-level debugging.
109368Refer to the document
109369"\fIDWARF Debugging Information Format\fP" from UI PLSIG for a more complete
109370description of these entries.
109371
109372.P
109373This document adopts all the terms and definitions in
109374"\fIDWARF Debugging Information Format\fP" version 2.
109375and the "\fIProposed Interface to DWARF Consumer Library\fP".
109376
109377.P
109378In addition, this document refers to Elf, the ATT/USL System V
109379Release 4 object format.
109380This is because the library was first developed for that object
109381format.
109382Hopefully the functions defined here can easily be
109383applied to other object formats.
109384
109385.H 2 "Overview"
109386The remaining sections of this document describe a proposed producer
109387(compiler or assembler) interface to \fILibdwarf\fP, first by describing
109388the purpose of additional types defined by the interface, followed by
109389descriptions of the available operations.
109390This document assumes you
109391are thoroughly familiar with the information contained in the
109392\fIDWARF
109393Debugging Information Format\fP document, and
109394"\fIProposed Interface to DWARF Consumer Library\fP".
109395
109396.P
109397The interface necessarily knows a little bit about the object format
109398(which is assumed to be Elf).  We make an attempt to make this knowledge
109399as limited as possible.  For example, \fILibdwarf\fP does not do the
109400writing of object data to the disk.  The producer program does that.
109401
109402.H 2 "Revision History"
109403.VL 15
109404.LI "March 1993"
109405Work on dwarf2 sgi producer draft begins
109406.LI "March 1999"
109407Adding a function to allow any number of trips
109408thru the dwarf_get_section_bytes() call.
109409.LI "April 10 1999"
109410Added support for assembler text output of dwarf
109411(as when the output must pass thru an assembler).
109412Revamped internals for better performance and
109413simpler provision for differences in ABI.
109414.LI "Sep 1, 1999"
109415Added support for little- and cross- endian
109416debug info creation.
109417.LE
109418
109419.H 1 "Type Definitions"
109420
109421.H 2 "General Description"
109422The \fIlibdwarf.h\fP
109423header file contains typedefs and preprocessor
109424definitions of types and symbolic names
109425used to reference objects of \fI Libdwarf \fP .
109426The types defined by typedefs contained in \fI libdwarf.h\fP
109427all use the convention of adding \fI Dwarf_ \fP
109428as a prefix to
109429indicate that they refer to objects used by Libdwarf.
109430The prefix \fI Dwarf_P_\fP is used for objects
109431referenced by the \fI Libdwarf\fP
109432Producer when there are similar but distinct
109433objects used by the Consumer.
109434
109435.H 2 "Namespace issues"
109436Application programs should avoid creating names
109437beginning with
109438\f(CWDwarf_\fP
109439\f(CWdwarf_\fP
109440or
109441\f(CWDW_\fP
109442as these are reserved to dwarf and libdwarf.
109443
109444.H 1 "libdwarf and Elf and relocations"
109445Much of the description below presumes that Elf is the object
109446format in use.
109447The library is probably usable with other object formats
109448that allow arbitrary sections to be created.
109449
109450.H 2 "binary or assembler output"
109451With
109452\f(CWDW_DLC_STREAM_RELOCATIONS\fP
109453(see below)
109454it is assumed that the calling app will simply
109455write the streams and relocations directly into
109456an Elf file, without going thru an assembler.
109457
109458With
109459\f(CWDW_DLC_SYMBOLIC_RELOCATIONS\fP
109460the calling app must either
109461A) generate binary relocation streams and write
109462the generated debug information streams and
109463the relocation streams direct to an elf file
109464or
109465B) generate assembler output text for an assembler
109466to read and produce an object file.
109467
109468With case B) the libdwarf-calling application must
109469use the relocation information to change
109470points of each binary stream into references to
109471symbolic names.
109472It is necessary for the assembler to be
109473willing to accept and generate relocations
109474for references from arbitrary byte boundaries.
109475For example:
109476.sp
109477.nf
109478.in +4
109479 .data 0a0bcc    #producing 3 bytes of data.
109480 .word mylabel   #producing a reference
109481 .word endlabel - startlable #producing absolute length
109482.in -4
109483.fi
109484.sp
109485
109486
109487
109488
109489.H 2 "libdwarf relationship to Elf"
109490When the documentation below refers to 'an elf section number'
109491it is really only dependent on getting (via the callback
109492function passed by the caller of
109493\f(CWdwarf_producer_init()\fP)
109494a sequence of integers back (with 1 as the lowest).
109495
109496When the documentation below refers to 'an Elf symbol index'
109497it is really dependent on
109498Elf symbol numbers
109499only if
109500\f(CWDW_DLC_STREAM_RELOCATIONS\fP
109501are being generated (see below).
109502With
109503\f(CWDW_DLC_STREAM_RELOCATIONS\fP
109504the library is generating Elf relocations
109505and the section numbers in binary form so
109506the section numbers and symbol indices must really
109507be Elf (or elf-like) numbers.
109508
109509
109510With
109511\f(CWDW_DLC_SYMBOLIC_RELOCATIONS\fP
109512the values passed as symbol indexes can be any
109513integer set or even pointer set.
109514All that libdwarf assumes is that where values
109515are unique they get unique values.
109516Libdwarf does not generate any kind of symbol table
109517from the numbers and does not check their
109518uniqueness or lack thereof.
109519
109520.H 2 "libdwarf and relocations"
109521With
109522\f(CWDW_DLC_SYMBOLIC_RELOCATIONS\fP
109523libdwarf creates binary streams of debug information
109524and arrays of relocation information describing
109525the necessary relocation.
109526The Elf section numbers and symbol numbers appear
109527nowhere in the binary streams. Such appear
109528only in the relocation information and the passed-back
109529information from calls requesting the relocation information.
109530As a consequence, the 'symbol indices' can be
109531any pointer or integer value as the caller must
109532arrange that the output deal with relocations.
109533
109534With
109535\f(CWDW_DLC_STREAM_RELOCATIONS\fP
109536all the relocations are directly created by libdwarf
109537as binary streams (libdwarf only creates the streams
109538in memory,
109539it does not write them to disk).
109540
109541.H 2 "symbols, addresses, and offsets"
109542The following applies to calls that
109543pass in symbol indices, addresses, and offsets, such
109544as
109545\f(CWdwarf_add_AT_targ_address() \fP
109546\f(CWdwarf_add_arange_b()\fP
109547and
109548\f(CWdwarf_add_frame_fde_b()\fP.
109549
109550With
109551\f(CWDW_DLC_STREAM_RELOCATIONS\fP
109552a passed in address is one of:
109553a) a section offset and the (non-global) symbol index of
109554a section symbol.
109555b) A symbol index (global symbol) and a zero offset.
109556
109557With \f(CWDW_DLC_SYMBOLIC_RELOCATIONS\fP
109558the same approach can be used, or, instead,
109559a passed in address may be
109560c) a symbol handle and an offset.
109561In this case, since it is up to the calling app to
109562generate binary relocations (if appropriate)
109563or to turn the binary stream into
109564a text stream (for input to an assembler, if appropriate)
109565the application has complete control of the interpretation
109566of the symbol handles.
109567
109568
109569
109570.H 1 "Memory Management"
109571
109572Several of the functions that comprise the \fILibdwarf\fP interface
109573return values that have been dynamically allocated by the library.
109574The dynamically allocated spaces
109575can not be reclaimed except by \f(CWdwarf_producer_finish()\fP.
109576This function is supposed to
109577reclaim all the space, and invalidate all descriptors
109578returned from \f(CWLibdwarf\fP functions that add information to be
109579object specified.
109580After \f(CWdwarf_producer_finish()\fP is called,
109581the \f(CWDwarf_P_Debug\fP descriptor specified is also invalid.
109582
109583The present version of the producer library mostly
109584ignores memory management: it leaks memory a great deal.
109585For existing clients this is not a problem (they are
109586short lived) but is contrary to the intent, which was
109587that memory should be freed by \f(CWdwarf_producer_finish()\fP.
109588
109589All data for a particular \f(CWDwarf_P_Debug\fP descriptor
109590is separate from the data for any other
109591\f(CWDwarf_P_Debug\fP descriptor in use in the library-calling
109592application.
109593
109594.H 2 "Read-only Properties"
109595All pointers returned by or as a result of a \fILibdwarf\fP call should
109596be assumed to point to read-only memory.
109597Except as defined by this document, the results are undefined for
109598\fILibdwarf\fP clients that attempt to write to a region pointed to by a
109599return value from a \fILibdwarf\fP call.
109600
109601.H 2 "Storage Deallocation"
109602Calling \f(CWdwarf_producer_finish(dbg)\fP frees all the space, and
109603invalidates all pointers returned from \f(CWLibdwarf\fP functions on
109604or descended from \f(CWdbg\fP).
109605
109606.H 1 "Functional Interface"
109607This section describes the functions available in the \fILibdwarf\fP
109608library.  Each function description includes its definition, followed
109609by a paragraph describing the function's operation.
109610
109611.P
109612The functions may be categorized into groups:
109613\fIinitialization and termination operations\fP,
109614\fIdebugging information entry creation\fP,
109615\fIElf section callback function\fP,
109616\fIattribute creation\fP,
109617\fIexpression creation\fP,
109618\fIline number creation\fP,
109619\fIfast-access (aranges) creation\fP,
109620\fIfast-access (pubnames) creation\fP,
109621\fIfast-access (weak names) creation\fP,
109622\fImacro information creation\fP,
109623\fIlow level (.debug_frame) creation\fP,
109624and
109625\fIlocation list (.debug_loc) creation\fP.
109626
109627.P
109628The following sections describe these functions.
109629
109630.H 2 "Initialization and Termination Operations"
109631These functions setup \f(CWLibdwarf\fP to accumulate debugging information
109632for an object, usually a compilation-unit, provided by the producer.
109633The actual addition of information is done by functions in the other
109634sections of this document.  Once all the information has been added,
109635functions from this section are used to transform the information to
109636appropriate byte streams, and help to write out the byte streams to
109637disk.
109638
109639Typically then, a producer application
109640would create a \f(CWDwarf_P_Debug\fP
109641descriptor to gather debugging information for a particular
109642compilation-unit using \f(CWdwarf_producer_init()\fP.
109643The producer application would
109644use this \f(CWDwarf_P_Debug\fP descriptor to accumulate debugging
109645information for this object using functions from other sections of
109646this document.
109647Once all the information had been added, it would
109648call \f(CWdwarf_transform_to_disk_form()\fP to convert the accumulated
109649information into byte streams in accordance with the \f(CWDWARF\fP
109650standard.
109651The application would then repeatedly call
109652\f(CWdwarf_get_section_bytes()\fP
109653for each of the \f(CW.debug_*\fP created.
109654This gives the producer
109655information about the data bytes to be written to disk.
109656At this point,
109657the producer would release all resource used by \f(CWLibdwarf\fP for
109658this object by calling \f(CWdwarf_producer_finish()\fP.
109659
109660It is also possible to create assembler-input character streams
109661from the byte streams created by this library.
109662This feature requires slightly different interfaces than
109663direct binary output.
109664The details are mentioned in the text.
109665
109666.H 3 "dwarf_producer_init()"
109667
109668.DS
109669\f(CWDwarf_P_Debug dwarf_producer_init(
109670        Dwarf_Unsigned flags,
109671        Dwarf_Callback_Func func,
109672        Dwarf_Handler errhand,
109673        Dwarf_Ptr errarg,
109674        Dwarf_Error *error) \fP
109675.DE
109676The function \f(CWdwarf_producer_init() \fP returns a new
109677\f(CWDwarf_P_Debug\fP descriptor that can be used to add \f(CWDwarf\fP
109678information to the object.
109679On error it returns \f(CWDW_DLV_BADADDR\fP.
109680\f(CWflags\fP determine whether the target object is 64-bit or 32-bit.
109681\f(CWfunc\fP is a pointer to a function called-back from \f(CWLibdwarf\fP
109682whenever \f(CWLibdwarf\fP needs to create a new object section (as it will
109683for each .debug_* section and related relocation section).
109684\f(CWerrhand\fP
109685is a pointer to a function that will be used for handling errors detected
109686by \f(CWLibdwarf\fP.  \f(CWerrarg\fP is the default error argument used
109687by the function pointed to by \f(CWerrhand\fP.
109688.P
109689The \f(CWflags\fP
109690values are as follows:
109691.in +4
109692\f(CWDW_DLC_WRITE\fP
109693is required.
109694The values
109695\f(CWDW_DLC_READ\fP
109696\f(CWDW_DLC_RDWR\fP
109697are not supported by the producer and must not be passed.
109698
109699If
109700\f(CWDW_DLC_SIZE_64\fP
109701is not OR'd into \f(CWflags\fP
109702then
109703\f(CWDW_DLC_SIZE_32\fP
109704is assumed.
109705Oring in both is an error.
109706
109707If
109708\f(CWDW_DLC_ISA_IA64\fP
109709is not OR'd into \f(CWflags\fP
109710then
109711\f(CWDW_DLC_ISA_MIPS\fP
109712is assumed.
109713Oring in both is an error.
109714
109715If
109716\f(CWDW_DLC_TARGET_BIGENDIAN\fP
109717is not OR'd into \f(CWflags\fP
109718then
109719endianness the same as the host is assumed.
109720
109721If
109722\f(CWDW_DLC_TARGET_LITTLEENDIAN\fP
109723is not OR'd into \f(CWflags\fP
109724then
109725endianness the same as the host is assumed.
109726
109727If both
109728\f(CWDW_DLC_TARGET_LITTLEENDIAN\fP
109729and
109730\f(CWDW_DLC_TARGET_BIGENDIAN\fP
109731are or-d in it is an error.
109732
109733
109734
109735Either one of two output forms is specifiable:
109736\f(CWDW_DLC_STREAM_RELOCATIONS\fP
109737or
109738\f(CWDW_DLC_SYMBOLIC_RELOCATIONS\fP .
109739
109740The default is
109741\f(CWDW_DLC_STREAM_RELOCATIONS\fP .
109742The
109743\f(CWDW_DLC_STREAM_RELOCATIONS\fP
109744are relocations in a binary stream (as used
109745in a MIPS Elf object).
109746
109747The
109748\f(CWDW_DLC_SYMBOLIC_RELOCATIONS\fP
109749are the same relocations but expressed in an
109750array of structures defined by libdwarf,
109751which the caller of the relevant function
109752(see below) must deal with appropriately.
109753This method of expressing relocations allows
109754the producer-application to easily produce
109755assembler text output of debugging information.
109756
109757
109758If
109759\f(CWDW_DLC_SYMBOLIC_RELOCATIONS\fP
109760is OR'd into \f(CWflags\fP
109761then relocations are returned not as streams
109762but thru an array of structures.
109763
109764.in -4
109765.P
109766The function \f(CWfunc\fP
109767must be provided by the user of this library.
109768Its prototype is:
109769.DS
109770\f(CWtypedef int (*Dwarf_Callback_Func)(
109771    char* name,
109772    int                 size,
109773    Dwarf_Unsigned      type,
109774    Dwarf_Unsigned      flags,
109775    Dwarf_Unsigned      link,
109776    Dwarf_Unsigned      info,
109777    int*                sect_name_index,
109778    int*                error) \fP
109779.DE
109780For each section in the object file that \f(CWlibdwarf\fP
109781needs to create, it calls this function once, passing in
109782the section \f(CWname\fP, the section \f(CWtype\fP,
109783the section \f(CWflags\fP, the \f(CWlink\fP field, and
109784the \f(CWinfo\fP field.
109785For an Elf object file these values
109786should be appropriate Elf section header values.
109787For example, for relocation callbacks, the \f(CWlink\fP
109788field is supposed to be set (by the app) to the index
109789of the symtab section (the link field passed thru the
109790callback must be ignored by the app).
109791And, for relocation callbacks, the \f(CWinfo\fP field
109792is passed as the elf section number of the section
109793the relocations apply to.
109794
109795On success
109796the user function should return the Elf section number of the
109797newly created Elf section.
109798.P
109799On success, the function should also set the integer
109800pointed to by \f(CWsect_name_index\fP to the
109801Elf symbol number assigned in the Elf symbol table of the
109802new Elf section.
109803This symbol number is needed with relocations
109804dependent on the relocation of this new section.
109805Because "int *" is not guaranteed to work with elf 'symbols'
109806that are really pointers,
109807It is better to use the
109808\f(CWdwarf_producer_init_b()\fP
109809interface.
109810.P
109811For example, the \f(CW.debug_line\fP section's third
109812data element (in a compilation unit) is the offset from the
109813beginning of the \f(CW.debug_info\fP section of the compilation
109814unit entry for this \f(CW.debug_line\fP set.
109815The relocation entry in \f(CW.rel.debug_line\fP
109816for this offset
109817must have the relocation symbol index of the
109818symbol \f(CW.debug_info\fP  returned
109819by the callback of that section-creation through
109820the pointer \f(CWsect_name_index\fP.
109821.P
109822On failure, the function should return -1 and set the \f(CWerror\fP
109823integer to an error code.
109824.P
109825Nothing in libdwarf actually depends on the section index
109826returned being a real Elf section.
109827The Elf section is simply useful for generating relocation
109828records.
109829Similarly, the Elf symbol table index returned thru
109830the \f(CWsect_name_index\fP must simply be an index
109831that can be used in relocations against this section.
109832The application will probably want to note the
109833values passed to this function in some form, even if
109834no Elf file is being produced.
109835
109836.H 3 "dwarf_producer_init_b()"
109837
109838.DS
109839\f(CWDwarf_P_Debug dwarf_producer_init_b(
109840        Dwarf_Unsigned flags,
109841        Dwarf_Callback_Func_b func,
109842        Dwarf_Handler errhand,
109843        Dwarf_Ptr errarg,
109844        Dwarf_Error *error) \fP
109845.DE
109846The function \f(CWdwarf_producer_init_b() \fP
109847is the same as \f(CWdwarf_producer_init() \fP
109848except that the callback function uses
109849Dwarf_Unsigned rather than int as the
109850type of the symbol-index returned to libdwarf
109851thru the pointer argument (see below).
109852.P
109853The \f(CWflags\fP
109854values are as follows:
109855.in +4
109856\f(CWDW_DLC_WRITE\fP
109857is required.
109858The values
109859\f(CWDW_DLC_READ\fP
109860\f(CWDW_DLC_RDWR\fP
109861are not supported by the producer and must not be passed.
109862
109863If
109864\f(CWDW_DLC_SIZE_64\fP
109865is not OR'd into \f(CWflags\fP
109866then
109867\f(CWDW_DLC_SIZE_32\fP
109868is assumed.
109869Oring in both is an error.
109870
109871If
109872\f(CWDW_DLC_ISA_IA64\fP
109873is not OR'd into \f(CWflags\fP
109874then
109875\f(CWDW_DLC_ISA_MIPS\fP
109876is assumed.
109877Oring in both is an error.
109878
109879Either one of two output forms are specifiable:
109880\f(CWDW_DLC_STREAM_RELOCATIONS\fP
109881or
109882\f(CWDW_DLC_SYMBOLIC_RELOCATIONS\fP .
109883\f(CWdwarf_producer_init_b() \fP
109884is usable with
109885either output form.
109886
109887Either one of two output forms is specifiable:
109888\f(CWDW_DLC_STREAM_RELOCATIONS\fP
109889or
109890\f(CWDW_DLC_SYMBOLIC_RELOCATIONS\fP .
109891
109892The default is
109893\f(CWDW_DLC_STREAM_RELOCATIONS\fP .
109894The
109895\f(CWDW_DLC_STREAM_RELOCATIONS\fP
109896are relocations in a binary stream (as used
109897in a MIPS Elf object).
109898
109899\f(CWDW_DLC_SYMBOLIC_RELOCATIONS\fP
109900are OR'd into flags
109901to cause
109902the same relocations to be expressed in an
109903array of structures defined by libdwarf,
109904which the caller of the relevant function
109905(see below) must deal with appropriately.
109906This method of expressing relocations allows
109907the producer-application to easily produce
109908assembler text output of debugging information.
109909
109910.in -4
109911.P
109912The function \f(CWfunc\fP
109913must be provided by the user of this library.
109914Its prototype is:
109915.DS
109916\f(CWtypedef int (*Dwarf_Callback_Func_b)(
109917    char* name,
109918    int                 size,
109919    Dwarf_Unsigned      type,
109920    Dwarf_Unsigned      flags,
109921    Dwarf_Unsigned      link,
109922    Dwarf_Unsigned      info,
109923    Dwarf_Unsigned*     sect_name_index,
109924    int*                error) \fP
109925.DE
109926For each section in the object file that \f(CWlibdwarf\fP
109927needs to create, it calls this function once, passing in
109928the section \f(CWname\fP, the section \f(CWtype\fP,
109929the section \f(CWflags\fP, the \f(CWlink\fP field, and
109930the \f(CWinfo\fP field.  For an Elf object file these values
109931should be appropriate Elf section header values.
109932For example, for relocation callbacks, the \f(CWlink\fP
109933field is supposed to be set (by the app) to the index
109934of the symtab section (the link field passed thru the
109935callback must be ignored by the app).
109936And, for relocation callbacks, the \f(CWinfo\fP field
109937is passed as the elf section number of the section
109938the relocations apply to.
109939
109940On success
109941the user function should return the Elf section number of the
109942newly created Elf section.
109943.P
109944On success, the function should also set the integer
109945pointed to by \f(CWsect_name_index\fP to the
109946Elf symbol number assigned in the Elf symbol table of the
109947new Elf section.
109948This symbol number is needed with relocations
109949dependent on the relocation of this new section.
109950.P
109951For example, the \f(CW.debug_line\fP section's third
109952data element (in a compilation unit) is the offset from the
109953beginning of the \f(CW.debug_info\fP section of the compilation
109954unit entry for this \f(CW.debug_line\fP set.
109955The relocation entry in \f(CW.rel.debug_line\fP
109956for this offset
109957must have the relocation symbol index of the
109958symbol \f(CW.debug_info\fP  returned
109959by the callback of that section-creation through
109960the pointer \f(CWsect_name_index\fP.
109961.P
109962On failure, the function should return -1 and set the \f(CWerror\fP
109963integer to an error code.
109964.P
109965Nothing in libdwarf actually depends on the section index
109966returned being a real Elf section.
109967The Elf section is simply useful for generating relocation
109968records.
109969Similarly, the Elf symbol table index returned thru
109970the \f(CWsect_name_index\fP must simply be an index
109971that can be used in relocations against this section.
109972The application will probably want to note the
109973values passed to this function in some form, even if
109974no Elf file is being produced.
109975
109976Note that the \f(CWDwarf_Callback_Func_b() \fP form
109977passes back the sect_name_index as a Dwarf_Unsigned.
109978This is guaranteed large enough to hold a pointer.
109979(the other functional interfaces have versions with
109980the 'symbol index' as a Dwarf_Unsigned too. See below).
109981
109982If \f(CWDW_DLC_SYMBOLIC_RELOCATIONS\fP
109983is in use, then the symbol index is simply an arbitrary
109984value (from the point of view of libdwarf) so the
109985caller can put anything in it:
109986a normal elf symbol index,
109987a pointer to a struct (with arbitrary contents)
109988(the caller must cast to/from Dwarf_Unsigned
109989as appropriate),
109990or some other kind of pointer or value.
109991The values show up in the
109992output of \f(CWdwarf_get_relocation_info()\fP
109993(described below) and are not emitted anywhere else.
109994
109995.H 3 "dwarf_transform_to_disk_form()"
109996
109997.DS
109998\f(CWDwarf_Signed dwarf_transform_to_disk_form(
109999        Dwarf_P_Debug dbg,
110000        Dwarf_Error* error) \fP
110001.DE
110002The function \f(CWdwarf_transform_to_disk_form() \fP does the actual
110003conversion of the \f(CWDwarf\fP information provided so far, to the
110004form that is
110005normally written out as \f(CWElf\fP sections.
110006In other words,
110007once all DWARF information has been passed to \f(CWLibdwarf\fP, call
110008\f(CWdwarf_transform_to_disk_form() \fP to transform all the accumulated
110009data into byte streams.
110010This includes turning relocation information
110011into byte streams (and possibly relocation arrays).
110012This function does not write anything to disk.  If
110013successful, it returns a count of the number of \f(CWElf\fP sections
110014ready to be retrieved (and, normally, written to disk).
110015In case of error, it returns
110016\f(CWDW_DLV_NOCOUNT\fP.
110017
110018
110019.H 3 "dwarf_get_section_bytes()"
110020
110021.DS
110022\f(CWDwarf_Ptr dwarf_get_section_bytes(
110023        Dwarf_P_Debug dbg,
110024        Dwarf_Signed dwarf_section,
110025        Dwarf_Signed *elf_section_index,
110026        Dwarf_Unsigned *length,
110027        Dwarf_Error* error)\fP
110028.DE
110029The function \f(CWdwarf_get_section_bytes() \fP must be called repetitively,
110030with the index \f(CWdwarf_section\fP starting at 0 and continuing for the
110031number of sections
110032returned by \f(CWdwarf_transform_to_disk_form() \fP.
110033It returns \f(CWNULL\fP to indicate that there are no more sections of
110034\f(CWDwarf\fP information.
110035For each non-NULL return, the return value
110036points to \f(CW*length\fP bytes of data that are normally
110037added to the output
110038object in \f(CWElf\fP section \f(CW*elf_section\fP by the producer application.
110039It is illegal to call these in any order other than 0 thru N-1 where
110040N is the number of dwarf sections
110041returned by \f(CWdwarf_transform_to_disk_form() \fP.
110042The \f(CWdwarf_section\fP
110043number is actually ignored: the data is returned as if the
110044caller passed in the correct dwarf_section numbers in the
110045required sequence.
110046The \f(CWerror\fP argument is not used.
110047.P
110048There is no requirement that the section bytes actually
110049be written to an elf file.
110050For example, consider the .debug_info section and its
110051relocation section (the call back function would resulted in
110052assigning 'section' numbers and the link field to tie these
110053together (.rel.debug_info would have a link to .debug_info).
110054One could examine the relocations, split the .debug_info
110055data at relocation boundaries, emit byte streams (in hex)
110056as assembler output, and at each relocation point,
110057emit an assembler directive with a symbol name for the assembler.
110058Examining the relocations is awkward though.
110059It is much better to use \f(CWdwarf_get_section_relocation_info() \fP
110060.P
110061
110062The memory space of the section byte stream is freed
110063by the \f(CWdwarf_producer_finish() \fP call
110064(or would be if the \f(CWdwarf_producer_finish() \fP
110065was actually correct), along
110066with all the other space in use with that Dwarf_P_Debug.
110067
110068.H 3 "dwarf_get_relocation_info_count()"
110069.DS
110070\f(CWint  dwarf_get_relocation_info_count(
110071        Dwarf_P_Debug dbg,
110072        Dwarf_Unsigned *count_of_relocation_sections ,
110073	int            *drd_buffer_version,
110074        Dwarf_Error* error)\fP
110075.DE
110076The function \f(CWdwarf_get_relocation_info() \fP
110077returns, thru  the pointer \f(CWcount_of_relocation_sections\fP, the
110078number of times that \f(CWdwarf_get_relocation_info() \fP
110079should be called.
110080
110081The function \f(CWdwarf_get_relocation_info() \fP
110082returns DW_DLV_OK if the call was successful (the
110083\f(CWcount_of_relocation_sections\fP is therefore meaningful,
110084though \f(CWcount_of_relocation_sections\fP
110085could be zero).
110086
110087\f(CW*drd_buffer_version\fP
110088is the value 2.
110089If the structure pointed to by
110090the \f(CW*reldata_buffer\fP
110091changes this number will change.
110092The application should verify that the number is
110093the version it understands (that it matches
110094the value of DWARF_DRD_BUFFER_VERSION (from libdwarf.h)).
110095The value 1 version was never used in production
110096MIPS libdwarf (version 1 did exist in source).
110097
110098It returns DW_DLV_NO_ENTRY if
110099\f(CWcount_of_relocation_sections\fP is not meaningful
110100because \f(CWDW_DLC_SYMBOLIC_RELOCATIONS\fP was not
110101passed in the
110102\f(CWdwarf_producer_init() \fP
110103(or
110104\f(CWdwarf_producer_init_b() \fP ) call.
110105
110106It returns DW_DLV_ERROR if there was an error,
110107in which case
110108\f(CWcount_of_relocation_sections\fP is not meaningful.
110109
110110.H 3 "dwarf_get_relocation_info()"
110111.DS
110112\f(CWint dwarf_get_relocation_info(
110113        Dwarf_P_Debug dbg,
110114        Dwarf_Signed *elf_section_index,
110115	Dwarf_Signed *elf_section_index_link,
110116        Dwarf_Unsigned *relocation_buffer_count,
110117	Dwarf_Relocation_Data *reldata_buffer,
110118        Dwarf_Error* error)\fP
110119.DE
110120
110121The function \f(CWdwarf_get_relocation_info() \fP
110122should normally be called repetitively,
110123for the number of relocation sections that
110124\f(CWdwarf_get_relocation_info_count() \fP
110125indicated exist.
110126
110127It returns \f(CWDW_DLV_OK\fP to indicate that
110128valid values are returned thru the pointer arguments.
110129The \f(CWerror\fP argument is not set.
110130
110131It returns DW_DLV_NO_ENTRY if there are no entries
110132(the count of relocation arrays is zero.).
110133The \f(CWerror\fP argument is not set.
110134
110135It returns \f(CWDW_DLV_ERROR\fP if there is an error.
110136Calling \f(CWdwarf_get_relocation_info() \fP
110137more than the number of times indicated by
110138\f(CWdwarf_get_relocation_info_count() \fP
110139(without an intervening call to
110140\f(CWdwarf_reset_section_bytes() \fP )
110141results in a return of \f(CWDW_DLV_ERROR\fP once past
110142the valid count.
110143The \f(CWerror\fP argument is set to indicate the error.
110144
110145Now consider the returned-thru-pointer values for
110146\f(CWDW_DLV_OK\fP .
110147
110148\f(CW*elf_section_index\fP
110149is the 'elf section index' of the section implied by
110150this group of relocations.
110151
110152
110153\f(CW*elf_section_index_link\fP
110154is the section index of the section that these
110155relocations apply to.
110156
110157\f(CW*relocation_buffer_count\fP
110158is the number of array entries of relocation information
110159in the array pointed to by
110160\f(CW*reldata_buffer\fP .
110161
110162
110163\f(CW*reldata_buffer\fP
110164points to an array of 'struct Dwarf_Relocation_Data_s'
110165structures.
110166
110167The version 2 array information is as follows:
110168
110169.nf
110170enum Dwarf_Rel_Type {dwarf_drt_none,
110171                dwarf_drt_data_reloc,
110172                dwarf_drt_segment_rel,
110173                dwarf_drt_first_of_length_pair,
110174                dwarf_drt_second_of_length_pair
110175};
110176typedef struct Dwarf_Relocation_Data_s  * Dwarf_Relocation_Data;
110177struct Dwarf_Relocation_Data_s {
110178        unsigned char        drd_type;   /* contains Dwarf_Rel_Type */
110179	unsigned char        drd_length; /* typically 4 or 8 */
110180        Dwarf_Unsigned       drd_offset; /* where the data to reloc is */
110181        Dwarf_Unsigned       drd_symbol_index;
110182};
110183
110184.fi
110185
110186The \f(CWDwarf_Rel_Type\fP enum is encoded (via casts if necessary)
110187into the single unsigned char \f(CWdrd_type\fP field to control
110188the space used for this information (keep the space to 1 byte).
110189
110190The unsigned char \f(CWdrd_length\fP field
110191holds the size in bytes of the field to be relocated.
110192So for elf32 object formats with 32 bit apps, \f(CWdrd_length\fP
110193will be 4.  For objects with MIPS -64 contents,
110194\f(CWdrd_length\fP will be 8.
110195For some dwarf 64 bit environments, such as ia64, \f(CWdrd_length\fP
110196is 4 for some relocations (file offsets, for example)
110197and 8 for others (run time
110198addresses, for example).
110199
110200If \f(CWdrd_type\fP is \f(CWdwarf_drt_none\fP, this is an unused slot
110201and it should be ignored.
110202
110203If \f(CWdrd_type\fP is \f(CWdwarf_drt_data_reloc\fP
110204this is an ordinary relocation.
110205The relocation type means either
110206(R_MIPS_64) or (R_MIPS_32) (or the like for
110207the particular ABI.
110208f(CWdrd_length\fP gives the length of the field to be relocated.
110209\f(CWdrd_offset\fP is an offset (of the
110210value to be relocated) in
110211the section this relocation stuff is linked to.
110212\f(CWdrd_symbol_index\fP is the symbol index (if elf symbol
110213indices were provided) or the handle to arbitrary
110214information (if that is what the caller passed in
110215to the relocation-creating dwarf calls) of the symbol
110216that the relocation is relative to.
110217
110218
110219When \f(CWdrd_type\fP is \f(CWdwarf_drt_first_of_length_pair\fP
110220the next data record will be \f(CWdrt_second_of_length_pair\fP
110221and the \f(CWdrd_offset\fP of the two data records will match.
110222The relevant 'offset' in the section this reloc applies to
110223should contain a symbolic pair like
110224.nf
110225.in +4
110226 .word    second_symbol - first_symbol
110227.in -4
110228.fi
110229to generate a length.
110230\f(CWdrd_length\fP gives the length of the field to be relocated.
110231
110232\f(CWdrt_segment_rel\fP means (R_MIPS_SCN_DISP)
110233is the real relocation (R_MIPS_SCN_DISP applies to
110234exception tables and this part may need further work).
110235\f(CWdrd_length\fP gives the length of the field to be relocated.
110236
110237.P
110238The memory space of the section byte stream is freed
110239by the \f(CWdwarf_producer_finish() \fP call
110240(or would be if the \f(CWdwarf_producer_finish() \fP
110241was actually correct), along
110242with all the other space in use with that Dwarf_P_Debug.
110243
110244.H 3 "dwarf_reset_section_bytes()"
110245
110246.DS
110247\f(CWvoid dwarf_reset_section_bytes(
110248        Dwarf_P_Debug dbg
110249        ) \fP
110250.DE
110251The function \f(CWdwarf_reset_section_bytes() \fP
110252is used to reset the internal information so that
110253\f(CWdwarf_get_section_bytes() \fP will begin (on the next
110254call) at the initial dwarf section again.
110255It also resets so that calls to
110256\f(CWdwarf_get_relocation_info() \fP
110257will begin again at the initial array of relocation information.
110258
110259Some dwarf producers need to be able to run thru
110260the \f(CWdwarf_get_section_bytes()\fP
110261and/or
110262the \f(CWdwarf_get_relocation_info()\fP
110263calls more than once and this call makes additional
110264passes possible.
110265The set of Dwarf_Ptr values returned is identical to the
110266set returned by the first pass.
110267It is acceptable to call this before finishing a pass
110268of \f(CWdwarf_get_section_bytes()\fP
110269or
110270\f(CWdwarf_get_relocation_info()\fP
110271calls.
110272No errors are possible as this just resets some
110273internal pointers.
110274It is unwise to call this before
110275\f(CWdwarf_transform_to_disk_form() \fP has been called.
110276.P
110277
110278.H 3 "dwarf_producer_finish()"
110279.DS
110280\f(CWDwarf_Unsigned dwarf_producer_finish(
110281        Dwarf_P_Debug dbg,
110282        Dwarf_Error* error) \fP
110283.DE
110284The function \f(CWdwarf_producer_finish() \fP should be called after all
110285the bytes of data have been copied somewhere
110286(normally the bytes are written to disk).
110287It frees all dynamic space
110288allocated for \f(CWdbg\fP, include space for the structure pointed to by
110289\f(CWdbg\fP.
110290This should not be called till the data have been
110291copied or written
110292to disk or are no longer of interest.
110293It returns non-zero if successful, and \f(CWDW_DLV_NOCOUNT\fP
110294if there is an error.
110295
110296.H 2 "Debugging Information Entry Creation"
110297The functions in this section add new \f(CWDIE\fPs to the object,
110298and also the relationships among the \f(CWDIE\fP to be specified
110299by linking them up as parents, children, left or right siblings
110300of each other.
110301In addition, there is a function that marks the
110302root of the graph thus created.
110303
110304.H 3 "dwarf_add_die_to_debug()"
110305.DS
110306\f(CWDwarf_Unsigned dwarf_add_die_to_debug(
110307        Dwarf_P_Debug dbg,
110308        Dwarf_P_Die first_die,
110309        Dwarf_Error *error) \fP
110310.DE
110311The function \f(CWdwarf_add_die_to_debug() \fP indicates to \f(CWLibdwarf\fP
110312the root \f(CWDIE\fP of the \f(CWDIE\fP graph that has been built so
110313far.
110314It is intended to mark the compilation-unit \f(CWDIE\fP for the
110315object represented by \f(CWdbg\fP.
110316The root \f(CWDIE\fP is specified
110317by \f(CWfirst_die\fP.
110318
110319It returns \f(CW0\fP on success, and \f(CWDW_DLV_NOCOUNT\fP on error.
110320
110321.H 3 "dwarf_new_die()"
110322.DS
110323\f(CWDwarf_P_Die dwarf_new_die(
110324        Dwarf_P_Debug dbg,
110325        Dwarf_Tag new_tag,
110326        Dwarf_P_Die parent,
110327        Dwarf_P_Die child,
110328        Dwarf_P_Die left_sibling,
110329        Dwarf_P_Die right_sibling,
110330        Dwarf_Error *error) \fP
110331.DE
110332The function \f(CWdwarf_new_die() \fP creates a new \f(CWDIE\fP with
110333its parent, child, left sibling, and right sibling \f(CWDIE\fPs
110334specified by \f(CWparent\fP, \f(CWchild\fP, \f(CWleft_sibling\fP,
110335and \f(CWright_sibling\fP, respectively.
110336There is no requirement
110337that all of these \f(CWDIE\fPs be specified, i.e. any of these
110338descriptors may be \f(CWNULL\fP.
110339If none is specified, this will
110340be an isolated \f(CWDIE\fP.
110341A \f(CWDIE\fP is
110342transformed to disk form by \f(CWdwarf_transform_to_disk_form() \fP
110343only if there is a path from
110344the \f(CWDIE\fP specified by \f(CWdwarf_add_die_to_debug\fP to it.
110345This function returns \f(CWDW_DLV_BADADDR\fP on error.
110346
110347\f(CWnew_tag\fP is the tag which is given to the new \f(CWDIE\fP.
110348\f(CWparent\fP, \f(CWchild\fP, \f(CWleft_sibling\fP, and
110349\f(CWright_sibling\fP are pointers to establish links to existing
110350\f(CWDIE\fPs.  Only one of \f(CWparent\fP, \f(CWchild\fP,
110351\f(CWleft_sibling\fP, and \f(CWright_sibling\fP may be non-NULL.
110352If \f(CWparent\fP (\f(CWchild\fP) is given, the \f(CWDIE\fP is
110353linked into the list after (before) the \f(CWDIE\fP pointed to.
110354If \f(CWleft_sibling\fP (\f(CWright_sibling\fP) is given, the
110355\f(CWDIE\fP is linked into the list after (before) the \f(CWDIE\fP
110356pointed to.
110357
110358To add attributes to the new \f(CWDIE\fP, use the \f(CWAttribute Creation\fP
110359functions defined in the next section.
110360
110361.H 3 "dwarf_die_link()"
110362.DS
110363\f(CWDwarf_P_Die dwarf_die_link(
110364        Dwarf_P_Die die,
110365        Dwarf_P_Die parent,
110366        Dwarf_P_Die child,
110367        Dwarf_P_Die left-sibling,
110368        Dwarf_P_Die right_sibling,
110369        Dwarf_Error *error) \fP
110370.DE
110371The function \f(CWdwarf_die_link() \fP links an existing \f(CWDIE\fP
110372described by the given \f(CWdie\fP to other existing \f(CWDIE\fPs.
110373The given \f(CWdie\fP can be linked to a parent \f(CWDIE\fP, a child
110374\f(CWDIE\fP, a left sibling \f(CWDIE\fP, or a right sibling \f(CWDIE\fP
110375by specifying non-NULL \f(CWparent\fP, \f(CWchild\fP, \f(CWleft_sibling\fP,
110376and \f(CWright_sibling\fP \f(CWDwarf_P_Die\fP descriptors.
110377It returns
110378the given \f(CWDwarf_P_Die\fP descriptor, \f(CWdie\fP, on success,
110379and \f(CWDW_DLV_BADADDR\fP on error.
110380
110381Only one of \f(CWparent\fP, \f(CWchild\fP, \f(CWleft_sibling\fP,
110382and \f(CWright_sibling\fP may be non-NULL.
110383If \f(CWparent\fP
110384(\f(CWchild\fP) is given, the \f(CWDIE\fP is linked into the list
110385after (before) the \f(CWDIE\fP pointed to.
110386If \f(CWleft_sibling\fP
110387(\f(CWright_sibling\fP) is given, the \f(CWDIE\fP is linked into
110388the list after (before) the \f(CWDIE\fP pointed to.
110389Non-NULL links
110390overwrite the corresponding links the given \f(CWdie\fP may have
110391had before the call to \f(CWdwarf_die_link() \fP.
110392
110393.H 2 "Attribute Creation"
110394The functions in this section add attributes to a \f(CWDIE\fP.
110395These functions return a \f(CWDwarf_P_Attribute\fP descriptor
110396that represents the attribute added to the given \f(CWDIE\fP.
110397In most cases the return value is only useful to determine if
110398an error occurred.
110399
110400Some of the attributes have values that are relocatable.
110401They
110402need a symbol with respect to which the linker will perform
110403relocation.
110404This symbol is specified by means of an index into
110405the Elf symbol table for the object
110406(of course, the symbol index can be more general than an index).
110407
110408.H 3 "dwarf_add_AT_location_expr()"
110409.DS
110410\f(CWDwarf_P_Attribute dwarf_add_AT_location_expr(
110411        Dwarf_P_Debug dbg,
110412        Dwarf_P_Die ownerdie,
110413        Dwarf_Half attr,
110414        Dwarf_P_Expr loc_expr,
110415        Dwarf_Error *error) \fP
110416.DE
110417The function \f(CWdwarf_add_AT_location_expr() \fP adds the attribute
110418specified by \f(CWattr\fP to the \f(CWDIE\fP descriptor given by
110419\f(CWownerdie\fP.  The attribute should be one that has a location
110420expression as its value.  The location expression that is the value
110421is represented by the \f(CWDwarf_P_Expr\fP descriptor \f(CWloc_expr\fP.
110422It returns the \f(CWDwarf_P_Attribute\fP descriptor for the attribute
110423given, on success.  On error it returns \f(CWDW_DLV_BADADDR\fP.
110424
110425.H 3 "dwarf_add_AT_name()"
110426.DS
110427\f(CWDwarf_P_Attribute dwarf_add_AT_name(
110428        Dwarf_P_Die ownerdie,
110429        char *name,
110430        Dwarf_Error *error) \fP
110431.DE
110432The function \f(CWdwarf_add_AT_name() \fP adds the string specified
110433by \f(CWname\fP as the value of the \f(CWDW_AT_name\fP attribute
110434for the given \f(CWDIE\fP, \f(CWownerdie\fP.  It returns the
110435\f(CWDwarf_P_attribute\fP descriptor for the \f(CWDW_AT_name\fP
110436attribute on success.  On error, it returns \f(CWDW_DLV_BADADDR\fP.
110437
110438.H 3 "dwarf_add_AT_comp_dir()"
110439.DS
110440\f(CWDwarf_P_Attribute dwarf_add_AT_comp_dir(
110441        Dwarf_P_Die ownerdie,
110442        char *current_working_directory,
110443        Dwarf_Error *error) \fP
110444.DE
110445The function \f(CWdwarf_add_AT_comp_dir() \fP adds the string given by
110446\f(CWcurrent_working_directory\fP as the value of the \f(CWDW_AT_comp_dir\fP
110447attribute for the \f(CWDIE\fP described by the given \f(CWownerdie\fP.
110448It returns the \f(CWDwarf_P_Attribute\fP for this attribute on success.
110449On error, it returns \f(CWDW_DLV_BADADDR\fP.
110450
110451.H 3 "dwarf_add_AT_producer()"
110452.DS
110453\f(CWDwarf_P_Attribute dwarf_add_AT_producer(
110454        Dwarf_P_Die ownerdie,
110455        char *producer_string,
110456        Dwarf_Error *error) \fP
110457.DE
110458The function \f(CWdwarf_add_AT_producer() \fP adds the string given by
110459\f(CWproducer_string\fP as the value of the \f(CWDW_AT_producer\fP
110460attribute for the \f(CWDIE\fP given by \f(CWownerdie\fP.  It returns
110461the \f(CWDwarf_P_Attribute\fP descriptor representing this attribute
110462on success.  On error, it returns \f(CWDW_DLV_BADADDR\fP.
110463
110464.H 3 "dwarf_add_AT_const_value_signedint()"
110465.DS
110466\f(CWDwarf_P_Attribute dwarf_add_AT_const_value_signedint(
110467        Dwarf_P_Die ownerdie,
110468        Dwarf_Signed signed_value,
110469        Dwarf_Error *error) \fP
110470.DE
110471The function \f(CWdwarf_add_AT_const_value_signedint() \fP adds the
110472given \f(CWDwarf_Signed\fP value \f(CWsigned_value\fP as the value
110473of the \f(CWDW_AT_const_value\fP attribute for the \f(CWDIE\fP
110474described by the given \f(CWownerdie\fP.  It returns the
110475\f(CWDwarf_P_Attribute\fP descriptor for this attribute on success.
110476On error, it returns \f(CWDW_DLV_BADADDR\fP.
110477
110478.H 3 "dwarf_add_AT_const_value_unsignedint()"
110479.DS
110480\f(CWDwarf_P_Attribute dwarf_add_AT_const_value_unsignedint(
110481        Dwarf_P_Die ownerdie,
110482        Dwarf_Unsigned unsigned_value,
110483        Dwarf_Error *error) \fP
110484.DE
110485The function \f(CWdwarf_add_AT_const_value_unsignedint() \fP adds the
110486given \f(CWDwarf_Unsigned\fP value \f(CWunsigned_value\fP as the value
110487of the \f(CWDW_AT_const_value\fP attribute for the \f(CWDIE\fP described
110488by the given \f(CWownerdie\fP.  It returns the \f(CWDwarf_P_Attribute\fP
110489descriptor for this attribute on success.  On error, it returns
110490\f(CWDW_DLV_BADADDR\fP.
110491
110492.H 3 "dwarf_add_AT_const_value_string()"
110493.DS
110494\f(CWDwarf_P_Attribute dwarf_add_AT_const_value_string(
110495        Dwarf_P_Die ownerdie,
110496        char *string_value,
110497        Dwarf_Error *error) \fP
110498.DE
110499The function \f(CWdwarf_add_AT_const_value_string() \fP adds the
110500string value given by \f(CWstring_value\fP as the value of the
110501\f(CWDW_AT_const_value\fP attribute for the \f(CWDIE\fP described
110502by the given \f(CWownerdie\fP.  It returns the \f(CWDwarf_P_Attribute\fP
110503descriptor for this attribute on success.  On error, it returns
110504\f(CWDW_DLV_BADADDR\fP.
110505
110506.H 3 "dwarf_add_AT_targ_address()"
110507.DS
110508\f(CWDwarf_P_Attribute dwarf_add_AT_targ_address(
110509        Dwarf_P_Debug dbg,
110510        Dwarf_P_Die ownerdie,
110511        Dwarf_Half attr,
110512        Dwarf_Unsigned pc_value,
110513        Dwarf_Signed sym_index,
110514        Dwarf_Error *error) \fP
110515.DE
110516The function \f(CWdwarf_add_AT_targ_address() \fP adds an attribute that
110517belongs to the "address" class to the die specified by \f(CWownerdie\fP.
110518The attribute is specified by \f(CWattr\fP, and the object that the
110519\f(CWDIE\fP belongs to is specified by \f(CWdbg\fP.  The relocatable
110520address that is the value of the attribute is specified by \f(CWpc_value\fP.
110521The symbol to be used for relocation is specified by the \f(CWsym_index\fP,
110522which is the index of the symbol in the Elf symbol table.
110523
110524It returns the \f(CWDwarf_P_Attribute\fP descriptor for the attribute
110525on success, and \f(CWDW_DLV_BADADDR\fP on error.
110526
110527
110528.H 3 "dwarf_add_AT_targ_address_b()"
110529.DS
110530\f(CWDwarf_P_Attribute dwarf_add_AT_targ_address_b(
110531        Dwarf_P_Debug dbg,
110532        Dwarf_P_Die ownerdie,
110533        Dwarf_Half attr,
110534        Dwarf_Unsigned pc_value,
110535        Dwarf_Unsigned sym_index,
110536        Dwarf_Error *error) \fP
110537.DE
110538The function \f(CWdwarf_add_AT_targ_address_b() \fP
110539is identical to \f(CWdwarf_add_AT_targ_address_b() \fP
110540except that \f(CWsym_index() \fP is guaranteed to
110541be large enough that it can contain a pointer to
110542arbitrary data (so the caller can pass in a real elf
110543symbol index, an arbitrary number, or a pointer
110544to arbitrary data).
110545The ability to pass in a pointer thru \f(CWsym_index() \fP
110546is only usable with
110547\f(CWDW_DLC_SYMBOLIC_RELOCATIONS\fP.
110548
110549The \f(CWpc_value\fP
110550is put into the section stream output and
110551the \f(CWsym_index\fP is applied to the relocation
110552information.
110553
110554.H 3 "dwarf_add_AT_unsigned_const()"
110555.DS
110556\f(CWDwarf_P_Attribute dwarf_add_AT_unsigned_const(
110557        Dwarf_P_Debug dbg,
110558        Dwarf_P_Die ownerdie,
110559        Dwarf_Half attr,
110560        Dwarf_Unsigned value,
110561        Dwarf_Error *error) \fP
110562.DE
110563The function \f(CWdwarf_add_AT_unsigned_const() \fP adds an attribute
110564with a \f(CWDwarf_Unsigned\fP value belonging to the "constant" class,
110565to the \f(CWDIE\fP specified by \f(CWownerdie\fP.  The object that
110566the \f(CWDIE\fP belongs to is specified by \f(CWdbg\fP.  The attribute
110567is specified by \f(CWattr\fP, and its value is specified by \f(CWvalue\fP.
110568
110569It returns the \f(CWDwarf_P_Attribute\fP descriptor for the attribute
110570on success, and \f(CWDW_DLV_BADADDR\fP on error.
110571
110572.H 3 "dwarf_add_AT_signed_const()"
110573.DS
110574\f(CWDwarf_P_Attribute dwarf_add_AT_signed_const(
110575        Dwarf_P_Debug dbg,
110576        Dwarf_P_Die ownerdie,
110577        Dwarf_Half attr,
110578        Dwarf_Signed value,
110579        Dwarf_Error *error) \fP
110580.DE
110581The function \f(CWdwarf_add_AT_signed_const() \fP adds an attribute
110582with a \f(CWDwarf_Signed\fP value belonging to the "constant" class,
110583to the \f(CWDIE\fP specified by \f(CWownerdie\fP.  The object that
110584the \f(CWDIE\fP belongs to is specified by \f(CWdbg\fP.  The attribute
110585is specified by \f(CWattr\fP, and its value is specified by \f(CWvalue\fP.
110586
110587It returns the \f(CWDwarf_P_Attribute\fP descriptor for the attribute
110588on success, and \f(CWDW_DLV_BADADDR\fP on error.
110589
110590.H 3 "dwarf_add_AT_reference()"
110591.DS
110592\f(CWDwarf_P_Attribute dwarf_add_AT_reference(
110593        Dwarf_P_Debug dbg,
110594        Dwarf_P_Die ownerdie,
110595        Dwarf_Half attr,
110596        Dwarf_P_Die otherdie,
110597        Dwarf_Error *error)\fP
110598.DE
110599The function \f(CWdwarf_add_AT_reference()\fP adds an attribute
110600with a value that is a reference to another \f(CWDIE\fP in the
110601same compilation-unit to the \f(CWDIE\fP specified by \f(CWownerdie\fP.
110602The object that the \f(CWDIE\fP belongs to is specified by \f(CWdbg\fP.
110603The attribute is specified by \f(CWattr\fP, and the other \f(CWDIE\fP
110604being referred to is specified by \f(CWotherdie\fP.
110605
110606This cannot generate DW_FORM_ref_addr references to
110607\f(CWDIE\fPs in other compilation units.
110608
110609It returns the \f(CWDwarf_P_Attribute\fP descriptor for the attribute
110610on success, and \f(CWDW_DLV_BADADDR\fP on error.
110611
110612.H 3 "dwarf_add_AT_flag()"
110613.DS
110614\f(CWDwarf_P_Attribute dwarf_add_AT_flag(
110615        Dwarf_P_Debug dbg,
110616        Dwarf_P_Die ownerdie,
110617        Dwarf_Half attr,
110618        Dwarf_Small flag,
110619        Dwarf_Error *error)\fP
110620.DE
110621The function \f(CWdwarf_add_AT_flag()\fP adds an attribute with
110622a \f(CWDwarf_Small\fP value belonging to the "flag" class, to the
110623\f(CWDIE\fP specified by \f(CWownerdie\fP.  The object that the
110624\f(CWDIE\fP belongs to is specified by \f(CWdbg\fP.  The attribute
110625is specified by \f(CWattr\fP, and its value is specified by \f(CWflag\fP.
110626
110627It returns the \f(CWDwarf_P_Attribute\fP descriptor for the attribute
110628on success, and \f(CWDW_DLV_BADADDR\fP on error.
110629
110630.H 3 "dwarf_add_AT_string()"
110631.DS
110632\f(CWDwarf_P_Attribute dwarf_add_AT_string(
110633        Dwarf_P_Debug dbg,
110634        Dwarf_P_Die ownerdie,
110635        Dwarf_Half attr,
110636        char *string,
110637        Dwarf_Error *error)\fP
110638.DE
110639The function \f(CWdwarf_add_AT_string()\fP adds an attribute with a
110640value that is a character string to the \f(CWDIE\fP specified by
110641\f(CWownerdie\fP.  The object that the \f(CWDIE\fP belongs to is
110642specified by \f(CWdbg\fP.  The attribute is specified by \f(CWattr\fP,
110643and its value is pointed to by \f(CWstring\fP.
110644
110645It returns the \f(CWDwarf_P_Attribute\fP descriptor for the attribute
110646on success, and \f(CWDW_DLV_BADADDR\fP on error.
110647
110648.H 2 "Expression Creation"
110649The following functions are used to convert location expressions into
110650blocks so that attributes with values that are location expressions
110651can store their values as a \f(CWDW_FORM_blockn\fP value.  This is for
110652both .debug_info and .debug_loc expression blocks.
110653
110654To create an expression, first call \f(CWdwarf_new_expr()\fP to get
110655a \f(CWDwarf_P_Expr\fP descriptor that can be used to build up the
110656block containing the location expression.  Then insert the parts of
110657the expression in prefix order (exactly the order they would be
110658interpreted in in an expression interpreter).  The bytes of the
110659expression are then built-up as specified by the user.
110660
110661.H 3 "dwarf_new_expr()"
110662.DS
110663\f(CWDwarf_Expr dwarf_new_expr(
110664        Dwarf_P_Debug dbg,
110665        Dwarf_Error *error)\fP
110666.DE
110667The function \f(CWdwarf_new_expr()\fP creates a new expression area
110668in which a location expression stream can be created.  It returns
110669a \f(CWDwarf_P_Expr\fP descriptor that can be used to add operators
110670to build up a location expression.  It returns \f(CWNULL\fP on error.
110671
110672.H 3 "dwarf_add_expr_gen()"
110673.DS
110674\f(CWDwarf_Unsigned dwarf_add_expr_gen(
110675        Dwarf_P_Expr expr,
110676        Dwarf_Small opcode,
110677        Dwarf_Unsigned val1,
110678        Dwarf_Unsigned val2,
110679        Dwarf_Error *error)\fP
110680.DE
110681The function \f(CWdwarf_add_expr_gen()\fP takes an operator specified
110682by \f(CWopcode\fP, along with up to 2 operands specified by \f(CWval1\fP,
110683and \f(CWval2\fP, converts it into the \f(CWDwarf\fP representation and
110684appends the bytes to the byte stream being assembled for the location
110685expression represented by \f(CWexpr\fP.  The first operand, if present,
110686to \f(CWopcode\fP is in \f(CWval1\fP, and the second operand, if present,
110687is in \f(CWval2\fP.  Both the operands may actually be signed or unsigned
110688depending on \f(CWopcode\fP.  It returns the number of bytes in the byte
110689stream for \f(CWexpr\fP currently generated, i.e. after the addition of
110690\f(CWopcode\fP.  It returns \f(CWDW_DLV_NOCOUNT\fP on error.
110691
110692The function \f(CWdwarf_add_expr_gen()\fP works for all opcodes except
110693those that have a target address as an operand.  This is because it does
110694not set up a relocation record that is needed when target addresses are
110695involved.
110696
110697.H 3 "dwarf_add_expr_addr()"
110698.DS
110699\f(CWDwarf_Unsigned dwarf_add_expr_addr(
110700        Dwarf_P_Expr expr,
110701        Dwarf_Unsigned address,
110702        Dwarf_Signed sym_index,
110703        Dwarf_Error *error)\fP
110704.DE
110705The function \f(CWdwarf_add_expr_addr()\fP is used to add the
110706\f(CWDW_OP_addr\fP opcode to the location expression represented
110707by the given \f(CWDwarf_P_Expr\fP descriptor, \f(CWexpr\fP.  The
110708value of the relocatable address is given by \f(CWaddress\fP.
110709The symbol to be used for relocation is given by \f(CWsym_index\fP,
110710which is the index of the symbol in the Elf symbol table.  It returns
110711the number of bytes in the byte stream for \f(CWexpr\fP currently
110712generated, i.e. after the addition of the \f(CWDW_OP_addr\fP operator.
110713It returns \f(CWDW_DLV_NOCOUNT\fP on error.
110714
110715.H 3 "dwarf_add_expr_addr_b()"
110716.DS
110717\f(CWDwarf_Unsigned dwarf_add_expr_addr_b(
110718        Dwarf_P_Expr expr,
110719        Dwarf_Unsigned address,
110720        Dwarf_Unsigned sym_index,
110721        Dwarf_Error *error)\fP
110722.DE
110723The function \f(CWdwarf_add_expr_addr_f()\fP is
110724identical to \f(CWdwarf_add_expr_addr()\fP
110725except that \f(CWsym_index() \fP is guaranteed to
110726be large enough that it can contain a pointer to
110727arbitrary data (so the caller can pass in a real elf
110728symbol index, an arbitrary number, or a pointer
110729to arbitrary data).
110730The ability to pass in a pointer thru \f(CWsym_index() \fP
110731is only usable with
110732\f(CWDW_DLC_SYMBOLIC_RELOCATIONS\fP.
110733
110734
110735
110736.H 3 "dwarf_expr_current_offset()"
110737.DS
110738\f(CWDwarf_Unsigned dwarf_expr_current_offset(
110739        Dwarf_P_Expr expr,
110740        Dwarf_Error *error)\fP
110741.DE
110742The function \f(CWdwarf_expr_current_offset()\fP returns the number
110743of bytes currently in the byte stream for the location expression
110744represented by the given \fCW(Dwarf_P_Expr\fP descriptor, \f(CWexpr\fP.
110745It returns \f(CWDW_DLV_NOCOUNT\fP on error.
110746
110747.H 3 "dwarf_expr_into_block()"
110748.DS
110749\f(CWDwarf_Addr dwarf_expr_into_block(
110750        Dwarf_P_Expr expr,
110751        Dwarf_Unsigned *length,
110752        Dwarf_Error *error)\fP
110753.DE
110754The function \f(CWdwarf_expr_into_block()\fP returns the address
110755of the start of the byte stream generated for the location expression
110756represented by the given \f(CWDwarf_P_Expr\fP descriptor, \f(CWexpr\fP.
110757The length of the byte stream is returned in the location pointed to
110758by \f(CWlength\fP.  It returns \f(CWDW_DLV_BADADDR\fP on error.
110759
110760.H 2 "Line Number Operations"
110761These are operations on the .debug_line section.
110762They provide
110763information about instructions in the program and the source
110764lines the instruction come from.
110765Typically, code is generated
110766in contiguous blocks, which may then be relocated as contiguous
110767blocks.
110768To make the provision of relocation information more
110769efficient, the information is recorded in such a manner that only
110770the address of the start of the block needs to be relocated.
110771This is done by providing the address of the first instruction
110772in a block using the function \f(CWdwarf_lne_set_address()\fP.
110773Information about the instructions in the block are then added
110774using the function \f(CWdwarf_add_line_entry()\fP, which specifies
110775offsets from the address of the first instruction.
110776The end of
110777a contiguous block is indicated by calling the function
110778\f(CWdwarf_lne_end_sequence()\fP.
110779.P
110780Line number operations do not support
110781\f(CWDW_DLC_SYMBOLIC_RELOCATIONS\fP.
110782
110783.H 3 "dwarf_add_line_entry()"
110784.DS
110785\f(CWDwarf_Unsigned dwarf_add_line_entry(
110786        Dwarf_P_Debug dbg,
110787        Dwarf_Unsigned file_index,
110788        Dwarf_Addr code_offset,
110789        Dwarf_Unsigned lineno,
110790        Dwarf_Signed column_number,
110791        Dwarf_Bool is_source_stmt_begin,
110792        Dwarf_Bool is_basic_block_begin,
110793        Dwarf_Error *error)\fP
110794.DE
110795The function \f(CWdwarf_add_line_entry()\fP adds an entry to the
110796section containing information about source lines.
110797It specifies
110798in \f(CWcode_offset\fP, the offset from the address set using
110799\f(CWdwarfdwarf_lne_set_address()\fP, of the address of the first
110800instruction in a contiguous block.
110801The source file that gave rise
110802to the instruction is specified by \f(CWfile_index\fP, the source
110803line number is specified by \f(CWlineno\fP, and the source column
110804number is specified by \f(CWcolumn_number\fP
110805(column numbers begin at 1)
110806(if the source column is unknown, specify 0).
110807\f(CWfile_index\fP
110808is the index of the source file in a list of source files which is
110809built up using the function \f(CWdwarf_add_file_decl()\fP.
110810
110811\f(CWis_source_stmt_begin\fP is a boolean flag that is true only if
110812the instruction at \f(CWcode_address\fP is the first instruction in
110813the sequence generated for the source line at \f(CWlineno\fP.  Similarly,
110814\f(CWis_basic_block_begin\fP is a boolean flag that is true only if
110815the instruction at \f(CWcode_address\fP is the first instruction of
110816a basic block.
110817
110818It returns \f(CW0\fP on success, and \f(CWDW_DLV_NOCOUNT\fP on error.
110819
110820.H 3 "dwarf_lne_set_address()"
110821.DS
110822\f(CWDwarf_Unsigned dwarf_lne_set_address(
110823        Dwarf_P_Debug dbg,
110824        Dwarf_Addr offs,
110825        Dwarf_Unsigned symidx,
110826        Dwarf_Error *error)\fP
110827.DE
110828The function \f(CWdwarf_lne_set_address()\fP sets the target address
110829at which a contiguous block of instructions begin.  Information about
110830the instructions in the block is added to .debug_line using calls to
110831\f(CWdwarfdwarf_add_line_entry()\fP which specifies the offset of each
110832instruction in the block relative to the start of the block.  This is
110833done so that a single relocation record can be used to obtain the final
110834target address of every instruction in the block.
110835
110836The relocatable address of the start of the block of instructions is
110837specified by \f(CWoffs\fP.  The symbol used to relocate the address
110838is given by \f(CWsymidx\fP, which is normally the index of the symbol in the
110839Elf symbol table.
110840
110841It returns \f(CW0\fP on success, and \f(CWDW_DLV_NOCOUNT\fP on error.
110842
110843.H 3 "dwarf_lne_end_sequence()"
110844.DS
110845\f(CWDwarf_Unsigned dwarf_lne_end_sequence(
110846        Dwarf_P_Debug dbg,
110847	Dwarf_Addr    address;
110848        Dwarf_Error *error)\fP
110849.DE
110850The function \f(CWdwarf_lne_end_sequence()\fP indicates the end of a
110851contiguous block of instructions.
110852\f(CWaddress()\fP
110853should be just higher than the end of the last address in the
110854sequence of instructions.
110855block of instructions, a call to \f(CWdwarf_lne_set_address()\fP will
110856have to be made to set the address of the start of the target address
110857of the block, followed by calls to \f(CWdwarf_add_line_entry()\fP for
110858each of the instructions in the block.
110859
110860It returns \f(CW0\fP on success, and \f(CWDW_DLV_NOCOUNT\fP on error.
110861
110862.H 3 "dwarf_add_directory_decl()"
110863.DS
110864\f(CWDwarf_Unsigned dwarf_add_directory_decl(
110865        Dwarf_P_Debug dbg,
110866        char *name,
110867        Dwarf_Error *error)\fP
110868.DE
110869The function \f(CWdwarf_add_directory_decl()\fP adds the string
110870specified by \f(CWname\fP to the list of include directories in
110871the statement program prologue of the .debug_line section.
110872The
110873string should therefore name a directory from which source files
110874have been used to create the present object.
110875
110876It returns the index of the string just added, in the list of include
110877directories for the object.
110878This index is then used to refer to this
110879string.
110880It returns \f(CWDW_DLV_NOCOUNT\fP on error.
110881
110882.H 3 "dwarf_add_file_decl()"
110883.DS
110884\f(CWDwarf_Unsigned dwarf_add_file_decl(
110885        Dwarf_P_Debug dbg,
110886        char *name,
110887        Dwarf_Unsigned dir_idx,
110888        Dwarf_Unsigned time_mod,
110889        Dwarf_Unsigned length,
110890        Dwarf_Error *error)\fP
110891.DE
110892The function \f(CWdwarf_add_file_decl()\fP adds the name of a source
110893file that contributed to the present object.
110894The name of the file is
110895specified by \f(CWname\fP (which must not be the empty string
110896or a null pointer, it must point to
110897a string with length greater than 0).
110898In case the name is not a fully-qualified
110899pathname, it is prefixed with the name of the directory specified by
110900\f(CWdir_idx\fP.
110901\f(CWdir_idx\fP is the index of the directory to be
110902prefixed in the list builtup using \f(CWdwarf_add_directory_decl()\fP.
110903
110904\f(CWtime_mod\fP gives the time at which the file was last modified,
110905and \f(CWlength\fP gives the length of the file in bytes.
110906
110907It returns the index of the source file in the list built up so far
110908using this function, on success.  This index can then be used to
110909refer to this source file in calls to \f(CWdwarf_add_line_entry()\fP.
110910On error, it returns \f(CWDW_DLV_NOCOUNT\fP.
110911
110912.H 2 "Fast Access (aranges) Operations"
110913These functions operate on the .debug_aranges section.
110914
110915.H 3 "dwarf_add_arange()"
110916.DS
110917\f(CWDwarf_Unsigned dwarf_add_arange(
110918        Dwarf_P_Debug dbg,
110919        Dwarf_Addr begin_address,
110920        Dwarf_Unsigned length,
110921        Dwarf_Signed symbol_index,
110922        Dwarf_Error *error)\fP
110923.DE
110924The function \f(CWdwarf_add_arange()\fP adds another address range
110925to be added to the section
110926containing address range information, .debug_aranges.
110927The relocatable start address of the range is
110928specified by \f(CWbegin_address\fP, and the length of the address
110929range is specified by \f(CWlength\fP.
110930The relocatable symbol to be
110931used to relocate the start of the address range is specified by
110932\f(CWsymbol_index\fP, which is normally
110933the index of the symbol in the Elf
110934symbol table.
110935
110936It returns a non-zero value on success, and \f(CW0\fP on error.
110937
110938.H 3 "dwarf_add_arange_b()"
110939.DS
110940\f(CWDwarf_Unsigned dwarf_add_arange_b(
110941        Dwarf_P_Debug dbg,
110942        Dwarf_Addr begin_address,
110943        Dwarf_Unsigned length,
110944        Dwarf_Unsigned symbol_index,
110945	Dwarf_Unsigned end_symbol_index,
110946	Dwarf_Addr     offset_from_end_symbol,
110947        Dwarf_Error *error)\fP
110948.DE
110949The function \f(CWdwarf_add_arange_b()\fP adds another address range
110950to be added to the section containing
110951address range information, .debug_aranges.
110952
110953If
110954\f(CWend_symbol_index is not zero\fP
110955we are using two symbols to create a length
110956(must be \f(CWDW_DLC_SYMBOLIC_RELOCATIONS\fP to be useful)
110957.sp
110958.in +2
110959\f(CWbegin_address\fP
110960is the offset from the symbol specified by
110961\f(CWsymbol_index\fP .
110962\f(CWoffset_from_end_symbol\fP
110963is the offset from the symbol specified by
110964\f(CWend_symbol_index\fP.
110965\f(CWlength\fP is ignored.
110966This begin-end pair will be show up in the
110967relocation array returned by
110968\f(CWdwarf_get_relocation_info() \fP
110969as a
110970\f(CWdwarf_drt_first_of_length_pair\fP
110971and
110972\f(CWdwarf_drt_second_of_length_pair\fP
110973pair of relocation records.
110974The consuming application will turn that pair into
110975something conceptually identical to
110976.sp
110977.nf
110978.in +4
110979 .word end_symbol + offset_from_end - \\
110980   ( start_symbol + begin_address)
110981.in -4
110982.fi
110983.sp
110984The reason offsets are allowed on the begin and end symbols
110985is to allow the caller to re-use existing labels
110986when the labels are available
110987and the corresponding offset is known
110988(economizing on the number of labels in use).
110989The  'offset_from_end - begin_address'
110990will actually be in the binary stream, not the relocation
110991record, so the app processing the relocation array
110992must read that stream value into (for example)
110993net_offset and actually emit something like
110994.sp
110995.nf
110996.in +4
110997 .word end_symbol - start_symbol + net_offset
110998.in -4
110999.fi
111000.sp
111001.in -2
111002
111003If
111004\f(CWend_symbol_index\fP is zero
111005we must be given a length
111006(either
111007\f(CWDW_DLC_STREAM_RELOCATIONS\fP
111008or
111009\f(CWDW_DLC_SYMBOLIC_RELOCATIONS\fP
111010):
111011.sp
111012.in +2
111013The relocatable start address of the range is
111014specified by \f(CWbegin_address\fP, and the length of the address
111015range is specified by \f(CWlength\fP.
111016The relocatable symbol to be
111017used to relocate the start of the address range is specified by
111018\f(CWsymbol_index\fP, which is normally
111019the index of the symbol in the Elf
111020symbol table.
111021The
111022\f(CWoffset_from_end_symbol\fP
111023is ignored.
111024.in -2
111025
111026
111027It returns a non-zero value on success, and \f(CW0\fP on error.
111028
111029
111030.H 2 "Fast Access (pubnames) Operations"
111031These functions operate on the .debug_pubnames section.
111032.sp
111033.H 3 "dwarf_add_pubname()"
111034.DS
111035\f(CWDwarf_Unsigned dwarf_add_pubname(
111036        Dwarf_P_Debug dbg,
111037        Dwarf_P_Die die,
111038        char *pubname_name,
111039        Dwarf_Error *error)\fP
111040.DE
111041The function \f(CWdwarf_add_pubname()\fP adds the pubname specified
111042by \f(CWpubname_name\fP to the section containing pubnames, i.e.
111043  .debug_pubnames.  The \f(CWDIE\fP that represents the function
111044being named is specified by \f(CWdie\fP.
111045
111046It returns a non-zero value on success, and \f(CW0\fP on error.
111047
111048.H 2 "Fast Access (weak names) Operations"
111049These functions operate on the .debug_weaknames section.
111050
111051.H 3 "dwarf_add_weakname()"
111052.DS
111053\f(CWDwarf_Unsigned dwarf_add_weakname(
111054        Dwarf_P_Debug dbg,
111055        Dwarf_P_Die die,
111056        char *weak_name,
111057        Dwarf_Error *error)\fP
111058.DE
111059The function \f(CWdwarf_add_weakname()\fP adds the weak name specified
111060by \f(CWweak_name\fP to the section containing weak names, i.e.
111061 .debug_weaknames.  The \f(CWDIE\fP that represents the function
111062being named is specified by \f(CWdie\fP.
111063
111064It returns a non-zero value on success, and \f(CW0\fP on error.
111065
111066.H 2 "Static Function Names Operations"
111067The .debug_funcnames section contains the names of static function
111068names defined in the object, and also the offsets of the \f(CWDIE\fPs
111069that represent the definitions of the functions in the .debug_info
111070section.
111071
111072.H 3 "dwarf_add_funcname()"
111073.DS
111074\f(CWDwarf_Unsigned dwarf_add_funcname(
111075        Dwarf_P_Debug dbg,
111076        Dwarf_P_Die die,
111077        char *func_name,
111078        Dwarf_Error *error)\fP
111079.DE
111080The function \f(CWdwarf_add_funcname()\fP adds the name of a static
111081function specified by \f(CWfunc_name\fP to the section containing the
111082names of static functions defined in the object represented by \f(CWdbg\fP.
111083The \f(CWDIE\fP that represents the definition of the function is
111084specified by \f(CWdie\fP.
111085
111086It returns a non-zero value on success, and \f(CW0\fP on error.
111087
111088.H 2 "File-scope User-defined Type Names Operations"
111089The .debug_typenames section contains the names of file-scope
111090user-defined types in the given object, and also the offsets
111091of the \f(CWDIE\fPs that represent the definitions of the types
111092in the .debug_info section.
111093
111094.H 3 "dwarf_add_typename()"
111095.DS
111096\f(CWDwarf_Unsigned dwarf_add_typename(
111097        Dwarf_P_Debug dbg,
111098        Dwarf_P_Die die,
111099        char *type_name,
111100        Dwarf_Error *error)\fP
111101.DE
111102The function \f(CWdwarf_add_typename()\fP adds the name of a file-scope
111103user-defined type specified by \f(CWtype_name\fP to the section that
111104contains the names of file-scope user-defined type.  The object that
111105this section belongs to is specified by \f(CWdbg\fP.  The \f(CWDIE\fP
111106that represents the definition of the type is specified by \f(CWdie\fP.
111107
111108It returns a non-zero value on success, and \f(CW0\fP on error.
111109
111110.H 2 "File-scope Static Variable Names Operations"
111111The .debug_varnames section contains the names of file-scope static
111112variables in the given object, and also the offsets of the \f(CWDIE\fPs
111113that represent the definition of the variables in the .debug_info
111114section.
111115
111116.H 3 "dwarf_add_varname()"
111117.DS
111118\f(CWDwarf_Unsigned dwarf_add_varname(
111119        Dwarf_P_Debug dbg,
111120        Dwarf_P_Die die,
111121        char *var_name,
111122        Dwarf_Error *error)\fP
111123.DE
111124The function \f(CWdwarf_add_varname()\fP adds the name of a file-scope
111125static variable specified by \f(CWvar_name\fP to the section that
111126contains the names of file-scope static variables defined by the
111127object represented by \f(CWdbg\fP.  The \f(CWDIE\fP that represents
111128the definition of the static variable is specified by \f(CWdie\fP.
111129
111130It returns a non-zero value on success, and \f(CW0\fP on error.
111131
111132.H 2 "Macro Information Creation"
111133All strings passed in by the caller are copied by these
111134functions, so the space in which the caller provides the strings
111135may be ephemeral (on the stack, or immediately reused or whatever)
111136without this causing any difficulty.
111137
111138.H 3 "dwarf_def_macro()"
111139.DS
111140\f(CWint dwarf_def_macro(Dwarf_P_Debug dbg,
111141	Dwarf_Unsigned lineno,
111142	char *name
111143	char *value,
111144        Dwarf_Error *error);\fP
111145.DE
111146Adds a macro definition.
111147The \f(CWname\fP argument should include the parentheses
111148and parameter names if this is a function-like macro.
111149Neither string should contain extraneous whitespace.
111150\f(CWdwarf_def_macro()\fP adds the mandated space after the
111151name and before the value  in the
111152output DWARF section(but does not change the
111153strings pointed to by the arguments).
111154If this is a definition before any files are read,
111155\f(CWlineno\fP should be 0.
111156Returns \f(CWDW_DLV_ERROR\fP
111157and sets \f(CWerror\fP
111158if there is an error.
111159Returns \f(CWDW_DLV_OK\fP if the call was successful.
111160
111161
111162.H 3 "dwarf_undef_macro()"
111163.DS
111164\f(CWint dwarf_undef_macro(Dwarf_P_Debug dbg,
111165	Dwarf_Unsigned lineno,
111166	char *name,
111167        Dwarf_Error *error);\fP
111168.DE
111169Adds a macro un-definition note.
111170If this is a definition before any files are read,
111171\f(CWlineno\fP should be 0.
111172Returns \f(CWDW_DLV_ERROR\fP
111173and sets \f(CWerror\fP
111174if there is an error.
111175Returns \f(CWDW_DLV_OK\fP if the call was successful.
111176
111177
111178.H 3 "dwarf_start_macro_file()"
111179.DS
111180\f(CWint dwarf_start_macro_file(Dwarf_P_Debug dbg,
111181	Dwarf_Unsigned lineno,
111182        Dwarf_Unsigned fileindex,
111183        Dwarf_Error *error);\fP
111184.DE
111185\f(CWfileindex\fP is an index in the .debug_line header:
111186the index of
111187the file name.
111188See the function \f(CWdwarf_add_file_decl()\fP.
111189The \f(CWlineno\fP should be 0 if this file is
111190the file of the compilation unit source itself
111191(which, of course, is not a #include in any
111192file).
111193Returns \f(CWDW_DLV_ERROR\fP
111194and sets \f(CWerror\fP
111195if there is an error.
111196Returns \f(CWDW_DLV_OK\fP if the call was successful.
111197
111198
111199.H 3 "dwarf_end_macro_file()"
111200.DS
111201\f(CWint dwarf_end_macro_file(Dwarf_P_Debug dbg,
111202        Dwarf_Error *error);\fP
111203.DE
111204Returns \f(CWDW_DLV_ERROR\fP
111205and sets \f(CWerror\fP
111206if there is an error.
111207Returns \f(CWDW_DLV_OK\fP if the call was successful.
111208
111209.H 3 "dwarf_vendor_ext()"
111210.DS
111211\f(CWint dwarf_vendor_ext(Dwarf_P_Debug dbg,
111212    Dwarf_Unsigned constant,
111213    char *         string,
111214    Dwarf_Error*   error); \fP
111215.DE
111216The meaning of the \f(CWconstant\fP and the\f(CWstring\fP
111217in the macro info section
111218are undefined by DWARF itself, but the string must be
111219an ordinary null terminated string.
111220This call is not an extension to DWARF.
111221It simply enables storing
111222macro information as specified in the DWARF document.
111223Returns \f(CWDW_DLV_ERROR\fP
111224and sets \f(CWerror\fP
111225if there is an error.
111226Returns \f(CWDW_DLV_OK\fP if the call was successful.
111227
111228
111229.H 2 "Low Level (.debug_frame) operations"
111230These functions operate on the .debug_frame section.  Refer to
111231\f(CWlibdwarf.h\fP for the register names and register assignment
111232mapping.  Both of these are necessarily machine dependent.
111233
111234.H 3 "dwarf_new_fde()"
111235.DS
111236\f(CWDwarf_P_Fde dwarf_new_fde(
111237        Dwarf_P_Debug dbg,
111238        Dwarf_Error *error)\fP
111239.DE
111240The function \f(CWdwarf_new_fde()\fP returns a new \f(CWDwarf_P_Fde\fP
111241descriptor that should be used to build a complete \f(CWFDE\fP.
111242Subsequent calls to routines that build up the \f(CWFDE\fP should use
111243the same \f(CWDwarf_P_Fde\fP descriptor.
111244
111245It returns a valid \f(CWDwarf_P_Fde\fP descriptor on success, and
111246\f(CWDW_DLV_BADADDR\fP on error.
111247
111248.H 3 "dwarf_add_frame_cie()"
111249.DS
111250\f(CWDwarf_Unsigned dwarf_add_frame_cie(
111251        Dwarf_P_Debug dbg,
111252        char *augmenter,
111253        Dwarf_Small code_align,
111254        Dwarf_Small data_align,
111255        Dwarf_Small ret_addr_reg,
111256        Dwarf_Ptr init_bytes,
111257        Dwarf_Unsigned init_bytes_len,
111258        Dwarf_Error *error);\fP
111259.DE
111260The function
111261\f(CWdwarf_add_frame_cie()\fP
111262creates a \f(CWCIE\fP,
111263and returns an index to it, that should be used to refer to this
111264\f(CWCIE\fP.
111265\f(CWCIE\fPs are used by \f(CWFDE\fPs to setup
111266initial values for frames.
111267The augmentation string for the \f(CWCIE\fP
111268is specified by \f(CWaugmenter\fP.
111269The code alignment factor,
111270data alignment factor, and the return address register for the
111271\f(CWCIE\fP are specified by \f(CWcode_align\fP, \f(CWdata_align\fP,
111272and \f(CWret_addr_reg\fP respectively.
111273\f(CWinit_bytes\fP points
111274to the bytes that represent the instructions for the \f(CWCIE\fP
111275being created, and \f(CWinit_bytes_len\fP specifies the number
111276of bytes of instructions.
111277
111278There is no convenient way to generate the  \f(CWinit_bytes\fP
111279stream.
111280One just
111281has to calculate it by hand or separately
111282generate something with the
111283correct sequence and use dwarfdump -v and elfdump -h  and some
111284kind of hex dumper to see the bytes.
111285This is a serious inconvenience!
111286
111287It returns an index to the \f(CWCIE\fP just created on success.
111288On error it returns \f(CWDW_DLV_NOCOUNT\fP.
111289
111290.H 3 "dwarf_add_frame_fde()"
111291.DS
111292\f(CWDwarf_Unsigned dwarf_add_frame_fde(
111293        Dwarf_P_Debug dbg,
111294        Dwarf_P_Fde fde,
111295        Dwarf_P_Die die,
111296        Dwarf_Unsigned cie,
111297        Dwarf_Addr virt_addr,
111298        Dwarf_Unsigned  code_len,
111299        Dwarf_Unsigned sym_idx,
111300        Dwarf_Error* error)\fP
111301.DE
111302The function \f(CWdwarf_add_frame_fde()\fP adds the \f(CWFDE\fP
111303specified by \f(CWfde\fP to the list of \f(CWFDE\fPs for the
111304object represented by the given \f(CWdbg\fP.
111305\f(CWdie\fP specifies
111306the \f(CWDIE\fP that represents the function whose frame information
111307is specified by the given \f(CWfde\fP.
111308\f(CWcie\fP specifies the
111309index of the \f(CWCIE\fP that should be used to setup the initial
111310conditions for the given frame.
111311
111312
111313It returns an index to the given \f(CWfde\fP.
111314
111315
111316.H 3 "dwarf_add_frame_fde_b()"
111317.DS
111318\f(CWDwarf_Unsigned dwarf_add_frame_fde_b(
111319        Dwarf_P_Debug dbg,
111320        Dwarf_P_Fde fde,
111321        Dwarf_P_Die die,
111322        Dwarf_Unsigned cie,
111323        Dwarf_Addr virt_addr,
111324        Dwarf_Unsigned  code_len,
111325        Dwarf_Unsigned sym_idx,
111326	Dwarf_Unsigned sym_idx_of_end,
111327	Dwarf_Addr     offset_from_end_sym,
111328        Dwarf_Error* error)\fP
111329.DE
111330This function is like
111331\f(CWdwarf_add_frame_fde()\fP
111332except that
111333\f(CWdwarf_add_frame_fde_b()\fP
111334has new arguments to allow use
111335with
111336\f(CWDW_DLC_SYMBOLIC_RELOCATIONS\fP.
111337
111338The function \f(CWdwarf_add_frame_fde_b()\fP
111339adds the
111340\f(CWFDE\fP
111341specified by \f(CWfde\fP to the list of \f(CWFDE\fPs for the
111342object represented by the given \f(CWdbg\fP.
111343\f(CWdie\fP specifies
111344the \f(CWDIE\fP that represents the function whose frame information
111345is specified by the given \f(CWfde\fP.
111346\f(CWcie\fP specifies the
111347index of the \f(CWCIE\fP that should be used to setup the initial
111348conditions for the given frame.
111349\f(CWvirt_addr\fP represents the
111350relocatable address at which the code for the given function begins,
111351and \f(CWsym_idx\fP gives the index of the relocatable symbol to
111352be used to relocate this address (\f(CWvirt_addr\fP that is).
111353\f(CWcode_len\fP specifies the size in bytes of the machine instructions
111354for the given function.
111355
111356If \f(CWsym_idx_of_end\fP is zero
111357(may  be
111358\f(CWDW_DLC_STREAM_RELOCATIONS\fP
111359or
111360\f(CWDW_DLC_SYMBOLIC_RELOCATIONS\fP
111361):
111362.sp
111363.in +2
111364\f(CWvirt_addr\fP represents the
111365relocatable address at which the code for the given function begins,
111366and \f(CWsym_idx\fP gives the index of the relocatable symbol to
111367be used to relocate this address (\f(CWvirt_addr\fP that is).
111368\f(CWcode_len\fP
111369specifies the size in bytes of the machine instructions
111370for the given function.
111371\f(CWsym_idx_of_end\fP
111372and
111373\f(CWoffset_from_end_sym\fP
111374are unused.
111375.in -2
111376.sp
111377
111378
111379If \f(CWsym_idx_of_end\fP is non-zero
111380(must be \f(CWDW_DLC_SYMBOLIC_RELOCATIONS\fP to be useful):
111381.sp
111382.in +2
111383\f(CWvirt_addr\fP
111384is the offset from the symbol specified by
111385\f(CWsym_idx\fP .
111386\f(CWoffset_from_end_sym\fP
111387is the offset from the symbol specified by
111388\f(CWsym_idx_of_end\fP.
111389\f(CWcode_len\fP is ignored.
111390This begin-end pair will be show up in the
111391relocation array returned by
111392\f(CWdwarf_get_relocation_info() \fP
111393as a
111394\f(CWdwarf_drt_first_of_length_pair\fP
111395and
111396\f(CWdwarf_drt_second_of_length_pair\fP
111397pair of relocation records.
111398The consuming application will turn that pair into
111399something conceptually identical to
111400.sp
111401.nf
111402.in +4
111403 .word end_symbol + begin - \\
111404   ( start_symbol + offset_from_end)
111405.in -4
111406.fi
111407.sp
111408The reason offsets are allowed on the begin and end symbols
111409is to allow the caller to re-use existing labels
111410when the labels are available
111411and the corresponding offset is known
111412(economizing on the number of labels in use).
111413The  'offset_from_end - begin_address'
111414will actually be in the binary stream, not the relocation
111415record, so the app processing the relocation array
111416must read that stream value into (for example)
111417net_offset and actually emit something like
111418.sp
111419.nf
111420.in +4
111421 .word end_symbol - start_symbol + net_offset
111422.in -4
111423.fi
111424.sp
111425.in -2
111426
111427It returns an index to the given \f(CWfde\fP.
111428
111429On error, it returns \f(CWDW_DLV_NOCOUNT\fP.
111430
111431.H 3 "dwarf_add_frame_info_b()"
111432.DS
111433\f(CWDwarf_Unsigned dwarf_add_frame_info_b(
111434        Dwarf_P_Debug   dbg,
111435        Dwarf_P_Fde     fde,
111436        Dwarf_P_Die     die,
111437        Dwarf_Unsigned  cie,
111438        Dwarf_Addr      virt_addr,
111439        Dwarf_Unsigned  code_len,
111440        Dwarf_Unsigned  sym_idx,
111441	Dwarf_Unsigned  end_symbol_index,
111442        Dwarf_Addr      offset_from_end_symbol,
111443	Dwarf_Signed    offset_into_exception_tables,
111444	Dwarf_Unsigned  exception_table_symbol,
111445        Dwarf_Error*    error)\fP
111446.DE
111447The function \f(CWdwarf_add_frame_fde()\fP adds the \f(CWFDE\fP
111448specified by \f(CWfde\fP to the list of \f(CWFDE\fPs for the
111449object represented by the given \f(CWdbg\fP.
111450\f(CWdie\fP specifies
111451the \f(CWDIE\fP that represents the function whose frame information
111452is specified by the given \f(CWfde\fP.
111453\f(CWcie\fP specifies the
111454index of the \f(CWCIE\fP that should be used to setup the initial
111455conditions for the given frame.
111456\f(CWoffset_into_exception_tables\fP specifies the
111457offset into \f(CW.MIPS.eh_region\fP elf section where the exception tables
111458for this function begins.
111459\f(CWexception_table_symbol\fP  gives the index of
111460the relocatable symbol to be used to relocate this offset.
111461
111462
111463If
111464\f(CWend_symbol_index is not zero\fP
111465we are using two symbols to create a length
111466(must be \f(CWDW_DLC_SYMBOLIC_RELOCATIONS\fP to be useful)
111467.sp
111468.in +2
111469\f(CWvirt_addr\fP
111470is the offset from the symbol specified by
111471\f(CWsym_idx\fP .
111472\f(CWoffset_from_end_symbol\fP
111473is the offset from the symbol specified by
111474\f(CWend_symbol_index\fP.
111475\f(CWcode_len\fP is ignored.
111476This begin-end pair will be show up in the
111477relocation array returned by
111478\f(CWdwarf_get_relocation_info() \fP
111479as a
111480\f(CWdwarf_drt_first_of_length_pair\fP
111481and
111482\f(CWdwarf_drt_second_of_length_pair\fP
111483pair of relocation records.
111484The consuming application will turn that pair into
111485something conceptually identical to
111486.sp
111487.nf
111488.in +4
111489 .word end_symbol + offset_from_end_symbol - \\
111490   ( start_symbol + virt_addr)
111491.in -4
111492.fi
111493.sp
111494The reason offsets are allowed on the begin and end symbols
111495is to allow the caller to re-use existing labels
111496when the labels are available
111497and the corresponding offset is known
111498(economizing on the number of labels in use).
111499The  'offset_from_end - begin_address'
111500will actually be in the binary stream, not the relocation
111501record, so the app processing the relocation array
111502must read that stream value into (for example)
111503net_offset and actually emit something like
111504.sp
111505.nf
111506.in +4
111507 .word end_symbol - start_symbol + net_offset
111508.in -4
111509.fi
111510.sp
111511.in -2
111512
111513If
111514\f(CWend_symbol_index\fP is zero
111515we must be given a code_len value
111516(either
111517\f(CWDW_DLC_STREAM_RELOCATIONS\fP
111518or
111519\f(CWDW_DLC_SYMBOLIC_RELOCATIONS\fP
111520):
111521.sp
111522.in +2
111523The relocatable start address of the range is
111524specified by \f(CWvirt_addr\fP, and the length of the address
111525range is specified by \f(CWcode_len\fP.
111526The relocatable symbol to be
111527used to relocate the start of the address range is specified by
111528\f(CWsymbol_index\fP, which is normally
111529the index of the symbol in the Elf
111530symbol table.
111531The
111532\f(CWoffset_from_end_symbol\fP
111533is ignored.
111534.in -2
111535
111536
111537It returns an index to the given \f(CWfde\fP.
111538
111539On error, it returns \f(CWDW_DLV_NOCOUNT\fP.
111540
111541
111542.H 3 "dwarf_add_frame_info()"
111543
111544.DS
111545\f(CWDwarf_Unsigned dwarf_add_frame_info(
111546        Dwarf_P_Debug dbg,
111547        Dwarf_P_Fde fde,
111548        Dwarf_P_Die die,
111549        Dwarf_Unsigned cie,
111550        Dwarf_Addr virt_addr,
111551        Dwarf_Unsigned  code_len,
111552        Dwarf_Unsigned sym_idx,
111553	Dwarf_Signed offset_into_exception_tables,
111554	Dwarf_Unsigned exception_table_symbol,
111555        Dwarf_Error* error)\fP
111556.DE
111557The function \f(CWdwarf_add_frame_fde()\fP adds the \f(CWFDE\fP
111558specified by \f(CWfde\fP to the list of \f(CWFDE\fPs for the
111559object represented by the given \f(CWdbg\fP.  \f(CWdie\fP specifies
111560the \f(CWDIE\fP that represents the function whose frame information
111561is specified by the given \f(CWfde\fP.  \f(CWcie\fP specifies the
111562index of the \f(CWCIE\fP that should be used to setup the initial
111563conditions for the given frame.  \f(CWvirt_addr\fP represents the
111564relocatable address at which the code for the given function begins,
111565and \f(CWsym_idx\fP gives the index of the relocatable symbol to
111566be used to relocate this address (\f(CWvirt_addr\fP that is).
111567\f(CWcode_len\fP specifies the size in bytes of the machine instructions
111568for the given function. \f(CWoffset_into_exception_tables\fP specifies the
111569offset into \f(CW.MIPS.eh_region\fP elf section where the exception tables
111570for this function begins. \f(CWexception_table_symbol\fP  gives the index of
111571the relocatable symbol to be used to relocate this offset.
111572
111573It returns an index to the given \f(CWfde\fP.
111574
111575.H 3 "dwarf_fde_cfa_offset()"
111576.DS
111577\f(CWDwarf_P_Fde dwarf_fde_cfa_offset(
111578        Dwarf_P_Fde fde,
111579        Dwarf_Unsigned reg,
111580        Dwarf_Signed offset,
111581        Dwarf_Error *error)\fP
111582.DE
111583The function \f(CWdwarf_fde_cfa_offset()\fP appends a \f(CWDW_CFA_offset\fP
111584operation to the \f(CWFDE\fP, specified by \f(CWfde\fP,  being constructed.
111585The first operand of the \f(CWDW_CFA_offset\fP operation is specified by
111586\f(CWreg\P.  The register specified should not exceed 6 bits.  The second
111587operand of the \f(CWDW_CFA_offset\fP operation is specified by \f(CWoffset\fP.
111588
111589It returns the given \f(CWfde\fP on success.
111590
111591It returns \f(CWDW_DLV_BADADDR\fP on error.
111592
111593.H 3 "dwarf_add_fde_inst()"
111594.DS
111595\f(CWDwarf_P_Fde dwarf_add_fde_inst(
111596        Dwarf_P_Fde fde,
111597        Dwarf_Small op,
111598        Dwarf_Unsigned val1,
111599        Dwarf_Unsigned val2,
111600        Dwarf_Error *error)\fP
111601.DE
111602The function \f(CWdwarf_add_fde_inst()\fP adds the operation specified
111603by \f(CWop\fP to the \f(CWFDE\fP specified by \f(CWfde\fP.  Upto two
111604operands can be specified in \f(CWval1\fP, and \f(CWval2\fP.  Based on
111605the operand specified \f(CWLibdwarf\fP decides how many operands are
111606meaningful for the operand.  It also converts the operands to the
111607appropriate datatypes (they are passed to \f(CWdwarf_add_fde_inst\fP
111608as \f(CWDwarf_Unsigned\fP).
111609
111610It returns the given \f(CWfde\fP on success, and \f(CWDW_DLV_BADADDR\fP
111611on error.
111612
111613.S
111614.TC 1 1 4
111615.CS
111616��0707010001ad910000812400011e740000000a00000001402068270002d48c000000660000000000000000000000000000001900000000libdwarf/libdwarf2p.1.ps��%!PS-Adobe-1.0
111617%%Creator: hiker1.engr.sgi.com:davea (David B Anderson)
111618%%Title: stdin (ditroff)
111619%%CreationDate: Thu Jan 10 19:07:16 2002
111620%%EndComments
111621% Start of psdit.pro -- prolog for ditroff translator
111622% Copyright (c) 1985,1987 Adobe Systems Incorporated. All Rights Reserved.
111623% GOVERNMENT END USERS: See Notice file in TranScript library directory
111624% -- probably /usr/lib/ps/Notice
111625% $Revision: 1.7 $
111626/$DITroff 140 dict def $DITroff begin
111627/fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def
111628/xi {0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto
111629  /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F
111630  /pagesave save def}def
111631/PB{save /psv exch def currentpoint translate
111632  resolution 72 div dup neg scale 0 0 moveto}def
111633/PE{psv restore}def
111634/m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def
111635/tan{dup sin exch cos div}bind def
111636/point{resolution 72 div mul}bind def
111637/dround	{transform round exch round exch itransform}bind def
111638/xT{/devname exch def}def
111639/xr{/mh exch def /my exch def /resolution exch def}def
111640/xp{}def
111641/xs{docsave restore end}def
111642/xt{}def
111643/xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not
111644 {fonts slotno fontname findfont put fontnames slotno fontname put}if}def
111645/xH{/fontheight exch def F}bind def
111646/xS{/fontslant exch def F}bind def
111647/s{/fontsize exch def /fontheight fontsize def F}bind def
111648/f{/fontnum exch def F}bind def
111649/F{fontheight 0 le {/fontheight fontsize def}if
111650   fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore
111651   fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if
111652   makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}bind def
111653/X{exch currentpoint exch pop moveto show}bind def
111654/N{3 1 roll moveto show}bind def
111655/Y{exch currentpoint pop exch moveto show}bind def
111656/S /show load def
111657/ditpush{}def/ditpop{}def
111658/AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}bind def
111659/AN{4 2 roll moveto 0 exch ashow}bind def
111660/AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}bind def
111661/AS{0 exch ashow}bind def
111662/MX{currentpoint exch pop moveto}bind def
111663/MY{currentpoint pop exch moveto}bind def
111664/MXY /moveto load def
111665/cb{pop}def	% action on unknown char -- nothing for now
111666/n{}def/w{}def
111667/p{pop showpage pagesave restore /pagesave save def}def
111668/abspoint{currentpoint exch pop add exch currentpoint pop add exch}def
111669/dstroke{currentpoint stroke moveto}bind def
111670/Dl{2 copy gsave rlineto stroke grestore rmoveto}bind def
111671/arcellipse{oldmat currentmatrix pop
111672 currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def
111673 rad 0 rad -180 180 arc oldmat setmatrix}def
111674/Dc{gsave dup /diamv exch def /diamh exch def arcellipse dstroke
111675    grestore diamh 0 rmoveto}def
111676/De{gsave /diamv exch def /diamh exch def arcellipse dstroke
111677    grestore diamh 0 rmoveto}def
111678/Da{currentpoint /by exch def /bx exch def /fy exch def /fx exch def
111679   /cy exch def /cx exch def /rad cx cx mul cy cy mul add sqrt def
111680   /ang1 cy neg cx neg atan def /ang2 fy fx atan def cx bx add cy by add
111681   2 copy rad ang1 ang2 arcn stroke exch fx add exch fy add moveto}def
111682/Barray 200 array def % 200 values in a wiggle
111683/D~{mark}def
111684/D~~{counttomark Barray exch 0 exch getinterval astore /Bcontrol exch def pop
111685 /Blen Bcontrol length def Blen 4 ge Blen 2 mod 0 eq and
111686 {Bcontrol 0 get Bcontrol 1 get abspoint /Ycont exch def /Xcont exch def
111687  Bcontrol 0 2 copy get 2 mul put Bcontrol 1 2 copy get 2 mul put
111688  Bcontrol Blen 2 sub 2 copy get 2 mul put
111689  Bcontrol Blen 1 sub 2 copy get 2 mul put
111690  /Ybi /Xbi currentpoint 3 1 roll def def 0 2 Blen 4 sub
111691  {/i exch def
111692   Bcontrol i get 3 div Bcontrol i 1 add get 3 div
111693   Bcontrol i get 3 mul Bcontrol i 2 add get add 6 div
111694   Bcontrol i 1 add get 3 mul Bcontrol i 3 add get add 6 div
111695   /Xbi Xcont Bcontrol i 2 add get 2 div add def
111696   /Ybi Ycont Bcontrol i 3 add get 2 div add def
111697   /Xcont Xcont Bcontrol i 2 add get add def
111698   /Ycont Ycont Bcontrol i 3 add get add def
111699   Xbi currentpoint pop sub Ybi currentpoint exch pop sub rcurveto
111700  }for dstroke}if}def
111701end
111702/ditstart{$DITroff begin
111703 /nfonts 60 def			% NFONTS makedev/ditroff dependent!
111704 /fonts[nfonts{0}repeat]def
111705 /fontnames[nfonts{()}repeat]def
111706/docsave save def
111707}def
111708
111709% character outcalls
111710/oc {/pswid exch def /cc exch def /name exch def
111711   /ditwid pswid fontsize mul resolution mul 72000 div def
111712   /ditsiz fontsize resolution mul 72 div def
111713   ocprocs name known{ocprocs name get exec}{name cb}
111714   ifelse}def
111715/fractm [.65 0 0 .6 0 0] def
111716/fraction
111717 {/fden exch def /fnum exch def gsave /cf currentfont def
111718  cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto
111719  fnum show rmoveto currentfont cf setfont(\244)show setfont fden show
111720  grestore ditwid 0 rmoveto} def
111721/oce {grestore ditwid 0 rmoveto}def
111722/dm {ditsiz mul}def
111723/ocprocs 50 dict def ocprocs begin
111724(14){(1)(4)fraction}def
111725(12){(1)(2)fraction}def
111726(34){(3)(4)fraction}def
111727(13){(1)(3)fraction}def
111728(23){(2)(3)fraction}def
111729(18){(1)(8)fraction}def
111730(38){(3)(8)fraction}def
111731(58){(5)(8)fraction}def
111732(78){(7)(8)fraction}def
111733(sr){gsave .05 dm .16 dm rmoveto(\326)show oce}def
111734(is){gsave 0 .15 dm rmoveto(\362)show oce}def
111735(->){gsave 0 .02 dm rmoveto(\256)show oce}def
111736(<-){gsave 0 .02 dm rmoveto(\254)show oce}def
111737(==){gsave 0 .05 dm rmoveto(\272)show oce}def
111738end
111739% DIThacks fonts for some special chars
11174050 dict dup begin
111741/FontType 3 def
111742/FontName /DIThacks def
111743/FontMatrix [.001 0.0 0.0 .001 0.0 0.0] def
111744/FontBBox [-220 -280 900 900] def% a lie but ...
111745/Encoding 256 array def
1117460 1 255{Encoding exch /.notdef put}for
111747Encoding
111748 dup 8#040/space put %space
111749 dup 8#110/rc put %right ceil
111750 dup 8#111/lt put %left  top curl
111751 dup 8#112/bv put %bold vert
111752 dup 8#113/lk put %left  mid curl
111753 dup 8#114/lb put %left  bot curl
111754 dup 8#115/rt put %right top curl
111755 dup 8#116/rk put %right mid curl
111756 dup 8#117/rb put %right bot curl
111757 dup 8#120/rf put %right floor
111758 dup 8#121/lf put %left  floor
111759 dup 8#122/lc put %left  ceil
111760 dup 8#140/sq put %square
111761 dup 8#141/bx put %box
111762 dup 8#142/ci put %circle
111763 dup 8#143/br put %box rule
111764 dup 8#144/rn put %root extender
111765 dup 8#145/vr put %vertical rule
111766 dup 8#146/ob put %outline bullet
111767 dup 8#147/bu put %bullet
111768 dup 8#150/ru put %rule
111769 dup 8#151/ul put %underline
111770 pop
111771/DITfd 100 dict def
111772/BuildChar{0 begin
111773 /cc exch def /fd exch def
111774 /charname fd /Encoding get cc get def
111775 /charwid fd /Metrics get charname get def
111776 /charproc fd /CharProcs get charname get def
111777 charwid 0 fd /FontBBox get aload pop setcachedevice
111778 40 setlinewidth
111779 newpath 0 0 moveto gsave charproc grestore
111780 end}def
111781/BuildChar load 0 DITfd put
111782%/UniqueID 5 def
111783/CharProcs 50 dict def
111784CharProcs begin
111785/space{}def
111786/.notdef{}def
111787/ru{500 0 rls}def
111788/rn{0 750 moveto 500 0 rls}def
111789/vr{20 800 moveto 0 -770 rls}def
111790/bv{20 800 moveto 0 -1000 rls}def
111791/br{20 770 moveto 0 -1040 rls}def
111792/ul{0 -250 moveto 500 0 rls}def
111793/ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def
111794/bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def
111795/sq{80 0 rmoveto currentpoint dround newpath moveto
111796    640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def
111797/bx{80 0 rmoveto currentpoint dround newpath moveto
111798    640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def
111799/ci{355 333 rmoveto currentpoint newpath 333 0 360 arc
111800    50 setlinewidth stroke}def
111801
111802/lt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def
111803/lb{20 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def
111804/rt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def
111805/rb{20 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def
111806/lk{20 800 moveto 20 300 -280 300 s4 arcto pop pop 1000 sub
111807    currentpoint stroke moveto
111808    20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def
111809/rk{20 800 moveto 20 300 320 300 s4 arcto pop pop 1000 sub
111810    currentpoint stroke moveto
111811    20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def
111812/lf{20 800 moveto 0 -1000 rlineto s4 0 rls}def
111813/rf{20 800 moveto 0 -1000 rlineto s4 neg 0 rls}def
111814/lc{20 -200 moveto 0 1000 rlineto s4 0 rls}def
111815/rc{20 -200 moveto 0 1000 rlineto s4 neg 0 rls}def
111816end
111817
111818/Metrics 50 dict def Metrics begin
111819/.notdef 0 def
111820/space 500 def
111821/ru 500 def
111822/br 0 def
111823/lt 250 def
111824/lb 250 def
111825/rt 250 def
111826/rb 250 def
111827/lk 250 def
111828/rk 250 def
111829/rc 250 def
111830/lc 250 def
111831/rf 250 def
111832/lf 250 def
111833/bv 250 def
111834/ob 350 def
111835/bu 350 def
111836/ci 750 def
111837/bx 750 def
111838/sq 750 def
111839/rn 500 def
111840/ul 500 def
111841/vr 0 def
111842end
111843
111844DITfd begin
111845/s2 500 def /s4 250 def /s3 333 def
111846/a4p{arcto pop pop pop pop}def
111847/2cx{2 copy exch}def
111848/rls{rlineto stroke}def
111849/currx{currentpoint pop}def
111850/dround{transform round exch round exch itransform} def
111851end
111852end
111853/DIThacks exch definefont pop
111854
111855ditstart
111856(psc)xT
111857576 1 1 xr
1118581(Times-Roman)xf 1 f
1118592(Times-Italic)xf 2 f
1118603(Times-Bold)xf 3 f
1118614(Times-BoldItalic)xf 4 f
1118625(Helvetica)xf 5 f
1118636(Helvetica-Bold)xf 6 f
1118647(Courier)xf 7 f
1118658(Courier-Bold)xf 8 f
1118669(Symbol)xf 9 f
11186710(DIThacks)xf 10 f
11186810 s
1118691 f
111870xi
111871%%EndProlog
111872
111873%%Page: 1 1
11187410 s 0 xH 0 xS 1 f
1118753 f
11187612 s
1118771446 672(A)N
1118781539(Producer)X
1118791948(Library)X
1118802298(Interface)X
1118812696(to)X
1118822800(DWARF)X
1118832 f
11188411 s
1118851084 816(UNIX)N
1118861311(International)X
1118871799(Programming)X
1118882314(Languages)X
1118892722(Special)X
1118903004(Interest)X
1118913295(Group)X
1118923 f
111893576 1248(1.)N
111894686(INTRODUCTION)X
1118950(Courier)xf 0 f
1118961 f
11189710 s
111898576 1392(This)N
111899743(document)X
1119001084(describes)X
1119011408(the)X
1119021531(proposed)X
1119031850(interface)X
1119042157(to)X
1119050(Courier)xf 0 f
1119061 f
1119070 f
1119082272(libdwarf)X
1119091 f
111910(,)S
1119112701(a)X
1119122762(library)X
1119133001(of)X
1119143093(functions)X
1119153416(to)X
1119163503(provide)X
1119173773(creation)X
111918576 1488(of)N
111919664(DWARF)X
111920974(debugging)X
1119211333(information)X
1119221732(records,)X
1119232010(DWARF)X
1119242320(line)X
1119252461(number)X
1119262727(information,)X
1119273146(DWARF)X
1119283456(address)X
1119293717(range)X
1119303916(and)X
111931576 1584(pubnames)N
111932921(information,)X
1119331339(weak)X
1119341529(names)X
1119351754(information,)X
1119362172(and)X
1119372308(DWARF)X
1119382617(frame)X
1119392825(description)X
1119403201(information.)X
1119413 f
11194211 s
111943576 1824(1.1)N
111944730(Purpose)X
1119451060(and)X
1119461224(Scope)X
1119471 f
11194810 s
111949576 1968(The)N
111950748(purpose)X
1119511049(of)X
1119521163(this)X
1119531325(document)X
1119541688(is)X
1119551788(to)X
1119561897(propose)X
1119572199(a)X
1119582283(library)X
1119592545(of)X
1119602660(functions)X
1119613006(to)X
1119623116(create)X
1119633357(DWARF)X
1119643694(debugging)X
111965576 2064(information.)N
1119661014(Reading)X
1119671301(\(consuming\))X
1119681726(of)X
1119691813(such)X
1119701980(records)X
1119712237(is)X
1119722310(discussed)X
1119732637(in)X
1119742719(a)X
1119752775(separate)X
1119763059(document.)X
111977576 2256(The)N
111978723(functions)X
1119791043(in)X
1119801127(this)X
1119811264(document)X
1119821602(have)X
1119831776(been)X
1119841950(implemented)X
1119852390(at)X
1119862470(Silicon)X
1119872718(Graphics)X
1119883030(and)X
1119893168(are)X
1119903289(being)X
1119913489(used)X
1119923658(by)X
1119933760(the)X
1119943880(code)X
111995576 2352(generator)N
111996900(to)X
111997982(provide)X
1119981247(debugging)X
1119991605(information.)X
112000576 2592(Additionally,)N
1120011036(the)X
1120021170(focus)X
1120031381(of)X
1120041485(this)X
1120051637(document)X
1120061990(is)X
1120072080(the)X
1120082215(functional)X
1120092577(interface,)X
1120102916(and)X
1120113069(as)X
1120123173(such,)X
1120133377(implementation)X
1120143916(and)X
112015576 2688(optimization)N
1120161000(issues)X
1120171211(are)X
1120181330(intentionally)X
1120191754(ignored.)X
112020576 2928(Error)N
112021777(handling,)X
1120221108(error)X
1120231296(codes,)X
1120241530(and)X
1120251677(certain)X
1120260 f
1120271955(Libdwarf)X
1120281 f
1120292370(codes)X
1120302584(are)X
1120312714(discussed)X
1120323052(in)X
1120333146(the)X
1120343276(")X
1120352 f
1120363309(Proposed)X
1120373648(Interface)X
1120383970(to)X
112039576 3024(DWARF)N
112040868(Consumer)X
1120411217(Library)X
1120421 f
1120431461(",)X
1120441534(which)X
1120451750(should)X
1120461983(be)X
1120472079(read)X
1120482238(\(or)X
1120492352(at)X
1120502430(least)X
1120512597(skimmed\))X
1120522937(before)X
1120533163(reading)X
1120543424(this)X
1120553559(document.)X
1120563 f
11205711 s
112058576 3264(1.2)N
112059730(Definitions)X
1120601 f
11206110 s
112062576 3408(DWARF)N
112063924(debugging)X
1120641321(information)X
1120651758(entries)X
1120662031(\(DIEs\))X
1120672309(are)X
1120682467(the)X
1120692624(segments)X
1120702981(of)X
1120713107(information)X
1120723544(placed)X
1120733813(in)X
1120743934(the)X
1120750 f
112076576 3504(.debug_info)N
1120771 f
1120781156(and)X
1120791304(related)X
1120801555(sections)X
1120811845(by)X
1120821957(compilers,)X
1120832324(assemblers,)X
1120842727(and)X
1120852874(linkage)X
1120863141(editors)X
1120873390(that,)X
1120883561(in)X
1120893654(conjunction)X
112090576 3600(with)N
112091755(line)X
112092912(number)X
1120931194(entries,)X
1120941465(are)X
1120951602(necessary)X
1120961953(for)X
1120972085(symbolic)X
1120982416(source-level)X
1120992847(debugging.)X
1121003263(Refer)X
1121013480(to)X
1121023580(the)X
1121033716(document)X
112104576 3696(")N
1121052 f
112106609(DWARF)X
112107920(Debugging)X
1121081315(Information)X
1121091736(Format)X
1121101 f
112111(")S
1121122048(from)X
1121132243(UI)X
1121142367(PLSIG)X
1121152627(for)X
1121162759(a)X
1121172833(more)X
1121183036(complete)X
1121193368(description)X
1121203762(of)X
1121213867(these)X
112122576 3792(entries.)N
112123576 4032(This)N
112124739(document)X
1121251076(adopts)X
1121261306(all)X
1121271407(the)X
1121281526(terms)X
1121291725(and)X
1121301862(definitions)X
1121312226(in)X
1121322310(")X
1121332 f
1121342343(DWARF)X
1121352637(Debugging)X
1121363015(Information)X
1121373419(Format)X
1121381 f
112139(")S
1121403714(version)X
1121413972(2.)X
112142576 4128(and)N
112143712(the)X
112144830(")X
1121452 f
112146863(Proposed)X
1121471190(Interface)X
1121481500(to)X
1121491582(DWARF)X
1121501874(Consumer)X
1121512223(Library)X
1121521 f
1121532467(".)X
112154576 4368(In)N
112155666(addition,)X
112156971(this)X
1121571109(document)X
1121581448(refers)X
1121591655(to)X
1121601740(Elf,)X
1121611882(the)X
1121622004(ATT/USL)X
1121632357(System)X
1121642616(V)X
1121652698(Release)X
1121662972(4)X
1121673036(object)X
1121683256(format.)X
1121693534(This)X
1121703700(is)X
1121713777(because)X
112172576 4464(the)N
112173701(library)X
112174942(was)X
1121751094(first)X
1121761250(developed)X
1121771606(for)X
1121781726(that)X
1121791872(object)X
1121802094(format.)X
1121812374(Hopefully)X
1121822725(the)X
1121832849(functions)X
1121843173(defined)X
1121853440(here)X
1121863605(can)X
1121873743(easily)X
1121883956(be)X
112189576 4560(applied)N
112190832(to)X
112191914(other)X
1121921099(object)X
1121931315(formats.)X
1121943 f
11219511 s
112196576 4800(1.3)N
112197730(Overview)X
1121981 f
11219910 s
112200576 4944(The)N
112201722(remaining)X
1122021068(sections)X
1122031347(of)X
1122041435(this)X
1122051571(document)X
1122061908(describe)X
1122072197(a)X
1122082254(proposed)X
1122092569(producer)X
1122102876(\(compiler)X
1122113209(or)X
1122123297(assembler\))X
1122133666(interface)X
1122143970(to)X
1122152 f
112216576 5040(Libdwarf)N
1122171 f
112218868(,)X
112219932(first)X
1122201105(by)X
1122211229(describing)X
1122221607(the)X
1122231749(purpose)X
1122242046(of)X
1122252156(additional)X
1122262519(types)X
1122272731(defined)X
1122283015(by)X
1122293138(the)X
1122303279(interface,)X
1122313624(followed)X
1122323952(by)X
112233576 5136(descriptions)N
112234997(of)X
1122351098(the)X
1122361230(available)X
1122371554(operations.)X
1122381963(This)X
1122392140(document)X
1122402491(assumes)X
1122412793(you)X
1122422948(are)X
1122433082(thoroughly)X
1122443468(familiar)X
1122453757(with)X
1122463934(the)X
112247576 5232(information)N
112248979(contained)X
1122491316(in)X
1122501403(the)X
1122512 f
1122521526(DWARF)X
1122531823(Debugging)X
1122542204(Information)X
1122552611(Format)X
1122561 f
1122572876(document,)X
1122583237(and)X
1122593378(")X
1122602 f
1122613411(Proposed)X
1122623742(Interface)X
112263576 5328(to)N
112264658(DWARF)X
112265950(Consumer)X
1122661299(Library)X
1122671 f
1122681543(".)X
112269576 5568(The)N
112270722(interface)X
1122711025(necessarily)X
1122721403(knows)X
1122731633(a)X
1122741690(little)X
1122751857(bit)X
1122761963(about)X
1122772163(the)X
1122782283(object)X
1122792501(format)X
1122802737(\(which)X
1122812982(is)X
1122823057(assumed)X
1122833355(to)X
1122843439(be)X
1122853537(Elf\).)X
1122863724(We)X
1122873858(make)X
112288576 5664(an)N
112289677(attempt)X
112290942(to)X
1122911029(make)X
1122921228(this)X
1122931368(knowledge)X
1122941745(as)X
1122951837(limited)X
1122962088(as)X
1122972180(possible.)X
1122982507(For)X
1122992643(example,)X
1123002 f
1123012960(Libdwarf)X
1123021 f
1123033277(does)X
1123043449(not)X
1123053575(do)X
1123063679(the)X
1123073801(writing)X
112308576 5760(of)N
112309663(object)X
112310879(data)X
1123111033(to)X
1123121115(the)X
1123131233(disk.)X
1123141426(The)X
1123151571(producer)X
1123161877(program)X
1123172169(does)X
1123182336(that.)X
112319576 6164(rev)N
112320699(1.18,)X
112321879(10)X
112322979(Jan)X
1123231106(2002)X
1123242237(-)X
1123252284(1)X
1123262344(-)X
112327
1123282 p
112329%%Page: 2 2
1123300(Courier)xf 0 f
11233110 s 0 xH 0 xS 0 f
1123321 f
1123332237 384(-)N
1123342284(2)X
1123352344(-)X
1123363 f
11233711 s
112338576 768(1.4)N
112339730(Revision)X
1123401075(History)X
1123411 f
11234210 s
112343576 912(March)N
112344806(1993)X
1123451176(Work)X
1123461379(on)X
1123471479(dwarf2)X
1123481727(sgi)X
1123491840(producer)X
1123502146(draft)X
1123512318(begins)X
112352576 1056(March)N
112353806(1999)X
1123541176(Adding)X
1123551436(a)X
1123561492(function)X
1123571779(to)X
1123581861(allow)X
1123592059(any)X
1123602195(number)X
1123612460(of)X
1123622547(trips)X
1123632709(thru)X
1123642858(the)X
1123652976(dwarf_get_section_bytes\(\))X
1123663852(call.)X
112367576 1200(April)N
112368767(10)X
112369869(1999)X
1123701180(Added)X
1123711416(support)X
1123721678(for)X
1123731794(assembler)X
1123742137(text)X
1123752279(output)X
1123762505(of)X
1123772594(dwarf)X
1123782804(\(as)X
1123792920(when)X
1123803117(the)X
1123813238(output)X
1123823465(must)X
1123833643(pass)X
1123843804(thru)X
1123853956(an)X
1123861176 1296(assembler\).)N
1123871610(Revamped)X
1123881999(internals)X
1123892321(for)X
1123902461(better)X
1123912690(performance)X
1123923143(and)X
1123933305(simpler)X
1123943591(provision)X
1123953938(for)X
1123961176 1392(differences)N
1123971554(in)X
1123981636(ABI.)X
112399576 1536(Sep)N
112400716(1,)X
112401796(1999)X
1124021176(Added)X
1124031410(support)X
1124041670(for)X
1124051784(little-)X
1124061977(and)X
1124072113(cross-)X
1124082325(endian)X
1124092559(debug)X
1124102775(info)X
1124112924(creation.)X
1124123 f
11241311 s
112414576 1824(2.)N
112415686(Type)X
112416899(Definitions)X
112417576 2112(2.1)N
112418730(General)X
1124191056(Description)X
1124201 f
11242110 s
112422576 2256(The)N
1124232 f
112424733(libdwarf.h)X
1124251 f
1124261095(header)X
1124271342(file)X
1124281481(contains)X
1124291780(typedefs)X
1124302084(and)X
1124312232(preprocessor)X
1124322675(definitions)X
1124333050(of)X
1124343150(types)X
1124353352(and)X
1124363501(symbolic)X
1124373827(names)X
112438576 2352(used)N
112439746(to)X
112440831 0.4531(reference)AX
1124411155(objects)X
1124421405(of)X
1124432 f
1124441515(Libdwarf)X
1124451 f
1124461850(.)X
1124471913(The)X
1124482061(types)X
1124492253(defined)X
1124502517(by)X
1124512619(typedefs)X
1124522913(contained)X
1124533247(in)X
1124542 f
1124553351(libdwarf.h)X
1124561 f
1124573703(all)X
1124583805(use)X
1124593934(the)X
112460576 2448(convention)N
112461964(of)X
1124621063(adding)X
1124632 f
1124641333(Dwarf_)X
1124651 f
1124661609(as)X
1124671708(a)X
1124681776(prefix)X
1124692000(to)X
1124702094(indicate)X
1124712380(that)X
1124722532(they)X
1124732702(refer)X
1124742887(to)X
1124752982(objects)X
1124763242(used)X
1124773422(by)X
1124783535(Libdwarf.)X
1124793907(The)X
112480576 2544(prefix)N
1124812 f
112482823(Dwarf_P_)X
1124831 f
1124841190(is)X
1124851277(used)X
1124861458(for)X
1124871586(objects)X
1124881847 0.4028(referenced)AX
1124892222(by)X
1124902336(the)X
1124912 f
1124922488(Libdwarf)X
1124931 f
1124942814(Producer)X
1124953138(when)X
1124963346(there)X
1124973541(are)X
1124983674(similar)X
1124993930(but)X
112500576 2640(distinct)N
112501831(objects)X
1125021078(used)X
1125031245(by)X
1125041345(the)X
1125051463(Consumer.)X
1125063 f
11250711 s
112508576 2880(2.2)N
112509730(Namespace)X
1125101176(issues)X
1125111 f
11251210 s
112513576 3024(Application)N
112514981(programs)X
1125151311(should)X
1125161551(avoid)X
1125171756(creating)X
1125182042(names)X
1125192274(beginning)X
1125202621(with)X
1125210 f
1125222818(Dwarf_)X
1125233161(dwarf_)X
1125241 f
1125253477(or)X
1125260 f
1125273600(DW_)X
1125281 f
1125293772(as)X
1125303867(these)X
112531576 3120(are)N
112532695(reserved)X
112533988(to)X
1125341070(dwarf)X
1125351278(and)X
1125361414(libdwarf.)X
1125373 f
11253811 s
112539576 3408(3.)N
112540686(libdwarf)X
1125411031(and)X
1125421195(Elf)X
1125431330(and)X
1125441494(relocations)X
1125451 f
11254610 s
112547576 3552(Much)N
112548784(of)X
112549872(the)X
112550991(description)X
1125511368(below)X
1125521585(presumes)X
1125531909(that)X
1125542050(Elf)X
1125552169(is)X
1125562243(the)X
1125572362(object)X
1125582579(format)X
1125592814(in)X
1125602897(use.)X
1125613065(The)X
1125623211(library)X
1125633446(is)X
1125643520(probably)X
1125653827(usable)X
112566576 3648(with)N
112567738(other)X
112568923(object)X
1125691139(formats)X
1125701404(that)X
1125711544(allow)X
1125721742(arbitrary)X
1125732039(sections)X
1125742317(to)X
1125752399(be)X
1125762495(created.)X
1125773 f
11257811 s
112579576 3888(3.1)N
112580730(binary)X
1125811002(or)X
1125821107(assembler)X
1125831505(output)X
1125841 f
11258510 s
112586576 4032(With)N
1125870 f
112588785(DW_DLC_STREAM_RELOCATIONS)X
1125891 f
1125902006(\(see)X
1125912158(below\))X
1125922403(it)X
1125932469(is)X
1125942544(assumed)X
1125952842(that)X
1125962984(the)X
1125973104(calling)X
1125983344(app)X
1125993482(will)X
1126003628(simply)X
1126013867(write)X
112602576 4128(the)N
112603694(streams)X
112604959(and)X
1126051095(relocations)X
1126061467(directly)X
1126071732(into)X
1126081876(an)X
1126091972(Elf)X
1126102090(file,)X
1126112237(without)X
1126122501(going)X
1126132703(thru)X
1126142852(an)X
1126152948(assembler.)X
112616576 4320(With)N
1126170 f
112618795(DW_DLC_SYMBOLIC_RELOCATIONS)X
1126191 f
1126202122(the)X
1126212252(calling)X
1126222502(app)X
1126232650(must)X
1126242837(either)X
1126253052(A\))X
1126263169(generate)X
1126273474(binary)X
1126283711(relocation)X
112629576 4416(streams)N
112630841(and)X
112631977(write)X
1126321162(the)X
1126331280(generated)X
1126341613(debug)X
1126351829(information)X
1126362227(streams)X
1126372492(and)X
1126382628(the)X
1126392746(relocation)X
1126403087(streams)X
1126413352(direct)X
1126423555(to)X
1126433637(an)X
1126443733(elf)X
1126453838(file)X
1126463965(or)X
112647576 4512(B\))N
112648676(generate)X
112649969(assembler)X
1126501310(output)X
1126511534(text)X
1126521674(for)X
1126531788(an)X
1126541884(assembler)X
1126552225(to)X
1126562307(read)X
1126572466(and)X
1126582602(produce)X
1126592881(an)X
1126602977(object)X
1126613193(file.)X
112662576 4704(With)N
112663759(case)X
112664921(B\))X
1126651024(the)X
1126661145(libdwarf-calling)X
1126671685(application)X
1126682064(must)X
1126692242(use)X
1126702372(the)X
1126712493(relocation)X
1126722837(information)X
1126733238(to)X
1126743323(change)X
1126753574(points)X
1126763793(of)X
1126773884(each)X
112678576 4800(binary)N
112679806(stream)X
1126801045(into)X
1126811194 0.3889(references)AX
1126821551(to)X
1126831638(symbolic)X
1126841956(names.)X
1126852226(It)X
1126862300(is)X
1126872378(necessary)X
1126882716(for)X
1126892835(the)X
1126902958(assembler)X
1126913304(to)X
1126923390(be)X
1126933490(willing)X
1126943740(to)X
1126953826(accept)X
112696576 4896(and)N
112697712(generate)X
1126981005(relocations)X
1126991377(for)X
1127001491 0.3889(references)AX
1127011843(from)X
1127022019(arbitrary)X
1127032316(byte)X
1127042474(boundaries.)X
1127052886(For)X
1127063017(example:)X
112707916 5088(.data)N
1127081090(0a0bcc)X
1127091398(#producing)X
1127101783(3)X
1127111843(bytes)X
1127122032(of)X
1127132119(data.)X
112714916 5184(.word)N
1127151121(mylabel)X
1127161439(#producing)X
1127171824(a)X
1127181880 0.4531(reference)AX
112719916 5280(.word)N
1127201121(endlabel)X
1127211413(-)X
1127221460(startlable)X
1127231774(#producing)X
1127242159(absolute)X
1127252446(length)X
112726576 6164(rev)N
112727699(1.18,)X
112728879(10)X
112729979(Jan)X
1127301106(2002)X
1127312237(-)X
1127322284(2)X
1127332344(-)X
112734
1127353 p
112736%%Page: 3 3
1127370(Courier)xf 0 f
11273810 s 0 xH 0 xS 0 f
1127391 f
1127402237 384(-)N
1127412284(3)X
1127422344(-)X
1127433 f
11274411 s
112745576 768(3.2)N
112746730(libdwarf)X
1127471075(relationship)X
1127481548(to)X
1127491643(Elf)X
1127501 f
11275110 s
112752576 912(When)N
112753790(the)X
112754910(documentation)X
1127551408(below)X
1127561626(refers)X
1127571832(to)X
1127581916('an)X
1127592041(elf)X
1127602148(section)X
1127612397(number')X
1127622692(it)X
1127632759(is)X
1127642835(really)X
1127653041(only)X
1127663206(dependent)X
1127673559(on)X
1127683662(getting)X
1127693907(\(via)X
112770576 1008(the)N
112771699(callback)X
112772992(function)X
1127731284(passed)X
1127741523(by)X
1127751628(the)X
1127761751(caller)X
1127771954(of)X
1127780 f
1127792073(dwarf_producer_init\(\))X
1127801 f
112781(\))S
1127823132(a)X
1127833192(sequence)X
1127843511(of)X
1127853602(integers)X
1127863880(back)X
112787576 1104(\(with)N
112788765(1)X
112789825(as)X
112790912(the)X
1127911030(lowest\).)X
112792576 1296(When)N
112793804(the)X
112794938(documentation)X
1127951450(below)X
1127961682(refers)X
1127971902(to)X
1127982000('an)X
1127992139(Elf)X
1128002273(symbol)X
1128012545(index')X
1128022787(it)X
1128032868(is)X
1128042958(really)X
1128053178(dependent)X
1128063545(on)X
1128073662(Elf)X
1128083797(symbol)X
112809576 1392(numbers)N
112810921(only)X
1128111132(if)X
1128120 f
1128131278(DW_DLC_STREAM_RELOCATIONS)X
1128141 f
1128152547(are)X
1128162715(being)X
1128172962(generated)X
1128183343(\(see)X
1128193541(below\).)X
1128203872(With)X
1128210 f
112822576 1488(DW_DLC_STREAM_RELOCATIONS)N
1128231 f
1128241805(the)X
1128251932(library)X
1128262175(is)X
1128272257(generating)X
1128282625(Elf)X
1128292752(relocations)X
1128303133(and)X
1128313279(the)X
1128323407(section)X
1128333664(numbers)X
1128343970(in)X
112835576 1584(binary)N
112836801(form)X
112837977(so)X
1128381068(the)X
1128391186(section)X
1128401433(numbers)X
1128411729(and)X
1128421865(symbol)X
1128432120(indices)X
1128442367(must)X
1128452542(really)X
1128462745(be)X
1128472841(Elf)X
1128482959(\(or)X
1128493073(elf-like\))X
1128503352(numbers.)X
112851576 1872(With)N
1128520 f
112853788(DW_DLC_SYMBOLIC_RELOCATIONS)X
1128541 f
1128552108(the)X
1128562230(values)X
1128572459(passed)X
1128582697(as)X
1128592788(symbol)X
1128603047(indexes)X
1128613316(can)X
1128623453(be)X
1128633554(any)X
1128643695(integer)X
1128653943(set)X
112866576 1968(or)N
112867676(even)X
112868861(pointer)X
1128691121(set.)X
1128701283(All)X
1128711418(that)X
1128721570(libdwarf)X
1128731874(assumes)X
1128742173(is)X
1128752258(that)X
1128762410(where)X
1128772639(values)X
1128782876(are)X
1128793007(unique)X
1128803257(they)X
1128813427(get)X
1128823557(unique)X
1128833807(values.)X
112884576 2064(Libdwarf)N
112885918(does)X
1128861108(not)X
1128871253(generate)X
1128881569(any)X
1128891728(kind)X
1128901913(of)X
1128912023(symbol)X
1128922301(table)X
1128932500(from)X
1128942699(the)X
1128952840(numbers)X
1128963159(and)X
1128973318(does)X
1128983508(not)X
1128993653(check)X
1129003885(their)X
112901576 2160(uniqueness)N
112902952(or)X
1129031039(lack)X
1129041193(thereof.)X
1129053 f
11290611 s
112907576 2400(3.3)N
112908730(libdwarf)X
1129091075(and)X
1129101239(relocations)X
1129111 f
11291210 s
112913576 2544(With)N
1129140 f
112915793(DW_DLC_SYMBOLIC_RELOCATIONS)X
1129161 f
1129172119(libdwarf)X
1129182421(creates)X
1129192675(binary)X
1129202910(streams)X
1129213185(of)X
1129223282(debug)X
1129233508(information)X
1129243916(and)X
112925576 2640(arrays)N
112926797(of)X
112927888(relocation)X
1129281233(information)X
1129291635(describing)X
1129301993(the)X
1129312115(necessary)X
1129322452(relocation.)X
1129332837(The)X
1129342986(Elf)X
1129353108(section)X
1129363359(numbers)X
1129373658(and)X
1129383797(symbol)X
112939576 2736(numbers)N
112940883(appear)X
1129411129(nowhere)X
1129421437(in)X
1129431530(the)X
1129441659(binary)X
1129451895(streams.)X
1129462191(Such)X
1129472382(appear)X
1129482628(only)X
1129492801(in)X
1129502894(the)X
1129513023(relocation)X
1129523376(information)X
1129533786(and)X
1129543934(the)X
112955576 2832(passed-back)N
112956994(information)X
1129571397(from)X
1129581578(calls)X
1129591750(requesting)X
1129602109(the)X
1129612232(relocation)X
1129622578(information.)X
1129633020(As)X
1129643133(a)X
1129653193(consequence,)X
1129663648(the)X
1129673770('symbol)X
112968576 2928(indices')N
112969850(can)X
112970982(be)X
1129711078(any)X
1129721214(pointer)X
1129731461(or)X
1129741548(integer)X
1129751791(value)X
1129761985(as)X
1129772072(the)X
1129782190(caller)X
1129792389(must)X
1129802564(arrange)X
1129812826(that)X
1129822966(the)X
1129833084(output)X
1129843308(deal)X
1129853462(with)X
1129863624(relocations.)X
112987576 3120(With)N
1129880 f
112989794(DW_DLC_STREAM_RELOCATIONS)X
1129901 f
1129912024(all)X
1129922134(the)X
1129932262(relocations)X
1129942645(are)X
1129952775(directly)X
1129963051(created)X
1129973315(by)X
1129983426(libdwarf)X
1129993729(as)X
1130003827(binary)X
113001576 3216(streams)N
113002841(\(libdwarf)X
1130031160(only)X
1130041322(creates)X
1130051566(the)X
1130061684(streams)X
1130071949(in)X
1130082031(memory,)X
1130092338(it)X
1130102402(does)X
1130112569(not)X
1130122691(write)X
1130132876(them)X
1130143056(to)X
1130153138(disk\).)X
1130163 f
11301711 s
113018576 3456(3.4)N
113019730(symbols,)X
1130201077(addresses,)X
1130211482(and)X
1130221646(offsets)X
1130231 f
11302410 s
113025576 3600(The)N
113026764(following)X
1130271138(applies)X
1130281428(to)X
1130291553(calls)X
1130301763(that)X
1130311946(pass)X
1130322148(in)X
1130332274(symbol)X
1130342573(indices,)X
1130352884(addresses,)X
1130363276(and)X
1130373456(offsets,)X
1130383754(such)X
1130393965(as)X
1130400 f
113041576 3696(dwarf_add_AT_targ_address\(\))N
1130422428(dwarf_add_arange_b\(\))X
1130431 f
1130443916(and)X
1130450 f
113046576 3792(dwarf_add_frame_fde_b\(\))N
1130471 f
113048(.)S
113049576 3984(With)N
1130500 f
113051786(DW_DLC_STREAM_RELOCATIONS)X
1130521 f
1130532008(a)X
1130542066(passed)X
1130552302(in)X
1130562386(address)X
1130572650(is)X
1130582726(one)X
1130592865(of:)X
1130602997(a\))X
1130613083(a)X
1130623142(section)X
1130633392(offset)X
1130643598(and)X
1130653737(the)X
1130663858(\(non-)X
113067576 4080(global\))N
113068823(symbol)X
1130691078(index)X
1130701276(of)X
1130711363(a)X
1130721419(section)X
1130731666(symbol.)X
1130741961(b\))X
1130752048(A)X
1130762126(symbol)X
1130772381(index)X
1130782579(\(global)X
1130792826(symbol\))X
1130803108(and)X
1130813244(a)X
1130823300(zero)X
1130833459(offset.)X
113084576 4272(With)N
1130850 f
113086798(DW_DLC_SYMBOLIC_RELOCATIONS)X
1130871 f
1130882128(the)X
1130892260(same)X
1130902459(approach)X
1130912788(can)X
1130922934(be)X
1130933044(used,)X
1130943246(or,)X
1130953368(instead,)X
1130963650(a)X
1130973721(passed)X
1130983970(in)X
113099576 4368(address)N
113100841(may)X
1131011003(be)X
1131021103(c\))X
1131031190(a)X
1131041250(symbol)X
1131051509(handle)X
1131061747(and)X
1131071887(an)X
1131081987(offset.)X
1131092234(In)X
1131102325(this)X
1131112464(case,)X
1131122647(since)X
1131132836(it)X
1131142904(is)X
1131152981(up)X
1131163085(to)X
1131173171(the)X
1131183293(calling)X
1131193535(app)X
1131203674(to)X
1131213759(generate)X
113122576 4464(binary)N
113123803(relocations)X
1131241177(\(if)X
1131251275(appropriate\))X
1131261690(or)X
1131271779(to)X
1131281863(turn)X
1131292014(the)X
1131302134(binary)X
1131312361(stream)X
1131322597(into)X
1131332743(a)X
1131342801(text)X
1131352943(stream)X
1131363179(\(for)X
1131373322(input)X
1131383508(to)X
1131393592(an)X
1131403691(assembler,)X
113141576 4560(if)N
113142645(appropriate\))X
1131431058(the)X
1131441176(application)X
1131451552(has)X
1131461679(complete)X
1131471993(control)X
1131482240(of)X
1131492327(the)X
1131502445(interpretation)X
1131512897(of)X
1131522984(the)X
1131533102(symbol)X
1131543357(handles.)X
1131553 f
11315611 s
113157576 5040(4.)N
113158686(Memory)X
1131591030(Management)X
1131601 f
11316110 s
113162576 5280(Several)N
113163849(of)X
113164948(the)X
1131651078(functions)X
1131661408(that)X
1131671560(comprise)X
1131681886(the)X
1131692 f
1131702016(Libdwarf)X
1131711 f
1131722340(interface)X
1131732654(return)X
1131742878(values)X
1131753115(that)X
1131763267(have)X
1131773451(been)X
1131783636(dynamically)X
113179576 5376(allocated)N
113180929(by)X
1131811072(the)X
1131821233(library.)X
1131831550(The)X
1131841738(dynamically)X
1131852197(allocated)X
1131862550(spaces)X
1131872823(can)X
1131882998(not)X
1131893163(be)X
1131903301(reclaimed)X
1131913680(except)X
1131923952(by)X
1131930 f
113194576 5472(dwarf_producer_finish\(\))N
1131951 f
113196(.)S
1131971750(This)X
1131981922(function)X
1131992219(is)X
1132002302(supposed)X
1132012630(to)X
1132022722(reclaim)X
1132032993(all)X
1132043103(the)X
1132053231(space,)X
1132063460(and)X
1132073606(invalidate)X
1132083952(all)X
113209576 5568(descriptors)N
113210972(returned)X
1132111284(from)X
1132120 f
1132131512(Libdwarf)X
1132141 f
1132151940(functions)X
1132162282(that)X
1132172446(add)X
1132182605(information)X
1132193026(to)X
1132203131(be)X
1132213250(object)X
1132223489(specified.)X
1132233862(After)X
1132240 f
113225576 5664(dwarf_producer_finish\(\))N
1132261 f
1132271700(is)X
1132281773(called,)X
1132292005(the)X
1132300 f
1132312151(Dwarf_P_Debug)X
1132321 f
1132332795(descriptor)X
1132343136(specified)X
1132353446(is)X
1132363519(also)X
1132373668(invalid.)X
113238576 5856(The)N
113239725(present)X
113240981(version)X
1132411242(of)X
1132421334(the)X
1132431457(producer)X
1132441768(library)X
1132452007(mostly)X
1132462249(ignores)X
1132472510(memory)X
1132482802(management:)X
1132493259(it)X
1132503328(leaks)X
1132513518(memory)X
1132523810(a)X
1132533871(great)X
113254576 6164(rev)N
113255699(1.18,)X
113256879(10)X
113257979(Jan)X
1132581106(2002)X
1132592237(-)X
1132602284(3)X
1132612344(-)X
113262
1132634 p
113264%%Page: 4 4
1132650(Courier)xf 0 f
11326610 s 0 xH 0 xS 0 f
1132671 f
1132682237 384(-)N
1132692284(4)X
1132702344(-)X
113271576 768(deal.)N
113272771(For)X
113273903(existing)X
1132741177(clients)X
1132751407(this)X
1132761543(is)X
1132771617(not)X
1132781740(a)X
1132791797(problem)X
1132802085(\(they)X
1132812271(are)X
1132822391(short)X
1132832572(lived\))X
1132842780(but)X
1132852903(is)X
1132862977(contrary)X
1132873266(to)X
1132883349(the)X
1132893468(intent,)X
1132903691(which)X
1132913907(was)X
113292576 864(that)N
113293716(memory)X
1132941003(should)X
1132951236(be)X
1132961332(freed)X
1132971518(by)X
1132980 f
1132991646(dwarf_producer_finish\(\))X
1133001 f
113301(.)S
113302576 1056(All)N
113303730(data)X
113304916(for)X
1133051062(a)X
1133061150(particular)X
1133070 f
1133081538(Dwarf_P_Debug)X
1133091 f
1133102214(descriptor)X
1133112587(is)X
1133122692(separate)X
1133133008(from)X
1133143216(the)X
1133153366(data)X
1133163552(for)X
1133173698(any)X
1133183867(other)X
1133190 f
113320576 1152(Dwarf_P_Debug)N
1133211 f
1133221220(descriptor)X
1133231561(in)X
1133241643(use)X
1133251770(in)X
1133261852(the)X
1133271970(library-calling)X
1133282449(application.)X
1133293 f
11333011 s
113331576 1392(4.1)N
113332730(Read-only)X
1133331138(Properties)X
1133341 f
11333510 s
113336576 1536(All)N
113337701(pointers)X
113338982(returned)X
1133391273(by)X
1133401376(or)X
1133411466(as)X
1133421556(a)X
1133431615(result)X
1133441816(of)X
1133451906(a)X
1133462 f
1133471965(Libdwarf)X
1133481 f
1133492280(call)X
1133502419(should)X
1133512655(be)X
1133522754(assumed)X
1133533053(to)X
1133543139(point)X
1133553327(to)X
1133563413(read-only)X
1133573745(memory.)X
113358576 1632(Except)N
113359821(as)X
113360910(defined)X
1133611173(by)X
1133621275(this)X
1133631412(document,)X
1133641770(the)X
1133651890(results)X
1133662121(are)X
1133672242(undefined)X
1133682584(for)X
1133692 f
1133702699(Libdwarf)X
1133711 f
1133723012(clients)X
1133733242(that)X
1133743383(attempt)X
1133753644(to)X
1133763727(write)X
1133773913(to)X
1133783996(a)X
113379576 1728(region)N
113380801(pointed)X
1133811061(to)X
1133821143(by)X
1133831243(a)X
1133841299(return)X
1133851511(value)X
1133861705(from)X
1133871881(a)X
1133882 f
1133891937(Libdwarf)X
1133901 f
1133912249(call.)X
1133923 f
11339311 s
113394576 1968(4.2)N
113395730(Storage)X
1133961040(Deallocation)X
1133971 f
11339810 s
113399576 2112(Calling)N
1134000 f
113401873(dwarf_producer_finish\(dbg\))X
1134021 f
1134032155(frees)X
1134042346(all)X
1134052460(the)X
1134062592(space,)X
1134072825(and)X
1134082975(invalidates)X
1134093356(all)X
1134103471(pointers)X
1134113764(returned)X
113412576 2208(from)N
1134130 f
113414780(Libdwarf)X
1134151 f
1134161184(functions)X
1134171502(on)X
1134181602(or)X
1134191689(descended)X
1134202044(from)X
1134210 f
1134222248(dbg)X
1134231 f
113424(\).)S
1134253 f
11342611 s
113427576 2496(5.)N
113428686(Functional)X
1134291115(Interface)X
1134301 f
11343110 s
113432576 2640(This)N
113433744(section)X
113434997(describes)X
1134351322(the)X
1134361446(functions)X
1134371770(available)X
1134382086(in)X
1134392175(the)X
1134402 f
1134412300(Libdwarf)X
1134421 f
1134432619(library.)X
1134442900(Each)X
1134453088(function)X
1134463382(description)X
1134473765(includes)X
113448576 2736(its)N
113449671(definition,)X
1134501022(followed)X
1134511327(by)X
1134521427(a)X
1134531483(paragraph)X
1134541825(describing)X
1134552179(the)X
1134562297(function's)X
1134572642(operation.)X
113458576 2976(The)N
113459743(functions)X
1134601083(may)X
1134611263(be)X
1134621381(categorized)X
1134631794(into)X
1134641960(groups:)X
1134652 f
1134662262(initialization)X
1134672711(and)X
1134682873(termination)X
1134693289(operations)X
1134701 f
1134713631(,)X
1134722 f
1134733694(debugging)X
113474576 3072(information)N
113475994(entry)X
1134761199(creation)X
1134771 f
1134781466(,)X
1134792 f
1134801526(Elf)X
1134811659(section)X
1134821926(callback)X
1134832238(function)X
1134841 f
1134852500(,)X
1134862 f
1134872560(attribute)X
1134882875(creation)X
1134891 f
1134903142(,)X
1134912 f
1134923202(expression)X
1134933585(creation)X
1134941 f
1134953852(,)X
1134962 f
1134973912(line)X
113498576 3168(number)N
113499866(creation)X
1135001 f
1135011133(,)X
1135022 f
1135031198(fast-access)X
1135041595(\(aranges\))X
1135051953(creation)X
1135061 f
1135072220(,)X
1135082 f
1135092286(fast-access)X
1135102684(\(pubnames\))X
1135113109(creation)X
1135121 f
1135133376(,)X
1135142 f
1135153442(fast-access)X
1135163840(\(weak)X
113517576 3264(names\))N
113518858(creation)X
1135191 f
1135201125(,)X
1135212 f
1135221195(macro)X
1135231450(information)X
1135241876(creation)X
1135251 f
1135262143(,)X
1135272 f
1135282212(low)X
1135292376(level)X
1135302577(\(.debug_frame\))X
1135313123(creation)X
1135321 f
1135333390(,)X
1135343459(and)X
1135352 f
1135363624(location)X
1135373935(list)X
113538576 3360(\(.debug_loc\))N
1135391004(creation)X
1135401 f
1135411271(.)X
113542576 3600(The)N
113543721(following)X
1135441052(sections)X
1135451330(describe)X
1135461618(these)X
1135471803(functions.)X
1135483 f
11354911 s
113550576 3840(5.1)N
113551730(Initialization)X
1135521238(and)X
1135531402(Termination)X
1135541899(Operations)X
1135551 f
11355610 s
113557576 3984(These)N
113558817(functions)X
1135591164(setup)X
1135600 f
1135611410(Libdwarf)X
1135621 f
1135631843(to)X
1135641954(accumulate)X
1135652369(debugging)X
1135662756(information)X
1135673183(for)X
1135683326(an)X
1135693451(object,)X
1135703716(usually)X
1135713996(a)X
113572576 4080(compilation-unit,)N
1135731152(provided)X
1135741460(by)X
1135751563(the)X
1135761684(producer.)X
1135772033(The)X
1135782181(actual)X
1135792396(addition)X
1135802681(of)X
1135812771(information)X
1135823172(is)X
1135833248(done)X
1135843427(by)X
1135853530(functions)X
1135863850(in)X
1135873934(the)X
113588576 4176(other)N
113589766(sections)X
1135901049(of)X
1135911141(this)X
1135921281(document.)X
1135931662(Once)X
1135941857(all)X
1135951962(the)X
1135962085(information)X
1135972488(has)X
1135982620(been)X
1135992797(added,)X
1136003034(functions)X
1136013357(from)X
1136023539(this)X
1136033680(section)X
1136043933(are)X
113605576 4272(used)N
113606753(to)X
113607845(transform)X
1136081187(the)X
1136091315(information)X
1136101723(to)X
1136111815(appropriate)X
1136122211(byte)X
1136132379(streams,)X
1136142674(and)X
1136152819(help)X
1136162986(to)X
1136173077(write)X
1136183271(out)X
1136193402(the)X
1136203529(byte)X
1136213696(streams)X
1136223970(to)X
113623576 4368(disk.)N
113624576 4560(Typically)N
113625908(then,)X
1136261091(a)X
1136271153(producer)X
1136281465(application)X
1136291847(would)X
1136302073(create)X
1136312292(a)X
1136320 f
1136332382(Dwarf_P_Debug)X
1136341 f
1136353032(descriptor)X
1136363379(to)X
1136373467(gather)X
1136383694(debugging)X
113639576 4656(information)N
1136401010(for)X
1136411160(a)X
1136421252(particular)X
1136431616(compilation-unit)X
1136442205(using)X
1136450 f
1136462462(dwarf_producer_init\(\))X
1136471 f
113648(.)S
1136493566(The)X
1136503746(producer)X
113651576 4752(application)N
113652964(would)X
1136531196(use)X
1136541335(this)X
1136550 f
1136561510(Dwarf_P_Debug)X
1136571 f
1136582166(descriptor)X
1136592519(to)X
1136602613(accumulate)X
1136613011(debugging)X
1136623381(information)X
1136633791(for)X
1136643917(this)X
113665576 4848(object)N
113666799(using)X
113667999(functions)X
1136681324(from)X
1136691507(other)X
1136701699(sections)X
1136711984(of)X
1136722077(this)X
1136732218(document.)X
1136742600(Once)X
1136752796(all)X
1136762902(the)X
1136773026(information)X
1136783430(had)X
1136793572(been)X
1136803750(added,)X
1136813988(it)X
113682576 4944(would)N
113683801(call)X
1136840 f
113685970(dwarf_transform_to_disk_form\(\))X
1136861 f
1136872435(to)X
1136882522(convert)X
1136892788(the)X
1136902911(accumulated)X
1136913342(information)X
1136923745(into)X
1136933894(byte)X
113694576 5040(streams)N
113695879(in)X
113696999 0.3750(accordance)AX
1136971420(with)X
1136981620(the)X
1136990 f
1137001804(DWARF)X
1137011 f
1137022102(standard.)X
1137032472(The)X
1137042655(application)X
1137053069(would)X
1137063327(then)X
1137073523(repeatedly)X
1137083916(call)X
1137090 f
113710576 5136(dwarf_get_section_bytes\(\))N
1137111 f
1137121822(for)X
1137131963(each)X
1137142158(of)X
1137152272(the)X
1137160 f
1137172445(.debug_*)X
1137181 f
1137192876(created.)X
1137203196(This)X
1137213385(gives)X
1137223601(the)X
1137233746(producer)X
113724576 5232(information)N
113725992(about)X
1137261208(the)X
1137271344(data)X
1137281515(bytes)X
1137291721(to)X
1137301820(be)X
1137311933(written)X
1137322197(to)X
1137332296(disk.)X
1137342506(At)X
1137352623(this)X
1137362775(point,)X
1137372996(the)X
1137383131(producer)X
1137393454(would)X
1137403691(release)X
1137413952(all)X
113742576 5328(resource)N
113743869(used)X
1137441036(by)X
1137450 f
1137461164(Libdwarf)X
1137471 f
1137481568(for)X
1137491682(this)X
1137501817(object)X
1137512033(by)X
1137522133(calling)X
1137530 f
1137542399(dwarf_producer_finish\(\))X
1137551 f
113756(.)S
113757576 5520(It)N
113758647(is)X
113759722(also)X
113760873(possible)X
1137611157(to)X
1137621241(create)X
1137631456(assembler-input)X
1137641990(character)X
1137652308(streams)X
1137662575(from)X
1137672753(the)X
1137682873(byte)X
1137693033(streams)X
1137703301(created)X
1137713557(by)X
1137723660(this)X
1137733798(library.)X
113774576 5616(This)N
113775739(feature)X
113776983(requires)X
1137771262(slightly)X
1137781521(different)X
1137791818(interfaces)X
1137802151(than)X
1137812309(direct)X
1137822512(binary)X
1137832737(output.)X
1137843001(The)X
1137853146(details)X
1137863375(are)X
1137873494(mentioned)X
1137883852(in)X
1137893934(the)X
113790576 5712(text.)N
113791576 6164(rev)N
113792699(1.18,)X
113793879(10)X
113794979(Jan)X
1137951106(2002)X
1137962237(-)X
1137972284(4)X
1137982344(-)X
113799
1138005 p
113801%%Page: 5 5
1138020(Courier)xf 0 f
11380310 s 0 xH 0 xS 0 f
1138041 f
1138052237 384(-)N
1138062284(5)X
1138072344(-)X
1138083 f
113809576 768(5.1.1)N
113810776(dwarf_producer_init\(\))X
1138110 f
113812576 1056(Dwarf_P_Debug)N
1138131248(dwarf_producer_init\()X
113814960 1152(Dwarf_Unsigned)N
1138151680(flags,)X
113816960 1248(Dwarf_Callback_Func)N
1138171920(func,)X
113818960 1344(Dwarf_Handler)N
1138191632(errhand,)X
113820960 1440(Dwarf_Ptr)N
1138211440(errarg,)X
113822960 1536(Dwarf_Error)N
1138231536(*error\))X
1138241 f
113825576 1680(The)N
113826734(function)X
1138270 f
1138281062(dwarf_producer_init\(\))X
1138291 f
1138302123(returns)X
1138312379(a)X
1138322448(new)X
1138330 f
1138342643(Dwarf_P_Debug)X
1138351 f
1138363301(descriptor)X
1138373656(that)X
1138383810(can)X
1138393956(be)X
113840576 1776(used)N
113841764(to)X
113842867(add)X
1138430 f
1138441052(Dwarf)X
1138451 f
1138461333(information)X
1138471752(to)X
1138481855(the)X
1138491994(object.)X
1138502271(On)X
1138512410(error)X
1138522608(it)X
1138532693(returns)X
1138540 f
1138552984(DW_DLV_BADADDR)X
1138561 f
113857(.)S
1138580 f
1138593792(flags)X
1138601 f
113861576 1872(determine)N
113862920(whether)X
1138631202(the)X
1138641323(target)X
1138651529(object)X
1138661748(is)X
1138671824(64-bit)X
1138682038(or)X
1138692129(32-bit.)X
1138700 f
1138712440(func)X
1138721 f
1138732656(is)X
1138742733(a)X
1138752793(pointer)X
1138763044(to)X
1138773130(a)X
1138783190(function)X
1138793481(called-back)X
1138803876(from)X
1138810 f
113882576 1968(Libdwarf)N
1138831 f
113884995(whenever)X
1138850 f
1138861371(Libdwarf)X
1138871 f
1138881790(needs)X
1138892008(to)X
1138902105(create)X
1138912333(a)X
1138922403(new)X
1138932571(object)X
1138942801(section)X
1138953062(\(as)X
1138963190(it)X
1138973268(will)X
1138983426(for)X
1138993554(each)X
1139003736(.debug_*)X
113901576 2064(section)N
113902824(and)X
113903961(related)X
1139041201(relocation)X
1139051543(section\).)X
1139060 f
1139071914(errhand)X
1139081 f
1139092271(is)X
1139102345(a)X
1139112402(pointer)X
1139122650(to)X
1139132734(a)X
1139142792(function)X
1139153081(that)X
1139163223(will)X
1139173369(be)X
1139183467(used)X
1139193636(for)X
1139203752(handling)X
113921576 2160(errors)N
113922786(detected)X
1139231076(by)X
1139240 f
1139251206(Libdwarf)X
1139261 f
113927(.)S
1139280 f
1139291680(errarg)X
1139301 f
1139311990(is)X
1139322065(the)X
1139332185(default)X
1139342430(error)X
1139352608(argument)X
1139362932(used)X
1139373100(by)X
1139383201(the)X
1139393320(function)X
1139403608(pointed)X
1139413869(to)X
1139423952(by)X
1139430 f
113944576 2256(errhand)N
1139451 f
113946(.)S
113947576 2400(The)N
1139480 f
113949749(flags)X
1139501 f
1139511009(values)X
1139521234(are)X
1139531353(as)X
1139541440(follows:)X
1139550 f
113956896 2496(DW_DLC_WRITE)N
1139571 f
1139581498(is)X
1139591577(required.)X
1139601911(The)X
1139612063(values)X
1139620 f
1139632323(DW_DLC_READ)X
1139642906(DW_DLC_RDWR)X
1139651 f
1139663461(are)X
1139673587(not)X
1139683716(supported)X
113969896 2592(by)N
113970996(the)X
1139711114(producer)X
1139721420(and)X
1139731556(must)X
1139741731(not)X
1139751853(be)X
1139761949(passed.)X
113977896 2784(If)N
1139780 f
1139791001(DW_DLC_SIZE_64)X
1139801 f
1139811697(is)X
1139821774(not)X
1139831900(OR'd)X
1139842102(into)X
1139850 f
1139862278(flags)X
1139871 f
1139882542(then)X
1139890 f
1139902732(DW_DLC_SIZE_32)X
1139911 f
1139923428(is)X
1139933505(assumed.)X
1139943845(Oring)X
113995896 2880(in)N
113996978(both)X
1139971140(is)X
1139981213(an)X
1139991309(error.)X
114000896 3072(If)N
1140010 f
1140021015(DW_DLC_ISA_IA64)X
1140031 f
1140041772(is)X
1140051862(not)X
1140062001(OR'd)X
1140072216(into)X
1140080 f
1140092405(flags)X
1140101 f
1140112683(then)X
1140120 f
1140132887(DW_DLC_ISA_MIPS)X
1140141 f
1140153645(is)X
1140163736(assumed.)X
114017896 3168(Oring)N
1140181103(in)X
1140191185(both)X
1140201347(is)X
1140211420(an)X
1140221516(error.)X
114023896 3360(If)N
1140240 f
1140251003(DW_DLC_TARGET_BIGENDIAN)X
1140261 f
1140272132(is)X
1140282210(not)X
1140292337(OR'd)X
1140302540(into)X
1140310 f
1140322718(flags)X
1140331 f
1140342984(then)X
1140353148(endianness)X
1140363526(the)X
1140373650(same)X
1140383841(as)X
1140393934(the)X
114040896 3456(host)N
1140411049(is)X
1140421122(assumed.)X
114043896 3648(If)N
1140440 f
1140451001(DW_DLC_TARGET_LITTLEENDIAN)X
1140461 f
1140472272(is)X
1140482348(not)X
1140492474(OR'd)X
1140502676(into)X
1140510 f
1140522852(flags)X
1140531 f
1140543116(then)X
1140553278(endianness)X
1140563654(the)X
1140573776(same)X
1140583965(as)X
114059896 3744(the)N
1140601014(host)X
1140611167(is)X
1140621240(assumed.)X
114063896 3936(If)N
114064980(both)X
1140650 f
1140661180(DW_DLC_TARGET_LITTLEENDIAN)X
1140671 f
1140682458(and)X
1140690 f
1140702633(DW_DLC_TARGET_BIGENDIAN)X
1140711 f
1140723768(are)X
1140733898(or-d)X
114074896 4032(in)N
114075978(it)X
1140761042(is)X
1140771115(an)X
1140781211(error.)X
114079896 4416(Either)N
1140801145(one)X
1140811314(of)X
1140821434(two)X
1140831607(output)X
1140841864(forms)X
1140852104(is)X
1140862211(specifiable:)X
1140870 f
1140882711(DW_DLC_STREAM_RELOCATIONS)X
1140891 f
1140903965(or)X
1140910 f
114092896 4512(DW_DLC_SYMBOLIC_RELOCATIONS)N
1140931 f
1140942212(.)X
114095896 4704(The)N
1140961289(default)X
1140971780(is)X
1140980 f
1140992129(DW_DLC_STREAM_RELOCATIONS)X
1141001 f
1141013598(.)X
1141023907(The)X
1141030 f
114104896 4800(DW_DLC_STREAM_RELOCATIONS)N
1141051 f
1141062125(are)X
1141072253(relocations)X
1141082634(in)X
1141092725(a)X
1141102790(binary)X
1141113024(stream)X
1141123267(\(as)X
1141133390(used)X
1141143566(in)X
1141153656(a)X
1141163720(MIPS)X
1141173934(Elf)X
114118896 4896(object\).)N
114119896 5088(The)N
1141200 f
1141211074(DW_DLC_SYMBOLIC_RELOCATIONS)X
1141221 f
1141232395(are)X
1141242519(the)X
1141252642(same)X
1141262832(relocations)X
1141273209(but)X
1141283336(expressed)X
1141293678(in)X
1141303765(an)X
1141313866(array)X
114132896 5184(of)N
114133986(structures)X
1141341321(defined)X
1141351585(by)X
1141361688(libdwarf,)X
1141372003(which)X
1141382222(the)X
1141392343(caller)X
1141402545(of)X
1141412634(the)X
1141422754(relevant)X
1141433035(function)X
1141443324(\(see)X
1141453476(below\))X
1141463721(must)X
1141473898(deal)X
114148896 5280(with)N
1141491072(appropriately.)X
1141501574(This)X
1141511750(method)X
1141522024(of)X
1141532125(expressing)X
1141542502(relocations)X
1141552889(allows)X
1141563133(the)X
1141573266(producer-application)X
1141583970(to)X
114159896 5376(easily)N
1141601103(produce)X
1141611382(assembler)X
1141621723(text)X
1141631863(output)X
1141642087(of)X
1141652174(debugging)X
1141662532(information.)X
114167896 5664(If)N
1141680 f
1141691008(DW_DLC_SYMBOLIC_RELOCATIONS)X
1141701 f
1141712335(is)X
1141722419(OR'd)X
1141732628(into)X
1141740 f
1141752811(flags)X
1141761 f
1141773082(then)X
1141783251(relocations)X
1141793634(are)X
1141803764(returned)X
114181896 5760(not)N
1141821018(as)X
1141831105(streams)X
1141841370(but)X
1141851492(thru)X
1141861641(an)X
1141871737(array)X
1141881923(of)X
1141892010(structures.)X
114190576 6164(rev)N
114191699(1.18,)X
114192879(10)X
114193979(Jan)X
1141941106(2002)X
1141952237(-)X
1141962284(5)X
1141972344(-)X
114198
1141996 p
114200%%Page: 6 6
1142010(Courier)xf 0 f
11420210 s 0 xH 0 xS 0 f
1142031 f
1142042237 384(-)N
1142052284(6)X
1142062344(-)X
114207576 768(The)N
114208721(function)X
1142090 f
1142101036(func)X
1142111 f
1142121248(must)X
1142131423(be)X
1142141519(provided)X
1142151824(by)X
1142161924(the)X
1142172042(user)X
1142182196(of)X
1142192283(this)X
1142202418(library.)X
1142212692(Its)X
1142222792(prototype)X
1142233119(is:)X
1142240 f
114225576 912(typedef)N
114226960(int)X
1142271152(\(*Dwarf_Callback_Func\)\()X
114228768 1008(char*)N
1142291056(name,)X
114230768 1104(int)N
1142311728(size,)X
114232768 1200(Dwarf_Unsigned)N
1142331728(type,)X
114234768 1296(Dwarf_Unsigned)N
1142351728(flags,)X
114236768 1392(Dwarf_Unsigned)N
1142371728(link,)X
114238768 1488(Dwarf_Unsigned)N
1142391728(info,)X
114240768 1584(int*)N
1142411728(sect_name_index,)X
114242768 1680(int*)N
1142431728(error\))X
1142441 f
114245576 1824(For)N
114246713(each)X
114247887(section)X
1142481140(in)X
1142491228(the)X
1142501352(object)X
1142511574(file)X
1142521707(that)X
1142530 f
1142541881(libdwarf)X
1142551 f
1142562291(needs)X
1142572500(to)X
1142582588(create,)X
1142592827(it)X
1142602897(calls)X
1142613070(this)X
1142623211(function)X
1142633504(once,)X
1142643703(passing)X
1142653970(in)X
114266576 1920(the)N
114267699(section)X
1142680 f
114269979(name)X
1142701 f
114271(,)S
1142721216(the)X
1142731339(section)X
1142740 f
1142751619(type)X
1142761 f
114277(,)S
1142781856(the)X
1142791979(section)X
1142800 f
1142812259(flags)X
1142821 f
114283(,)S
1142842544(the)X
1142850 f
1142862695(link)X
1142871 f
1142882912(field,)X
1142893104(and)X
1142903244(the)X
1142910 f
1142923394(info)X
1142931 f
1142943610(field.)X
1142953821(For)X
1142963956(an)X
114297576 2016(Elf)N
114298702(object)X
114299926(file)X
1143001061(these)X
1143011254(values)X
1143021487(should)X
1143031728(be)X
1143041832(appropriate)X
1143052226(Elf)X
1143062353(section)X
1143072609(header)X
1143082853(values.)X
1143093127(For)X
1143103267(example,)X
1143113588(for)X
1143123711(relocation)X
114313576 2112(callbacks,)N
114314922(the)X
1143150 f
1143161075(link)X
1143171 f
1143181294(field)X
1143191468(is)X
1143201548(supposed)X
1143211873(to)X
1143221962(be)X
1143232065(set)X
1143242181(\(by)X
1143252315(the)X
1143262440(app\))X
1143272610(to)X
1143282699(the)X
1143292824(index)X
1143303029(of)X
1143313123(the)X
1143323247(symtab)X
1143333504(section)X
1143343757(\(the)X
1143353908(link)X
114336576 2208(field)N
114337746(passed)X
114338983(thru)X
1143391136(the)X
1143401258(callback)X
1143411550(must)X
1143421729(be)X
1143431829(ignored)X
1143442098(by)X
1143452202(the)X
1143462324(app\).)X
1143472531(And,)X
1143482713(for)X
1143492831(relocation)X
1143503176(callbacks,)X
1143513519(the)X
1143520 f
1143533669(info)X
1143541 f
1143553885(field)X
114356576 2304(is)N
114357649(passed)X
114358883(as)X
114359970(the)X
1143601088(elf)X
1143611193(section)X
1143621440(number)X
1143631705(of)X
1143641792(the)X
1143651910(section)X
1143662157(the)X
1143672275(relocations)X
1143682647(apply)X
1143692845(to.)X
114370576 2496(On)N
114371694(success)X
114372955(the)X
1143731073(user)X
1143741227(function)X
1143751514(should)X
1143761747(return)X
1143771959(the)X
1143782077(Elf)X
1143792195(section)X
1143802442(number)X
1143812707(of)X
1143822794(the)X
1143832912(newly)X
1143843128(created)X
1143853381(Elf)X
1143863499(section.)X
114387576 2640(On)N
114388696(success,)X
114389979(the)X
1143901099(function)X
1143911388(should)X
1143921623(also)X
1143931774(set)X
1143941885(the)X
1143952005(integer)X
1143962250(pointed)X
1143972512(to)X
1143982596(by)X
1143990 f
1144002727(sect_name_index)X
1144011 f
1144023470(to)X
1144033555(the)X
1144043676(Elf)X
1144053797(symbol)X
114406576 2736(number)N
114407855(assigned)X
1144081165(in)X
1144091261(the)X
1144101393(Elf)X
1144111525(symbol)X
1144121794(table)X
1144131984(of)X
1144142085(the)X
1144152217(new)X
1144162385(Elf)X
1144172517(section.)X
1144182818(This)X
1144192994(symbol)X
1144203263(number)X
1144213542(is)X
1144223629(needed)X
1144233890(with)X
114424576 2832(relocations)N
114425949(dependent)X
1144261300(on)X
1144271401(the)X
1144281520(relocation)X
1144291862(of)X
1144301950(this)X
1144312086(new)X
1144322241(section.)X
1144332529(Because)X
1144342818("int)X
1144352956(*")X
1144363050(is)X
1144373124(not)X
1144383247(guaranteed)X
1144393621(to)X
1144403704(work)X
1144413890(with)X
114442576 2928(elf)N
114443681('symbols')X
1144441021(that)X
1144451161(are)X
1144461280(really)X
1144471483(pointers,)X
1144481781(It)X
1144491850(is)X
1144501923(better)X
1144512126(to)X
1144522208(use)X
1144532335(the)X
1144540 f
1144552481(dwarf_producer_init_b\(\))X
1144561 f
1144573605(interface.)X
114458576 3072(For)N
114459707(example,)X
1144601019(the)X
1144610 f
1144621165(.debug_line)X
1144631 f
1144641713(section's)X
1144652018(third)X
1144662189(data)X
1144672343(element)X
1144682618(\(in)X
1144692728(a)X
1144702785(compilation)X
1144713188(unit\))X
1144723360(is)X
1144733434(the)X
1144743553(offset)X
1144753757(from)X
1144763934(the)X
114477576 3168(beginning)N
114478920(of)X
1144791011(the)X
1144800 f
1144811161(.debug_info)X
1144821 f
1144831713(section)X
1144841964(of)X
1144852055(the)X
1144862177(compilation)X
1144872583(unit)X
1144882731(entry)X
1144892920(for)X
1144903038(this)X
1144910 f
1144923204(.debug_line)X
1144931 f
1144943755(set.)X
1144953907(The)X
114496576 3264(relocation)N
114497930(entry)X
1144981128(in)X
1144990 f
1145001251(.rel.debug_line)X
1145011 f
1145022004(for)X
1145032131(this)X
1145042279(offset)X
1145052495(must)X
1145062683(have)X
1145072868(the)X
1145082999(relocation)X
1145093353(symbol)X
1145103621(index)X
1145113833(of)X
1145123934(the)X
114513576 3360(symbol)N
1145140 f
114515899(.debug_info)X
1145161 f
1145171507(returned)X
1145181835(by)X
1145191975(the)X
1145202133(callback)X
1145212461(of)X
1145222588(that)X
1145232768(section-creation)X
1145243340(through)X
1145253648(the)X
1145263805(pointer)X
1145270 f
114528576 3456(sect_name_index)N
1145291 f
114530(.)S
114531576 3600(On)N
114532694(failure,)X
114533944(the)X
1145341062(function)X
1145351349(should)X
1145361582(return)X
1145371794(-1)X
1145381881(and)X
1145392017(set)X
1145402126(the)X
1145410 f
1145422272(error)X
1145431 f
1145442532(integer)X
1145452775(to)X
1145462857(an)X
1145472953(error)X
1145483130(code.)X
114549576 3744(Nothing)N
114550858(in)X
114551940(libdwarf)X
1145521232(actually)X
1145531506(depends)X
1145541789(on)X
1145551889(the)X
1145562007(section)X
1145572254(index)X
1145582452(returned)X
1145592740(being)X
1145602938(a)X
1145612994(real)X
1145623135(Elf)X
1145633253(section.)X
1145643540(The)X
1145653686(Elf)X
1145663805(section)X
114567576 3840(is)N
114568655(simply)X
114569898(useful)X
1145701120(for)X
1145711240(generating)X
1145721605(relocation)X
1145731952(records.)X
1145742255(Similarly,)X
1145752597(the)X
1145762720(Elf)X
1145772843(symbol)X
1145783103(table)X
1145793284(index)X
1145803487(returned)X
1145813780(thru)X
1145823934(the)X
1145830 f
114584576 3936(sect_name_index)N
1145851 f
1145861324(must)X
1145871507(simply)X
1145881752(be)X
1145891856(an)X
1145901961(index)X
1145912168(that)X
1145922317(can)X
1145932458(be)X
1145942563(used)X
1145952739(in)X
1145962830(relocations)X
1145973211(against)X
1145983467(this)X
1145993611(section.)X
1146003907(The)X
114601576 4032(application)N
114602954(will)X
1146031100(probably)X
1146041407(want)X
1146051585(to)X
1146061669(note)X
1146071829(the)X
1146081949(values)X
1146092176(passed)X
1146102411(to)X
1146112494(this)X
1146122630(function)X
1146132918(in)X
1146143001(some)X
1146153191(form,)X
1146163388(even)X
1146173561(if)X
1146183631(no)X
1146193732(Elf)X
1146203851(file)X
1146213979(is)X
114622576 4128(being)N
114623774(produced.)X
1146243 f
114625576 4368(5.1.2)N
114626776(dwarf_producer_init_b\(\))X
1146270 f
114628576 4656(Dwarf_P_Debug)N
1146291248(dwarf_producer_init_b\()X
114630960 4752(Dwarf_Unsigned)N
1146311680(flags,)X
114632960 4848(Dwarf_Callback_Func_b)N
1146332016(func,)X
114634960 4944(Dwarf_Handler)N
1146351632(errhand,)X
114636960 5040(Dwarf_Ptr)N
1146371440(errarg,)X
114638960 5136(Dwarf_Error)N
1146391536(*error\))X
1146401 f
114641576 5280(The)N
114642721(function)X
1146430 f
1146441036(dwarf_producer_init_b\(\))X
1146451 f
1146462160(is)X
1146472233(the)X
1146482351(same)X
1146492536(as)X
1146500 f
1146512652(dwarf_producer_init\(\))X
1146521 f
1146533681(except)X
1146543912(that)X
114655576 5376(the)N
114656707(callback)X
1146571008(function)X
1146581308(uses)X
1146591479(Dwarf_Unsigned)X
1146602064(rather)X
1146612284(than)X
1146622454(int)X
1146632570(as)X
1146642669(the)X
1146652799(type)X
1146662969(of)X
1146673068(the)X
1146683198(symbol-index)X
1146693670(returned)X
1146703970(to)X
114671576 5472(libdwarf)N
114672868(thru)X
1146731017(the)X
1146741135(pointer)X
1146751382(argument)X
1146761705(\(see)X
1146771855(below\).)X
114678576 5616(The)N
1146790 f
114680749(flags)X
1146811 f
1146821009(values)X
1146831234(are)X
1146841353(as)X
1146851440(follows:)X
1146860 f
114687896 5712(DW_DLC_WRITE)N
1146881 f
1146891498(is)X
1146901577(required.)X
1146911911(The)X
1146922063(values)X
1146930 f
1146942323(DW_DLC_READ)X
1146952906(DW_DLC_RDWR)X
1146961 f
1146973461(are)X
1146983587(not)X
1146993716(supported)X
114700896 5808(by)N
114701996(the)X
1147021114(producer)X
1147031420(and)X
1147041556(must)X
1147051731(not)X
1147061853(be)X
1147071949(passed.)X
114708576 6164(rev)N
114709699(1.18,)X
114710879(10)X
114711979(Jan)X
1147121106(2002)X
1147132237(-)X
1147142284(6)X
1147152344(-)X
114716
1147177 p
114718%%Page: 7 7
1147190(Courier)xf 0 f
11472010 s 0 xH 0 xS 0 f
1147211 f
1147222237 384(-)N
1147232284(7)X
1147242344(-)X
114725896 768(If)N
1147260 f
1147271001(DW_DLC_SIZE_64)X
1147281 f
1147291697(is)X
1147301774(not)X
1147311900(OR'd)X
1147322102(into)X
1147330 f
1147342278(flags)X
1147351 f
1147362542(then)X
1147370 f
1147382732(DW_DLC_SIZE_32)X
1147391 f
1147403428(is)X
1147413505(assumed.)X
1147423845(Oring)X
114743896 864(in)N
114744978(both)X
1147451140(is)X
1147461213(an)X
1147471309(error.)X
114748896 1056(If)N
1147490 f
1147501015(DW_DLC_ISA_IA64)X
1147511 f
1147521772(is)X
1147531862(not)X
1147542001(OR'd)X
1147552216(into)X
1147560 f
1147572405(flags)X
1147581 f
1147592683(then)X
1147600 f
1147612887(DW_DLC_ISA_MIPS)X
1147621 f
1147633645(is)X
1147643736(assumed.)X
114765896 1152(Oring)N
1147661103(in)X
1147671185(both)X
1147681347(is)X
1147691420(an)X
1147701516(error.)X
114771896 1344(Either)N
1147721140(one)X
1147731304(of)X
1147741419(two)X
1147751587(output)X
1147761839(forms)X
1147772074(are)X
1147782221(specifiable:)X
1147790 f
1147802716(DW_DLC_STREAM_RELOCATIONS)X
1147811 f
1147823965(or)X
1147830 f
114784896 1440(DW_DLC_SYMBOLIC_RELOCATIONS)N
1147851 f
1147862240(.)X
1147870 f
1147882384(dwarf_producer_init_b\(\))X
1147891 f
1147903536(is)X
1147913637(usable)X
1147923890(with)X
114793896 1536(either)N
1147941099(output)X
1147951323(form.)X
114796896 1728(Either)N
1147971145(one)X
1147981314(of)X
1147991434(two)X
1148001607(output)X
1148011864(forms)X
1148022104(is)X
1148032211(specifiable:)X
1148040 f
1148052711(DW_DLC_STREAM_RELOCATIONS)X
1148061 f
1148073965(or)X
1148080 f
114809896 1824(DW_DLC_SYMBOLIC_RELOCATIONS)N
1148101 f
1148112212(.)X
114812896 2016(The)N
1148131289(default)X
1148141780(is)X
1148150 f
1148162129(DW_DLC_STREAM_RELOCATIONS)X
1148171 f
1148183598(.)X
1148193907(The)X
1148200 f
114821896 2112(DW_DLC_STREAM_RELOCATIONS)N
1148221 f
1148232125(are)X
1148242253(relocations)X
1148252634(in)X
1148262725(a)X
1148272790(binary)X
1148283024(stream)X
1148293267(\(as)X
1148303390(used)X
1148313566(in)X
1148323656(a)X
1148333720(MIPS)X
1148343934(Elf)X
114835896 2208(object\).)N
1148360 f
114837896 2400(DW_DLC_SYMBOLIC_RELOCATIONS)N
1148381 f
1148392218(are)X
1148402343(OR'd)X
1148412547(into)X
1148422697(flags)X
1148432879(to)X
1148442967(cause)X
1148453172(the)X
1148463296(same)X
1148473488(relocations)X
1148483867(to)X
1148493956(be)X
114850896 2496(expressed)N
1148511237(in)X
1148521323(an)X
1148531423(array)X
1148541613(of)X
1148551704(structures)X
1148562040(defined)X
1148572305(by)X
1148582409(libdwarf,)X
1148592725(which)X
1148602945(the)X
1148613067(caller)X
1148623270(of)X
1148633361(the)X
1148643483(relevant)X
1148653765(function)X
114866896 2592(\(see)N
1148671062(below\))X
1148681321(must)X
1148691512(deal)X
1148701682(with)X
1148711860(appropriately.)X
1148722364(This)X
1148732542(method)X
1148742818(of)X
1148752921(expressing)X
1148763300(relocations)X
1148773688(allows)X
1148783934(the)X
114879896 2688(producer-application)N
1148801585(to)X
1148811667(easily)X
1148821874(produce)X
1148832153(assembler)X
1148842494(text)X
1148852634(output)X
1148862858(of)X
1148872945(debugging)X
1148883303(information.)X
114889576 2928(The)N
114890721(function)X
1148910 f
1148921036(func)X
1148931 f
1148941248(must)X
1148951423(be)X
1148961519(provided)X
1148971824(by)X
1148981924(the)X
1148992042(user)X
1149002196(of)X
1149012283(this)X
1149022418(library.)X
1149032692(Its)X
1149042792(prototype)X
1149053119(is:)X
1149060 f
114907576 3072(typedef)N
114908960(int)X
1149091152(\(*Dwarf_Callback_Func_b\)\()X
114910768 3168(char*)N
1149111056(name,)X
114912768 3264(int)N
1149131728(size,)X
114914768 3360(Dwarf_Unsigned)N
1149151728(type,)X
114916768 3456(Dwarf_Unsigned)N
1149171728(flags,)X
114918768 3552(Dwarf_Unsigned)N
1149191728(link,)X
114920768 3648(Dwarf_Unsigned)N
1149211728(info,)X
114922768 3744(Dwarf_Unsigned*)N
1149231728(sect_name_index,)X
114924768 3840(int*)N
1149251728(error\))X
1149261 f
114927576 3984(For)N
114928713(each)X
114929887(section)X
1149301140(in)X
1149311228(the)X
1149321352(object)X
1149331574(file)X
1149341707(that)X
1149350 f
1149361881(libdwarf)X
1149371 f
1149382291(needs)X
1149392500(to)X
1149402588(create,)X
1149412827(it)X
1149422897(calls)X
1149433070(this)X
1149443211(function)X
1149453504(once,)X
1149463703(passing)X
1149473970(in)X
114948576 4080(the)N
114949699(section)X
1149500 f
114951979(name)X
1149521 f
114953(,)S
1149541216(the)X
1149551339(section)X
1149560 f
1149571619(type)X
1149581 f
114959(,)S
1149601856(the)X
1149611979(section)X
1149620 f
1149632259(flags)X
1149641 f
114965(,)S
1149662544(the)X
1149670 f
1149682695(link)X
1149691 f
1149702912(field,)X
1149713104(and)X
1149723244(the)X
1149730 f
1149743394(info)X
1149751 f
1149763610(field.)X
1149773821(For)X
1149783956(an)X
114979576 4176(Elf)N
114980702(object)X
114981926(file)X
1149821061(these)X
1149831254(values)X
1149841487(should)X
1149851728(be)X
1149861832(appropriate)X
1149872226(Elf)X
1149882353(section)X
1149892609(header)X
1149902853(values.)X
1149913127(For)X
1149923267(example,)X
1149933588(for)X
1149943711(relocation)X
114995576 4272(callbacks,)N
114996922(the)X
1149970 f
1149981075(link)X
1149991 f
1150001294(field)X
1150011468(is)X
1150021548(supposed)X
1150031873(to)X
1150041962(be)X
1150052065(set)X
1150062181(\(by)X
1150072315(the)X
1150082440(app\))X
1150092610(to)X
1150102699(the)X
1150112824(index)X
1150123029(of)X
1150133123(the)X
1150143247(symtab)X
1150153504(section)X
1150163757(\(the)X
1150173908(link)X
115018576 4368(field)N
115019746(passed)X
115020983(thru)X
1150211136(the)X
1150221258(callback)X
1150231550(must)X
1150241729(be)X
1150251829(ignored)X
1150262098(by)X
1150272202(the)X
1150282324(app\).)X
1150292531(And,)X
1150302713(for)X
1150312831(relocation)X
1150323176(callbacks,)X
1150333519(the)X
1150340 f
1150353669(info)X
1150361 f
1150373885(field)X
115038576 4464(is)N
115039649(passed)X
115040883(as)X
115041970(the)X
1150421088(elf)X
1150431193(section)X
1150441440(number)X
1150451705(of)X
1150461792(the)X
1150471910(section)X
1150482157(the)X
1150492275(relocations)X
1150502647(apply)X
1150512845(to.)X
115052576 4656(On)N
115053694(success)X
115054955(the)X
1150551073(user)X
1150561227(function)X
1150571514(should)X
1150581747(return)X
1150591959(the)X
1150602077(Elf)X
1150612195(section)X
1150622442(number)X
1150632707(of)X
1150642794(the)X
1150652912(newly)X
1150663128(created)X
1150673381(Elf)X
1150683499(section.)X
115069576 4800(On)N
115070696(success,)X
115071979(the)X
1150721099(function)X
1150731388(should)X
1150741623(also)X
1150751774(set)X
1150761885(the)X
1150772005(integer)X
1150782250(pointed)X
1150792512(to)X
1150802596(by)X
1150810 f
1150822727(sect_name_index)X
1150831 f
1150843470(to)X
1150853555(the)X
1150863676(Elf)X
1150873797(symbol)X
115088576 4896(number)N
115089855(assigned)X
1150901165(in)X
1150911261(the)X
1150921393(Elf)X
1150931525(symbol)X
1150941794(table)X
1150951984(of)X
1150962085(the)X
1150972217(new)X
1150982385(Elf)X
1150992517(section.)X
1151002818(This)X
1151012994(symbol)X
1151023263(number)X
1151033542(is)X
1151043629(needed)X
1151053890(with)X
115106576 4992(relocations)N
115107948(dependent)X
1151081298(on)X
1151091398(the)X
1151101516(relocation)X
1151111857(of)X
1151121944(this)X
1151132079(new)X
1151142233(section.)X
115115576 5136(For)N
115116707(example,)X
1151171019(the)X
1151180 f
1151191165(.debug_line)X
1151201 f
1151211713(section's)X
1151222018(third)X
1151232189(data)X
1151242343(element)X
1151252618(\(in)X
1151262728(a)X
1151272785(compilation)X
1151283188(unit\))X
1151293360(is)X
1151303434(the)X
1151313553(offset)X
1151323757(from)X
1151333934(the)X
115134576 5232(beginning)N
115135920(of)X
1151361011(the)X
1151370 f
1151381161(.debug_info)X
1151391 f
1151401713(section)X
1151411964(of)X
1151422055(the)X
1151432177(compilation)X
1151442583(unit)X
1151452731(entry)X
1151462920(for)X
1151473038(this)X
1151480 f
1151493204(.debug_line)X
1151501 f
1151513755(set.)X
1151523907(The)X
115153576 5328(relocation)N
115154930(entry)X
1151551128(in)X
1151560 f
1151571251(.rel.debug_line)X
1151581 f
1151592004(for)X
1151602131(this)X
1151612279(offset)X
1151622495(must)X
1151632683(have)X
1151642868(the)X
1151652999(relocation)X
1151663353(symbol)X
1151673621(index)X
1151683833(of)X
1151693934(the)X
115170576 5424(symbol)N
1151710 f
115172899(.debug_info)X
1151731 f
1151741507(returned)X
1151751835(by)X
1151761975(the)X
1151772133(callback)X
1151782461(of)X
1151792588(that)X
1151802768(section-creation)X
1151813340(through)X
1151823648(the)X
1151833805(pointer)X
1151840 f
115185576 5520(sect_name_index)N
1151861 f
115187(.)S
115188576 5664(On)N
115189694(failure,)X
115190944(the)X
1151911062(function)X
1151921349(should)X
1151931582(return)X
1151941794(-1)X
1151951881(and)X
1151962017(set)X
1151972126(the)X
1151980 f
1151992272(error)X
1152001 f
1152012532(integer)X
1152022775(to)X
1152032857(an)X
1152042953(error)X
1152053130(code.)X
115206576 6164(rev)N
115207699(1.18,)X
115208879(10)X
115209979(Jan)X
1152101106(2002)X
1152112237(-)X
1152122284(7)X
1152132344(-)X
115214
1152158 p
115216%%Page: 8 8
1152170(Courier)xf 0 f
11521810 s 0 xH 0 xS 0 f
1152191 f
1152202237 384(-)N
1152212284(8)X
1152222344(-)X
115223576 768(Nothing)N
115224858(in)X
115225940(libdwarf)X
1152261232(actually)X
1152271506(depends)X
1152281789(on)X
1152291889(the)X
1152302007(section)X
1152312254(index)X
1152322452(returned)X
1152332740(being)X
1152342938(a)X
1152352994(real)X
1152363135(Elf)X
1152373253(section.)X
1152383540(The)X
1152393686(Elf)X
1152403805(section)X
115241576 864(is)N
115242655(simply)X
115243898(useful)X
1152441120(for)X
1152451240(generating)X
1152461605(relocation)X
1152471952(records.)X
1152482255(Similarly,)X
1152492597(the)X
1152502720(Elf)X
1152512843(symbol)X
1152523103(table)X
1152533284(index)X
1152543487(returned)X
1152553780(thru)X
1152563934(the)X
1152570 f
115258576 960(sect_name_index)N
1152591 f
1152601324(must)X
1152611507(simply)X
1152621752(be)X
1152631856(an)X
1152641961(index)X
1152652168(that)X
1152662317(can)X
1152672458(be)X
1152682563(used)X
1152692739(in)X
1152702830(relocations)X
1152713211(against)X
1152723467(this)X
1152733611(section.)X
1152743907(The)X
115275576 1056(application)N
115276954(will)X
1152771100(probably)X
1152781407(want)X
1152791585(to)X
1152801669(note)X
1152811829(the)X
1152821949(values)X
1152832176(passed)X
1152842411(to)X
1152852494(this)X
1152862630(function)X
1152872918(in)X
1152883001(some)X
1152893191(form,)X
1152903388(even)X
1152913561(if)X
1152923631(no)X
1152933732(Elf)X
1152943851(file)X
1152953979(is)X
115296576 1152(being)N
115297774(produced.)X
115298576 1344(Note)N
115299797(that)X
115300983(the)X
1153010 f
1153021175(Dwarf_Callback_Func_b\(\))X
1153031 f
1153042365(form)X
1153052587(passes)X
1153062858(back)X
1153073076(the)X
1153083240(sect_name_index)X
1153093863(as)X
1153103996(a)X
115311576 1440(Dwarf_Unsigned.)N
1153121193(This)X
1153131359(is)X
1153141436(guaranteed)X
1153151813(large)X
1153161998(enough)X
1153172258(to)X
1153182344(hold)X
1153192510(a)X
1153202570(pointer.)X
1153212860(\(the)X
1153223008(other)X
1153233196(functional)X
1153243544(interfaces)X
1153253880(have)X
115326576 1536(versions)N
115327863(with)X
1153281025(the)X
1153291143('symbol)X
1153301425(index')X
1153311650(as)X
1153321737(a)X
1153331793(Dwarf_Unsigned)X
1153342366(too.)X
1153352508(See)X
1153362644(below\).)X
115337576 1728(If)N
1153380 f
115339688(DW_DLC_SYMBOLIC_RELOCATIONS)X
1153401 f
1153412014(is)X
1153422097(in)X
1153432189(use,)X
1153442346(then)X
1153452514(the)X
1153462642(symbol)X
1153472907(index)X
1153483115(is)X
1153493198(simply)X
1153503445(an)X
1153513551(arbitrary)X
1153523858(value)X
115353576 1824(\(from)N
115354790(the)X
115355919(point)X
1153561114(of)X
1153571212(view)X
1153581399(of)X
1153591497(libdwarf\))X
1153601827(so)X
1153611929(the)X
1153622058(caller)X
1153632268(can)X
1153642411(put)X
1153652544(anything)X
1153662855(in)X
1153672948(it:)X
1153683065(a)X
1153693131(normal)X
1153703388(elf)X
1153713503(symbol)X
1153723768(index,)X
1153733996(a)X
115374576 1920(pointer)N
115375828(to)X
115376915(a)X
115377976(struct)X
1153781179(\(with)X
1153791373(arbitrary)X
1153801675(contents\))X
1153811994(\(the)X
1153822144(caller)X
1153832349(must)X
1153842530(cast)X
1153852681(to/from)X
1153862947(Dwarf_Unsigned)X
1153873526(as)X
1153883619(appropriate\),)X
115389576 2016(or)N
115390732(some)X
115391990(other)X
1153921244(kind)X
1153931475(of)X
1153941631(pointer)X
1153951947(or)X
1153962103(value.)X
1153972406(The)X
1153982619(values)X
1153992912(show)X
1154003169(up)X
1154013337(in)X
1154023487(the)X
1154033673(output)X
1154043965(of)X
1154050 f
115406576 2112(dwarf_get_relocation_info\(\))N
1154071 f
1154081892(\(described)X
1154092247(below\))X
1154102490(and)X
1154112626(are)X
1154122745(not)X
1154132867(emitted)X
1154143127(anywhere)X
1154153460(else.)X
1154163 f
115417576 2352(5.1.3)N
115418776 0.1078(dwarf_transform_to_disk_form\(\))AX
1154190 f
115420576 2640(Dwarf_Signed)N
1154211200(dwarf_transform_to_disk_form\()X
115422960 2736(Dwarf_P_Debug)N
1154231632(dbg,)X
115424960 2832(Dwarf_Error*)N
1154251584(error\))X
1154261 f
115427576 2976(The)N
115428740(function)X
1154290 f
1154301074(dwarf_transform_to_disk_form\(\))X
1154311 f
1154322573(does)X
1154332759(the)X
1154342896(actual)X
1154353127(conversion)X
1154363519(of)X
1154373626(the)X
1154380 f
1154393792(Dwarf)X
1154401 f
115441576 3072(information)N
115442975(provided)X
1154431281(so)X
1154441373(far,)X
1154451504(to)X
1154461587(the)X
1154471706(form)X
1154481883(that)X
1154492024(is)X
1154502097(normally)X
1154512406(written)X
1154522653(out)X
1154532775(as)X
1154540 f
1154552890(Elf)X
1154561 f
1154573054(sections.)X
1154583372(In)X
1154593459(other)X
1154603644(words,)X
1154613880(once)X
115462576 3168(all)N
115463859(DWARF)X
1154641351(information)X
1154651932(has)X
1154662242(been)X
1154672597(passed)X
1154683014(to)X
1154690 f
1154703308(Libdwarf)X
1154711 f
115472(,)S
1154733916(call)X
1154740 f
115475576 3264(dwarf_transform_to_disk_form\(\))N
1154761 f
1154772058(to)X
1154782142(transform)X
1154792476(all)X
1154802578(the)X
1154812698(accumulated)X
1154823125(data)X
1154833280(into)X
1154843425(byte)X
1154853584(streams.)X
1154863890(This)X
115487576 3360(includes)N
115488872(turning)X
1154891132(relocation)X
1154901482(information)X
1154911889(into)X
1154922042(byte)X
1154932209(streams)X
1154942483(\(and)X
1154952655(possibly)X
1154962950(relocation)X
1154973300(arrays\).)X
1154983593(This)X
1154993765(function)X
115500576 3456(does)N
115501744(not)X
115502867(write)X
1155031053(anything)X
1155041354(to)X
1155051437(disk.)X
1155061631(If)X
1155071706(successful,)X
1155082077(it)X
1155092142(returns)X
1155102386(a)X
1155112443(count)X
1155122642(of)X
1155132730(the)X
1155142849(number)X
1155153115(of)X
1155160 f
1155173231(Elf)X
1155181 f
1155193396(sections)X
1155203675(ready)X
1155213874(to)X
1155223956(be)X
115523576 3552(retrieved)N
115524882(\(and,)X
1155251065(normally,)X
1155261394(written)X
1155271641(to)X
1155281723(disk\).)X
1155291943(In)X
1155302030(case)X
1155312189(of)X
1155322276(error,)X
1155332473(it)X
1155342537(returns)X
1155350 f
1155362808(DW_DLV_NOCOUNT)X
1155371 f
115538(.)S
1155393 f
115540576 3888(5.1.4)N
115541776(dwarf_get_section_bytes\(\))X
1155420 f
115543576 4176(Dwarf_Ptr)N
1155441056(dwarf_get_section_bytes\()X
115545960 4272(Dwarf_P_Debug)N
1155461632(dbg,)X
115547960 4368(Dwarf_Signed)N
1155481584(dwarf_section,)X
115549960 4464(Dwarf_Signed)N
1155501584(*elf_section_index,)X
115551960 4560(Dwarf_Unsigned)N
1155521680(*length,)X
115553960 4656(Dwarf_Error*)N
1155541584(error\))X
1155551 f
115556576 4800(The)N
115557766(function)X
1155580 f
1155591126(dwarf_get_section_bytes\(\))X
1155601 f
1155612411(must)X
1155622631(be)X
1155632773(called)X
1155643031(repetitively,)X
1155653482(with)X
1155663690(the)X
1155673854(index)X
1155680 f
115569576 4896(dwarf_section)N
1155701 f
1155711278(starting)X
1155721596(at)X
1155731731(0)X
1155741848(and)X
1155752041(continuing)X
1155762460(for)X
1155772631(the)X
1155782806(number)X
1155793128(of)X
1155803272(sections)X
1155813607(returned)X
1155823952(by)X
1155830 f
115584576 4992(dwarf_transform_to_disk_form\(\))N
1155851 f
1155862039(.)X
1155872102(It)X
1155882174(returns)X
1155890 f
1155902449(NULL)X
1155911 f
1155922665(to)X
1155932751(indicate)X
1155943029(that)X
1155953173(there)X
1155963358(are)X
1155973481(no)X
1155983585(more)X
1155993774(sections)X
115600576 5088(of)N
1156010 f
115602699(Dwarf)X
1156031 f
115604967(information.)X
1156051413(For)X
1156061552(each)X
1156071728(non-NULL)X
1156082117(return,)X
1156092357(the)X
1156102483(return)X
1156112703(value)X
1156122905(points)X
1156133128(to)X
1156140 f
1156153245(*length)X
1156161 f
1156173608(bytes)X
1156183804(of)X
1156193898(data)X
115620576 5184(that)N
115621743(are)X
115622889(normally)X
1156231225(added)X
1156241464(to)X
1156251573(the)X
1156261719(output)X
1156271971(object)X
1156282215(in)X
1156290 f
1156302353(Elf)X
1156311 f
1156322545(section)X
1156330 f
1156342848(*elf_section)X
1156351 f
1156363472(by)X
1156373600(the)X
1156383746(producer)X
115639576 5280(application.)N
115640999(It)X
1156411075(is)X
1156421155(illegal)X
1156431382(to)X
1156441471(call)X
1156451614(these)X
1156461806(in)X
1156471895(any)X
1156482038(order)X
1156492235(other)X
1156502427(than)X
1156512592(0)X
1156522659(thru)X
1156532815(N-1)X
1156542967(where)X
1156553191(N)X
1156563276(is)X
1156573356(the)X
1156583480(number)X
1156593751(of)X
1156603844(dwarf)X
115661576 5376(sections)N
115662867(returned)X
1156631168(by)X
1156640 f
1156651309(dwarf_transform_to_disk_form\(\))X
1156661 f
1156672782(.)X
1156682855(The)X
1156690 f
1156703042(dwarf_section)X
1156711 f
1156723700(number)X
1156733979(is)X
115674576 5472(actually)N
115675860(ignored:)X
1156761157(the)X
1156771285(data)X
1156781449(is)X
1156791532(returned)X
1156801830(as)X
1156811927(if)X
1156822005(the)X
1156832132(caller)X
1156842340(passed)X
1156852583(in)X
1156862674(the)X
1156872801(correct)X
1156883054(dwarf_section)X
1156893538(numbers)X
1156903843(in)X
1156913934(the)X
115692576 5568(required)N
115693864(sequence.)X
1156941219(The)X
1156950 f
1156961392(error)X
1156971 f
1156981652(argument)X
1156991975(is)X
1157002048(not)X
1157012170(used.)X
115702576 5712(There)N
115703788(is)X
115704865(no)X
115705969(requirement)X
1157061381(that)X
1157071525(the)X
1157081647(section)X
1157091898(bytes)X
1157102091(actually)X
1157112369(be)X
1157122469(written)X
1157132720(to)X
1157142806(an)X
1157152906(elf)X
1157163015(file.)X
1157173186(For)X
1157183321(example,)X
1157193637(consider)X
1157203934(the)X
115721576 5808(.debug_info)N
115722986(section)X
1157231238(and)X
1157241379(its)X
1157251479(relocation)X
1157261825(section)X
1157272077(\(the)X
1157282227(call)X
1157292368(back)X
1157302545(function)X
1157312837(would)X
1157323061(resulted)X
1157333339(in)X
1157343425(assigning)X
1157353751('section')X
115736576 6164(rev)N
115737699(1.18,)X
115738879(10)X
115739979(Jan)X
1157401106(2002)X
1157412237(-)X
1157422284(8)X
1157432344(-)X
115744
1157459 p
115746%%Page: 9 9
1157470(Courier)xf 0 f
11574810 s 0 xH 0 xS 0 f
1157491 f
1157502237 384(-)N
1157512284(9)X
1157522344(-)X
115753576 768(numbers)N
115754880(and)X
1157551024(the)X
1157561150(link)X
1157571302(field)X
1157581477(to)X
1157591567(tie)X
1157601675(these)X
1157611868(together)X
1157622159(\(.rel.debug_info)X
1157632704(would)X
1157642932(have)X
1157653112(a)X
1157663176(link)X
1157673328(to)X
1157683418(.debug_info\).)X
1157693898(One)X
115770576 864(could)N
115771784(examine)X
1157721086(the)X
1157731214(relocations,)X
1157741616(split)X
1157751783(the)X
1157761911(.debug_info)X
1157772326(data)X
1157782490(at)X
1157792578(relocation)X
1157802929(boundaries,)X
1157813331(emit)X
1157823502(byte)X
1157833669(streams)X
1157843943(\(in)X
115785576 960(hex\))N
115786740(as)X
115787829(assembler)X
1157881172(output,)X
1157891418(and)X
1157901556(at)X
1157911636(each)X
1157921806(relocation)X
1157932149(point,)X
1157942355(emit)X
1157952519(an)X
1157962617(assembler)X
1157972960(directive)X
1157983263(with)X
1157993427(a)X
1158003485(symbol)X
1158013742(name)X
1158023938(for)X
115803576 1056(the)N
115804748(assembler.)X
1158051183(Examining)X
1158061608(the)X
1158071780(relocations)X
1158082206(is)X
1158092332(awkward)X
1158102700(though.)X
1158113035(It)X
1158123157(is)X
1158133283(much)X
1158143534(better)X
1158153790(to)X
1158163925(use)X
1158170 f
115818576 1152(dwarf_get_section_relocation_info\(\))N
1158191 f
115820576 1392(The)N
115821728(memory)X
1158221022(space)X
1158231228(of)X
1158241322(the)X
1158251447(section)X
1158261701(byte)X
1158271866(stream)X
1158282107(is)X
1158292187(freed)X
1158302380(by)X
1158312488(the)X
1158320 f
1158332642(dwarf_producer_finish\(\))X
1158341 f
1158353794(call)X
1158363938(\(or)X
115837576 1488(would)N
115838801(be)X
115839902(if)X
115840976(the)X
1158410 f
1158421127(dwarf_producer_finish\(\))X
1158431 f
1158442256(was)X
1158452406(actually)X
1158462685(correct\),)X
1158472981(along)X
1158483184(with)X
1158493351(all)X
1158503456(the)X
1158513578(other)X
1158523767(space)X
1158533970(in)X
115854576 1584(use)N
115855703(with)X
115856865(that)X
1158571005(Dwarf_P_Debug.)X
1158583 f
115859576 1824(5.1.5)N
115860776(dwarf_get_relocation_info_count\(\))X
1158610 f
115862576 1968(int)N
115863816(dwarf_get_relocation_info_count\()X
115864960 2064(Dwarf_P_Debug)N
1158651632(dbg,)X
115866960 2160(Dwarf_Unsigned)N
1158671680(*count_of_relocation_sections)X
1158683120(,)X
115869960 2256(int)N
1158701680(*drd_buffer_version,)X
115871960 2352(Dwarf_Error*)N
1158721584(error\))X
1158731 f
115874576 2496(The)N
115875871(function)X
1158760 f
1158771336(dwarf_get_relocation_info\(\))X
1158781 f
1158792802(returns,)X
1158803216(thru)X
1158813536(the)X
1158823805(pointer)X
1158830 f
115884576 2592(count_of_relocation_sections)N
1158851 f
115886(,)S
1158872218(the)X
1158882594(number)X
1158893117(of)X
1158903462(times)X
1158913912(that)X
1158920 f
115893576 2688(dwarf_get_relocation_info\(\))N
1158941 f
1158951892(should)X
1158962125(be)X
1158972221(called.)X
115898576 2880(The)N
115899734(function)X
1159000 f
1159011062(dwarf_get_relocation_info\(\))X
1159021 f
1159032392(returns)X
1159042649(DW_DLV_OK)X
1159053178(if)X
1159063261(the)X
1159073393(call)X
1159083543(was)X
1159093702(successful)X
115910576 2976(\(the)N
1159110 f
115912931(count_of_relocation_sections)X
1159131 f
1159142477(is)X
1159152732(therefore)X
1159163224(meaningful,)X
1159173810(though)X
1159180 f
115919576 3072(count_of_relocation_sections)N
1159201 f
1159211940(could)X
1159222138(be)X
1159232234(zero\).)X
1159240 f
115925576 3264(*drd_buffer_version)N
1159261 f
1159271527(is)X
1159281619(the)X
1159291757(value)X
1159301971(2.)X
1159312091(If)X
1159322185(the)X
1159332323(structure)X
1159342644(pointed)X
1159352924(to)X
1159363026(by)X
1159373146(the)X
1159380 f
1159393312(*reldata_buffer)X
1159401 f
115941576 3360(changes)N
115942880(this)X
1159431040(number)X
1159441330(will)X
1159451499(change.)X
1159461812(The)X
1159471981(application)X
1159482381(should)X
1159492638(verify)X
1159502874(that)X
1159513038(the)X
1159523180(number)X
1159533469(is)X
1159543566(the)X
1159553708(version)X
1159563988(it)X
115957576 3456(understands)N
115958991(\(that)X
1159591170(it)X
1159601246(matches)X
1159611541(the)X
1159621671(value)X
1159631877(of)X
1159641976(DWARF_DRD_BUFFER_VERSION)X
1159653234(\(from)X
1159663449(libdwarf.h\)\).)X
1159673907(The)X
115968576 3552(value)N
115969770(1)X
115970830(version)X
1159711086(was)X
1159721231(never)X
1159731430(used)X
1159741597(in)X
1159751679(production)X
1159762046(MIPS)X
1159772252(libdwarf)X
1159782544(\(version)X
1159792827(1)X
1159802887(did)X
1159813009(exist)X
1159823180(in)X
1159833262(source\).)X
115984576 3744(It)N
115985648(returns)X
115986894(DW_DLV_NO_ENTRY)X
1159871719(if)X
1159880 f
1159891819(count_of_relocation_sections)X
1159901 f
1159913186(is)X
1159923262(not)X
1159933388(meaningful)X
1159943777(because)X
1159950 f
115996576 3840(DW_DLC_SYMBOLIC_RELOCATIONS)N
1159971 f
1159981934(was)X
1159992121(not)X
1160002284(passed)X
1160012559(in)X
1160022682(the)X
1160030 f
1160042869(dwarf_producer_init\(\))X
1160051 f
1160063938(\(or)X
1160070 f
116008576 3936(dwarf_producer_init_b\(\))N
1160091 f
1160101720(\))X
1160111767(call.)X
116012576 4128(It)N
116013780(returns)X
1160141158(DW_DLV_ERROR)X
1160151958(if)X
1160162162(there)X
1160172478(was)X
1160182758(an)X
1160192990(error,)X
1160203323(in)X
1160213541(which)X
1160223893(case)X
1160230 f
116024576 4224(count_of_relocation_sections)N
1160251 f
1160261940(is)X
1160272013(not)X
1160282135(meaningful.)X
1160293 f
116030576 4464(5.1.6)N
116031776(dwarf_get_relocation_info\(\))X
1160320 f
116033576 4608(int)N
116034768(dwarf_get_relocation_info\()X
116035960 4704(Dwarf_P_Debug)N
1160361632(dbg,)X
116037960 4800(Dwarf_Signed)N
1160381584(*elf_section_index,)X
116039960 4896(Dwarf_Signed)N
1160401584(*elf_section_index_link,)X
116041960 4992(Dwarf_Unsigned)N
1160421680(*relocation_buffer_count,)X
116043960 5088(Dwarf_Relocation_Data)N
1160442016(*reldata_buffer,)X
116045960 5184(Dwarf_Error*)N
1160461584(error\))X
1160471 f
116048576 5424(The)N
116049744(function)X
1160500 f
1160511082(dwarf_get_relocation_info\(\))X
1160521 f
1160532421(should)X
1160542678(normally)X
1160553011(be)X
1160563131(called)X
1160573367(repetitively,)X
1160583796(for)X
1160593934(the)X
116060576 5520(number)N
116061841(of)X
116062928(relocation)X
1160631269(sections)X
1160641547(that)X
1160650 f
1160661715(dwarf_get_relocation_info_count\(\))X
1160671 f
1160683319(indicated)X
1160693633(exist.)X
116070576 5712(It)N
116071647(returns)X
1160720 f
116073920(DW_DLV_OK)X
1160741 f
1160751374(to)X
1160761458(indicate)X
1160771734(that)X
1160781876(valid)X
1160792058(values)X
1160802285(are)X
1160812406(returned)X
1160822696(thru)X
1160832848(the)X
1160842969(pointer)X
1160853219(arguments.)X
1160863616(The)X
1160870 f
1160883792(error)X
1160891 f
116090576 5808(argument)N
116091899(is)X
116092972(not)X
1160931094(set.)X
116094576 6164(rev)N
116095699(1.18,)X
116096879(10)X
116097979(Jan)X
1160981106(2002)X
1160992237(-)X
1161002284(9)X
1161012344(-)X
116102
11610310 p
116104%%Page: 10 10
1161050(Courier)xf 0 f
11610610 s 0 xH 0 xS 0 f
1161071 f
1161082217 384(-)N
1161092264(10)X
1161102364(-)X
116111576 768(It)N
116112657(returns)X
116113912(DW_DLV_NO_ENTRY)X
1161141746(if)X
1161151827(there)X
1161162020(are)X
1161172151(no)X
1161182263(entries)X
1161192509(\(the)X
1161202667(count)X
1161212878(of)X
1161222978(relocation)X
1161233332(arrays)X
1161243562(is)X
1161253648(zero.\).)X
1161263907(The)X
1161270 f
116128576 864(error)N
1161291 f
116130836(argument)X
1161311159(is)X
1161321232(not)X
1161331354(set.)X
116134576 1056(It)N
116135657(returns)X
1161360 f
116137940(DW_DLV_ERROR)X
1161381 f
1161391548(if)X
1161401629(there)X
1161411822(is)X
1161421907(an)X
1161432015(error.)X
1161442244(Calling)X
1161450 f
1161462539(dwarf_get_relocation_info\(\))X
1161471 f
1161483867(more)X
116149576 1152(than)N
116150759(the)X
116151902(number)X
1161521192(of)X
1161531304(times)X
1161541522(indicated)X
1161551861(by)X
1161560 f
1161572013(dwarf_get_relocation_info_count\(\))X
1161581 f
1161593641(\(without)X
1161603956(an)X
116161576 1248(intervening)N
116162961(call)X
1161631097(to)X
1161640 f
1161651207(dwarf_reset_section_bytes\(\))X
1161661 f
1161672543(\))X
1161682590(results)X
1161692819(in)X
1161702901(a)X
1161712957(return)X
1161723169(of)X
1161730 f
1161743284(DW_DLV_ERROR)X
1161751 f
1161763880(once)X
116177576 1344(past)N
116178725(the)X
116179843(valid)X
1161801023(count.)X
1161811261(The)X
1161820 f
1161831434(error)X
1161841 f
1161851694(argument)X
1161862017(is)X
1161872090(set)X
1161882199(to)X
1161892281(indicate)X
1161902555(the)X
1161912673(error.)X
116192576 1536(Now)N
116193752(consider)X
1161941044(the)X
1161951162(returned-thru-pointer)X
1161961860(values)X
1161972085(for)X
1161980 f
1161992227(DW_DLV_OK)X
1162001 f
1162012679(.)X
1162020 f
116203576 1728(*elf_section_index)N
1162041 f
1162051460(is)X
1162061533(the)X
1162071651('elf)X
1162081783(section)X
1162092030(index')X
1162102255(of)X
1162112342(the)X
1162122460(section)X
1162132707(implied)X
1162142971(by)X
1162153071(this)X
1162163206(group)X
1162173413(of)X
1162183500(relocations.)X
1162190 f
116220576 2016(*elf_section_index_link)N
1162211 f
1162221700(is)X
1162231773(the)X
1162241891(section)X
1162252138(index)X
1162262336(of)X
1162272423(the)X
1162282541(section)X
1162292788(that)X
1162302928(these)X
1162313113(relocations)X
1162323485(apply)X
1162333683(to.)X
1162340 f
116235576 2208(*relocation_buffer_count)N
1162361 f
1162371758(is)X
1162381841(the)X
1162391969(number)X
1162402245(of)X
1162412343(array)X
1162422540(entries)X
1162432785(of)X
1162442883(relocation)X
1162453235(information)X
1162463644(in)X
1162473737(the)X
1162483866(array)X
116249576 2304(pointed)N
116250836(to)X
116251918(by)X
1162520 f
1162531046(*reldata_buffer)X
1162541 f
1162551786(.)X
1162560 f
116257576 2592(*reldata_buffer)N
1162581 f
1162591316(points)X
1162601531(to)X
1162611613(an)X
1162621709(array)X
1162631895(of)X
1162641982('struct)X
1162652207 0.1467(Dwarf_Relocation_Data_s')AX
1162663110(structures.)X
116267576 2784(The)N
116268721(version)X
116269977(2)X
1162701037(array)X
1162711223(information)X
1162721621(is)X
1162731694(as)X
1162741781(follows:)X
116275576 2976(enum)N
116276774(Dwarf_Rel_Type)X
1162771356({dwarf_drt_none,)X
116278896 3072 0.1750(dwarf_drt_data_reloc,)AN
116279896 3168(dwarf_drt_segment_rel,)N
116280896 3264(dwarf_drt_first_of_length_pair,)N
116281896 3360 0.1167(dwarf_drt_second_of_length_pair)AN
116282576 3456(};)N
116283576 3552(typedef)N
116284837(struct)X
1162851035(Dwarf_Relocation_Data_s)X
1162861931(*)X
1162871991(Dwarf_Relocation_Data;)X
116288576 3648(struct)N
116289774(Dwarf_Relocation_Data_s)X
1162901650({)X
116291736 3744(unsigned)N
1162921045(char)X
1162931344(drd_type;)X
1162941711(/*)X
1162951793(contains)X
1162962080(Dwarf_Rel_Type)X
1162972662(*/)X
116298736 3840(unsigned)N
1162991045(char)X
1163001344(drd_length;)X
1163011733(/*)X
1163021815(typically)X
1163032115(4)X
1163042175(or)X
1163052262(8)X
1163062322(*/)X
116307736 3936(Dwarf_Unsigned)N
1163081429(drd_offset;)X
1163091801(/*)X
1163101883(where)X
1163112100(the)X
1163122218(data)X
1163132372(to)X
1163142454(reloc)X
1163152635(is)X
1163162708(*/)X
116317736 4032(Dwarf_Unsigned)N
1163181429(drd_symbol_index;)X
116319576 4128(};)N
116320576 4416(The)N
1163210 f
116322776(Dwarf_Rel_Type)X
1163231 f
1163241495(enum)X
1163251720(is)X
1163261821(encoded)X
1163272137(\(via)X
1163282310(casts)X
1163292514(if)X
1163302611(necessary\))X
1163312999(into)X
1163323171(the)X
1163333317(single)X
1163343556(unsigned)X
1163353893(char)X
1163360 f
116337576 4512(drd_type)N
1163381 f
116339980(field)X
1163401147(to)X
1163411229(control)X
1163421476(the)X
1163431594(space)X
1163441793(used)X
1163451960(for)X
1163462074(this)X
1163472209(information)X
1163482607(\(keep)X
1163492806(the)X
1163502924(space)X
1163513123(to)X
1163523205(1)X
1163533265(byte\).)X
116354576 4704(The)N
116355728(unsigned)X
1163561044(char)X
1163570 f
1163581238(drd_length)X
1163591 f
1163601745(field)X
1163611919(holds)X
1163622119(the)X
1163632244(size)X
1163642396(in)X
1163652485(bytes)X
1163662681(of)X
1163672775(the)X
1163682901(field)X
1163693076(to)X
1163703166(be)X
1163713270(relocated.)X
1163723633(So)X
1163733745(for)X
1163743867(elf32)X
116375576 4800(object)N
116376819(formats)X
1163771111(with)X
1163781300(32)X
1163791427(bit)X
1163801557(apps,)X
1163810 f
1163821798(drd_length)X
1163831 f
1163842324(will)X
1163852494(be)X
1163862616(4.)X
1163872742(For)X
1163882899(objects)X
1163893172(with)X
1163903360(MIPS)X
1163913592(-64)X
1163923745(contents,)X
1163930 f
116394576 4896(drd_length)N
1163951 f
1163961077(will)X
1163971222(be)X
1163981320(8.)X
1163991422(For)X
1164001555(some)X
1164011746(dwarf)X
1164021956(64)X
1164032058(bit)X
1164042164(environments,)X
1164052642(such)X
1164062811(as)X
1164072900(ia64,)X
1164080 f
1164093108(drd_length)X
1164101 f
1164113610(is)X
1164123685(4)X
1164133747(for)X
1164143863(some)X
116415576 4992(relocations)N
116416948(\(file)X
1164171102(offsets,)X
1164181356(for)X
1164191470(example\))X
1164201789(and)X
1164211925(8)X
1164221985(for)X
1164232099(others)X
1164242315(\(run)X
1164252469(time)X
1164262631(addresses,)X
1164272979(for)X
1164283093(example\).)X
116429576 5184(If)N
1164300 f
116431678(drd_type)X
1164321 f
1164331082(is)X
1164340 f
1164351183(dwarf_drt_none)X
1164361 f
116437(,)S
1164381895(this)X
1164392030(is)X
1164402103(an)X
1164412199(unused)X
1164422446(slot)X
1164432581(and)X
1164442717(it)X
1164452781(should)X
1164463014(be)X
1164473110(ignored.)X
116448576 5376(If)N
1164490 f
116450681(drd_type)X
1164511 f
1164521088(is)X
1164530 f
1164541192(dwarf_drt_data_reloc)X
1164551 f
1164562175(this)X
1164572313(is)X
1164582390(an)X
1164592490(ordinary)X
1164602786(relocation.)X
1164613171(The)X
1164623320(relocation)X
1164633665(type)X
1164643827(means)X
116465576 5472(either)N
116466786(\(R_MIPS_64\))X
1164671266(or)X
1164681359(\(R_MIPS_32\))X
1164691838(\(or)X
1164701958(the)X
1164712082(like)X
1164722228(for)X
1164732348(the)X
1164742472(particular)X
1164752806(ABI.)X
1164763010(f\(CWdrd_length)X
1164770 f
1164783594(gives)X
1164793888(the)X
116480576 5568(length)N
116481924(of)X
1164821080(the)X
1164831284(field)X
1164841584(to)X
1164851740(be)X
1164861896(relocated.)X
1164872484(drd_offset)X
1164883024(is)X
1164893180(an)X
1164903336(offset)X
1164913684(\(of)X
1164923888(the)X
116493576 5664(value)N
116494878(to)X
1164951035(be)X
1164961192(relocated\))X
1164971733(in)X
1164981890(the)X
1164992095(section)X
1165002492(this)X
1165012745(relocation)X
1165023286(stuff)X
1165033587(is)X
1165043744(linked)X
116505576 5760(to.)N
116506830(drd_symbol_index)X
1165071660(is)X
1165081818(the)X
1165092024(symbol)X
1165102374(index)X
1165112676(\(if)X
1165122883(elf)X
1165133090(symbol)X
1165143441(indices)X
1165153840(were)X
116516576 5856(provided\))N
1165171070(or)X
1165181227(the)X
1165191432(handle)X
1165201781(to)X
1165211938(arbitrary)X
1165222431(information)X
1165233020(\(if)X
1165243225(that)X
1165253478(is)X
1165263635(what)X
1165273888(the)X
1165281 f
116529576 6164(rev)N
116530699(1.18,)X
116531879(10)X
116532979(Jan)X
1165331106(2002)X
1165342217(-)X
1165352264(10)X
1165362364(-)X
116537
11653811 p
116539%%Page: 11 11
1165400(Courier)xf 0 f
11654110 s 0 xH 0 xS 0 f
1165421 f
1165432217 384(-)N
1165442264(11)X
1165452364(-)X
1165460 f
116547576 768(caller)N
116548921(passed)X
1165491266(in)X
1165501419(to)X
1165511572(the)X
1165521774(relocation-creating)X
1165532744(dwarf)X
1165543042(calls\))X
1165553388(of)X
1165563542(the)X
1165573744(symbol)X
116558576 864(that)N
116559816(the)X
1165601008(relocation)X
1165611536(is)X
1165621680(relative)X
1165632112(to.)X
116564576 1152(When)N
116565843(drd_type)X
1165661302(is)X
1165671473(dwarf_drt_first_of_length_pair)X
1165682988(the)X
1165693208(next)X
1165703476(data)X
1165713744(record)X
116572576 1248(will)N
116573838(be)X
1165741004(drt_second_of_length_pair)X
1165752274(and)X
1165762487(the)X
1165772700(drd_offset)X
1165783249(of)X
1165793414(the)X
1165803627(two)X
1165813840(data)X
116582576 1344(records)N
116583979(will)X
1165841238(match.)X
1165851641(The)X
1165861852(relevant)X
1165872303('offset')X
1165882754(in)X
1165892917(the)X
1165903128(section)X
1165913532(this)X
1165923792(reloc)X
116593576 1440(applies)N
116594960(to)X
1165951104(should)X
1165961440(contain)X
1165971824(a)X
1165981920(symbolic)X
1165992352(pair)X
1166002592(like)X
116601944 1536(.word)N
1166021376(second_symbol)X
1166032048(-)X
1166042144(first_symbol)X
116605576 1632(to)N
116606732(generate)X
1166071176(a)X
1166081284(length.)X
1166091728(drd_length)X
1166102268(gives)X
1166112568(the)X
1166122772(length)X
1166133120(of)X
1166143276(the)X
1166153480(field)X
1166163780(to)X
1166173936(be)X
116618576 1728(relocated.)N
116619576 1920(drt_segment_rel)N
1166201424(means)X
1166211792(\(R_MIPS_SCN_DISP\))X
1166222736(is)X
1166232960(the)X
1166243232(real)X
1166253552(relocation)X
116626576 2016(\(R_MIPS_SCN_DISP)N
1166271419(applies)X
1166281830(to)X
1166292001(exception)X
1166302508(tables)X
1166312871(and)X
1166323090(this)X
1166333356(part)X
1166343622(may)X
1166353840(need)X
116636576 2112(further)N
1166371008(work\).)X
1166381440(drd_length)X
1166392016(gives)X
1166402352(the)X
1166412592(length)X
1166422976(of)X
1166433168(the)X
1166443408(field)X
1166453744(to)X
1166463936(be)X
116647576 2208(relocated.)N
116648576 2448(The)N
116649824(memory)X
1166501216(space)X
1166511560(of)X
1166521761(the)X
1166532010(section)X
1166542451(byte)X
1166552748(stream)X
1166563141(is)X
1166573342(freed)X
1166583687(by)X
1166593888(the)X
116660576 2544(dwarf_producer_finish\(\))N
1166611960(call)X
1166622384(\(or)X
1166632760(would)X
1166643232(be)X
1166653560(if)X
1166663888(the)X
116667576 2640(dwarf_producer_finish\(\))N
1166681734(was)X
1166691932(actually)X
1166702370(correct\),)X
1166712856(along)X
1166723150(with)X
1166733396(all)X
1166743594(the)X
1166753792(other)X
116676576 2736(space)N
116677864(in)X
1166781008(use)X
1166791200(with)X
1166801440(that)X
1166811680(Dwarf_P_Debug.)X
1166823 f
116683576 2976(5.1.7)N
116684776 0.1490(dwarf_reset_section_bytes\(\))AX
1166850 f
116686576 3264(void)N
116687816(dwarf_reset_section_bytes\()X
116688960 3360(Dwarf_P_Debug)N
1166891632(dbg)X
116690960 3456(\))N
1166911 f
116692576 3600(The)N
116693738(function)X
1166940 f
1166951070(dwarf_reset_section_bytes\(\))X
1166961 f
1166972403(is)X
1166982493(used)X
1166992678(to)X
1167002778(reset)X
1167012968(the)X
1167023104(internal)X
1167033387(information)X
1167043803(so)X
1167053912(that)X
1167060 f
116707576 3696(dwarf_get_section_bytes\(\))N
1167081 f
1167091818(will)X
1167101964(begin)X
1167112164(\(on)X
1167122293(the)X
1167132413(next)X
1167142572(call\))X
1167152736(at)X
1167162815(the)X
1167172934(initial)X
1167183141(dwarf)X
1167193350(section)X
1167203598(again.)X
1167213833(It)X
1167223903(also)X
116723576 3792(resets)N
116724797(so)X
116725906(that)X
1167261064(calls)X
1167271249(to)X
1167280 f
1167291377(dwarf_get_relocation_info\(\))X
1167301 f
1167312711(will)X
1167322873(begin)X
1167333089(again)X
1167343301(at)X
1167353398(the)X
1167363535(initial)X
1167373760(array)X
1167383965(of)X
116739576 3888(relocation)N
116740917(information.)X
116741576 4080(Some)N
116742790(dwarf)X
1167431010(producers)X
1167441359(need)X
1167451543(to)X
1167461637(be)X
1167471745(able)X
1167481911(to)X
1167492005(run)X
1167502144(thru)X
1167512305(the)X
1167520 f
1167532463(dwarf_get_section_bytes\(\))X
1167541 f
1167553696(and/or)X
1167563934(the)X
1167570 f
116758576 4176(dwarf_get_relocation_info\(\))N
1167591 f
1167601921(calls)X
1167612116(more)X
1167622329(than)X
1167632515(once)X
1167642715(and)X
1167652879(this)X
1167663042(call)X
1167673206(makes)X
1167683459(additional)X
1167693827(passes)X
116770576 4272(possible.)N
116771912(The)X
1167721071(set)X
1167731195(of)X
1167741297(Dwarf_Ptr)X
1167751671(values)X
1167761911(returned)X
1167772214(is)X
1167782302(identical)X
1167792613(to)X
1167802710(the)X
1167812843(set)X
1167822967(returned)X
1167833270(by)X
1167843385(the)X
1167853518(first)X
1167863682(pass.)X
1167873895(It)X
1167883979(is)X
116789576 4368(acceptable)N
116790996(to)X
1167911138(call)X
1167921334(this)X
1167931529(before)X
1167941815(finishing)X
1167952179(a)X
1167962295(pass)X
1167972512(of)X
1167980 f
1167992686(dwarf_get_section_bytes\(\))X
1168001 f
1168013965(or)X
1168020 f
116803576 4464(dwarf_get_relocation_info\(\))N
1168041 f
1168051911(calls.)X
1168062137(No)X
1168072274(errors)X
1168082501(are)X
1168092639(possible)X
1168102940(as)X
1168113046(this)X
1168123200(just)X
1168133355(resets)X
1168143578(some)X
1168153787(internal)X
116816576 4560(pointers.)N
116817894(It)X
116818963(is)X
1168191036(unwise)X
1168201283(to)X
1168211365(call)X
1168221501(this)X
1168231636(before)X
1168240 f
1168251890(dwarf_transform_to_disk_form\(\))X
1168261 f
1168273370(has)X
1168283497(been)X
1168293669(called.)X
1168303 f
116831576 4848(5.1.8)N
116832776(dwarf_producer_finish\(\))X
1168330 f
116834576 4992(Dwarf_Unsigned)N
1168351296(dwarf_producer_finish\()X
116836960 5088(Dwarf_P_Debug)N
1168371632(dbg,)X
116838960 5184(Dwarf_Error*)N
1168391584(error\))X
1168401 f
116841576 5328(The)N
116842734(function)X
1168430 f
1168441062(dwarf_producer_finish\(\))X
1168451 f
1168462219(should)X
1168472465(be)X
1168482574(called)X
1168492799(after)X
1168502980(all)X
1168513093(the)X
1168523224(bytes)X
1168533426(of)X
1168543526(data)X
1168553694(have)X
1168563880(been)X
116857576 5424(copied)N
116858815(somewhere)X
1168591206(\(normally)X
1168601547(the)X
1168611670(bytes)X
1168621863(are)X
1168631986(written)X
1168642237(to)X
1168652323(disk\).)X
1168662547(It)X
1168672620(frees)X
1168682801(all)X
1168692905(dynamic)X
1168703205(space)X
1168713408(allocated)X
1168723722(for)X
1168730 f
1168743868(dbg)X
1168751 f
116876(,)S
116877576 5520(include)N
116878833(space)X
1168791033(for)X
1168801148(the)X
1168811267(structure)X
1168821569(pointed)X
1168831830(to)X
1168841913(by)X
1168850 f
1168862043(dbg)X
1168871 f
116888(.)S
1168892249(This)X
1168902413(should)X
1168912648(not)X
1168922772(be)X
1168932870(called)X
1168943084(till)X
1168953194(the)X
1168963314(data)X
1168973470(have)X
1168983644(been)X
1168993818(copied)X
116900576 5616(or)N
116901664(written)X
116902912(to)X
116903995(disk)X
1169041149(or)X
1169051237(are)X
1169061357(no)X
1169071458(longer)X
1169081684(of)X
1169091772(interest.)X
1169102069(It)X
1169112139(returns)X
1169122382(non-zero)X
1169132688(if)X
1169142757(successful,)X
1169153127(and)X
1169160 f
1169173291(DW_DLV_NOCOUNT)X
1169181 f
1169193983(if)X
116920576 5712(there)N
116921757(is)X
116922830(an)X
116923926(error.)X
116924576 6164(rev)N
116925699(1.18,)X
116926879(10)X
116927979(Jan)X
1169281106(2002)X
1169292217(-)X
1169302264(11)X
1169312364(-)X
116932
11693312 p
116934%%Page: 12 12
1169350(Courier)xf 0 f
11693610 s 0 xH 0 xS 0 f
1169371 f
1169382217 384(-)N
1169392264(12)X
1169402364(-)X
1169413 f
11694211 s
116943576 768(5.2)N
116944730(Debugging)X
1169451158(Information)X
1169461639(Entry)X
1169471881(Creation)X
1169481 f
11694910 s
116950576 912(The)N
116951723(functions)X
1169521043(in)X
1169531127(this)X
1169541264(section)X
1169551513(add)X
1169561651(new)X
1169570 f
1169581835(DIE)X
1169591 f
116960(s)S
1169612032(to)X
1169622116(the)X
1169632236(object,)X
1169642474(and)X
1169652612(also)X
1169662763(the)X
1169672883(relationships)X
1169683314(among)X
1169693555(the)X
1169700 f
1169713704(DIE)X
1169721 f
1169733871(to)X
1169743956(be)X
116975576 1008(specified)N
116976889(by)X
116977992(linking)X
1169781241(them)X
1169791424(up)X
1169801527(as)X
1169811617(parents,)X
1169821892(children,)X
1169832198(left)X
1169842327(or)X
1169852416(right)X
1169862589(siblings)X
1169872859(of)X
1169882948(each)X
1169893118(other.)X
1169903345(In)X
1169913434(addition,)X
1169923738(there)X
1169933921(is)X
1169943996(a)X
116995576 1104(function)N
116996863(that)X
1169971003(marks)X
1169981219(the)X
1169991337(root)X
1170001486(of)X
1170011573(the)X
1170021691(graph)X
1170031894(thus)X
1170042047(created.)X
1170053 f
117006576 1344(5.2.1)N
117007776(dwarf_add_die_to_debug\(\))X
1170080 f
117009576 1488(Dwarf_Unsigned)N
1170101296(dwarf_add_die_to_debug\()X
117011960 1584(Dwarf_P_Debug)N
1170121632(dbg,)X
117013960 1680(Dwarf_P_Die)N
1170141536(first_die,)X
117015960 1776(Dwarf_Error)N
1170161536(*error\))X
1170171 f
117018576 1920(The)N
117019734(function)X
1170200 f
1170211062(dwarf_add_die_to_debug\(\))X
1170221 f
1170232267(indicates)X
1170242585(to)X
1170250 f
1170262708(Libdwarf)X
1170271 f
1170283126(the)X
1170293258(root)X
1170300 f
1170313449(DIE)X
1170321 f
1170333627(of)X
1170343728(the)X
1170350 f
1170363888(DIE)X
1170371 f
117038576 2016(graph)N
117039781(that)X
117040923(has)X
1170411051(been)X
1170421224(built)X
1170431391(so)X
1170441483(far.)X
1170451634(It)X
1170461704(is)X
1170471778(intended)X
1170482075(to)X
1170492158(mark)X
1170502344(the)X
1170512463(compilation-unit)X
1170520 f
1170533045(DIE)X
1170541 f
1170553210(for)X
1170563325(the)X
1170573444(object)X
1170583661(represented)X
117059576 2112(by)N
1170600 f
117061704(dbg)X
1170621 f
117063(.)S
117064908(The)X
1170651053(root)X
1170660 f
1170671230(DIE)X
1170681 f
1170691394(is)X
1170701467(specified)X
1170711777(by)X
1170720 f
1170731905(first_die)X
1170741 f
117075(.)S
117076576 2304(It)N
117077645(returns)X
1170780 f
117079916(0)X
1170801 f
117081984(on)X
1170821084(success,)X
1170831365(and)X
1170840 f
1170851529(DW_DLV_NOCOUNT)X
1170861 f
1170872221(on)X
1170882321(error.)X
1170893 f
117090576 2544(5.2.2)N
117091776(dwarf_new_die\(\))X
1170920 f
117093576 2688(Dwarf_P_Die)N
1170941152(dwarf_new_die\()X
117095960 2784(Dwarf_P_Debug)N
1170961632(dbg,)X
117097960 2880(Dwarf_Tag)N
1170981440(new_tag,)X
117099960 2976(Dwarf_P_Die)N
1171001536(parent,)X
117101960 3072(Dwarf_P_Die)N
1171021536(child,)X
117103960 3168(Dwarf_P_Die)N
1171041536(left_sibling,)X
117105960 3264(Dwarf_P_Die)N
1171061536(right_sibling,)X
117107960 3360(Dwarf_Error)N
1171081536(*error\))X
1171091 f
117110576 3504(The)N
117111736(function)X
1171120 f
1171131066(dwarf_new_die\(\))X
1171141 f
1171151841(creates)X
1171162101(a)X
1171172173(new)X
1171180 f
1171192371(DIE)X
1171201 f
1171212551(with)X
1171222729(its)X
1171232840(parent,)X
1171243097(child,)X
1171253313(left)X
1171263456(sibling,)X
1171273729(and)X
1171283881(right)X
117129576 3600(sibling)N
1171300 f
117131846(DIE)X
1171321 f
117133(s)S
1171341046(specified)X
1171351361(by)X
1171360 f
1171371494(parent)X
1171381 f
117139(,)S
1171400 f
1171411855(child)X
1171421 f
117143(,)S
1171440 f
1171452168(left_sibling)X
1171461 f
117147(,)S
1171482788(and)X
1171490 f
1171502956(right_sibling)X
1171511 f
117152(,)S
1171533624(respectively.)X
117154576 3696(There)N
117155785(is)X
117156859(no)X
117157960(requirement)X
1171581369(that)X
1171591510(all)X
1171601611(of)X
1171611699(these)X
1171620 f
1171631913(DIE)X
1171641 f
117165(s)S
1171662109(be)X
1171672206(specified,)X
1171682537(i.e.)X
1171692656(any)X
1171702793(of)X
1171712881(these)X
1171723067(descriptors)X
1171733440(may)X
1171743599(be)X
1171750 f
1171763724(NULL)X
1171771 f
117178(.)S
1171793978(If)X
117180576 3792(none)N
117181794(is)X
117182909(specified,)X
1171831281(this)X
1171841458(will)X
1171851644(be)X
1171861782(an)X
1171871920(isolated)X
1171880 f
1171892258(DIE)X
1171901 f
117191(.)S
1171922503(A)X
1171930 f
1171942650(DIE)X
1171951 f
1171962855(is)X
1171972969(transformed)X
1171983418(to)X
1171993541(disk)X
1172003735(form)X
1172013952(by)X
1172020 f
117203576 3888(dwarf_transform_to_disk_form\(\))N
1172041 f
1172052074(only)X
1172062274(if)X
1172072381(there)X
1172082600(is)X
1172092711(a)X
1172102805(path)X
1172113001(from)X
1172123215(the)X
1172130 f
1172143400(DIE)X
1172151 f
1172163603(specified)X
1172173952(by)X
1172180 f
117219576 3984(dwarf_add_die_to_debug)N
1172201 f
1172211652(to)X
1172221734(it.)X
1172231838(This)X
1172242000(function)X
1172252287(returns)X
1172260 f
1172272558(DW_DLV_BADADDR)X
1172281 f
1172293250(on)X
1172303350(error.)X
1172310 f
117232576 4176(new_tag)N
1172331 f
117234951(is)X
1172351043(the)X
1172361180(tag)X
1172371317(which)X
1172381552(is)X
1172391644(given)X
1172401861(to)X
1172411962(the)X
1172422099(new)X
1172430 f
1172442300(DIE)X
1172451 f
117246(.)S
1172470 f
1172482579(parent)X
1172491 f
117250(,)S
1172510 f
1172522954(child)X
1172531 f
117254(,)S
1172550 f
1172563281(left_sibling)X
1172571 f
117258(,)S
1172593916(and)X
1172600 f
117261576 4272(right_sibling)N
1172621 f
1172631235(are)X
1172641369(pointers)X
1172651662(to)X
1172661759(establish)X
1172672074(links)X
1172682264(to)X
1172692361(existing)X
1172700 f
1172712677(DIE)X
1172721 f
117273(s.)S
1172742927(Only)X
1172753122(one)X
1172763273(of)X
1172770 f
1172783402(parent)X
1172791 f
117280(,)S
1172810 f
1172823772(child)X
1172831 f
117284(,)S
1172850 f
117286576 4368(left_sibling)N
1172871 f
117288(,)S
1172891196(and)X
1172900 f
1172911364(right_sibling)X
1172921 f
1172932012(may)X
1172942174(be)X
1172952274(non-NULL.)X
1172962699(If)X
1172970 f
1172982805(parent)X
1172991 f
1173003117(\()X
1173010 f
1173023144(child)X
1173031 f
117304(\))S
1173053436(is)X
1173063514(given,)X
1173073737(the)X
1173080 f
1173093888(DIE)X
1173101 f
117311576 4464(is)N
117312663(linked)X
117313897(into)X
1173141055(the)X
1173151187(list)X
1173161318(after)X
1173171500(\(before\))X
1173181794(the)X
1173190 f
1173201954(DIE)X
1173211 f
1173222132(pointed)X
1173232406(to.)X
1173242542(If)X
1173250 f
1173262658(left_sibling)X
1173271 f
1173283268(\()X
1173290 f
1173303295(right_sibling)X
1173311 f
117332(\))S
1173333979(is)X
117334576 4560(given,)N
117335794(the)X
1173360 f
117337940(DIE)X
1173381 f
1173391104(is)X
1173401177(linked)X
1173411397(into)X
1173421541(the)X
1173431659(list)X
1173441776(after)X
1173451944(\(before\))X
1173462224(the)X
1173470 f
1173482370(DIE)X
1173491 f
1173502534(pointed)X
1173512794(to.)X
117352576 4752(To)N
117353701(add)X
117354853(attributes)X
1173551188(to)X
1173561287(the)X
1173571422(new)X
1173580 f
1173591621(DIE)X
1173601 f
117361(,)S
1173621822(use)X
1173631966(the)X
1173640 f
1173652129(Attribute)X
1173662626(Creation)X
1173671 f
1173683047(functions)X
1173693382(defined)X
1173703660(in)X
1173713759(the)X
1173723894(next)X
117373576 4848(section.)N
1173743 f
117375576 5088(5.2.3)N
117376776(dwarf_die_link\(\))X
1173771 f
117378576 6164(rev)N
117379699(1.18,)X
117380879(10)X
117381979(Jan)X
1173821106(2002)X
1173832217(-)X
1173842264(12)X
1173852364(-)X
117386
11738713 p
117388%%Page: 13 13
1173890(Courier)xf 0 f
11739010 s 0 xH 0 xS 0 f
1173911 f
1173922217 384(-)N
1173932264(13)X
1173942364(-)X
1173950 f
117396576 768(Dwarf_P_Die)N
1173971152(dwarf_die_link\()X
117398960 864(Dwarf_P_Die)N
1173991536(die,)X
117400960 960(Dwarf_P_Die)N
1174011536(parent,)X
117402960 1056(Dwarf_P_Die)N
1174031536(child,)X
117404960 1152(Dwarf_P_Die)N
1174051536(left-sibling,)X
117406960 1248(Dwarf_P_Die)N
1174071536(right_sibling,)X
117408960 1344(Dwarf_Error)N
1174091536(*error\))X
1174101 f
117411576 1488(The)N
117412741(function)X
1174130 f
1174141076(dwarf_die_link\(\))X
1174151 f
1174161904(links)X
1174172099(an)X
1174182216(existing)X
1174190 f
1174202538(DIE)X
1174211 f
1174222723(described)X
1174233072(by)X
1174243193(the)X
1174253332(given)X
1174260 f
1174273579(die)X
1174281 f
1174293764(to)X
1174303867(other)X
117431576 1584(existing)N
1174320 f
117433886(DIE)X
1174341 f
117435(s.)S
1174361130(The)X
1174371284(given)X
1174380 f
1174391518(die)X
1174401 f
1174411690(can)X
1174421830(be)X
1174431934(linked)X
1174442162(to)X
1174452252(a)X
1174462316(parent)X
1174470 f
1174482573(DIE)X
1174491 f
117450(,)S
1174512765(a)X
1174522829(child)X
1174530 f
1174543045(DIE)X
1174551 f
117456(,)S
1174573237(a)X
1174583301(left)X
1174593436(sibling)X
1174600 f
1174613709(DIE)X
1174621 f
117463(,)S
1174643901(or)X
1174653996(a)X
117466576 1680(right)N
117467813(sibling)X
1174680 f
1174691144(DIE)X
1174701 f
1174711374(by)X
1174721540(specifying)X
1174731960(non-NULL)X
1174740 f
1174752435(parent)X
1174761 f
117477(,)S
1174780 f
1174792858(child)X
1174801 f
117481(,)S
1174820 f
1174833233(left_sibling)X
1174841 f
117485(,)S
1174863916(and)X
1174870 f
117488576 1776(right_sibling)N
1174891256(Dwarf_P_Die)X
1174901 f
1174911812(descriptors.)X
1174922232(It)X
1174932309(returns)X
1174942559(the)X
1174952684(given)X
1174960 f
1174972917(Dwarf_P_Die)X
1174981 f
1174993472(descriptor,)X
1175000 f
1175013868(die)X
1175021 f
117503(,)S
117504576 1872(on)N
117505676(success,)X
117506957(and)X
1175070 f
1175081121(DW_DLV_BADADDR)X
1175091 f
1175101813(on)X
1175111913(error.)X
117512576 2064(Only)N
117513774(one)X
117514929(of)X
1175150 f
1175161063(parent)X
1175171 f
117518(,)S
1175190 f
1175201438(child)X
1175211 f
117522(,)S
1175230 f
1175241765(left_sibling)X
1175251 f
117526(,)S
1175272400(and)X
1175280 f
1175292583(right_sibling)X
1175301 f
1175313246(may)X
1175323423(be)X
1175333538(non-NULL.)X
1175343978(If)X
1175350 f
117536576 2160(parent)N
1175371 f
117538906(\()X
1175390 f
117540933(child)X
1175411 f
117542(\))S
1175431242(is)X
1175441337(given,)X
1175451577(the)X
1175460 f
1175471745(DIE)X
1175481 f
1175491931(is)X
1175502026(linked)X
1175512268(into)X
1175522434(the)X
1175532574(list)X
1175542712(after)X
1175552901(\(before\))X
1175563202(the)X
1175570 f
1175583369(DIE)X
1175591 f
1175603554(pointed)X
1175613835(to.)X
1175623978(If)X
1175630 f
117564576 2256(left_sibling)N
1175651 f
1175661182(\()X
1175670 f
1175681209(right_sibling)X
1175691 f
117570(\))S
1175711890(is)X
1175721973(given,)X
1175732202(the)X
1175740 f
1175752359(DIE)X
1175761 f
1175772534(is)X
1175782618(linked)X
1175792849(into)X
1175803004(the)X
1175813133(list)X
1175823261(after)X
1175833440(\(before\))X
1175843731(the)X
1175850 f
1175863888(DIE)X
1175871 f
117588576 2352(pointed)N
117589843(to.)X
117590972(Non-NULL)X
1175911378(links)X
1175921560(overwrite)X
1175931895(the)X
1175942020(corresponding)X
1175952506(links)X
1175962688(the)X
1175972813(given)X
1175980 f
1175993046(die)X
1176001 f
1176013217(may)X
1176023382(have)X
1176033560(had)X
1176043702(before)X
1176053934(the)X
117606576 2448(call)N
117607712(to)X
1176080 f
117609822(dwarf_die_link\(\))X
1176101 f
1176111610(.)X
1176123 f
11761311 s
117614576 2688(5.3)N
117615730(Attribute)X
1176161103(Creation)X
1176171 f
11761810 s
117619576 2832(The)N
117620725(functions)X
1176211047(in)X
1176221133(this)X
1176231272(section)X
1176241523(add)X
1176251663(attributes)X
1176261985(to)X
1176272072(a)X
1176280 f
1176292161(DIE)X
1176301 f
117631(.)S
1176322370(These)X
1176332587(functions)X
1176342910(return)X
1176353127(a)X
1176360 f
1176373216(Dwarf_P_Attribute)X
1176381 f
117639576 2928(descriptor)N
117640929(that)X
1176411081(represents)X
1176421439(the)X
1176431569(attribute)X
1176441867(added)X
1176452090(to)X
1176462183(the)X
1176472312(given)X
1176480 f
1176492549(DIE)X
1176501 f
117651(.)S
1176522764(In)X
1176532862(most)X
1176543048(cases)X
1176553249(the)X
1176563378(return)X
1176573601(value)X
1176583806(is)X
1176593890(only)X
117660576 3024(useful)N
117661792(to)X
117662874(determine)X
1176631215(if)X
1176641284(an)X
1176651380(error)X
1176661557(occurred.)X
117667576 3216(Some)N
117668789(of)X
117669887(the)X
1176701016(attributes)X
1176711345(have)X
1176721528(values)X
1176731764(that)X
1176741915(are)X
1176752045(relocatable.)X
1176762469(They)X
1176772665(need)X
1176782848(a)X
1176792915(symbol)X
1176803181(with)X
1176813354(respect)X
1176823613(to)X
1176833706(which)X
1176843934(the)X
117685576 3312(linker)N
117686785(will)X
117687931(perform)X
1176881212(relocation.)X
1176891595(This)X
1176901759(symbol)X
1176912016(is)X
1176922091(specified)X
1176932403(by)X
1176942505(means)X
1176952732(of)X
1176962821(an)X
1176972919(index)X
1176983119(into)X
1176993265(the)X
1177003385(Elf)X
1177013505(symbol)X
1177023761(table)X
1177033938(for)X
117704576 3408(the)N
117705694(object)X
117706910(\(of)X
1177071024(course,)X
1177081274(the)X
1177091392(symbol)X
1177101647(index)X
1177111845(can)X
1177121977(be)X
1177132073(more)X
1177142258(general)X
1177152515(than)X
1177162673(an)X
1177172769(index\).)X
1177183 f
117719576 3648(5.3.1)N
117720776(dwarf_add_AT_location_expr\(\))X
1177210 f
117722576 3792(Dwarf_P_Attribute)N
1177231440(dwarf_add_AT_location_expr\()X
117724960 3888(Dwarf_P_Debug)N
1177251632(dbg,)X
117726960 3984(Dwarf_P_Die)N
1177271536(ownerdie,)X
117728960 4080(Dwarf_Half)N
1177291488(attr,)X
117730960 4176(Dwarf_P_Expr)N
1177311584(loc_expr,)X
117732960 4272(Dwarf_Error)N
1177331536(*error\))X
1177341 f
117735576 4416(The)N
117736722(function)X
1177370 f
1177381038(dwarf_add_AT_location_expr\(\))X
1177391 f
1177402423(adds)X
1177412591(the)X
1177422711(attribute)X
1177433000(specified)X
1177443312(by)X
1177450 f
1177463442(attr)X
1177471 f
1177483656(to)X
1177493740(the)X
1177500 f
1177513888(DIE)X
1177521 f
117753576 4512(descriptor)N
117754924(given)X
1177551129(by)X
1177560 f
1177571264(ownerdie)X
1177581 f
117759(.)S
1177601715(The)X
1177611867(attribute)X
1177622161(should)X
1177632401(be)X
1177642504(one)X
1177652647(that)X
1177662794(has)X
1177672928(a)X
1177682991(location)X
1177693275(expression)X
1177703644(as)X
1177713737(its)X
1177723838(value.)X
117773576 4608(The)N
117774726(location)X
1177751009(expression)X
1177761377(that)X
1177771522(is)X
1177781600(the)X
1177791723(value)X
1177801922(is)X
1177812000(represented)X
1177822396(by)X
1177832501(the)X
1177840 f
1177852652(Dwarf_P_Expr)X
1177861 f
1177873253(descriptor)X
1177880 f
1177893628(loc_expr)X
1177901 f
117791(.)S
117792576 4704(It)N
117793653(returns)X
117794904(the)X
1177950 f
1177961058(Dwarf_P_Attribute)X
1177971 f
1177981901(descriptor)X
1177992249(for)X
1178002370(the)X
1178012495(attribute)X
1178022789(given,)X
1178033014(on)X
1178043121(success.)X
1178053429(On)X
1178063554(error)X
1178073738(it)X
1178083809(returns)X
1178090 f
117810576 4800(DW_DLV_BADADDR)N
1178111 f
117812(.)S
1178133 f
117814576 5040(5.3.2)N
117815776(dwarf_add_AT_name\(\))X
1178160 f
117817576 5184(Dwarf_P_Attribute)N
1178181440(dwarf_add_AT_name\()X
117819960 5280(Dwarf_P_Die)N
1178201536(ownerdie,)X
117821960 5376(char)N
1178221200(*name,)X
117823960 5472(Dwarf_Error)N
1178241536(*error\))X
1178251 f
117826576 5616(The)N
117827745(function)X
1178280 f
1178291084(dwarf_add_AT_name\(\))X
1178301 f
1178312061(adds)X
1178322253(the)X
1178332396(string)X
1178342623(specified)X
1178352958(by)X
1178360 f
1178373111(name)X
1178381 f
1178393348(as)X
1178403460(the)X
1178413603(value)X
1178423822(of)X
1178433934(the)X
1178440 f
117845576 5712(DW_AT_name)N
1178461 f
1178471105(attribute)X
1178481420(for)X
1178491562(the)X
1178501708(given)X
1178510 f
1178521962(DIE)X
1178531 f
117854(,)S
1178550 f
1178562202(ownerdie)X
1178571 f
117858(.)S
1178592674(It)X
1178602771(returns)X
1178613042(the)X
1178620 f
1178633216(Dwarf_P_attribute)X
1178641 f
117865576 5808(descriptor)N
117866917(for)X
1178671031(the)X
1178680 f
1178691177(DW_AT_name)X
1178701 f
1178711677(attribute)X
1178721964(on)X
1178732064(success.)X
1178742365(On)X
1178752483(error,)X
1178762680(it)X
1178772744(returns)X
1178780 f
1178793015(DW_DLV_BADADDR)X
1178801 f
117881(.)S
117882576 6164(rev)N
117883699(1.18,)X
117884879(10)X
117885979(Jan)X
1178861106(2002)X
1178872217(-)X
1178882264(13)X
1178892364(-)X
117890
11789114 p
117892%%Page: 14 14
1178930(Courier)xf 0 f
11789410 s 0 xH 0 xS 0 f
1178951 f
1178962217 384(-)N
1178972264(14)X
1178982364(-)X
1178993 f
117900576 768(5.3.3)N
117901776(dwarf_add_AT_comp_dir\(\))X
1179020 f
117903576 912(Dwarf_P_Attribute)N
1179041440(dwarf_add_AT_comp_dir\()X
117905960 1008(Dwarf_P_Die)N
1179061536(ownerdie,)X
117907960 1104(char)N
1179081200(*current_working_directory,)X
117909960 1200(Dwarf_Error)N
1179101536(*error\))X
1179111 f
117912576 1344(The)N
117913876(function)X
1179140 f
1179151346(dwarf_add_AT_comp_dir\(\))X
1179161 f
1179172645(adds)X
1179182967(the)X
1179193240(string)X
1179203598(given)X
1179213952(by)X
1179220 f
117923576 1440(current_working_directory)N
1179241 f
1179251819(as)X
1179261928(the)X
1179272068(value)X
1179282284(of)X
1179292393(the)X
1179300 f
1179312561(DW_AT_comp_dir)X
1179321 f
1179333275(attribute)X
1179343584(for)X
1179353720(the)X
1179360 f
1179373888(DIE)X
1179381 f
117939576 1536(described)N
117940907(by)X
1179411010(the)X
1179421131(given)X
1179430 f
1179441361(ownerdie)X
1179451 f
117946(.)S
1179471809(It)X
1179481882(returns)X
1179492129(the)X
1179500 f
1179512279(Dwarf_P_Attribute)X
1179521 f
1179533119(for)X
1179543237(this)X
1179553376(attribute)X
1179563667(on)X
1179573771(success.)X
117958576 1632(On)N
117959694(error,)X
117960891(it)X
117961955(returns)X
1179620 f
1179631226(DW_DLV_BADADDR)X
1179641 f
117965(.)S
1179663 f
117967576 1872(5.3.4)N
117968776(dwarf_add_AT_producer\(\))X
1179690 f
117970576 2016(Dwarf_P_Attribute)N
1179711440(dwarf_add_AT_producer\()X
117972960 2112(Dwarf_P_Die)N
1179731536(ownerdie,)X
117974960 2208(char)N
1179751200(*producer_string,)X
117976960 2304(Dwarf_Error)N
1179771536(*error\))X
1179781 f
117979576 2448(The)N
117980732(function)X
1179810 f
1179821058(dwarf_add_AT_producer\(\))X
1179831 f
1179842213(adds)X
1179852391(the)X
1179862520(string)X
1179872733(given)X
1179882943(by)X
1179890 f
1179903083(producer_string)X
1179911 f
1179923835(as)X
1179933934(the)X
117994576 2544(value)N
117995805(of)X
117996927(the)X
1179970 f
1179981108(DW_AT_producer)X
1179991 f
1180001835(attribute)X
1180012156(for)X
1180022304(the)X
1180030 f
1180042484(DIE)X
1180051 f
1180062682(given)X
1180072914(by)X
1180080 f
1180093076(ownerdie)X
1180101 f
118011(.)S
1180123554(It)X
1180133657(returns)X
1180143934(the)X
1180150 f
118016576 2640(Dwarf_P_Attribute)N
1180171 f
1180181455(descriptor)X
1180191839(representing)X
1180202299(this)X
1180212478(attribute)X
1180222809(on)X
1180232953(success.)X
1180243298(On)X
1180253460(error,)X
1180263701(it)X
1180273809(returns)X
1180280 f
118029576 2736(DW_DLV_BADADDR)N
1180301 f
118031(.)S
1180323 f
118033576 2976(5.3.5)N
118034776(dwarf_add_AT_const_value_signedint\(\))X
1180350 f
118036576 3120(Dwarf_P_Attribute)N
1180371440(dwarf_add_AT_const_value_signedint\()X
118038960 3216(Dwarf_P_Die)N
1180391536(ownerdie,)X
118040960 3312(Dwarf_Signed)N
1180411584(signed_value,)X
118042960 3408(Dwarf_Error)N
1180431536(*error\))X
1180441 f
118045576 3552(The)N
118046744(function)X
1180470 f
1180481082(dwarf_add_AT_const_value_signedint\(\))X
1180491 f
1180502873(adds)X
1180513064(the)X
1180523206(given)X
1180530 f
1180543456(Dwarf_Signed)X
1180551 f
118056576 3648(value)N
1180570 f
118058802(signed_value)X
1180591 f
1180601402(as)X
1180611493(the)X
1180621615(value)X
1180631813(of)X
1180641904(the)X
1180650 f
1180662054(DW_AT_const_value)X
1180671 f
1180682894(attribute)X
1180693185(for)X
1180703303(the)X
1180710 f
1180723453(DIE)X
1180731 f
1180743621(described)X
1180753952(by)X
118076576 3744(the)N
118077705(given)X
1180780 f
118079942(ownerdie)X
1180801 f
118081(.)S
1180821397(It)X
1180831477(returns)X
1180841731(the)X
1180850 f
1180861888(Dwarf_P_Attribute)X
1180871 f
1180882735(descriptor)X
1180893087(for)X
1180903213(this)X
1180913360(attribute)X
1180923659(on)X
1180933771(success.)X
118094576 3840(On)N
118095694(error,)X
118096891(it)X
118097955(returns)X
1180980 f
1180991226(DW_DLV_BADADDR)X
1181001 f
118101(.)S
1181023 f
118103576 4080(5.3.6)N
118104776(dwarf_add_AT_const_value_unsignedint\(\))X
1181050 f
118106576 4224(Dwarf_P_Attribute)N
1181071440(dwarf_add_AT_const_value_unsignedint\()X
118108960 4320(Dwarf_P_Die)N
1181091536(ownerdie,)X
118110960 4416(Dwarf_Unsigned)N
1181111680(unsigned_value,)X
118112960 4512(Dwarf_Error)N
1181131536(*error\))X
1181141 f
118115576 4656(The)N
118116854(function)X
1181170 f
1181181303(dwarf_add_AT_const_value_unsignedint\(\))X
1181191 f
1181203301(adds)X
1181213602(the)X
1181223854(given)X
1181230 f
118124576 4752(Dwarf_Unsigned)N
1181251 f
1181261269(value)X
1181270 f
1181281491(unsigned_value)X
1181291 f
1181302183(as)X
1181312270(the)X
1181322388(value)X
1181332582(of)X
1181342669(the)X
1181350 f
1181362815(DW_AT_const_value)X
1181371 f
1181383651(attribute)X
1181393938(for)X
118140576 4848(the)N
1181410 f
118142727(DIE)X
1181431 f
118144896(described)X
1181451229(by)X
1181461334(the)X
1181471457(given)X
1181480 f
1181491688(ownerdie)X
1181501 f
118151(.)S
1181522137(It)X
1181532211(returns)X
1181542459(the)X
1181550 f
1181562610(Dwarf_P_Attribute)X
1181571 f
1181583451(descriptor)X
1181593797(for)X
1181603917(this)X
118161576 4944(attribute)N
118162863(on)X
118163963(success.)X
1181641264(On)X
1181651382(error,)X
1181661579(it)X
1181671643(returns)X
1181680 f
1181691914(DW_DLV_BADADDR)X
1181701 f
118171(.)S
1181723 f
118173576 5184(5.3.7)N
118174776(dwarf_add_AT_const_value_string\(\))X
1181750 f
118176576 5328(Dwarf_P_Attribute)N
1181771440(dwarf_add_AT_const_value_string\()X
118178960 5424(Dwarf_P_Die)N
1181791536(ownerdie,)X
118180960 5520(char)N
1181811200(*string_value,)X
118182960 5616(Dwarf_Error)N
1181831536(*error\))X
1181841 f
118185576 5760(The)N
118186772(function)X
1181870 f
1181881138(dwarf_add_AT_const_value_string\(\))X
1181891 f
1181902813(adds)X
1181913032(the)X
1181923202(string)X
1181933456(value)X
1181943702(given)X
1181953952(by)X
1181960 f
118197576 5856(string_value)N
1181981 f
1181991184(as)X
1182001283(the)X
1182011413(value)X
1182021619(of)X
1182031718(the)X
1182040 f
1182051876(DW_AT_const_value)X
1182061 f
1182072724(attribute)X
1182083023(for)X
1182093149(the)X
1182100 f
1182113307(DIE)X
1182121 f
1182133483(described)X
1182143823(by)X
1182153934(the)X
118216576 6164(rev)N
118217699(1.18,)X
118218879(10)X
118219979(Jan)X
1182201106(2002)X
1182212217(-)X
1182222264(14)X
1182232364(-)X
118224
11822515 p
118226%%Page: 15 15
1182270(Courier)xf 0 f
11822810 s 0 xH 0 xS 0 f
1182291 f
1182302217 384(-)N
1182312264(15)X
1182322364(-)X
118233576 768(given)N
1182340 f
118235811(ownerdie)X
1182361 f
118237(.)S
1182381264(It)X
1182391342(returns)X
1182401594(the)X
1182410 f
1182421750(Dwarf_P_Attribute)X
1182431 f
1182442596(descriptor)X
1182452947(for)X
1182463071(this)X
1182473216(attribute)X
1182483513(on)X
1182493623(success.)X
1182503934(On)X
118251576 864(error,)N
118252773(it)X
118253837(returns)X
1182540 f
1182551108(DW_DLV_BADADDR)X
1182561 f
118257(.)S
1182583 f
118259576 1104(5.3.8)N
118260776(dwarf_add_AT_targ_address\(\))X
1182610 f
118262576 1248(Dwarf_P_Attribute)N
1182631440(dwarf_add_AT_targ_address\()X
118264960 1344(Dwarf_P_Debug)N
1182651632(dbg,)X
118266960 1440(Dwarf_P_Die)N
1182671536(ownerdie,)X
118268960 1536(Dwarf_Half)N
1182691488(attr,)X
118270960 1632(Dwarf_Unsigned)N
1182711680(pc_value,)X
118272960 1728(Dwarf_Signed)N
1182731584(sym_index,)X
118274960 1824(Dwarf_Error)N
1182751536(*error\))X
1182761 f
118277576 1968(The)N
118278722(function)X
1182790 f
1182801038(dwarf_add_AT_targ_address\(\))X
1182811 f
1182822375(adds)X
1182832543(an)X
1182842641(attribute)X
1182852930(that)X
1182863072(belongs)X
1182873343(to)X
1182883427(the)X
1182893547("address")X
1182903876(class)X
118291576 2064(to)N
118292669(the)X
118293798(die)X
118294927(specified)X
1182951248(by)X
1182960 f
1182971387(ownerdie)X
1182981 f
118299(.)S
1183001842(The)X
1183011998(attribute)X
1183022296(is)X
1183032380(specified)X
1183042701(by)X
1183050 f
1183062840(attr)X
1183071 f
118308(,)S
1183093082(and)X
1183103228(the)X
1183113356(object)X
1183123582(that)X
1183133732(the)X
1183140 f
1183153888(DIE)X
1183161 f
118317576 2160(belongs)N
118318852(to)X
118319941(is)X
1183201021(specified)X
1183211338(by)X
1183220 f
1183231473(dbg)X
1183241 f
118325(.)S
1183261684(The)X
1183271836(relocatable)X
1183282216(address)X
1183292484(that)X
1183302631(is)X
1183312711(the)X
1183322836(value)X
1183333037(of)X
1183343132(the)X
1183353258(attribute)X
1183363553(is)X
1183373634(specified)X
1183383952(by)X
1183390 f
118340576 2256(pc_value)N
1183411 f
118342(.)S
1183431023(The)X
1183441171(symbol)X
1183451429(to)X
1183461514(be)X
1183471613(used)X
1183481782(for)X
1183491898(relocation)X
1183502241(is)X
1183512316(specified)X
1183522628(by)X
1183532730(the)X
1183540 f
1183552878(sym_index)X
1183561 f
118357(,)S
1183583352(which)X
1183593570(is)X
1183603645(the)X
1183613765(index)X
1183623965(of)X
118363576 2352(the)N
118364694(symbol)X
118365949(in)X
1183661031(the)X
1183671149(Elf)X
1183681267(symbol)X
1183691522(table.)X
118370576 2544(It)N
118371652(returns)X
118372902(the)X
1183730 f
1183741055(Dwarf_P_Attribute)X
1183751 f
1183761899(descriptor)X
1183772248(for)X
1183782370(the)X
1183792496(attribute)X
1183802791(on)X
1183812899(success,)X
1183823188(and)X
1183830 f
1183843360(DW_DLV_BADADDR)X
1183851 f
118386576 2640(on)N
118387676(error.)X
1183883 f
118389576 2976(5.3.9)N
118390776(dwarf_add_AT_targ_address_b\(\))X
1183910 f
118392576 3120(Dwarf_P_Attribute)N
1183931440(dwarf_add_AT_targ_address_b\()X
118394960 3216(Dwarf_P_Debug)N
1183951632(dbg,)X
118396960 3312(Dwarf_P_Die)N
1183971536(ownerdie,)X
118398960 3408(Dwarf_Half)N
1183991488(attr,)X
118400960 3504(Dwarf_Unsigned)N
1184011680(pc_value,)X
118402960 3600(Dwarf_Unsigned)N
1184031680(sym_index,)X
118404960 3696(Dwarf_Error)N
1184051536(*error\))X
1184061 f
118407576 3840(The)N
118408951(function)X
1184090 f
1184101496(dwarf_add_AT_targ_address_b\(\))X
1184111 f
1184123139(is)X
1184133443(identical)X
1184143970(to)X
1184150 f
118416576 3936(dwarf_add_AT_targ_address_b\(\))N
1184171 f
1184181993(except)X
1184192227(that)X
1184200 f
1184212399(sym_index\(\))X
1184221 f
1184232971(is)X
1184243048(guaranteed)X
1184253425(to)X
1184263511(be)X
1184273611(large)X
1184283796(enough)X
118429576 4032(that)N
118430719(it)X
118431786(can)X
118432921(contain)X
1184331180(a)X
1184341239(pointer)X
1184351489(to)X
1184361574(arbitrary)X
1184371874(data)X
1184382031(\(so)X
1184392152(the)X
1184402273(caller)X
1184412476(can)X
1184422612(pass)X
1184432774(in)X
1184442860(a)X
1184452920(real)X
1184463065(elf)X
1184473174(symbol)X
1184483433(index,)X
1184493655(an)X
1184503755(arbitrary)X
118451576 4128(number,)N
118452863(or)X
118453952(a)X
1184541010(pointer)X
1184551259(to)X
1184561342(arbitrary)X
1184571640(data\).)X
1184581862(The)X
1184592008(ability)X
1184602233(to)X
1184612316(pass)X
1184622475(in)X
1184632558(a)X
1184642615(pointer)X
1184652863(thru)X
1184660 f
1184673041(sym_index\(\))X
1184681 f
1184693590(is)X
1184703664(only)X
1184713827(usable)X
118472576 4224(with)N
1184730 f
118474766(DW_DLC_SYMBOLIC_RELOCATIONS)X
1184751 f
118476(.)S
118477576 4416(The)N
1184780 f
118479757(pc_value)X
1184801 f
1184811169(is)X
1184821250(put)X
1184831380(into)X
1184841532(the)X
1184851658(section)X
1184861913(stream)X
1184872155(output)X
1184882387(and)X
1184892531(the)X
1184900 f
1184912685(sym_index)X
1184921 f
1184933146(is)X
1184943228(applied)X
1184953493(to)X
1184963584(the)X
1184973711(relocation)X
118498576 4512(information.)N
1184993 f
118500576 4752(5.3.10)N
118501816(dwarf_add_AT_unsigned_const\(\))X
1185020 f
118503576 4896(Dwarf_P_Attribute)N
1185041440(dwarf_add_AT_unsigned_const\()X
118505960 4992(Dwarf_P_Debug)N
1185061632(dbg,)X
118507960 5088(Dwarf_P_Die)N
1185081536(ownerdie,)X
118509960 5184(Dwarf_Half)N
1185101488(attr,)X
118511960 5280(Dwarf_Unsigned)N
1185121680(value,)X
118513960 5376(Dwarf_Error)N
1185141536(*error\))X
1185151 f
118516576 5520(The)N
118517733(function)X
1185180 f
1185191060(dwarf_add_AT_unsigned_const\(\))X
1185201 f
1185212504(adds)X
1185222683(an)X
1185232791(attribute)X
1185243090(with)X
1185253264(a)X
1185260 f
1185273360(Dwarf_Unsigned)X
1185281 f
118529576 5616(value)N
118530777(belonging)X
1185311124(to)X
1185321213(the)X
1185331338("constant")X
1185341698(class,)X
1185351901(to)X
1185361990(the)X
1185370 f
1185382143(DIE)X
1185391 f
1185402314(specified)X
1185412631(by)X
1185420 f
1185432766(ownerdie)X
1185441 f
118545(.)S
1185463217(The)X
1185473368(object)X
1185483590(that)X
1185493736(the)X
1185500 f
1185513888(DIE)X
1185521 f
118553576 5712(belongs)N
118554845(to)X
118555927(is)X
1185561000(specified)X
1185571310(by)X
1185580 f
1185591438(dbg)X
1185601 f
118561(.)S
1185621642(The)X
1185631787(attribute)X
1185642074(is)X
1185652147(specified)X
1185662457(by)X
1185670 f
1185682585(attr)X
1185691 f
118570(,)S
1185712817(and)X
1185722953(its)X
1185733048(value)X
1185743242(is)X
1185753315(specified)X
1185763625(by)X
1185770 f
1185783753(value)X
1185791 f
118580(.)S
118581576 6164(rev)N
118582699(1.18,)X
118583879(10)X
118584979(Jan)X
1185851106(2002)X
1185862217(-)X
1185872264(15)X
1185882364(-)X
118589
11859016 p
118591%%Page: 16 16
1185920(Courier)xf 0 f
11859310 s 0 xH 0 xS 0 f
1185941 f
1185952217 384(-)N
1185962264(16)X
1185972364(-)X
118598576 768(It)N
118599652(returns)X
118600902(the)X
1186010 f
1186021055(Dwarf_P_Attribute)X
1186031 f
1186041899(descriptor)X
1186052248(for)X
1186062370(the)X
1186072496(attribute)X
1186082791(on)X
1186092899(success,)X
1186103188(and)X
1186110 f
1186123360(DW_DLV_BADADDR)X
1186131 f
118614576 864(on)N
118615676(error.)X
1186163 f
118617576 1104(5.3.11)N
118618816(dwarf_add_AT_signed_const\(\))X
1186190 f
118620576 1248(Dwarf_P_Attribute)N
1186211440(dwarf_add_AT_signed_const\()X
118622960 1344(Dwarf_P_Debug)N
1186231632(dbg,)X
118624960 1440(Dwarf_P_Die)N
1186251536(ownerdie,)X
118626960 1536(Dwarf_Half)N
1186271488(attr,)X
118628960 1632(Dwarf_Signed)N
1186291584(value,)X
118630960 1728(Dwarf_Error)N
1186311536(*error\))X
1186321 f
118633576 1872(The)N
118634731(function)X
1186350 f
1186361056(dwarf_add_AT_signed_const\(\))X
1186371 f
1186382402(adds)X
1186392579(an)X
1186402685(attribute)X
1186412983(with)X
1186423156(a)X
1186430 f
1186443251(Dwarf_Signed)X
1186451 f
1186463858(value)X
118647576 1968(belonging)N
118648919(to)X
1186491003(the)X
1186501123("constant")X
1186511478(class,)X
1186521676(to)X
1186531760(the)X
1186540 f
1186551908(DIE)X
1186561 f
1186572074(specified)X
1186582386(by)X
1186590 f
1186602516(ownerdie)X
1186611 f
118662(.)S
1186632962(The)X
1186643109(object)X
1186653327(that)X
1186663469(the)X
1186670 f
1186683617(DIE)X
1186691 f
1186703783(belongs)X
118671576 2064(to)N
118672658(is)X
118673731(specified)X
1186741041(by)X
1186750 f
1186761169(dbg)X
1186771 f
118678(.)S
1186791373(The)X
1186801518(attribute)X
1186811805(is)X
1186821878(specified)X
1186832188(by)X
1186840 f
1186852316(attr)X
1186861 f
118687(,)S
1186882548(and)X
1186892684(its)X
1186902779(value)X
1186912973(is)X
1186923046(specified)X
1186933356(by)X
1186940 f
1186953484(value)X
1186961 f
118697(.)S
118698576 2256(It)N
118699652(returns)X
118700902(the)X
1187010 f
1187021055(Dwarf_P_Attribute)X
1187031 f
1187041899(descriptor)X
1187052248(for)X
1187062370(the)X
1187072496(attribute)X
1187082791(on)X
1187092899(success,)X
1187103188(and)X
1187110 f
1187123360(DW_DLV_BADADDR)X
1187131 f
118714576 2352(on)N
118715676(error.)X
1187163 f
118717576 2592(5.3.12)N
118718816 0.1576(dwarf_add_AT_reference\(\))AX
1187190 f
118720576 2736(Dwarf_P_Attribute)N
1187211440(dwarf_add_AT_reference\()X
118722960 2832(Dwarf_P_Debug)N
1187231632(dbg,)X
118724960 2928(Dwarf_P_Die)N
1187251536(ownerdie,)X
118726960 3024(Dwarf_Half)N
1187271488(attr,)X
118728960 3120(Dwarf_P_Die)N
1187291536(otherdie,)X
118730960 3216(Dwarf_Error)N
1187311536(*error\))X
1187321 f
118733576 3360(The)N
118734737(function)X
1187350 f
1187361068(dwarf_add_AT_reference\(\))X
1187371 f
1187382256(adds)X
1187392439(an)X
1187402551(attribute)X
1187412854(with)X
1187423032(a)X
1187433104(value)X
1187443314(that)X
1187453470(is)X
1187463559(a)X
1187473632 0.4531(reference)AX
1187483970(to)X
118749576 3456(another)N
1187500 f
118751865(DIE)X
1187521 f
1187531029(in)X
1187541111(the)X
1187551229(same)X
1187561414(compilation-unit)X
1187571967(to)X
1187582049(the)X
1187590 f
1187602195(DIE)X
1187611 f
1187622359(specified)X
1187632669(by)X
1187640 f
1187652797(ownerdie)X
1187661 f
118767(.)S
1187683241(The)X
1187693386(object)X
1187703602(that)X
1187713742(the)X
1187720 f
1187733888(DIE)X
1187741 f
118775576 3552(belongs)N
118776847(to)X
118777931(is)X
1187781006(specified)X
1187791318(by)X
1187800 f
1187811448(dbg)X
1187821 f
118783(.)S
1187841654(The)X
1187851802(attribute)X
1187862092(is)X
1187872168(specified)X
1187882481(by)X
1187890 f
1187902612(attr)X
1187911 f
118792(,)S
1187932847(and)X
1187942986(the)X
1187953107(other)X
1187960 f
1187973323(DIE)X
1187981 f
1187993490(being)X
1188003691(referred)X
1188013970(to)X
118802576 3648(is)N
118803649(specified)X
118804959(by)X
1188050 f
1188061087(otherdie)X
1188071 f
118808(.)S
118809576 3840(This)N
118810738(cannot)X
118811972(generate)X
1188121265(DW_FORM_ref_addr)X
1188131998 0.3889(references)AX
1188142350(to)X
1188150 f
1188162460(DIE)X
1188171 f
118818(s)S
1188192655(in)X
1188202737(other)X
1188212922(compilation)X
1188223324(units.)X
118823576 4032(It)N
118824652(returns)X
118825902(the)X
1188260 f
1188271055(Dwarf_P_Attribute)X
1188281 f
1188291899(descriptor)X
1188302248(for)X
1188312370(the)X
1188322496(attribute)X
1188332791(on)X
1188342899(success,)X
1188353188(and)X
1188360 f
1188373360(DW_DLV_BADADDR)X
1188381 f
118839576 4128(on)N
118840676(error.)X
1188413 f
118842576 4368(5.3.13)N
118843816(dwarf_add_AT_flag\(\))X
1188440 f
118845576 4512(Dwarf_P_Attribute)N
1188461440(dwarf_add_AT_flag\()X
118847960 4608(Dwarf_P_Debug)N
1188481632(dbg,)X
118849960 4704(Dwarf_P_Die)N
1188501536(ownerdie,)X
118851960 4800(Dwarf_Half)N
1188521488(attr,)X
118853960 4896(Dwarf_Small)N
1188541536(flag,)X
118855960 4992(Dwarf_Error)N
1188561536(*error\))X
1188571 f
118858576 5136(The)N
118859721(function)X
1188600 f
1188611036(dwarf_add_AT_flag\(\))X
1188621 f
1188631968(adds)X
1188642135(an)X
1188652231(attribute)X
1188662518(with)X
1188672681(a)X
1188680 f
1188692766(Dwarf_Small)X
1188701 f
1188713315(value)X
1188723510(belonging)X
1188733851(to)X
1188743934(the)X
118875576 5232("flag")N
118876796(class,)X
1188771001(to)X
1188781092(the)X
1188790 f
1188801247(DIE)X
1188811 f
1188821420(specified)X
1188831739(by)X
1188840 f
1188851876(ownerdie)X
1188861 f
118887(.)S
1188882329(The)X
1188892483(object)X
1188902708(that)X
1188912857(the)X
1188920 f
1188933012(DIE)X
1188941 f
1188953185(belongs)X
1188963463(to)X
1188973553(is)X
1188983634(specified)X
1188993952(by)X
1189000 f
118901576 5328(dbg)N
1189021 f
118903(.)S
118904780(The)X
118905925(attribute)X
1189061212(is)X
1189071285(specified)X
1189081595(by)X
1189090 f
1189101723(attr)X
1189111 f
118912(,)S
1189131955(and)X
1189142091(its)X
1189152186(value)X
1189162380(is)X
1189172453(specified)X
1189182763(by)X
1189190 f
1189202891(flag)X
1189211 f
118922(.)S
118923576 5520(It)N
118924652(returns)X
118925902(the)X
1189260 f
1189271055(Dwarf_P_Attribute)X
1189281 f
1189291899(descriptor)X
1189302248(for)X
1189312370(the)X
1189322496(attribute)X
1189332791(on)X
1189342899(success,)X
1189353188(and)X
1189360 f
1189373360(DW_DLV_BADADDR)X
1189381 f
118939576 5616(on)N
118940676(error.)X
118941576 6164(rev)N
118942699(1.18,)X
118943879(10)X
118944979(Jan)X
1189451106(2002)X
1189462217(-)X
1189472264(16)X
1189482364(-)X
118949
11895017 p
118951%%Page: 17 17
1189520(Courier)xf 0 f
11895310 s 0 xH 0 xS 0 f
1189541 f
1189552217 384(-)N
1189562264(17)X
1189572364(-)X
1189583 f
118959576 768(5.3.14)N
118960816(dwarf_add_AT_string\(\))X
1189610 f
118962576 912(Dwarf_P_Attribute)N
1189631440(dwarf_add_AT_string\()X
118964960 1008(Dwarf_P_Debug)N
1189651632(dbg,)X
118966960 1104(Dwarf_P_Die)N
1189671536(ownerdie,)X
118968960 1200(Dwarf_Half)N
1189691488(attr,)X
118970960 1296(char)N
1189711200(*string,)X
118972960 1392(Dwarf_Error)N
1189731536(*error\))X
1189741 f
118975576 1536(The)N
118976723(function)X
1189770 f
1189781040(dwarf_add_AT_string\(\))X
1189791 f
1189802070(adds)X
1189812239(an)X
1189822337(attribute)X
1189832626(with)X
1189842791(a)X
1189852850(value)X
1189863047(that)X
1189873190(is)X
1189883266(a)X
1189893325(character)X
1189903644(string)X
1189913849(to)X
1189923934(the)X
1189930 f
118994576 1632(DIE)N
1189951 f
118996743(specified)X
1189971056(by)X
1189980 f
1189991187(ownerdie)X
1190001 f
119001(.)S
1190021634(The)X
1190031782(object)X
1190042001(that)X
1190052144(the)X
1190060 f
1190072293(DIE)X
1190081 f
1190092460(belongs)X
1190102732(to)X
1190112817(is)X
1190122893(specified)X
1190133206(by)X
1190140 f
1190153337(dbg)X
1190161 f
119017(.)S
1190183543(The)X
1190193690(attribute)X
1190203979(is)X
119021576 1728(specified)N
119022886(by)X
1190230 f
1190241014(attr)X
1190251 f
119026(,)S
1190271246(and)X
1190281382(its)X
1190291477(value)X
1190301671(is)X
1190311744(pointed)X
1190322004(to)X
1190332086(by)X
1190340 f
1190352214(string)X
1190361 f
119037(.)S
119038576 1920(It)N
119039652(returns)X
119040902(the)X
1190410 f
1190421055(Dwarf_P_Attribute)X
1190431 f
1190441899(descriptor)X
1190452248(for)X
1190462370(the)X
1190472496(attribute)X
1190482791(on)X
1190492899(success,)X
1190503188(and)X
1190510 f
1190523360(DW_DLV_BADADDR)X
1190531 f
119054576 2016(on)N
119055676(error.)X
1190563 f
11905711 s
119058576 2256(5.4)N
119059730(Expression)X
1190601168(Creation)X
1190611 f
11906210 s
119063576 2400(The)N
119064725(following)X
1190651060(functions)X
1190661382(are)X
1190671506(used)X
1190681678(to)X
1190691765(convert)X
1190702031(location)X
1190712314(expressions)X
1190722713(into)X
1190732862(blocks)X
1190743096(so)X
1190753192(that)X
1190763337(attributes)X
1190773660(with)X
1190783827(values)X
119079576 2496(that)N
119080732(are)X
119081867(location)X
1190821161(expressions)X
1190831571(can)X
1190841719(store)X
1190851911(their)X
1190862094(values)X
1190872335(as)X
1190882438(a)X
1190890 f
1190902538(DW_FORM_blockn)X
1190911 f
1190923246(value.)X
1190933496(This)X
1190943673(is)X
1190953761(for)X
1190963890(both)X
119097576 2592(.debug_info)N
119098981(and)X
1190991117(.debug_loc)X
1191001491(expression)X
1191011854(blocks.)X
119102576 2784(To)N
119103691(create)X
119104910(an)X
1191051012(expression,)X
1191061401(first)X
1191071556(call)X
1191080 f
1191091726(dwarf_new_expr\(\))X
1191101 f
1191112520(to)X
1191122608(get)X
1191132732(a)X
1191140 f
1191152822(Dwarf_P_Expr)X
1191161 f
1191173425(descriptor)X
1191183773(that)X
1191193920(can)X
119120576 2880(be)N
119121675(used)X
119122845(to)X
119123930(build)X
1191241117(up)X
1191251220(the)X
1191261341(block)X
1191271542(containing)X
1191281903(the)X
1191292024(location)X
1191302305(expression.)X
1191312711(Then)X
1191322898(insert)X
1191333098(the)X
1191343218(parts)X
1191353396(of)X
1191363485(the)X
1191373605(expression)X
1191383970(in)X
119139576 2976(prefix)N
119140791(order)X
119141984(\(exactly)X
1191421266(the)X
1191431387(order)X
1191441580(they)X
1191451741(would)X
1191461964(be)X
1191472064(interpreted)X
1191482436(in)X
1191492522(in)X
1191502608(an)X
1191512708(expression)X
1191523075(interpreter\).)X
1191533501(The)X
1191543650(bytes)X
1191553843(of)X
1191563934(the)X
119157576 3072(expression)N
119158939(are)X
1191591058(then)X
1191601216(built-up)X
1191611489(as)X
1191621576(specified)X
1191631886(by)X
1191641986(the)X
1191652104(user.)X
1191663 f
119167576 3312(5.4.1)N
119168776(dwarf_new_expr\(\))X
1191690 f
119170576 3456(Dwarf_Expr)N
1191711104(dwarf_new_expr\()X
119172960 3552(Dwarf_P_Debug)N
1191731632(dbg,)X
119174960 3648(Dwarf_Error)N
1191751536(*error\))X
1191761 f
119177576 3792(The)N
119178723(function)X
1191790 f
1191801040(dwarf_new_expr\(\))X
1191811 f
1191821830(creates)X
1191832076(a)X
1191842134(new)X
1191852290(expression)X
1191862655(area)X
1191872812(in)X
1191882896(which)X
1191893114(a)X
1191903172(location)X
1191913452(expression)X
1191923818(stream)X
119193576 3888(can)N
119194716(be)X
119195820(created.)X
1191961120(It)X
1191971196(returns)X
1191981446(a)X
1191990 f
1192001537(Dwarf_P_Expr)X
1192011 f
1192022140(descriptor)X
1192032488(that)X
1192042635(can)X
1192052774(be)X
1192062877(used)X
1192073051(to)X
1192083140(add)X
1192093283(operators)X
1192103609(to)X
1192113698(build)X
1192123889(up)X
1192133996(a)X
119214576 3984(location)N
119215854(expression.)X
1192161257(It)X
1192171326(returns)X
1192180 f
1192191597(NULL)X
1192201 f
1192211809(on)X
1192221909(error.)X
1192233 f
119224576 4224(5.4.2)N
119225776(dwarf_add_expr_gen\(\))X
1192260 f
119227576 4368(Dwarf_Unsigned)N
1192281296(dwarf_add_expr_gen\()X
119229960 4464(Dwarf_P_Expr)N
1192301584(expr,)X
119231960 4560(Dwarf_Small)N
1192321536(opcode,)X
119233960 4656(Dwarf_Unsigned)N
1192341680(val1,)X
119235960 4752(Dwarf_Unsigned)N
1192361680(val2,)X
119237960 4848(Dwarf_Error)N
1192381536(*error\))X
1192391 f
119240576 4992(The)N
119241728(function)X
1192420 f
1192431050(dwarf_add_expr_gen\(\))X
1192441 f
1192452037(takes)X
1192462229(an)X
1192472332(operator)X
1192482628(specified)X
1192492946(by)X
1192500 f
1192513082(opcode)X
1192521 f
119253(,)S
1192543418(along)X
1192553624(with)X
1192563794(up)X
1192573902(to)X
1192583992(2)X
119259576 5088(operands)N
119260899(specified)X
1192611222(by)X
1192620 f
1192631363(val1)X
1192641 f
119265(,)S
1192661608(and)X
1192670 f
1192681785(val2)X
1192691 f
119270(,)S
1192712030(converts)X
1192722335(it)X
1192732412(into)X
1192742569(the)X
1192750 f
1192762728(Dwarf)X
1192771 f
1192783001(representation)X
1192793489(and)X
1192803638(appends)X
1192813934(the)X
119282576 5184(bytes)N
119283778(to)X
119284873(the)X
1192851004(byte)X
1192861175(stream)X
1192871422(being)X
1192881634(assembled)X
1192892002(for)X
1192902130(the)X
1192912262(location)X
1192922554(expression)X
1192932931(represented)X
1192943336(by)X
1192950 f
1192963478(expr)X
1192971 f
119298(.)S
1192993744(The)X
1193003903(first)X
119301576 5280(operand,)N
119302883(if)X
119303960(present,)X
1193041240(to)X
1193050 f
1193061358(opcode)X
1193071 f
1193081674(is)X
1193091755(in)X
1193100 f
1193111873(val1)X
1193121 f
119313(,)S
1193142113(and)X
1193152257(the)X
1193162383(second)X
1193172634(operand,)X
1193182941(if)X
1193193017(present,)X
1193203296(is)X
1193213376(in)X
1193220 f
1193233493(val2)X
1193241 f
119325(.)S
1193263752(Both)X
1193273934(the)X
119328576 5376(operands)N
119329886(may)X
1193301044(actually)X
1193311318(be)X
1193321414(signed)X
1193331643(or)X
1193341731(unsigned)X
1193352041(depending)X
1193362396(on)X
1193370 f
1193382525(opcode)X
1193391 f
119340(.)S
1193412874(It)X
1193422944(returns)X
1193433188(the)X
1193443307(number)X
1193453573(of)X
1193463661(bytes)X
1193473851(in)X
1193483934(the)X
119349576 5472(byte)N
119350781(stream)X
1193511062(for)X
1193520 f
1193531251(expr)X
1193541 f
1193551510(currently)X
1193561867(generated,)X
1193572267(i.e.)X
1193582432(after)X
1193592647(the)X
1193602811(addition)X
1193613139(of)X
1193620 f
1193633300(opcode)X
1193641 f
119365(.)S
1193663694(It)X
1193673809(returns)X
1193680 f
119369576 5568(DW_DLV_NOCOUNT)N
1193701 f
1193711268(on)X
1193721368(error.)X
119373576 5760(The)N
119374726(function)X
1193750 f
1193761046(dwarf_add_expr_gen\(\))X
1193771 f
1193782031(works)X
1193792252(for)X
1193802371(all)X
1193812476(opcodes)X
1193822765(except)X
1193833001(those)X
1193843196(that)X
1193853342(have)X
1193863520(a)X
1193873582(target)X
1193883791(address)X
119389576 5856(as)N
119390668(an)X
119391769(operand.)X
1193921093(This)X
1193931260(is)X
1193941338(because)X
1193951618(it)X
1193961687(does)X
1193971859(not)X
1193981986(set)X
1193992100(up)X
1194002205(a)X
1194012266(relocation)X
1194022612(record)X
1194032843(that)X
1194042988(is)X
1194053066(needed)X
1194063319(when)X
1194073517(target)X
1194083724(addresses)X
119409576 6164(rev)N
119410699(1.18,)X
119411879(10)X
119412979(Jan)X
1194131106(2002)X
1194142217(-)X
1194152264(17)X
1194162364(-)X
119417
11941818 p
119419%%Page: 18 18
1194200(Courier)xf 0 f
11942110 s 0 xH 0 xS 0 f
1194221 f
1194232217 384(-)N
1194242264(18)X
1194252364(-)X
119426576 768(are)N
119427695(involved.)X
1194283 f
119429576 1008(5.4.3)N
119430776(dwarf_add_expr_addr\(\))X
1194310 f
119432576 1152(Dwarf_Unsigned)N
1194331296(dwarf_add_expr_addr\()X
119434960 1248(Dwarf_P_Expr)N
1194351584(expr,)X
119436960 1344(Dwarf_Unsigned)N
1194371680(address,)X
119438960 1440(Dwarf_Signed)N
1194391584(sym_index,)X
119440960 1536(Dwarf_Error)N
1194411536(*error\))X
1194421 f
119443576 1680(The)N
119444733(function)X
1194450 f
1194461060(dwarf_add_expr_addr\(\))X
1194471 f
1194482101(is)X
1194492187(used)X
1194502367(to)X
1194512462(add)X
1194522611(the)X
1194530 f
1194542770(DW_OP_addr)X
1194551 f
1194563283(opcode)X
1194573548(to)X
1194583643(the)X
1194593774(location)X
119460576 1776(expression)N
119461950(represented)X
1194621352(by)X
1194631463(the)X
1194641592(given)X
1194650 f
1194661828(Dwarf_P_Expr)X
1194671 f
1194682434(descriptor,)X
1194690 f
1194702833(expr)X
1194711 f
119472(.)S
1194733095(The)X
1194743250(value)X
1194753454(of)X
1194763551(the)X
1194773679(relocatable)X
119478576 1872(address)N
119479840(is)X
119480916(given)X
1194811117(by)X
1194820 f
1194831248(address)X
1194841 f
119485(.)S
1194861647(The)X
1194871795(symbol)X
1194882053(to)X
1194892138(be)X
1194902238(used)X
1194912409(for)X
1194922527(relocation)X
1194932872(is)X
1194942949(given)X
1194953151(by)X
1194960 f
1194973283(sym_index)X
1194981 f
119499(,)S
1195003759(which)X
1195013979(is)X
119502576 1968(the)N
119503706(index)X
119504916(of)X
1195051015(the)X
1195061145(symbol)X
1195071412(in)X
1195081506(the)X
1195091636(Elf)X
1195101766(symbol)X
1195112033(table.)X
1195122261(It)X
1195132342(returns)X
1195142597(the)X
1195152727(number)X
1195163004(of)X
1195173102(bytes)X
1195183302(in)X
1195193395(the)X
1195203524(byte)X
1195213693(stream)X
1195223938(for)X
1195230 f
119524576 2064(expr)N
1195251 f
119526833(currently)X
1195271188(generated,)X
1195281586(i.e.)X
1195291749(after)X
1195301962(the)X
1195312125(addition)X
1195322452(of)X
1195332584(the)X
1195340 f
1195352775(DW_OP_addr)X
1195361 f
1195373320(operator.)X
1195383694(It)X
1195393809(returns)X
1195400 f
119541576 2160(DW_DLV_NOCOUNT)N
1195421 f
1195431268(on)X
1195441368(error.)X
1195453 f
119546576 2400(5.4.4)N
119547776(dwarf_add_expr_addr_b\(\))X
1195480 f
119549576 2544(Dwarf_Unsigned)N
1195501296(dwarf_add_expr_addr_b\()X
119551960 2640(Dwarf_P_Expr)N
1195521584(expr,)X
119553960 2736(Dwarf_Unsigned)N
1195541680(address,)X
119555960 2832(Dwarf_Unsigned)N
1195561680(sym_index,)X
119557960 2928(Dwarf_Error)N
1195581536(*error\))X
1195591 f
119560576 3072(The)N
119561722(function)X
1195620 f
1195631039(dwarf_add_expr_addr_f\(\))X
1195641 f
1195652165(is)X
1195662240(identical)X
1195672538(to)X
1195680 f
1195692650(dwarf_add_expr_addr\(\))X
1195701 f
1195713680(except)X
1195723912(that)X
1195730 f
119574576 3168(sym_index\(\))N
1195751 f
1195761155(is)X
1195771239(guaranteed)X
1195781623(to)X
1195791716(be)X
1195801823(large)X
1195812015(enough)X
1195822282(that)X
1195832433(it)X
1195842508(can)X
1195852651(contain)X
1195862918(a)X
1195872985(pointer)X
1195883243(to)X
1195893335(arbitrary)X
1195903642(data)X
1195913806(\(so)X
1195923934(the)X
119593576 3264(caller)N
119594775(can)X
119595907(pass)X
1195961065(in)X
1195971147(a)X
1195981203(real)X
1195991344(elf)X
1196001449(symbol)X
1196011704(index,)X
1196021922(an)X
1196032019(arbitrary)X
1196042317(number,)X
1196052603(or)X
1196062691(a)X
1196072748(pointer)X
1196082996(to)X
1196093079(arbitrary)X
1196103377(data\).)X
1196113599(The)X
1196123745(ability)X
1196133970(to)X
119614576 3360(pass)N
119615734(in)X
119616816(a)X
119617872(pointer)X
1196181119(thru)X
1196190 f
1196201296(sym_index\(\))X
1196211 f
1196221844(is)X
1196231917(only)X
1196242079(usable)X
1196252304(with)X
1196260 f
1196272494(DW_DLC_SYMBOLIC_RELOCATIONS)X
1196281 f
119629(.)S
1196303 f
119631576 3792(5.4.5)N
119632776 0.1827(dwarf_expr_current_offset\(\))AX
1196330 f
119634576 3936(Dwarf_Unsigned)N
1196351296(dwarf_expr_current_offset\()X
119636960 4032(Dwarf_P_Expr)N
1196371584(expr,)X
119638960 4128(Dwarf_Error)N
1196391536(*error\))X
1196401 f
119641576 4272(The)N
119642732(function)X
1196430 f
1196441058(dwarf_expr_current_offset\(\))X
1196451 f
1196462386(returns)X
1196472641(the)X
1196482771(number)X
1196493048(of)X
1196503147(bytes)X
1196513348(currently)X
1196523670(in)X
1196533764(the)X
1196543894(byte)X
119655576 4368(stream)N
119656821(for)X
119657946(the)X
1196581075(location)X
1196591364(expression)X
1196601738(represented)X
1196612140(by)X
1196622251(the)X
1196632380(given)X
1196647 f
1196652617(W\(Dwarf_P_Expr)X
1196661 f
1196673320(descriptor,)X
1196680 f
1196693720(expr)X
1196701 f
119671(.)S
1196723983(It)X
119673576 4464(returns)N
1196740 f
119675847(DW_DLV_NOCOUNT)X
1196761 f
1196771539(on)X
1196781639(error.)X
1196793 f
119680576 4704(5.4.6)N
119681776(dwarf_expr_into_block\(\))X
1196820 f
119683576 4848(Dwarf_Addr)N
1196841104(dwarf_expr_into_block\()X
119685960 4944(Dwarf_P_Expr)N
1196861584(expr,)X
119687960 5040(Dwarf_Unsigned)N
1196881680(*length,)X
119689960 5136(Dwarf_Error)N
1196901536(*error\))X
1196911 f
119692576 5280(The)N
119693746(function)X
1196940 f
1196951086(dwarf_expr_into_block\(\))X
1196961 f
1196972236(returns)X
1196982505(the)X
1196992649(address)X
1197002936(of)X
1197013049(the)X
1197023193(start)X
1197033377(of)X
1197043490(the)X
1197053634(byte)X
1197063818(stream)X
119707576 5376(generated)N
119708914(for)X
1197091033(the)X
1197101156(location)X
1197111439(expression)X
1197121807(represented)X
1197132202(by)X
1197142306(the)X
1197152428(given)X
1197160 f
1197172658(Dwarf_P_Expr)X
1197181 f
1197193258(descriptor,)X
1197200 f
1197213651(expr)X
1197221 f
119723(.)S
1197243907(The)X
119725576 5472(length)N
119726842(of)X
119727975(the)X
1197281139(byte)X
1197291343(stream)X
1197301623(is)X
1197311742(returned)X
1197322076(in)X
1197332204(the)X
1197342368(location)X
1197352692(pointed)X
1197362998(to)X
1197373126(by)X
1197380 f
1197393300(length)X
1197401 f
119741(.)S
1197423694(It)X
1197433809(returns)X
1197440 f
119745576 5568(DW_DLV_BADADDR)N
1197461 f
1197471268(on)X
1197481368(error.)X
119749576 6164(rev)N
119750699(1.18,)X
119751879(10)X
119752979(Jan)X
1197531106(2002)X
1197542217(-)X
1197552264(18)X
1197562364(-)X
119757
11975819 p
119759%%Page: 19 19
1197600(Courier)xf 0 f
11976110 s 0 xH 0 xS 0 f
1197621 f
1197632217 384(-)N
1197642264(19)X
1197652364(-)X
1197663 f
11976711 s
119768576 768(5.5)N
119769730(Line)X
119770924(Number)X
1197711258(Operations)X
1197721 f
11977310 s
119774576 912(These)N
119775807(are)X
119776945(operations)X
1197771318(on)X
1197781437(the)X
1197791574(.debug_line)X
1197801989(section.)X
1197812295(They)X
1197822499(provide)X
1197832783(information)X
1197843201(about)X
1197853419(instructions)X
1197863832(in)X
1197873934(the)X
119788576 1008(program)N
119789869(and)X
1197901006(the)X
1197911125(source)X
1197921356(lines)X
1197931528(the)X
1197941647(instruction)X
1197952010(come)X
1197962205(from.)X
1197972422(Typically,)X
1197982770(code)X
1197992943(is)X
1198003017(generated)X
1198013350(in)X
1198023432(contiguous)X
1198033803(blocks,)X
119804576 1104(which)N
119805795(may)X
119806956(then)X
1198071117(be)X
1198081216(relocated)X
1198091534(as)X
1198101624(contiguous)X
1198111998(blocks.)X
1198122270(To)X
1198132383(make)X
1198142581(the)X
1198152703(provision)X
1198163029(of)X
1198173120(relocation)X
1198183465(information)X
1198193867(more)X
119820576 1200(efficient,)N
119821888(the)X
1198221010(information)X
1198231412(is)X
1198241489(recorded)X
1198251794(in)X
1198261879(such)X
1198272049(a)X
1198282108(manner)X
1198292372(that)X
1198302515(only)X
1198312680(the)X
1198322801(address)X
1198333065(of)X
1198343155(the)X
1198353276(start)X
1198363437(of)X
1198373527(the)X
1198383648(block)X
1198393849(needs)X
119840576 1296(to)N
119841661(be)X
119842760(relocated.)X
1198431118(This)X
1198441283(is)X
1198451360(done)X
1198461540(by)X
1198471644(providing)X
1198481979(the)X
1198492101(address)X
1198502366(of)X
1198512457(the)X
1198522579(first)X
1198532732(instruction)X
1198543098(in)X
1198553184(a)X
1198563244(block)X
1198573446(using)X
1198583643(the)X
1198593765(function)X
1198600 f
119861576 1392(dwarf_lne_set_address\(\))N
1198621 f
119863(.)S
1198641741(Information)X
1198652145(about)X
1198662343(the)X
1198672461(instructions)X
1198682854(in)X
1198692936(the)X
1198703054(block)X
1198713252(are)X
1198723371(then)X
1198733529(added)X
1198743741(using)X
1198753934(the)X
119876576 1488(function)N
1198770 f
119878893(dwarf_add_line_entry\(\))X
1198791 f
119880(,)S
1198811991(which)X
1198822209(specifies)X
1198832512(offsets)X
1198842748(from)X
1198852926(the)X
1198863046(address)X
1198873309(of)X
1198883398(the)X
1198893518(first)X
1198903670(instruction.)X
119891576 1584(The)N
119892721(end)X
119893857(of)X
119894944(a)X
1198951000(contiguous)X
1198961371(block)X
1198971569(is)X
1198981642(indicated)X
1198991956(by)X
1199002056(calling)X
1199012294(the)X
1199022412(function)X
1199030 f
1199042727(dwarf_lne_end_sequence\(\))X
1199051 f
119906(.)S
119907576 1728(Line)N
119908743(number)X
1199091008(operations)X
1199101362(do)X
1199111462(not)X
1199121584(support)X
1199130 f
1199141872(DW_DLC_SYMBOLIC_RELOCATIONS)X
1199151 f
119916(.)S
1199173 f
119918576 1968(5.5.1)N
119919776(dwarf_add_line_entry\(\))X
1199200 f
119921576 2112(Dwarf_Unsigned)N
1199221296(dwarf_add_line_entry\()X
119923960 2208(Dwarf_P_Debug)N
1199241632(dbg,)X
119925960 2304(Dwarf_Unsigned)N
1199261680(file_index,)X
119927960 2400(Dwarf_Addr)N
1199281488(code_offset,)X
119929960 2496(Dwarf_Unsigned)N
1199301680(lineno,)X
119931960 2592(Dwarf_Signed)N
1199321584(column_number,)X
119933960 2688(Dwarf_Bool)N
1199341488(is_source_stmt_begin,)X
119935960 2784(Dwarf_Bool)N
1199361488(is_basic_block_begin,)X
119937960 2880(Dwarf_Error)N
1199381536(*error\))X
1199391 f
119940576 3024(The)N
119941729(function)X
1199420 f
1199431052(dwarf_add_line_entry\(\))X
1199441 f
1199452136(adds)X
1199462311(an)X
1199472415(entry)X
1199482608(to)X
1199492698(the)X
1199502824(section)X
1199513080(containing)X
1199523447(information)X
1199533854(about)X
119954576 3120(source)N
119955874(lines.)X
1199561153(It)X
1199571290(specifies)X
1199581659(in)X
1199590 f
1199601837(code_offset)X
1199611 f
119962(,)S
1199632472(the)X
1199642657(offset)X
1199652927(from)X
1199663170(the)X
1199673355(address)X
1199683683(set)X
1199693859(using)X
1199700 f
119971576 3216(dwarfdwarf_lne_set_address\(\))N
1199721 f
119973(,)S
1199741961(of)X
1199752049(the)X
1199762168(address)X
1199772430(of)X
1199782518(the)X
1199792637(first)X
1199802788(instruction)X
1199813152(in)X
1199823236(a)X
1199833294(contiguous)X
1199843667(block.)X
1199853907(The)X
119986576 3312(source)N
119987822(file)X
119988965(that)X
1199891121(gave)X
1199901309(rise)X
1199911461(to)X
1199921559(the)X
1199931693(instruction)X
1199942071(is)X
1199952160(specified)X
1199962486(by)X
1199970 f
1199982630(file_index)X
1199991 f
120000(,)S
1200013166(the)X
1200023299(source)X
1200033544(line)X
1200043699(number)X
1200053979(is)X
120006576 3408(specified)N
120007907(by)X
1200080 f
1200091056(lineno)X
1200101 f
120011(,)S
1200121405(and)X
1200131562(the)X
1200141701(source)X
1200151953(column)X
1200162235(number)X
1200172522(is)X
1200182617(specified)X
1200192949(by)X
1200200 f
1200213099(column_number)X
1200221 f
1200233765(\(column)X
120024576 3504(numbers)N
120025883(begin)X
1200261092(at)X
1200271181(1\))X
1200281278(\(if)X
1200291384(the)X
1200301512(source)X
1200311752(column)X
1200322022(is)X
1200332105(unknown,)X
1200342453(specify)X
1200352715(0\).)X
1200360 f
1200372908(file_index)X
1200381 f
1200393418(is)X
1200403501(the)X
1200413629(index)X
1200423837(of)X
1200433934(the)X
120044576 3600(source)N
120045806(file)X
120046933(in)X
1200471015(a)X
1200481071(list)X
1200491188(of)X
1200501275(source)X
1200511505(files)X
1200521663(which)X
1200531879(is)X
1200541952(built)X
1200552118(up)X
1200562218(using)X
1200572411(the)X
1200582529(function)X
1200590 f
1200602844(dwarf_add_file_decl\(\))X
1200611 f
120062(.)S
1200630 f
120064576 3792(is_source_stmt_begin)N
1200651 f
1200661563(is)X
1200671643(a)X
1200681706(boolean)X
1200691987(flag)X
1200702139(that)X
1200712286(is)X
1200722366(true)X
1200732518(only)X
1200742688(if)X
1200752765(the)X
1200762891(instruction)X
1200773261(at)X
1200780 f
1200793375(code_address)X
1200801 f
1200813979(is)X
120082576 3888(the)N
120083741(first)X
120084937(instruction)X
1200851346(in)X
1200861475(the)X
1200871640(sequence)X
1200882002(generated)X
1200892382(for)X
1200902543(the)X
1200912707(source)X
1200922983(line)X
1200933169(at)X
1200940 f
1200953321(lineno)X
1200961 f
120097(.)S
1200983715(Similarly,)X
1200990 f
120100576 3984(is_basic_block_begin)N
1201011 f
1201021563(is)X
1201031643(a)X
1201041706(boolean)X
1201051987(flag)X
1201062139(that)X
1201072286(is)X
1201082366(true)X
1201092518(only)X
1201102688(if)X
1201112765(the)X
1201122891(instruction)X
1201133261(at)X
1201140 f
1201153375(code_address)X
1201161 f
1201173979(is)X
120118576 4080(the)N
120119694(first)X
120120843(instruction)X
1201211205(of)X
1201221292(a)X
1201231348(basic)X
1201241533(block.)X
120125576 4272(It)N
120126645(returns)X
1201270 f
120128916(0)X
1201291 f
120130984(on)X
1201311084(success,)X
1201321365(and)X
1201330 f
1201341529(DW_DLV_NOCOUNT)X
1201351 f
1201362221(on)X
1201372321(error.)X
1201383 f
120139576 4512(5.5.2)N
120140776(dwarf_lne_set_address\(\))X
1201410 f
120142576 4656(Dwarf_Unsigned)N
1201431296(dwarf_lne_set_address\()X
120144960 4752(Dwarf_P_Debug)N
1201451632(dbg,)X
120146960 4848(Dwarf_Addr)N
1201471488(offs,)X
120148960 4944(Dwarf_Unsigned)N
1201491680(symidx,)X
120150960 5040(Dwarf_Error)N
1201511536(*error\))X
1201521 f
120153576 5184(The)N
120154734(function)X
1201550 f
1201561062(dwarf_lne_set_address\(\))X
1201571 f
1201582199(sets)X
1201592352(the)X
1201602484(target)X
1201612701(address)X
1201622976(at)X
1201633068(which)X
1201643298(a)X
1201653368(contiguous)X
1201663753(block)X
1201673965(of)X
120168576 5280(instructions)N
120169978(begin.)X
1201701225(Information)X
1201711637(about)X
1201721844(the)X
1201731971(instructions)X
1201742373(in)X
1201752464(the)X
1201762591(block)X
1201772798(is)X
1201782880(added)X
1201793100(to)X
1201803190(.debug_line)X
1201813594(using)X
1201823795(calls)X
1201833970(to)X
1201840 f
120185576 5376(dwarfdwarf_add_line_entry\(\))N
1201861 f
1201871896(which)X
1201882116(specifies)X
1201892421(the)X
1201902543(offset)X
1201912750(of)X
1201922841(each)X
1201933013(instruction)X
1201943379(in)X
1201953465(the)X
1201963588(block)X
1201973791(relative)X
120198576 5472(to)N
120199659(the)X
120200778(start)X
120201937(of)X
1202021025(the)X
1202031144(block.)X
1202041383(This)X
1202051546(is)X
1202061620(done)X
1202071797(so)X
1202081889(that)X
1202092030(a)X
1202102087(single)X
1202112299(relocation)X
1202122641(record)X
1202132867(can)X
1202142999(be)X
1202153095(used)X
1202163262(to)X
1202173344(obtain)X
1202183564(the)X
1202193682(final)X
1202203849(target)X
120221576 5568(address)N
120222837(of)X
120223924(every)X
1202241123(instruction)X
1202251485(in)X
1202261567(the)X
1202271685(block.)X
120228576 5760(The)N
120229723(relocatable)X
1202301098(address)X
1202311361(of)X
1202321450(the)X
1202331570(start)X
1202341730(of)X
1202351819(the)X
1202361939(block)X
1202372139(of)X
1202382228(instructions)X
1202392623(is)X
1202402698(specified)X
1202413010(by)X
1202420 f
1202433140(offs)X
1202441 f
120245(.)S
1202463394(The)X
1202473542(symbol)X
1202483800(used)X
1202493970(to)X
120250576 5856(relocate)N
120251860(the)X
120252987(address)X
1202531257(is)X
1202541339(given)X
1202551545(by)X
1202560 f
1202571681(symidx)X
1202581 f
120259(,)S
1202602017(which)X
1202612241(is)X
1202622322(normally)X
1202632639(the)X
1202642765(index)X
1202652971(of)X
1202663066(the)X
1202673192(symbol)X
1202683455(in)X
1202693545(the)X
1202703671(Elf)X
1202713797(symbol)X
120272576 6164(rev)N
120273699(1.18,)X
120274879(10)X
120275979(Jan)X
1202761106(2002)X
1202772217(-)X
1202782264(19)X
1202792364(-)X
120280
12028120 p
120282%%Page: 20 20
1202830(Courier)xf 0 f
12028410 s 0 xH 0 xS 0 f
1202851 f
1202862217 384(-)N
1202872264(20)X
1202882364(-)X
120289576 768(table.)N
120290576 960(It)N
120291645(returns)X
1202920 f
120293916(0)X
1202941 f
120295984(on)X
1202961084(success,)X
1202971365(and)X
1202980 f
1202991529(DW_DLV_NOCOUNT)X
1203001 f
1203012221(on)X
1203022321(error.)X
1203033 f
120304576 1200(5.5.3)N
120305776(dwarf_lne_end_sequence\(\))X
1203060 f
120307576 1344(Dwarf_Unsigned)N
1203081296(dwarf_lne_end_sequence\()X
120309960 1440(Dwarf_P_Debug)N
1203101632(dbg,)X
120311960 1536(Dwarf_Addr)N
1203121632(address;)X
120313960 1632(Dwarf_Error)N
1203141536(*error\))X
1203151 f
120316576 1776(The)N
120317727(function)X
1203180 f
1203191048(dwarf_lne_end_sequence\(\))X
1203201 f
1203212226(indicates)X
1203222537(the)X
1203232662(end)X
1203242805(of)X
1203252899(a)X
1203262962(contiguous)X
1203273340(block)X
1203283545(of)X
1203293639(instructions.)X
1203300 f
120331576 1872(address\(\))N
1203321 f
1203331029(should)X
1203341263(be)X
1203351360(just)X
1203361496(higher)X
1203371722(than)X
1203381881(the)X
1203391999(end)X
1203402135(of)X
1203412222(the)X
1203422340(last)X
1203432471(address)X
1203442732(in)X
1203452814(the)X
1203462932(sequence)X
1203473247(of)X
1203483334(instructions.)X
1203493767(block)X
1203503965(of)X
120351576 1968(instructions,)N
120352990(a)X
1203531047(call)X
1203541184(to)X
1203550 f
1203561295(dwarf_lne_set_address\(\))X
1203571 f
1203582420(will)X
1203592565(have)X
1203602738(to)X
1203612821(be)X
1203622918(made)X
1203633113(to)X
1203643196(set)X
1203653306(the)X
1203663425(address)X
1203673687(of)X
1203683775(the)X
1203693894(start)X
120370576 2064(of)N
120371673(the)X
120372801(target)X
1203731014(address)X
1203741285(of)X
1203751381(the)X
1203761508(block,)X
1203771735(followed)X
1203782049(by)X
1203792158(calls)X
1203802334(to)X
1203810 f
1203822453(dwarf_add_line_entry\(\))X
1203831 f
1203843538(for)X
1203853661(each)X
1203863838(of)X
1203873934(the)X
120388576 2160(instructions)N
120389969(in)X
1203901051(the)X
1203911169(block.)X
120392576 2352(It)N
120393645(returns)X
1203940 f
120395916(0)X
1203961 f
120397984(on)X
1203981084(success,)X
1203991365(and)X
1204000 f
1204011529(DW_DLV_NOCOUNT)X
1204021 f
1204032221(on)X
1204042321(error.)X
1204053 f
120406576 2592(5.5.4)N
120407776(dwarf_add_directory_decl\(\))X
1204080 f
120409576 2736(Dwarf_Unsigned)N
1204101296(dwarf_add_directory_decl\()X
120411960 2832(Dwarf_P_Debug)N
1204121632(dbg,)X
120413960 2928(char)N
1204141200(*name,)X
120415960 3024(Dwarf_Error)N
1204161536(*error\))X
1204171 f
120418576 3168(The)N
120419738(function)X
1204200 f
1204211070(dwarf_add_directory_decl\(\))X
1204221 f
1204232355(adds)X
1204242539(the)X
1204252674(string)X
1204262893(specified)X
1204273220(by)X
1204280 f
1204293365(name)X
1204301 f
1204313594(to)X
1204323694(the)X
1204333830(list)X
1204343965(of)X
120435576 3264(include)N
120436853(directories)X
1204371233(in)X
1204381336(the)X
1204391475(statement)X
1204401823(program)X
1204412136(prologue)X
1204422462(of)X
1204432570(the)X
1204442709(.debug_line)X
1204453125(section.)X
1204463432(The)X
1204473597(string)X
1204483819(should)X
120449576 3360(therefore)N
120450887(name)X
1204511081(a)X
1204521137(directory)X
1204531447(from)X
1204541623(which)X
1204551839(source)X
1204562069(files)X
1204572227(have)X
1204582399(been)X
1204592571(used)X
1204602738(to)X
1204612820(create)X
1204623033(the)X
1204633151(present)X
1204643403(object.)X
120465576 3552(It)N
120466651(returns)X
120467900(the)X
1204681024(index)X
1204691228(of)X
1204701321(the)X
1204711445(string)X
1204721654(just)X
1204731796(added,)X
1204742035(in)X
1204752124(the)X
1204762249(list)X
1204772373(of)X
1204782467(include)X
1204792730(directories)X
1204803096(for)X
1204813217(the)X
1204823342(object.)X
1204833605(This)X
1204843774(index)X
1204853979(is)X
120486576 3648(then)N
120487734(used)X
120488901(to)X
120489983(refer)X
1204901156(to)X
1204911238(this)X
1204921373(string.)X
1204931615(It)X
1204941684(returns)X
1204950 f
1204961955(DW_DLV_NOCOUNT)X
1204971 f
1204982647(on)X
1204992747(error.)X
1205003 f
120501576 3888(5.5.5)N
120502776(dwarf_add_file_decl\(\))X
1205030 f
120504576 4032(Dwarf_Unsigned)N
1205051296(dwarf_add_file_decl\()X
120506960 4128(Dwarf_P_Debug)N
1205071632(dbg,)X
120508960 4224(char)N
1205091200(*name,)X
120510960 4320(Dwarf_Unsigned)N
1205111680(dir_idx,)X
120512960 4416(Dwarf_Unsigned)N
1205131680(time_mod,)X
120514960 4512(Dwarf_Unsigned)N
1205151680(length,)X
120516960 4608(Dwarf_Error)N
1205171536(*error\))X
1205181 f
120519576 4752(The)N
120520723(function)X
1205210 f
1205221040(dwarf_add_file_decl\(\))X
1205231 f
1205242070(adds)X
1205252239(the)X
1205262359(name)X
1205272555(of)X
1205282644(a)X
1205292702(source)X
1205302934(file)X
1205313063(that)X
1205323206(contributed)X
1205333594(to)X
1205343679(the)X
1205353800(present)X
120536576 4848(object.)N
120537834(The)X
120538981(name)X
1205391177(of)X
1205401266(the)X
1205411386(file)X
1205421515(is)X
1205431590(specified)X
1205441902(by)X
1205450 f
1205462032(name)X
1205471 f
1205482246(\(which)X
1205492491(must)X
1205502667(not)X
1205512790(be)X
1205522887(the)X
1205533006(empty)X
1205543227(string)X
1205553430(or)X
1205563518(a)X
1205573575(null)X
1205583720(pointer,)X
1205593988(it)X
120560576 4944(must)N
120561755(point)X
120562943(to)X
1205631029(a)X
1205641089(string)X
1205651295(with)X
1205661461(length)X
1205671685(greater)X
1205681933(than)X
1205692095(0\).)X
1205702226(In)X
1205712317(case)X
1205722480(the)X
1205732602(name)X
1205742800(is)X
1205752877(not)X
1205763004(a)X
1205773065(fully-qualified)X
1205783553(pathname,)X
1205793910(it)X
1205803979(is)X
120581576 5040(prefixed)N
120582868(with)X
1205831033(the)X
1205841154(name)X
1205851351(of)X
1205861441(the)X
1205871562(directory)X
1205881875(specified)X
1205892188(by)X
1205900 f
1205912319(dir_idx)X
1205921 f
120593(.)S
1205940 f
1205952774(dir_idx)X
1205961 f
1205973133(is)X
1205983209(the)X
1205993330(index)X
1206003531(of)X
1206013621(the)X
1206023742(directory)X
120603576 5136(to)N
120604658(be)X
120605754(prefixed)X
1206061042(in)X
1206071124(the)X
1206081242(list)X
1206091359(builtup)X
1206101605(using)X
1206110 f
1206121826(dwarf_add_directory_decl\(\))X
1206131 f
120614(.)S
1206150 f
120616576 5328(time_mod)N
1206171 f
120618982(gives)X
1206191173(the)X
1206201293(time)X
1206211457(at)X
1206221537(which)X
1206231755(the)X
1206241875(file)X
1206252004(was)X
1206262151(last)X
1206272284(modified,)X
1206282615(and)X
1206290 f
1206302782(length)X
1206311 f
1206323093(gives)X
1206333285(the)X
1206343406(length)X
1206353629(of)X
1206363719(the)X
1206373840(file)X
1206383970(in)X
120639576 5424(bytes.)N
120640576 5616(It)N
120641650(returns)X
120642898(the)X
1206431021(index)X
1206441224(of)X
1206451316(the)X
1206461439(source)X
1206471674(file)X
1206481806(in)X
1206491893(the)X
1206502016(list)X
1206512138(built)X
1206522309(up)X
1206532414(so)X
1206542510(far)X
1206552625(using)X
1206562823(this)X
1206572963(function,)X
1206583275(on)X
1206593380(success.)X
1206603686(This)X
1206613854(index)X
120662576 5712(can)N
120663723(then)X
120664896(be)X
1206651007(used)X
1206661189(to)X
1206671286(refer)X
1206681474(to)X
1206691571(this)X
1206701721(source)X
1206711966(file)X
1206722108(in)X
1206732205(calls)X
1206742387(to)X
1206750 f
1206762512(dwarf_add_line_entry\(\))X
1206771 f
120678(.)S
1206793643(On)X
1206803776(error,)X
1206813988(it)X
120682576 5808(returns)N
1206830 f
120684847(DW_DLV_NOCOUNT)X
1206851 f
120686(.)S
120687576 6164(rev)N
120688699(1.18,)X
120689879(10)X
120690979(Jan)X
1206911106(2002)X
1206922217(-)X
1206932264(20)X
1206942364(-)X
120695
12069621 p
120697%%Page: 21 21
1206980(Courier)xf 0 f
12069910 s 0 xH 0 xS 0 f
1207001 f
1207012217 384(-)N
1207022264(21)X
1207032364(-)X
1207043 f
12070511 s
120706576 768(5.6)N
120707730(Fast)X
120708913(Access)X
1207091183(\(aranges\))X
1207101556(Operations)X
1207111 f
12071210 s
120713576 912(These)N
120714788(functions)X
1207151106(operate)X
1207161363(on)X
1207171463(the)X
1207181581(.debug_aranges)X
1207192103(section.)X
1207203 f
120721576 1152(5.6.1)N
120722776(dwarf_add_arange\(\))X
1207230 f
120724576 1296(Dwarf_Unsigned)N
1207251296(dwarf_add_arange\()X
120726960 1392(Dwarf_P_Debug)N
1207271632(dbg,)X
120728960 1488(Dwarf_Addr)N
1207291488(begin_address,)X
120730960 1584(Dwarf_Unsigned)N
1207311680(length,)X
120732960 1680(Dwarf_Signed)N
1207331584(symbol_index,)X
120734960 1776(Dwarf_Error)N
1207351536(*error\))X
1207361 f
120737576 1920(The)N
120738724(function)X
1207390 f
1207401042(dwarf_add_arange\(\))X
1207411 f
1207421929(adds)X
1207432100(another)X
1207442365(address)X
1207452630(range)X
1207462833(to)X
1207472919(be)X
1207483019(added)X
1207493235(to)X
1207503321(the)X
1207513443(section)X
1207523694(containing)X
120753576 2016(address)N
120754854(range)X
1207551070(information,)X
1207561505(.debug_aranges.)X
1207572084(The)X
1207582245(relocatable)X
1207592634(start)X
1207602808(address)X
1207613085(of)X
1207623188(the)X
1207633322(range)X
1207643537(is)X
1207653626(specified)X
1207663952(by)X
1207670 f
120768576 2112(begin_address)N
1207691 f
120770(,)S
1207711242(and)X
1207721381(the)X
1207731502(length)X
1207741725(of)X
1207751815(the)X
1207761936(address)X
1207772200(range)X
1207782402(is)X
1207792478(specified)X
1207802791(by)X
1207810 f
1207822922(length)X
1207831 f
120784(.)S
1207853273(The)X
1207863421(relocatable)X
1207873797(symbol)X
120788576 2208(to)N
120789665(be)X
120790768(used)X
120791942(to)X
1207921031(relocate)X
1207931313(the)X
1207941438(start)X
1207951602(of)X
1207961695(the)X
1207971819(address)X
1207982086(range)X
1207992291(is)X
1208002370(specified)X
1208012686(by)X
1208020 f
1208032820(symbol_index)X
1208041 f
120805(,)S
1208063442(which)X
1208073664(is)X
1208083743(normally)X
120809576 2304(the)N
120810694(index)X
120811892(of)X
120812979(the)X
1208131097(symbol)X
1208141352(in)X
1208151434(the)X
1208161552(Elf)X
1208171670(symbol)X
1208181925(table.)X
120819576 2496(It)N
120820645(returns)X
120821888(a)X
120822944(non-zero)X
1208231250(value)X
1208241444(on)X
1208251544(success,)X
1208261825(and)X
1208270 f
1208281989(0)X
1208291 f
1208302057(on)X
1208312157(error.)X
1208323 f
120833576 2736(5.6.2)N
120834776(dwarf_add_arange_b\(\))X
1208350 f
120836576 2880(Dwarf_Unsigned)N
1208371296(dwarf_add_arange_b\()X
120838960 2976(Dwarf_P_Debug)N
1208391632(dbg,)X
120840960 3072(Dwarf_Addr)N
1208411488(begin_address,)X
120842960 3168(Dwarf_Unsigned)N
1208431680(length,)X
120844960 3264(Dwarf_Unsigned)N
1208451680(symbol_index,)X
120846960 3360(Dwarf_Unsigned)N
1208471680(end_symbol_index,)X
120848960 3456(Dwarf_Addr)N
1208491680(offset_from_end_symbol,)X
120850960 3552(Dwarf_Error)N
1208511536(*error\))X
1208521 f
120853576 3696(The)N
120854746(function)X
1208550 f
1208561087(dwarf_add_arange_b\(\))X
1208571 f
1208582093(adds)X
1208592286(another)X
1208602573(address)X
1208612860(range)X
1208623085(to)X
1208633193(be)X
1208643315(added)X
1208653553(to)X
1208663661(the)X
1208673805(section)X
120868576 3792(containing)N
120869934(address)X
1208701195(range)X
1208711394(information,)X
1208721812(.debug_aranges.)X
120873576 3984(If)N
1208740 f
120875697(end_symbol_index)X
1208761532(is)X
1208771695(not)X
1208781906(zero)X
1208791 f
1208802137(we)X
1208812270(are)X
1208822408(using)X
1208832620(two)X
1208842779(symbols)X
1208853084(to)X
1208863185(create)X
1208873418(a)X
1208883494(length)X
1208893734(\(must)X
1208903956(be)X
1208910 f
120892576 4080(DW_DLC_SYMBOLIC_RELOCATIONS)N
1208931 f
1208941892(to)X
1208951974(be)X
1208962070(useful\))X
1208970 f
120898736 4272(begin_address)N
1208991 f
1209001445(is)X
1209011583(the)X
1209021766(offset)X
1209032034(from)X
1209042275(the)X
1209052459(symbol)X
1209062780(specified)X
1209073156(by)X
1209080 f
1209093350(symbol_index)X
1209101 f
1209114012(.)X
1209120 f
120913736 4368(offset_from_end_symbol)N
1209141 f
1209151818(is)X
1209161897(the)X
1209172021(offset)X
1209182230(from)X
1209192412(the)X
1209202536(symbol)X
1209212796(specified)X
1209223111(by)X
1209230 f
1209243244(end_symbol_index)X
1209251 f
120926(.)S
1209270 f
120928736 4464(length)N
1209291 f
1209301066(is)X
1209311161(ignored.)X
1209321488(This)X
1209331672(begin-end)X
1209342035(pair)X
1209352202(will)X
1209362368(be)X
1209372487(show)X
1209382699(up)X
1209392822(in)X
1209402927(the)X
1209413068(relocation)X
1209423432(array)X
1209433641(returned)X
1209443952(by)X
1209450 f
120946736 4560(dwarf_get_relocation_info\(\))N
1209471 f
1209482111(as)X
1209492256(a)X
1209500 f
1209512398(dwarf_drt_first_of_length_pair)X
1209521 f
1209533916(and)X
1209540 f
120955736 4656(dwarf_drt_second_of_length_pair)N
1209561 f
1209572250(pair)X
1209582401(of)X
1209592494(relocation)X
1209602842(records.)X
1209613146(The)X
1209623298(consuming)X
1209633676(application)X
120964736 4752(will)N
120965880(turn)X
1209661029(that)X
1209671169(pair)X
1209681314(into)X
1209691458(something)X
1209701811(conceptually)X
1209712241(identical)X
1209722537(to)X
1209731076 4944(.word)N
1209741281(end_symbol)X
1209751692(+)X
1209761757(offset_from_end)X
1209772312(-)X
1209782359(\\)X
1209791116 5040(\()N
1209801163(start_symbol)X
1209811596(+)X
1209821661(begin_address\))X
120983736 5232(The)N
120984886(reason)X
1209851121(offsets)X
1209861360(are)X
1209871484(allowed)X
1209881763(on)X
1209891868(the)X
1209901991(begin)X
1209912194(and)X
1209922335(end)X
1209932476(symbols)X
1209942768(is)X
1209952847(to)X
1209962935(allow)X
1209973139(the)X
1209983263(caller)X
1209993468(to)X
1210003556(re-use)X
1210013779(existing)X
121002736 5328(labels)N
121003960(when)X
1210041171(the)X
1210051306(labels)X
1210061530(are)X
1210071666(available)X
1210081993(and)X
1210092146(the)X
1210102281(corresponding)X
1210112777(offset)X
1210122997(is)X
1210133087(known)X
1210143341(\(economizing)X
1210153818(on)X
1210163934(the)X
121017736 5424(number)N
1210181018(of)X
1210191122(labels)X
1210201346(in)X
1210211445(use\).)X
1210221656(The)X
1210231838('offset_from_end)X
1210242437(-)X
1210252501(begin_address')X
1210263024(will)X
1210273185(actually)X
1210283477(be)X
1210293591(in)X
1210303691(the)X
1210313827(binary)X
121032736 5520(stream,)N
1210331002(not)X
1210341136(the)X
1210351266(relocation)X
1210361619(record,)X
1210371877(so)X
1210381980(the)X
1210392110(app)X
1210402258(processing)X
1210412633(the)X
1210422762(relocation)X
1210433114(array)X
1210443311(must)X
1210453497(read)X
1210463667(that)X
1210473818(stream)X
121048736 5616(value)N
121049930(into)X
1210501074(\(for)X
1210511215(example\))X
1210521534(net_offset)X
1210531875(and)X
1210542011(actually)X
1210552285(emit)X
1210562447(something)X
1210572800(like)X
1210581076 5808(.word)N
1210591281(end_symbol)X
1210601692(-)X
1210611739(start_symbol)X
1210622172(+)X
1210632237(net_offset)X
121064576 6164(rev)N
121065699(1.18,)X
121066879(10)X
121067979(Jan)X
1210681106(2002)X
1210692217(-)X
1210702264(21)X
1210712364(-)X
121072
12107322 p
121074%%Page: 22 22
1210750(Courier)xf 0 f
12107610 s 0 xH 0 xS 0 f
1210771 f
1210782217 384(-)N
1210792264(22)X
1210802364(-)X
121081576 768(If)N
1210820 f
121083679(end_symbol_index)X
1210841 f
1210851468(is)X
1210861542(zero)X
1210871702(we)X
1210881817(must)X
1210891994(be)X
1210902092(given)X
1210912292(a)X
1210922350(length)X
1210932572(\(either)X
1210940 f
1210952832(DW_DLC_STREAM_RELOCATIONS)X
1210961 f
121097576 864(or)N
1210980 f
121099691(DW_DLC_SYMBOLIC_RELOCATIONS)X
1211001 f
1211012007(\):)X
121102736 1056(The)N
121103889(relocatable)X
1211041270(start)X
1211051436(address)X
1211061705(of)X
1211071800(the)X
1211081926(range)X
1211092133(is)X
1211102214(specified)X
1211112532(by)X
1211120 f
1211132668(begin_address)X
1211141 f
121115(,)S
1211163340(and)X
1211173484(the)X
1211183610(length)X
1211193838(of)X
1211203934(the)X
121121736 1152(address)N
1211221000(range)X
1211231202(is)X
1211241278(specified)X
1211251591(by)X
1211260 f
1211271722(length)X
1211281 f
121129(.)S
1211302073(The)X
1211312221(relocatable)X
1211322596(symbol)X
1211332853(to)X
1211342937(be)X
1211353035(used)X
1211363204(to)X
1211373288(relocate)X
1211383565(the)X
1211393685(start)X
1211403845(of)X
1211413934(the)X
121142736 1248(address)N
121143999(range)X
1211441200(is)X
1211451275(specified)X
1211461587(by)X
1211470 f
1211481717(symbol_index)X
1211491 f
121150(,)S
1211512335(which)X
1211522553(is)X
1211532628(normally)X
1211542939(the)X
1211553059(index)X
1211563259(of)X
1211573349(the)X
1211583470(symbol)X
1211593728(in)X
1211603813(the)X
1211613934(Elf)X
121162736 1344(symbol)N
121163991(table.)X
1211641207(The)X
1211650 f
1211661380(offset_from_end_symbol)X
1211671 f
1211682456(is)X
1211692529(ignored.)X
121170576 1632(It)N
121171645(returns)X
121172888(a)X
121173944(non-zero)X
1211741250(value)X
1211751444(on)X
1211761544(success,)X
1211771825(and)X
1211780 f
1211791989(0)X
1211801 f
1211812057(on)X
1211822157(error.)X
1211833 f
12118411 s
121185576 1968(5.7)N
121186730(Fast)X
121187913(Access)X
1211881183(\(pubnames\))X
1211891649(Operations)X
1211901 f
12119110 s
121192576 2112(These)N
121193788(functions)X
1211941106(operate)X
1211951363(on)X
1211961463(the)X
1211971581(.debug_pubnames)X
1211982182(section.)X
1211993 f
121200576 2352(5.7.1)N
121201776(dwarf_add_pubname\(\))X
1212020 f
121203576 2496(Dwarf_Unsigned)N
1212041296(dwarf_add_pubname\()X
121205960 2592(Dwarf_P_Debug)N
1212061632(dbg,)X
121207960 2688(Dwarf_P_Die)N
1212081536(die,)X
121209960 2784(char)N
1212101200(*pubname_name,)X
121211960 2880(Dwarf_Error)N
1212121536(*error\))X
1212131 f
121214576 3024(The)N
121215721(function)X
1212160 f
1212171036(dwarf_add_pubname\(\))X
1212181 f
1212191968(adds)X
1212202135(the)X
1212212253(pubname)X
1212222567(specified)X
1212232877(by)X
1212240 f
1212253006(pubname_name)X
1212261 f
1212273603(to)X
1212283686(the)X
1212293805(section)X
121230576 3120(containing)N
121231934(pubnames,)X
1212321299(i.e.)X
121233616 3216(.debug_pubnames.)N
1212341257(The)X
1212350 f
1212361430(DIE)X
1212371 f
1212381594(that)X
1212391734(represents)X
1212402080(the)X
1212412198(function)X
1212422485(being)X
1212432683(named)X
1212442917(is)X
1212452990(specified)X
1212463300(by)X
1212470 f
1212483428(die)X
1212491 f
121250(.)S
121251576 3408(It)N
121252645(returns)X
121253888(a)X
121254944(non-zero)X
1212551250(value)X
1212561444(on)X
1212571544(success,)X
1212581825(and)X
1212590 f
1212601989(0)X
1212611 f
1212622057(on)X
1212632157(error.)X
1212643 f
12126511 s
121266576 3648(5.8)N
121267730(Fast)X
121268913(Access)X
1212691183(\(weak)X
1212701429(names\))X
1212711719(Operations)X
1212721 f
12127310 s
121274576 3792(These)N
121275788(functions)X
1212761106(operate)X
1212771363(on)X
1212781463(the)X
1212791581(.debug_weaknames)X
1212802232(section.)X
1212813 f
121282576 4032(5.8.1)N
121283776(dwarf_add_weakname\(\))X
1212840 f
121285576 4176(Dwarf_Unsigned)N
1212861296(dwarf_add_weakname\()X
121287960 4272(Dwarf_P_Debug)N
1212881632(dbg,)X
121289960 4368(Dwarf_P_Die)N
1212901536(die,)X
121291960 4464(char)N
1212921200(*weak_name,)X
121293960 4560(Dwarf_Error)N
1212941536(*error\))X
1212951 f
121296576 4704(The)N
121297723(function)X
1212980 f
1212991040(dwarf_add_weakname\(\))X
1213001 f
1213012022(adds)X
1213022191(the)X
1213032311(weak)X
1213042503(name)X
1213052700(specified)X
1213063013(by)X
1213070 f
1213083144(weak_name)X
1213091 f
1213103599(to)X
1213113684(the)X
1213123805(section)X
121313576 4800(containing)N
121314934(weak)X
1213151124(names,)X
1213161369(i.e.)X
121317596 4896(.debug_weaknames.)N
1213181287(The)X
1213190 f
1213201460(DIE)X
1213211 f
1213221624(that)X
1213231764(represents)X
1213242110(the)X
1213252228(function)X
1213262515(being)X
1213272713(named)X
1213282947(is)X
1213293020(specified)X
1213303330(by)X
1213310 f
1213323458(die)X
1213331 f
121334(.)S
121335576 5088(It)N
121336645(returns)X
121337888(a)X
121338944(non-zero)X
1213391250(value)X
1213401444(on)X
1213411544(success,)X
1213421825(and)X
1213430 f
1213441989(0)X
1213451 f
1213462057(on)X
1213472157(error.)X
1213483 f
12134911 s
121350576 5328(5.9)N
121351730(Static)X
121352967(Function)X
1213531327(Names)X
1213541602(Operations)X
1213551 f
12135610 s
121357576 5472(The)N
121358725(.debug_funcnames)X
1213591353(section)X
1213601604(contains)X
1213611895(the)X
1213622017(names)X
1213632246(of)X
1213642337(static)X
1213652530(function)X
1213662821(names)X
1213673050(defined)X
1213683315(in)X
1213693401(the)X
1213703523(object,)X
1213713763(and)X
1213723903(also)X
121373576 5568(the)N
121374694(offsets)X
121375928(of)X
1213761015(the)X
1213770 f
1213781161(DIE)X
1213791 f
121380(s)S
1213811356(that)X
1213821496(represent)X
1213831811(the)X
1213841929(definitions)X
1213852291(of)X
1213862378(the)X
1213872496(functions)X
1213882814(in)X
1213892896(the)X
1213903014(.debug_info)X
1213913419(section.)X
121392576 6164(rev)N
121393699(1.18,)X
121394879(10)X
121395979(Jan)X
1213961106(2002)X
1213972217(-)X
1213982264(22)X
1213992364(-)X
121400
12140123 p
121402%%Page: 23 23
1214030(Courier)xf 0 f
12140410 s 0 xH 0 xS 0 f
1214051 f
1214062217 384(-)N
1214072264(23)X
1214082364(-)X
1214093 f
121410576 768(5.9.1)N
121411776(dwarf_add_funcname\(\))X
1214120 f
121413576 912(Dwarf_Unsigned)N
1214141296(dwarf_add_funcname\()X
121415960 1008(Dwarf_P_Debug)N
1214161632(dbg,)X
121417960 1104(Dwarf_P_Die)N
1214181536(die,)X
121419960 1200(char)N
1214201200(*func_name,)X
121421960 1296(Dwarf_Error)N
1214221536(*error\))X
1214231 f
121424576 1440(The)N
121425725(function)X
1214260 f
1214271044(dwarf_add_funcname\(\))X
1214281 f
1214292028(adds)X
1214302199(the)X
1214312321(name)X
1214322519(of)X
1214332610(a)X
1214342670(static)X
1214352863(function)X
1214363154(specified)X
1214373468(by)X
1214380 f
1214393600(func_name)X
1214401 f
121441576 1536(to)N
121442670(the)X
121443800(section)X
1214441059(containing)X
1214451429(the)X
1214461559(names)X
1214471796(of)X
1214481895(static)X
1214492096(functions)X
1214502426(defined)X
1214512699(in)X
1214522793(the)X
1214532923(object)X
1214543151(represented)X
1214553553(by)X
1214560 f
1214573692(dbg)X
1214581 f
121459(.)S
1214603907(The)X
1214610 f
121462576 1632(DIE)N
1214631 f
121464740(that)X
121465880(represents)X
1214661226(the)X
1214671344(definition)X
1214681675(of)X
1214691762(the)X
1214701880(function)X
1214712167(is)X
1214722240(specified)X
1214732550(by)X
1214740 f
1214752678(die)X
1214761 f
121477(.)S
121478576 1824(It)N
121479645(returns)X
121480888(a)X
121481944(non-zero)X
1214821250(value)X
1214831444(on)X
1214841544(success,)X
1214851825(and)X
1214860 f
1214871989(0)X
1214881 f
1214892057(on)X
1214902157(error.)X
1214913 f
12149211 s
121493576 2064(5.10)N
121494774(File-scope)X
1214951173(User-defined)X
1214961678(Type)X
1214971891(Names)X
1214982166(Operations)X
1214991 f
12150010 s
121501576 2208(The)N
121502723(.debug_typenames)X
1215031344(section)X
1215041593(contains)X
1215051882(the)X
1215062002(names)X
1215072229(of)X
1215082318(file-scope)X
1215092657(user-defined)X
1215103081(types)X
1215113272(in)X
1215123356(the)X
1215133476(given)X
1215143677(object,)X
1215153916(and)X
121516576 2304(also)N
121517725(the)X
121518843(offsets)X
1215191077(of)X
1215201164(the)X
1215210 f
1215221310(DIE)X
1215231 f
121524(s)S
1215251505(that)X
1215261645(represent)X
1215271960(the)X
1215282078(definitions)X
1215292440(of)X
1215302527(the)X
1215312645(types)X
1215322834(in)X
1215332916(the)X
1215343034(.debug_info)X
1215353439(section.)X
1215363 f
121537576 2544(5.10.1)N
121538816(dwarf_add_typename\(\))X
1215390 f
121540576 2688(Dwarf_Unsigned)N
1215411296(dwarf_add_typename\()X
121542960 2784(Dwarf_P_Debug)N
1215431632(dbg,)X
121544960 2880(Dwarf_P_Die)N
1215451536(die,)X
121546960 2976(char)N
1215471200(*type_name,)X
121548960 3072(Dwarf_Error)N
1215491536(*error\))X
1215501 f
121551576 3216(The)N
121552728(function)X
1215530 f
1215541050(dwarf_add_typename\(\))X
1215551 f
1215562037(adds)X
1215572211(the)X
1215582336(name)X
1215592537(of)X
1215602631(a)X
1215612694(file-scope)X
1215623038(user-defined)X
1215633468(type)X
1215643634(specified)X
1215653952(by)X
1215660 f
121567576 3312(type_name)N
1215681 f
1215691037(to)X
1215701128(the)X
1215711255(section)X
1215721511(that)X
1215731660(contains)X
1215741956(the)X
1215752083(names)X
1215762316(of)X
1215772411(file-scope)X
1215782756(user-defined)X
1215793186(type.)X
1215803392(The)X
1215813545(object)X
1215823769(that)X
1215833917(this)X
121584576 3408(section)N
121585825(belongs)X
1215861096(to)X
1215871180(is)X
1215881255(specified)X
1215891567(by)X
1215900 f
1215911697(dbg)X
1215921 f
121593(.)S
1215941903(The)X
1215950 f
1215962078(DIE)X
1215971 f
1215982244(that)X
1215992387(represents)X
1216002736(the)X
1216012857(definition)X
1216023191(of)X
1216033281(the)X
1216043402(type)X
1216053563(is)X
1216063639(specified)X
1216073952(by)X
1216080 f
121609576 3504(die)N
1216101 f
121611(.)S
121612576 3696(It)N
121613645(returns)X
121614888(a)X
121615944(non-zero)X
1216161250(value)X
1216171444(on)X
1216181544(success,)X
1216191825(and)X
1216200 f
1216211989(0)X
1216221 f
1216232057(on)X
1216242157(error.)X
1216253 f
12162611 s
121627576 3936(5.11)N
121628774(File-scope)X
1216291173(Static)X
1216301410(Variable)X
1216311760(Names)X
1216322035(Operations)X
1216331 f
12163410 s
121635576 4080(The)N
121636722(.debug_varnames)X
1216371307(section)X
1216381556(contains)X
1216391845(the)X
1216401965(names)X
1216412192(of)X
1216422281(file-scope)X
1216432620(static)X
1216442811(variables)X
1216453123(in)X
1216463207(the)X
1216473327(given)X
1216483527(object,)X
1216493765(and)X
1216503903(also)X
121651576 4176(the)N
121652694(offsets)X
121653928(of)X
1216541015(the)X
1216550 f
1216561161(DIE)X
1216571 f
121658(s)S
1216591356(that)X
1216601496(represent)X
1216611811(the)X
1216621929(definition)X
1216632260(of)X
1216642347(the)X
1216652465(variables)X
1216662775(in)X
1216672857(the)X
1216682975(.debug_info)X
1216693380(section.)X
1216703 f
121671576 4416(5.11.1)N
121672816(dwarf_add_varname\(\))X
1216730 f
121674576 4560(Dwarf_Unsigned)N
1216751296(dwarf_add_varname\()X
121676960 4656(Dwarf_P_Debug)N
1216771632(dbg,)X
121678960 4752(Dwarf_P_Die)N
1216791536(die,)X
121680960 4848(char)N
1216811200(*var_name,)X
121682960 4944(Dwarf_Error)N
1216831536(*error\))X
1216841 f
121685576 5088(The)N
121686741(function)X
1216870 f
1216881076(dwarf_add_varname\(\))X
1216891 f
1216902028(adds)X
1216912215(the)X
1216922353(name)X
1216932568(of)X
1216942676(a)X
1216952753(file-scope)X
1216963111(static)X
1216973321(variable)X
1216983621(specified)X
1216993952(by)X
1217000 f
121701576 5184(var_name)N
1217021 f
121703996(to)X
1217041094(the)X
1217051228(section)X
1217061491(that)X
1217071647(contains)X
1217081950(the)X
1217092084(names)X
1217102325(of)X
1217112428(file-scope)X
1217122781(static)X
1217132986(variables)X
1217143312(defined)X
1217153588(by)X
1217163703(the)X
1217173836(object)X
121718576 5280(represented)N
121719967(by)X
1217200 f
1217211095(dbg)X
1217221 f
121723(.)S
1217241299(The)X
1217250 f
1217261472(DIE)X
1217271 f
1217281636(that)X
1217291776(represents)X
1217302122(the)X
1217312240(definition)X
1217322571(of)X
1217332658(the)X
1217342776(static)X
1217352965(variable)X
1217363244(is)X
1217373317(specified)X
1217383627(by)X
1217390 f
1217403755(die)X
1217411 f
121742(.)S
121743576 5472(It)N
121744645(returns)X
121745888(a)X
121746944(non-zero)X
1217471250(value)X
1217481444(on)X
1217491544(success,)X
1217501825(and)X
1217510 f
1217521989(0)X
1217531 f
1217542057(on)X
1217552157(error.)X
121756576 6164(rev)N
121757699(1.18,)X
121758879(10)X
121759979(Jan)X
1217601106(2002)X
1217612217(-)X
1217622264(23)X
1217632364(-)X
121764
12176524 p
121766%%Page: 24 24
1217670(Courier)xf 0 f
12176810 s 0 xH 0 xS 0 f
1217691 f
1217702217 384(-)N
1217712264(24)X
1217722364(-)X
1217733 f
12177411 s
121775576 768(5.12)N
121776774(Macro)X
1217771045(Information)X
1217781526(Creation)X
1217791 f
12178010 s
121781576 912(All)N
121782702(strings)X
121783939(passed)X
1217841178(in)X
1217851265(by)X
1217861370(the)X
1217871493(caller)X
1217881697(are)X
1217891821(copied)X
1217902060(by)X
1217912165(these)X
1217922355(functions,)X
1217932698(so)X
1217942794(the)X
1217952917(space)X
1217963121(in)X
1217973208(which)X
1217983429(the)X
1217993552(caller)X
1218003756(provides)X
121801576 1008(the)N
121802701(strings)X
121803941(may)X
1218041106(be)X
1218051209(ephemeral)X
1218061570(\(on)X
1218071703(the)X
1218081827(stack,)X
1218092038(or)X
1218102131(immediately)X
1218112557(reused)X
1218122793(or)X
1218132886(whatever\))X
1218143234(without)X
1218153504(this)X
1218163645(causing)X
1218173916(any)X
121818576 1104(difficulty.)N
1218193 f
121820576 1344(5.12.1)N
121821816 0.1953(dwarf_def_macro\(\))AX
1218220 f
121823576 1488(int)N
121824768(dwarf_def_macro\(Dwarf_P_Debug)X
1218252208(dbg,)X
121826960 1584(Dwarf_Unsigned)N
1218271680(lineno,)X
121828960 1680(char)N
1218291200(*name)X
121830960 1776(char)N
1218311200(*value,)X
121832960 1872(Dwarf_Error)N
1218331536(*error\);)X
1218341 f
121835576 2016(Adds)N
121836766(a)X
121837823(macro)X
1218381045(definition.)X
1218391417(The)X
1218400 f
1218411591(name)X
1218421 f
1218431804(argument)X
1218442128(should)X
1218452362(include)X
1218462620(the)X
1218472740(parentheses)X
1218483137(and)X
1218493275(parameter)X
1218503619(names)X
1218513846(if)X
1218523917(this)X
121853576 2112(is)N
121854652(a)X
121855711(function-like)X
1218561148(macro.)X
1218571411(Neither)X
1218581674(string)X
1218591878(should)X
1218602113(contain)X
1218612371(extraneous)X
1218622741(whitespace.)X
1218630 f
1218643216(dwarf_def_macro\(\))X
1218651 f
121866576 2208(adds)N
121867748(the)X
121868871(mandated)X
1218691208(space)X
1218701412(after)X
1218711585(the)X
1218721708(name)X
1218731907(and)X
1218742048(before)X
1218752279(the)X
1218762402(value)X
1218772621(in)X
1218782708(the)X
1218792831(output)X
1218803060(DWARF)X
1218813375(section\(but)X
1218823757(does)X
1218833930(not)X
121884576 2304(change)N
121885829(the)X
121886951(strings)X
1218871188(pointed)X
1218881452(to)X
1218891538(by)X
1218901642(the)X
1218911764(arguments\).)X
1218922189(If)X
1218932267(this)X
1218942406(is)X
1218952483(a)X
1218962543(definition)X
1218972878(before)X
1218983108(any)X
1218993248(files)X
1219003410(are)X
1219013533(read,)X
1219020 f
1219033744(lineno)X
1219041 f
121905576 2400(should)N
121906810(be)X
121907907(0.)X
1219081008(Returns)X
1219090 f
1219101306(DW_DLV_ERROR)X
1219111 f
1219121903(and)X
1219132040(sets)X
1219140 f
1219152209(error)X
1219161 f
1219172470(if)X
1219182540(there)X
1219192722(is)X
1219202796(an)X
1219212893(error.)X
1219223111(Returns)X
1219230 f
1219243409(DW_DLV_OK)X
1219251 f
1219263863(if)X
1219273934(the)X
121928576 2496(call)N
121929712(was)X
121930857(successful.)X
1219313 f
121932576 2832(5.12.2)N
121933816(dwarf_undef_macro\(\))X
1219340 f
121935576 2976(int)N
121936768(dwarf_undef_macro\(Dwarf_P_Debug)X
1219372304(dbg,)X
121938960 3072(Dwarf_Unsigned)N
1219391680(lineno,)X
121940960 3168(char)N
1219411200(*name,)X
121942960 3264(Dwarf_Error)N
1219431536(*error\);)X
1219441 f
121945576 3408(Adds)N
121946772(a)X
121947835(macro)X
1219481064(un-definition)X
1219491510(note.)X
1219501716(If)X
1219511798(this)X
1219521941(is)X
1219532022(a)X
1219542086(definition)X
1219552425(before)X
1219562659(any)X
1219572803(files)X
1219582969(are)X
1219593096(read,)X
1219600 f
1219613311(lineno)X
1219621 f
1219633627(should)X
1219643868(be)X
1219653972(0.)X
121966576 3504(Returns)N
1219670 f
121968885(DW_DLV_ERROR)X
1219691 f
1219701492(and)X
1219711639(sets)X
1219720 f
1219731818(error)X
1219741 f
1219752089(if)X
1219762169(there)X
1219772361(is)X
1219782445(an)X
1219792552(error.)X
1219802780(Returns)X
1219810 f
1219823088(DW_DLV_OK)X
1219831 f
1219843551(if)X
1219853631(the)X
1219863760(call)X
1219873907(was)X
121988576 3600(successful.)N
1219893 f
121990576 3936(5.12.3)N
121991816 0.1848(dwarf_start_macro_file\(\))AX
1219920 f
121993576 4080(int)N
121994768(dwarf_start_macro_file\(Dwarf_P_Debug)X
1219952544(dbg,)X
121996960 4176(Dwarf_Unsigned)N
1219971680(lineno,)X
121998960 4272(Dwarf_Unsigned)N
1219991680(fileindex,)X
122000960 4368(Dwarf_Error)N
1220011536(*error\);)X
122002576 4512(fileindex)N
1220031 f
1220041050(is)X
1220051145(an)X
1220061263(index)X
1220071483(in)X
1220081587(the)X
1220091727(.debug_line)X
1220102145(header:)X
1220112445(the)X
1220122586(index)X
1220132807(of)X
1220142917(the)X
1220153058(file)X
1220163208(name.)X
1220173465(See)X
1220183624(the)X
1220193765(function)X
1220200 f
122021576 4608(dwarf_add_file_decl\(\))N
1220221 f
122023(.)S
1220241654(The)X
1220250 f
1220261837(lineno)X
1220271 f
1220282155(should)X
1220292397(be)X
1220302502(0)X
1220312571(if)X
1220322649(this)X
1220332793(file)X
1220342929(is)X
1220353011(the)X
1220363138(file)X
1220373274(of)X
1220383370(the)X
1220393497(compilation)X
1220403908(unit)X
122041576 4704(source)N
122042809(itself)X
122043992(\(which,)X
1220441258(of)X
1220451348(course,)X
1220461601(is)X
1220471677(not)X
1220481802(a)X
1220491861(#include)X
1220502160(in)X
1220512245(any)X
1220522384(file\).)X
1220532581(Returns)X
1220540 f
1220552881(DW_DLV_ERROR)X
1220561 f
1220573480(and)X
1220583620(sets)X
1220590 f
1220603792(error)X
1220611 f
122062576 4800(if)N
122063645(there)X
122064826(is)X
122065899(an)X
122066995(error.)X
1220671212(Returns)X
1220680 f
1220691509(DW_DLV_OK)X
1220701 f
1220711961(if)X
1220722030(the)X
1220732148(call)X
1220742284(was)X
1220752429(successful.)X
1220763 f
122077576 5136(5.12.4)N
122078816(dwarf_end_macro_file\(\))X
1220790 f
122080576 5280(int)N
122081768(dwarf_end_macro_file\(Dwarf_P_Debug)X
1220822448(dbg,)X
122083960 5376(Dwarf_Error)N
1220841536(*error\);)X
1220851 f
122086576 5520(Returns)N
1220870 f
122088884(DW_DLV_ERROR)X
1220891 f
1220901491(and)X
1220911638(sets)X
1220920 f
1220931817(error)X
1220941 f
1220952088(if)X
1220962168(there)X
1220972360(is)X
1220982444(an)X
1220992551(error.)X
1221002779(Returns)X
1221010 f
1221023087(DW_DLV_OK)X
1221031 f
1221043550(if)X
1221053630(the)X
1221063759(call)X
1221073907(was)X
122108576 5616(successful.)N
122109576 6164(rev)N
122110699(1.18,)X
122111879(10)X
122112979(Jan)X
1221131106(2002)X
1221142217(-)X
1221152264(24)X
1221162364(-)X
122117
12211825 p
122119%%Page: 25 25
1221200(Courier)xf 0 f
12212110 s 0 xH 0 xS 0 f
1221221 f
1221232217 384(-)N
1221242264(25)X
1221252364(-)X
1221263 f
122127576 768(5.12.5)N
122128816(dwarf_vendor_ext\(\))X
1221290 f
122130576 912(int)N
122131768(dwarf_vendor_ext\(Dwarf_P_Debug)X
1221322256(dbg,)X
122133768 1008(Dwarf_Unsigned)N
1221341488(constant,)X
122135768 1104(char)N
1221361008(*)X
1221371488(string,)X
122138768 1200(Dwarf_Error*)N
1221391488(error\);)X
1221401 f
122141576 1344(The)N
122142732(meaning)X
1221431039(of)X
1221441137(the)X
1221450 f
1221461294(constant)X
1221471 f
1221481709(and)X
1221491856(the)X
1221500 f
1221511954(string)X
1221521 f
1221532273(in)X
1221542366(the)X
1221552495(macro)X
1221562727(info)X
1221572888(section)X
1221583147(are)X
1221593278(undefined)X
1221603631(by)X
1221613743(DWARF)X
122162576 1440(itself,)N
122163777(but)X
122164900(the)X
1221651019(string)X
1221661222(must)X
1221671398(be)X
1221681495(an)X
1221691592(ordinary)X
1221701885(null)X
1221712030(terminated)X
1221722394(string.)X
1221732636(This)X
1221742798(call)X
1221752934(is)X
1221763007(not)X
1221773129(an)X
1221783225(extension)X
1221793552(to)X
1221803634(DWARF.)X
1221813983(It)X
122182576 1536(simply)N
122183864(enables)X
1221841176(storing)X
1221851469(macro)X
1221861741(information)X
1221872190(as)X
1221882328(specified)X
1221892690(in)X
1221902824(the)X
1221912994(DWARF)X
1221923355(document.)X
1221933783(Returns)X
1221940 f
122195576 1632(DW_DLV_ERROR)N
1221961 f
1221971172(and)X
1221981308(sets)X
1221990 f
1222001476(error)X
1222011 f
1222021736(if)X
1222031805(there)X
1222041986(is)X
1222052059(an)X
1222062155(error.)X
1222072372(Returns)X
1222080 f
1222092669(DW_DLV_OK)X
1222101 f
1222113121(if)X
1222123190(the)X
1222133308(call)X
1222143444(was)X
1222153589(successful.)X
1222163 f
12221711 s
122218576 1968(5.13)N
122219774(Low)X
122220962(Level)X
1222211190(\(.debug_frame\))X
1222221790(operations)X
1222231 f
12222410 s
122225576 2112(These)N
122226792(functions)X
1222271114(operate)X
1222281375(on)X
1222291479(the)X
1222301601(.debug_frame)X
1222312069(section.)X
1222322360(Refer)X
1222332563(to)X
1222340 f
1222352677(libdwarf.h)X
1222361 f
1222373181(for)X
1222383299(the)X
1222393421(register)X
1222403686(names)X
1222413916(and)X
122242576 2208(register)N
122243837(assignment)X
1222441217(mapping.)X
1222451557(Both)X
1222461732(of)X
1222471819(these)X
1222482004(are)X
1222492123(necessarily)X
1222502500(machine)X
1222512792(dependent.)X
1222523 f
122253576 2448(5.13.1)N
122254816(dwarf_new_fde\(\))X
1222550 f
122256576 2592(Dwarf_P_Fde)N
1222571152(dwarf_new_fde\()X
122258960 2688(Dwarf_P_Debug)N
1222591632(dbg,)X
122260960 2784(Dwarf_Error)N
1222611536(*error\))X
1222621 f
122263576 2928(The)N
122264721(function)X
1222650 f
1222661036(dwarf_new_fde\(\))X
1222671 f
1222681776(returns)X
1222692019(a)X
1222702075(new)X
1222710 f
1222722257(Dwarf_P_Fde)X
1222731 f
1222742805(descriptor)X
1222753146(that)X
1222763286(should)X
1222773520(be)X
1222783617(used)X
1222793785(to)X
1222803868(build)X
122281576 3024(a)N
122282670(complete)X
1222830 f
1222841050(FDE)X
1222851 f
122286(.)S
1222871292(Subsequent)X
1222881719(calls)X
1222891924(to)X
1222902044(routines)X
1222912359(that)X
1222922536(build)X
1222932757(up)X
1222942894(the)X
1222950 f
1222963077(FDE)X
1222971 f
1222983278(should)X
1222993548(use)X
1223003712(the)X
1223013867(same)X
1223020 f
122303576 3120(Dwarf_P_Fde)N
1223041 f
1223051124(descriptor.)X
122306576 3312(It)N
122307645(returns)X
122308888(a)X
122309944(valid)X
1223100 f
1223111152(Dwarf_P_Fde)X
1223121 f
1223131700(descriptor)X
1223142041(on)X
1223152141(success,)X
1223162422(and)X
1223170 f
1223182586(DW_DLV_BADADDR)X
1223191 f
1223203278(on)X
1223213378(error.)X
1223223 f
122323576 3552(5.13.2)N
122324816(dwarf_add_frame_cie\(\))X
1223250 f
122326576 3696(Dwarf_Unsigned)N
1223271296(dwarf_add_frame_cie\()X
122328960 3792(Dwarf_P_Debug)N
1223291632(dbg,)X
122330960 3888(char)N
1223311200(*augmenter,)X
122332960 3984(Dwarf_Small)N
1223331536(code_align,)X
122334960 4080(Dwarf_Small)N
1223351536(data_align,)X
122336960 4176(Dwarf_Small)N
1223371536(ret_addr_reg,)X
122338960 4272(Dwarf_Ptr)N
1223391440(init_bytes,)X
122340960 4368(Dwarf_Unsigned)N
1223411680(init_bytes_len,)X
122342960 4464(Dwarf_Error)N
1223431536(*error\);)X
1223441 f
122345576 4608(The)N
122346721(function)X
1223470 f
1223481036(dwarf_add_frame_cie\(\))X
1223491 f
1223502064(creates)X
1223512308(a)X
1223520 f
1223532392(CIE)X
1223541 f
122355(,)S
1223562576(and)X
1223572712(returns)X
1223582955(an)X
1223593051(index)X
1223603249(to)X
1223613331(it,)X
1223623415(that)X
1223633555(should)X
1223643788(be)X
1223653885(used)X
122366576 4704(to)N
122367659(refer)X
122368833(to)X
122369916(this)X
1223700 f
1223711080(CIE)X
1223721 f
122373(.)S
1223740 f
1223751341(CIE)X
1223761 f
122377(s)S
1223781537(are)X
1223791657(used)X
1223801825(by)X
1223810 f
1223821954(FDE)X
1223831 f
122384(s)S
1223852150(to)X
1223862233(setup)X
1223872423(initial)X
1223882630(values)X
1223892856(for)X
1223902970(frames.)X
1223913249(The)X
1223923394(augmentation)X
1223933850(string)X
122394576 4800(for)N
122395702(the)X
1223960 f
122397860(CIE)X
1223981 f
1223991036(is)X
1224001121(specified)X
1224011443(by)X
1224020 f
1224031583(augmenter)X
1224041 f
122405(.)S
1224062087(The)X
1224072245(code)X
1224082430(alignment)X
1224092783(factor,)X
1224103024(data)X
1224113191(alignment)X
1224123544(factor,)X
1224133785(and)X
1224143934(the)X
122415576 4896(return)N
122416839(address)X
1224171151(register)X
1224181463(for)X
1224191628(the)X
1224200 f
1224211825(CIE)X
1224221 f
1224232040(are)X
1224242210(specified)X
1224252570(by)X
1224260 f
1224272748(code_align)X
1224281 f
122429(,)S
1224300 f
1224313346(data_align)X
1224321 f
122433(,)S
1224343916(and)X
1224350 f
122436576 4992(ret_addr_reg)N
1224371 f
1224381178(respectively.)X
1224390 f
1224401688(init_bytes)X
1224411 f
1224422194(points)X
1224432415(to)X
1224442503(the)X
1224452627(bytes)X
1224462822(that)X
1224472968(represent)X
1224483289(the)X
1224493413(instructions)X
1224503813(for)X
1224513934(the)X
1224520 f
122453576 5088(CIE)N
1224541 f
122455740(being)X
122456938(created,)X
1224571211(and)X
1224580 f
1224591375(init_bytes_len)X
1224601 f
1224612067(specifies)X
1224622368(the)X
1224632486(number)X
1224642751(of)X
1224652838(bytes)X
1224663027(of)X
1224673114(instructions.)X
122468576 5280(There)N
122469785(is)X
122470859(no)X
122471960(convenient)X
1224721333(way)X
1224731488(to)X
1224741571(generate)X
1224751865(the)X
1224760 f
1224772032(init_bytes)X
1224781 f
1224792533(stream.)X
1224802808(One)X
1224812963(just)X
1224823099(has)X
1224833227(to)X
1224843311(calculate)X
1224853619(it)X
1224863685(by)X
1224873787(hand)X
1224883965(or)X
122489576 5376(separately)N
122490926(generate)X
1224911223(something)X
1224921580(with)X
1224931746(the)X
1224941868(correct)X
1224952115(sequence)X
1224962433(and)X
1224972572(use)X
1224982702(dwarfdump)X
1224993095(-v)X
1225003185(and)X
1225013324(elfdump)X
1225023614(-h)X
1225033724(and)X
1225043863(some)X
122505576 5472(kind)N
122506738(of)X
122507825(hex)X
122508961(dumper)X
1225091226(to)X
1225101308(see)X
1225111431(the)X
1225121549(bytes.)X
1225131778(This)X
1225141940(is)X
1225152013(a)X
1225162069(serious)X
1225172316(inconvenience!)X
122518576 5664(It)N
122519645(returns)X
122520888(an)X
122521984(index)X
1225221182(to)X
1225231264(the)X
1225240 f
1225251410(CIE)X
1225261 f
1225271574(just)X
1225281709(created)X
1225291962(on)X
1225302062(success.)X
1225312363(On)X
1225322481(error)X
1225332658(it)X
1225342722(returns)X
1225350 f
1225362993(DW_DLV_NOCOUNT)X
1225371 f
122538(.)S
122539576 6164(rev)N
122540699(1.18,)X
122541879(10)X
122542979(Jan)X
1225431106(2002)X
1225442217(-)X
1225452264(25)X
1225462364(-)X
122547
12254826 p
122549%%Page: 26 26
1225500(Courier)xf 0 f
12255110 s 0 xH 0 xS 0 f
1225521 f
1225532217 384(-)N
1225542264(26)X
1225552364(-)X
1225563 f
122557576 768(5.13.3)N
122558816(dwarf_add_frame_fde\(\))X
1225590 f
122560576 912(Dwarf_Unsigned)N
1225611296(dwarf_add_frame_fde\()X
122562960 1008(Dwarf_P_Debug)N
1225631632(dbg,)X
122564960 1104(Dwarf_P_Fde)N
1225651536(fde,)X
122566960 1200(Dwarf_P_Die)N
1225671536(die,)X
122568960 1296(Dwarf_Unsigned)N
1225691680(cie,)X
122570960 1392(Dwarf_Addr)N
1225711488(virt_addr,)X
122572960 1488(Dwarf_Unsigned)N
1225731728(code_len,)X
122574960 1584(Dwarf_Unsigned)N
1225751680(sym_idx,)X
122576960 1680(Dwarf_Error*)N
1225771584(error\))X
1225781 f
122579576 1824(The)N
122580724(function)X
1225810 f
1225821042(dwarf_add_frame_fde\(\))X
1225831 f
1225842073(adds)X
1225852243(the)X
1225860 f
1225872392(FDE)X
1225881 f
1225892559(specified)X
1225902872(by)X
1225910 f
1225923003(fde)X
1225931 f
1225943170(to)X
1225953255(the)X
1225963377(list)X
1225973498(of)X
1225980 f
1225993617(FDE)X
1226001 f
122601(s)S
1226023816(for)X
1226033934(the)X
122604576 1920(object)N
122605797(represented)X
1226061193(by)X
1226071298(the)X
1226081421(given)X
1226090 f
1226101652(dbg)X
1226111 f
122612(.)S
1226130 f
1226141917(die)X
1226151 f
1226162085(specifies)X
1226172390(the)X
1226180 f
1226192540(DIE)X
1226201 f
1226212708(that)X
1226222852(represents)X
1226233202(the)X
1226243324(function)X
1226253615(whose)X
1226263844(frame)X
122627576 2016(information)N
122628979(is)X
1226291057(specified)X
1226301372(by)X
1226311477(the)X
1226321600(given)X
1226330 f
1226341831(fde)X
1226351 f
122636(.)S
1226370 f
1226382096(cie)X
1226391 f
1226402265(specifies)X
1226412571(the)X
1226422694(index)X
1226432897(of)X
1226442989(the)X
1226450 f
1226463140(CIE)X
1226471 f
1226483310(that)X
1226493456(should)X
1226503695(be)X
1226513797(used)X
1226523970(to)X
122653576 2112(setup)N
122654765(the)X
122655883(initial)X
1226561089(conditions)X
1226571442(for)X
1226581556(the)X
1226591674(given)X
1226601872(frame.)X
122661576 2400(It)N
122662645(returns)X
122663888(an)X
122664984(index)X
1226651182(to)X
1226661264(the)X
1226671382(given)X
1226680 f
1226691608(fde)X
1226701 f
122671(.)S
1226723 f
122673576 2736(5.13.4)N
122674816(dwarf_add_frame_fde_b\(\))X
1226750 f
122676576 2880(Dwarf_Unsigned)N
1226771296(dwarf_add_frame_fde_b\()X
122678960 2976(Dwarf_P_Debug)N
1226791632(dbg,)X
122680960 3072(Dwarf_P_Fde)N
1226811536(fde,)X
122682960 3168(Dwarf_P_Die)N
1226831536(die,)X
122684960 3264(Dwarf_Unsigned)N
1226851680(cie,)X
122686960 3360(Dwarf_Addr)N
1226871488(virt_addr,)X
122688960 3456(Dwarf_Unsigned)N
1226891728(code_len,)X
122690960 3552(Dwarf_Unsigned)N
1226911680(sym_idx,)X
122692960 3648(Dwarf_Unsigned)N
1226931680(sym_idx_of_end,)X
122694960 3744(Dwarf_Addr)N
1226951680(offset_from_end_sym,)X
122696960 3840(Dwarf_Error*)N
1226971584(error\))X
1226981 f
122699576 3984(This)N
122700751(function)X
1227011051(is)X
1227021137(like)X
1227030 f
1227041319(dwarf_add_frame_fde\(\))X
1227051 f
1227062361(except)X
1227072605(that)X
1227080 f
1227092787(dwarf_add_frame_fde_b\(\))X
1227101 f
1227113925(has)X
122712576 4080(new)N
122713730(arguments)X
1227141084(to)X
1227151166(allow)X
1227161364(use)X
1227171491(with)X
1227180 f
1227191681(DW_DLC_SYMBOLIC_RELOCATIONS)X
1227201 f
122721(.)S
122722576 4272(The)N
122723726(function)X
1227240 f
1227251046(dwarf_add_frame_fde_b\(\))X
1227261 f
1227272175(adds)X
1227282347(the)X
1227290 f
1227302498(FDE)X
1227311 f
1227322667(specified)X
1227332982(by)X
1227340 f
1227353115(fde)X
1227361 f
1227373284(to)X
1227383371(the)X
1227393494(list)X
1227403616(of)X
1227410 f
1227423737(FDE)X
1227431 f
122744(s)S
1227453938(for)X
122746576 4368(the)N
122747705(object)X
122748932(represented)X
1227491334(by)X
1227501445(the)X
1227511574(given)X
1227520 f
1227531811(dbg)X
1227541 f
122755(.)S
1227560 f
1227572081(die)X
1227581 f
1227592255(specifies)X
1227602566(the)X
1227610 f
1227622722(DIE)X
1227631 f
1227642896(that)X
1227653046(represents)X
1227663402(the)X
1227673530(function)X
1227683827(whose)X
122769576 4464(frame)N
122770792(information)X
1227711198(is)X
1227721279(specified)X
1227731597(by)X
1227741705(the)X
1227751831(given)X
1227760 f
1227772065(fde)X
1227781 f
122779(.)S
1227800 f
1227812333(cie)X
1227821 f
1227832505(specifies)X
1227842814(the)X
1227852940(index)X
1227863146(of)X
1227873241(the)X
1227880 f
1227893395(CIE)X
1227901 f
1227913567(that)X
1227923715(should)X
1227933956(be)X
122794576 4560(used)N
122795749(to)X
122796837(setup)X
1227971032(the)X
1227981156(initial)X
1227991368(conditions)X
1228001727(for)X
1228011847(the)X
1228021970(given)X
1228032173(frame.)X
1228040 f
1228052482(virt_addr)X
1228061 f
1228072939(represents)X
1228083290(the)X
1228093413(relocatable)X
1228103791(address)X
122811576 4656(at)N
122812658(which)X
122813878(the)X
1228141000(code)X
1228151176(for)X
1228161294(the)X
1228171416(given)X
1228181618(function)X
1228191909(begins,)X
1228202162(and)X
1228210 f
1228222330(sym_idx)X
1228231 f
1228242690(gives)X
1228252883(the)X
1228263005(index)X
1228273207(of)X
1228283298(the)X
1228293420(relocatable)X
1228303797(symbol)X
122831576 4752(to)N
122832665(be)X
122833768(used)X
122834942(to)X
1228351031(relocate)X
1228361313(this)X
1228371455(address)X
1228381723(\()X
1228390 f
1228401750(virt_addr)X
1228411 f
1228422209(that)X
1228432356(is\).)X
1228440 f
1228452559(code_len)X
1228461 f
1228472970(specifies)X
1228483278(the)X
1228493403(size)X
1228503555(in)X
1228513644(bytes)X
1228523840(of)X
1228533934(the)X
122854576 4848(machine)N
122855868(instructions)X
1228561261(for)X
1228571375(the)X
1228581493(given)X
1228591691(function.)X
122860576 5040(If)N
1228610 f
122862794(sym_idx_of_end)X
1228631 f
1228641602(is)X
1228651791(zero)X
1228662066(\(may)X
1228672387(be)X
1228680 f
1228692628(DW_DLC_STREAM_RELOCATIONS)X
1228701 f
1228713965(or)X
1228720 f
122873576 5136(DW_DLC_SYMBOLIC_RELOCATIONS)N
1228741 f
1228751892(\):)X
1228760 f
122877736 5328(virt_addr)N
1228781 f
1228791193(represents)X
1228801544(the)X
1228811667(relocatable)X
1228822045(address)X
1228832312(at)X
1228842396(which)X
1228852618(the)X
1228862742(code)X
1228872920(for)X
1228883040(the)X
1228893164(given)X
1228903368(function)X
1228913661(begins,)X
1228923916(and)X
1228930 f
122894736 5424(sym_idx)N
1228951 f
1228961095(gives)X
1228971287(the)X
1228981408(index)X
1228991609(of)X
1229001699(the)X
1229011820(relocatable)X
1229022196(symbol)X
1229032454(to)X
1229042539(be)X
1229052638(used)X
1229062808(to)X
1229072893(relocate)X
1229083171(this)X
1229093309(address)X
1229103573(\()X
1229110 f
1229123600(virt_addr)X
1229131 f
122914736 5520(that)N
122915883(is\).)X
1229160 f
1229171086(code_len)X
1229181 f
1229191497(specifies)X
1229201805(the)X
1229211930(size)X
1229222082(in)X
1229232172(bytes)X
1229242369(of)X
1229252464(the)X
1229262590(machine)X
1229272890(instructions)X
1229283291(for)X
1229293413(the)X
1229303539(given)X
1229313745(function.)X
1229320 f
122933736 5616(sym_idx_of_end)N
1229341 f
1229351428(and)X
1229360 f
1229371592(offset_from_end_sym)X
1229381 f
1229392524(are)X
1229402643(unused.)X
122941576 6164(rev)N
122942699(1.18,)X
122943879(10)X
122944979(Jan)X
1229451106(2002)X
1229462217(-)X
1229472264(26)X
1229482364(-)X
122949
12295027 p
122951%%Page: 27 27
1229520(Courier)xf 0 f
12295310 s 0 xH 0 xS 0 f
1229541 f
1229552217 384(-)N
1229562264(27)X
1229572364(-)X
122958576 768(If)N
1229590 f
122960678(sym_idx_of_end)X
1229611 f
1229621370(is)X
1229631443(non-zero)X
1229641749(\(must)X
1229651951(be)X
1229660 f
1229672075(DW_DLC_SYMBOLIC_RELOCATIONS)X
1229681 f
1229693391(to)X
1229703473(be)X
1229713569(useful\):)X
1229720 f
122973736 960(virt_addr)N
1229741 f
1229751188(is)X
1229761261(the)X
1229771379(offset)X
1229781582(from)X
1229791758(the)X
1229801876(symbol)X
1229812132(specified)X
1229822443(by)X
1229830 f
1229842572(sym_idx)X
1229851 f
1229862929(.)X
1229870 f
1229883046(offset_from_end_sym)X
1229891 f
1229903979(is)X
122991736 1056(the)N
122992859(offset)X
1229931067(from)X
1229941248(the)X
1229951370(symbol)X
1229961629(specified)X
1229971943(by)X
1229980 f
1229992075(sym_idx_of_end)X
1230001 f
123001(.)S
1230020 f
1230032867(code_len)X
1230041 f
1230053275(is)X
1230063352(ignored.)X
1230073661(This)X
1230083827(begin-)X
123009736 1152(end)N
123010875(pair)X
1230111024(will)X
1230121172(be)X
1230131272(show)X
1230141465(up)X
1230151569(in)X
1230161655(the)X
1230171777(relocation)X
1230182122(array)X
1230192312(returned)X
1230202604(by)X
1230210 f
1230222736(dwarf_get_relocation_info\(\))X
1230231 f
123024736 1248(as)N
123025827(a)X
1230260 f
123027914(dwarf_drt_first_of_length_pair)X
1230281 f
1230292377(and)X
1230300 f
1230312544(dwarf_drt_second_of_length_pair)X
1230321 f
123033736 1344(pair)N
123034884(of)X
123035974(relocation)X
1230361318(records.)X
1230371619(The)X
1230381768(consuming)X
1230392143(application)X
1230402523(will)X
1230412671(turn)X
1230422824(that)X
1230432968(pair)X
1230443117(into)X
1230453265(something)X
1230463622(conceptually)X
123047736 1440(identical)N
1230481032(to)X
1230491076 1632(.word)N
1230501281(end_symbol)X
1230511692(+)X
1230521757(begin)X
1230531955(-)X
1230542002(\\)X
1230551116 1728(\()N
1230561163(start_symbol)X
1230571596(+)X
1230581661(offset_from_end\))X
123059736 1920(The)N
123060886(reason)X
1230611121(offsets)X
1230621360(are)X
1230631484(allowed)X
1230641763(on)X
1230651868(the)X
1230661991(begin)X
1230672194(and)X
1230682335(end)X
1230692476(symbols)X
1230702768(is)X
1230712847(to)X
1230722935(allow)X
1230733139(the)X
1230743263(caller)X
1230753468(to)X
1230763556(re-use)X
1230773779(existing)X
123078736 2016(labels)N
123079960(when)X
1230801171(the)X
1230811306(labels)X
1230821530(are)X
1230831666(available)X
1230841993(and)X
1230852146(the)X
1230862281(corresponding)X
1230872777(offset)X
1230882997(is)X
1230893087(known)X
1230903341(\(economizing)X
1230913818(on)X
1230923934(the)X
123093736 2112(number)N
1230941018(of)X
1230951122(labels)X
1230961346(in)X
1230971445(use\).)X
1230981656(The)X
1230991838('offset_from_end)X
1231002437(-)X
1231012501(begin_address')X
1231023024(will)X
1231033185(actually)X
1231043477(be)X
1231053591(in)X
1231063691(the)X
1231073827(binary)X
123108736 2208(stream,)N
1231091002(not)X
1231101136(the)X
1231111266(relocation)X
1231121619(record,)X
1231131877(so)X
1231141980(the)X
1231152110(app)X
1231162258(processing)X
1231172633(the)X
1231182762(relocation)X
1231193114(array)X
1231203311(must)X
1231213497(read)X
1231223667(that)X
1231233818(stream)X
123124736 2304(value)N
123125930(into)X
1231261074(\(for)X
1231271215(example\))X
1231281534(net_offset)X
1231291875(and)X
1231302011(actually)X
1231312285(emit)X
1231322447(something)X
1231332800(like)X
1231341076 2496(.word)N
1231351281(end_symbol)X
1231361692(-)X
1231371739(start_symbol)X
1231382172(+)X
1231392237(net_offset)X
123140576 2784(It)N
123141645(returns)X
123142888(an)X
123143984(index)X
1231441182(to)X
1231451264(the)X
1231461382(given)X
1231470 f
1231481608(fde)X
1231491 f
123150(.)S
123151576 2976(On)N
123152694(error,)X
123153891(it)X
123154955(returns)X
1231550 f
1231561226(DW_DLV_NOCOUNT)X
1231571 f
123158(.)S
1231593 f
123160576 3216(5.13.5)N
123161816(dwarf_add_frame_info_b\(\))X
1231620 f
123163576 3360(Dwarf_Unsigned)N
1231641296(dwarf_add_frame_info_b\()X
123165960 3456(Dwarf_P_Debug)N
1231661728(dbg,)X
123167960 3552(Dwarf_P_Fde)N
1231681728(fde,)X
123169960 3648(Dwarf_P_Die)N
1231701728(die,)X
123171960 3744(Dwarf_Unsigned)N
1231721728(cie,)X
123173960 3840(Dwarf_Addr)N
1231741728(virt_addr,)X
123175960 3936(Dwarf_Unsigned)N
1231761728(code_len,)X
123177960 4032(Dwarf_Unsigned)N
1231781728(sym_idx,)X
123179960 4128(Dwarf_Unsigned)N
1231801728(end_symbol_index,)X
123181960 4224(Dwarf_Addr)N
1231821728(offset_from_end_symbol,)X
123183960 4320(Dwarf_Signed)N
1231841728(offset_into_exception_tables,)X
123185960 4416(Dwarf_Unsigned)N
1231861728(exception_table_symbol,)X
123187960 4512(Dwarf_Error*)N
1231881728(error\))X
1231891 f
123190576 4656(The)N
123191724(function)X
1231920 f
1231931042(dwarf_add_frame_fde\(\))X
1231941 f
1231952073(adds)X
1231962243(the)X
1231970 f
1231982392(FDE)X
1231991 f
1232002559(specified)X
1232012872(by)X
1232020 f
1232033003(fde)X
1232041 f
1232053170(to)X
1232063255(the)X
1232073377(list)X
1232083498(of)X
1232090 f
1232103617(FDE)X
1232111 f
123212(s)S
1232133816(for)X
1232143934(the)X
123215576 4752(object)N
123216797(represented)X
1232171193(by)X
1232181298(the)X
1232191421(given)X
1232200 f
1232211652(dbg)X
1232221 f
123223(.)S
1232240 f
1232251917(die)X
1232261 f
1232272085(specifies)X
1232282390(the)X
1232290 f
1232302540(DIE)X
1232311 f
1232322708(that)X
1232332852(represents)X
1232343202(the)X
1232353324(function)X
1232363615(whose)X
1232373844(frame)X
123238576 4848(information)N
123239979(is)X
1232401057(specified)X
1232411372(by)X
1232421477(the)X
1232431600(given)X
1232440 f
1232451831(fde)X
1232461 f
123247(.)S
1232480 f
1232492096(cie)X
1232501 f
1232512265(specifies)X
1232522571(the)X
1232532694(index)X
1232542897(of)X
1232552989(the)X
1232560 f
1232573140(CIE)X
1232581 f
1232593310(that)X
1232603456(should)X
1232613695(be)X
1232623797(used)X
1232633970(to)X
123264576 4944(setup)N
123265775(the)X
123266903(initial)X
1232671119(conditions)X
1232681481(for)X
1232691604(the)X
1232701731(given)X
1232711938(frame.)X
1232720 f
1232732251(offset_into_exception_tables)X
1232741 f
1232753624(specifies)X
1232763934(the)X
123277576 5040(offset)N
123278808(into)X
1232790 f
1232801009(.MIPS.eh_region)X
1232811 f
1232821778(elf)X
1232831912(section)X
1232842188(where)X
1232852434(the)X
1232862581(exception)X
1232872942(tables)X
1232883178(for)X
1232893321(this)X
1232903486(function)X
1232913803(begins.)X
1232920 f
123293576 5136(exception_table_symbol)N
1232941 f
1232951688(gives)X
1232961893(the)X
1232972027(index)X
1232982241(of)X
1232992344(the)X
1233002478(relocatable)X
1233012867(symbol)X
1233023138(to)X
1233033236(be)X
1233043348(used)X
1233053530(to)X
1233063627(relocate)X
1233073917(this)X
123308576 5232(offset.)N
123309576 5520(If)N
1233100 f
123311697(end_symbol_index)X
1233121532(is)X
1233131695(not)X
1233141906(zero)X
1233151 f
1233162137(we)X
1233172270(are)X
1233182408(using)X
1233192620(two)X
1233202779(symbols)X
1233213084(to)X
1233223185(create)X
1233233418(a)X
1233243494(length)X
1233253734(\(must)X
1233263956(be)X
1233270 f
123328576 5616(DW_DLC_SYMBOLIC_RELOCATIONS)N
1233291 f
1233301892(to)X
1233311974(be)X
1233322070(useful\))X
1233330 f
123334736 5808(virt_addr)N
1233351 f
1233361296(is)X
1233371477(the)X
1233381703(offset)X
1233392015(from)X
1233402300(the)X
1233412527(symbol)X
1233422891(specified)X
1233433310(by)X
1233440 f
1233453547(sym_idx)X
1233461 f
1233474012(.)X
123348576 6164(rev)N
123349699(1.18,)X
123350879(10)X
123351979(Jan)X
1233521106(2002)X
1233532217(-)X
1233542264(27)X
1233552364(-)X
123356
12335728 p
123358%%Page: 28 28
1233590(Courier)xf 0 f
12336010 s 0 xH 0 xS 0 f
1233611 f
1233622217 384(-)N
1233632264(28)X
1233642364(-)X
1233650 f
123366736 768(offset_from_end_symbol)N
1233671 f
1233681818(is)X
1233691897(the)X
1233702021(offset)X
1233712230(from)X
1233722412(the)X
1233732536(symbol)X
1233742796(specified)X
1233753111(by)X
1233760 f
1233773244(end_symbol_index)X
1233781 f
123379(.)S
1233800 f
123381736 864(code_len)N
1233821 f
1233831156(is)X
1233841245(ignored.)X
1233851566(This)X
1233861744(begin-end)X
1233872101(pair)X
1233882262(will)X
1233892422(be)X
1233902534(show)X
1233912739(up)X
1233922855(in)X
1233932953(the)X
1233943087(relocation)X
1233953444(array)X
1233963647(returned)X
1233973952(by)X
1233980 f
123399736 960(dwarf_get_relocation_info\(\))N
1234001 f
1234012111(as)X
1234022256(a)X
1234030 f
1234042398(dwarf_drt_first_of_length_pair)X
1234051 f
1234063916(and)X
1234070 f
123408736 1056(dwarf_drt_second_of_length_pair)N
1234091 f
1234102250(pair)X
1234112401(of)X
1234122494(relocation)X
1234132842(records.)X
1234143146(The)X
1234153298(consuming)X
1234163676(application)X
123417736 1152(will)N
123418880(turn)X
1234191029(that)X
1234201169(pair)X
1234211314(into)X
1234221458(something)X
1234231811(conceptually)X
1234242241(identical)X
1234252537(to)X
1234261076 1344(.word)N
1234271281(end_symbol)X
1234281692(+)X
1234291757(offset_from_end_symbol)X
1234302587(-)X
1234312634(\\)X
1234321116 1440(\()N
1234331163(start_symbol)X
1234341596(+)X
1234351661(virt_addr\))X
123436736 1632(The)N
123437886(reason)X
1234381121(offsets)X
1234391360(are)X
1234401484(allowed)X
1234411763(on)X
1234421868(the)X
1234431991(begin)X
1234442194(and)X
1234452335(end)X
1234462476(symbols)X
1234472768(is)X
1234482847(to)X
1234492935(allow)X
1234503139(the)X
1234513263(caller)X
1234523468(to)X
1234533556(re-use)X
1234543779(existing)X
123455736 1728(labels)N
123456960(when)X
1234571171(the)X
1234581306(labels)X
1234591530(are)X
1234601666(available)X
1234611993(and)X
1234622146(the)X
1234632281(corresponding)X
1234642777(offset)X
1234652997(is)X
1234663087(known)X
1234673341(\(economizing)X
1234683818(on)X
1234693934(the)X
123470736 1824(number)N
1234711018(of)X
1234721122(labels)X
1234731346(in)X
1234741445(use\).)X
1234751656(The)X
1234761838('offset_from_end)X
1234772437(-)X
1234782501(begin_address')X
1234793024(will)X
1234803185(actually)X
1234813477(be)X
1234823591(in)X
1234833691(the)X
1234843827(binary)X
123485736 1920(stream,)N
1234861002(not)X
1234871136(the)X
1234881266(relocation)X
1234891619(record,)X
1234901877(so)X
1234911980(the)X
1234922110(app)X
1234932258(processing)X
1234942633(the)X
1234952762(relocation)X
1234963114(array)X
1234973311(must)X
1234983497(read)X
1234993667(that)X
1235003818(stream)X
123501736 2016(value)N
123502930(into)X
1235031074(\(for)X
1235041215(example\))X
1235051534(net_offset)X
1235061875(and)X
1235072011(actually)X
1235082285(emit)X
1235092447(something)X
1235102800(like)X
1235111076 2208(.word)N
1235121281(end_symbol)X
1235131692(-)X
1235141739(start_symbol)X
1235152172(+)X
1235162237(net_offset)X
123517576 2496(If)N
1235180 f
123519767(end_symbol_index)X
1235201 f
1235211644(is)X
1235221806(zero)X
1235232054(we)X
1235242257(must)X
1235252521(be)X
1235262706(given)X
1235272993(a)X
1235283138(code_len)X
1235293538(value)X
1235303822(\(either)X
1235310 f
123532576 2592(DW_DLC_STREAM_RELOCATIONS)N
1235331 f
1235341796(or)X
1235350 f
1235361911(DW_DLC_SYMBOLIC_RELOCATIONS)X
1235371 f
1235383227(\):)X
123539736 2784(The)N
123540884(relocatable)X
1235411260(start)X
1235421421(address)X
1235431685(of)X
1235441775(the)X
1235451896(range)X
1235462098(is)X
1235472174(specified)X
1235482487(by)X
1235490 f
1235502618(virt_addr)X
1235511 f
123552(,)S
1235533093(and)X
1235543232(the)X
1235553354(length)X
1235563578(of)X
1235573669(the)X
1235583791(address)X
123559736 2880(range)N
123560948(is)X
1235611034(specified)X
1235621357(by)X
1235630 f
1235641498(code_len)X
1235651 f
123566(.)S
1235671955(The)X
1235682113(relocatable)X
1235692499(symbol)X
1235702767(to)X
1235712862(be)X
1235722971(used)X
1235733151(to)X
1235743246(relocate)X
1235753534(the)X
1235763665(start)X
1235773835(of)X
1235783934(the)X
123579736 2976(address)N
123580999(range)X
1235811200(is)X
1235821275(specified)X
1235831587(by)X
1235840 f
1235851717(symbol_index)X
1235861 f
123587(,)S
1235882335(which)X
1235892553(is)X
1235902628(normally)X
1235912939(the)X
1235923059(index)X
1235933259(of)X
1235943349(the)X
1235953470(symbol)X
1235963728(in)X
1235973813(the)X
1235983934(Elf)X
123599736 3072(symbol)N
123600991(table.)X
1236011207(The)X
1236020 f
1236031380(offset_from_end_symbol)X
1236041 f
1236052456(is)X
1236062529(ignored.)X
123607576 3360(It)N
123608645(returns)X
123609888(an)X
123610984(index)X
1236111182(to)X
1236121264(the)X
1236131382(given)X
1236140 f
1236151608(fde)X
1236161 f
123617(.)S
123618576 3552(On)N
123619694(error,)X
123620891(it)X
123621955(returns)X
1236220 f
1236231226(DW_DLV_NOCOUNT)X
1236241 f
123625(.)S
1236263 f
123627576 3888(5.13.6)N
123628816(dwarf_add_frame_info\(\))X
1236290 f
123630576 4176(Dwarf_Unsigned)N
1236311296(dwarf_add_frame_info\()X
123632960 4272(Dwarf_P_Debug)N
1236331632(dbg,)X
123634960 4368(Dwarf_P_Fde)N
1236351536(fde,)X
123636960 4464(Dwarf_P_Die)N
1236371536(die,)X
123638960 4560(Dwarf_Unsigned)N
1236391680(cie,)X
123640960 4656(Dwarf_Addr)N
1236411488(virt_addr,)X
123642960 4752(Dwarf_Unsigned)N
1236431728(code_len,)X
123644960 4848(Dwarf_Unsigned)N
1236451680(sym_idx,)X
123646960 4944(Dwarf_Signed)N
1236471584(offset_into_exception_tables,)X
123648960 5040(Dwarf_Unsigned)N
1236491680(exception_table_symbol,)X
123650960 5136(Dwarf_Error*)N
1236511584(error\))X
1236521 f
123653576 5280(The)N
123654724(function)X
1236550 f
1236561042(dwarf_add_frame_fde\(\))X
1236571 f
1236582073(adds)X
1236592243(the)X
1236600 f
1236612392(FDE)X
1236621 f
1236632559(specified)X
1236642872(by)X
1236650 f
1236663003(fde)X
1236671 f
1236683170(to)X
1236693255(the)X
1236703377(list)X
1236713498(of)X
1236720 f
1236733617(FDE)X
1236741 f
123675(s)S
1236763816(for)X
1236773934(the)X
123678576 5376(object)N
123679799(represented)X
1236801197(by)X
1236811304(the)X
1236821429(given)X
1236830 f
1236841661(dbg)X
1236851 f
123686(.)S
1236870 f
1236881899(die)X
1236891 f
1236902069(specifies)X
1236912376(the)X
1236920 f
1236932528(DIE)X
1236941 f
1236952698(that)X
1236962844(represents)X
1236973196(the)X
1236983320(function)X
1236993613(whose)X
1237003844(frame)X
123701576 5472(information)N
123702980(is)X
1237031059(specified)X
1237041375(by)X
1237051482(the)X
1237061607(given)X
1237070 f
1237081840(fde)X
1237091 f
123710(.)S
1237110 f
1237122079(cie)X
1237131 f
1237142250(specifies)X
1237152558(the)X
1237162683(index)X
1237172888(of)X
1237182982(the)X
1237190 f
1237203135(CIE)X
1237211 f
1237223306(that)X
1237233453(should)X
1237243693(be)X
1237253796(used)X
1237263970(to)X
123727576 5568(setup)N
123728770(the)X
123729893(initial)X
1237301104(conditions)X
1237311462(for)X
1237321580(the)X
1237331702(given)X
1237341904(frame.)X
1237350 f
1237362184(virt_addr)X
1237371 f
1237382640(represents)X
1237392990(the)X
1237403112(relocatable)X
1237413489(address)X
1237423754(at)X
1237433836(which)X
123744576 5664(the)N
123745694(code)X
123746867(for)X
123747982(the)X
1237481101(given)X
1237491300(function)X
1237501588(begins,)X
1237511838(and)X
1237520 f
1237532003(sym_idx)X
1237541 f
1237552360(gives)X
1237562550(the)X
1237572669(index)X
1237582868(of)X
1237592956(the)X
1237603075(relocatable)X
1237613449(symbol)X
1237623705(to)X
1237633788(be)X
1237643885(used)X
123765576 5760(to)N
123766670(relocate)X
123767957(this)X
1237681104(address)X
1237691377(\()X
1237700 f
1237711404(virt_addr)X
1237721 f
1237731868(that)X
1237742020(is\).)X
1237750 f
1237762228(code_len)X
1237771 f
1237782643(specifies)X
1237792955(the)X
1237803084(size)X
1237813240(in)X
1237823333(bytes)X
1237833533(of)X
1237843631(the)X
1237853760(machine)X
123786576 5856(instructions)N
123787989(for)X
1237881124(the)X
1237891263(given)X
1237901482(function.)X
1237910 f
1237921838(offset_into_exception_tables)X
1237931 f
1237943223(specifies)X
1237953545(the)X
1237963684(offset)X
1237973908(into)X
123798576 6164(rev)N
123799699(1.18,)X
123800879(10)X
123801979(Jan)X
1238021106(2002)X
1238032217(-)X
1238042264(28)X
1238052364(-)X
123806
12380729 p
123808%%Page: 29 29
1238090(Courier)xf 0 f
12381010 s 0 xH 0 xS 0 f
1238111 f
1238122217 384(-)N
1238132264(29)X
1238142364(-)X
1238150 f
123816576 768(.MIPS.eh_region)N
1238171 f
1238181389(elf)X
1238191567(section)X
1238201887(where)X
1238212177(the)X
1238222368(exception)X
1238232772(tables)X
1238243051(for)X
1238253237(this)X
1238263444(function)X
1238273803(begins.)X
1238280 f
123829576 864(exception_table_symbol)N
1238301 f
1238311687(gives)X
1238321891(the)X
1238332024(index)X
1238342238(of)X
1238352341(the)X
1238362475(relocatable)X
1238372864(symbol)X
1238383135(to)X
1238393233(be)X
1238403345(used)X
1238413528(to)X
1238423626(relocate)X
1238433917(this)X
123844576 960(offset.)N
123845576 1152(It)N
123846645(returns)X
123847888(an)X
123848984(index)X
1238491182(to)X
1238501264(the)X
1238511382(given)X
1238520 f
1238531608(fde)X
1238541 f
123855(.)S
1238563 f
123857576 1392(5.13.7)N
123858816 0.1964(dwarf_fde_cfa_offset\(\))AX
1238590 f
123860576 1536(Dwarf_P_Fde)N
1238611152(dwarf_fde_cfa_offset\()X
123862960 1632(Dwarf_P_Fde)N
1238631536(fde,)X
123864960 1728(Dwarf_Unsigned)N
1238651680(reg,)X
123866960 1824(Dwarf_Signed)N
1238671584(offset,)X
123868960 1920(Dwarf_Error)N
1238691536(*error\))X
1238701 f
123871576 2064(The)N
123872742(function)X
1238730 f
1238741078(dwarf_fde_cfa_offset\(\))X
1238751 f
1238762175(appends)X
1238772479(a)X
1238780 f
1238792585(DW_CFA_offset)X
1238801 f
1238813251(operation)X
1238823596(to)X
1238833700(the)X
1238840 f
1238853868(FDE)X
1238861 f
123887(,)S
123888576 2160(specified)N
123889890(by)X
1238900 f
1238911022(fde)X
1238921 f
123893(,)S
1238941230(being)X
1238951432(constructed.)X
1238961866(The)X
1238972015(first)X
1238982168(operand)X
1238992451(of)X
1239002542(the)X
1239010 f
1239022692(DW_CFA_offset)X
1239031 f
1239043340(operation)X
1239053666(is)X
1239063742(specified)X
123907576 2256(by)N
1239080 f
123909714(regP.)X
1239101060(The)X
1239111262(register)X
1239121704(specified)X
1239132194(should)X
1239142540(not)X
1239152742(exceed)X
1239163088(6)X
1239173194(bits.)X
1239183541(The)X
1239193744(second)X
123920576 2352(operand)N
123921960(of)X
1239221104(the)X
1239231296(DW_CFA_offset)X
1239241968(operation)X
1239252448(is)X
1239262592(specified)X
1239273072(by)X
1239283216(offset.)X
123929576 2544(It)N
123930720(returns)X
1239311104(the)X
1239321296(given)X
1239331584(fde)X
1239341776(on)X
1239351920(success.)X
123936576 2736(It)N
123937720(returns)X
1239381104(DW_DLV_BADADDR)X
1239391824(on)X
1239401968(error.)X
1239413 f
123942576 2976(5.13.8)N
123943816(dwarf_add_fde_inst\(\))X
1239440 f
123945576 3120(Dwarf_P_Fde)N
1239461152(dwarf_add_fde_inst\()X
123947960 3216(Dwarf_P_Fde)N
1239481536(fde,)X
123949960 3312(Dwarf_Small)N
1239501536(op,)X
123951960 3408(Dwarf_Unsigned)N
1239521680(val1,)X
123953960 3504(Dwarf_Unsigned)N
1239541680(val2,)X
123955960 3600(Dwarf_Error)N
1239561536(*error\))X
1239571 f
123958576 3744(The)N
123959726(function)X
1239600 f
1239611046(dwarf_add_fde_inst\(\))X
1239621 f
1239632031(adds)X
1239642203(the)X
1239652326(operation)X
1239662654(specified)X
1239672970(by)X
1239680 f
1239693104(op)X
1239701 f
1239713226(to)X
1239723314(the)X
1239730 f
1239743466(FDE)X
1239751 f
1239763636(specified)X
1239773952(by)X
1239780 f
123979576 3840(fde)N
1239801 f
123981(.)S
123982802(Upto)X
1239831004(two)X
1239841166(operands)X
1239851498(can)X
1239861652(be)X
1239871770(specified)X
1239882102(in)X
1239890 f
1239902234(val1)X
1239911 f
123992(,)S
1239932487(and)X
1239940 f
1239952672(val2)X
1239961 f
123997(.)S
1239982945(Based)X
1239993182(on)X
1240003303(the)X
1240013442(operand)X
1240023742(specified)X
1240030 f
124004576 3936(Libdwarf)N
1240051 f
124006984(decides)X
1240071249(how)X
1240081411(many)X
1240091613(operands)X
1240101927(are)X
1240112051(meaningful)X
1240122441(for)X
1240132560(the)X
1240142683(operand.)X
1240153007(It)X
1240163081(also)X
1240173235(converts)X
1240183532(the)X
1240193655(operands)X
1240203970(to)X
124021576 4032(the)N
124022694(appropriate)X
1240231080(datatypes)X
1240241403(\(they)X
1240251588(are)X
1240261707(passed)X
1240271941(to)X
1240280 f
1240292051(dwarf_add_fde_inst)X
1240301 f
1240312935(as)X
1240320 f
1240333050(Dwarf_Unsigned)X
1240341 f
124035(\).)S
124036576 4224(It)N
124037645(returns)X
124038888(the)X
1240391006(given)X
1240400 f
1240411232(fde)X
1240421 f
1240431396(on)X
1240441496(success,)X
1240451777(and)X
1240460 f
1240471941(DW_DLV_BADADDR)X
1240481 f
1240492633(on)X
1240502733(error.)X
124051576 6164(rev)N
124052699(1.18,)X
124053879(10)X
124054979(Jan)X
1240551106(2002)X
1240562217(-)X
1240572264(29)X
1240582364(-)X
124059
12406030 p
124061%%Page: 30 30
1240620(Courier)xf 0 f
12406310 s 0 xH 0 xS 0 f
1240641 f
1240652095 768(CONTENTS)N
124066576 1008(1.)N
124067676(INTRODUCTION)X
1240683 f
1240691371(.)X
1240701477(.)X
1240711583(.)X
1240721689(.)X
1240731795(.)X
1240741901(.)X
1240752007(.)X
1240762113(.)X
1240772219(.)X
1240782325(.)X
1240792431(.)X
1240802537(.)X
1240812643(.)X
1240822749(.)X
1240832855(.)X
1240842961(.)X
1240853067(.)X
1240863173(.)X
1240873279(.)X
1240883385(.)X
1240893491(.)X
1240903597(.)X
1240913703(.)X
1240923809(.)X
1240931 f
1240943992(1)X
124095676 1104(1.1)N
124096856(Purpose)X
1240971134(and)X
1240981270(Scope)X
1240993 f
1241001583(.)X
1241011689(.)X
1241021795(.)X
1241031901(.)X
1241042007(.)X
1241052113(.)X
1241062219(.)X
1241072325(.)X
1241082431(.)X
1241092537(.)X
1241102643(.)X
1241112749(.)X
1241122855(.)X
1241132961(.)X
1241143067(.)X
1241153173(.)X
1241163279(.)X
1241173385(.)X
1241183491(.)X
1241193597(.)X
1241203703(.)X
1241213809(.)X
1241221 f
1241233992(1)X
124124676 1200(1.2)N
124125856(Definitions)X
1241263 f
1241271265(.)X
1241281371(.)X
1241291477(.)X
1241301583(.)X
1241311689(.)X
1241321795(.)X
1241331901(.)X
1241342007(.)X
1241352113(.)X
1241362219(.)X
1241372325(.)X
1241382431(.)X
1241392537(.)X
1241402643(.)X
1241412749(.)X
1241422855(.)X
1241432961(.)X
1241443067(.)X
1241453173(.)X
1241463279(.)X
1241473385(.)X
1241483491(.)X
1241493597(.)X
1241503703(.)X
1241513809(.)X
1241521 f
1241533992(1)X
124154676 1296(1.3)N
124155856(Overview)X
1241563 f
1241571265(.)X
1241581371(.)X
1241591477(.)X
1241601583(.)X
1241611689(.)X
1241621795(.)X
1241631901(.)X
1241642007(.)X
1241652113(.)X
1241662219(.)X
1241672325(.)X
1241682431(.)X
1241692537(.)X
1241702643(.)X
1241712749(.)X
1241722855(.)X
1241732961(.)X
1241743067(.)X
1241753173(.)X
1241763279(.)X
1241773385(.)X
1241783491(.)X
1241793597(.)X
1241803703(.)X
1241813809(.)X
1241821 f
1241833992(1)X
124184676 1392(1.4)N
124185856(Revision)X
1241861160(History)X
1241873 f
1241881477(.)X
1241891583(.)X
1241901689(.)X
1241911795(.)X
1241921901(.)X
1241932007(.)X
1241942113(.)X
1241952219(.)X
1241962325(.)X
1241972431(.)X
1241982537(.)X
1241992643(.)X
1242002749(.)X
1242012855(.)X
1242022961(.)X
1242033067(.)X
1242043173(.)X
1242053279(.)X
1242063385(.)X
1242073491(.)X
1242083597(.)X
1242093703(.)X
1242103809(.)X
1242111 f
1242123992(2)X
124213576 1536(2.)N
124214676(Type)X
124215861(Definitions)X
1242163 f
1242171265(.)X
1242181371(.)X
1242191477(.)X
1242201583(.)X
1242211689(.)X
1242221795(.)X
1242231901(.)X
1242242007(.)X
1242252113(.)X
1242262219(.)X
1242272325(.)X
1242282431(.)X
1242292537(.)X
1242302643(.)X
1242312749(.)X
1242322855(.)X
1242332961(.)X
1242343067(.)X
1242353173(.)X
1242363279(.)X
1242373385(.)X
1242383491(.)X
1242393597(.)X
1242403703(.)X
1242413809(.)X
1242421 f
1242433992(2)X
124244676 1632(2.1)N
124245856(General)X
1242461131(Description)X
1242473 f
1242481583(.)X
1242491689(.)X
1242501795(.)X
1242511901(.)X
1242522007(.)X
1242532113(.)X
1242542219(.)X
1242552325(.)X
1242562431(.)X
1242572537(.)X
1242582643(.)X
1242592749(.)X
1242602855(.)X
1242612961(.)X
1242623067(.)X
1242633173(.)X
1242643279(.)X
1242653385(.)X
1242663491(.)X
1242673597(.)X
1242683703(.)X
1242693809(.)X
1242701 f
1242713992(2)X
124272676 1728(2.2)N
124273856(Namespace)X
1242741247(issues)X
1242753 f
1242761583(.)X
1242771689(.)X
1242781795(.)X
1242791901(.)X
1242802007(.)X
1242812113(.)X
1242822219(.)X
1242832325(.)X
1242842431(.)X
1242852537(.)X
1242862643(.)X
1242872749(.)X
1242882855(.)X
1242892961(.)X
1242903067(.)X
1242913173(.)X
1242923279(.)X
1242933385(.)X
1242943491(.)X
1242953597(.)X
1242963703(.)X
1242973809(.)X
1242981 f
1242993992(2)X
124300576 1872(3.)N
124301676(libdwarf)X
124302968(and)X
1243031104(Elf)X
1243041222(and)X
1243051358(relocations)X
1243063 f
1243071795(.)X
1243081901(.)X
1243092007(.)X
1243102113(.)X
1243112219(.)X
1243122325(.)X
1243132431(.)X
1243142537(.)X
1243152643(.)X
1243162749(.)X
1243172855(.)X
1243182961(.)X
1243193067(.)X
1243203173(.)X
1243213279(.)X
1243223385(.)X
1243233491(.)X
1243243597(.)X
1243253703(.)X
1243263809(.)X
1243271 f
1243283992(2)X
124329676 1968(3.1)N
124330856(binary)X
1243311081(or)X
1243321168(assembler)X
1243331509(output)X
1243343 f
1243351795(.)X
1243361901(.)X
1243372007(.)X
1243382113(.)X
1243392219(.)X
1243402325(.)X
1243412431(.)X
1243422537(.)X
1243432643(.)X
1243442749(.)X
1243452855(.)X
1243462961(.)X
1243473067(.)X
1243483173(.)X
1243493279(.)X
1243503385(.)X
1243513491(.)X
1243523597(.)X
1243533703(.)X
1243543809(.)X
1243551 f
1243563992(2)X
124357676 2064(3.2)N
124358856(libdwarf)X
1243591148(relationship)X
1243601546(to)X
1243611628(Elf)X
1243623 f
1243631795(.)X
1243641901(.)X
1243652007(.)X
1243662113(.)X
1243672219(.)X
1243682325(.)X
1243692431(.)X
1243702537(.)X
1243712643(.)X
1243722749(.)X
1243732855(.)X
1243742961(.)X
1243753067(.)X
1243763173(.)X
1243773279(.)X
1243783385(.)X
1243793491(.)X
1243803597(.)X
1243813703(.)X
1243823809(.)X
1243831 f
1243843992(3)X
124385676 2160(3.3)N
124386856(libdwarf)X
1243871148(and)X
1243881284(relocations)X
1243893 f
1243901689(.)X
1243911795(.)X
1243921901(.)X
1243932007(.)X
1243942113(.)X
1243952219(.)X
1243962325(.)X
1243972431(.)X
1243982537(.)X
1243992643(.)X
1244002749(.)X
1244012855(.)X
1244022961(.)X
1244033067(.)X
1244043173(.)X
1244053279(.)X
1244063385(.)X
1244073491(.)X
1244083597(.)X
1244093703(.)X
1244103809(.)X
1244111 f
1244123992(3)X
124413676 2256(3.4)N
124414856(symbols,)X
1244151162(addresses,)X
1244161510(and)X
1244171646(offsets)X
1244183 f
1244192007(.)X
1244202113(.)X
1244212219(.)X
1244222325(.)X
1244232431(.)X
1244242537(.)X
1244252643(.)X
1244262749(.)X
1244272855(.)X
1244282961(.)X
1244293067(.)X
1244303173(.)X
1244313279(.)X
1244323385(.)X
1244333491(.)X
1244343597(.)X
1244353703(.)X
1244363809(.)X
1244371 f
1244383992(3)X
124439576 2400(4.)N
124440676(Memory)X
124441972(Management)X
1244423 f
1244431477(.)X
1244441583(.)X
1244451689(.)X
1244461795(.)X
1244471901(.)X
1244482007(.)X
1244492113(.)X
1244502219(.)X
1244512325(.)X
1244522431(.)X
1244532537(.)X
1244542643(.)X
1244552749(.)X
1244562855(.)X
1244572961(.)X
1244583067(.)X
1244593173(.)X
1244603279(.)X
1244613385(.)X
1244623491(.)X
1244633597(.)X
1244643703(.)X
1244653809(.)X
1244661 f
1244673992(3)X
124468676 2496(4.1)N
124469856(Read-only)X
1244701210(Properties)X
1244713 f
1244721583(.)X
1244731689(.)X
1244741795(.)X
1244751901(.)X
1244762007(.)X
1244772113(.)X
1244782219(.)X
1244792325(.)X
1244802431(.)X
1244812537(.)X
1244822643(.)X
1244832749(.)X
1244842855(.)X
1244852961(.)X
1244863067(.)X
1244873173(.)X
1244883279(.)X
1244893385(.)X
1244903491(.)X
1244913597(.)X
1244923703(.)X
1244933809(.)X
1244941 f
1244953992(4)X
124496676 2592(4.2)N
124497856(Storage)X
1244981121(Deallocation)X
1244993 f
1245001583(.)X
1245011689(.)X
1245021795(.)X
1245031901(.)X
1245042007(.)X
1245052113(.)X
1245062219(.)X
1245072325(.)X
1245082431(.)X
1245092537(.)X
1245102643(.)X
1245112749(.)X
1245122855(.)X
1245132961(.)X
1245143067(.)X
1245153173(.)X
1245163279(.)X
1245173385(.)X
1245183491(.)X
1245193597(.)X
1245203703(.)X
1245213809(.)X
1245221 f
1245233992(4)X
124524576 2736(5.)N
124525676(Functional)X
1245261038(Interface)X
1245273 f
1245281371(.)X
1245291477(.)X
1245301583(.)X
1245311689(.)X
1245321795(.)X
1245331901(.)X
1245342007(.)X
1245352113(.)X
1245362219(.)X
1245372325(.)X
1245382431(.)X
1245392537(.)X
1245402643(.)X
1245412749(.)X
1245422855(.)X
1245432961(.)X
1245443067(.)X
1245453173(.)X
1245463279(.)X
1245473385(.)X
1245483491(.)X
1245493597(.)X
1245503703(.)X
1245513809(.)X
1245521 f
1245533992(4)X
124554676 2832(5.1)N
124555856(Initialization)X
1245561285(and)X
1245571421(Termination)X
1245581837(Operations)X
1245593 f
1245602325(.)X
1245612431(.)X
1245622537(.)X
1245632643(.)X
1245642749(.)X
1245652855(.)X
1245662961(.)X
1245673067(.)X
1245683173(.)X
1245693279(.)X
1245703385(.)X
1245713491(.)X
1245723597(.)X
1245733703(.)X
1245743809(.)X
1245751 f
1245763992(4)X
124577856 2928(5.1.1)N
1245781096 0.1625(dwarf_producer_init\(\))AX
1245793 f
1245801901(.)X
1245812007(.)X
1245822113(.)X
1245832219(.)X
1245842325(.)X
1245852431(.)X
1245862537(.)X
1245872643(.)X
1245882749(.)X
1245892855(.)X
1245902961(.)X
1245913067(.)X
1245923173(.)X
1245933279(.)X
1245943385(.)X
1245953491(.)X
1245963597(.)X
1245973703(.)X
1245983809(.)X
1245991 f
1246003992(5)X
124601856 3024(5.1.2)N
1246021096 0.1477(dwarf_producer_init_b\(\))AX
1246033 f
1246042007(.)X
1246052113(.)X
1246062219(.)X
1246072325(.)X
1246082431(.)X
1246092537(.)X
1246102643(.)X
1246112749(.)X
1246122855(.)X
1246132961(.)X
1246143067(.)X
1246153173(.)X
1246163279(.)X
1246173385(.)X
1246183491(.)X
1246193597(.)X
1246203703(.)X
1246213809(.)X
1246221 f
1246233992(6)X
124624856 3120(5.1.3)N
1246251096 0.1078(dwarf_transform_to_disk_form\(\))AX
1246263 f
1246272219(.)X
1246282325(.)X
1246292431(.)X
1246302537(.)X
1246312643(.)X
1246322749(.)X
1246332855(.)X
1246342961(.)X
1246353067(.)X
1246363173(.)X
1246373279(.)X
1246383385(.)X
1246393491(.)X
1246403597(.)X
1246413703(.)X
1246423809(.)X
1246431 f
1246443992(8)X
124645856 3216(5.1.4)N
1246461096(dwarf_get_section_bytes\(\))X
1246473 f
1246482007(.)X
1246492113(.)X
1246502219(.)X
1246512325(.)X
1246522431(.)X
1246532537(.)X
1246542643(.)X
1246552749(.)X
1246562855(.)X
1246572961(.)X
1246583067(.)X
1246593173(.)X
1246603279(.)X
1246613385(.)X
1246623491(.)X
1246633597(.)X
1246643703(.)X
1246653809(.)X
1246661 f
1246673992(8)X
124668856 3312(5.1.5)N
1246691096 0.1250(dwarf_get_relocation_info_count\(\))AX
1246703 f
1246712325(.)X
1246722431(.)X
1246732537(.)X
1246742643(.)X
1246752749(.)X
1246762855(.)X
1246772961(.)X
1246783067(.)X
1246793173(.)X
1246803279(.)X
1246813385(.)X
1246823491(.)X
1246833597(.)X
1246843703(.)X
1246853809(.)X
1246861 f
1246873992(9)X
124688856 3408(5.1.6)N
1246891096 0.1442(dwarf_get_relocation_info\(\))AX
1246903 f
1246912113(.)X
1246922219(.)X
1246932325(.)X
1246942431(.)X
1246952537(.)X
1246962643(.)X
1246972749(.)X
1246982855(.)X
1246992961(.)X
1247003067(.)X
1247013173(.)X
1247023279(.)X
1247033385(.)X
1247043491(.)X
1247053597(.)X
1247063703(.)X
1247073809(.)X
1247081 f
1247093992(9)X
124710856 3504(5.1.7)N
1247111096 0.1442(dwarf_reset_section_bytes\(\))AX
1247123 f
1247132113(.)X
1247142219(.)X
1247152325(.)X
1247162431(.)X
1247172537(.)X
1247182643(.)X
1247192749(.)X
1247202855(.)X
1247212961(.)X
1247223067(.)X
1247233173(.)X
1247243279(.)X
1247253385(.)X
1247263491(.)X
1247273597(.)X
1247283703(.)X
1247293809(.)X
1247301 f
1247313952(11)X
124732856 3600(5.1.8)N
1247331096 0.1705(dwarf_producer_finish\(\))AX
1247343 f
1247352007(.)X
1247362113(.)X
1247372219(.)X
1247382325(.)X
1247392431(.)X
1247402537(.)X
1247412643(.)X
1247422749(.)X
1247432855(.)X
1247442961(.)X
1247453067(.)X
1247463173(.)X
1247473279(.)X
1247483385(.)X
1247493491(.)X
1247503597(.)X
1247513703(.)X
1247523809(.)X
1247531 f
1247543952(11)X
124755676 3696(5.2)N
124756856(Debugging)X
1247571232(Information)X
1247581635(Entry)X
1247591833(Creation)X
1247603 f
1247612219(.)X
1247622325(.)X
1247632431(.)X
1247642537(.)X
1247652643(.)X
1247662749(.)X
1247672855(.)X
1247682961(.)X
1247693067(.)X
1247703173(.)X
1247713279(.)X
1247723385(.)X
1247733491(.)X
1247743597(.)X
1247753703(.)X
1247763809(.)X
1247771 f
1247783952(12)X
124779856 3792(5.2.1)N
1247801096 0.1413(dwarf_add_die_to_debug\(\))AX
1247813 f
1247822113(.)X
1247832219(.)X
1247842325(.)X
1247852431(.)X
1247862537(.)X
1247872643(.)X
1247882749(.)X
1247892855(.)X
1247902961(.)X
1247913067(.)X
1247923173(.)X
1247933279(.)X
1247943385(.)X
1247953491(.)X
1247963597(.)X
1247973703(.)X
1247983809(.)X
1247991 f
1248003952(12)X
124801856 3888(5.2.2)N
1248021096 0.2321(dwarf_new_die\(\))AX
1248033 f
1248041795(.)X
1248051901(.)X
1248062007(.)X
1248072113(.)X
1248082219(.)X
1248092325(.)X
1248102431(.)X
1248112537(.)X
1248122643(.)X
1248132749(.)X
1248142855(.)X
1248152961(.)X
1248163067(.)X
1248173173(.)X
1248183279(.)X
1248193385(.)X
1248203491(.)X
1248213597(.)X
1248223703(.)X
1248233809(.)X
1248241 f
1248253952(12)X
124826856 3984(5.2.3)N
1248271096(dwarf_die_link\(\))X
1248283 f
1248291689(.)X
1248301795(.)X
1248311901(.)X
1248322007(.)X
1248332113(.)X
1248342219(.)X
1248352325(.)X
1248362431(.)X
1248372537(.)X
1248382643(.)X
1248392749(.)X
1248402855(.)X
1248412961(.)X
1248423067(.)X
1248433173(.)X
1248443279(.)X
1248453385(.)X
1248463491(.)X
1248473597(.)X
1248483703(.)X
1248493809(.)X
1248501 f
1248513952(12)X
124852676 4080(5.3)N
124853856(Attribute)X
1248541165(Creation)X
1248553 f
1248561583(.)X
1248571689(.)X
1248581795(.)X
1248591901(.)X
1248602007(.)X
1248612113(.)X
1248622219(.)X
1248632325(.)X
1248642431(.)X
1248652537(.)X
1248662643(.)X
1248672749(.)X
1248682855(.)X
1248692961(.)X
1248703067(.)X
1248713173(.)X
1248723279(.)X
1248733385(.)X
1248743491(.)X
1248753597(.)X
1248763703(.)X
1248773809(.)X
1248781 f
1248793952(13)X
124880856 4176(5.3.1)N
1248811096 0.1574(dwarf_add_AT_location_expr\(\))AX
1248823 f
1248832219(.)X
1248842325(.)X
1248852431(.)X
1248862537(.)X
1248872643(.)X
1248882749(.)X
1248892855(.)X
1248902961(.)X
1248913067(.)X
1248923173(.)X
1248933279(.)X
1248943385(.)X
1248953491(.)X
1248963597(.)X
1248973703(.)X
1248983809(.)X
1248991 f
1249003952(13)X
124901856 4272(5.3.2)N
1249021096 0.2153(dwarf_add_AT_name\(\))AX
1249033 f
1249041901(.)X
1249052007(.)X
1249062113(.)X
1249072219(.)X
1249082325(.)X
1249092431(.)X
1249102537(.)X
1249112643(.)X
1249122749(.)X
1249132855(.)X
1249142961(.)X
1249153067(.)X
1249163173(.)X
1249173279(.)X
1249183385(.)X
1249193491(.)X
1249203597(.)X
1249213703(.)X
1249223809(.)X
1249231 f
1249243952(13)X
124925856 4368(5.3.3)N
1249261096 0.1591(dwarf_add_AT_comp_dir\(\))AX
1249273 f
1249282113(.)X
1249292219(.)X
1249302325(.)X
1249312431(.)X
1249322537(.)X
1249332643(.)X
1249342749(.)X
1249352855(.)X
1249362961(.)X
1249373067(.)X
1249383173(.)X
1249393279(.)X
1249403385(.)X
1249413491(.)X
1249423597(.)X
1249433703(.)X
1249443809(.)X
1249451 f
1249463952(14)X
124947856 4464(5.3.4)N
1249481096 0.2216(dwarf_add_AT_producer\(\))AX
1249493 f
1249502113(.)X
1249512219(.)X
1249522325(.)X
1249532431(.)X
1249542537(.)X
1249552643(.)X
1249562749(.)X
1249572855(.)X
1249582961(.)X
1249593067(.)X
1249603173(.)X
1249613279(.)X
1249623385(.)X
1249633491(.)X
1249643597(.)X
1249653703(.)X
1249663809(.)X
1249671 f
1249683952(14)X
124969856 4560(5.3.5)N
1249701096 0.1036(dwarf_add_AT_const_value_signedint\(\))AX
1249713 f
1249722537(.)X
1249732643(.)X
1249742749(.)X
1249752855(.)X
1249762961(.)X
1249773067(.)X
1249783173(.)X
1249793279(.)X
1249803385(.)X
1249813491(.)X
1249823597(.)X
1249833703(.)X
1249843809(.)X
1249851 f
1249863952(14)X
124987856 4656(5.3.6)N
1249881096 0.0980(dwarf_add_AT_const_value_unsignedint\(\))AX
1249893 f
1249902537(.)X
1249912643(.)X
1249922749(.)X
1249932855(.)X
1249942961(.)X
1249953067(.)X
1249963173(.)X
1249973279(.)X
1249983385(.)X
1249993491(.)X
1250003597(.)X
1250013703(.)X
1250023809(.)X
1250031 f
1250043952(14)X
125005856 4752(5.3.7)N
1250061096 0.1172(dwarf_add_AT_const_value_string\(\))AX
1250073 f
1250082431(.)X
1250092537(.)X
1250102643(.)X
1250112749(.)X
1250122855(.)X
1250132961(.)X
1250143067(.)X
1250153173(.)X
1250163279(.)X
1250173385(.)X
1250183491(.)X
1250193597(.)X
1250203703(.)X
1250213809(.)X
1250221 f
1250233952(14)X
125024856 4848(5.3.8)N
1250251096 0.1875(dwarf_add_AT_targ_address\(\))AX
1250263 f
1250272219(.)X
1250282325(.)X
1250292431(.)X
1250302537(.)X
1250312643(.)X
1250322749(.)X
1250332855(.)X
1250342961(.)X
1250353067(.)X
1250363173(.)X
1250373279(.)X
1250383385(.)X
1250393491(.)X
1250403597(.)X
1250413703(.)X
1250423809(.)X
1250431 f
1250443952(15)X
125045856 4944(5.3.9)N
1250461096 0.1741(dwarf_add_AT_targ_address_b\(\))AX
1250473 f
1250482219(.)X
1250492325(.)X
1250502431(.)X
1250512537(.)X
1250522643(.)X
1250532749(.)X
1250542855(.)X
1250552961(.)X
1250563067(.)X
1250573173(.)X
1250583279(.)X
1250593385(.)X
1250603491(.)X
1250613597(.)X
1250623703(.)X
1250633809(.)X
1250641 f
1250653952(15)X
125066856 5040(5.3.10)N
1250671096 0.1205(dwarf_add_AT_unsigned_const\(\))AX
1250683 f
1250692325(.)X
1250702431(.)X
1250712537(.)X
1250722643(.)X
1250732749(.)X
1250742855(.)X
1250752961(.)X
1250763067(.)X
1250773173(.)X
1250783279(.)X
1250793385(.)X
1250803491(.)X
1250813597(.)X
1250823703(.)X
1250833809(.)X
1250841 f
1250853952(15)X
125086856 5136(5.3.11)N
1250871096 0.1298(dwarf_add_AT_signed_const\(\))AX
1250883 f
1250892219(.)X
1250902325(.)X
1250912431(.)X
1250922537(.)X
1250932643(.)X
1250942749(.)X
1250952855(.)X
1250962961(.)X
1250973067(.)X
1250983173(.)X
1250993279(.)X
1251003385(.)X
1251013491(.)X
1251023597(.)X
1251033703(.)X
1251043809(.)X
1251051 f
1251063952(16)X
125107856 5232(5.3.12)N
1251081096 0.2935(dwarf_add_AT_reference\(\))AX
1251093 f
1251102113(.)X
1251112219(.)X
1251122325(.)X
1251132431(.)X
1251142537(.)X
1251152643(.)X
1251162749(.)X
1251172855(.)X
1251182961(.)X
1251193067(.)X
1251203173(.)X
1251213279(.)X
1251223385(.)X
1251233491(.)X
1251243597(.)X
1251253703(.)X
1251263809(.)X
1251271 f
1251283952(16)X
125129856 5328(5.3.13)N
1251301096 0.2083(dwarf_add_AT_flag\(\))AX
1251313 f
1251321901(.)X
1251332007(.)X
1251342113(.)X
1251352219(.)X
1251362325(.)X
1251372431(.)X
1251382537(.)X
1251392643(.)X
1251402749(.)X
1251412855(.)X
1251422961(.)X
1251433067(.)X
1251443173(.)X
1251453279(.)X
1251463385(.)X
1251473491(.)X
1251483597(.)X
1251493703(.)X
1251503809(.)X
1251511 f
1251523952(16)X
125153856 5424(5.3.14)N
1251541096(dwarf_add_AT_string\(\))X
1251553 f
1251562007(.)X
1251572113(.)X
1251582219(.)X
1251592325(.)X
1251602431(.)X
1251612537(.)X
1251622643(.)X
1251632749(.)X
1251642855(.)X
1251652961(.)X
1251663067(.)X
1251673173(.)X
1251683279(.)X
1251693385(.)X
1251703491(.)X
1251713597(.)X
1251723703(.)X
1251733809(.)X
1251741 f
1251753952(17)X
125176676 5520(5.4)N
125177856(Expression)X
1251781232(Creation)X
1251793 f
1251801583(.)X
1251811689(.)X
1251821795(.)X
1251831901(.)X
1251842007(.)X
1251852113(.)X
1251862219(.)X
1251872325(.)X
1251882431(.)X
1251892537(.)X
1251902643(.)X
1251912749(.)X
1251922855(.)X
1251932961(.)X
1251943067(.)X
1251953173(.)X
1251963279(.)X
1251973385(.)X
1251983491(.)X
1251993597(.)X
1252003703(.)X
1252013809(.)X
1252021 f
1252033952(17)X
125204856 5616(5.4.1)N
1252051096 0.2583(dwarf_new_expr\(\))AX
1252063 f
1252071795(.)X
1252081901(.)X
1252092007(.)X
1252102113(.)X
1252112219(.)X
1252122325(.)X
1252132431(.)X
1252142537(.)X
1252152643(.)X
1252162749(.)X
1252172855(.)X
1252182961(.)X
1252193067(.)X
1252203173(.)X
1252213279(.)X
1252223385(.)X
1252233491(.)X
1252243597(.)X
1252253703(.)X
1252263809(.)X
1252271 f
1252283952(17)X
125229856 5712(5.4.2)N
1252301096 0.2171(dwarf_add_expr_gen\(\))AX
1252313 f
1252321901(.)X
1252332007(.)X
1252342113(.)X
1252352219(.)X
1252362325(.)X
1252372431(.)X
1252382537(.)X
1252392643(.)X
1252402749(.)X
1252412855(.)X
1252422961(.)X
1252433067(.)X
1252443173(.)X
1252453279(.)X
1252463385(.)X
1252473491(.)X
1252483597(.)X
1252493703(.)X
1252503809(.)X
1252511 f
1252523952(17)X
125253856 5808(5.4.3)N
1252541096 0.2250(dwarf_add_expr_addr\(\))AX
1252553 f
1252562007(.)X
1252572113(.)X
1252582219(.)X
1252592325(.)X
1252602431(.)X
1252612537(.)X
1252622643(.)X
1252632749(.)X
1252642855(.)X
1252652961(.)X
1252663067(.)X
1252673173(.)X
1252683279(.)X
1252693385(.)X
1252703491(.)X
1252713597(.)X
1252723703(.)X
1252733809(.)X
1252741 f
1252753952(18)X
1252762246 6164(-)N
1252772293(i)X
1252782335(-)X
125279
12528031 p
125281%%Page: 31 31
1252820(Courier)xf 0 f
12528310 s 0 xH 0 xS 0 f
1252841 f
125285856 768(5.4.4)N
1252861096 0.2045(dwarf_add_expr_addr_b\(\))AX
1252873 f
1252882007(.)X
1252892113(.)X
1252902219(.)X
1252912325(.)X
1252922431(.)X
1252932537(.)X
1252942643(.)X
1252952749(.)X
1252962855(.)X
1252972961(.)X
1252983067(.)X
1252993173(.)X
1253003279(.)X
1253013385(.)X
1253023491(.)X
1253033597(.)X
1253043703(.)X
1253053809(.)X
1253061 f
1253073952(18)X
125308856 864(5.4.5)N
1253091096 0.2115(dwarf_expr_current_offset\(\))AX
1253103 f
1253112113(.)X
1253122219(.)X
1253132325(.)X
1253142431(.)X
1253152537(.)X
1253162643(.)X
1253172749(.)X
1253182855(.)X
1253192961(.)X
1253203067(.)X
1253213173(.)X
1253223279(.)X
1253233385(.)X
1253243491(.)X
1253253597(.)X
1253263703(.)X
1253273809(.)X
1253281 f
1253293952(18)X
125330856 960(5.4.6)N
1253311096(dwarf_expr_into_block\(\))X
1253323 f
1253332007(.)X
1253342113(.)X
1253352219(.)X
1253362325(.)X
1253372431(.)X
1253382537(.)X
1253392643(.)X
1253402749(.)X
1253412855(.)X
1253422961(.)X
1253433067(.)X
1253443173(.)X
1253453279(.)X
1253463385(.)X
1253473491(.)X
1253483597(.)X
1253493703(.)X
1253503809(.)X
1253511 f
1253523952(18)X
125353676 1056(5.5)N
125354856(Line)X
1253551023(Number)X
1253561306(Operations)X
1253573 f
1253581795(.)X
1253591901(.)X
1253602007(.)X
1253612113(.)X
1253622219(.)X
1253632325(.)X
1253642431(.)X
1253652537(.)X
1253662643(.)X
1253672749(.)X
1253682855(.)X
1253692961(.)X
1253703067(.)X
1253713173(.)X
1253723279(.)X
1253733385(.)X
1253743491(.)X
1253753597(.)X
1253763703(.)X
1253773809(.)X
1253781 f
1253793952(19)X
125380856 1152(5.5.1)N
1253811096 0.1607(dwarf_add_line_entry\(\))AX
1253823 f
1253832007(.)X
1253842113(.)X
1253852219(.)X
1253862325(.)X
1253872431(.)X
1253882537(.)X
1253892643(.)X
1253902749(.)X
1253912855(.)X
1253922961(.)X
1253933067(.)X
1253943173(.)X
1253953279(.)X
1253963385(.)X
1253973491(.)X
1253983597(.)X
1253993703(.)X
1254003809(.)X
1254011 f
1254023952(19)X
125403856 1248(5.5.2)N
1254041096 0.1705(dwarf_lne_set_address\(\))AX
1254053 f
1254062007(.)X
1254072113(.)X
1254082219(.)X
1254092325(.)X
1254102431(.)X
1254112537(.)X
1254122643(.)X
1254132749(.)X
1254142855(.)X
1254152961(.)X
1254163067(.)X
1254173173(.)X
1254183279(.)X
1254193385(.)X
1254203491(.)X
1254213597(.)X
1254223703(.)X
1254233809(.)X
1254241 f
1254253952(19)X
125426856 1344(5.5.3)N
1254271096 0.2120(dwarf_lne_end_sequence\(\))AX
1254283 f
1254292113(.)X
1254302219(.)X
1254312325(.)X
1254322431(.)X
1254332537(.)X
1254342643(.)X
1254352749(.)X
1254362855(.)X
1254372961(.)X
1254383067(.)X
1254393173(.)X
1254403279(.)X
1254413385(.)X
1254423491(.)X
1254433597(.)X
1254443703(.)X
1254453809(.)X
1254461 f
1254473952(20)X
125448856 1440(5.5.4)N
1254491096 0.1900(dwarf_add_directory_decl\(\))AX
1254503 f
1254512113(.)X
1254522219(.)X
1254532325(.)X
1254542431(.)X
1254552537(.)X
1254562643(.)X
1254572749(.)X
1254582855(.)X
1254592961(.)X
1254603067(.)X
1254613173(.)X
1254623279(.)X
1254633385(.)X
1254643491(.)X
1254653597(.)X
1254663703(.)X
1254673809(.)X
1254681 f
1254693952(20)X
125470856 1536(5.5.5)N
1254711096 0.1937(dwarf_add_file_decl\(\))AX
1254723 f
1254731901(.)X
1254742007(.)X
1254752113(.)X
1254762219(.)X
1254772325(.)X
1254782431(.)X
1254792537(.)X
1254802643(.)X
1254812749(.)X
1254822855(.)X
1254832961(.)X
1254843067(.)X
1254853173(.)X
1254863279(.)X
1254873385(.)X
1254883491(.)X
1254893597(.)X
1254903703(.)X
1254913809(.)X
1254921 f
1254933952(20)X
125494676 1632(5.6)N
125495856(Fast)X
1254961009(Access)X
1254971257(\(aranges\))X
1254981577(Operations)X
1254993 f
1255002007(.)X
1255012113(.)X
1255022219(.)X
1255032325(.)X
1255042431(.)X
1255052537(.)X
1255062643(.)X
1255072749(.)X
1255082855(.)X
1255092961(.)X
1255103067(.)X
1255113173(.)X
1255123279(.)X
1255133385(.)X
1255143491(.)X
1255153597(.)X
1255163703(.)X
1255173809(.)X
1255181 f
1255193952(21)X
125520856 1728(5.6.1)N
1255211096 0.2721(dwarf_add_arange\(\))AX
1255223 f
1255231795(.)X
1255241901(.)X
1255252007(.)X
1255262113(.)X
1255272219(.)X
1255282325(.)X
1255292431(.)X
1255302537(.)X
1255312643(.)X
1255322749(.)X
1255332855(.)X
1255342961(.)X
1255353067(.)X
1255363173(.)X
1255373279(.)X
1255383385(.)X
1255393491(.)X
1255403597(.)X
1255413703(.)X
1255423809(.)X
1255431 f
1255443952(21)X
125545856 1824(5.6.2)N
1255461096 0.2434(dwarf_add_arange_b\(\))AX
1255473 f
1255481901(.)X
1255492007(.)X
1255502113(.)X
1255512219(.)X
1255522325(.)X
1255532431(.)X
1255542537(.)X
1255552643(.)X
1255562749(.)X
1255572855(.)X
1255582961(.)X
1255593067(.)X
1255603173(.)X
1255613279(.)X
1255623385(.)X
1255633491(.)X
1255643597(.)X
1255653703(.)X
1255663809(.)X
1255671 f
1255683952(21)X
125569676 1920(5.7)N
125570856(Fast)X
1255711009(Access)X
1255721257(\(pubnames\))X
1255731656(Operations)X
1255743 f
1255752113(.)X
1255762219(.)X
1255772325(.)X
1255782431(.)X
1255792537(.)X
1255802643(.)X
1255812749(.)X
1255822855(.)X
1255832961(.)X
1255843067(.)X
1255853173(.)X
1255863279(.)X
1255873385(.)X
1255883491(.)X
1255893597(.)X
1255903703(.)X
1255913809(.)X
1255921 f
1255933952(22)X
125594856 2016(5.7.1)N
1255951096 0.1944(dwarf_add_pubname\(\))AX
1255963 f
1255971901(.)X
1255982007(.)X
1255992113(.)X
1256002219(.)X
1256012325(.)X
1256022431(.)X
1256032537(.)X
1256042643(.)X
1256052749(.)X
1256062855(.)X
1256072961(.)X
1256083067(.)X
1256093173(.)X
1256103279(.)X
1256113385(.)X
1256123491(.)X
1256133597(.)X
1256143703(.)X
1256153809(.)X
1256161 f
1256173952(22)X
125618676 2112(5.8)N
125619856(Fast)X
1256201009(Access)X
1256211257(\(weak)X
1256221474(names\))X
1256231726(Operations)X
1256243 f
1256252219(.)X
1256262325(.)X
1256272431(.)X
1256282537(.)X
1256292643(.)X
1256302749(.)X
1256312855(.)X
1256322961(.)X
1256333067(.)X
1256343173(.)X
1256353279(.)X
1256363385(.)X
1256373491(.)X
1256383597(.)X
1256393703(.)X
1256403809(.)X
1256411 f
1256423952(22)X
125643856 2208(5.8.1)N
1256441096 0.2500(dwarf_add_weakname\(\))AX
1256453 f
1256462007(.)X
1256472113(.)X
1256482219(.)X
1256492325(.)X
1256502431(.)X
1256512537(.)X
1256522643(.)X
1256532749(.)X
1256542855(.)X
1256552961(.)X
1256563067(.)X
1256573173(.)X
1256583279(.)X
1256593385(.)X
1256603491(.)X
1256613597(.)X
1256623703(.)X
1256633809(.)X
1256641 f
1256653952(22)X
125666676 2304(5.9)N
125667856(Static)X
1256681058(Function)X
1256691362(Names)X
1256701605(Operations)X
1256713 f
1256722007(.)X
1256732113(.)X
1256742219(.)X
1256752325(.)X
1256762431(.)X
1256772537(.)X
1256782643(.)X
1256792749(.)X
1256802855(.)X
1256812961(.)X
1256823067(.)X
1256833173(.)X
1256843279(.)X
1256853385(.)X
1256863491(.)X
1256873597(.)X
1256883703(.)X
1256893809(.)X
1256901 f
1256913952(22)X
125692856 2400(5.9.1)N
1256931096 0.2303(dwarf_add_funcname\(\))AX
1256943 f
1256951901(.)X
1256962007(.)X
1256972113(.)X
1256982219(.)X
1256992325(.)X
1257002431(.)X
1257012537(.)X
1257022643(.)X
1257032749(.)X
1257042855(.)X
1257052961(.)X
1257063067(.)X
1257073173(.)X
1257083279(.)X
1257093385(.)X
1257103491(.)X
1257113597(.)X
1257123703(.)X
1257133809(.)X
1257141 f
1257153952(23)X
125716676 2496(5.10)N
125717856(File-scope)X
1257181210(User-defined)X
1257191650(Type)X
1257201835(Names)X
1257212078(Operations)X
1257223 f
1257232537(.)X
1257242643(.)X
1257252749(.)X
1257262855(.)X
1257272961(.)X
1257283067(.)X
1257293173(.)X
1257303279(.)X
1257313385(.)X
1257323491(.)X
1257333597(.)X
1257343703(.)X
1257353809(.)X
1257361 f
1257373952(23)X
125738856 2592(5.10.1)N
1257391096 0.1974(dwarf_add_typename\(\))AX
1257403 f
1257411901(.)X
1257422007(.)X
1257432113(.)X
1257442219(.)X
1257452325(.)X
1257462431(.)X
1257472537(.)X
1257482643(.)X
1257492749(.)X
1257502855(.)X
1257512961(.)X
1257523067(.)X
1257533173(.)X
1257543279(.)X
1257553385(.)X
1257563491(.)X
1257573597(.)X
1257583703(.)X
1257593809(.)X
1257601 f
1257613952(23)X
125762676 2688(5.11)N
125763856(File-scope)X
1257641210(Static)X
1257651412(Variable)X
1257661709(Names)X
1257671952(Operations)X
1257683 f
1257692431(.)X
1257702537(.)X
1257712643(.)X
1257722749(.)X
1257732855(.)X
1257742961(.)X
1257753067(.)X
1257763173(.)X
1257773279(.)X
1257783385(.)X
1257793491(.)X
1257803597(.)X
1257813703(.)X
1257823809(.)X
1257831 f
1257843952(23)X
125785856 2784(5.11.1)N
1257861096 0.2431(dwarf_add_varname\(\))AX
1257873 f
1257881901(.)X
1257892007(.)X
1257902113(.)X
1257912219(.)X
1257922325(.)X
1257932431(.)X
1257942537(.)X
1257952643(.)X
1257962749(.)X
1257972855(.)X
1257982961(.)X
1257993067(.)X
1258003173(.)X
1258013279(.)X
1258023385(.)X
1258033491(.)X
1258043597(.)X
1258053703(.)X
1258063809(.)X
1258071 f
1258083952(23)X
125809676 2880(5.12)N
125810856(Macro)X
1258111086(Information)X
1258121489(Creation)X
1258133 f
1258141901(.)X
1258152007(.)X
1258162113(.)X
1258172219(.)X
1258182325(.)X
1258192431(.)X
1258202537(.)X
1258212643(.)X
1258222749(.)X
1258232855(.)X
1258242961(.)X
1258253067(.)X
1258263173(.)X
1258273279(.)X
1258283385(.)X
1258293491(.)X
1258303597(.)X
1258313703(.)X
1258323809(.)X
1258331 f
1258343952(24)X
125835856 2976(5.12.1)N
1258361096 0.2656(dwarf_def_macro\(\))AX
1258373 f
1258381795(.)X
1258391901(.)X
1258402007(.)X
1258412113(.)X
1258422219(.)X
1258432325(.)X
1258442431(.)X
1258452537(.)X
1258462643(.)X
1258472749(.)X
1258482855(.)X
1258492961(.)X
1258503067(.)X
1258513173(.)X
1258523279(.)X
1258533385(.)X
1258543491(.)X
1258553597(.)X
1258563703(.)X
1258573809(.)X
1258581 f
1258593952(24)X
125860856 3072(5.12.2)N
1258611096 0.2361(dwarf_undef_macro\(\))AX
1258623 f
1258631901(.)X
1258642007(.)X
1258652113(.)X
1258662219(.)X
1258672325(.)X
1258682431(.)X
1258692537(.)X
1258702643(.)X
1258712749(.)X
1258722855(.)X
1258732961(.)X
1258743067(.)X
1258753173(.)X
1258763279(.)X
1258773385(.)X
1258783491(.)X
1258793597(.)X
1258803703(.)X
1258813809(.)X
1258821 f
1258833952(24)X
125884856 3168(5.12.3)N
1258851096 0.1739(dwarf_start_macro_file\(\))AX
1258863 f
1258872007(.)X
1258882113(.)X
1258892219(.)X
1258902325(.)X
1258912431(.)X
1258922537(.)X
1258932643(.)X
1258942749(.)X
1258952855(.)X
1258962961(.)X
1258973067(.)X
1258983173(.)X
1258993279(.)X
1259003385(.)X
1259013491(.)X
1259023597(.)X
1259033703(.)X
1259043809(.)X
1259051 f
1259063952(24)X
125907856 3264(5.12.4)N
1259081096 0.2024(dwarf_end_macro_file\(\))AX
1259093 f
1259102007(.)X
1259112113(.)X
1259122219(.)X
1259132325(.)X
1259142431(.)X
1259152537(.)X
1259162643(.)X
1259172749(.)X
1259182855(.)X
1259192961(.)X
1259203067(.)X
1259213173(.)X
1259223279(.)X
1259233385(.)X
1259243491(.)X
1259253597(.)X
1259263703(.)X
1259273809(.)X
1259281 f
1259293952(24)X
125930856 3360(5.12.5)N
1259311096 0.1985(dwarf_vendor_ext\(\))AX
1259323 f
1259331795(.)X
1259341901(.)X
1259352007(.)X
1259362113(.)X
1259372219(.)X
1259382325(.)X
1259392431(.)X
1259402537(.)X
1259412643(.)X
1259422749(.)X
1259432855(.)X
1259442961(.)X
1259453067(.)X
1259463173(.)X
1259473279(.)X
1259483385(.)X
1259493491(.)X
1259503597(.)X
1259513703(.)X
1259523809(.)X
1259531 f
1259543952(25)X
125955676 3456(5.13)N
125956856(Low)X
1259571023(Level)X
1259581226(\(.debug_frame\))X
1259591744(operations)X
1259603 f
1259612219(.)X
1259622325(.)X
1259632431(.)X
1259642537(.)X
1259652643(.)X
1259662749(.)X
1259672855(.)X
1259682961(.)X
1259693067(.)X
1259703173(.)X
1259713279(.)X
1259723385(.)X
1259733491(.)X
1259743597(.)X
1259753703(.)X
1259763809(.)X
1259771 f
1259783952(25)X
125979856 3552(5.13.1)N
1259801096 0.2768(dwarf_new_fde\(\))AX
1259813 f
1259821795(.)X
1259831901(.)X
1259842007(.)X
1259852113(.)X
1259862219(.)X
1259872325(.)X
1259882431(.)X
1259892537(.)X
1259902643(.)X
1259912749(.)X
1259922855(.)X
1259932961(.)X
1259943067(.)X
1259953173(.)X
1259963279(.)X
1259973385(.)X
1259983491(.)X
1259993597(.)X
1260003703(.)X
1260013809(.)X
1260021 f
1260033952(25)X
126004856 3648(5.13.2)N
1260051096 0.2500(dwarf_add_frame_cie\(\))AX
1260063 f
1260071901(.)X
1260082007(.)X
1260092113(.)X
1260102219(.)X
1260112325(.)X
1260122431(.)X
1260132537(.)X
1260142643(.)X
1260152749(.)X
1260162855(.)X
1260172961(.)X
1260183067(.)X
1260193173(.)X
1260203279(.)X
1260213385(.)X
1260223491(.)X
1260233597(.)X
1260243703(.)X
1260253809(.)X
1260261 f
1260273952(25)X
126028856 3744(5.13.3)N
1260291096 0.2562(dwarf_add_frame_fde\(\))AX
1260303 f
1260312007(.)X
1260322113(.)X
1260332219(.)X
1260342325(.)X
1260352431(.)X
1260362537(.)X
1260372643(.)X
1260382749(.)X
1260392855(.)X
1260402961(.)X
1260413067(.)X
1260423173(.)X
1260433279(.)X
1260443385(.)X
1260453491(.)X
1260463597(.)X
1260473703(.)X
1260483809(.)X
1260491 f
1260503952(26)X
126051856 3840(5.13.4)N
1260521096 0.2330(dwarf_add_frame_fde_b\(\))AX
1260533 f
1260542007(.)X
1260552113(.)X
1260562219(.)X
1260572325(.)X
1260582431(.)X
1260592537(.)X
1260602643(.)X
1260612749(.)X
1260622855(.)X
1260632961(.)X
1260643067(.)X
1260653173(.)X
1260663279(.)X
1260673385(.)X
1260683491(.)X
1260693597(.)X
1260703703(.)X
1260713809(.)X
1260721 f
1260733952(26)X
126074856 3936(5.13.5)N
1260751096 0.1902(dwarf_add_frame_info_b\(\))AX
1260763 f
1260772113(.)X
1260782219(.)X
1260792325(.)X
1260802431(.)X
1260812537(.)X
1260822643(.)X
1260832749(.)X
1260842855(.)X
1260852961(.)X
1260863067(.)X
1260873173(.)X
1260883279(.)X
1260893385(.)X
1260903491(.)X
1260913597(.)X
1260923703(.)X
1260933809(.)X
1260941 f
1260953952(27)X
126096856 4032(5.13.6)N
1260971096 0.2083(dwarf_add_frame_info\(\))AX
1260983 f
1260992007(.)X
1261002113(.)X
1261012219(.)X
1261022325(.)X
1261032431(.)X
1261042537(.)X
1261052643(.)X
1261062749(.)X
1261072855(.)X
1261082961(.)X
1261093067(.)X
1261103173(.)X
1261113279(.)X
1261123385(.)X
1261133491(.)X
1261143597(.)X
1261153703(.)X
1261163809(.)X
1261171 f
1261183952(28)X
126119856 4128(5.13.7)N
1261201096 0.2560(dwarf_fde_cfa_offset\(\))AX
1261213 f
1261221901(.)X
1261232007(.)X
1261242113(.)X
1261252219(.)X
1261262325(.)X
1261272431(.)X
1261282537(.)X
1261292643(.)X
1261302749(.)X
1261312855(.)X
1261322961(.)X
1261333067(.)X
1261343173(.)X
1261353279(.)X
1261363385(.)X
1261373491(.)X
1261383597(.)X
1261393703(.)X
1261403809(.)X
1261411 f
1261423952(29)X
126143856 4224(5.13.8)N
1261441096(dwarf_add_fde_inst\(\))X
1261453 f
1261461901(.)X
1261472007(.)X
1261482113(.)X
1261492219(.)X
1261502325(.)X
1261512431(.)X
1261522537(.)X
1261532643(.)X
1261542749(.)X
1261552855(.)X
1261562961(.)X
1261573067(.)X
1261583173(.)X
1261593279(.)X
1261603385(.)X
1261613491(.)X
1261623597(.)X
1261633703(.)X
1261643809(.)X
1261651 f
1261663952(29)X
1261672235 6164(-)N
1261682282(ii)X
1261692346(-)X
126170
12617132 p
126172%%Page: 32 32
1261730(Courier)xf 0 f
12617410 s 0 xH 0 xS 0 f
1261751 f
1261763 f
12617712 s
1261781446 576(A)N
1261791539(Producer)X
1261801948(Library)X
1261812298(Interface)X
1261822696(to)X
1261832800(DWARF)X
1261842 f
12618511 s
1261861084 720(UNIX)N
1261871311(International)X
1261881799(Programming)X
1261892314(Languages)X
1261902722(Special)X
1261913004(Interest)X
1261923295(Group)X
12619310 s
1261942115 1152(ABSTRACT)N
1261951 f
126196576 1392(This)N
126197746(document)X
1261981090(describes)X
1261991418(an)X
1262001523(interface)X
1262011834(to)X
1262021925(a)X
1262031990(library)X
1262042233(of)X
1262052329(functions)X
1262062656(to)X
1262072747(create)X
1262082969(DWARF)X
1262093287(debugging)X
1262103654(information)X
126211576 1488(entries)N
126212815(and)X
126213956(DWARF)X
1262141270(line)X
1262151415(number)X
1262161685(information.)X
1262172108(It)X
1262182182(does)X
1262192354(not)X
1262202481(make)X
1262212679(recommendations)X
1262223273(as)X
1262233364(to)X
1262243450(how)X
1262253612(the)X
1262263734(functions)X
126227576 1584(described)N
126228904(in)X
126229986(this)X
1262301121(document)X
1262311457(should)X
1262321690(be)X
1262331786(implemented)X
1262342224(nor)X
1262352351(does)X
1262362518(it)X
1262372582(suggest)X
1262382842(possible)X
1262393124(optimizations.)X
126240576 1728(The)N
126241736(document)X
1262421087(is)X
1262431175(oriented)X
1262441473(to)X
1262451570(creating)X
1262461865(DWARF)X
1262472190(version)X
1262482462(2.)X
1262492578(It)X
1262502663(was)X
1262512824(intended)X
1262523136(be)X
1262533248(proposed)X
1262543578(to)X
1262553676(the)X
1262563810(PLSIG)X
126257576 1824(DWARF)N
126258885(committee)X
1262591243(but)X
1262601365(that)X
1262611505(committee)X
1262621863(is)X
1262631936(now)X
1262642094(dormant.)X
126265576 1968(The)N
126266721(library)X
126267955(interfaces)X
1262681288(documented)X
1262691700(in)X
1262701782(this)X
1262711917(document)X
1262722253(are)X
1262732372(subject)X
1262742619(to)X
1262752701(change.)X
126276576 2112(rev)N
126277699(1.18,)X
126278879(10)X
126279979(Jan)X
1262801106(2002)X
12628110 f
126282576 5568(hhhhhhhhhhhh)N
1262838 s
1262849 f
126285576 5664(\322)N
1262861 f
126287672(UNIX)X
126288847(is)X
126289906(a)X
126290950(registered)X
1262911217(trademark)X
1262921491(of)X
1262931560(UNIX)X
1262941735(System)X
1262951940(Laboratories,)X
1262962294(Inc.)X
1262972423(in)X
1262982489(the)X
1262992583(United)X
1263002773(States)X
1263012942(and)X
1263023050(other)X
1263033197(countries.)X
126304
12630533 p
126306%%Page: 33 33
1263070(Courier)xf 0 f
1263088 s 0 xH 0 xS 0 f
1263091 f
126310
12631133 p
126312%%Trailer
126313xt
126314
126315xs
1263160707010001ad920000812400011e740000000a000000014020682800000944000000660000000000000000000000000000001800000000libdwarf/libdwarfdefs.h���/*
126317
126318  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
126319
126320  This program is free software; you can redistribute it and/or modify it
126321  under the terms of version 2.1 of the GNU Lesser General Public License
126322  as published by the Free Software Foundation.
126323
126324  This program is distributed in the hope that it would be useful, but
126325  WITHOUT ANY WARRANTY; without even the implied warranty of
126326  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
126327
126328  Further, this software is distributed without any warranty that it is
126329  free of the rightful claim of any third person regarding infringement
126330  or the like.  Any license provided herein, whether implied or
126331  otherwise, applies only to this software file.  Patent licenses, if
126332  any, provided herein do not apply to combinations of this program with
126333  other software, or any other product whatsoever.
126334
126335  You should have received a copy of the GNU Lesser General Public
126336  License along with this program; if not, write the Free Software
126337  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
126338  USA.
126339
126340  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
126341  Mountain View, CA 94043, or:
126342
126343  http://www.sgi.com
126344
126345  For further information regarding this notice, see:
126346
126347  http://oss.sgi.com/projects/GenInfo/NoticeExplan
126348
126349*/
126350
126351
126352/* libdwarfdefs.h
126353*/
126354
126355#ifndef LIBDWARFDEFS_H
126356#define LIBDWARFDEFS_H
126357
126358/* We want __uint32_t and __uint64_t and __int32_t __int64_t
126359   properly defined but not duplicated, since duplicate typedefs
126360   are not legal C.
126361*/
126362/*
126363 HAVE___UINT32_T
126364 HAVE___UINT64_T will be set by configure if
126365 our 4 types are predefined in compiler
126366*/
126367
126368
126369#if (!defined(HAVE___UINT32_T)) && defined(HAVE_SGIDEFS_H)
126370#include <sgidefs.h>		/* sgidefs.h defines them */
126371#define HAVE___UINT32_T 1
126372#define HAVE___UINT64_T 1
126373#endif
126374
126375
126376
126377#if (!defined(HAVE___UINT32_T)) &&   \
126378	defined(HAVE_SYS_TYPES_H) &&   \
126379	defined(HAVE___UINT32_T_IN_SYS_TYPES_H)
126380#  include <sys/types.h>
126381/* we assume __[u]int32_t and __[u]int64_t defined
126382   since __uint32_t defined in the sys/types.h in use */
126383#define HAVE___UINT32_T 1
126384#define HAVE___UINT64_T 1
126385#endif
126386
126387#ifndef HAVE___UINT32_T
126388typedef int __int32_t;
126389typedef unsigned __uint32_t;
126390
126391#define HAVE___UINT32_T 1
126392#endif
126393#ifndef HAVE___UINT64_T
126394typedef long long __int64_t;
126395typedef unsigned long long __uint64_t;
126396
126397#define HAVE___UINT64_T 1
126398#endif
126399
126400#endif
1264010707010001ad930000812400011e740000000a00000001402068280000b648000000660000000000000000000000000000001c00000000libdwarf/mips_extensions.mm���\." $Revision: 1.7 $
126402\." $Date: 2001/08/29 17:02:11 $
126403\."
126404\."
126405\." the following line may be removed if the ff ligature works on your machine
126406.lg 0
126407\." set up heading formats
126408.ds HF 3 3 3 3 3 2 2
126409.ds HP +2 +2 +1 +0 +0
126410\." ==============================================
126411\." Put current date in the following at each rev
126412.ds vE rev 1.17, 29 Aug 2001
126413\." ==============================================
126414\." ==============================================
126415.nr Hs 5
126416.nr Hb 5
126417.ds | |
126418.ds ~ ~
126419.ds ' '
126420.if t .ds Cw \&\f(CW
126421.if n .ds Cw \fB
126422.de Cf          \" Place every other arg in Cw font, beginning with first
126423.if \\n(.$=1 \&\*(Cw\\$1\fP
126424.if \\n(.$=2 \&\*(Cw\\$1\fP\\$2
126425.if \\n(.$=3 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP
126426.if \\n(.$=4 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP\\$4
126427.if \\n(.$=5 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP\\$4\*(Cw\\$5\fP
126428.if \\n(.$=6 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP\\$4\*(Cw\\$5\fP\\$6
126429.if \\n(.$=7 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP\\$4\*(Cw\\$5\fP\\$6\*(Cw\\$7\fP
126430.if \\n(.$=8 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP\\$4\*(Cw\\$5\fP\\$6\*(Cw\\$7\fP\\$8
126431.if \\n(.$=9 \&\*(Cw\\$1\fP\\$2\*(Cw\\$3\fP\\$4\*(Cw\\$5\fP\\$6\*(Cw\\$7\fP\\$8\
126432*(Cw
126433..
126434.SA 1
126435.TL
126436MIPS Extensions to DWARF Version 2.0
126437.AF ""
126438.AU "Silicon Graphics Computer Systems
126439.PF "'\*(vE '- \\\\nP -''"
126440.PM ""
126441.AS 1
126442This document describes the MIPS/Silicon Graphics extensions to the "DWARF
126443Information Format" (version 2.0.0 dated July 27, 1993).
126444.P
126445Rather than alter the base documents to describe the extensions
126446we provide this separate document.
126447.P
126448The extensions documented here are subject to change.
126449.P
126450It also describes known bugs resulting in incorrect dwarf usage.
126451.P
126452\*(vE
126453.AE
126454.MT 4
126455.H 1 "INTRODUCTION"
126456This document describes MIPS extensions to the DWARF
126457debugging information format.
126458The extensions documented here are subject to change at
126459any time.
126460.H 1 "How much symbol information is emitted"
126461The following standard DWARF V2 sections may be emitted:
126462.AL
126463.LI
126464 .debug_abbrev
126465contains
126466abbreviations supporting the .debug_info section.
126467.LI
126468 .debug_info
126469contains
126470Debug Information Entries (DIEs).
126471.LI
126472 .debug_frame
126473contains
126474stack frame descriptions.
126475.LI
126476 .debug_line
126477contains
126478line number information.
126479.LI
126480 .debug_aranges
126481contains
126482address range descriptions.
126483.LI
126484 .debug_pubnames
126485contains
126486names of global functions and data.
126487.P
126488The following
126489are MIPS extensions.
126490Theses were created to allow debuggers to
126491know names without having to look at
126492the .debug_info section.
126493.LI
126494 .debug_weaknames
126495is a MIPS extension
126496containing .debug_pubnames-like entries describing weak
126497symbols.
126498.LI
126499 .debug_funcnames
126500is a MIPS extension
126501containing .debug_pubnames-like entries describing file-static
126502functions (C static functions).
126503.LI
126504 .debug_varnames
126505is a MIPS extension
126506containing .debug_pubnames-like entries describing file-static
126507data symbols (C static variables).
126508.LI
126509 .debug_typenames
126510is a MIPS extension
126511containing .debug_pubnames-like entries describing file-level
126512types.
126513.P
126514The following are not currently emitted.
126515.LI
126516 .debug_macinfo
126517Macro information is not currently emitted.
126518.LI
126519 .debug_loc
126520Location lists are not currently emitted.
126521.LI
126522 .debug_str
126523The string section is not currently emitted.
126524.LE
126525.H 2 "Overview of information emitted"
126526We emit debug information in 3 flavors.
126527We mention C here.
126528The situation is essentially identical for f77, f90, and C++.
126529.AL
126530.LI
126531"default C"
126532We emit line information and DIEs for each subprogram.
126533But no local symbols and no type information.
126534Frame information is output.
126535The DW_AT_producer string has the optimization level: for example
126536"-O2".
126537We put so much in the DW_AT_producer that the string
126538is a significant user of space in .debug_info --
126539this is perhaps a poor use of space.
126540Debuggers only currently use the lack of -g
126541of DW_AT_producer
126542as a hint as to how a 'step' command should be interpreted, and
126543the rest of the string is not used for anything (unless
126544a human looks at it for some reason).
126545.LI
126546"C with full symbols"
126547All possible info is emitted.
126548DW_AT_producer string has all options that might be of interest,
126549which includes -D's, -U's, and the -g option.
126550These options look like they came from the command line.
126551We put so much in the DW_AT_producer that the string
126552is a significant user of space in .debug_info.
126553this is perhaps a poor use of space.
126554Debuggers only currently use the -g
126555of DW_AT_producer
126556as a hint as to how a 'step' command should be interpreted, and
126557the rest of the string is not used for anything (unless
126558a human looks at it for some reason).
126559.LI
126560"Assembler (-g, non -g are the same)"
126561Frame information is output.
126562No type information is emitted, but DIEs are prepared
126563for globals.
126564.LE
126565.H 2 "Detecting 'full symbols' (-g)"
126566The debugger depends on the existence of
126567the DW_AT_producer string to determine if the
126568compilation unit has full symbols or not.
126569It looks for -g or -g[123] and accepts these as
126570full symbols but an absent -g or a present -g0
126571is taken to mean that only basic symbols are defined and there
126572are no local symbols and no type information.
126573.P
126574In various contexts the debugger will think the program  is
126575stripped or 'was not compiled with -g' unless the -g
126576is in the DW_AT_producer string.
126577.H 2 "DWARF and strip(1)"
126578The DWARF section ".debug_frame" is marked SHF_MIPS_NOSTRIP
126579and is not stripped by the strip(1) program.
126580This is because the section is needed for doing
126581stack back traces (essential for C++
126582and Ada exception handling).
126583.P
126584All .debug_* sections are marked with elf type
126585SHT_MIPS_DWARF.
126586Applications needing to access the various DWARF sections
126587must use the section name to discriminate between them.
126588
126589.H 2 "Evaluating location expressions"
126590When the debugger evaluates location expressions, it does so
126591in 2 stages. In stage one it simply looks for the trivial
126592location expressions and treats those as special cases.
126593.P
126594If the location expression is not trivial, it enters stage two.
126595In this case it uses a stack to evaluate the expression.
126596.P
126597If the application is a 32-bit application, it does the operations
126598on 32-bit values (address size values).  Even though registers
126599can be 64 bits in a 32-bit program all evaluations are done in
12660032-bit quantities, so an attempt to calculate a 32-bit quantity
126601by taking the difference of 2 64-bit register values will not
126602work.  The notion is that the stack machine is, by the dwarf
126603definition, working in address size units.
126604.P
126605These values are then expanded to 64-bit values (addresses or
126606offsets).   This extension does not involve sign-extension.
126607.P
126608If the application is a 64-bit application, then the stack
126609values are all 64 bits and all operations are done on 64 bits.
126610.H 3 "The fbreg location op"
126611Compilers shipped with IRIX 6.0 and 6.1
126612do not emit the fbreg location expression
126613and never emit the DW_AT_frame_base attribute that it
126614depends on.
126615However, this changes
126616with release 6.2 and these are now emitted routinely.
126617
126618.H 1 "Frame Information"
126619.H 2 "Initial Instructions"
126620The DWARF V2 spec
126621provides for "initial instructions" in each CIE (page 61,
126622section 6.4.1).
126623However, it does not say whether there are default
126624values for each column (register).
126625.P
126626Rather than force every CIE to have a long list
126627of bytes to initialize all 32 integer registers,
126628we define that the default values of all registers
126629(as returned by libdwarf in the frame interface)
126630are 'same value'.
126631This is a good choice for many non-register-windows
126632implementations.
126633.H 2 "Augmentation string in debug_frame"
126634The augmentation string we use in shipped compilers (up thru
126635irix6.2) is the empty string.
126636IRIX6.2 and later has an augmentation string
126637the empty string ("")
126638or "z" or "mti v1"
126639where the "v1" is a version number (version 1).
126640.P
126641We do not believe that "mti v1" was emitted  as the
126642augmentation string in any shipped compiler.
126643.P
126644.H 3 "CIE processing based on augmentation string:"
126645If the augmentation string begins with 'z', then it is followed
126646immediately by a unsigned_leb_128 number giving the code alignment factor.
126647Next is a signed_leb_128 number giving the data alignment factor.
126648Next is a unsigned byte giving the number of the return address register.
126649Next is an unsigned_leb_128 number giving the length of the 'augmentation'
126650fields  (the length of augmentation bytes, not
126651including the unsigned_leb_128 length itself).
126652As of release 6.2, the length of the CIE augmentation fields is 0.
126653What this means is that it is possible to add new
126654augmentations, z1, z2, etc and yet an old consumer to
126655understand the entire CIE as it can bypass the
126656augmentation it does not understand because the
126657length of the augmentation fields is present.
126658Presuming of course that all augmentation fields are
126659simply additional information,
126660not some 'changing of the meaning of
126661an existing field'.
126662Currently there is no CIE data in the augmentation for things
126663beginning with 'z'.
126664.P
126665If the augmentation string is "mti v1" or "" then it is followed
126666immediately by a unsigned_leb_128 number giving the code alignment factor.
126667Next is a signed_leb_128 number giving the data alignment factor.
126668Next is a unsigned byte giving the number of the return address register.
126669.P
126670If the augmentation string is something else, then the
126671code alignment factor is assumed to be 4 and the data alignment
126672factor is assumed to be -1 and the return
126673address register is assumed to be 31. Arbitrarily.
126674The library (libdwarf) assumes it does not understand the rest of the CIE.
126675.P
126676.H 3 "FDE processing based on augmentation"
126677If the CIE augmentation string
126678for an fde begins with 'z'
126679then the next FDE field after the address_range field
126680is an
126681unsigned_leb_128 number giving the length of the 'augmentation'
126682fields, and those fields follow immediately.
126683
126684.H 4 "FDE augmentation fields"
126685.P
126686If the CIE augmentation string is "mti v1" or ""
126687then the FDE is exactly as described in the Dwarf Document section 6.4.1.
126688.P
126689Else, if the CIE augmentation string begins with "z"
126690then the next field after the FDE augmentation length field
126691is a Dwarf_Sword size offset into
126692exception tables.
126693If the CIE augmentation string does not begin with "z"
126694(and is neither "mti v1" nor "")
126695the FDE augmentation fields are skipped (not understood).
126696Note that libdwarf actually (as of MIPSpro7.3 and earlier)
126697only tests that the initial character of the augmentation
126698string is 'z', and ignores the rest of the string, if any.
126699So in reality the test is for a _prefix_ of 'z'.
126700.P
126701If the CIE augmentation string neither starts with 'z' nor is ""
126702nor is "mti v1" then libdwarf (incorrectly) assumes that the
126703table defining instructions start next.
126704Processing (in libdwarf) will be incorrect.
126705.H 2 "Stack Pointer recovery from debug_frame"
126706There is no identifiable means in
126707DWARF2 to say that the stack register is
126708recovered by any particular operation.
126709A 'register rule' works if the caller's
126710stack pointer was copied to another
126711register.
126712An 'offset(N)' rule works if the caller's
126713stack pointer was stored on the stack.
126714However if the stack pointer is
126715some register value plus/minus some offset,
126716there is no means to say this in an FDE.
126717For MIPS/IRIX, the recovered stack pointer
126718of the next frame up the stack (towards main())
126719is simply the CFA value of the current
126720frame, and the CFA value is
126721precisely a register (value of a register)
126722or a register plus offset (value of a register
126723plus offset).  This is a software convention.
126724.H 1 "egcs dwarf extensions (egcs-1.1.2 extensions)"
126725This and following egcs sections describe
126726the extensions currently shown in egcs dwarf2.
126727Note that egcs has chosen to adopt tag and
126728attribute naming as if their choices were
126729standard dwarf, not as if they were extensions.
126730However, they are properly numbered as extensions.
126731
126732.H 2 "DW_TAG_format_label             0x4101"
126733For FORTRAN 77, Fortran 90.
126734Details of use not defined in egcs source, so
126735unclear if used.
126736.H 2 "DW_TAG_function_template        0x4102"
126737For C++.
126738Details of use not defined in egcs source, so
126739unclear if used.
126740.H 2 "DW_TAG_class_template           0x4103"
126741For C++.
126742Details of use not defined in egcs source, so
126743unclear if used.
126744.H 2 "DW_AT_sf_names                          0x2101"
126745Apparently only output in DWARF1, not DWARF2.
126746.H 2 "DW_AT_src_info                          0x2102"
126747Apparently only output in DWARF1, not DWARF2.
126748.H 2 "DW_AT_mac_info                          0x2103"
126749Apparently only output in DWARF1, not DWARF2.
126750.H 2 "DW_AT_src_coords                        0x2104"
126751Apparently only output in DWARF1, not DWARF2.
126752.H 2 "DW_AT_body_begin                        0x2105"
126753Apparently only output in DWARF1, not DWARF2.
126754.H 2 "DW_AT_body_end                          0x2106"
126755Apparently only output in DWARF1, not DWARF2.
126756
126757.H 1 "egcs .eh_frame (non-sgi) (egcs-1.1.2 extensions)"
126758egcs-1.1.2 (and earlier egcs)
126759emits by default a section named .eh_frame
126760for ia32 (and possibly other platforms) which
126761is nearly identical to .debug_frame in format and content.
126762This section is used for helping handle C++ exceptions.
126763.P
126764Because after linking there are sometimes zero-ed out bytes
126765at the end of the eh_frame section, the reader code in
126766dwarf_frame.c considers a zero cie/fde length as an indication
126767that it is the end of the section.
126768.P
126769.H 2 "CIE_id 0"
126770The section is an ALLOCATED section in an executable, and
126771is therefore mapped into memory at run time.
126772The CIE_pointer (aka CIE_id, section 6.4.1
126773of the DWARF2 document) is the field that
126774distinguishes a CIE from an FDE.
126775The designers of the egcs .eh_frame section
126776decided to make the CIE_id
126777be 0 as the CIE_pointer definition is
126778.in +2
126779the number of bytes from the CIE-pointer in the FDE back to the
126780applicable CIE.
126781.in -2
126782In a dwarf .debug_frame section, the CIE_pointer is the
126783offset in .debug_frame of the CIE for this fde, and
126784since an offset can be zero of some CIE, the CIE_id
126785cannot be 0, but must be all 1 bits .
126786Note that the dwarf2.0 spec does specify the value of CIE_id
126787as 0xffffffff
126788(see section 7.23 of v2.0.0),
126789though earlier versions of this extensions document
126790incorrectly said it was not specified in the dwarf
126791document.
126792.H 2 "augmentation eh"
126793The augmentation string in each CIE is "eh"
126794which, with its following NUL character, aligns
126795the following word to a 32bit boundary.
126796Following the augmentation string is a 32bit
126797word with the address of the __EXCEPTION_TABLE__,
126798part of the exception handling data for egcs.
126799.H 2 "DW_CFA_GNU_window_save   0x2d"
126800This is effectively a flag for architectures with
126801register windows, and tells the unwinder code that
126802it must look to a previous frame for the
126803correct register window set.
126804As of this writing, egcs  gcc/frame.c
126805indicates this is for SPARC register windows.
126806.H 2 "DW_CFA_GNU_args_size     0x2e"
126807DW_CFA_GNU_args_size has a single uleb128 argument
126808which is the size, in bytes, of the function's stack
126809at that point in the function.
126810.H 2 "__EXCEPTION_TABLE__"
126811A series of 3 32bit word entries by default:
1268120 word: low pc address
1268131 word: high pc address
1268142 word: pointer to exception handler code
126815The end of the table is
126816signaled by 2 words  of -1 (not 3 words!).
126817.H 1 "Interpretations of the DWARF V2 spec"
126818.H 2 "template TAG spellings"
126819The DWARF V2 spec spells two attributes in two ways.
126820DW_TAG_template_type_param
126821(listed in Figure 1, page 7)
126822is spelled DW_TAG_template_type_parameter
126823in the body of the document (section 3.3.7, page 28).
126824We have adopted the spelling
126825DW_TAG_template_type_param.
126826.P
126827DW_TAG_template_value_param
126828(listed in Figure 1, page 7)
126829is spelled DW_TAG_template_value_parameter
126830in the body of the document (section 3.3.7, page 28).
126831We have adopted the spelling
126832DW_TAG_template_value_parameter.
126833.P
126834We recognize that the choices adopted are neither consistently
126835the longer nor the shorter name.
126836This inconsistency was an accident.
126837.H 2 DW_FORM_ref_addr confusing
126838Section 7.5.4, Attribute Encodings, describes
126839DW_FORM_ref_addr.
126840The description says the reference is the size of an address
126841on the target architecture.
126842This is surely a mistake, because on a 16bit-pointer-architecture
126843it would mean that the reference could not exceed
12684416 bits, which makes only
126845a limited amount of  sense as the reference is from one
126846part of the dwarf to another, and could (in theory)
126847be *on the disk* and not limited to what fits in memory.
126848Since MIPS is 32 bit pointers (at the smallest)
126849the restriction is not a problem for MIPS/SGI.
126850The 32bit pointer ABIs are limited to 32 bit section sizes
126851anyway (as a result of implementation details).
126852And the 64bit pointer ABIs currently have the same limit
126853as a result of how the compilers and tools are built
126854(this has not proven to be a limit in practice, so far).
126855.H 2 ".debug_macinfo in a debugger"
126856It seems quite difficult, in general, to
126857tie specific text(code) addresses to points in the
126858stream of macro information for a particular compilation unit.
126859So it's been difficult to see how to design a consumer
126860interface to libdwarf for macro information.
126861.P
126862The best (simple to implement, easy for a debugger user to
126863understand) candidate seems to be that
126864the debugger asks for macros of a given name in a compilation
126865unit, and the debugger responds with *all* the macros of that name.
126866.H 3 "only a single choice exists"
126867If there is exactly one, that is usable in expressions, if the
126868debugger is able to evaluate such.
126869.H 3 "multiple macros with same name".
126870If there are multiple macros with the same name
126871in a compilation unit,
126872the debugger (and the debugger user and the application
126873programmer) have
126874a problem: confusion is quite possible.
126875If the macros are simple the
126876debugger  user can simply substitute by hand in an expression.
126877If the macros are complicated hand substitution will be
126878impractical, and the debugger will have to identify the
126879choices and let the debugger user choose an interpretation.
126880.H 2 "Section 6.1.2 Lookup by address problem"
126881Each entry is a beginning-address followed by a length.
126882And the distinguished entry 0,0 is used to denote
126883the end of a range of entries.
126884.P
126885This means that one must be careful not to emit a zero length,
126886as in a .o (object file) the beginning address of
126887a normal entry might be 0 (it is a section offset after all),
126888and the resulting 0,0 would be taken as end-of-range, not
126889as a valid entry.
126890A dwarf dumper would have trouble with such data
126891in an object file.
126892.P
126893In an a.out or shared object (dynamic shared object, DSO)
126894no text will be at address zero so in such this problem does
126895not arise.
126896.H 2 "Section 5.10 Subrange Type Entries problem"
126897It is specified that  DW_AT_upper_bound (and lower bound)
126898must be signed entries if there is no object type
126899info to specify the bound type (Sec 5.10, end of section).
126900One cannot tell (with some
126901dwarf constant types) what the signedness is from the
126902form itself (like DW_FORM_data1), so it is necessary
126903to determine the object and type according to the rules
126904in 5.10 and then if all that fails, the type is signed.
126905It's a bit complicated and earlier versions of  mips_extensions
126906incorrectly said signedness was not defined.
126907.H 2 "Section 5.5.6 Class Template Instantiations problem"
126908Lots of room for implementor to canonicalize
126909template declarations.  Ie various folks won't agree.
126910This is not serious since a given compiler
126911will be consistent with itself and  debuggers
126912will have to cope!
126913.H 2 "Section 2.4.3.4  # 11. operator spelling"
126914DW_OP_add should be DW_OP_plus (page 14)
126915(this mistake just one place on the page).
126916.H 2 "No clear specification of C++ static funcs"
126917There is no clear way to tell if a C++ member function
126918is a static member or a non-static member function.
126919(dwarf2read.c in gdb 4.18, for example, has this observation)
126920.H 2 "Misspelling of DW_AT_const_value"
126921Twice in appendix 1, DW_AT_const_value is misspelled
126922as DW_AT_constant_value.
126923.H 2 "Mistake in Atribute Encodings"
126924Section 7.5.4, "Attribute Encodings"
126925has a brief discussion of "constant"
126926which says there are 6 forms of constants.
126927It is incorrect in that it fails to mention (or count)
126928the block forms, which are clearly allowed by
126929section 4.1 "Data Object Entries" (see entry number 9 in
126930the numbered list, on constants).
126931.H 2 "DW_OP_bregx"
126932The description of DW_OP_bregx in 2.4.3.2 (Register Based
126933Addressing) is slightly misleading, in that it
126934lists the offset first.
126935As section 7.7.1 (Location Expression)
126936makes clear, in the encoding the register number
126937comes first.
126938.H 1 "MIPS attributes"
126939.H 2 "DW_AT_MIPS_fde"
126940This extension to Dwarf appears only on subprogram TAGs and has as
126941its value the offset, in the .debug_frame section, of the fde which
126942describes the frame of this function.  It is an optimization of
126943sorts to have this present.
126944
126945.H 2 "DW_CFA_MIPS_advance_loc8 0x1d"
126946This obvious extension to dwarf line tables enables encoding of 8 byte
126947advance_loc values (for cases when such must be relocatable,
126948and thus must be full length).  Applicable only to 64-bit objects.
126949
126950.H 2 "DW_TAG_MIPS_loop        0x4081"
126951For future use. Not currently emitted.
126952Places to be emitted and attributes that this might own
126953not finalized.
126954
126955.H 2 "DW_AT_MIPS_loop_begin   0x2002"
126956For future use. Not currently emitted.
126957Attribute form and content not finalized.
126958
126959.H 2 "DW_AT_MIPS_tail_loop_begin  0x2003"
126960For future use. Not currently emitted.
126961Attribute form and content not finalized.
126962
126963.H 2 "DW_AT_MIPS_epilog_begin     0x2004"
126964For future use. Not currently emitted.
126965Attribute form and content not finalized.
126966
126967.H 2 "DW_AT_MIPS_loop_unroll_factor  0x2005"
126968For future use. Not currently emitted.
126969Attribute form and content not finalized.
126970
126971.H 2 "DW_AT_MIPS_software_pipeline_depth   0x2006"
126972For future use. Not currently emitted.
126973Attribute form and content not finalized.
126974.H 2 "DW_AT_MIPS_linkage_name                 0x2007"
126975The rules for mangling C++ names are not part of the
126976C++ standard and are different for different versions
126977of C++.  With this extension, the compiler emits
126978both the DW_AT_name for things with mangled names
126979(recall that DW_AT_name is NOT the mangled form)
126980and also emits DW_AT_MIPS_linkage_name whose value
126981is the mangled name.
126982.P
126983This makes looking for the mangled name in other linker
126984information straightforward.
126985It also is passed (by the debugger) to the
126986libmangle routines to generate names to present to the
126987debugger user.
126988.H 2 "DW_AT_MIPS_stride            0x2008"
126989F90 allows assumed shape arguments and pointers to describe
126990non-contiguous memory. A (runtime) descriptor contains address,
126991bounds and stride information - rank and element size is known
126992during compilation. The extent in each dimension is given by the
126993bounds in a DW_TAG_subrange_type, but the stride cannot be
126994represented in conventional dwarf. DW_AT_MIPS_stride was added as
126995an attribute of a DW_TAG_subrange_type to describe the
126996location of the stride.
126997Used in the MIPSpro 7.2 (7.2.1 etc) compilers.
126998.P
126999If the stride is constant (ie: can be inferred from the type in the
127000usual manner) DW_AT_MIPS_stride is absent.
127001.P
127002If DW_AT_MIPS_stride is present, the attribute contains a reference
127003to a DIE which describes the location holding the stride, and the
127004DW_AT_stride_size field of DW_TAG_array_type is ignored if
127005present.  The value of the stride is the number of
1270064 byte words between
127007elements along that axis.
127008.P
127009This applies to
127010.nf
127011a) Intrinsic types whose size is greater
127012   or equal to 4bytes ie: real*4,integer*8
127013   complex etc, but not character types.
127014
127015b) Derived types (ie: structs) of any size,
127016   unless all components are of type character.
127017.fi
127018
127019.H 2 "DW_AT_MIPS_abstract_name              0x2009"
127020This attribute only appears in a DA_TAG_inlined_subroutine DIE.
127021The value of this attribute is a string.
127022When IPA inlines a routine and the abstract origin is
127023in another compilation unit, there is a problem with putting
127024in a reference, since the ordering and timing of the
127025creation of references is unpredicatable with reference to
127026the DIE and compilation unit the reference refers to.
127027.P
127028Since there may be NO ordering of the compilation units that
127029allows a correct reference to be done without some kind of patching,
127030and since even getting the information from one place to another
127031is a problem, the compiler simply passes the problem on to the debugger.
127032.P
127033The debugger must match the DW_AT_MIPS_abstract_name
127034in the concrete
127035inlined instance DIE
127036with the  DW_AT_MIPS_abstract_name
127037in the abstract inlined subroutine DIE.
127038.P
127039A dwarf-consumer-centric view of this  and other inline
127040issues could be expressed as follows:
127041.nf
127042If DW_TAG_subprogram
127043  If has DW_AT_inline is abstract instance root
127044  If has DW_AT_abstract_origin, is out-of-line instance
127045    of function (need abstract origin for some data)
127046    (abstract root in same CU (conceptually anywhere
127047    a ref can reach, but reaching outside of CU is
127048    a problem for ipa: see DW_AT_MIPS_abstract_name))
127049  If has DW_AT_MIPS_abstract_name is abstract instance
127050    root( must have DW_AT_inline) and this name is used to
127051    match with the abstract root
127052
127053If DW_TAG_inline_subroutine
127054  Is concrete inlined subprogram instance.
127055  If has DW_AT_abstract_origin, it is a CU-local inline.
127056  If it has DW_AT_MIPS_abstract_name it is an
127057    inline whose abstract root is in another file (CU).
127058.fi
127059
127060.H 2 "DW_AT_MIPS_clone_origin               0x200a"
127061This attribute appears only in a cloned subroutine.
127062The procedure is cloned from the same compilation unit.
127063The value of this attribute is a reference to
127064the original routine in this compilation unit.
127065.P
127066The 'original' routine means the routine which has all the
127067original code.  The cloned routines will always have
127068been 'specialized' by IPA.
127069A routine with DW_AT_MIPS_clone_origin
127070will also have the DW_CC_nocall value of the DW_AT_calling_convention
127071attribute.
127072
127073.H 2 "DW_AT_MIPS_has_inlines               0x200b"
127074This attribute  may appear in a DW_TAG_subprogram DIE.
127075If present and it has the value True, then the subprogram
127076has inlined functions somewhere in the body.
127077.P
127078By default, at startup, the debugger may not look for
127079inlined functions in scopes inside the outer function.
127080.P
127081This is a hint to the debugger to look for the inlined functions
127082so the debugger can set breakpoints on these in case the user
127083requests 'stop in foo' and foo is inlined.
127084.H 2 "DW_AT_MIPS_stride_byte                  0x200c"
127085Created for f90 pointer and assumed shape
127086arrays.
127087Used in the MIPSpro 7.2 (7.2.1 etc) compilers.
127088A variant of DW_AT_MIPS_stride.
127089This stride is interpreted as a byte count.
127090Used for integer*1 and character arrays
127091and arrays of derived type
127092whose components are all character.
127093.H 2 "DW_AT_MIPS_stride_elem                  0x200d"
127094Created for f90 pointer and assumed shape
127095arrays.
127096Used in the MIPSpro 7.2 (7.2.1 etc) compilers.
127097A variant of DW_AT_MIPS_stride.
127098This stride is interpreted as a byte-pair (2 byte) count.
127099Used for integer*2 arrays.
127100.H 2 "DW_AT_MIPS_ptr_dopetype                 0x200e"
127101See following.
127102.H 2 "DW_AT_MIPS_allocatable_dopetype         0x200f"
127103See following.
127104.H 2 "DW_AT_MIPS_assumed_shape_dopetype       0x2010"
127105DW_AT_MIPS_assumed_shape_dopetype, DW_AT_MIPS_allocatable_dopetype,
127106and DW_AT_MIPS_ptr_dopetype have an attribute value
127107which is a reference to a Fortran 90 Dope Vector.
127108These attributes are introduced in MIPSpro7.3.
127109They only apply to f90 arrays (where they are
127110needed to describe arrays never properly described
127111before in debug information).
127112C, C++, f77, and most f90 arrays continue to be described
127113in standard dwarf.
127114.P
127115The distinction between these three attributes is the f90 syntax
127116distinction: keywords 'pointer' and 'allocatable' with the absence
127117of these keywords on an assumed shape array being the third case.
127118.P
127119A "Dope Vector" is a struct (C struct) which describes
127120a dynamically-allocatable array.
127121In objects with full debugging the C struct will be
127122in the dwarf information (of the f90 object, represented like C).
127123A debugger will use the link to find the main struct DopeVector
127124and will use that information to decode the dope vector.
127125At the outer allocatable/assumed-shape/pointer
127126the DW_AT_location points at the dope vector (so debugger
127127calculations use that as a base).
127128.H 2 "Overview of debugger use of dope vectors"
127129Fundamentally, we build two distinct
127130representations of the arrays and pointers.
127131One, in dwarf, represents the statically-representable
127132information (the types and
127133variable/type-names, without type size information).
127134The other, using dope vectors in memory, represents
127135the run-time data of sizes.
127136A debugger must process the two representations
127137in parallel (and merge them) to deal with  user expressions in
127138a debugger.
127139.H 2 "Example f90 code for use in explanation"
127140[Note
127141We want dwarf output with *exactly*
127142this little (arbitrary) example.
127143Not yet available.
127144end Note]
127145Consider the following code.
127146.nf
127147       type array_ptr
127148	  real   :: myvar
127149          real, dimension (:), pointer :: ap
127150       end type array_ptr
127151
127152       type (array_ptr), allocatable, dimension (:) :: arrays
127153
127154       allocate (arrays(20))
127155       do i = 1,20
127156          allocate (arrays(i)%ap(i))
127157       end do
127158.fi
127159arrays is an allocatable array (1 dimension) whose size is
127160not known at compile time (it has
127161a Dope Vector).  At run time, the
127162allocate statement creats 20 array_ptr dope vectors
127163and marks the base arrays dopevector as allocated.
127164The myvar variable is just there to add complexity to
127165the example :-)
127166.nf
127167In the loop, arrays(1)%ap(1)
127168    is allocated as a single element array of reals.
127169In the loop, arrays(2)%ap(2)
127170    is allocated as an array of two reals.
127171...
127172In the loop, arrays(20)%ap(20)
127173    is allocated as an array of twenty reals.
127174.fi
127175.H 2 "the problem with standard dwarf and this example"
127176.sp
127177In dwarf, there is no way to find the array bounds of arrays(3)%ap,
127178for example, (which are 1:3 in f90 syntax)
127179since any location expression in an ap array lower bound
127180attribute cannot involve the 3 (the 3 is known at debug time and
127181does not appear in the running binary, so no way for the
127182location expression to get to it).
127183And of course the 3 must actually index across the array of
127184dope vectors in 'arrays' in our implementation, but that is less of
127185a problem than the problem with the '3'.
127186.sp
127187Plus dwarf has no way to find the 'allocated' flag in the
127188dope vector (so the debugger can know when the allocate is done
127189for a particular arrays(j)%ap).
127190.sp
127191Consequently, the calculation of array bounds and indices
127192for these dynamically created f90 arrays
127193is now pushed of into the debugger, which must know the
127194field names and usages of the dope vector C structure and
127195use the field offsets etc to find data arrays.
127196C, C++, f77, and most f90 arrays continue to be described
127197in standard dwarf.
127198At the outer allocatable/assumed-shape/pointer
127199the DW_AT_location points at the dope vector (so debugger
127200calculations use that as a base).
127201.P
127202It would have been nice to design a dwarf extension
127203to handle the above problems, but
127204the methods considered to date were not
127205any more consistent with standard dwarf than
127206this dope vector centric approach: essentially just
127207as much work in the debugger appeared necessary either way.
127208A better (more dwarf-ish)
127209design would be welcome information.
127210
127211.H 2 "A simplified sketch of the dwarf information"
127212[Note:
127213Needs to be written.
127214end Note]
127215
127216.H 2 "A simplified sketch of the dope vector information"
127217[Note:
127218This one is simplified.
127219Details left out that should be here. Amplify.
127220end Note]
127221This is an overly simplified version of a dope vector,
127222presented as an initial hint.
127223Full details presented later.
127224.nf
127225struct simplified{
127226  void *base; // pointer to the data this describes
127227  long  el_len;
127228  int   assoc:1
127229  int   ptr_alloc:1
127230  int   num_dims:3;
127231  struct dims_s {
127232    long lb;
127233    long ext;
127234    long str_m;
127235  } dims[7];
127236};
127237.fi
127238Only 'num_dims' elements of dims[] are actually used.
127239
127240.H 2 "The dwarf information"
127241
127242Here is dwarf information from the compiler for
127243the example above, as printed by dwarfdump(1)
127244.nf
127245[Note:
127246The following may not be the test.
127247Having field names with '.' in the name is
127248not such a good idea, as it conflicts with the
127249use of '.' in dbx extended naming.
127250Something else, like _$, would be much easier
127251to work with in dbx (customers won't care about this,
127252for the most part,
127253but folks working on dbx will, and in those
127254rare circumstances when a customer cares,
127255the '.' will be a real problem in dbx.).
127256Note that to print something about .base., in dbx one
127257would have to do
127258	whatis `.base.`
127259where that is the grave accent, or back-quote I am using.
127260With extended naming one do
127261	whatis `.dope.`.`.base.`
127262which is hard to type and hard to read.
127263end Note]
127264
127265<2><  388>      DW_TAG_array_type
127266                DW_AT_name                  .base.
127267                DW_AT_type                  <815>
127268                DW_AT_declaration           yes(1)
127269<3><  401>      DW_TAG_subrange_type
127270                DW_AT_lower_bound           0
127271                DW_AT_upper_bound           0
127272<2><  405>      DW_TAG_pointer_type
127273                DW_AT_type                  <388>
127274                DW_AT_byte_size             4
127275                DW_AT_address_class         0
127276<2><  412>      DW_TAG_structure_type
127277                DW_AT_name                  .flds.
127278                DW_AT_byte_size             28
127279<3><  421>      DW_TAG_member
127280                DW_AT_name                  el_len
127281                DW_AT_type                  <815>
127282                DW_AT_data_member_location  DW_OP_consts 0
127283<3><  436>      DW_TAG_member
127284                DW_AT_name                  assoc
127285                DW_AT_type                  <841>
127286                DW_AT_byte_size             0
127287                DW_AT_bit_offset            0
127288                DW_AT_bit_size              1
127289                DW_AT_data_member_location  DW_OP_consts 4
127290<3><  453>      DW_TAG_member
127291                DW_AT_name                  ptr_alloc
127292                DW_AT_type                  <841>
127293                DW_AT_byte_size             0
127294                DW_AT_bit_offset            1
127295                DW_AT_bit_size              1
127296                DW_AT_data_member_location  DW_OP_consts 4
127297<3><  474>      DW_TAG_member
127298                DW_AT_name                  p_or_a
127299                DW_AT_type                  <841>
127300                DW_AT_byte_size             0
127301                DW_AT_bit_offset            2
127302                DW_AT_bit_size              2
127303                DW_AT_data_member_location  DW_OP_consts 4
127304<3><  492>      DW_TAG_member
127305                DW_AT_name                  a_contig
127306                DW_AT_type                  <841>
127307                DW_AT_byte_size             0
127308                DW_AT_bit_offset            4
127309                DW_AT_bit_size              1
127310                DW_AT_data_member_location  DW_OP_consts 4
127311<3><  532>      DW_TAG_member
127312                DW_AT_name                  num_dims
127313                DW_AT_type                  <841>
127314                DW_AT_byte_size             0
127315                DW_AT_bit_offset            29
127316                DW_AT_bit_size              3
127317                DW_AT_data_member_location  DW_OP_consts 8
127318<3><  572>      DW_TAG_member
127319                DW_AT_name                  type_code
127320                DW_AT_type                  <841>
127321                DW_AT_byte_size             0
127322                DW_AT_bit_offset            0
127323                DW_AT_bit_size              32
127324                DW_AT_data_member_location  DW_OP_consts 16
127325<3><  593>      DW_TAG_member
127326                DW_AT_name                  orig_base
127327                DW_AT_type                  <841>
127328                DW_AT_data_member_location  DW_OP_consts 20
127329<3><  611>      DW_TAG_member
127330                DW_AT_name                  orig_size
127331                DW_AT_type                  <815>
127332                DW_AT_data_member_location  DW_OP_consts 24
127333<2><  630>      DW_TAG_structure_type
127334                DW_AT_name                  .dope_bnd.
127335                DW_AT_byte_size             12
127336<3><  643>      DW_TAG_member
127337                DW_AT_name                  lb
127338                DW_AT_type                  <815>
127339                DW_AT_data_member_location  DW_OP_consts 0
127340<3><  654>      DW_TAG_member
127341                DW_AT_name                  ext
127342                DW_AT_type                  <815>
127343                DW_AT_data_member_location  DW_OP_consts 4
127344<3><  666>      DW_TAG_member
127345                DW_AT_name                  str_m
127346                DW_AT_type                  <815>
127347                DW_AT_data_member_location  DW_OP_consts 8
127348<2><  681>      DW_TAG_array_type
127349                DW_AT_name                  .dims.
127350                DW_AT_type                  <630>
127351                DW_AT_declaration           yes(1)
127352<3><  694>      DW_TAG_subrange_type
127353                DW_AT_lower_bound           0
127354                DW_AT_upper_bound           0
127355<2><  698>      DW_TAG_structure_type
127356                DW_AT_name                  .dope.
127357                DW_AT_byte_size             44
127358<3><  707>      DW_TAG_member
127359                DW_AT_name                  base
127360                DW_AT_type                  <405>
127361                DW_AT_data_member_location  DW_OP_consts 0
127362<3><  720>      DW_TAG_member
127363                DW_AT_name                  .flds
127364                DW_AT_type                  <412>
127365                DW_AT_data_member_location  DW_OP_consts 4
127366<3><  734>      DW_TAG_member
127367                DW_AT_name                  .dims.
127368                DW_AT_type                  <681>
127369                DW_AT_data_member_location  DW_OP_consts 32
127370<2><  750>      DW_TAG_variable
127371                DW_AT_type                  <815>
127372                DW_AT_location              DW_OP_fbreg -32
127373                DW_AT_artificial            yes(1)
127374<2><  759>      DW_TAG_variable
127375                DW_AT_type                  <815>
127376                DW_AT_location              DW_OP_fbreg -28
127377                DW_AT_artificial            yes(1)
127378<2><  768>      DW_TAG_variable
127379                DW_AT_type                  <815>
127380                DW_AT_location              DW_OP_fbreg -24
127381                DW_AT_artificial            yes(1)
127382<2><  777>      DW_TAG_array_type
127383                DW_AT_type                  <815>
127384                DW_AT_declaration           yes(1)
127385<3><  783>      DW_TAG_subrange_type
127386                DW_AT_lower_bound           <750>
127387                DW_AT_count                 <759>
127388                DW_AT_MIPS_stride           <768>
127389<2><  797>      DW_TAG_variable
127390                DW_AT_decl_file             1
127391                DW_AT_decl_line             1
127392                DW_AT_name                  ARRAY
127393                DW_AT_type                  <698>
127394                DW_AT_location              DW_OP_fbreg -64 DW_OP_deref
127395<1><  815>      DW_TAG_base_type
127396                DW_AT_name                  INTEGER_4
127397                DW_AT_encoding              DW_ATE_signed
127398                DW_AT_byte_size             4
127399<1><  828>      DW_TAG_base_type
127400                DW_AT_name                  INTEGER_8
127401                DW_AT_encoding              DW_ATE_signed
127402                DW_AT_byte_size             8
127403<1><  841>      DW_TAG_base_type
127404                DW_AT_name                  INTEGER*4
127405                DW_AT_encoding              DW_ATE_unsigned
127406                DW_AT_byte_size             4
127407<1><  854>      DW_TAG_base_type
127408                DW_AT_name                  INTEGER*8
127409                DW_AT_encoding              DW_ATE_unsigned
127410                DW_AT_byte_size             8
127411
127412.fi
127413.H 2 "The dope vector structure details"
127414A dope vector is the following C struct, "dopevec.h".
127415Not all the fields are of use to a debugger.
127416It may be that not all fields will show up
127417in the f90 dwarf (since not all are of interest to debuggers).
127418.nf
127419[Note:
127420Need details on the use of each field.
127421And need to know which are really 32 bits and which
127422are 32 or 64.
127423end Note]
127424The following
127425struct
127426is a representation of all the dope vector fields.
127427It suppresses irrelevant detail and may not
127428exactly match the layout in memory (a debugger must
127429examine the dwarf to find the fields, not
127430compile this structure into the debugger!).
127431.nf
127432struct .dope. {
127433 void *base;   // pointer to data
127434 struct .flds. {
127435  long el_len; // length of element in bytes?
127436  unsigned int assoc:1;     //means?
127437  unsigned int ptr_alloc:1;     //means?
127438  unsigned int p_or_a:2;    //means?
127439  unsigned int a_contig:1;  // means?
127440  unsigned int num_dims: 3; // 0 thru 7
127441  unsigned int type_code:32; //values?
127442  unsigned int orig_base; //void *? means?
127443  long         orig_size; // means?
127444 } .flds;
127445
127446 struct .dope_bnd. {
127447   long lb   ; // lower bound
127448   long ext  ;  // means?
127449   long str_m; // means?
127450 } .dims[7];
127451}
127452.fi
127453
127454.H 2 "DW_AT_MIPS_assumed_size       0x2011"
127455This flag was invented to deal with f90 arrays.
127456For example:
127457
127458.nf
127459      pointer (rptr, axx(1))
127460      pointer (iptr, ita(*))
127461      rptr = malloc (100*8)
127462      iptr = malloc (100*4)
127463.fi
127464
127465This flag attribute has the value 'yes' (true, on) if and only if
127466the size is unbounded, as iptr is.
127467Both may show an explicit upper bound of 1 in the dwarf,
127468but this flag notifies the debugger that there is explicitly
127469no user-provided size.
127470
127471So if a user asks for a printout of  the rptr allocated
127472array, the default will be of a single entry (as
127473there is a user slice bound in the source).
127474In contrast, there is no explicit upper bound on the iptr
127475(ita) array so the default slice will use the current bound
127476(a value calculated from the malloc size, see the dope vector).
127477
127478Given explicit requests, more of rptr(axx) can me shown
127479than the default.
127480
127481.H 1 "Line information and Source Position"
127482DWARF does not define the meaning of the term 'source statement'.
127483Nor does it define any way to find the first user-written
127484executable code in a function.
127485.P
127486It does define that a source statement  has a file name,
127487a line number, and a column position (see Sec 6.2, Line Number
127488Information of the Dwarf Version 2 document).
127489We will call those 3 source coordinates a 'source position'
127490in this document.  We'll try not to accidentally call the
127491source position a 'line number' since that is ambiguous
127492as to what it means.
127493
127494.H 2 "Definition of Statement"
127495.P
127496A function prolog is a statement.
127497.P
127498A C, C++, Pascal, or Fortran statement is a statement.
127499.P
127500Each initialized local variable in C,C++ is a statement
127501in that its initialization generates a source position.
127502This means that
127503	x =3, y=4;
127504is two statements.
127505.P
127506For C, C++:
127507The 3 parts a,b,c in for(a;b;c) {d;} are individual statements.
127508The condition portion of a while() and do {} while() is
127509a statement.  (of course d; can be any number of statements)
127510.P
127511For Fortran, the controlling expression of a DO loop is a statement.
127512Is a 'continue' statement in Fortran a DWARF statement?
127513.P
127514Each function return, whether user coded or generated by the
127515compiler, is a statement.  This is so one can step over (in
127516a debugger) the final user-coded statement
127517(exclusive of the return statement if any) in a function
127518wile not leaving the function scope.
127519.P
127520
127521.H 2 "Finding The First User Code in a Function"
127522
127523.nf
127524Consider:
127525int func(int a)
127526{                    /* source position 1 */
127527	float b = a; /* source position 2 */
127528	int x;
127529	x = b + 2;   /* source position 3 */
127530}                    /* source position 4 */
127531.fi
127532.P
127533The DIE for a function gives the address range of the function,
127534including function prolog(s) and epilog(s)
127535.P
127536Since there is no scope block for the outer user scope of a
127537function (and thus no beginning address range for the outer
127538user scope:  the DWARF committee explicitly rejected the idea
127539of having a user scope block)
127540it is necessary to use the source position information to find
127541the first user-executable statement.
127542.P
127543This means that the user code for a function must be presumed
127544to begin at the code location of the second source position in
127545the function address range.
127546.P
127547If a function has exactly one source position, the function
127548presumably consists solely of a return.
127549.P
127550If a function has exactly two source positions, the function
127551may consist of a function prolog and a return or a single user
127552statement and a return (there may be no prolog code needed in a
127553leaf function).  In this case, there is no way to be sure which
127554is the first source position of user code, so the rule is to
127555presume that the first address is user code.
127556.P
127557If a function consists of 3 or more source positions, one
127558should assume that the first source position is function prolog and
127559the second is the first user executable code.
127560
127561.H 2 "Using debug_frame Information to find first user statement"
127562In addition to the line information, the debug_frame information
127563can be
127564useful in determining the first user source line.
127565.P
127566Given that a function has more than 1 source position,
127567Find the code location of the second source position, then
127568examine the debug_frame information to determine if the Canonical
127569Frame Address (cfa) is updated before the second source position
127570code location.
127571If the cfa is updated, then one can be pretty sure that the
127572code for the first source position is function prolog code.
127573.P
127574Similarly, if the cfa is restored in the code for
127575a source position, the source position is likely to
127576represent a function exit block.
127577
127578.H 2 "Debugger Use Of Source Position"
127579Command line debuggers, such as dbx and gdb, will ordinarily
127580want to consider multiple statements on one line to be a single
127581statement: doing otherwise is distressing to users since it
127582causes a 'step' command to appear to have no effect.
127583.P
127584An exception for command line debuggers is in determining the
127585first user statement: as detailed above, there one wants to
127586consider the full  source position and will want to consider
127587the function return a separate statement.  It is difficult to
127588make the function return a separate statement 'step' reliably
127589however if a function is coded all on one line or if the last
127590line of user code before the return  is on the same line as the
127591return.
127592.P
127593A graphical debugger has none of these problems if it simply
127594highlights the portion of the line being executed.  In that
127595case, stepping will appear natural even stepping within a
127596line.
127597.H 1 "Known Bugs"
127598Up through at least MIPSpro7.2.1
127599the compiler has been emitting form DW_FORM_DATA1,2, or 4
127600for DW_AT_const_value in DW_TAG_enumerator.
127601And dwarfdump and debuggers have read this with dwarf_formudata()
127602or form_sdata() and gotten some values incorrect.
127603For example, a value of 128 was printed by debuggers as a negative value.
127604Since dwarfdump and the compilers were not written to use the
127605value the same way, their output differed.
127606For negative enumerator values the compiler has been emitting 32bit values
127607in a DW_FORM_DATA4.
127608The compiler should probably be emitting a DW_FORM_sdata for
127609enumerator values.
127610And consumers of enumerator values should then call form_sdata().
127611However, right now, debuggers should call form_udata() and only if
127612it fails, call form_sdata().
127613Anything else will break backward compatibility with
127614the objects produced earlier.
127615.SK
127616.S
127617.TC
127618.CS
1276190707010001ad940000812400011e740000000a00000001402068280001ce56000000660000000000000000000000000000001c00000000libdwarf/mips_extensions.ps���%!PS-Adobe-1.0
127620%%Creator: quasar:davea (David B Anderson)
127621%%Title: stdin (ditroff)
127622%%CreationDate: Wed Aug 29 09:57:44 2001
127623%%EndComments
127624% Start of psdit.pro -- prolog for ditroff translator
127625% Copyright (c) 1985,1987 Adobe Systems Incorporated. All Rights Reserved.
127626% GOVERNMENT END USERS: See Notice file in TranScript library directory
127627% -- probably /usr/lib/ps/Notice
127628% $Revision: 1.7 $
127629/$DITroff 140 dict def $DITroff begin
127630/fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def
127631/xi {0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto
127632  /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F
127633  /pagesave save def}def
127634/PB{save /psv exch def currentpoint translate
127635  resolution 72 div dup neg scale 0 0 moveto}def
127636/PE{psv restore}def
127637/m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def
127638/tan{dup sin exch cos div}bind def
127639/point{resolution 72 div mul}bind def
127640/dround	{transform round exch round exch itransform}bind def
127641/xT{/devname exch def}def
127642/xr{/mh exch def /my exch def /resolution exch def}def
127643/xp{}def
127644/xs{docsave restore end}def
127645/xt{}def
127646/xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not
127647 {fonts slotno fontname findfont put fontnames slotno fontname put}if}def
127648/xH{/fontheight exch def F}bind def
127649/xS{/fontslant exch def F}bind def
127650/s{/fontsize exch def /fontheight fontsize def F}bind def
127651/f{/fontnum exch def F}bind def
127652/F{fontheight 0 le {/fontheight fontsize def}if
127653   fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore
127654   fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if
127655   makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}bind def
127656/X{exch currentpoint exch pop moveto show}bind def
127657/N{3 1 roll moveto show}bind def
127658/Y{exch currentpoint pop exch moveto show}bind def
127659/S /show load def
127660/ditpush{}def/ditpop{}def
127661/AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}bind def
127662/AN{4 2 roll moveto 0 exch ashow}bind def
127663/AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}bind def
127664/AS{0 exch ashow}bind def
127665/MX{currentpoint exch pop moveto}bind def
127666/MY{currentpoint pop exch moveto}bind def
127667/MXY /moveto load def
127668/cb{pop}def	% action on unknown char -- nothing for now
127669/n{}def/w{}def
127670/p{pop showpage pagesave restore /pagesave save def}def
127671/abspoint{currentpoint exch pop add exch currentpoint pop add exch}def
127672/dstroke{currentpoint stroke moveto}bind def
127673/Dl{2 copy gsave rlineto stroke grestore rmoveto}bind def
127674/arcellipse{oldmat currentmatrix pop
127675 currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def
127676 rad 0 rad -180 180 arc oldmat setmatrix}def
127677/Dc{gsave dup /diamv exch def /diamh exch def arcellipse dstroke
127678    grestore diamh 0 rmoveto}def
127679/De{gsave /diamv exch def /diamh exch def arcellipse dstroke
127680    grestore diamh 0 rmoveto}def
127681/Da{currentpoint /by exch def /bx exch def /fy exch def /fx exch def
127682   /cy exch def /cx exch def /rad cx cx mul cy cy mul add sqrt def
127683   /ang1 cy neg cx neg atan def /ang2 fy fx atan def cx bx add cy by add
127684   2 copy rad ang1 ang2 arcn stroke exch fx add exch fy add moveto}def
127685/Barray 200 array def % 200 values in a wiggle
127686/D~{mark}def
127687/D~~{counttomark Barray exch 0 exch getinterval astore /Bcontrol exch def pop
127688 /Blen Bcontrol length def Blen 4 ge Blen 2 mod 0 eq and
127689 {Bcontrol 0 get Bcontrol 1 get abspoint /Ycont exch def /Xcont exch def
127690  Bcontrol 0 2 copy get 2 mul put Bcontrol 1 2 copy get 2 mul put
127691  Bcontrol Blen 2 sub 2 copy get 2 mul put
127692  Bcontrol Blen 1 sub 2 copy get 2 mul put
127693  /Ybi /Xbi currentpoint 3 1 roll def def 0 2 Blen 4 sub
127694  {/i exch def
127695   Bcontrol i get 3 div Bcontrol i 1 add get 3 div
127696   Bcontrol i get 3 mul Bcontrol i 2 add get add 6 div
127697   Bcontrol i 1 add get 3 mul Bcontrol i 3 add get add 6 div
127698   /Xbi Xcont Bcontrol i 2 add get 2 div add def
127699   /Ybi Ycont Bcontrol i 3 add get 2 div add def
127700   /Xcont Xcont Bcontrol i 2 add get add def
127701   /Ycont Ycont Bcontrol i 3 add get add def
127702   Xbi currentpoint pop sub Ybi currentpoint exch pop sub rcurveto
127703  }for dstroke}if}def
127704end
127705/ditstart{$DITroff begin
127706 /nfonts 60 def			% NFONTS makedev/ditroff dependent!
127707 /fonts[nfonts{0}repeat]def
127708 /fontnames[nfonts{()}repeat]def
127709/docsave save def
127710}def
127711
127712% character outcalls
127713/oc {/pswid exch def /cc exch def /name exch def
127714   /ditwid pswid fontsize mul resolution mul 72000 div def
127715   /ditsiz fontsize resolution mul 72 div def
127716   ocprocs name known{ocprocs name get exec}{name cb}
127717   ifelse}def
127718/fractm [.65 0 0 .6 0 0] def
127719/fraction
127720 {/fden exch def /fnum exch def gsave /cf currentfont def
127721  cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto
127722  fnum show rmoveto currentfont cf setfont(\244)show setfont fden show
127723  grestore ditwid 0 rmoveto} def
127724/oce {grestore ditwid 0 rmoveto}def
127725/dm {ditsiz mul}def
127726/ocprocs 50 dict def ocprocs begin
127727(14){(1)(4)fraction}def
127728(12){(1)(2)fraction}def
127729(34){(3)(4)fraction}def
127730(13){(1)(3)fraction}def
127731(23){(2)(3)fraction}def
127732(18){(1)(8)fraction}def
127733(38){(3)(8)fraction}def
127734(58){(5)(8)fraction}def
127735(78){(7)(8)fraction}def
127736(sr){gsave .05 dm .16 dm rmoveto(\326)show oce}def
127737(is){gsave 0 .15 dm rmoveto(\362)show oce}def
127738(->){gsave 0 .02 dm rmoveto(\256)show oce}def
127739(<-){gsave 0 .02 dm rmoveto(\254)show oce}def
127740(==){gsave 0 .05 dm rmoveto(\272)show oce}def
127741end
127742% DIThacks fonts for some special chars
12774350 dict dup begin
127744/FontType 3 def
127745/FontName /DIThacks def
127746/FontMatrix [.001 0.0 0.0 .001 0.0 0.0] def
127747/FontBBox [-220 -280 900 900] def% a lie but ...
127748/Encoding 256 array def
1277490 1 255{Encoding exch /.notdef put}for
127750Encoding
127751 dup 8#040/space put %space
127752 dup 8#110/rc put %right ceil
127753 dup 8#111/lt put %left  top curl
127754 dup 8#112/bv put %bold vert
127755 dup 8#113/lk put %left  mid curl
127756 dup 8#114/lb put %left  bot curl
127757 dup 8#115/rt put %right top curl
127758 dup 8#116/rk put %right mid curl
127759 dup 8#117/rb put %right bot curl
127760 dup 8#120/rf put %right floor
127761 dup 8#121/lf put %left  floor
127762 dup 8#122/lc put %left  ceil
127763 dup 8#140/sq put %square
127764 dup 8#141/bx put %box
127765 dup 8#142/ci put %circle
127766 dup 8#143/br put %box rule
127767 dup 8#144/rn put %root extender
127768 dup 8#145/vr put %vertical rule
127769 dup 8#146/ob put %outline bullet
127770 dup 8#147/bu put %bullet
127771 dup 8#150/ru put %rule
127772 dup 8#151/ul put %underline
127773 pop
127774/DITfd 100 dict def
127775/BuildChar{0 begin
127776 /cc exch def /fd exch def
127777 /charname fd /Encoding get cc get def
127778 /charwid fd /Metrics get charname get def
127779 /charproc fd /CharProcs get charname get def
127780 charwid 0 fd /FontBBox get aload pop setcachedevice
127781 40 setlinewidth
127782 newpath 0 0 moveto gsave charproc grestore
127783 end}def
127784/BuildChar load 0 DITfd put
127785%/UniqueID 5 def
127786/CharProcs 50 dict def
127787CharProcs begin
127788/space{}def
127789/.notdef{}def
127790/ru{500 0 rls}def
127791/rn{0 750 moveto 500 0 rls}def
127792/vr{20 800 moveto 0 -770 rls}def
127793/bv{20 800 moveto 0 -1000 rls}def
127794/br{20 770 moveto 0 -1040 rls}def
127795/ul{0 -250 moveto 500 0 rls}def
127796/ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def
127797/bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def
127798/sq{80 0 rmoveto currentpoint dround newpath moveto
127799    640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def
127800/bx{80 0 rmoveto currentpoint dround newpath moveto
127801    640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def
127802/ci{355 333 rmoveto currentpoint newpath 333 0 360 arc
127803    50 setlinewidth stroke}def
127804
127805/lt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def
127806/lb{20 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def
127807/rt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def
127808/rb{20 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def
127809/lk{20 800 moveto 20 300 -280 300 s4 arcto pop pop 1000 sub
127810    currentpoint stroke moveto
127811    20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def
127812/rk{20 800 moveto 20 300 320 300 s4 arcto pop pop 1000 sub
127813    currentpoint stroke moveto
127814    20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def
127815/lf{20 800 moveto 0 -1000 rlineto s4 0 rls}def
127816/rf{20 800 moveto 0 -1000 rlineto s4 neg 0 rls}def
127817/lc{20 -200 moveto 0 1000 rlineto s4 0 rls}def
127818/rc{20 -200 moveto 0 1000 rlineto s4 neg 0 rls}def
127819end
127820
127821/Metrics 50 dict def Metrics begin
127822/.notdef 0 def
127823/space 500 def
127824/ru 500 def
127825/br 0 def
127826/lt 250 def
127827/lb 250 def
127828/rt 250 def
127829/rb 250 def
127830/lk 250 def
127831/rk 250 def
127832/rc 250 def
127833/lc 250 def
127834/rf 250 def
127835/lf 250 def
127836/bv 250 def
127837/ob 350 def
127838/bu 350 def
127839/ci 750 def
127840/bx 750 def
127841/sq 750 def
127842/rn 500 def
127843/ul 500 def
127844/vr 0 def
127845end
127846
127847DITfd begin
127848/s2 500 def /s4 250 def /s3 333 def
127849/a4p{arcto pop pop pop pop}def
127850/2cx{2 copy exch}def
127851/rls{rlineto stroke}def
127852/currx{currentpoint pop}def
127853/dround{transform round exch round exch itransform} def
127854end
127855end
127856/DIThacks exch definefont pop
127857
127858ditstart
127859(psc)xT
127860576 1 1 xr
1278611(Times-Roman)xf 1 f
1278622(Times-Italic)xf 2 f
1278633(Times-Bold)xf 3 f
1278644(Times-BoldItalic)xf 4 f
1278655(Helvetica)xf 5 f
1278666(Helvetica-Bold)xf 6 f
1278677(Courier)xf 7 f
1278688(Courier-Bold)xf 8 f
1278699(Symbol)xf 9 f
12787010(DIThacks)xf 10 f
12787110 s
1278721 f
127873xi
127874%%EndProlog
127875
127876%%Page: 1 1
12787710 s 0 xH 0 xS 1 f
1278783 f
12787912 s
1278801462 672(MIPS)N
1278811726(Extensions)X
1278822192(to)X
1278832296(DWARF)X
1278842682(Version)X
1278853026(2.0)X
1278862 f
12788711 s
1278881669 816(Silicon)N
1278891937(Graphics)X
1278902286(Computer)X
1278912660(Systems)X
1278923 f
127893576 1248(1.)N
127894686(INTRODUCTION)X
1278951 f
12789610 s
127897576 1392(This)N
127898742(document)X
1278991082(describes)X
1279001405(MIPS)X
1279011615(extensions)X
1279021977(to)X
1279032063(the)X
1279042185(DWARF)X
1279052499(debugging)X
1279062862(information)X
1279073265(format.)X
1279083544(The)X
1279093694(extensions)X
127910576 1488(documented)N
127911988(here)X
1279121147(are)X
1279131266(subject)X
1279141513(to)X
1279151595(change)X
1279161843(at)X
1279171921(any)X
1279182057(time.)X
1279193 f
12792011 s
127921576 1680(2.)N
127922686(How)X
127923884(much)X
1279241116(symbol)X
1279251407(information)X
1279261879(is)X
1279271960(emitted)X
1279281 f
12792910 s
127930576 1824(The)N
127931721(following)X
1279321052(standard)X
1279331344(DWARF)X
1279341653(V2)X
1279351771(sections)X
1279362049(may)X
1279372207(be)X
1279382303(emitted:)X
127939636 1968(1.)N
127940796(.debug_abbrev)X
1279411291(contains)X
1279421578(abbreviations)X
1279432030(supporting)X
1279442392(the)X
1279452510(.debug_info)X
1279462915(section.)X
127947636 2112(2.)N
127948796(.debug_info)X
1279491201(contains)X
1279501488(Debug)X
1279511722(Information)X
1279522125(Entries)X
1279532372(\(DIEs\).)X
127954636 2256(3.)N
127955796(.debug_frame)X
1279561260(contains)X
1279571547(stack)X
1279581732(frame)X
1279591940(descriptions.)X
127960636 2400(4.)N
127961796(.debug_line)X
1279621192(contains)X
1279631479(line)X
1279641619(number)X
1279651884(information.)X
127966636 2544(5.)N
127967796(.debug_aranges)X
1279681318(contains)X
1279691605(address)X
1279701866(range)X
1279712065(descriptions.)X
127972636 2688(6.)N
127973796(.debug_pubnames)X
1279741397(contains)X
1279751684(names)X
1279761909(of)X
1279771996(global)X
1279782216(functions)X
1279792534(and)X
1279802670(data.)X
127981776 2832(The)N
127982921(following)X
1279831252(are)X
1279841371(MIPS)X
1279851577(extensions.)X
1279861975(Theses)X
1279872218(were)X
1279882395(created)X
1279892648(to)X
1279902730(allow)X
1279912929(debuggers)X
1279923280(to)X
1279933363(know)X
1279943562(names)X
1279953788(without)X
127996776 2928(having)N
1279971014(to)X
1279981096(look)X
1279991258(at)X
1280001336(the)X
1280011454(.debug_info)X
1280021859(section.)X
128003636 3072(7.)N
128004801(.debug_weaknames)X
1280051458(is)X
1280061537(a)X
1280071599(MIPS)X
1280081811(extension)X
1280092144(containing)X
1280102508(.debug_pubnames-like)X
1280113262(entries)X
1280123502(describing)X
1280133862(weak)X
128014776 3168(symbols.)N
128015636 3312(8.)N
128016808(.debug_funcnames)X
1280171444(is)X
1280181529(a)X
1280191597(MIPS)X
1280201815(extension)X
1280212154(containing)X
1280222524(.debug_pubnames-like)X
1280233284(entries)X
1280243531(describing)X
1280253898(file-)X
128026776 3408(static)N
128027965(functions)X
1280281283(\(C)X
1280291383(static)X
1280301572(functions\).)X
128031636 3552(9.)N
128032812(.debug_varnames)X
1280331412(is)X
1280341501(a)X
1280351573(MIPS)X
1280361795(extension)X
1280372138(containing)X
1280382512(.debug_pubnames-like)X
1280393276(entries)X
1280403527(describing)X
1280413898(file-)X
128042776 3648(static)N
128043965(data)X
1280441119(symbols)X
1280451405(\(C)X
1280461505(static)X
1280471694(variables\).)X
128048596 3792(10.)N
128049808(.debug_typenames)X
1280501439(is)X
1280511524(a)X
1280521593(MIPS)X
1280531812(extension)X
1280542152(containing)X
1280552523(.debug_pubnames-like)X
1280563284(entries)X
1280573531(describing)X
1280583898(file-)X
128059776 3888(level)N
128060952(types.)X
128061776 4032(The)N
128062921(following)X
1280631252(are)X
1280641371(not)X
1280651493(currently)X
1280661803(emitted.)X
128067596 4176(11.)N
128068796(.debug_macinfo)X
1280691335(Macro)X
1280701565(information)X
1280711963(is)X
1280722036(not)X
1280732158(currently)X
1280742468(emitted.)X
128075596 4320(12.)N
128076796(.debug_loc)X
1280771170(Location)X
1280781475(lists)X
1280791623(are)X
1280801742(not)X
1280811864(currently)X
1280822174(emitted.)X
128083596 4464(13.)N
128084796(.debug_str)X
1280851152(The)X
1280861297(string)X
1280871499(section)X
1280881746(is)X
1280891819(not)X
1280901941(currently)X
1280912251(emitted.)X
1280923 f
12809311 s
128094576 4608(2.1)N
128095730(Overview)X
1280961114(of)X
1280971209(information)X
1280981681(emitted)X
1280991 f
12810010 s
128101576 4752(We)N
128102709(emit)X
128103872(debug)X
1281041089(information)X
1281051488(in)X
1281061571(3)X
1281071633(flavors.)X
1281081918(We)X
1281092052(mention)X
1281102336(C)X
1281112411(here.)X
1281122612(The)X
1281132759(situation)X
1281143056(is)X
1281153131(essentially)X
1281163491(identical)X
1281173789(for)X
1281183905(f77,)X
128119576 4848(f90,)N
128120723(and)X
128121859(C++.)X
128122636 4992(1.)N
128123776("default)X
1281241057(C")X
1281251168(We)X
1281261305(emit)X
1281271472(line)X
1281281617(information)X
1281292020(and)X
1281302161(DIEs)X
1281312351(for)X
1281322470(each)X
1281332643(subprogram.)X
1281343091(But)X
1281353231(no)X
1281363336(local)X
1281373518(symbols)X
1281383810(and)X
1281393952(no)X
128140776 5088(type)N
128141941(information.)X
1281421386(Frame)X
1281431618(information)X
1281442023(is)X
1281452103(output.)X
1281462374(The)X
1281472526(DW_AT_producer)X
1281483160(string)X
1281493369(has)X
1281503503(the)X
1281513628(optimization)X
128152776 5184(level:)N
128153980(for)X
1281541100(example)X
1281551398("-O2".)X
1281561655(We)X
1281571793(put)X
1281581921(so)X
1281592018(much)X
1281602222(in)X
1281612311(the)X
1281622436(DW_AT_producer)X
1281633070(that)X
1281643217(the)X
1281653342(string)X
1281663551(is)X
1281673631(a)X
1281683694(significant)X
128169776 5280(user)N
128170932(of)X
1281711021(space)X
1281721222(in)X
1281731306(.debug_info)X
1281741713(--)X
1281751789(this)X
1281761926(is)X
1281772001(perhaps)X
1281782273(a)X
1281792331(poor)X
1281802500(use)X
1281812629(of)X
1281822718(space.)X
1281832959(Debuggers)X
1281843329(only)X
1281853493(currently)X
1281863805(use)X
1281873934(the)X
128188776 5376(lack)N
128189933(of)X
1281901023(-g)X
1281911113(of)X
1281921203(DW_AT_producer)X
1281931833(as)X
1281941923(a)X
1281951982(hint)X
1281962129(as)X
1281972219(to)X
1281982304(how)X
1281992465(a)X
1282002524('step')X
1282012730(command)X
1282023069(should)X
1282033305(be)X
1282043404(interpreted,)X
1282053795(and)X
1282063934(the)X
128207776 5472(rest)N
128208912(of)X
128209999(the)X
1282101117(string)X
1282111319(is)X
1282121392(not)X
1282131514(used)X
1282141681(for)X
1282151795(anything)X
1282162095(\(unless)X
1282172342(a)X
1282182398(human)X
1282192636(looks)X
1282202829(at)X
1282212907(it)X
1282222971(for)X
1282233085(some)X
1282243274(reason\).)X
128225636 5616(2.)N
128226776("C)X
128227894(with)X
1282281069(full)X
1282291213(symbols")X
1282301545(All)X
1282311680(possible)X
1282321975(info)X
1282332137(is)X
1282342223(emitted.)X
1282352536(DW_AT_producer)X
1282363176(string)X
1282373391(has)X
1282383531(all)X
1282393644(options)X
1282403912(that)X
128241776 5712(might)N
128242984(be)X
1282431082(of)X
1282441171(interest,)X
1282451448(which)X
1282461665(includes)X
1282471953(-D's,)X
1282482137(-U's,)X
1282492321(and)X
1282502458(the)X
1282512577(-g)X
1282522665(option.)X
1282532930(These)X
1282543143(options)X
1282553399(look)X
1282563562(like)X
1282573703(they)X
1282583862(came)X
128259776 5808(from)N
128260961(the)X
1282611088(command)X
1282621433(line.)X
1282631622(We)X
1282641763(put)X
1282651894(so)X
1282661994(much)X
1282672201(in)X
1282682292(the)X
1282692419(DW_AT_producer)X
1282703055(that)X
1282713205(the)X
1282723333(string)X
1282733545(is)X
1282743628(a)X
1282753694(significant)X
128276576 6164(rev)N
128277699(1.17,)X
128278879(29)X
128279979(Aug)X
1282801137(2001)X
1282812237(-)X
1282822284(1)X
1282832344(-)X
128284
1282852 p
128286%%Page: 2 2
12828710 s 0 xH 0 xS 1 f
1282882237 384(-)N
1282892284(2)X
1282902344(-)X
128291776 768(user)N
128292935(of)X
1282931027(space)X
1282941230(in)X
1282951316(.debug_info.)X
1282961765(this)X
1282971904(is)X
1282981981(perhaps)X
1282992255(a)X
1283002315(poor)X
1283012486(use)X
1283022617(of)X
1283032708(space.)X
1283042951(Debuggers)X
1283053323(only)X
1283063489(currently)X
1283073803(use)X
1283083934(the)X
128309776 864(-g)N
128310867(of)X
128311958(DW_AT_producer)X
1283121589(as)X
1283131680(a)X
1283141740(hint)X
1283151888(as)X
1283161979(to)X
1283172065(how)X
1283182227(a)X
1283192287('step')X
1283202494(command)X
1283212834(should)X
1283223071(be)X
1283233171(interpreted,)X
1283243563(and)X
1283253703(the)X
1283263825(rest)X
1283273965(of)X
128328776 960(the)N
128329894(string)X
1283301096(is)X
1283311169(not)X
1283321291(used)X
1283331458(for)X
1283341572(anything)X
1283351872(\(unless)X
1283362119(a)X
1283372175(human)X
1283382413(looks)X
1283392606(at)X
1283402684(it)X
1283412748(for)X
1283422862(some)X
1283433051(reason\).)X
128344636 1104(3.)N
128345776("Assembler)X
1283461175(\(-g,)X
1283471312(non)X
1283481455(-g)X
1283491545(are)X
1283501667(the)X
1283511788(same\)")X
1283522036(Frame)X
1283532264(information)X
1283542665(is)X
1283552741(output.)X
1283563009(No)X
1283573131(type)X
1283583293(information)X
1283593695(is)X
1283603772(emitted,)X
128361776 1200(but)N
128362898(DIEs)X
1283631083(are)X
1283641202(prepared)X
1283651504(for)X
1283661618(globals.)X
1283673 f
12836811 s
128369576 1344(2.2)N
128370730(Detecting)X
1283711108('full)X
1283721287(symbols')X
1283731641(\(-g\))X
1283741 f
12837510 s
128376576 1488(The)N
128377721(debugger)X
1283781040(depends)X
1283791323(on)X
1283801423(the)X
1283811541(existence)X
1283821860(of)X
1283831947(the)X
1283842065(DW_AT_producer)X
1283852692(string)X
1283862894(to)X
1283872976(determine)X
1283883317(if)X
1283893386(the)X
1283903505(compilation)X
1283913908(unit)X
128392576 1584(has)N
128393709(full)X
128394846(symbols)X
1283951138(or)X
1283961231(not.)X
1283971399(It)X
1283981474(looks)X
1283991673(for)X
1284001792(-g)X
1284011884(or)X
1284021976(-g[123])X
1284032242(and)X
1284042383(accepts)X
1284052645(these)X
1284062835(as)X
1284072927(full)X
1284083063(symbols)X
1284093354(but)X
1284103481(an)X
1284113582(absent)X
1284123812(-g)X
1284133904(or)X
1284143996(a)X
128415576 1680(present)N
128416828(-g0)X
128417955(is)X
1284181028(taken)X
1284191222(to)X
1284201304(mean)X
1284211498(that)X
1284221638(only)X
1284231800(basic)X
1284241985(symbols)X
1284252271(are)X
1284262390(defined)X
1284272652(and)X
1284282789(there)X
1284292971(are)X
1284303091(no)X
1284313192(local)X
1284323369(symbols)X
1284333656(and)X
1284343793(no)X
1284353894(type)X
128436576 1776(information.)N
128437576 1920(In)N
128438669(various)X
128439931(contexts)X
1284401224(the)X
1284411348(debugger)X
1284421673(will)X
1284431823(think)X
1284442013(the)X
1284452137(program)X
1284462455(is)X
1284472534(stripped)X
1284482818(or)X
1284492911('was)X
1284503089(not)X
1284513217(compiled)X
1284523542(with)X
1284533711(-g')X
1284543832(unless)X
128455576 2016(the)N
128456694(-g)X
128457781(is)X
128458854(in)X
128459936(the)X
1284601054(DW_AT_producer)X
1284611681(string.)X
1284623 f
12846311 s
128464576 2160(2.3)N
128465730(DWARF)X
1284661083(and)X
1284671247(strip\(1\))X
1284681 f
12846910 s
128470576 2304(The)N
128471725(DWARF)X
1284721038(section)X
1284731290(".debug_frame")X
1284741825(is)X
1284751903(marked)X
1284762169(SHF_MIPS_NOSTRIP)X
1284772939(and)X
1284783080(is)X
1284793158(not)X
1284803285(stripped)X
1284813568(by)X
1284823673(the)X
1284833796(strip\(1\))X
128484576 2400(program.)N
128485919(This)X
1284861092(is)X
1284871176(because)X
1284881462(the)X
1284891591(section)X
1284901849(is)X
1284911933(needed)X
1284922191(for)X
1284932315(doing)X
1284942527(stack)X
1284952722(back)X
1284962904(traces)X
1284973122(\(essential)X
1284983455(for)X
1284993579(C++)X
1285003752(and)X
1285013898(Ada)X
128502576 2496(exception)N
128503908(handling\).)X
128504576 2640(All)N
128505702(.debug_*)X
1285061022(sections)X
1285071304(are)X
1285081427(marked)X
1285091692(with)X
1285101859(elf)X
1285111969(type)X
1285122132(SHT_MIPS_DWARF.)X
1285132903(Applications)X
1285143337(needing)X
1285153616(to)X
1285163703(access)X
1285173934(the)X
128518576 2736(various)N
128519832(DWARF)X
1285201141(sections)X
1285211419(must)X
1285221594(use)X
1285231721(the)X
1285241839(section)X
1285252086(name)X
1285262280(to)X
1285272362(discriminate)X
1285282778(between)X
1285293066(them.)X
1285303 f
12853111 s
128532576 2976(2.4)N
128533730(Evaluating)X
1285341164(location)X
1285351485(expressions)X
1285361 f
12853710 s
128538576 3120(When)N
128539793(the)X
128540916(debugger)X
1285411240(evaluates)X
1285421564(location)X
1285431847(expressions,)X
1285442266(it)X
1285452335(does)X
1285462507(so)X
1285472604(in)X
1285482692(2)X
1285492758(stages.)X
1285503000(In)X
1285513093(stage)X
1285523284(one)X
1285533426(it)X
1285543496(simply)X
1285553739(looks)X
1285563938(for)X
128557576 3216(the)N
128558694(trivial)X
128559905(location)X
1285601183(expressions)X
1285611577(and)X
1285621713(treats)X
1285631907(those)X
1285642096(as)X
1285652183(special)X
1285662426(cases.)X
128567576 3360(If)N
128568662(the)X
128569792(location)X
1285701082(expression)X
1285711457(is)X
1285721542(not)X
1285731676(trivial,)X
1285741919(it)X
1285751995(enters)X
1285762219(stage)X
1285772416(two.)X
1285782608(In)X
1285792707(this)X
1285802854(case)X
1285813025(it)X
1285823101(uses)X
1285833271(a)X
1285843340(stack)X
1285853538(to)X
1285863633(evaluate)X
1285873934(the)X
128588576 3456(expression.)N
128589576 3600(If)N
128590651(the)X
128591770(application)X
1285921147(is)X
1285931221(a)X
1285941278(32-bit)X
1285951490(application,)X
1285961887(it)X
1285971952(does)X
1285982120(the)X
1285992239(operations)X
1286002594(on)X
1286012696(32-bit)X
1286022909(values)X
1286033136(\(address)X
1286043426(size)X
1286053573(values\).)X
1286063867(Even)X
128607576 3696(though)N
128608831(registers)X
1286091136(can)X
1286101281(be)X
1286111390(64)X
1286121503(bits)X
1286131651(in)X
1286141746(a)X
1286151815(32-bit)X
1286162039(program)X
1286172344(all)X
1286182457(evaluations)X
1286192854(are)X
1286202985(done)X
1286213173(in)X
1286223267(32-bit)X
1286233490(quantities,)X
1286243853(so)X
1286253956(an)X
128626576 3792(attempt)N
128627836(to)X
128628918(calculate)X
1286291224(a)X
1286301280(32-bit)X
1286311492(quantity)X
1286321775(by)X
1286331876(taking)X
1286342097(the)X
1286352216(difference)X
1286362564(of)X
1286372652(2)X
1286382713(64-bit)X
1286392925(register)X
1286403187(values)X
1286413413(will)X
1286423558(not)X
1286433681(work.)X
1286443907(The)X
128645576 3888(notion)N
128646800(is)X
128647873(that)X
1286481013(the)X
1286491131(stack)X
1286501316(machine)X
1286511608(is,)X
1286521701(by)X
1286531801(the)X
1286541919(dwarf)X
1286552127(definition,)X
1286562478(working)X
1286572765(in)X
1286582847(address)X
1286593108(size)X
1286603253(units.)X
128661576 4032(These)N
128662795(values)X
1286631027(are)X
1286641153(then)X
1286651318(expanded)X
1286661653(to)X
1286671743(64-bit)X
1286681962(values)X
1286692195(\(addresses)X
1286702558(or)X
1286712653(offsets\).)X
1286722982(This)X
1286733152(extension)X
1286743487(does)X
1286753662(not)X
1286763792(involve)X
128677576 4128(sign-extension.)N
128678576 4272(If)N
128679652(the)X
128680772(application)X
1286811150(is)X
1286821225(a)X
1286831283(64-bit)X
1286841496(application,)X
1286851894(then)X
1286862054(the)X
1286872174(stack)X
1286882361(values)X
1286892588(are)X
1286902709(all)X
1286912811(64)X
1286922914(bits)X
1286933052(and)X
1286943191(all)X
1286953294(operations)X
1286963651(are)X
1286973773(done)X
1286983952(on)X
128699576 4368(64)N
128700676(bits.)X
1287013 f
128702576 4512(2.4.1)N
128703776(The)X
128704929(fbreg)X
1287051132(location)X
1287061423(op)X
1287071 f
128708576 4656(Compilers)N
128709939(shipped)X
1287101218(with)X
1287111390(IRIX)X
1287121585(6.0)X
1287131716(and)X
1287141863(6.1)X
1287151994(do)X
1287162105(not)X
1287172238(emit)X
1287182411(the)X
1287192540(fbreg)X
1287202741(location)X
1287213030(expression)X
1287223404(and)X
1287233551(never)X
1287243761(emit)X
1287253934(the)X
128726576 4752 0.2333(DW_AT_frame_base)AN
1287271298(attribute)X
1287281595(that)X
1287291745(it)X
1287301819(depends)X
1287312112(on.)X
1287322262(However,)X
1287332607(this)X
1287342752(changes)X
1287353041(with)X
1287363212(release)X
1287373465(6.2)X
1287383594(and)X
1287393739(these)X
1287403933(are)X
128741576 4848(now)N
128742734(emitted)X
128743994(routinely.)X
1287443 f
12874511 s
128746576 5136(3.)N
128747686(Frame)X
128748957(Information)X
128749576 5280(3.1)N
128750730(Initial)X
128751983(Instructions)X
1287521 f
12875310 s
128754576 5424(The)N
128755724(DWARF)X
1287561036(V2)X
1287571157(spec)X
1287581323(provides)X
1287591622(for)X
1287601739("initial)X
1287611981(instructions")X
1287622410(in)X
1287632495(each)X
1287642667(CIE)X
1287652820(\(page)X
1287663023(61,)X
1287673147(section)X
1287683398(6.4.1\).)X
1287693649(However,)X
1287703988(it)X
128771576 5520(does)N
128772743(not)X
128773865(say)X
128774992(whether)X
1287751271(there)X
1287761452(are)X
1287771571(default)X
1287781814(values)X
1287792039(for)X
1287802153(each)X
1287812321(column)X
1287822581(\(register\).)X
128783576 5664(Rather)N
128784813(than)X
128785974(force)X
1287861163(every)X
1287871365(CIE)X
1287881517(to)X
1287891602(have)X
1287901777(a)X
1287911837(long)X
1287922003(list)X
1287932124(of)X
1287942215(bytes)X
1287952408(to)X
1287962494(initialize)X
1287972798(all)X
1287982902(32)X
1287993006(integer)X
1288003253(registers,)X
1288013569(we)X
1288023687(define)X
1288033912(that)X
128804576 5760(the)N
128805697(default)X
128806943(values)X
1288071171(of)X
1288081261(all)X
1288091364(registers)X
1288101659(\(as)X
1288111776(returned)X
1288122067(by)X
1288132170(libdwarf)X
1288142465(in)X
1288152550(the)X
1288162671(frame)X
1288172882(interface\))X
1288183214(are)X
1288193336('same)X
1288203551(value'.)X
1288213815(This)X
1288223979(is)X
128823576 5856(a)N
128824632(good)X
128825812(choice)X
1288261042(for)X
1288271156(many)X
1288281354(non-register-windows)X
1288292078(implementations.)X
128830576 6164(rev)N
128831699(1.17,)X
128832879(29)X
128833979(Aug)X
1288341137(2001)X
1288352237(-)X
1288362284(2)X
1288372344(-)X
128838
1288393 p
128840%%Page: 3 3
12884110 s 0 xH 0 xS 1 f
1288422237 384(-)N
1288432284(3)X
1288442344(-)X
1288453 f
12884611 s
128847576 768(3.2)N
128848730(Augmentation)X
1288491289(string)X
1288501531(in)X
1288511627(debug_frame)X
1288521 f
12885310 s
128854576 912(The)N
128855729(augmentation)X
1288561193(string)X
1288571403(we)X
1288581525(use)X
1288591660(in)X
1288601750(shipped)X
1288612027(compilers)X
1288622372(\(up)X
1288632508(thru)X
1288642666(irix6.2\))X
1288652933(is)X
1288663015(the)X
1288673142(empty)X
1288683371(string.)X
1288693622(IRIX6.2)X
1288703916(and)X
128871576 1008(later)N
128872740(has)X
128873868(an)X
128874965(augmentation)X
1288751422(string)X
1288761625(the)X
1288771744(empty)X
1288781965(string)X
1288792168(\(""\))X
1288802309(or)X
1288812397("z")X
1288822520(or)X
1288832608("mti)X
1288842768(v1")X
1288852901(where)X
1288863118(the)X
1288873236("v1")X
1288883402(is)X
1288893475(a)X
1288903531(version)X
1288913787(number)X
128892576 1104(\(version)N
128893859(1\).)X
128894576 1248(We)N
128895708(do)X
128896808(not)X
128897930(believe)X
1288981182(that)X
1288991322("mti)X
1289001481(v1")X
1289011614(was)X
1289021759(emitted)X
1289032039(as)X
1289042126(the)X
1289052244(augmentation)X
1289062700(string)X
1289072902(in)X
1289082984(any)X
1289093120(shipped)X
1289103389(compiler.)X
1289113 f
128912576 1392(3.2.1)N
128913776(CIE)X
128914938(processing)X
1289151318(based)X
1289161533(on)X
1289171637(augmentation)X
1289182128(string:)X
1289191 f
128920576 1536(If)N
128921653(the)X
128922774(augmentation)X
1289231233(string)X
1289241439(begins)X
1289251672(with)X
1289261838('z',)X
1289271972(then)X
1289282134(it)X
1289292202(is)X
1289302279(followed)X
1289312588(immediately)X
1289323012(by)X
1289333116(a)X
1289343176(unsigned_leb_128)X
1289353787(number)X
128936576 1632(giving)N
128937802(the)X
128938922(code)X
1289391095(alignment)X
1289401436(factor.)X
1289411685(Next)X
1289421862(is)X
1289431936(a)X
1289441993(signed_leb_128)X
1289452521(number)X
1289462787(giving)X
1289473012(the)X
1289483131(data)X
1289493286(alignment)X
1289503627(factor.)X
1289513876(Next)X
128952576 1728(is)N
128953653(a)X
128954713(unsigned)X
1289551026(byte)X
1289561189(giving)X
1289571418(the)X
1289581541(number)X
1289591811(of)X
1289601903(the)X
1289612026(return)X
1289622243(address)X
1289632509(register.)X
1289642815(Next)X
1289652996(is)X
1289663074(an)X
1289673175(unsigned_leb_128)X
1289683787(number)X
128969576 1824(giving)N
128970822(the)X
128971962(length)X
1289721204(of)X
1289731313(the)X
1289741453('augmentation')X
1289751985(fields)X
1289762225(\(the)X
1289772392(length)X
1289782633(of)X
1289792741(augmentation)X
1289803218(bytes,)X
1289813448(not)X
1289823591(including)X
1289833934(the)X
128984576 1920(unsigned_leb_128)N
1289851189(length)X
1289861415(itself\).)X
1289871668(As)X
1289881784(of)X
1289891878(release)X
1289902129(6.2,)X
1289912276(the)X
1289922401(length)X
1289932628(of)X
1289942722(the)X
1289952847(CIE)X
1289963003(augmentation)X
1289973466(fields)X
1289983671(is)X
1289993751(0.)X
1290003858(What)X
129001576 2016(this)N
129002712(means)X
129003937(is)X
1290041010(that)X
1290051150(it)X
1290061214(is)X
1290071287(possible)X
1290081569(to)X
1290091651(add)X
1290101787(new)X
1290111941(augmentations,)X
1290122448(z1,)X
1290132564(z2,)X
1290142680(etc)X
1290152794(and)X
1290162930(yet)X
1290173048(an)X
1290183144(old)X
1290193266(consumer)X
1290203598(to)X
1290213680(understand)X
129022576 2112(the)N
129023715(entire)X
129024939(CIE)X
1290251109(as)X
1290261217(it)X
1290271302(can)X
1290281455(bypass)X
1290291715(the)X
1290301855(augmentation)X
1290312333(it)X
1290322419(does)X
1290332608(not)X
1290342752(understand)X
1290353146(because)X
1290363443(the)X
1290373583(length)X
1290383825(of)X
1290393934(the)X
129040576 2208(augmentation)N
1290411047(fields)X
1290421260(is)X
1290431348(present.)X
1290441655(Presuming)X
1290452032(of)X
1290462134(course)X
1290472378(that)X
1290482532(all)X
1290492646(augmentation)X
1290503116(fields)X
1290513328(are)X
1290523461(simply)X
1290533712(additional)X
129054576 2304(information,)N
129055995(not)X
1290561118(some)X
1290571308('changing)X
1290581650(of)X
1290591738(the)X
1290601858(meaning)X
1290612156(of)X
1290622245(an)X
1290632343(existing)X
1290642618(field'.)X
1290652854(Currently)X
1290663183(there)X
1290673366(is)X
1290683441(no)X
1290693543(CIE)X
1290703694(data)X
1290713850(in)X
1290723934(the)X
129073576 2400(augmentation)N
1290741032(for)X
1290751146(things)X
1290761361(beginning)X
1290771701(with)X
1290781863('z'.)X
129079576 2544(If)N
129080652(the)X
129081772(augmentation)X
1290821230(string)X
1290831434(is)X
1290841509("mti)X
1290851670(v1")X
1290861805(or)X
1290871894("")X
1290881982(then)X
1290892142(it)X
1290902208(is)X
1290912284(followed)X
1290922592(immediately)X
1290933015(by)X
1290943118(a)X
1290953177(unsigned_leb_128)X
1290963787(number)X
129097576 2640(giving)N
129098802(the)X
129099922(code)X
1291001095(alignment)X
1291011436(factor.)X
1291021685(Next)X
1291031862(is)X
1291041936(a)X
1291051993(signed_leb_128)X
1291062521(number)X
1291072787(giving)X
1291083012(the)X
1291093131(data)X
1291103286(alignment)X
1291113627(factor.)X
1291123876(Next)X
129113576 2736(is)N
129114649(a)X
129115705(unsigned)X
1291161014(byte)X
1291171172(giving)X
1291181396(the)X
1291191514(number)X
1291201779(of)X
1291211866(the)X
1291221984(return)X
1291232196(address)X
1291242457(register.)X
129125576 2880(If)N
129126651(the)X
129127770(augmentation)X
1291281227(string)X
1291291430(is)X
1291301504(something)X
1291311858(else,)X
1291322024(then)X
1291332183(the)X
1291342302(code)X
1291352475(alignment)X
1291362816(factor)X
1291373025(is)X
1291383099(assumed)X
1291393396(to)X
1291403480(be)X
1291413578(4)X
1291423640(and)X
1291433778(the)X
1291443898(data)X
129145576 2976(alignment)N
129146922(factor)X
1291471135(is)X
1291481213(assumed)X
1291491514(to)X
1291501601(be)X
1291511702(-1)X
1291521794(and)X
1291531935(the)X
1291542058(return)X
1291552275(address)X
1291562541(register)X
1291572807(is)X
1291582885(assumed)X
1291593186(to)X
1291603273(be)X
1291613374(31.)X
1291623499(Arbitrarily.)X
1291633907(The)X
129164576 3072(library)N
129165810(\(libdwarf\))X
1291661156(assumes)X
1291671443(it)X
1291681507(does)X
1291691674(not)X
1291701796(understand)X
1291712168(the)X
1291722286(rest)X
1291732422(of)X
1291742509(the)X
1291752627(CIE.)X
1291763 f
129177576 3216(3.2.2)N
129178776(FDE)X
129179956(processing)X
1291801336(based)X
1291811551(on)X
1291821655(augmentation)X
1291831 f
129184576 3360(If)N
129185655(the)X
129186778(CIE)X
129187932(augmentation)X
1291881394(string)X
1291891602(for)X
1291901722(an)X
1291911824(fde)X
1291921953(begins)X
1291932188(with)X
1291942356('z')X
1291952472(then)X
1291962636(the)X
1291972760(next)X
1291982924(FDE)X
1291993101(field)X
1292003274(after)X
1292013448(the)X
1292023572(address_range)X
129203576 3456(field)N
129204745(is)X
129205820(an)X
129206918(unsigned_leb_128)X
1292071527(number)X
1292081794(giving)X
1292092020(the)X
1292102139(length)X
1292112360(of)X
1292122448(the)X
1292132567('augmentation')X
1292143078(fields,)X
1292153297(and)X
1292163434(those)X
1292173624(fields)X
1292183823(follow)X
129219576 3552(immediately.)N
1292203 f
1292219 s
129222576 3792(3.2.2.1)N
129223810(FDE)X
129224972(augmentation)X
1292251414(fields)X
1292261 f
12922710 s
129228576 3936(If)N
129229667(the)X
129230802(CIE)X
129231968(augmentation)X
1292321441(string)X
1292331660(is)X
1292341750("mti)X
1292351926(v1")X
1292362076(or)X
1292372180("")X
1292382283(then)X
1292392458(the)X
1292402593(FDE)X
1292412781(is)X
1292422871(exactly)X
1292433140(as)X
1292443244(described)X
1292453590(in)X
1292463690(the)X
1292473826(Dwarf)X
129248576 4032(Document)N
129249930(section)X
1292501177(6.4.1.)X
129251576 4176(Else,)N
129252757(if)X
129253829(the)X
129254950(CIE)X
1292551102(augmentation)X
1292561561(string)X
1292571766(begins)X
1292581998(with)X
1292592163("z")X
1292602288(then)X
1292612449(the)X
1292622570(next)X
1292632732(field)X
1292642903(after)X
1292653075(the)X
1292663197(FDE)X
1292673372(augmentation)X
1292683832(length)X
129269576 4272(field)N
129270753(is)X
129271836(a)X
129272902(Dwarf_Sword)X
1292731387(size)X
1292741541(offset)X
1292751753(into)X
1292761906(exception)X
1292772247(tables.)X
1292782503(If)X
1292792586(the)X
1292802713(CIE)X
1292812871(augmentation)X
1292823336(string)X
1292833547(does)X
1292843723(not)X
1292853854(begin)X
129286576 4368(with)N
129287742("z")X
129288868(\(and)X
1292891035(is)X
1292901113(neither)X
1292911361("mti)X
1292921525(v1")X
1292931663(nor)X
1292941795(""\))X
1292951913(the)X
1292962036(FDE)X
1292972212(augmentation)X
1292982673(fields)X
1292992876(are)X
1293003000(skipped)X
1293013274(\(not)X
1293023428(understood\).)X
1293033876(Note)X
129304576 4464(that)N
129305717(libdwarf)X
1293061010(actually)X
1293071284(\(as)X
1293081398(of)X
1293091485(MIPSpro7.3)X
1293101898(and)X
1293112034(earlier\))X
1293122287(only)X
1293132449(tests)X
1293142611(that)X
1293152751(the)X
1293162869(initial)X
1293173075(character)X
1293183391(of)X
1293193478(the)X
1293203596(augmentation)X
129321576 4560(string)N
129322778(is)X
129323851('z',)X
129324981(and)X
1293251117(ignores)X
1293261373(the)X
1293271491(rest)X
1293281627(of)X
1293291714(the)X
1293301832(string,)X
1293312054(if)X
1293322123(any.)X
1293332299(So)X
1293342403(in)X
1293352485(reality)X
1293362710(the)X
1293372828(test)X
1293382959(is)X
1293393032(for)X
1293403146(a)X
1293413202(_prefix_)X
1293423494(of)X
1293433581('z'.)X
129344576 4704(If)N
129345656(the)X
129346780(CIE)X
129347935(augmentation)X
1293481398(string)X
1293491607(neither)X
1293501857(starts)X
1293512053(with)X
1293522222('z')X
1293532339(nor)X
1293542473(is)X
1293552553("")X
1293562646(nor)X
1293572780(is)X
1293582860("mti)X
1293593026(v1")X
1293603166(then)X
1293613331(libdwarf)X
1293623630(\(incorrectly\))X
129363576 4800(assumes)N
129364863(that)X
1293651003(the)X
1293661121(table)X
1293671297(defining)X
1293681584(instructions)X
1293691977(start)X
1293702135(next.)X
1293712333(Processing)X
1293722700(\(in)X
1293732809(libdwarf\))X
1293743128(will)X
1293753272(be)X
1293763368(incorrect.)X
1293773 f
12937811 s
129379576 4944(3.3)N
129380730(Stack)X
129381962(Pointer)X
1293821263(recovery)X
1293831612(from)X
1293841819(debug_frame)X
1293851 f
12938610 s
129387576 5088(There)N
129388793(is)X
129389875(no)X
129390984(identifiable)X
1293911378(means)X
1293921613(in)X
1293931705(DWARF2)X
1293942064(to)X
1293952156(say)X
1293962293(that)X
1293972443(the)X
1293982571(stack)X
1293992766(register)X
1294003037(is)X
1294013120(recovered)X
1294023468(by)X
1294033578(any)X
1294043724(particular)X
129405576 5184(operation.)N
129406962(A)X
1294071063('register)X
1294081374(rule')X
1294091569(works)X
1294101808(if)X
1294111900(the)X
1294122041(caller's)X
1294132321(stack)X
1294142529(pointer)X
1294152799(was)X
1294162967(copied)X
1294173224(to)X
1294183328(another)X
1294193611(register.)X
1294203934(An)X
129421576 5280('offset\(N\)')N
129422948(rule)X
1294231096(works)X
1294241315(if)X
1294251387(the)X
1294261508(caller's)X
1294271768(stack)X
1294281956(pointer)X
1294292206(was)X
1294302354(stored)X
1294312573(on)X
1294322676(the)X
1294332797(stack.)X
1294343025(However)X
1294353344(if)X
1294363417(the)X
1294373539(stack)X
1294383728(pointer)X
1294393979(is)X
129440576 5376(some)N
129441770(register)X
1294421036(value)X
1294431235(plus/minus)X
1294441610(some)X
1294451803(offset,)X
1294462030(there)X
1294472215(is)X
1294482292(no)X
1294492396(means)X
1294502625(to)X
1294512711(say)X
1294522842(this)X
1294532981(in)X
1294543067(an)X
1294553167(FDE.)X
1294563382(For)X
1294573517(MIPS/IRIX,)X
1294583934(the)X
129459576 5472(recovered)N
129460923(stack)X
1294611117(pointer)X
1294621373(of)X
1294631469(the)X
1294641596(next)X
1294651763(frame)X
1294661980(up)X
1294672089(the)X
1294682216(stack)X
1294692410(\(towards)X
1294702720(main\(\)\))X
1294712990(is)X
1294723073(simply)X
1294733320(the)X
1294743448(CFA)X
1294753633(value)X
1294763837(of)X
1294773934(the)X
129478576 5568(current)N
129479827(frame,)X
1294801058(and)X
1294811197(the)X
1294821318(CFA)X
1294831496(value)X
1294841693(is)X
1294851768(precisely)X
1294862080(a)X
1294872138(register)X
1294882401(\(value)X
1294892624(of)X
1294902713(a)X
1294912771(register\))X
1294923061(or)X
1294933150(a)X
1294943208(register)X
1294953471(plus)X
1294963626(offset)X
1294973831(\(value)X
129498576 5664(of)N
129499663(a)X
129500719(register)X
129501980(plus)X
1295021133(offset\).)X
1295031403(This)X
1295041565(is)X
1295051638(a)X
1295061694(software)X
1295071991(convention.)X
129508576 6164(rev)N
129509699(1.17,)X
129510879(29)X
129511979(Aug)X
1295121137(2001)X
1295132237(-)X
1295142284(3)X
1295152344(-)X
129516
1295174 p
129518%%Page: 4 4
12951910 s 0 xH 0 xS 1 f
1295202237 384(-)N
1295212284(4)X
1295222344(-)X
1295233 f
12952411 s
129525576 768(4.)N
129526686(egcs)X
129527864(dwarf)X
1295281110(extensions)X
1295291518(\(egcs-1.1.2)X
1295301930(extensions\))X
1295311 f
12953210 s
129533576 912(This)N
129534744(and)X
129535886(following)X
1295361223(egcs)X
1295371392(sections)X
1295381676(describe)X
1295391970(the)X
1295402094(extensions)X
1295412458(currently)X
1295422774(shown)X
1295433009(in)X
1295443097(egcs)X
1295453266(dwarf2.)X
1295463560(Note)X
1295473742(that)X
1295483889(egcs)X
129549576 1008(has)N
129550710(chosen)X
129551960(to)X
1295521049(adopt)X
1295531254(tag)X
1295541379(and)X
1295551522(attribute)X
1295561816(naming)X
1295572083(as)X
1295582177(if)X
1295592253(their)X
1295602427(choices)X
1295612695(were)X
1295622879(standard)X
1295633178(dwarf,)X
1295643413(not)X
1295653542(as)X
1295663636(if)X
1295673711(they)X
1295683875(were)X
129569576 1104(extensions.)N
129570974(However,)X
1295711309(they)X
1295721467(are)X
1295731586(properly)X
1295741878(numbered)X
1295752219(as)X
1295762306(extensions.)X
1295773 f
12957811 s
129579576 1344(4.1)N
129580730(DW_TAG_format_label)X
1295811930(0x4101)X
1295821 f
12958310 s
129584576 1488(For)N
129585707(FORTRAN)X
1295861100(77,)X
1295871220(Fortran)X
1295881476(90.)X
1295891616(Details)X
1295901863(of)X
1295911950(use)X
1295922077(not)X
1295932199(defined)X
1295942460(in)X
1295952542(egcs)X
1295962705(source,)X
1295972955(so)X
1295983046(unclear)X
1295993303(if)X
1296003372(used.)X
1296013 f
12960211 s
129603576 1632(4.2)N
129604730(DW_TAG_function_template)X
1296052020(0x4102)X
1296061 f
12960710 s
129608576 1776(For)N
129609707(C++.)X
129610910(Details)X
1296111157(of)X
1296121244(use)X
1296131371(not)X
1296141493(defined)X
1296151754(in)X
1296161836(egcs)X
1296171999(source,)X
1296182249(so)X
1296192340(unclear)X
1296202597(if)X
1296212666(used.)X
1296223 f
12962311 s
129624576 1920(4.3)N
129625730(DW_TAG_class_template)X
1296261949(0x4103)X
1296271 f
12962810 s
129629576 2064(For)N
129630707(C++.)X
129631910(Details)X
1296321157(of)X
1296331244(use)X
1296341371(not)X
1296351493(defined)X
1296361754(in)X
1296371836(egcs)X
1296381999(source,)X
1296392249(so)X
1296402340(unclear)X
1296412597(if)X
1296422666(used.)X
1296433 f
12964411 s
129645576 2208(4.4)N
129646730(DW_AT_sf_names)X
1296472009(0x2101)X
1296481 f
12964910 s
129650576 2352(Apparently)N
129651957(only)X
1296521119(output)X
1296531343(in)X
1296541425(DWARF1,)X
1296551794(not)X
1296561916(DWARF2.)X
1296573 f
12965811 s
129659576 2496(4.5)N
129660730(DW_AT_src_info)X
1296611966(0x2102)X
1296621 f
12966310 s
129664576 2640(Apparently)N
129665957(only)X
1296661119(output)X
1296671343(in)X
1296681425(DWARF1,)X
1296691794(not)X
1296701916(DWARF2.)X
1296713 f
12967211 s
129673576 2784(4.6)N
129674730(DW_AT_mac_info)X
1296752010(0x2103)X
1296761 f
12967710 s
129678576 2928(Apparently)N
129679957(only)X
1296801119(output)X
1296811343(in)X
1296821425(DWARF1,)X
1296831794(not)X
1296841916(DWARF2.)X
1296853 f
12968611 s
129687576 3072(4.7)N
129688730(DW_AT_src_coords)X
1296892024(0x2104)X
1296901 f
12969110 s
129692576 3216(Apparently)N
129693957(only)X
1296941119(output)X
1296951343(in)X
1296961425(DWARF1,)X
1296971794(not)X
1296981916(DWARF2.)X
1296993 f
12970011 s
129701576 3360(4.8)N
129702730(DW_AT_body_begin)X
1297032055(0x2105)X
1297041 f
12970510 s
129706576 3504(Apparently)N
129707957(only)X
1297081119(output)X
1297091343(in)X
1297101425(DWARF1,)X
1297111794(not)X
1297121916(DWARF2.)X
1297133 f
12971411 s
129715576 3648(4.9)N
129716730(DW_AT_body_end)X
1297172030(0x2106)X
1297181 f
12971910 s
129720576 3792(Apparently)N
129721957(only)X
1297221119(output)X
1297231343(in)X
1297241425(DWARF1,)X
1297251794(not)X
1297261916(DWARF2.)X
1297273 f
12972811 s
129729576 4080(5.)N
129730686(egcs)X
129731864(.eh_frame)X
1297321264(\(non-sgi\))X
1297331618(\(egcs-1.1.2)X
1297342030(extensions\))X
1297351 f
12973610 s
129737576 4224(egcs-1.1.2)N
129738940(\(and)X
1297391118(earlier)X
1297401359(egcs\))X
1297411564(emits)X
1297421772(by)X
1297431887(default)X
1297442145(a)X
1297452216(section)X
1297462478(named)X
1297472727(.eh_frame)X
1297483086(for)X
1297493215(ia32)X
1297503388(\(and)X
1297513566(possibly)X
1297523867(other)X
129753576 4320(platforms\))N
129754948(which)X
1297551182(is)X
1297561273(nearly)X
1297571512(identical)X
1297581825(to)X
1297591924(.debug_frame)X
1297602405(in)X
1297612504(format)X
1297622755(and)X
1297632908(content.)X
1297643221(This)X
1297653400(section)X
1297663664(is)X
1297673754(used)X
1297683938(for)X
129769576 4416(helping)N
129770836(handle)X
1297711070(C++)X
1297721233(exceptions.)X
129773576 4560(Because)N
129774868(after)X
1297751040(linking)X
1297761290(there)X
1297771475(are)X
1297781598(sometimes)X
1297791964(zero-ed)X
1297802230(out)X
1297812356(bytes)X
1297822549(at)X
1297832631(the)X
1297842753(end)X
1297852893(of)X
1297862984(the)X
1297873106(eh_frame)X
1297883435(section,)X
1297893707(the)X
1297903830(reader)X
129791576 4656(code)N
129792748(in)X
129793830 0.2917(dwarf_frame.c)AX
1297941322(considers)X
1297951645(a)X
1297961701(zero)X
1297971860(cie/fde)X
1297982099(length)X
1297992319(as)X
1298002406(an)X
1298012502(indication)X
1298022842(that)X
1298032982(it)X
1298043046(is)X
1298053119(the)X
1298063237(end)X
1298073373(of)X
1298083460(the)X
1298093578(section.)X
1298103 f
12981111 s
129812576 4800(5.1)N
129813730(CIE_id)X
1298141026(0)X
1298151 f
12981610 s
129817576 4944(The)N
129818731(section)X
129819989(is)X
1298201073(an)X
1298211180(ALLOCATED)X
1298221692(section)X
1298231950(in)X
1298242043(an)X
1298252150(executable,)X
1298262545(and)X
1298272692(is)X
1298282776(therefore)X
1298293098(mapped)X
1298303383(into)X
1298313538(memory)X
1298323836(at)X
1298333925(run)X
129834576 5040(time.)N
129835779(The)X
129836925(CIE_pointer)X
1298371342(\(aka)X
1298381502(CIE_id,)X
1298391773(section)X
1298402020(6.4.1)X
1298412200(of)X
1298422287(the)X
1298432405(DWARF2)X
1298442754(document\))X
1298453117(is)X
1298463190(the)X
1298473308(field)X
1298483475(that)X
1298493615(distinguishes)X
129850576 5136(a)N
129851636(CIE)X
129852789(from)X
129853969(an)X
1298541069(FDE.)X
1298551284(The)X
1298561433(designers)X
1298571760(of)X
1298581851(the)X
1298591973(egcs)X
1298602140(.eh_frame)X
1298612488(section)X
1298622739(decided)X
1298633013(to)X
1298643099(make)X
1298653297(the)X
1298663420(CIE_id)X
1298673676(be)X
1298683777(0)X
1298693842(as)X
1298703934(the)X
129871576 5232(CIE_pointer)N
129872992(definition)X
1298731323(is)X
129874736 5328(the)N
129875854(number)X
1298761119(of)X
1298771206(bytes)X
1298781395(from)X
1298791571(the)X
1298801689(CIE-pointer)X
1298812092(in)X
1298822174(the)X
1298832292(FDE)X
1298842463(back)X
1298852635(to)X
1298862717(the)X
1298872835(applicable)X
1298883185(CIE.)X
129889576 5424(In)N
129890665(a)X
129891723(dwarf)X
129892933(.debug_frame)X
1298931399(section,)X
1298941668(the)X
1298951788(CIE_pointer)X
1298962206(is)X
1298972281(the)X
1298982401(offset)X
1298992606(in)X
1299002690(.debug_frame)X
1299013156(of)X
1299023245(the)X
1299033365(CIE)X
1299043516(for)X
1299053632(this)X
1299063770(fde,)X
1299073916(and)X
129908576 5520(since)N
129909770(an)X
129910875(offset)X
1299111087(can)X
1299121228(be)X
1299131333(zero)X
1299141501(of)X
1299151597(some)X
1299161795(CIE,)X
1299171973(the)X
1299182100(CIE_id)X
1299192360(cannot)X
1299202603(be)X
1299212708(0,)X
1299222797(but)X
1299232928(must)X
1299243111(be)X
1299253215(all)X
1299263323(1)X
1299273391(bits)X
1299283534(.)X
1299293602(Note)X
1299303786(that)X
1299313934(the)X
129932576 5616(dwarf2.0)N
129933893(spec)X
1299341065(does)X
1299351241(specify)X
1299361502(the)X
1299371629(value)X
1299381832(of)X
1299391929(CIE_id)X
1299402190(as)X
1299412287(0xffffffff)X
1299422613(\(see)X
1299432773(section)X
1299443030(7.23)X
1299453200(of)X
1299463297(v2.0.0\),)X
1299473574(though)X
1299483826(earlier)X
129949576 5712(versions)N
129950863(of)X
129951950(this)X
1299521085(extensions)X
1299531443(document)X
1299541779(incorrectly)X
1299552147(said)X
1299562296(it)X
1299572360(was)X
1299582505(not)X
1299592627(specified)X
1299602937(in)X
1299613019(the)X
1299623137(dwarf)X
1299633345(document.)X
129964576 6164(rev)N
129965699(1.17,)X
129966879(29)X
129967979(Aug)X
1299681137(2001)X
1299692237(-)X
1299702284(4)X
1299712344(-)X
129972
1299735 p
129974%%Page: 5 5
12997510 s 0 xH 0 xS 1 f
1299762237 384(-)N
1299772284(5)X
1299782344(-)X
1299793 f
12998011 s
129981576 768(5.2)N
129982730(augmentation)X
1299831270(eh)X
1299841 f
12998510 s
129986576 912(The)N
129987723(augmentation)X
1299881181(string)X
1299891385(in)X
1299901469(each)X
1299911639(CIE)X
1299921790(is)X
1299931865("eh")X
1299942029(which,)X
1299952267(with)X
1299962431(its)X
1299972528(following)X
1299982861(NUL)X
1299993048(character,)X
1300003386(aligns)X
1300013600(the)X
1300023721(following)X
130003576 1008(word)N
130004775(to)X
130005871(a)X
130006941(32bit)X
1300071139(boundary.)X
1300081516(Following)X
1300091878(the)X
1300102010(augmentation)X
1300112480(string)X
1300122696(is)X
1300132783(a)X
1300142853(32bit)X
1300153051(word)X
1300163250(with)X
1300173426(the)X
1300183558(address)X
1300193833(of)X
1300203934(the)X
130021576 1104(__EXCEPTION_TABLE__,)N
1300221519(part)X
1300231664(of)X
1300241751(the)X
1300251869(exception)X
1300262201(handling)X
1300272501(data)X
1300282655(for)X
1300292769(egcs.)X
1300303 f
13003111 s
130032576 1248(5.3)N
130033730(DW_CFA_GNU_window_save)X
1300341952(0x2d)X
1300351 f
13003610 s
130037576 1392(This)N
130038743(is)X
130039821(effectively)X
1300401190(a)X
1300411251(flag)X
1300421402(for)X
1300431522(architectures)X
1300441959(with)X
1300452127(register)X
1300462394(windows,)X
1300472729(and)X
1300482871(tells)X
1300493030(the)X
1300503154(unwinder)X
1300513483(code)X
1300523661(that)X
1300533807(it)X
1300543877(must)X
130055576 1488(look)N
130056740(to)X
130057824(a)X
130058882(previous)X
1300591179(frame)X
1300601388(for)X
1300611503(the)X
1300621622(correct)X
1300631867(register)X
1300642129(window)X
1300652408(set.)X
1300662558(As)X
1300672668(of)X
1300682756(this)X
1300692892(writing,)X
1300703164(egcs)X
1300713348(gcc/frame.c)X
1300723747(indicates)X
130073576 1584(this)N
130074711(is)X
130075784(for)X
130076898(SPARC)X
1300771170(register)X
1300781431(windows.)X
1300793 f
13008011 s
130081576 1728(5.4)N
130082730(DW_CFA_GNU_args_size)X
1300831840(0x2e)X
1300841 f
13008510 s
130086576 1872(DW_CFA_GNU_args_size)N
1300871489(has)X
1300881627(a)X
1300891695(single)X
1300901918(uleb128)X
1300912208(argument)X
1300922543(which)X
1300932771(is)X
1300942856(the)X
1300952986(size,)X
1300963163(in)X
1300973257(bytes,)X
1300983478(of)X
1300993577(the)X
1301003707(function's)X
130101576 1968(stack)N
130102761(at)X
130103839(that)X
130104979(point)X
1301051163(in)X
1301061245(the)X
1301071363(function.)X
1301083 f
13010911 s
130110576 2112(5.5)N
130111730(__EXCEPTION_TABLE__)X
1301121 f
13011310 s
130114576 2256(A)N
130115666(series)X
130116881(of)X
130117980(3)X
1301181052(32bit)X
1301191248(word)X
1301201445(entries)X
1301211691(by)X
1301221803(default:)X
1301232100(0)X
1301242172(word:)X
1301252391(low)X
1301262543(pc)X
1301272651(address)X
1301282924(1)X
1301292996(word:)X
1301303215(high)X
1301313389(pc)X
1301323498(address)X
1301333772(2)X
1301343845(word:)X
130135576 2352(pointer)N
130136823(to)X
130137905(exception)X
1301381237(handler)X
1301391498(code)X
1301401670(The)X
1301411815(end)X
1301421951(of)X
1301432038(the)X
1301442156(table)X
1301452332(is)X
1301462405(signaled)X
1301472692(by)X
1301482792(2)X
1301492852(words)X
1301503088(of)X
1301513175(-1)X
1301523262(\(not)X
1301533411(3)X
1301543471(words!\).)X
1301553 f
13015611 s
130157576 2544(6.)N
130158686(Interpretations)X
1301591279(of)X
1301601374(the)X
1301611513(DWARF)X
1301621866(V2)X
1301631995(spec)X
130164576 2688(6.1)N
130165730(template)X
1301661079(TAG)X
1301671292(spellings)X
1301681 f
13016910 s
130170576 2832(The)N
130171721(DWARF)X
1301721030(V2)X
1301731148(spec)X
1301741311(spells)X
1301751514(two)X
1301761655(attributes)X
1301771974(in)X
1301782057(two)X
1301792198(ways.)X
1301802424 0.1300(DW_TAG_template_type_param)AX
1301813519(\(listed)X
1301823740(in)X
1301833823(Figure)X
130184576 2928(1,)N
130185659(page)X
130186834(7\))X
130187924(is)X
1301881000(spelled)X
1301891250 0.1509(DW_TAG_template_type_parameter)AX
1301902468(in)X
1301912553(the)X
1301922673(body)X
1301932855(of)X
1301942944(the)X
1301953064(document)X
1301963402(\(section)X
1301973678(3.3.7,)X
1301983880(page)X
130199576 3024(28\).)N
130200743(We)X
130201875(have)X
1302021047(adopted)X
1302031321(the)X
1302041439(spelling)X
1302051712 0.1250(DW_TAG_template_type_param.)AX
130206576 3168 0.1442(DW_TAG_template_value_param)AN
1302071850(\(listed)X
1302082214(in)X
1302092440(Figure)X
1302102813(1,)X
1302113038(page)X
1302123355(7\))X
1302133587(is)X
1302143805(spelled)X
130215576 3264 0.1625(DW_TAG_template_value_parameter)AN
1302161843(in)X
1302171941(the)X
1302182075(body)X
1302192271(of)X
1302202374(the)X
1302212508(document)X
1302222860(\(section)X
1302233149(3.3.7,)X
1302243364(page)X
1302253551(28\).)X
1302263733(We)X
1302273880(have)X
130228576 3360(adopted)N
130229850(the)X
130230968(spelling)X
1302311241 0.1573(DW_TAG_template_value_parameter.)AX
130232576 3504(We)N
130233723(recognize)X
1302341071(that)X
1302351226(the)X
1302361359(choices)X
1302371635(adopted)X
1302381924(are)X
1302392058(neither)X
1302402316(consistently)X
1302412733(the)X
1302422866(longer)X
1302433106(nor)X
1302443248(the)X
1302453381(shorter)X
1302463640(name.)X
1302473890(This)X
130248576 3600(inconsistency)N
1302491032(was)X
1302501177(an)X
1302511273(accident.)X
1302523 f
13025311 s
130254576 3744(6.2)N
130255730(DW_FORM_ref_addrconfusing)X
1302561 f
13025710 s
130258576 3888(Section)N
130259840(7.5.4,)X
1302601044(Attribute)X
1302611357(Encodings,)X
1302621739(describes)X
1302632062(DW_FORM_ref_addr.)X
1302642839(The)X
1302652988(description)X
1302663368(says)X
1302673530(the)X
1302683653 0.4531(reference)AX
1302693979(is)X
130270576 3984(the)N
130271707(size)X
130272865(of)X
130273965(an)X
1302741074(address)X
1302751348(on)X
1302761461(the)X
1302771592(target)X
1302781808(architecture.)X
1302792261(This)X
1302802436(is)X
1302812522(surely)X
1302822751(a)X
1302832819(mistake,)X
1302843120(because)X
1302853407(on)X
1302863519(a)X
1302873587(16bit-pointer-)X
130288576 4080(architecture)N
130289978(it)X
1302901044(would)X
1302911266(mean)X
1302921462(that)X
1302931604(the)X
1302941724 0.4531(reference)AX
1302952047(could)X
1302962247(not)X
1302972371(exceed)X
1302982617(16)X
1302992719(bits,)X
1303002876(which)X
1303013094(makes)X
1303023321(only)X
1303033485(a)X
1303043543(limited)X
1303053792(amount)X
130306576 4176(of)N
130307688(sense)X
130308887(as)X
130309979(the)X
1303101102 0.4531(reference)AX
1303111428(is)X
1303121506(from)X
1303131687(one)X
1303141828(part)X
1303151978(of)X
1303162070(the)X
1303172193(dwarf)X
1303182406(to)X
1303192493(another,)X
1303202779(and)X
1303212920(could)X
1303223123(\(in)X
1303233237(theory\))X
1303243493(be)X
1303253593(*on)X
1303263737(the)X
1303273859(disk*)X
130328576 4272(and)N
130329713(not)X
130330836(limited)X
1303311083(to)X
1303321166(what)X
1303331343(fits)X
1303341466(in)X
1303351550(memory.)X
1303361879(Since)X
1303372079(MIPS)X
1303382287(is)X
1303392362(32)X
1303402464(bit)X
1303412570(pointers)X
1303422850(\(at)X
1303432957(the)X
1303443077(smallest\))X
1303453388(the)X
1303463508(restriction)X
1303473855(is)X
1303483930(not)X
130349576 4368(a)N
130350636(problem)X
130351926(for)X
1303521043(MIPS/SGI.)X
1303531443(The)X
1303541591(32bit)X
1303551778(pointer)X
1303562028(ABIs)X
1303572220(are)X
1303582342(limited)X
1303592591(to)X
1303602676(32)X
1303612779(bit)X
1303622886(section)X
1303633136(sizes)X
1303643315(anyway)X
1303653588(\(as)X
1303663705(a)X
1303673764(result)X
1303683965(of)X
130369576 4464(implementation)N
1303701104(details\).)X
1303711406(And)X
1303721570(the)X
1303731694(64bit)X
1303741884(pointer)X
1303752137(ABIs)X
1303762332(currently)X
1303772648(have)X
1303782826(the)X
1303792950(same)X
1303803141(limit)X
1303813317(as)X
1303823410(a)X
1303833472(result)X
1303843676(of)X
1303853769(how)X
1303863934(the)X
130387576 4560(compilers)N
130388912(and)X
1303891048(tools)X
1303901223(are)X
1303911342(built)X
1303921508(\(this)X
1303931670(has)X
1303941797(not)X
1303951919(proven)X
1303962162(to)X
1303972244(be)X
1303982340(a)X
1303992396(limit)X
1304002566(in)X
1304012648(practice,)X
1304022943(so)X
1304033034(far\).)X
1304043 f
13040511 s
130406576 4704(6.3)N
130407730(.debug_macinfo)X
1304081351(in)X
1304091447(a)X
1304101513(debugger)X
1304111 f
13041210 s
130413576 4848(It)N
130414656(seems)X
130415883(quite)X
1304161074(difficult,)X
1304171383(in)X
1304181476(general,)X
1304191764(to)X
1304201857(tie)X
1304211968(specific)X
1304222249(text\(code\))X
1304232606(addresses)X
1304242945(to)X
1304253038(points)X
1304263264(in)X
1304273357(the)X
1304283486(stream)X
1304293732(of)X
1304303831(macro)X
130431576 4944(information)N
130432990(for)X
1304331120(a)X
1304341192(particular)X
1304351536(compilation)X
1304361954(unit.)X
1304372154(So)X
1304382274(it's)X
1304392412(been)X
1304402600(difficult)X
1304412894(to)X
1304422992(see)X
1304433131(how)X
1304443305(to)X
1304453403(design)X
1304463648(a)X
1304473720(consumer)X
130448576 5040(interface)N
130449878(to)X
130450960(libdwarf)X
1304511252(for)X
1304521366(macro)X
1304531587(information.)X
130454576 5184(The)N
130455732(best)X
130456892(\(simple)X
1304571163(to)X
1304581256(implement,)X
1304591649(easy)X
1304601823(for)X
1304611948(a)X
1304622015(debugger)X
1304632345(user)X
1304642510(to)X
1304652603(understand\))X
1304663013(candidate)X
1304673352(seems)X
1304683580(to)X
1304693674(be)X
1304703782(that)X
1304713934(the)X
130472576 5280(debugger)N
130473899(asks)X
1304741061(for)X
1304751178(macros)X
1304761433(of)X
1304771523(a)X
1304781582(given)X
1304791783(name)X
1304801980(in)X
1304812065(a)X
1304822124(compilation)X
1304832529(unit,)X
1304842696(and)X
1304852835(the)X
1304862956(debugger)X
1304873278(responds)X
1304883586(with)X
1304893751(*all*)X
1304903934(the)X
130491576 5376(macros)N
130492828(of)X
130493915(that)X
1304941055(name.)X
1304953 f
130496576 5520(6.3.1)N
130497776(only)X
130498942(a)X
1304991002(single)X
1305001217(choice)X
1305011451(exists)X
1305021 f
130503576 5664(If)N
130504650(there)X
130505831(is)X
130506904(exactly)X
1305071156(one,)X
1305081312(that)X
1305091452(is)X
1305101525(usable)X
1305111750(in)X
1305121832(expressions,)X
1305132246(if)X
1305142315(the)X
1305152433(debugger)X
1305162752(is)X
1305172825(able)X
1305182979(to)X
1305193061(evaluate)X
1305203349(such.)X
130521576 6164(rev)N
130522699(1.17,)X
130523879(29)X
130524979(Aug)X
1305251137(2001)X
1305262237(-)X
1305272284(5)X
1305282344(-)X
130529
1305306 p
130531%%Page: 6 6
13053210 s 0 xH 0 xS 1 f
1305332237 384(-)N
1305342284(6)X
1305352344(-)X
1305363 f
130537576 768(6.3.2)N
130538776(multiple)X
1305391080(macros)X
1305401350(with)X
1305411521(same)X
1305421715(name.)X
1305431 f
130544576 912(If)N
130545650(there)X
130546831(are)X
130547950(multiple)X
1305481236(macros)X
1305491488(with)X
1305501650(the)X
1305511768(same)X
1305521953(name)X
1305532148(in)X
1305542231(a)X
1305552288(compilation)X
1305562691(unit,)X
1305572856(the)X
1305582975(debugger)X
1305593295(\(and)X
1305603459(the)X
1305613578(debugger)X
1305623898(user)X
130563576 1008(and)N
130564715(the)X
130565836(application)X
1305661215(programmer\))X
1305671662(have)X
1305681837(a)X
1305691896(problem:)X
1305702208(confusion)X
1305712547(is)X
1305722622(quite)X
1305732804(possible.)X
1305743128(If)X
1305753204(the)X
1305763324(macros)X
1305773578(are)X
1305783699(simple)X
1305793934(the)X
130580576 1104(debugger)N
130581933(user)X
1305821105(can)X
1305831255(simply)X
1305841510(substitute)X
1305851854(by)X
1305861973(hand)X
1305872168(in)X
1305882269(an)X
1305892384(expression.)X
1305902806(If)X
1305912899(the)X
1305923036(macros)X
1305933307(are)X
1305943445(complicated)X
1305953876(hand)X
130596576 1200(substitution)N
130597978(will)X
1305981132(be)X
1305991238(impractical,)X
1306001649(and)X
1306011795(the)X
1306021923(debugger)X
1306032252(will)X
1306042405(have)X
1306052586(to)X
1306062677(identify)X
1306072955(the)X
1306083082(choices)X
1306093352(and)X
1306103497(let)X
1306113606(the)X
1306123733(debugger)X
130613576 1296(user)N
130614730(choose)X
130615973(an)X
1306161069(interpretation.)X
1306173 f
13061811 s
130619576 1440(6.4)N
130620730(Section)X
1306211026(6.1.2)X
1306221224(Lookup)X
1306231540(by)X
1306241655(address)X
1306251965(problem)X
1306261 f
13062710 s
130628576 1584(Each)N
130629761(entry)X
130630950(is)X
1306311027(a)X
1306321087(beginning-address)X
1306331699(followed)X
1306342008(by)X
1306352112(a)X
1306362172(length.)X
1306372436(And)X
1306382598(the)X
1306392720(distinguished)X
1306403170(entry)X
1306413359(0,0)X
1306423483(is)X
1306433560(used)X
1306443731(to)X
1306453818(denote)X
130646576 1680(the)N
130647694(end)X
130648830(of)X
130649917(a)X
130650973(range)X
1306511172(of)X
1306521259(entries.)X
130653576 1824(This)N
130654740(means)X
130655967(that)X
1306561109(one)X
1306571247(must)X
1306581424(be)X
1306591522(careful)X
1306601768(not)X
1306611893(to)X
1306621978(emit)X
1306632143(a)X
1306642202(zero)X
1306652364(length,)X
1306662607(as)X
1306672697(in)X
1306682782(a)X
1306692841(.o)X
1306702924(\(object)X
1306713170(file\))X
1306723327(the)X
1306733448(beginning)X
1306743791(address)X
130675576 1920(of)N
130676669(a)X
130677731(normal)X
130678984(entry)X
1306791175(might)X
1306801387(be)X
1306811489(0)X
1306821555(\(it)X
1306831652(is)X
1306841731(a)X
1306851793(section)X
1306862045(offset)X
1306872253(after)X
1306882426(all\),)X
1306892578(and)X
1306902719(the)X
1306912842(resulting)X
1306923147(0,0)X
1306933272(would)X
1306943497(be)X
1306953598(taken)X
1306963797(as)X
1306973889(end-)X
130698576 2016(of-range,)N
130699889(not)X
1307001011(as)X
1307011098(a)X
1307021154(valid)X
1307031334(entry.)X
1307041559(A)X
1307051637(dwarf)X
1307061845(dumper)X
1307072110(would)X
1307082330(have)X
1307092502(trouble)X
1307102749(with)X
1307112911(such)X
1307123078(data)X
1307133232(in)X
1307143314(an)X
1307153410(object)X
1307163626(file.)X
130717576 2160(In)N
130718669(an)X
130719771(a.out)X
130720955(or)X
1307211048(shared)X
1307221284(object)X
1307231506(\(dynamic)X
1307241835(shared)X
1307252072(object,)X
1307262315(DSO\))X
1307272529(no)X
1307282636(text)X
1307292783(will)X
1307302934(be)X
1307313037(at)X
1307323122(address)X
1307333390(zero)X
1307343556(so)X
1307353654(in)X
1307363743(such)X
1307373917(this)X
130738576 2256(problem)N
130739863(does)X
1307401030(not)X
1307411152(arise.)X
1307423 f
13074311 s
130744576 2400(6.5)N
130745730(Section)X
1307461026(5.10)X
1307471202(Subrange)X
1307481586(Type)X
1307491799(Entries)X
1307502095(problem)X
1307511 f
13075210 s
130753576 2544(It)N
130754652(is)X
130755732(specified)X
1307561049(that)X
1307571216(DW_AT_upper_bound)X
1307581987(\(and)X
1307592157(lower)X
1307602367(bound\))X
1307612621(must)X
1307622803(be)X
1307632906(signed)X
1307643142(entries)X
1307653383(if)X
1307663459(there)X
1307673647(is)X
1307683728(no)X
1307693836(object)X
130770576 2640(type)N
130771739(info)X
130772893(to)X
130773980(specify)X
1307741237(the)X
1307751359(bound)X
1307761583(type)X
1307771745(\(Sec)X
1307781912(5.10,)X
1307792096(end)X
1307802236(of)X
1307812327(section\).)X
1307822645(One)X
1307832803(cannot)X
1307843041(tell)X
1307853167(\(with)X
1307863360(some)X
1307873553(dwarf)X
1307883765(constant)X
130789576 2736(types\))N
130790794(what)X
130791972(the)X
1307921092(signedness)X
1307931461(is)X
1307941537(from)X
1307951716(the)X
1307961837(form)X
1307972016(itself)X
1307982199(\(like)X
1307992369(DW_FORM_data1\),)X
1308003053(so)X
1308013147(it)X
1308023214(is)X
1308033290(necessary)X
1308043626(to)X
1308053711(determine)X
130806576 2832(the)N
130807704(object)X
130808930(and)X
1308091076(type)X
1308101244(according)X
1308111591(to)X
1308121683(the)X
1308131811(rules)X
1308141997(in)X
1308152089(5.10)X
1308162258(and)X
1308172403(then)X
1308182570(if)X
1308192648(all)X
1308202757(that)X
1308212906(fails,)X
1308223093(the)X
1308233220(type)X
1308243387(is)X
1308253469(signed.)X
1308263747(It's)X
1308273883(a)X
1308283948(bit)X
130829576 2928(complicated)N
130830988(and)X
1308311124(earlier)X
1308321350(versions)X
1308331637(of)X
1308341744(mips_extensions)X
1308352297(incorrectly)X
1308362665(said)X
1308372814(signedness)X
1308383181(was)X
1308393326(not)X
1308403448(defined.)X
1308413 f
13084211 s
130843576 3072(6.6)N
130844730(Section)X
1308451026(5.5.6)X
1308461224(Class)X
1308471446(Template)X
1308481825(Instantiations)X
1308492365(problem)X
1308501 f
13085110 s
130852576 3216(Lots)N
130853741(of)X
130854831(room)X
1308551023(for)X
1308561140(implementor)X
1308571572(to)X
1308581657(canonicalize)X
1308592082(template)X
1308602381(declarations.)X
1308612832(Ie)X
1308622919(various)X
1308633179(folks)X
1308643363(won't)X
1308653574(agree.)X
1308663813(This)X
1308673979(is)X
130868576 3312(not)N
130869698(serious)X
130870945(since)X
1308711130(a)X
1308721186(given)X
1308731384(compiler)X
1308741689(will)X
1308751833(be)X
1308761929(consistent)X
1308772269(with)X
1308782431(itself)X
1308792611(and)X
1308802767(debuggers)X
1308813117(will)X
1308823261(have)X
1308833433(to)X
1308843515(cope!)X
1308853 f
13088611 s
130887576 3456(6.7)N
130888730(Section)X
1308891026(2.4.3.4)X
1308901312(#)X
1308911378(11.)X
1308921510(operator)X
1308931859(spelling)X
1308941 f
13089510 s
130896576 3600(DW_OP_add)N
1308971028(should)X
1308981261(be)X
1308991357(DW_OP_plus)X
1309001826(\(page)X
1309012025(14\))X
1309022152(\(this)X
1309032314(mistake)X
1309042583(just)X
1309052718(one)X
1309062854(place)X
1309073044(on)X
1309083144(the)X
1309093262(page\).)X
1309103 f
13091111 s
130912576 3744(6.8)N
130913730(No)X
130914859(clear)X
1309151067(specification)X
1309161559(of)X
1309171654(C++)X
1309181839(static)X
1309192061(funcs)X
1309201 f
13092110 s
130922576 3888(There)N
130923785(is)X
130924859(no)X
130925960(clear)X
1309261138(way)X
1309271293(to)X
1309281376(tell)X
1309291499(if)X
1309301569(a)X
1309311627(C++)X
1309321792(member)X
1309332077(function)X
1309342366(is)X
1309352441(a)X
1309362499(static)X
1309372690(member)X
1309382975(or)X
1309393064(a)X
1309403122(non-static)X
1309413460(member)X
1309423745(function.)X
130943576 3984 0.3125(\(dwarf2read.c)AN
1309441046(in)X
1309451128(gdb)X
1309461268(4.18,)X
1309471448(for)X
1309481562(example,)X
1309491874(has)X
1309502001(this)X
1309512136(observation\))X
1309523 f
13095311 s
130954576 4128(6.9)N
130955730(Misspelling)X
1309561184(of)X
1309571279(DW_AT_const_value)X
1309581 f
13095910 s
130960576 4272(Twice)N
130961797(in)X
130962879(appendix)X
1309631193(1,)X
1309641273(DW_AT_const_value)X
1309651997(is)X
1309662070(misspelled)X
1309672432(as)X
1309682519(DW_AT_constant_value.)X
1309693 f
13097011 s
130971576 4416(6.10)N
130972774(Mistake)X
1309731099(in)X
1309741195(Atribute)X
1309751539(Encodings)X
1309761 f
13097710 s
130978576 4560(Section)N
130979842(7.5.4,)X
1309801048("Attribute)X
1309811396(Encodings")X
1309821793(has)X
1309831926(a)X
1309841989(brief)X
1309852168(discussion)X
1309862528(of)X
1309872622("constant")X
1309882982(which)X
1309893205(says)X
1309903370(there)X
1309913558(are)X
1309923684(6)X
1309933751(forms)X
1309943965(of)X
130995576 4656(constants.)N
130996936(It)X
1309971007(is)X
1309981082(incorrect)X
1309991390(in)X
1310001474(that)X
1310011616(it)X
1310021682(fails)X
1310031842(to)X
1310041926(mention)X
1310052210(\(or)X
1310062326(count\))X
1310072553(the)X
1310082673(block)X
1310092872(forms,)X
1310103100(which)X
1310113317(are)X
1310123437(clearly)X
1310133677(allowed)X
1310143952(by)X
131015576 4752(section)N
131016823(4.1)X
131017943("Data)X
1310181148(Object)X
1310191382(Entries")X
1310201662(\(see)X
1310211812(entry)X
1310221997(number)X
1310232262(9)X
1310242322(in)X
1310252404(the)X
1310262522(numbered)X
1310272863(list,)X
1310283000(on)X
1310293100(constants\).)X
1310303 f
13103111 s
131032576 4896(6.11)N
131033774(DW_OP_bregx)X
1310341 f
13103510 s
131036576 5040(The)N
131037726(description)X
1310381107(of)X
1310391199(DW_OP_bregx)X
1310401723(in)X
1310411810(2.4.3.2)X
1310422055(\(Register)X
1310432374(Based)X
1310442595(Addressing\))X
1310453013(is)X
1310463092(slightly)X
1310473357(misleading,)X
1310483754(in)X
1310493842(that)X
1310503988(it)X
131051576 5136(lists)N
131052740(the)X
131053874(offset)X
1310541093(first.)X
1310551298(As)X
1310561423(section)X
1310571686(7.7.1)X
1310581882(\(Location)X
1310592229(Expression\))X
1310602647(makes)X
1310612887(clear,)X
1310623099(in)X
1310633196(the)X
1310643329(encoding)X
1310653658(the)X
1310663791(register)X
131067576 5232(number)N
131068841(comes)X
1310691066(first.)X
1310703 f
13107111 s
131072576 5424(7.)N
131073686(MIPS)X
131074928(attributes)X
131075576 5568(7.1)N
131076730(DW_AT_MIPS_fde)X
1310771 f
13107810 s
131079576 5712(This)N
131080758(extension)X
1310811105(to)X
1310821207(Dwarf)X
1310831453(appears)X
1310841739(only)X
1310851922(on)X
1310862043(subprogram)X
1310872467(TAGs)X
1310882704(and)X
1310892861(has)X
1310903009(as)X
1310913117(its)X
1310923233(value)X
1310933448(the)X
1310943587(offset,)X
1310953831(in)X
1310963934(the)X
131097576 5808(.debug_frame)N
1310981041(section,)X
1310991309(of)X
1311001397(the)X
1311011516(fde)X
1311021640(which)X
1311031856(describes)X
1311042175(the)X
1311052293(frame)X
1311062501(of)X
1311072588(this)X
1311082723(function.)X
1311093050(It)X
1311103119(is)X
1311113192(an)X
1311123288(optimization)X
1311133712(of)X
1311143799(sorts)X
1311153970(to)X
131116576 6164(rev)N
131117699(1.17,)X
131118879(29)X
131119979(Aug)X
1311201137(2001)X
1311212237(-)X
1311222284(6)X
1311232344(-)X
131124
1311257 p
131126%%Page: 7 7
13112710 s 0 xH 0 xS 1 f
1311282237 384(-)N
1311292284(7)X
1311302344(-)X
131131576 768(have)N
131132748(this)X
131133883(present.)X
1311343 f
13113511 s
131136576 1008(7.2)N
131137730(DW_CFA_MIPS_advance_loc8)X
1311381939(0x1d)X
1311391 f
13114010 s
131141576 1152(This)N
131142739(obvious)X
1311431013(extension)X
1311441341(to)X
1311451424(dwarf)X
1311461633(line)X
1311471774(tables)X
1311481982(enables)X
1311492245(encoding)X
1311502561(of)X
1311512650(8)X
1311522712(byte)X
1311532872(advance_loc)X
1311543296(values)X
1311553523(\(for)X
1311563666(cases)X
1311573858(when)X
131158576 1248(such)N
131159743(must)X
131160918(be)X
1311611014(relocatable,)X
1311621407(and)X
1311631543(thus)X
1311641696(must)X
1311651871(be)X
1311661967(full)X
1311672098(length\).)X
1311682385(Applicable)X
1311692757(only)X
1311702919(to)X
1311713001(64-bit)X
1311723212(objects.)X
1311733 f
13117411 s
131175576 1488(7.3)N
131176730(DW_TAG_MIPS_loop)X
1311771762(0x4081)X
1311781 f
13117910 s
131180576 1632(For)N
131181707(future)X
131182919(use.)X
1311831066(Not)X
1311841206(currently)X
1311851516(emitted.)X
1311861816(Places)X
1311872041(to)X
1311882123(be)X
1311892219(emitted)X
1311902479(and)X
1311912615(attributes)X
1311922933(that)X
1311933073(this)X
1311943208(might)X
1311953414(own)X
1311963572(not)X
1311973694(finalized.)X
1311983 f
13119911 s
131200576 1872(7.4)N
131201730(DW_AT_MIPS_loop_begin)X
1312021833(0x2002)X
1312031 f
13120410 s
131205576 2016(For)N
131206707(future)X
131207919(use.)X
1312081066(Not)X
1312091206(currently)X
1312101516(emitted.)X
1312111816(Attribute)X
1312122125(form)X
1312132301(and)X
1312142437(content)X
1312152693(not)X
1312162815(finalized.)X
1312173 f
13121811 s
131219576 2256(7.5)N
131220730(DW_AT_MIPS_tail_loop_begin)X
1312211978(0x2003)X
1312221 f
13122310 s
131224576 2400(For)N
131225707(future)X
131226919(use.)X
1312271066(Not)X
1312281206(currently)X
1312291516(emitted.)X
1312301816(Attribute)X
1312312125(form)X
1312322301(and)X
1312332437(content)X
1312342693(not)X
1312352815(finalized.)X
1312363 f
13123711 s
131238576 2640(7.6)N
131239730(DW_AT_MIPS_epilog_begin)X
1312401941(0x2004)X
1312411 f
13124210 s
131243576 2784(For)N
131244707(future)X
131245919(use.)X
1312461066(Not)X
1312471206(currently)X
1312481516(emitted.)X
1312491816(Attribute)X
1312502125(form)X
1312512301(and)X
1312522437(content)X
1312532693(not)X
1312542815(finalized.)X
1312553 f
13125611 s
131257576 3024(7.7)N
131258730(DW_AT_MIPS_loop_unroll_factor)X
1312592104(0x2005)X
1312601 f
13126110 s
131262576 3168(For)N
131263707(future)X
131264919(use.)X
1312651066(Not)X
1312661206(currently)X
1312671516(emitted.)X
1312681816(Attribute)X
1312692125(form)X
1312702301(and)X
1312712437(content)X
1312722693(not)X
1312732815(finalized.)X
1312743 f
13127511 s
131276576 3408(7.8)N
131277730(DW_AT_MIPS_software_pipeline_depth)X
1312782345(0x2006)X
1312791 f
13128010 s
131281576 3552(For)N
131282707(future)X
131283919(use.)X
1312841066(Not)X
1312851206(currently)X
1312861516(emitted.)X
1312871816(Attribute)X
1312882125(form)X
1312892301(and)X
1312902437(content)X
1312912693(not)X
1312922815(finalized.)X
1312933 f
13129411 s
131295576 3696(7.9)N
131296730(DW_AT_MIPS_linkage_name)X
1312972253(0x2007)X
1312981 f
13129910 s
131300576 3840(The)N
131301722(rules)X
131302900(for)X
1313031016(mangling)X
1313041340(C++)X
1313051505(names)X
1313061732(are)X
1313071853(not)X
1313081977(part)X
1313092124(of)X
1313102213(the)X
1313112333(C++)X
1313122498(standard)X
1313132792(and)X
1313142930(are)X
1313153051(different)X
1313163350(for)X
1313173466(different)X
1313183765(versions)X
131319576 3936(of)N
131320670(C++.)X
131321880(With)X
1313221067(this)X
1313231209(extension,)X
1313241563(the)X
1313251688(compiler)X
1313262000(emits)X
1313272200(both)X
1313282369(the)X
1313292494(DW_AT_name)X
1313303016(for)X
1313313136(things)X
1313323357(with)X
1313333525(mangled)X
1313343827(names)X
131335576 4032(\(recall)N
131336802(that)X
131337942(DW_AT_name)X
1313381457(is)X
1313391530(NOT)X
1313401715(the)X
1313411833(mangled)X
1313422129(form\))X
1313432332(and)X
1313442468(also)X
1313452617(emits)X
1313462810(DW_AT_MIPS_linkage_name)X
1313473827(whose)X
131348576 4128(value)N
131349770(is)X
131350843(the)X
131351961(mangled)X
1313521257(name.)X
131353576 4272(This)N
131354739(makes)X
131355965(looking)X
1313561230(for)X
1313571345(the)X
1313581464(mangled)X
1313591761(name)X
1313601956(in)X
1313612039(other)X
1313622226(linker)X
1313632435(information)X
1313642835(straightforward.)X
1313653392(It)X
1313663463(also)X
1313673614(is)X
1313683689(passed)X
1313693925(\(by)X
131370576 4368(the)N
131371694(debugger\))X
1313721040(to)X
1313731122(the)X
1313741240(libmangle)X
1313751580(routines)X
1313761858(to)X
1313771940(generate)X
1313782233(names)X
1313792458(to)X
1313802540(present)X
1313812792(to)X
1313822874(the)X
1313832992(debugger)X
1313843311(user.)X
1313853 f
13138611 s
131387576 4512(7.10)N
131388774(DW_AT_MIPS_stride)X
1313891878(0x2008)X
1313901 f
13139110 s
131392576 4656(F90)N
131393740(allows)X
131394989(assumed)X
1313951305(shape)X
1313961528(arguments)X
1313971902(and)X
1313982058(pointers)X
1313992356(to)X
1314002458(describe)X
1314012766(non-contiguous)X
1314023304(memory.)X
1314033631(A)X
1314043729(\(runtime\))X
131405576 4752(descriptor)N
131406937(contains)X
1314071244(address,)X
1314081545(bounds)X
1314091816(and)X
1314101972(stride)X
1314112190(information)X
1314122608(-)X
1314132675(rank)X
1314142858(and)X
1314153014(element)X
1314163308(size)X
1314173473(is)X
1314183566(known)X
1314193823(during)X
131420576 4848(compilation.)N
1314211003(The)X
1314221153(extent)X
1314231374(in)X
1314241461(each)X
1314251634(dimension)X
1314261993(is)X
1314272072(given)X
1314282276(by)X
1314292382(the)X
1314302506(bounds)X
1314312763(in)X
1314322851(a)X
1314332913(DW_TAG_subrange_type,)X
1314343806(but)X
1314353934(the)X
131436576 4944(stride)N
131437781(cannot)X
1314381022(be)X
1314391125(represented)X
1314401523(in)X
1314411612(conventional)X
1314422053(dwarf.)X
1314432288(DW_AT_MIPS_stride)X
1314443040(was)X
1314453192(added)X
1314463411(as)X
1314473505(an)X
1314483608(attribute)X
1314493902(of)X
1314503996(a)X
131451576 5040(DW_TAG_subrange_type)N
1314521459(to)X
1314531557(describe)X
1314541861(the)X
1314551995(location)X
1314562290(of)X
1314572394(the)X
1314582529(stride.)X
1314592784(Used)X
1314602986(in)X
1314613085(the)X
1314623220(MIPSpro)X
1314633550(7.2)X
1314643687(\(7.2.1)X
1314653911(etc\))X
131466576 5136(compilers.)N
131467576 5280(If)N
131468658(the)X
131469784(stride)X
131470990(is)X
1314711071(constant)X
1314721367(\(ie:)X
1314731503(can)X
1314741644(be)X
1314751749(inferred)X
1314762033(from)X
1314772218(the)X
1314782345(type)X
1314792512(in)X
1314802603(the)X
1314812730(usual)X
1314822928(manner\))X
1314833225(DW_AT_MIPS_stride)X
1314843979(is)X
131485576 5376(absent.)N
131486576 5520(If)N
131487651(DW_AT_MIPS_stride)X
1314881397(is)X
1314891471(present,)X
1314901744(the)X
1314911863(attribute)X
1314922151(contains)X
1314932439(a)X
1314942496 0.4531(reference)AX
1314952818(to)X
1314962901(a)X
1314972959(DIE)X
1314983115(which)X
1314993333(describes)X
1315003654(the)X
1315013774(location)X
131502576 5616(holding)N
131503848(the)X
131504974(stride,)X
1315051200(and)X
1315061344(the)X
1315071470(DW_AT_stride_size)X
1315082162(field)X
1315092336(of)X
1315102430 0.2109(DW_TAG_array_type)AX
1315113180(is)X
1315123260(ignored)X
1315133532(if)X
1315143608(present.)X
1315153907(The)X
131516576 5712(value)N
131517770(of)X
131518857(the)X
131519975(stride)X
1315201173(is)X
1315211246(the)X
1315221364(number)X
1315231629(of)X
1315241716(4)X
1315251776(byte)X
1315261934(words)X
1315272150(between)X
1315282438(elements)X
1315292743(along)X
1315302941(that)X
1315313081(axis.)X
131532576 6164(rev)N
131533699(1.17,)X
131534879(29)X
131535979(Aug)X
1315361137(2001)X
1315372237(-)X
1315382284(7)X
1315392344(-)X
131540
1315418 p
131542%%Page: 8 8
13154310 s 0 xH 0 xS 1 f
1315442237 384(-)N
1315452284(8)X
1315462344(-)X
131547576 768(This)N
131548738(applies)X
131549985(to)X
131550576 864(a\))N
131551659(Intrinsic)X
131552946(types)X
1315531135(whose)X
1315541360(size)X
1315551505(is)X
1315561578(greater)X
131557636 960(or)N
131558723(equal)X
131559917(to)X
131560999(4bytes)X
1315611228(ie:)X
1315621328(real*4,integer*8)X
131563636 1056(complex)N
131564932(etc,)X
1315651066(but)X
1315661188(not)X
1315671310(character)X
1315681626(types.)X
131569576 1248(b\))N
131570663(Derived)X
131571942(types)X
1315721131(\(ie:)X
1315731258(structs\))X
1315741514(of)X
1315751601(any)X
1315761737(size,)X
131577636 1344(unless)N
131578856(all)X
131579956(components)X
1315801363(are)X
1315811482(of)X
1315821569(type)X
1315831727(character.)X
1315843 f
13158511 s
131586576 1584(7.11)N
131587774(DW_AT_MIPS_abstract_name)X
1315882263(0x2009)X
1315891 f
13159010 s
131591576 1728(This)N
131592743(attribute)X
1315931035(only)X
1315941202(appears)X
1315951474(in)X
1315961562(a)X
1315971624(DA_TAG_inlined_subroutine)X
1315982611(DIE.)X
1315992811(The)X
1316002962(value)X
1316013162(of)X
1316023255(this)X
1316033396(attribute)X
1316043689(is)X
1316053768(a)X
1316063830(string.)X
131607576 1824(When)N
131608794(IPA)X
131609949(inlines)X
1316101188(a)X
1316111250(routine)X
1316121503(and)X
1316131645(the)X
1316141769(abstract)X
1316152045(origin)X
1316162262(is)X
1316172341(in)X
1316182429(another)X
1316192696(compilation)X
1316203104(unit,)X
1316213273(there)X
1316223459(is)X
1316233537(a)X
1316243598(problem)X
1316253890(with)X
131626576 1920(putting)N
131627830(in)X
131628920(a)X
131629984 0.4028(reference,)AX
1316301334(since)X
1316311528(the)X
1316321655(ordering)X
1316331956(and)X
1316342101(timing)X
1316352338(of)X
1316362434(the)X
1316372561(creation)X
1316382849(of)X
1316392945 0.3889(references)AX
1316403306(is)X
1316413388(unpredicatable)X
1316423890(with)X
131643576 2016 0.4531(reference)AN
131644897(to)X
131645979(the)X
1316461097(DIE)X
1316471251(and)X
1316481387(compilation)X
1316491789(unit)X
1316501933(the)X
1316512051 0.4531(reference)AX
1316522372(refers)X
1316532576(to.)X
131654576 2160(Since)N
131655775(there)X
131656957(may)X
1316571116(be)X
1316581213(NO)X
1316591350(ordering)X
1316601643(of)X
1316611731(the)X
1316621850(compilation)X
1316632253(units)X
1316642429(that)X
1316652570(allows)X
1316662801(a)X
1316672859(correct)X
1316683105 0.4531(reference)AX
1316693428(to)X
1316703512(be)X
1316713610(done)X
1316723788(without)X
131673576 2256(some)N
131674769(kind)X
131675935(of)X
1316761026(patching,)X
1316771346(and)X
1316781486(since)X
1316791675(even)X
1316801851(getting)X
1316812097(the)X
1316822219(information)X
1316832621(from)X
1316842801(one)X
1316852941(place)X
1316863135(to)X
1316873221(another)X
1316883486(is)X
1316893563(a)X
1316903623(problem,)X
1316913934(the)X
131692576 2352(compiler)N
131693881(simply)X
1316941118(passes)X
1316951343(the)X
1316961461(problem)X
1316971748(on)X
1316981848(to)X
1316991930(the)X
1317002048(debugger.)X
131701576 2496(The)N
131702722(debugger)X
1317031042(must)X
1317041218(match)X
1317051435(the)X
1317061554(DW_AT_MIPS_abstract_name)X
1317072586(in)X
1317082670(the)X
1317092790(concrete)X
1317103085(inlined)X
1317113329(instance)X
1317123614(DIE)X
1317133770(with)X
1317143934(the)X
131715576 2592(DW_AT_MIPS_abstract_name)N
1317161607(in)X
1317171689(the)X
1317181807(abstract)X
1317192077(inlined)X
1317202319(subroutine)X
1317212677(DIE.)X
131722576 2736(A)N
131723654 0.2202(dwarf-consumer-centric)AX
1317241447(view)X
1317251623(of)X
1317261710(this)X
1317271865(and)X
1317282001(other)X
1317292186(inline)X
1317302388(issues)X
1317312599(could)X
1317322797(be)X
1317332893(expressed)X
1317343230(as)X
1317353317(follows:)X
131736576 2832(If)N
131737650(DW_TAG_subprogram)X
131738616 2928(If)N
131739690(has)X
131740817(DW_AT_inline)X
1317411340(is)X
1317421413(abstract)X
1317431683(instance)X
1317441966(root)X
131745616 3024(If)N
131746690(has)X
131747817(DW_AT_abstract_origin,)X
1317481659(is)X
1317491732(out-of-line)X
1317502095(instance)X
131751656 3120(of)N
131752743(function)X
1317531030(\(need)X
1317541229(abstract)X
1317551499(origin)X
1317561710(for)X
1317571824(some)X
1317582013(data\))X
131759656 3216(\(abstract)N
131760953(root)X
1317611102(in)X
1317621184(same)X
1317631369(CU)X
1317641500(\(conceptually)X
1317651957(anywhere)X
131766656 3312(a)N
131767712(ref)X
131768822(can)X
131769954(reach,)X
1317701169(but)X
1317711291(reaching)X
1317721588(outside)X
1317731839(of)X
1317741926(CU)X
1317752057(is)X
131776656 3408(a)N
131777712(problem)X
131778999(for)X
1317791113(ipa:)X
1317801253(see)X
1317811376 0.1250(DW_AT_MIPS_abstract_name\)\))AX
131782616 3504(If)N
131783690(has)X
131784817(DW_AT_MIPS_abstract_name)X
1317851848(is)X
1317861921(abstract)X
1317872191(instance)X
131788656 3600(root\()N
131789832(must)X
1317901007(have)X
1317911179(DW_AT_inline\))X
1317921729(and)X
1317931865(this)X
1317942000(name)X
1317952194(is)X
1317962267(used)X
1317972434(to)X
131798656 3696(match)N
131799872(with)X
1318001034(the)X
1318011152(abstract)X
1318021422(root)X
131803576 3888(If)N
131804650(DW_TAG_inline_subroutine)X
131805616 3984(Is)N
131806694(concrete)X
131807987(inlined)X
1318081229(subprogram)X
1318091632(instance.)X
131810616 4080(If)N
131811690(has)X
131812817(DW_AT_abstract_origin,)X
1318131659(it)X
1318141723(is)X
1318151796(a)X
1318161852(CU-local)X
1318172166(inline.)X
131818616 4176(If)N
131819690(it)X
131820754(has)X
131821881(DW_AT_MIPS_abstract_name)X
1318221912(it)X
1318231976(is)X
1318242049(an)X
131825656 4272(inline)N
131826858(whose)X
1318271083(abstract)X
1318281353(root)X
1318291502(is)X
1318301575(in)X
1318311657(another)X
1318321918(file)X
1318332045(\(CU\).)X
1318343 f
13183511 s
131836576 4512(7.12)N
131837774(DW_AT_MIPS_clone_origin)X
1318382195(0x200a)X
1318391 f
13184010 s
131841576 4656(This)N
131842748(attribute)X
1318431045(appears)X
1318441321(only)X
1318451493(in)X
1318461585(a)X
1318471651(cloned)X
1318481895(subroutine.)X
1318492303(The)X
1318502458(procedure)X
1318512810(is)X
1318522893(cloned)X
1318533138(from)X
1318543325(the)X
1318553454(same)X
1318563650(compilation)X
131857576 4752(unit.)N
131858760(The)X
131859905(value)X
1318601099(of)X
1318611186(this)X
1318621321(attribute)X
1318631608(is)X
1318641681(a)X
1318651737 0.4531(reference)AX
1318662058(to)X
1318672140(the)X
1318682258(original)X
1318692527(routine)X
1318702774(in)X
1318712856(this)X
1318722991(compilation)X
1318733393(unit.)X
131874576 4896(The)N
131875726('original')X
1318761054(routine)X
1318771306(means)X
1318781536(the)X
1318791659(routine)X
1318801911(which)X
1318812132(has)X
1318822264(all)X
1318832369(the)X
1318842492(original)X
1318852766(code.)X
1318862984(The)X
1318873135(cloned)X
1318883375(routines)X
1318893659(will)X
1318903809(always)X
131891576 4992(have)N
131892779(been)X
131893982('specialized')X
1318941444(by)X
1318951575(IPA.)X
1318961795(A)X
1318971904(routine)X
1318982182(with)X
1318992375(DW_AT_MIPS_clone_origin)X
1319003378(will)X
1319013553(also)X
1319023732(have)X
1319033934(the)X
131904576 5088(DW_CC_nocall)N
1319051112(value)X
1319061306(of)X
1319071393(the)X
1319081511(DW_AT_calling_convention)X
1319092466(attribute.)X
1319103 f
13191111 s
131912576 5328(7.13)N
131913774(DW_AT_MIPS_has_inlines)X
1319142146(0x200b)X
1319151 f
13191610 s
131917576 5472(This)N
131918741(attribute)X
1319191052(may)X
1319201214(appear)X
1319211453(in)X
1319221539(a)X
1319231599(DW_TAG_subprogram)X
1319242385(DIE.)X
1319252583(If)X
1319262661(present)X
1319272917(and)X
1319283057(it)X
1319293125(has)X
1319303256(the)X
1319313378(value)X
1319323576(True,)X
1319333772(then)X
1319343934(the)X
131935576 5568(subprogram)N
131936979(has)X
1319371106(inlined)X
1319381348(functions)X
1319391666(somewhere)X
1319402052(in)X
1319412134(the)X
1319422252(body.)X
131943576 5712(By)N
131944689(default,)X
131945952(at)X
1319461030(startup,)X
1319471288(the)X
1319481406(debugger)X
1319491725(may)X
1319501883(not)X
1319512005(look)X
1319522167(for)X
1319532281(inlined)X
1319542523(functions)X
1319552841(in)X
1319562923(scopes)X
1319573157(inside)X
1319583368(the)X
1319593486(outer)X
1319603671(function.)X
131961576 6164(rev)N
131962699(1.17,)X
131963879(29)X
131964979(Aug)X
1319651137(2001)X
1319662237(-)X
1319672284(8)X
1319682344(-)X
131969
1319709 p
131971%%Page: 9 9
13197210 s 0 xH 0 xS 1 f
1319732237 384(-)N
1319742284(9)X
1319752344(-)X
131976576 768(This)N
131977739(is)X
131978813(a)X
131979871(hint)X
1319801017(to)X
1319811101(the)X
1319821221(debugger)X
1319831542(to)X
1319841626(look)X
1319851790(for)X
1319861906(the)X
1319872026(inlined)X
1319882270(functions)X
1319892590(so)X
1319902683(the)X
1319912803(debugger)X
1319923124(can)X
1319933258(set)X
1319943369(breakpoints)X
1319953765(on)X
1319963867(these)X
131997576 864(in)N
131998658(case)X
131999817(the)X
132000935(user)X
1320011089(requests)X
1320021372('stop)X
1320031552(in)X
1320041634(foo')X
1320051788(and)X
1320061924(foo)X
1320072051(is)X
1320082124(inlined.)X
1320093 f
13201011 s
132011576 1008(7.14)N
132012774(DW_AT_MIPS_stride_byte)X
1320132215(0x200c)X
1320141 f
13201510 s
132016576 1152(Created)N
132017858(for)X
132018984(f90)X
1320191124(pointer)X
1320201384(and)X
1320211533(assumed)X
1320221842(shape)X
1320232058(arrays.)X
1320242328(Used)X
1320252526(in)X
1320262621(the)X
1320272752(MIPSpro)X
1320283078(7.2)X
1320293211(\(7.2.1)X
1320303431(etc\))X
1320313585(compilers.)X
1320323974(A)X
132033576 1248(variant)N
132034838(of)X
132035944(DW_AT_MIPS_stride.)X
1320361748(This)X
1320371929(stride)X
1320382146(is)X
1320392238(interpreted)X
1320402625(as)X
1320412731(a)X
1320422806(byte)X
1320432983(count.)X
1320443240(Used)X
1320453443(for)X
1320463575(integer*1)X
1320473916(and)X
132048576 1344(character)N
132049892(arrays)X
1320501109(and)X
1320511245(arrays)X
1320521462(of)X
1320531549(derived)X
1320541810(type)X
1320551968(whose)X
1320562193(components)X
1320572600(are)X
1320582719(all)X
1320592819(character.)X
1320603 f
13206111 s
132062576 1488(7.15)N
132063774(DW_AT_MIPS_stride_elem)X
1320642230(0x200d)X
1320651 f
13206610 s
132067576 1632(Created)N
132068858(for)X
132069984(f90)X
1320701124(pointer)X
1320711384(and)X
1320721533(assumed)X
1320731842(shape)X
1320742058(arrays.)X
1320752328(Used)X
1320762526(in)X
1320772621(the)X
1320782752(MIPSpro)X
1320793078(7.2)X
1320803211(\(7.2.1)X
1320813431(etc\))X
1320823585(compilers.)X
1320833974(A)X
132084576 1728(variant)N
132085841(of)X
132086950(DW_AT_MIPS_stride.)X
1320871757(This)X
1320881941(stride)X
1320892160(is)X
1320902254(interpreted)X
1320912643(as)X
1320922751(a)X
1320932828(byte-pair)X
1320943159(\(2)X
1320953267(byte\))X
1320963473(count.)X
1320973732(Used)X
1320983938(for)X
132099576 1824(integer*2)N
132100899(arrays.)X
1321013 f
13210211 s
132103576 1968(7.16)N
132104774(DW_AT_MIPS_ptr_dopetype)X
1321052276(0x200e)X
1321061 f
13210710 s
132108576 2112(See)N
132109712(following.)X
1321103 f
13211111 s
132112576 2256(7.17)N
132113774(DW_AT_MIPS_allocatable_dopetype)X
1321142390(0x200f)X
1321151 f
13211610 s
132117576 2400(See)N
132118712(following.)X
1321193 f
13212011 s
132121576 2544(7.18)N
132122774(DW_AT_MIPS_assumed_shape_dopetype)X
1321232520(0x2010)X
1321241 f
13212510 s
132126576 2688(DW_AT_MIPS_assumed_shape_dopetype,)N
1321272321(DW_AT_MIPS_allocatable_dopetype,)X
1321283916(and)X
132129576 2784(DW_AT_MIPS_ptr_dopetype)N
1321301575(have)X
1321311756(an)X
1321321861(attribute)X
1321332157(value)X
1321342360(which)X
1321352585(is)X
1321362667(a)X
1321372732 0.4531(reference)AX
1321383062(to)X
1321393153(a)X
1321403218(Fortran)X
1321413483(90)X
1321423591(Dope)X
1321433793(Vector.)X
132144576 2880(These)N
132145794(attributes)X
1321461118(are)X
1321471243(introduced)X
1321481612(in)X
1321491700(MIPSpro7.3.)X
1321502160(They)X
1321512352(only)X
1321522521(apply)X
1321532726(to)X
1321542815(f90)X
1321552949(arrays)X
1321563173(\(where)X
1321573424(they)X
1321583589(are)X
1321593715(needed)X
1321603970(to)X
132161576 2976(describe)N
132162870(arrays)X
1321631093(never)X
1321641298(properly)X
1321651596(described)X
1321661930(before)X
1321672162(in)X
1321682250(debug)X
1321692472(information\).)X
1321702943(C,)X
1321713042(C++,)X
1321723230(f77,)X
1321733382(and)X
1321743523(most)X
1321753703(f90)X
1321763835(arrays)X
132177576 3072(continue)N
132178872(to)X
132179954(be)X
1321801050(described)X
1321811378(in)X
1321821460(standard)X
1321831752(dwarf.)X
132184576 3216(The)N
132185744(distinction)X
1321861124(between)X
1321871435(these)X
1321881643(three)X
1321891847(attributes)X
1321902189(is)X
1321912286(the)X
1321922428(f90)X
1321932579(syntax)X
1321942832(distinction:)X
1321953235(keywords)X
1321963591('pointer')X
1321973916(and)X
132198576 3312('allocatable')N
132199998(with)X
1322001160(the)X
1322011278(absence)X
1322021553(of)X
1322031640(these)X
1322041825(keywords)X
1322052157(on)X
1322062257(an)X
1322072353(assumed)X
1322082649(shape)X
1322092852(array)X
1322103038(being)X
1322113236(the)X
1322123354(third)X
1322133525(case.)X
132214576 3456(A)N
132215654("Dope)X
132216881(Vector")X
1322171153(is)X
1322181226(a)X
1322191283(struct)X
1322201482(\(C)X
1322211583(struct\))X
1322221809(which)X
1322232026(describes)X
1322242346(a)X
1322252403(dynamically-allocatable)X
1322263195(array.)X
1322273422(In)X
1322283510(objects)X
1322293758(with)X
1322303921(full)X
132231576 3552(debugging)N
132232936(the)X
1322331056(C)X
1322341130(struct)X
1322351329(will)X
1322361474(be)X
1322371571(in)X
1322381654(the)X
1322391773(dwarf)X
1322401982(information)X
1322412381(\(of)X
1322422496(the)X
1322432615(f90)X
1322442743(object,)X
1322452980(represented)X
1322463372(like)X
1322473513(C\).)X
1322483654(A)X
1322493733(debugger)X
132250576 3648(will)N
132251733(use)X
132252873(the)X
1322531004(link)X
1322541161(to)X
1322551256(find)X
1322561418(the)X
1322571549(main)X
1322581742(struct)X
1322591953(DopeVector)X
1322602379(and)X
1322612528(will)X
1322622685(use)X
1322632825(that)X
1322642978(information)X
1322653389(to)X
1322663484(decode)X
1322673745(the)X
1322683876(dope)X
132269576 3744(vector.)N
132270841(At)X
132271945(the)X
1322721067(outer)X
1322731256 0.0977(allocatable/assumed-shape/pointer)AX
1322742385(the)X
1322752507(DW_AT_location)X
1322763110(points)X
1322773329(at)X
1322783410(the)X
1322793531(dope)X
1322803710(vector)X
1322813934(\(so)X
132282576 3840(debugger)N
132283895(calculations)X
1322841298(use)X
1322851425(that)X
1322861565(as)X
1322871652(a)X
1322881708(base\).)X
1322893 f
13229011 s
132291576 3984(7.19)N
132292774(Overview)X
1322931158(of)X
1322941253(debugger)X
1322951627(use)X
1322961771(of)X
1322971866(dope)X
1322982069(vectors)X
1322991 f
13230010 s
132301576 4128(Fundamentally,)N
1323021099(we)X
1323031216(build)X
1323041403(two)X
1323051546(distinct)X
1323061804(representations)X
1323072314(of)X
1323082405(the)X
1323092527(arrays)X
1323102748(and)X
1323112888(pointers.)X
1323123210(One,)X
1323133388(in)X
1323143474(dwarf,)X
1323153706(represents)X
132316576 4224(the)N
132317697 0.1359(statically-representable)AX
1323181465(information)X
1323191865(\(the)X
1323202012(types)X
1323212203(and)X
1323222341(variable/type-names,)X
1323233034(without)X
1323243300(type)X
1323253460(size)X
1323263607(information\).)X
132327576 4320(The)N
132328725(other,)X
132329934(using)X
1323301131(dope)X
1323311311(vectors)X
1323321567(in)X
1323331653(memory,)X
1323341964(represents)X
1323352314(the)X
1323362436(run-time)X
1323372736(data)X
1323382894(of)X
1323392985(sizes.)X
1323403205(A)X
1323413287(debugger)X
1323423611(must)X
1323433791(process)X
132344576 4416(the)N
132345694(two)X
132346834(representations)X
1323471340(in)X
1323481422(parallel)X
1323491683(\(and)X
1323501846(merge)X
1323512067(them\))X
1323522274(to)X
1323532356(deal)X
1323542510(with)X
1323552692(user)X
1323562846(expressions)X
1323573240(in)X
1323583322(a)X
1323593378(debugger.)X
1323603 f
13236111 s
132362576 4560(7.20)N
132363774(Example)X
1323641129(f90)X
1323651268(code)X
1323661461(for)X
1323671595(use)X
1323681739(in)X
1323691835(explanation)X
1323701 f
13237110 s
132372576 4704([Note)N
132373786(We)X
132374925(want)X
1323751108(dwarf)X
1323761323(output)X
1323771554(with)X
1323781723(*exactly*)X
1323792062(this)X
1323802204(little)X
1323812377(\(arbitrary\))X
1323822735(example.)X
1323833074(Not)X
1323843221(yet)X
1323853347(available.)X
1323863705(end)X
1323873849(Note])X
132388576 4800(Consider)N
132389885(the)X
1323901003(following)X
1323911334(code.)X
132392716 4896(type)N
132393874(array_ptr)X
132394776 4992(real)N
132395957(::)X
1323961021(myvar)X
132397776 5088(real,)N
132398937(dimension)X
1323991290(\(:\),)X
1324001406(pointer)X
1324011653(::)X
1324021717(ap)X
132403716 5184(end)N
132404852(type)X
1324051010(array_ptr)X
132406716 5376(type)N
132407874(\(array_ptr\),)X
1324081263(allocatable,)X
1324091651(dimension)X
1324102004(\(:\))X
1324112100(::)X
1324122164(arrays)X
132413716 5568(allocate)N
132414986 0.2841(\(arrays\(20\)\))AX
132415716 5664(do)N
132416816(i)X
132417858(=)X
132418923(1,20)X
132419776 5760(allocate)N
1324201046 0.2656(\(arrays\(i\)%ap\(i\)\))AX
132421716 5856(end)N
132422852(do)X
132423576 6164(rev)N
132424699(1.17,)X
132425879(29)X
132426979(Aug)X
1324271137(2001)X
1324282237(-)X
1324292284(9)X
1324302344(-)X
132431
13243210 p
132433%%Page: 10 10
13243410 s 0 xH 0 xS 1 f
1324352217 384(-)N
1324362264(10)X
1324372364(-)X
132438576 768(arrays)N
132439808(is)X
132440896(an)X
1324411007(allocatable)X
1324421390(array)X
1324431591(\(1)X
1324441693(dimension\))X
1324452088(whose)X
1324462328(size)X
1324472489(is)X
1324482578(not)X
1324492716(known)X
1324502970(at)X
1324513064(compile)X
1324523358(time)X
1324533536(\(it)X
1324543643(has)X
1324553786(a)X
1324563858(Dope)X
132457576 864(Vector\).)N
132458892(At)X
1324591001(run)X
1324601137(time,)X
1324611328(the)X
1324621455(allocate)X
1324631734(statement)X
1324642070(creats)X
1324652287(20)X
1324662396(array_ptr)X
1324672720(dope)X
1324682905(vectors)X
1324693166(and)X
1324703311(marks)X
1324713536(the)X
1324723663(base)X
1324733835(arrays)X
132474576 960(dopevector)N
132475953(as)X
1324761040(allocated.)X
1324771390(The)X
1324781535(myvar)X
1324791760(variable)X
1324802039(is)X
1324812112(just)X
1324822247(there)X
1324832428(to)X
1324842510(add)X
1324852646(complexity)X
1324863026(to)X
1324873108(the)X
1324883226(example)X
1324893518(:-\))X
132490576 1056(In)N
132491663(the)X
132492781(loop,)X
132493963 0.2857(arrays\(1\)%ap\(1\))AX
132494656 1152(is)N
132495729(allocated)X
1324961039(as)X
1324971126(a)X
1324981182(single)X
1324991393(element)X
1325001667(array)X
1325011853(of)X
1325021940(reals.)X
132503576 1248(In)N
132504663(the)X
132505781(loop,)X
132506963 0.2857(arrays\(2\)%ap\(2\))AX
132507656 1344(is)N
132508729(allocated)X
1325091039(as)X
1325101126(an)X
1325111222(array)X
1325121408(of)X
1325131495(two)X
1325141635(reals.)X
132515576 1440(In)N
132516663(the)X
132517781(loop,)X
132518963 0.2500(arrays\(20\)%ap\(20\))AX
132519656 1536(is)N
132520729(allocated)X
1325211039(as)X
1325221126(an)X
1325231222(array)X
1325241408(of)X
1325251495(twenty)X
1325261733(reals.)X
1325273 f
13252811 s
132529576 1680(7.21)N
132530774(the)X
132531913(problem)X
1325321253(with)X
1325331441(standard)X
1325341800(dwarf)X
1325352046(and)X
1325362210(this)X
1325372369(example)X
1325381 f
13253910 s
132540576 1920(In)N
132541672(dwarf,)X
132542909(there)X
1325431099(is)X
1325441182(no)X
1325451292(way)X
1325461456(to)X
1325471548(find)X
1325481707(the)X
1325491835(array)X
1325502031(bounds)X
1325512292(of)X
1325522389 0.2708(arrays\(3\)%ap,)AX
1325532873(for)X
1325542997(example,)X
1325553319(\(which)X
1325563572(are)X
1325573701(1:3)X
1325583833(in)X
1325593925(f90)X
132560576 2016(syntax\))N
132561840(since)X
1325621033(any)X
1325631177(location)X
1325641463(expression)X
1325651834(in)X
1325661924(an)X
1325672028(ap)X
1325682132(array)X
1325692326(lower)X
1325702537(bound)X
1325712765(attribute)X
1325723060(cannot)X
1325733301(involve)X
1325743568(the)X
1325753693(3)X
1325763760(\(the)X
1325773912(3)X
1325783979(is)X
132579576 2112(known)N
132580819(at)X
132581902(debug)X
1325821123(time)X
1325831290(and)X
1325841431(does)X
1325851603(not)X
1325861731(appear)X
1325871972(in)X
1325882060(the)X
1325892184(running)X
1325902459(binary,)X
1325912710(so)X
1325922807(no)X
1325932913(way)X
1325943073(for)X
1325953193(the)X
1325963317(location)X
1325973601(expression)X
1325983970(to)X
132599576 2208(get)N
132600707(to)X
132601802(it\).)X
132602946(And)X
1326031116(of)X
1326041215(course)X
1326051457(the)X
1326061587(3)X
1326071659(must)X
1326081846(actually)X
1326092132(index)X
1326102342(across)X
1326112575(the)X
1326122705(array)X
1326132903(of)X
1326143002(dope)X
1326153190(vectors)X
1326163454(in)X
1326173548('arrays')X
1326183831(in)X
1326193925(our)X
132620576 2304(implementation,)N
1326211118(but)X
1326221240(that)X
1326231380(is)X
1326241453(less)X
1326251593(of)X
1326261680(a)X
1326271736(problem)X
1326282023(than)X
1326292181(the)X
1326302299(problem)X
1326312586(with)X
1326322748(the)X
1326332866('3'.)X
132634576 2496(Plus)N
132635736(dwarf)X
132636947(has)X
1326371078(no)X
1326381182(way)X
1326391340(to)X
1326401426(find)X
1326411579(the)X
1326421701('allocated')X
1326432069(flag)X
1326442218(in)X
1326452304(the)X
1326462426(dope)X
1326472606(vector)X
1326482831(\(so)X
1326492953(the)X
1326503075(debugger)X
1326513398(can)X
1326523534(know)X
1326533736(when)X
1326543934(the)X
132655576 2592(allocate)N
132656846(is)X
132657919(done)X
1326581095(for)X
1326591209(a)X
1326601265(particular)X
1326611593 0.2596(arrays\(j\)%ap\).)AX
132662576 2784(Consequently,)N
1326631059(the)X
1326641180(calculation)X
1326651555(of)X
1326661645(array)X
1326671835(bounds)X
1326682090(and)X
1326692230(indices)X
1326702481(for)X
1326712599(these)X
1326722788(dynamically)X
1326733208(created)X
1326743465(f90)X
1326753596(arrays)X
1326763817(is)X
1326773894(now)X
132678576 2880(pushed)N
132679829(of)X
132680922(into)X
1326811072(the)X
1326821196(debugger,)X
1326831541(which)X
1326841763(must)X
1326851943(know)X
1326862146(the)X
1326872269(field)X
1326882441(names)X
1326892671(and)X
1326902812(usages)X
1326913051(of)X
1326923143(the)X
1326933266(dope)X
1326943447(vector)X
1326953673(C)X
1326963751(structure)X
132697576 2976(and)N
132698714(use)X
132699843(the)X
132700964(field)X
1327011134(offsets)X
1327021371(etc)X
1327031488(to)X
1327041573(find)X
1327051725(data)X
1327061882(arrays.)X
1327072142(C,)X
1327082238(C++,)X
1327092424(f77,)X
1327102574(and)X
1327112713(most)X
1327122891(f90)X
1327133021(arrays)X
1327143241(continue)X
1327153540(to)X
1327163625(be)X
1327173724(described)X
132718576 3072(in)N
132719660(standard)X
132720954(dwarf.)X
1327211204(At)X
1327221306(the)X
1327231426(outer)X
1327241613 0.0977(allocatable/assumed-shape/pointer)AX
1327252740(the)X
1327262860(DW_AT_location)X
1327273461(points)X
1327283678(at)X
1327293757(the)X
1327303876(dope)X
132731576 3168(vector)N
132732797(\(so)X
132733915(debugger)X
1327341234(calculations)X
1327351637(use)X
1327361764(that)X
1327371904(as)X
1327381991(a)X
1327392047(base\).)X
132740576 3312(It)N
132741661(would)X
132742897(have)X
1327431085(been)X
1327441273(nice)X
1327451443(to)X
1327461541(design)X
1327471786(a)X
1327481858(dwarf)X
1327492082(extension)X
1327502425(to)X
1327512523(handle)X
1327522773(the)X
1327532907(above)X
1327543135(problems,)X
1327553489(but)X
1327563627(the)X
1327573761(methods)X
132758576 3408(considered)N
132759966(to)X
1327601070(date)X
1327611246(were)X
1327621445(not)X
1327631589(any)X
1327641747(more)X
1327651953(consistent)X
1327662314(with)X
1327672497(standard)X
1327682810(dwarf)X
1327693039(than)X
1327703218(this)X
1327713374(dope)X
1327723571(vector)X
1327733813(centric)X
132774576 3504(approach:)N
132775921(essentially)X
1327761287(just)X
1327771430(as)X
1327781525(much)X
1327791731(work)X
1327801924(in)X
1327812014(the)X
1327822140(debugger)X
1327832467(appeared)X
1327842786(necessary)X
1327853127(either)X
1327863338(way.)X
1327873541(A)X
1327883628(better)X
1327893840(\(more)X
132790576 3600(dwarf-ish\))N
132791931(design)X
1327921160(would)X
1327931380(be)X
1327941476(welcome)X
1327951786(information.)X
1327963 f
13279711 s
132798576 3840(7.22)N
132799774(A)X
132800859(simplified)X
1328011254(sketch)X
1328021515(of)X
1328031610(the)X
1328041749(dwarf)X
1328051995(information)X
1328061 f
13280710 s
132808576 3984([Note:)N
132809821(Needs)X
1328101042(to)X
1328111124(be)X
1328121220(written.)X
1328131507(end)X
1328141643(Note])X
1328153 f
13281611 s
132817576 4224(7.23)N
132818774(A)X
132819859(simplified)X
1328201254(sketch)X
1328211515(of)X
1328221610(the)X
1328231749(dope)X
1328241952(vector)X
1328252208(information)X
1328261 f
13282710 s
132828576 4368([Note:)N
132829826(This)X
132830993(one)X
1328311135(is)X
1328321214(simplified.)X
1328331604(Details)X
1328341857(left)X
1328351990(out)X
1328362118(that)X
1328372264(should)X
1328382503(be)X
1328392605(here.)X
1328402790(Amplify.)X
1328413127(end)X
1328423269(Note])X
1328433478(This)X
1328443646(is)X
1328453725(an)X
1328463827(overly)X
132847576 4464(simplified)N
132848920(version)X
1328491176(of)X
1328501263(a)X
1328511319(dope)X
1328521495(vector,)X
1328531736(presented)X
1328542064(as)X
1328552151(an)X
1328562247(initial)X
1328572453(hint.)X
1328582637(Full)X
1328592785(details)X
1328603014(presented)X
1328613342(later.)X
132862576 4560(struct)N
132863774(simplified{)X
132864616 4656(void)N
132865778(*base;)X
1328661003(//)X
1328671067(pointer)X
1328681314(to)X
1328691396(the)X
1328701514(data)X
1328711668(this)X
1328721803(describes)X
132873616 4752(long)N
132874798(el_len;)X
132875616 4848(int)N
132876760(assoc:1)X
132877616 4944(int)N
132878760(ptr_alloc:1)X
132879616 5040(int)N
132880760(num_dims:3;)X
132881616 5136(struct)N
132882814(dims_s)X
1328831060({)X
132884656 5232(long)N
132885818(lb;)X
132886656 5328(long)N
132887818(ext;)X
132888656 5424(long)N
132889818(str_m;)X
132890616 5520(})N
132891674(dims[7];)X
132892576 5616(};)N
132893576 5712(Only)N
132894756('num_dims')X
1328951167(elements)X
1328961472(of)X
1328971559(dims[])X
1328981788(are)X
1328991907(actually)X
1329002181(used.)X
132901576 6164(rev)N
132902699(1.17,)X
132903879(29)X
132904979(Aug)X
1329051137(2001)X
1329062217(-)X
1329072264(10)X
1329082364(-)X
132909
13291011 p
132911%%Page: 11 11
13291210 s 0 xH 0 xS 1 f
1329132217 384(-)N
1329142264(11)X
1329152364(-)X
1329163 f
13291711 s
132918576 768(7.24)N
132919774(The)X
132920943(dwarf)X
1329211189(information)X
1329221 f
13292310 s
132924576 1008(Here)N
132925753(is)X
132926826(dwarf)X
1329271034(information)X
1329281432(from)X
1329291608(the)X
1329301726(compiler)X
1329312031(for)X
1329322145(the)X
1329332263(example)X
1329342555(above,)X
1329352787(as)X
1329362874(printed)X
1329373121(by)X
1329383221(dwarfdump\(1\))X
132939576 1104([Note:)N
132940576 1200(The)N
132941721(following)X
1329421052(may)X
1329431210(not)X
1329441332(be)X
1329451428(the)X
1329461546(test.)X
132947576 1296(Having)N
132948832(field)X
132949999(names)X
1329501224(with)X
1329511386('.')X
1329521480(in)X
1329531562(the)X
1329541680(name)X
1329551874(is)X
132956576 1392(not)N
132957698(such)X
132958865(a)X
132959921(good)X
1329601101(idea,)X
1329611275(as)X
1329621362(it)X
1329631426(conflicts)X
1329641722(with)X
1329651884(the)X
132966576 1488(use)N
132967703(of)X
132968790('.')X
132969884(in)X
132970966(dbx)X
1329711106(extended)X
1329721416(naming.)X
132973576 1584(Something)N
132974942(else,)X
1329751107(like)X
1329761247(_$,)X
1329771367(would)X
1329781587(be)X
1329791683(much)X
1329801881(easier)X
132981576 1680(to)N
132982658(work)X
132983843(with)X
1329841005(in)X
1329851087(dbx)X
1329861227(\(customers)X
1329871599(won't)X
1329881806(care)X
1329891961(about)X
1329902159(this,)X
132991576 1776(for)N
132992690(the)X
132993808(most)X
132994983(part,)X
132995576 1872(but)N
132996698(folks)X
132997878(working)X
1329981165(on)X
1329991265(dbx)X
1330001405(will,)X
1330011569(and)X
1330021705(in)X
1330031787(those)X
133004576 1968(rare)N
133005722(circumstances)X
1330061197(when)X
1330071391(a)X
1330081447(customer)X
1330091761(cares,)X
133010576 2064(the)N
133011694('.')X
133012788(will)X
133013932(be)X
1330141028(a)X
1330151084(real)X
1330161225(problem)X
1330171512(in)X
1330181594(dbx.\).)X
133019576 2160(Note)N
133020752(that)X
133021892(to)X
133022974(print)X
1330231145(something)X
1330241498(about)X
1330251696(.base.,)X
1330261919(in)X
1330272001(dbx)X
1330282141(one)X
133029576 2256(would)N
133030796(have)X
133031968(to)X
1330321050(do)X
133033736 2352(whatis)N
133034965(`.base.`)X
133035576 2448(where)N
133036793(that)X
133037933(is)X
1330381006(the)X
1330391124(grave)X
1330401323(accent,)X
1330411569(or)X
1330421656(back-quote)X
1330432033(I)X
1330442080(am)X
1330452198(using.)X
133046576 2544(With)N
133047756(extended)X
1330481066(naming)X
1330491326(one)X
1330501462(do)X
133051736 2640(whatis)N
133052965(`.dope.`.`.base.`)X
133053576 2736(which)N
133054792(is)X
133055865(hard)X
1330561028(to)X
1330571110(type)X
1330581268(and)X
1330591404(hard)X
1330601567(to)X
1330611649(read.)X
133062576 2832(end)N
133063712(Note])X
133064576 3024(<2><)N
133065791(388>)X
1330661076 0.2109(DW_TAG_array_type)AX
133067896 3120(DW_AT_name)N
1330681751(.base.)X
133069896 3216(DW_AT_type)N
1330701715(<815>)X
133071896 3312(DW_AT_declaration)N
1330721794(yes\(1\))X
133073576 3408(<3><)N
133074791(401>)X
1330751076(DW_TAG_subrange_type)X
133076896 3504(DW_AT_lower_bound)N
1330771860(0)X
133078896 3600(DW_AT_upper_bound)N
1330791860(0)X
133080576 3696(<2><)N
133081791(405>)X
1330821076(DW_TAG_pointer_type)X
133083896 3792(DW_AT_type)N
1330841715(<388>)X
133085896 3888(DW_AT_byte_size)N
1330861780(4)X
133087896 3984(DW_AT_address_class)N
1330881834(0)X
133089576 4080(<2><)N
133090791(412>)X
1330911076(DW_TAG_structure_type)X
133092896 4176(DW_AT_name)N
1330931751(.flds.)X
133094896 4272(DW_AT_byte_size)N
1330951780(28)X
133096576 4368(<3><)N
133097791(421>)X
1330981076(DW_TAG_member)X
133099896 4464(DW_AT_name)N
1331001751(el_len)X
133101896 4560(DW_AT_type)N
1331021715(<815>)X
133103896 4656(DW_AT_data_member_location)N
1331041992(DW_OP_consts)X
1331052528(0)X
133106576 4752(<3><)N
133107791(436>)X
1331081076(DW_TAG_member)X
133109896 4848(DW_AT_name)N
1331101751(assoc)X
133111896 4944(DW_AT_type)N
1331121715(<841>)X
133113896 5040(DW_AT_byte_size)N
1331141780(0)X
133115896 5136(DW_AT_bit_offset)N
1331161764(0)X
133117896 5232(DW_AT_bit_size)N
1331181746(1)X
133119896 5328(DW_AT_data_member_location)N
1331201992(DW_OP_consts)X
1331212528(4)X
133122576 5424(<3><)N
133123791(453>)X
1331241076(DW_TAG_member)X
133125896 5520(DW_AT_name)N
1331261751(ptr_alloc)X
133127896 5616(DW_AT_type)N
1331281715(<841>)X
133129896 5712(DW_AT_byte_size)N
1331301780(0)X
133131896 5808(DW_AT_bit_offset)N
1331321764(1)X
133133576 6164(rev)N
133134699(1.17,)X
133135879(29)X
133136979(Aug)X
1331371137(2001)X
1331382217(-)X
1331392264(11)X
1331402364(-)X
133141
13314212 p
133143%%Page: 12 12
13314410 s 0 xH 0 xS 1 f
1331452217 384(-)N
1331462264(12)X
1331472364(-)X
133148896 768(DW_AT_bit_size)N
1331491746(1)X
133150896 864(DW_AT_data_member_location)N
1331511992(DW_OP_consts)X
1331522528(4)X
133153576 960(<3><)N
133154791(474>)X
1331551076(DW_TAG_member)X
133156896 1056(DW_AT_name)N
1331571751(p_or_a)X
133158896 1152(DW_AT_type)N
1331591715(<841>)X
133160896 1248(DW_AT_byte_size)N
1331611780(0)X
133162896 1344(DW_AT_bit_offset)N
1331631764(2)X
133164896 1440(DW_AT_bit_size)N
1331651746(2)X
133166896 1536(DW_AT_data_member_location)N
1331671992(DW_OP_consts)X
1331682528(4)X
133169576 1632(<3><)N
133170791(492>)X
1331711076(DW_TAG_member)X
133172896 1728(DW_AT_name)N
1331731751(a_contig)X
133174896 1824(DW_AT_type)N
1331751715(<841>)X
133176896 1920(DW_AT_byte_size)N
1331771780(0)X
133178896 2016(DW_AT_bit_offset)N
1331791764(4)X
133180896 2112(DW_AT_bit_size)N
1331811746(1)X
133182896 2208(DW_AT_data_member_location)N
1331831992(DW_OP_consts)X
1331842528(4)X
133185576 2304(<3><)N
133186791(532>)X
1331871076(DW_TAG_member)X
133188896 2400(DW_AT_name)N
1331891751(num_dims)X
133190896 2496(DW_AT_type)N
1331911715(<841>)X
133192896 2592(DW_AT_byte_size)N
1331931780(0)X
133194896 2688(DW_AT_bit_offset)N
1331951764(29)X
133196896 2784(DW_AT_bit_size)N
1331971746(3)X
133198896 2880(DW_AT_data_member_location)N
1331991992(DW_OP_consts)X
1332002528(8)X
133201576 2976(<3><)N
133202791(572>)X
1332031076(DW_TAG_member)X
133204896 3072(DW_AT_name)N
1332051751(type_code)X
133206896 3168(DW_AT_type)N
1332071715(<841>)X
133208896 3264(DW_AT_byte_size)N
1332091780(0)X
133210896 3360(DW_AT_bit_offset)N
1332111764(0)X
133212896 3456(DW_AT_bit_size)N
1332131746(32)X
133214896 3552(DW_AT_data_member_location)N
1332151992(DW_OP_consts)X
1332162528(16)X
133217576 3648(<3><)N
133218791(593>)X
1332191076(DW_TAG_member)X
133220896 3744(DW_AT_name)N
1332211751(orig_base)X
133222896 3840(DW_AT_type)N
1332231715(<841>)X
133224896 3936(DW_AT_data_member_location)N
1332251992(DW_OP_consts)X
1332262528(20)X
133227576 4032(<3><)N
133228791(611>)X
1332291076(DW_TAG_member)X
133230896 4128(DW_AT_name)N
1332311751(orig_size)X
133232896 4224(DW_AT_type)N
1332331715(<815>)X
133234896 4320(DW_AT_data_member_location)N
1332351992(DW_OP_consts)X
1332362528(24)X
133237576 4416(<2><)N
133238791(630>)X
1332391076(DW_TAG_structure_type)X
133240896 4512(DW_AT_name)N
1332411751(.dope_bnd.)X
133242896 4608(DW_AT_byte_size)N
1332431780(12)X
133244576 4704(<3><)N
133245791(643>)X
1332461076(DW_TAG_member)X
133247896 4800(DW_AT_name)N
1332481751(lb)X
133249896 4896(DW_AT_type)N
1332501715(<815>)X
133251896 4992(DW_AT_data_member_location)N
1332521992(DW_OP_consts)X
1332532528(0)X
133254576 5088(<3><)N
133255791(654>)X
1332561076(DW_TAG_member)X
133257896 5184(DW_AT_name)N
1332581751(ext)X
133259896 5280(DW_AT_type)N
1332601715(<815>)X
133261896 5376(DW_AT_data_member_location)N
1332621992(DW_OP_consts)X
1332632528(4)X
133264576 5472(<3><)N
133265791(666>)X
1332661076(DW_TAG_member)X
133267896 5568(DW_AT_name)N
1332681751(str_m)X
133269896 5664(DW_AT_type)N
1332701715(<815>)X
133271896 5760(DW_AT_data_member_location)N
1332721992(DW_OP_consts)X
1332732528(8)X
133274576 5856(<2><)N
133275791(681>)X
1332761076 0.2109(DW_TAG_array_type)AX
133277576 6164(rev)N
133278699(1.17,)X
133279879(29)X
133280979(Aug)X
1332811137(2001)X
1332822217(-)X
1332832264(12)X
1332842364(-)X
133285
13328613 p
133287%%Page: 13 13
13328810 s 0 xH 0 xS 1 f
1332892217 384(-)N
1332902264(13)X
1332912364(-)X
133292896 768(DW_AT_name)N
1332931751(.dims.)X
133294896 864(DW_AT_type)N
1332951715(<630>)X
133296896 960(DW_AT_declaration)N
1332971794(yes\(1\))X
133298576 1056(<3><)N
133299791(694>)X
1333001076(DW_TAG_subrange_type)X
133301896 1152(DW_AT_lower_bound)N
1333021860(0)X
133303896 1248(DW_AT_upper_bound)N
1333041860(0)X
133305576 1344(<2><)N
133306791(698>)X
1333071076(DW_TAG_structure_type)X
133308896 1440(DW_AT_name)N
1333091751(.dope.)X
133310896 1536(DW_AT_byte_size)N
1333111780(44)X
133312576 1632(<3><)N
133313791(707>)X
1333141076(DW_TAG_member)X
133315896 1728(DW_AT_name)N
1333161751(base)X
133317896 1824(DW_AT_type)N
1333181715(<405>)X
133319896 1920(DW_AT_data_member_location)N
1333201992(DW_OP_consts)X
1333212528(0)X
133322576 2016(<3><)N
133323791(720>)X
1333241076(DW_TAG_member)X
133325896 2112(DW_AT_name)N
1333261751(.flds)X
133327896 2208(DW_AT_type)N
1333281715(<412>)X
133329896 2304(DW_AT_data_member_location)N
1333301992(DW_OP_consts)X
1333312528(4)X
133332576 2400(<3><)N
133333791(734>)X
1333341076(DW_TAG_member)X
133335896 2496(DW_AT_name)N
1333361751(.dims.)X
133337896 2592(DW_AT_type)N
1333381715(<681>)X
133339896 2688(DW_AT_data_member_location)N
1333401992(DW_OP_consts)X
1333412528(32)X
133342576 2784(<2><)N
133343791(750>)X
1333441076(DW_TAG_variable)X
133345896 2880(DW_AT_type)N
1333461715(<815>)X
133347896 2976(DW_AT_location)N
1333481755(DW_OP_fbreg)X
1333492261(-32)X
133350896 3072(DW_AT_artificial)N
1333511729(yes\(1\))X
133352576 3168(<2><)N
133353791(759>)X
1333541076(DW_TAG_variable)X
133355896 3264(DW_AT_type)N
1333561715(<815>)X
133357896 3360(DW_AT_location)N
1333581755(DW_OP_fbreg)X
1333592261(-28)X
133360896 3456(DW_AT_artificial)N
1333611729(yes\(1\))X
133362576 3552(<2><)N
133363791(768>)X
1333641076(DW_TAG_variable)X
133365896 3648(DW_AT_type)N
1333661715(<815>)X
133367896 3744(DW_AT_location)N
1333681755(DW_OP_fbreg)X
1333692261(-24)X
133370896 3840(DW_AT_artificial)N
1333711729(yes\(1\))X
133372576 3936(<2><)N
133373791(777>)X
1333741076 0.2109(DW_TAG_array_type)AX
133375896 4032(DW_AT_type)N
1333761715(<815>)X
133377896 4128(DW_AT_declaration)N
1333781794(yes\(1\))X
133379576 4224(<3><)N
133380791(783>)X
1333811076(DW_TAG_subrange_type)X
133382896 4320(DW_AT_lower_bound)N
1333831860(<750>)X
133384896 4416(DW_AT_count)N
1333851735(<759>)X
133386896 4512(DW_AT_MIPS_stride)N
1333871841(<768>)X
133388576 4608(<2><)N
133389791(797>)X
1333901076(DW_TAG_variable)X
133391896 4704(DW_AT_decl_file)N
1333921758(1)X
133393896 4800(DW_AT_decl_line)N
1333941771(1)X
133395896 4896(DW_AT_name)N
1333961751(ARRAY)X
133397896 4992(DW_AT_type)N
1333981715(<698>)X
133399896 5088(DW_AT_location)N
1334001755(DW_OP_fbreg)X
1334012261(-64)X
1334022388(DW_OP_deref)X
133403576 5184(<1><)N
133404791(815>)X
1334051076(DW_TAG_base_type)X
133406896 5280(DW_AT_name)N
1334071751(INTEGER_4)X
133408896 5376(DW_AT_encoding)N
1334091791(DW_ATE_signed)X
133410896 5472(DW_AT_byte_size)N
1334111780(4)X
133412576 5568(<1><)N
133413791(828>)X
1334141076(DW_TAG_base_type)X
133415896 5664(DW_AT_name)N
1334161751(INTEGER_8)X
133417896 5760(DW_AT_encoding)N
1334181791(DW_ATE_signed)X
133419896 5856(DW_AT_byte_size)N
1334201780(8)X
133421576 6164(rev)N
133422699(1.17,)X
133423879(29)X
133424979(Aug)X
1334251137(2001)X
1334262217(-)X
1334272264(13)X
1334282364(-)X
133429
13343014 p
133431%%Page: 14 14
13343210 s 0 xH 0 xS 1 f
1334332217 384(-)N
1334342264(14)X
1334352364(-)X
133436576 768(<1><)N
133437791(841>)X
1334381076(DW_TAG_base_type)X
133439896 864(DW_AT_name)N
1334401751(INTEGER*4)X
133441896 960(DW_AT_encoding)N
1334421791(DW_ATE_unsigned)X
133443896 1056(DW_AT_byte_size)N
1334441780(4)X
133445576 1152(<1><)N
133446791(854>)X
1334471076(DW_TAG_base_type)X
133448896 1248(DW_AT_name)N
1334491751(INTEGER*8)X
133450896 1344(DW_AT_encoding)N
1334511791(DW_ATE_unsigned)X
133452896 1440(DW_AT_byte_size)N
1334531780(8)X
1334543 f
13345511 s
133456576 1680(7.25)N
133457774(The)X
133458943(dope)X
1334591146(vector)X
1334601402(structure)X
1334611770(details)X
1334621 f
13346310 s
133464576 1824(A)N
133465655(dope)X
133466832(vector)X
1334671054(is)X
1334681128(the)X
1334691247(following)X
1334701579(C)X
1334711653(struct,)X
1334721872("dopevec.h".)X
1334732327(Not)X
1334742468(all)X
1334752569(the)X
1334762688(fields)X
1334772887(are)X
1334783007(of)X
1334793095(use)X
1334803223(to)X
1334813306(a)X
1334823364(debugger.)X
1334833725(It)X
1334843796(may)X
1334853956(be)X
133486576 1920(that)N
133487716(not)X
133488838(all)X
133489938(fields)X
1334901136(will)X
1334911280(show)X
1334921469(up)X
1334931569(in)X
1334941651(the)X
1334951769(f90)X
1334961896(dwarf)X
1334972104(\(since)X
1334982316(not)X
1334992438(all)X
1335002538(are)X
1335012657(of)X
1335022744(interest)X
1335033000(to)X
1335043082(debuggers\).)X
133505576 2016([Note:)N
133506576 2112(Need)N
133507766(details)X
133508995(on)X
1335091095(the)X
1335101213(use)X
1335111340(of)X
1335121427(each)X
1335131595(field.)X
133514576 2208(And)N
133515734(need)X
133516906(to)X
133517988(know)X
1335181186(which)X
1335191402(are)X
1335201521(really)X
1335211724(32)X
1335221824(bits)X
1335231959(and)X
1335242095(which)X
133525576 2304(are)N
133526695(32)X
133527795(or)X
133528882(64.)X
133529576 2400(end)N
133530712(Note])X
133531576 2496(The)N
133532721(following)X
133533576 2592(struct)N
133534576 2688(is)N
133535649(a)X
133536705(representation)X
1335371180(of)X
1335381267(all)X
1335391367(the)X
1335401485(dope)X
1335411661(vector)X
1335421882(fields.)X
133543576 2784(It)N
133544645(suppresses)X
1335451008(irrelevant)X
1335461336(detail)X
1335471534(and)X
1335481670(may)X
1335491828(not)X
133550576 2880(exactly)N
133551828(match)X
1335521044(the)X
1335531162(layout)X
1335541382(in)X
1335551464(memory)X
1335561751(\(a)X
1335571834(debugger)X
1335582153(must)X
133559576 2976(examine)N
133560868(the)X
133561986(dwarf)X
1335621194(to)X
1335631276(find)X
1335641425(the)X
1335651543(fields,)X
1335661761(not)X
133567576 3072(compile)N
133568854(this)X
133569989(structure)X
1335701290(into)X
1335711434(the)X
1335721552(debugger!\).)X
133573576 3168(struct)N
133574774(.dope.)X
133575990({)X
133576596 3264(void)N
133577758(*base;)X
1335781023(//)X
1335791087(pointer)X
1335801334(to)X
1335811416(data)X
133582596 3360(struct)N
133583794(.flds.)X
133584974({)X
133585616 3456(long)N
133586778(el_len;)X
1335871016(//)X
1335881080(length)X
1335891300(of)X
1335901387(element)X
1335911661(in)X
1335921743(bytes?)X
133593616 3552(unsigned)N
133594925(int)X
1335951029(assoc:1;)X
1335961387(//means?)X
133597616 3648(unsigned)N
133598925(int)X
1335991029(ptr_alloc:1;)X
1336001498(//means?)X
133601616 3744(unsigned)N
133602925(int)X
1336031029(p_or_a:2;)X
1336041416(//means?)X
133605616 3840(unsigned)N
133606925(int)X
1336071029(a_contig:1;)X
1336081429(//)X
1336091493(means?)X
133610616 3936(unsigned)N
133611925(int)X
1336121029(num_dims:)X
1336131408(3;)X
1336141490(//)X
1336151554(0)X
1336161614(thru)X
1336171763(7)X
133618616 4032(unsigned)N
133619925(int)X
1336201029(type_code:32;)X
1336211503(//values?)X
133622616 4128(unsigned)N
133623925(int)X
1336241029(orig_base;)X
1336251383(//void)X
1336261589(*?)X
1336271685(means?)X
133628616 4224(long)N
133629938(orig_size;)X
1336301274(//)X
1336311338(means?)X
133632596 4320(})N
133633654(.flds;)X
133634596 4512(struct)N
133635794(.dope_bnd.)X
1336361170({)X
133637636 4608(long)N
133638798(lb)X
133639920(;)X
133640962(//)X
1336411026(lower)X
1336421229(bound)X
133643636 4704(long)N
133644798(ext)X
133645936(;)X
133646998(//)X
1336471062(means?)X
133648636 4800(long)N
133649798(str_m;)X
1336501022(//)X
1336511086(means?)X
133652596 4896(})N
133653654(.dims[7];)X
133654576 4992(})N
1336553 f
13365611 s
133657576 5232(7.26)N
133658774(DW_AT_MIPS_assumed_size)X
1336592056(0x2011)X
1336601 f
13366110 s
133662576 5376(This)N
133663738(flag)X
133664883(was)X
1336651028(invented)X
1336661324(to)X
1336671406(deal)X
1336681560(with)X
1336691722(f90)X
1336701849(arrays.)X
1336712106(For)X
1336722237(example:)X
133673696 5568(pointer)N
133674943(\(rptr,)X
1336751126(axx\(1\)\))X
133676696 5664(pointer)N
133677943(\(iptr,)X
1336781121(ita\(*\)\))X
133679696 5760(rptr)N
133680832(=)X
133681897(malloc)X
1336821135(\(100*8\))X
133683696 5856(iptr)N
133684827(=)X
133685892(malloc)X
1336861130(\(100*4\))X
133687576 6164(rev)N
133688699(1.17,)X
133689879(29)X
133690979(Aug)X
1336911137(2001)X
1336922217(-)X
1336932264(14)X
1336942364(-)X
133695
13369615 p
133697%%Page: 15 15
13369810 s 0 xH 0 xS 1 f
1336992217 384(-)N
1337002264(15)X
1337012364(-)X
133702576 768(This)N
133703743(flag)X
133704893(attribute)X
1337051185(has)X
1337061317(the)X
1337071440(value)X
1337081639('yes')X
1337091825(\(true,)X
1337102022(on\))X
1337112154(if)X
1337122228(and)X
1337132369(only)X
1337142536(if)X
1337152610(the)X
1337162733(size)X
1337172883(is)X
1337182962(unbounded,)X
1337193364(as)X
1337203457(iptr)X
1337213594(is.)X
1337223713(Both)X
1337233894(may)X
133724576 864(show)N
133725766(an)X
133726863(explicit)X
1337271124(upper)X
1337281328(bound)X
1337291549(of)X
1337301637(1)X
1337311698(in)X
1337321781(the)X
1337331900(dwarf,)X
1337342129(but)X
1337352252(this)X
1337362388(flag)X
1337372534(notifies)X
1337382795(the)X
1337392914(debugger)X
1337403234(that)X
1337413375(there)X
1337423557(is)X
1337433630(explicitly)X
1337443952(no)X
133745576 960(user-provided)N
1337461042(size.)X
133747576 1152(So)N
133748682(if)X
133749753(a)X
133750811(user)X
133751967(asks)X
1337521127(for)X
1337531243(a)X
1337541301(printout)X
1337551576(of)X
1337561685(the)X
1337571805(rptr)X
1337581943(allocated)X
1337592255(array,)X
1337602463(the)X
1337612583(default)X
1337622828(will)X
1337632974(be)X
1337643072(of)X
1337653161(a)X
1337663219(single)X
1337673432(entry)X
1337683619(\(as)X
1337693736(there)X
1337703920(is)X
1337713996(a)X
133772576 1248(user)N
133773737(slice)X
133774911(bound)X
1337751137(in)X
1337761225(the)X
1337771349(source\).)X
1337781652(In)X
1337791745(contrast,)X
1337802045(there)X
1337812232(is)X
1337822311(no)X
1337832417(explicit)X
1337842683(upper)X
1337852892(bound)X
1337863118(on)X
1337873224(the)X
1337883348(iptr)X
1337893485(\(ita\))X
1337903645(array)X
1337913837(so)X
1337923934(the)X
133793576 1344(default)N
133794819(slice)X
133795986(will)X
1337961130(use)X
1337971257(the)X
1337981375(current)X
1337991623(bound)X
1338001843(\(a)X
1338011926(value)X
1338022120(calculated)X
1338032466(from)X
1338042642(the)X
1338052760(malloc)X
1338062998(size,)X
1338073163(see)X
1338083286(the)X
1338093404(dope)X
1338103580(vector\).)X
133811576 1536(Given)N
133812792(explicit)X
1338131052(requests,)X
1338141355(more)X
1338151540(of)X
1338161627(rptr\(axx\))X
1338171933(can)X
1338182065(me)X
1338192183(shown)X
1338202412(than)X
1338212570(the)X
1338222688(default.)X
1338233 f
13382411 s
133825576 1824(8.)N
133826686(Line)X
133827880(information)X
1338281352(and)X
1338291516(Source)X
1338301797(Position)X
1338311 f
13383210 s
133833576 1968(DWARF)N
133834890(does)X
1338351062(not)X
1338361189(define)X
1338371415(the)X
1338381538(meaning)X
1338391839(of)X
1338401932(the)X
1338412056(term)X
1338422229('source)X
1338432492(statement'.)X
1338442892(Nor)X
1338453043(does)X
1338463216(it)X
1338473286(define)X
1338483513(any)X
1338493655(way)X
1338503815(to)X
1338513903(find)X
133852576 2064(the)N
133853694(first)X
133854843(user-written)X
1338551251(executable)X
1338561615(code)X
1338571787(in)X
1338581869(a)X
1338591925(function.)X
133860576 2208(It)N
133861649(does)X
133862820(define)X
1338631045(that)X
1338641189(a)X
1338651249(source)X
1338661483(statement)X
1338671834(has)X
1338681965(a)X
1338692025(file)X
1338702156(name,)X
1338712374(a)X
1338722434(line)X
1338732578(number,)X
1338742867(and)X
1338753008(a)X
1338763069(column)X
1338773334(position)X
1338783616(\(see)X
1338793771(Sec)X
1338803912(6.2,)X
133881576 2304(Line)N
133882751(Number)X
1338831042(Information)X
1338841453(of)X
1338851548(the)X
1338861674(Dwarf)X
1338871908(Version)X
1338882189(2)X
1338892256(document\).)X
1338902666(We)X
1338912805(will)X
1338922956(call)X
1338933099(those)X
1338943295(3)X
1338953362(source)X
1338963599(coordinates)X
1338973996(a)X
133898576 2400('source)N
133899840(position')X
1339001151(in)X
1339011240(this)X
1339021382(document.)X
1339031765(We'll)X
1339041975(try)X
1339052092(not)X
1339062222(to)X
1339072312(accidentally)X
1339082728(call)X
1339092872(the)X
1339102998(source)X
1339113236(position)X
1339123521(a)X
1339133585('line)X
1339143760(number')X
133915576 2496(since)N
133916761(that)X
133917901(is)X
133918974(ambiguous)X
1339191345(as)X
1339201432(to)X
1339211514(what)X
1339221690(it)X
1339231754(means.)X
1339243 f
13392511 s
133926576 2736(8.1)N
133927730(Definition)X
1339281129(of)X
1339291224(Statement)X
1339301 f
13393110 s
133932576 2880(A)N
133933654(function)X
133934941(prolog)X
1339351170(is)X
1339361243(a)X
1339371299(statement.)X
133938576 3024(A)N
133939654(C,)X
133940747(C++,)X
133941930(Pascal,)X
1339421175(or)X
1339431262(Fortran)X
1339441518(statement)X
1339451845(is)X
1339461918(a)X
1339471974(statement.)X
133948576 3168(Each)N
133949761(initialized)X
1339501105(local)X
1339511286(variable)X
1339521570(in)X
1339531657(C,C++)X
1339541898(is)X
1339551976(a)X
1339562037(statement)X
1339572369(in)X
1339582456(that)X
1339592601(its)X
1339602701(initialization)X
1339613130(generates)X
1339623459(a)X
1339633520(source)X
1339643755(position.)X
133965576 3264(This)N
133966738(means)X
133967963(that)X
133968736 3360(x)N
133969796(=3,)X
133970921(y=4;)X
1339711088(is)X
1339721161(two)X
1339731301(statements.)X
133974576 3504(For)N
133975719(C,)X
133976824(C++:)X
1339771041(The)X
1339781198(3)X
1339791270(parts)X
1339801458(a,b,c)X
1339811642(in)X
1339821736(for\(a;b;c\))X
1339832072({d;})X
1339842242(are)X
1339852373(individual)X
1339862729(statements.)X
1339873139(The)X
1339883297(condition)X
1339893632(portion)X
1339903896(of)X
1339913996(a)X
133992576 3600(while\(\))N
133993828(and)X
133994964(do)X
1339951064({})X
1339961160(while\(\))X
1339971412(is)X
1339981485(a)X
1339991541(statement.)X
1340001908(\(of)X
1340012022(course)X
1340022252(d;)X
1340032334(can)X
1340042466(be)X
1340052562(any)X
1340062698(number)X
1340072963(of)X
1340083050(statements\))X
134009576 3744(For)N
134010711(Fortran,)X
134011991(the)X
1340121113(controlling)X
1340131488(expression)X
1340141855(of)X
1340151946(a)X
1340162006(DO)X
1340172146(loop)X
1340182312(is)X
1340192389(a)X
1340202449(statement.)X
1340212820(Is)X
1340222902(a)X
1340232962('continue')X
1340243316(statement)X
1340253648(in)X
1340263735(Fortran)X
1340273996(a)X
134028576 3840(DWARF)N
134029885(statement?)X
134030576 3984(Each)N
134031761(function)X
1340321052(return,)X
1340331288(whether)X
1340341571(user)X
1340351729(coded)X
1340361945(or)X
1340372036(generated)X
1340382373(by)X
1340392477(the)X
1340402599(compiler,)X
1340412928(is)X
1340423005(a)X
1340433066(statement.)X
1340443438(This)X
1340453605(is)X
1340463683(so)X
1340473779(one)X
1340483920(can)X
134049576 4080(step)N
134050737(over)X
134051912(\(in)X
1340521033(a)X
1340531101(debugger\))X
1340541459(the)X
1340551589(final)X
1340561768(user-coded)X
1340572153(statement)X
1340582492(\(exclusive)X
1340592854(of)X
1340602953(the)X
1340613083(return)X
1340623307(statement)X
1340633646(if)X
1340643727(any\))X
1340653902(in)X
1340663996(a)X
134067576 4176(function)N
134068863(wile)X
1340691021(not)X
1340701143(leaving)X
1340711399(the)X
1340721517(function)X
1340731804(scope.)X
1340743 f
13407511 s
134076576 4464(8.2)N
134077730(Finding)X
1340781047(The)X
1340791216(First)X
1340801419(User)X
1340811616(Code)X
1340821833(in)X
1340831929(a)X
1340841995(Function)X
1340851 f
13408610 s
134087576 4704(Consider:)N
134088576 4800(int)N
134089680(func\(int)X
134090954(a\))X
134091576 4896({)N
1340921014(/*)X
1340931096(source)X
1340941326(position)X
1340951603(1)X
1340961663(*/)X
134097736 4992(float)N
134098903(b)X
134099963(=)X
1341001028(a;)X
1341011106(/*)X
1341021188(source)X
1341031418(position)X
1341041695(2)X
1341051755(*/)X
134106736 5088(int)N
134107840(x;)X
134108736 5184(x)N
134109796(=)X
134110861(b)X
134111921(+)X
134112986(2;)X
1341131108(/*)X
1341141190(source)X
1341151420(position)X
1341161697(3)X
1341171757(*/)X
134118576 5280(})N
1341191014(/*)X
1341201096(source)X
1341211326(position)X
1341221603(4)X
1341231663(*/)X
134124576 5424(The)N
134125721(DIE)X
134126875(for)X
134127989(a)X
1341281045(function)X
1341291332(gives)X
1341301521(the)X
1341311639(address)X
1341321900(range)X
1341332099(of)X
1341342186(the)X
1341352304(function,)X
1341362611(including)X
1341372933(function)X
1341383220(prolog\(s\))X
1341393534(and)X
1341403670(epilog\(s\))X
134141576 5568(Since)N
134142779(there)X
134143965(is)X
1341441043(no)X
1341451148(scope)X
1341461356(block)X
1341471559(for)X
1341481678(the)X
1341491801(outer)X
1341501991(user)X
1341512150(scope)X
1341522358(of)X
1341532451(a)X
1341542513(function)X
1341552806(\(and)X
1341562975(thus)X
1341573134(no)X
1341583240(beginning)X
1341593586(address)X
1341603853(range)X
134161576 5664(for)N
134162693(the)X
134163814(outer)X
1341641002(user)X
1341651159(scope:)X
1341661407(the)X
1341671528(DWARF)X
1341681840(committee)X
1341692201(explicitly)X
1341702526(rejected)X
1341712803(the)X
1341722923(idea)X
1341733079(of)X
1341743168(having)X
1341753408(a)X
1341763466(user)X
1341773622(scope)X
1341783827(block\))X
134179576 5760(it)N
134180640(is)X
134181713(necessary)X
1341821046(to)X
1341831128(use)X
1341841255(the)X
1341851373(source)X
1341861603(position)X
1341871880(information)X
1341882278(to)X
1341892360(find)X
1341902509(the)X
1341912627(first)X
1341922776 0.2232(user-executable)AX
1341933301(statement.)X
134194576 6164(rev)N
134195699(1.17,)X
134196879(29)X
134197979(Aug)X
1341981137(2001)X
1341992217(-)X
1342002264(15)X
1342012364(-)X
134202
13420316 p
134204%%Page: 16 16
13420510 s 0 xH 0 xS 1 f
1342062217 384(-)N
1342072264(16)X
1342082364(-)X
134209576 768(This)N
134210741(means)X
134211969(that)X
1342121112(the)X
1342131233(user)X
1342141390(code)X
1342151565(for)X
1342161682(a)X
1342171741(function)X
1342182031(must)X
1342192210(be)X
1342202310(presumed)X
1342212646(to)X
1342222732(begin)X
1342232934(at)X
1342243016(the)X
1342253138(code)X
1342263314(location)X
1342273596(of)X
1342283687(the)X
1342293809(second)X
134230576 864(source)N
134231806(position)X
1342321083(in)X
1342331165(the)X
1342341283(function)X
1342351570(address)X
1342361831(range.)X
134237576 1008(If)N
134238650(a)X
134239706(function)X
134240993(has)X
1342411120(exactly)X
1342421372(one)X
1342431508(source)X
1342441738(position,)X
1342452035(the)X
1342462153(function)X
1342472440(presumably)X
1342482834(consists)X
1342493107(solely)X
1342503318(of)X
1342513405(a)X
1342523461(return.)X
134253576 1152(If)N
134254651(a)X
134255708(function)X
134256996(has)X
1342571124(exactly)X
1342581377(two)X
1342591518(source)X
1342601749(positions,)X
1342612078(the)X
1342622197(function)X
1342632485(may)X
1342642644(consist)X
1342652888(of)X
1342662977(a)X
1342673035(function)X
1342683324(prolog)X
1342693555(and)X
1342703693(a)X
1342713751(return)X
1342723965(or)X
134273576 1248(a)N
134274636(single)X
134275851(user)X
1342761009(statement)X
1342771340(and)X
1342781480(a)X
1342791540(return)X
1342801756(\(there)X
1342811968(may)X
1342822130(be)X
1342832230(no)X
1342842334(prolog)X
1342852567(code)X
1342862743(needed)X
1342872995(in)X
1342883081(a)X
1342893141(leaf)X
1342903286(function\).)X
1342913644(In)X
1342923735(this)X
1342933873(case,)X
134294576 1344(there)N
134295760(is)X
134296836(no)X
134297939(way)X
1342981096(to)X
1342991181(be)X
1343001280(sure)X
1343011437(which)X
1343021656(is)X
1343031732(the)X
1343041853(first)X
1343052005(source)X
1343062239(position)X
1343072520(of)X
1343082611(user)X
1343092769(code,)X
1343102965(so)X
1343113060(the)X
1343123182(rule)X
1343133331(is)X
1343143408(to)X
1343153494(presume)X
1343163790(that)X
1343173934(the)X
134318576 1440(first)N
134319725(address)X
134320986(is)X
1343211059(user)X
1343221213(code.)X
134323576 1584(If)N
134324660(a)X
134325727(function)X
1343261025(consists)X
1343271309(of)X
1343281407(3)X
1343291478(or)X
1343301576(more)X
1343311772(source)X
1343322013(positions,)X
1343332352(one)X
1343342499(should)X
1343352743(assume)X
1343363010(that)X
1343373161(the)X
1343383290(first)X
1343393450(source)X
1343403691(position)X
1343413979(is)X
134342576 1680(function)N
134343863(prolog)X
1343441092(and)X
1343451228(the)X
1343461346(second)X
1343471589(is)X
1343481662(the)X
1343491780(first)X
1343501929(user)X
1343512083(executable)X
1343522447(code.)X
1343533 f
13435411 s
134355576 1920(8.3)N
134356730(Using)X
134357967(debug_frame)X
1343581487(Information)X
1343591968(to)X
1343602063(find)X
1343612237(first)X
1343622415(user)X
1343632598(statement)X
1343641 f
13436510 s
134366576 2064(In)N
134367665(addition)X
134368949(to)X
1343691033(the)X
1343701153(line)X
1343711295(information,)X
1343721715(the)X
1343731835(debug_frame)X
1343742281(information)X
1343752681(can)X
1343762815(be)X
1343772913(useful)X
1343783131(in)X
1343793215(determining)X
1343803625(the)X
1343813746(first)X
1343823898(user)X
134383576 2160(source)N
134384806(line.)X
134385576 2304(Given)N
134386792(that)X
134387932(a)X
134388988(function)X
1343891275(has)X
1343901402(more)X
1343911587(than)X
1343921745(1)X
1343931806(source)X
1343942037(position,)X
1343952335(Find)X
1343962502(the)X
1343972621(code)X
1343982794(location)X
1343993073(of)X
1344003161(the)X
1344013280(second)X
1344023524(source)X
1344033755(position,)X
134404576 2400(then)N
134405740(examine)X
1344061038(the)X
1344071162(debug_frame)X
1344081612(information)X
1344092016(to)X
1344102104(determine)X
1344112451(if)X
1344122526(the)X
1344132650(Canonical)X
1344143001(Frame)X
1344153232(Address)X
1344163521(\(cfa\))X
1344173700(is)X
1344183778(updated)X
134419576 2496(before)N
134420805(the)X
134421926(second)X
1344221172(source)X
1344231406(position)X
1344241687(code)X
1344251863(location.)X
1344262185(If)X
1344272263(the)X
1344282385(cfa)X
1344292508(is)X
1344302585(updated,)X
1344312883(then)X
1344323045(one)X
1344333185(can)X
1344343321(be)X
1344353421(pretty)X
1344363632(sure)X
1344373790(that)X
1344383934(the)X
134439576 2592(code)N
134440748(for)X
134441862(the)X
134442980(first)X
1344431129(source)X
1344441359(position)X
1344451636(is)X
1344461709(function)X
1344471996(prolog)X
1344482225(code.)X
134449576 2736(Similarly,)N
134450915(if)X
134451987(the)X
1344521108(cfa)X
1344531230(is)X
1344541306(restored)X
1344551588(in)X
1344561673(the)X
1344571794(code)X
1344581969(for)X
1344592086(a)X
1344602145(source)X
1344612378(position,)X
1344622678(the)X
1344632799(source)X
1344643032(position)X
1344653312(is)X
1344663388(likely)X
1344673593(to)X
1344683678(represent)X
1344693996(a)X
134470576 2832(function)N
134471863(exit)X
1344721003(block.)X
1344733 f
13447411 s
134475576 3072(8.4)N
134476730(Debugger)X
1344771118(Use)X
1344781276(Of)X
1344791396(Source)X
1344801677(Position)X
1344811 f
13448210 s
134483576 3216(Command)N
134484929(line)X
1344851069(debuggers,)X
1344861439(such)X
1344871607(as)X
1344881695(dbx)X
1344891836(and)X
1344901973(gdb,)X
1344912134(will)X
1344922279(ordinarily)X
1344932616(want)X
1344942793(to)X
1344952876(consider)X
1344963169(multiple)X
1344973456(statements)X
1344983815(on)X
1344993916(one)X
134500576 3312(line)N
134501725(to)X
134502816(be)X
134503921(a)X
134504986(single)X
1345051206(statement:)X
1345061564(doing)X
1345071774(otherwise)X
1345082114(is)X
1345092195(distressing)X
1345102565(to)X
1345112655(users)X
1345122848(since)X
1345133041(it)X
1345143113(causes)X
1345153351(a)X
1345163415('step')X
1345173626(command)X
1345183970(to)X
134519576 3408(appear)N
134520811(to)X
134521893(have)X
1345221065(no)X
1345231165(effect.)X
134524576 3552(An)N
134525704(exception)X
1345261046(for)X
1345271170(command)X
1345281516(line)X
1345291667(debuggers)X
1345302028(is)X
1345312112(in)X
1345322205(determining)X
1345332623(the)X
1345342752(first)X
1345352912(user)X
1345363077(statement:)X
1345373437(as)X
1345383535(detailed)X
1345393820(above,)X
134540576 3648(there)N
134541758(one)X
134542895(wants)X
1345431103(to)X
1345441186(consider)X
1345451479(the)X
1345461598(full)X
1345471750(source)X
1345481981(position)X
1345492259(and)X
1345502396(will)X
1345512541(want)X
1345522718(to)X
1345532801(consider)X
1345543094(the)X
1345553213(function)X
1345563500(return)X
1345573712(a)X
1345583768(separate)X
134559576 3744(statement.)N
134560957(It)X
1345611041(is)X
1345621129(difficult)X
1345631422(to)X
1345641519(make)X
1345651728(the)X
1345661861(function)X
1345672163(return)X
1345682390(a)X
1345692461(separate)X
1345702760(statement)X
1345713102('step')X
1345723320(reliably)X
1345733600(however)X
1345743912(if)X
1345753996(a)X
134576576 3840(function)N
134577867(is)X
134578943(coded)X
1345791158(all)X
1345801261(on)X
1345811364(one)X
1345821503(line)X
1345831646(or)X
1345841736(if)X
1345851808(the)X
1345861929(last)X
1345872063(line)X
1345882206(of)X
1345892296(user)X
1345902453(code)X
1345912628(before)X
1345922857(the)X
1345932978(return)X
1345943213(is)X
1345953289(on)X
1345963392(the)X
1345973513(same)X
1345983701(line)X
1345993844(as)X
1346003934(the)X
134601576 3936(return.)N
134602576 4080(A)N
134603668(graphical)X
1346041001(debugger)X
1346051334(has)X
1346061475(none)X
1346071665(of)X
1346081766(these)X
1346091965(problems)X
1346102297(if)X
1346112380(it)X
1346122459(simply)X
1346132711(highlights)X
1346143065(the)X
1346153198(portion)X
1346163464(of)X
1346173566(the)X
1346183699(line)X
1346193854(being)X
134620576 4176(executed.)N
134621922(In)X
1346221009(that)X
1346231149(case,)X
1346241328(stepping)X
1346251619(will)X
1346261763(appear)X
1346271998(natural)X
1346282241(even)X
1346292413(stepping)X
1346302704(within)X
1346312928(a)X
1346322984(line.)X
1346333 f
13463411 s
134635576 4368(9.)N
134636686(Known)X
134637982(Bugs)X
1346381 f
13463910 s
134640576 4512(Up)N
134641702(through)X
134642979(at)X
1346431065(least)X
1346441241(MIPSpro7.2.1)X
1346451723(the)X
1346461850(compiler)X
1346472164(has)X
1346482300(been)X
1346492481(emitting)X
1346502776(form)X
1346512961(DW_FORM_DATA1,2,)X
1346523773(or)X
1346533869(4)X
1346543938(for)X
134655576 4608(DW_AT_const_value)N
1346561321(in)X
1346571424 0.1838(DW_TAG_enumerator.)AX
1346582250(And)X
1346592428(dwarfdump)X
1346602838(and)X
1346612994(debuggers)X
1346623364(have)X
1346633556(read)X
1346643735(this)X
1346653890(with)X
134666576 4704 0.2188(dwarf_formudata\(\))AN
1346671218(or)X
1346681315(form_sdata\(\))X
1346691760(and)X
1346701906(gotten)X
1346712136(some)X
1346722335(values)X
1346732570(incorrect.)X
1346742926(For)X
1346753067(example,)X
1346763389(a)X
1346773455(value)X
1346783659(of)X
1346793756(128)X
1346803907(was)X
134681576 4800(printed)N
134682827(by)X
134683931(debuggers)X
1346841285(as)X
1346851376(a)X
1346861436(negative)X
1346871732(value.)X
1346881970(Since)X
1346892172(dwarfdump)X
1346902565(and)X
1346912704(the)X
1346922825(compilers)X
1346933164(were)X
1346943344(not)X
1346953469(written)X
1346963719(to)X
1346973804(use)X
1346983934(the)X
134699576 4896(value)N
134700773(the)X
134701894(same)X
1347021082(way,)X
1347031260(their)X
1347041431(output)X
1347051659(differed.)X
1347061978(For)X
1347072113(negative)X
1347082409(enumerator)X
1347092799(values)X
1347103028(the)X
1347113150(compiler)X
1347123459(has)X
1347133590(been)X
1347143766(emitting)X
134715576 4992(32bit)N
134716761(values)X
134717986(in)X
1347181068(a)X
1347191124(DW_FORM_DATA4.)X
1347201887(The)X
1347212032(compiler)X
1347222337(should)X
1347232570(probably)X
1347242875(be)X
1347252971(emitting)X
1347263257(a)X
1347273313(DW_FORM_sdata)X
1347283938(for)X
134729576 5088(enumerator)N
134730970(values.)X
1347311243(And)X
1347321409(consumers)X
1347331780(of)X
1347341875(enumerator)X
1347352269(values)X
1347362502(should)X
1347372743(then)X
1347382909(call)X
1347393053(form_sdata\(\).)X
1347403537(However,)X
1347413881(right)X
134742576 5184(now,)N
134743761(debuggers)X
1347441118(should)X
1347451358(call)X
1347461501(form_udata\(\))X
1347471952(and)X
1347482095(only)X
1347492264(if)X
1347502340(it)X
1347512411(fails,)X
1347522596(call)X
1347532739(form_sdata\(\).)X
1347543221(Anything)X
1347553550(else)X
1347563702(will)X
1347573853(break)X
134758576 5280(backward)N
134759909(compatibility)X
1347601355(with)X
1347611517(the)X
1347621635(objects)X
1347631882(produced)X
1347642201(earlier.)X
134765576 6164(rev)N
134766699(1.17,)X
134767879(29)X
134768979(Aug)X
1347691137(2001)X
1347702217(-)X
1347712264(16)X
1347722364(-)X
134773
13477417 p
134775%%Page: 17 17
13477610 s 0 xH 0 xS 1 f
1347772217 384(-)N
1347782264(17)X
1347792364(-)X
134780576 6164(rev)N
134781699(1.17,)X
134782879(29)X
134783979(Aug)X
1347841137(2001)X
1347852217(-)X
1347862264(17)X
1347872364(-)X
134788
13478918 p
134790%%Page: 18 18
13479110 s 0 xH 0 xS 1 f
1347922095 768(CONTENTS)N
134793576 1008(1.)N
134794676(INTRODUCTION)X
1347953 f
1347961371(.)X
1347971477(.)X
1347981583(.)X
1347991689(.)X
1348001795(.)X
1348011901(.)X
1348022007(.)X
1348032113(.)X
1348042219(.)X
1348052325(.)X
1348062431(.)X
1348072537(.)X
1348082643(.)X
1348092749(.)X
1348102855(.)X
1348112961(.)X
1348123067(.)X
1348133173(.)X
1348143279(.)X
1348153385(.)X
1348163491(.)X
1348173597(.)X
1348183703(.)X
1348193809(.)X
1348201 f
1348213992(1)X
134822576 1152(2.)N
134823676(How)X
134824852(much)X
1348251050(symbol)X
1348261305(information)X
1348271703(is)X
1348281776(emitted)X
1348293 f
1348302113(.)X
1348312219(.)X
1348322325(.)X
1348332431(.)X
1348342537(.)X
1348352643(.)X
1348362749(.)X
1348372855(.)X
1348382961(.)X
1348393067(.)X
1348403173(.)X
1348413279(.)X
1348423385(.)X
1348433491(.)X
1348443597(.)X
1348453703(.)X
1348463809(.)X
1348471 f
1348483992(1)X
134849676 1248(2.1)N
134850856(Overview)X
1348511193(of)X
1348521280(information)X
1348531678(emitted)X
1348543 f
1348552007(.)X
1348562113(.)X
1348572219(.)X
1348582325(.)X
1348592431(.)X
1348602537(.)X
1348612643(.)X
1348622749(.)X
1348632855(.)X
1348642961(.)X
1348653067(.)X
1348663173(.)X
1348673279(.)X
1348683385(.)X
1348693491(.)X
1348703597(.)X
1348713703(.)X
1348723809(.)X
1348731 f
1348743992(1)X
134875676 1344(2.2)N
134876856(Detecting)X
1348771188('full)X
1348781346(symbols')X
1348791659(\(-g\))X
1348803 f
1348811901(.)X
1348822007(.)X
1348832113(.)X
1348842219(.)X
1348852325(.)X
1348862431(.)X
1348872537(.)X
1348882643(.)X
1348892749(.)X
1348902855(.)X
1348912961(.)X
1348923067(.)X
1348933173(.)X
1348943279(.)X
1348953385(.)X
1348963491(.)X
1348973597(.)X
1348983703(.)X
1348993809(.)X
1349001 f
1349013992(2)X
134902676 1440(2.3)N
134903856(DWARF)X
1349041165(and)X
1349051301(strip\(1\))X
1349063 f
1349071583(.)X
1349081689(.)X
1349091795(.)X
1349101901(.)X
1349112007(.)X
1349122113(.)X
1349132219(.)X
1349142325(.)X
1349152431(.)X
1349162537(.)X
1349172643(.)X
1349182749(.)X
1349192855(.)X
1349202961(.)X
1349213067(.)X
1349223173(.)X
1349233279(.)X
1349243385(.)X
1349253491(.)X
1349263597(.)X
1349273703(.)X
1349283809(.)X
1349291 f
1349303992(2)X
134931676 1536(2.4)N
134932856(Evaluating)X
1349331223(location)X
1349341501(expressions)X
1349353 f
1349362007(.)X
1349372113(.)X
1349382219(.)X
1349392325(.)X
1349402431(.)X
1349412537(.)X
1349422643(.)X
1349432749(.)X
1349442855(.)X
1349452961(.)X
1349463067(.)X
1349473173(.)X
1349483279(.)X
1349493385(.)X
1349503491(.)X
1349513597(.)X
1349523703(.)X
1349533809(.)X
1349541 f
1349553992(2)X
134956576 1680(3.)N
134957676(Frame)X
134958901(Information)X
1349593 f
1349601371(.)X
1349611477(.)X
1349621583(.)X
1349631689(.)X
1349641795(.)X
1349651901(.)X
1349662007(.)X
1349672113(.)X
1349682219(.)X
1349692325(.)X
1349702431(.)X
1349712537(.)X
1349722643(.)X
1349732749(.)X
1349742855(.)X
1349752961(.)X
1349763067(.)X
1349773173(.)X
1349783279(.)X
1349793385(.)X
1349803491(.)X
1349813597(.)X
1349823703(.)X
1349833809(.)X
1349841 f
1349853992(2)X
134986676 1776(3.1)N
134987856(Initial)X
1349881067(Instructions)X
1349893 f
1349901583(.)X
1349911689(.)X
1349921795(.)X
1349931901(.)X
1349942007(.)X
1349952113(.)X
1349962219(.)X
1349972325(.)X
1349982431(.)X
1349992537(.)X
1350002643(.)X
1350012749(.)X
1350022855(.)X
1350032961(.)X
1350043067(.)X
1350053173(.)X
1350063279(.)X
1350073385(.)X
1350083491(.)X
1350093597(.)X
1350103703(.)X
1350113809(.)X
1350121 f
1350133992(2)X
135014676 1872(3.2)N
135015856(Augmentation)X
1350161334(string)X
1350171536(in)X
1350181618(debug_frame)X
1350193 f
1350202113(.)X
1350212219(.)X
1350222325(.)X
1350232431(.)X
1350242537(.)X
1350252643(.)X
1350262749(.)X
1350272855(.)X
1350282961(.)X
1350293067(.)X
1350303173(.)X
1350313279(.)X
1350323385(.)X
1350333491(.)X
1350343597(.)X
1350353703(.)X
1350363809(.)X
1350371 f
1350383992(3)X
135039676 1968(3.3)N
135040856(Stack)X
1350411054(Pointer)X
1350421305(recovery)X
1350431607(from)X
1350441783(debug_frame)X
1350453 f
1350462325(.)X
1350472431(.)X
1350482537(.)X
1350492643(.)X
1350502749(.)X
1350512855(.)X
1350522961(.)X
1350533067(.)X
1350543173(.)X
1350553279(.)X
1350563385(.)X
1350573491(.)X
1350583597(.)X
1350593703(.)X
1350603809(.)X
1350611 f
1350623992(3)X
135063576 2112(4.)N
135064676(egcs)X
135065839(dwarf)X
1350661047(extensions)X
1350671405(\(egcs-1.1.2)X
1350681782(extensions\))X
1350693 f
1350702219(.)X
1350712325(.)X
1350722431(.)X
1350732537(.)X
1350742643(.)X
1350752749(.)X
1350762855(.)X
1350772961(.)X
1350783067(.)X
1350793173(.)X
1350803279(.)X
1350813385(.)X
1350823491(.)X
1350833597(.)X
1350843703(.)X
1350853809(.)X
1350861 f
1350873992(4)X
135088676 2208(4.1)N
135089856(DW_TAG_format_label)X
1350901905(0x4101)X
1350913 f
1350922219(.)X
1350932325(.)X
1350942431(.)X
1350952537(.)X
1350962643(.)X
1350972749(.)X
1350982855(.)X
1350992961(.)X
1351003067(.)X
1351013173(.)X
1351023279(.)X
1351033385(.)X
1351043491(.)X
1351053597(.)X
1351063703(.)X
1351073809(.)X
1351081 f
1351093992(4)X
135110676 2304(4.2)N
135111856(DW_TAG_function_template)X
1351121978(0x4102)X
1351133 f
1351142325(.)X
1351152431(.)X
1351162537(.)X
1351172643(.)X
1351182749(.)X
1351192855(.)X
1351202961(.)X
1351213067(.)X
1351223173(.)X
1351233279(.)X
1351243385(.)X
1351253491(.)X
1351263597(.)X
1351273703(.)X
1351283809(.)X
1351291 f
1351303992(4)X
135131676 2400(4.3)N
135132856(DW_TAG_class_template)X
1351331927(0x4103)X
1351343 f
1351352219(.)X
1351362325(.)X
1351372431(.)X
1351382537(.)X
1351392643(.)X
1351402749(.)X
1351412855(.)X
1351422961(.)X
1351433067(.)X
1351443173(.)X
1351453279(.)X
1351463385(.)X
1351473491(.)X
1351483597(.)X
1351493703(.)X
1351503809(.)X
1351511 f
1351523992(4)X
135153676 2496(4.4)N
135154856(DW_AT_sf_names)X
1351552000(0x2101)X
1351563 f
1351572325(.)X
1351582431(.)X
1351592537(.)X
1351602643(.)X
1351612749(.)X
1351622855(.)X
1351632961(.)X
1351643067(.)X
1351653173(.)X
1351663279(.)X
1351673385(.)X
1351683491(.)X
1351693597(.)X
1351703703(.)X
1351713809(.)X
1351721 f
1351733992(4)X
135174676 2592(4.5)N
135175856(DW_AT_src_info)X
1351761960(0x2102)X
1351773 f
1351782325(.)X
1351792431(.)X
1351802537(.)X
1351812643(.)X
1351822749(.)X
1351832855(.)X
1351842961(.)X
1351853067(.)X
1351863173(.)X
1351873279(.)X
1351883385(.)X
1351893491(.)X
1351903597(.)X
1351913703(.)X
1351923809(.)X
1351931 f
1351943992(4)X
135195676 2688(4.6)N
135196856(DW_AT_mac_info)X
1351972000(0x2103)X
1351983 f
1351992325(.)X
1352002431(.)X
1352012537(.)X
1352022643(.)X
1352032749(.)X
1352042855(.)X
1352052961(.)X
1352063067(.)X
1352073173(.)X
1352083279(.)X
1352093385(.)X
1352103491(.)X
1352113597(.)X
1352123703(.)X
1352133809(.)X
1352141 f
1352153992(4)X
135216676 2784(4.7)N
135217856(DW_AT_src_coords)X
1352182005(0x2104)X
1352193 f
1352202325(.)X
1352212431(.)X
1352222537(.)X
1352232643(.)X
1352242749(.)X
1352252855(.)X
1352262961(.)X
1352273067(.)X
1352283173(.)X
1352293279(.)X
1352303385(.)X
1352313491(.)X
1352323597(.)X
1352333703(.)X
1352343809(.)X
1352351 f
1352363992(4)X
135237676 2880(4.8)N
135238856(DW_AT_body_begin)X
1352392035(0x2105)X
1352403 f
1352412325(.)X
1352422431(.)X
1352432537(.)X
1352442643(.)X
1352452749(.)X
1352462855(.)X
1352472961(.)X
1352483067(.)X
1352493173(.)X
1352503279(.)X
1352513385(.)X
1352523491(.)X
1352533597(.)X
1352543703(.)X
1352553809(.)X
1352561 f
1352573992(4)X
135258676 2976(4.9)N
135259856(DW_AT_body_end)X
1352602013(0x2106)X
1352613 f
1352622325(.)X
1352632431(.)X
1352642537(.)X
1352652643(.)X
1352662749(.)X
1352672855(.)X
1352682961(.)X
1352693067(.)X
1352703173(.)X
1352713279(.)X
1352723385(.)X
1352733491(.)X
1352743597(.)X
1352753703(.)X
1352763809(.)X
1352771 f
1352783992(4)X
135279576 3120(5.)N
135280676(egcs)X
135281839(.eh_frame)X
1352821183(\(non-sgi\))X
1352831497(\(egcs-1.1.2)X
1352841874(extensions\))X
1352853 f
1352862325(.)X
1352872431(.)X
1352882537(.)X
1352892643(.)X
1352902749(.)X
1352912855(.)X
1352922961(.)X
1352933067(.)X
1352943173(.)X
1352953279(.)X
1352963385(.)X
1352973491(.)X
1352983597(.)X
1352993703(.)X
1353003809(.)X
1353011 f
1353023992(4)X
135303676 3216(5.1)N
135304856(CIE_id)X
1353051107(0)X
1353063 f
1353071265(.)X
1353081371(.)X
1353091477(.)X
1353101583(.)X
1353111689(.)X
1353121795(.)X
1353131901(.)X
1353142007(.)X
1353152113(.)X
1353162219(.)X
1353172325(.)X
1353182431(.)X
1353192537(.)X
1353202643(.)X
1353212749(.)X
1353222855(.)X
1353232961(.)X
1353243067(.)X
1353253173(.)X
1353263279(.)X
1353273385(.)X
1353283491(.)X
1353293597(.)X
1353303703(.)X
1353313809(.)X
1353321 f
1353333992(4)X
135334676 3312(5.2)N
135335856(augmentation)X
1353361312(eh)X
1353373 f
1353381477(.)X
1353391583(.)X
1353401689(.)X
1353411795(.)X
1353421901(.)X
1353432007(.)X
1353442113(.)X
1353452219(.)X
1353462325(.)X
1353472431(.)X
1353482537(.)X
1353492643(.)X
1353502749(.)X
1353512855(.)X
1353522961(.)X
1353533067(.)X
1353543173(.)X
1353553279(.)X
1353563385(.)X
1353573491(.)X
1353583597(.)X
1353593703(.)X
1353603809(.)X
1353611 f
1353623992(5)X
135363676 3408(5.3)N
135364856(DW_CFA_GNU_window_save)X
1353651940(0x2d)X
1353663 f
1353672219(.)X
1353682325(.)X
1353692431(.)X
1353702537(.)X
1353712643(.)X
1353722749(.)X
1353732855(.)X
1353742961(.)X
1353753067(.)X
1353763173(.)X
1353773279(.)X
1353783385(.)X
1353793491(.)X
1353803597(.)X
1353813703(.)X
1353823809(.)X
1353831 f
1353843992(5)X
135385676 3504(5.4)N
135386856(DW_CFA_GNU_args_size)X
1353871838(0x2e)X
1353883 f
1353892113(.)X
1353902219(.)X
1353912325(.)X
1353922431(.)X
1353932537(.)X
1353942643(.)X
1353952749(.)X
1353962855(.)X
1353972961(.)X
1353983067(.)X
1353993173(.)X
1354003279(.)X
1354013385(.)X
1354023491(.)X
1354033597(.)X
1354043703(.)X
1354053809(.)X
1354061 f
1354073992(5)X
135408676 3600(5.5)N
135409856(__EXCEPTION_TABLE__)X
1354103 f
1354111901(.)X
1354122007(.)X
1354132113(.)X
1354142219(.)X
1354152325(.)X
1354162431(.)X
1354172537(.)X
1354182643(.)X
1354192749(.)X
1354202855(.)X
1354212961(.)X
1354223067(.)X
1354233173(.)X
1354243279(.)X
1354253385(.)X
1354263491(.)X
1354273597(.)X
1354283703(.)X
1354293809(.)X
1354301 f
1354313992(5)X
135432576 3744(6.)N
135433676(Interpretations)X
1354341164(of)X
1354351251(the)X
1354361369(DWARF)X
1354371678(V2)X
1354381796(spec)X
1354393 f
1354402007(.)X
1354412113(.)X
1354422219(.)X
1354432325(.)X
1354442431(.)X
1354452537(.)X
1354462643(.)X
1354472749(.)X
1354482855(.)X
1354492961(.)X
1354503067(.)X
1354513173(.)X
1354523279(.)X
1354533385(.)X
1354543491(.)X
1354553597(.)X
1354563703(.)X
1354573809(.)X
1354581 f
1354593992(5)X
135460676 3840(6.1)N
135461856(template)X
1354621152(TAG)X
1354631337(spellings)X
1354643 f
1354651689(.)X
1354661795(.)X
1354671901(.)X
1354682007(.)X
1354692113(.)X
1354702219(.)X
1354712325(.)X
1354722431(.)X
1354732537(.)X
1354742643(.)X
1354752749(.)X
1354762855(.)X
1354772961(.)X
1354783067(.)X
1354793173(.)X
1354803279(.)X
1354813385(.)X
1354823491(.)X
1354833597(.)X
1354843703(.)X
1354853809(.)X
1354861 f
1354873992(5)X
135488676 3936(6.2)N
135489856(DW_FORM_ref_addr)X
1354903 f
1354911689(.)X
1354921795(.)X
1354931901(.)X
1354942007(.)X
1354952113(.)X
1354962219(.)X
1354972325(.)X
1354982431(.)X
1354992537(.)X
1355002643(.)X
1355012749(.)X
1355022855(.)X
1355032961(.)X
1355043067(.)X
1355053173(.)X
1355063279(.)X
1355073385(.)X
1355083491(.)X
1355093597(.)X
1355103703(.)X
1355113809(.)X
1355121 f
1355133992(5)X
135514676 4032(6.3)N
135515856(.debug_macinfo)X
1355161395(in)X
1355171477(a)X
1355181533(debugger)X
1355193 f
1355201901(.)X
1355212007(.)X
1355222113(.)X
1355232219(.)X
1355242325(.)X
1355252431(.)X
1355262537(.)X
1355272643(.)X
1355282749(.)X
1355292855(.)X
1355302961(.)X
1355313067(.)X
1355323173(.)X
1355333279(.)X
1355343385(.)X
1355353491(.)X
1355363597(.)X
1355373703(.)X
1355383809(.)X
1355391 f
1355403992(5)X
135541676 4128(6.4)N
135542856(Section)X
1355431116(6.1.2)X
1355441296(Lookup)X
1355451565(by)X
1355461665(address)X
1355471926(problem)X
1355483 f
1355492325(.)X
1355502431(.)X
1355512537(.)X
1355522643(.)X
1355532749(.)X
1355542855(.)X
1355552961(.)X
1355563067(.)X
1355573173(.)X
1355583279(.)X
1355593385(.)X
1355603491(.)X
1355613597(.)X
1355623703(.)X
1355633809(.)X
1355641 f
1355653992(6)X
135566676 4224(6.5)N
135567856(Section)X
1355681116(5.10)X
1355691276(Subrange)X
1355701599(Type)X
1355711784(Entries)X
1355722031(problem)X
1355733 f
1355742431(.)X
1355752537(.)X
1355762643(.)X
1355772749(.)X
1355782855(.)X
1355792961(.)X
1355803067(.)X
1355813173(.)X
1355823279(.)X
1355833385(.)X
1355843491(.)X
1355853597(.)X
1355863703(.)X
1355873809(.)X
1355881 f
1355893992(6)X
135590676 4320(6.6)N
135591856(Section)X
1355921116(5.5.6)X
1355931296(Class)X
1355941489(Template)X
1355951812(Instantiations)X
1355962263(problem)X
1355973 f
1355982643(.)X
1355992749(.)X
1356002855(.)X
1356012961(.)X
1356023067(.)X
1356033173(.)X
1356043279(.)X
1356053385(.)X
1356063491(.)X
1356073597(.)X
1356083703(.)X
1356093809(.)X
1356101 f
1356113992(6)X
135612676 4416(6.7)N
135613856(Section)X
1356141116(2.4.3.4)X
1356151376(#)X
1356161436(11.)X
1356171556(operator)X
1356181844(spelling)X
1356193 f
1356202219(.)X
1356212325(.)X
1356222431(.)X
1356232537(.)X
1356242643(.)X
1356252749(.)X
1356262855(.)X
1356272961(.)X
1356283067(.)X
1356293173(.)X
1356303279(.)X
1356313385(.)X
1356323491(.)X
1356333597(.)X
1356343703(.)X
1356353809(.)X
1356361 f
1356373992(6)X
135638676 4512(6.8)N
135639856(No)X
135640974(clear)X
1356411151(specification)X
1356421581(of)X
1356431668(C++)X
1356441831(static)X
1356452020(funcs)X
1356463 f
1356472325(.)X
1356482431(.)X
1356492537(.)X
1356502643(.)X
1356512749(.)X
1356522855(.)X
1356532961(.)X
1356543067(.)X
1356553173(.)X
1356563279(.)X
1356573385(.)X
1356583491(.)X
1356593597(.)X
1356603703(.)X
1356613809(.)X
1356621 f
1356633992(6)X
135664676 4608(6.9)N
135665856(Misspelling)X
1356661253(of)X
1356671340(DW_AT_const_value)X
1356683 f
1356692113(.)X
1356702219(.)X
1356712325(.)X
1356722431(.)X
1356732537(.)X
1356742643(.)X
1356752749(.)X
1356762855(.)X
1356772961(.)X
1356783067(.)X
1356793173(.)X
1356803279(.)X
1356813385(.)X
1356823491(.)X
1356833597(.)X
1356843703(.)X
1356853809(.)X
1356861 f
1356873992(6)X
135688676 4704(6.10)N
135689856(Mistake)X
1356901134(in)X
1356911216(Atribute)X
1356921503(Encodings)X
1356933 f
1356941901(.)X
1356952007(.)X
1356962113(.)X
1356972219(.)X
1356982325(.)X
1356992431(.)X
1357002537(.)X
1357012643(.)X
1357022749(.)X
1357032855(.)X
1357042961(.)X
1357053067(.)X
1357063173(.)X
1357073279(.)X
1357083385(.)X
1357093491(.)X
1357103597(.)X
1357113703(.)X
1357123809(.)X
1357131 f
1357143992(6)X
135715676 4800(6.11)N
135716856(DW_OP_bregx)X
1357173 f
1357181477(.)X
1357191583(.)X
1357201689(.)X
1357211795(.)X
1357221901(.)X
1357232007(.)X
1357242113(.)X
1357252219(.)X
1357262325(.)X
1357272431(.)X
1357282537(.)X
1357292643(.)X
1357302749(.)X
1357312855(.)X
1357322961(.)X
1357333067(.)X
1357343173(.)X
1357353279(.)X
1357363385(.)X
1357373491(.)X
1357383597(.)X
1357393703(.)X
1357403809(.)X
1357411 f
1357423992(6)X
135743576 4944(7.)N
135744676(MIPS)X
135745882(attributes)X
1357463 f
1357471265(.)X
1357481371(.)X
1357491477(.)X
1357501583(.)X
1357511689(.)X
1357521795(.)X
1357531901(.)X
1357542007(.)X
1357552113(.)X
1357562219(.)X
1357572325(.)X
1357582431(.)X
1357592537(.)X
1357602643(.)X
1357612749(.)X
1357622855(.)X
1357632961(.)X
1357643067(.)X
1357653173(.)X
1357663279(.)X
1357673385(.)X
1357683491(.)X
1357693597(.)X
1357703703(.)X
1357713809(.)X
1357721 f
1357733992(6)X
135774676 5040(7.1)N
135775856(DW_AT_MIPS_fde)X
1357763 f
1357771583(.)X
1357781689(.)X
1357791795(.)X
1357801901(.)X
1357812007(.)X
1357822113(.)X
1357832219(.)X
1357842325(.)X
1357852431(.)X
1357862537(.)X
1357872643(.)X
1357882749(.)X
1357892855(.)X
1357902961(.)X
1357913067(.)X
1357923173(.)X
1357933279(.)X
1357943385(.)X
1357953491(.)X
1357963597(.)X
1357973703(.)X
1357983809(.)X
1357991 f
1358003992(6)X
135801676 5136(7.2)N
135802856(DW_CFA_MIPS_advance_loc8)X
1358031913(0x1d)X
1358043 f
1358052219(.)X
1358062325(.)X
1358072431(.)X
1358082537(.)X
1358092643(.)X
1358102749(.)X
1358112855(.)X
1358122961(.)X
1358133067(.)X
1358143173(.)X
1358153279(.)X
1358163385(.)X
1358173491(.)X
1358183597(.)X
1358193703(.)X
1358203809(.)X
1358211 f
1358223992(7)X
135823676 5232(7.3)N
135824856(DW_TAG_MIPS_loop)X
1358251763(0x4081)X
1358263 f
1358272113(.)X
1358282219(.)X
1358292325(.)X
1358302431(.)X
1358312537(.)X
1358322643(.)X
1358332749(.)X
1358342855(.)X
1358352961(.)X
1358363067(.)X
1358373173(.)X
1358383279(.)X
1358393385(.)X
1358403491(.)X
1358413597(.)X
1358423703(.)X
1358433809(.)X
1358441 f
1358453992(7)X
135846676 5328(7.4)N
135847856(DW_AT_MIPS_loop_begin)X
1358481823(0x2002)X
1358493 f
1358502113(.)X
1358512219(.)X
1358522325(.)X
1358532431(.)X
1358542537(.)X
1358552643(.)X
1358562749(.)X
1358572855(.)X
1358582961(.)X
1358593067(.)X
1358603173(.)X
1358613279(.)X
1358623385(.)X
1358633491(.)X
1358643597(.)X
1358653703(.)X
1358663809(.)X
1358671 f
1358683992(7)X
135869676 5424(7.5)N
135870856(DW_AT_MIPS_tail_loop_begin)X
1358711945(0x2003)X
1358723 f
1358732325(.)X
1358742431(.)X
1358752537(.)X
1358762643(.)X
1358772749(.)X
1358782855(.)X
1358792961(.)X
1358803067(.)X
1358813173(.)X
1358823279(.)X
1358833385(.)X
1358843491(.)X
1358853597(.)X
1358863703(.)X
1358873809(.)X
1358881 f
1358893992(7)X
135890676 5520(7.6)N
135891856(DW_AT_MIPS_epilog_begin)X
1358921921(0x2004)X
1358933 f
1358942219(.)X
1358952325(.)X
1358962431(.)X
1358972537(.)X
1358982643(.)X
1358992749(.)X
1359002855(.)X
1359012961(.)X
1359023067(.)X
1359033173(.)X
1359043279(.)X
1359053385(.)X
1359063491(.)X
1359073597(.)X
1359083703(.)X
1359093809(.)X
1359101 f
1359113992(7)X
135912676 5616(7.7)N
135913856(DW_AT_MIPS_loop_unroll_factor)X
1359142044(0x2005)X
1359153 f
1359162431(.)X
1359172537(.)X
1359182643(.)X
1359192749(.)X
1359202855(.)X
1359212961(.)X
1359223067(.)X
1359233173(.)X
1359243279(.)X
1359253385(.)X
1359263491(.)X
1359273597(.)X
1359283703(.)X
1359293809(.)X
1359301 f
1359313992(7)X
135932676 5712(7.8)N
135933856(DW_AT_MIPS_software_pipeline_depth)X
1359342256(0x2006)X
1359353 f
1359362643(.)X
1359372749(.)X
1359382855(.)X
1359392961(.)X
1359403067(.)X
1359413173(.)X
1359423279(.)X
1359433385(.)X
1359443491(.)X
1359453597(.)X
1359463703(.)X
1359473809(.)X
1359481 f
1359493992(7)X
135950676 5808(7.9)N
135951856(DW_AT_MIPS_linkage_name)X
1359522193(0x2007)X
1359533 f
1359542537(.)X
1359552643(.)X
1359562749(.)X
1359572855(.)X
1359582961(.)X
1359593067(.)X
1359603173(.)X
1359613279(.)X
1359623385(.)X
1359633491(.)X
1359643597(.)X
1359653703(.)X
1359663809(.)X
1359671 f
1359683992(7)X
1359692246 6164(-)N
1359702293(i)X
1359712335(-)X
135972
13597319 p
135974%%Page: 19 19
13597510 s 0 xH 0 xS 1 f
135976676 768(7.10)N
135977856(DW_AT_MIPS_stride)X
1359781821(0x2008)X
1359793 f
1359802113(.)X
1359812219(.)X
1359822325(.)X
1359832431(.)X
1359842537(.)X
1359852643(.)X
1359862749(.)X
1359872855(.)X
1359882961(.)X
1359893067(.)X
1359903173(.)X
1359913279(.)X
1359923385(.)X
1359933491(.)X
1359943597(.)X
1359953703(.)X
1359963809(.)X
1359971 f
1359983992(7)X
135999676 864(7.11)N
136000856(DW_AT_MIPS_abstract_name)X
1360012147(0x2009)X
1360023 f
1360032431(.)X
1360042537(.)X
1360052643(.)X
1360062749(.)X
1360072855(.)X
1360082961(.)X
1360093067(.)X
1360103173(.)X
1360113279(.)X
1360123385(.)X
1360133491(.)X
1360143597(.)X
1360153703(.)X
1360163809(.)X
1360171 f
1360183992(8)X
136019676 960(7.12)N
136020856(DW_AT_MIPS_clone_origin)X
1360212108(0x200a)X
1360223 f
1360232431(.)X
1360242537(.)X
1360252643(.)X
1360262749(.)X
1360272855(.)X
1360282961(.)X
1360293067(.)X
1360303173(.)X
1360313279(.)X
1360323385(.)X
1360333491(.)X
1360343597(.)X
1360353703(.)X
1360363809(.)X
1360371 f
1360383992(8)X
136039676 1056(7.13)N
136040856(DW_AT_MIPS_has_inlines)X
1360412063(0x200b)X
1360423 f
1360432431(.)X
1360442537(.)X
1360452643(.)X
1360462749(.)X
1360472855(.)X
1360482961(.)X
1360493067(.)X
1360503173(.)X
1360513279(.)X
1360523385(.)X
1360533491(.)X
1360543597(.)X
1360553703(.)X
1360563809(.)X
1360571 f
1360583992(8)X
136059676 1152(7.14)N
136060856(DW_AT_MIPS_stride_byte)X
1360612119(0x200c)X
1360623 f
1360632431(.)X
1360642537(.)X
1360652643(.)X
1360662749(.)X
1360672855(.)X
1360682961(.)X
1360693067(.)X
1360703173(.)X
1360713279(.)X
1360723385(.)X
1360733491(.)X
1360743597(.)X
1360753703(.)X
1360763809(.)X
1360771 f
1360783992(9)X
136079676 1248(7.15)N
136080856(DW_AT_MIPS_stride_elem)X
1360812137(0x200d)X
1360823 f
1360832431(.)X
1360842537(.)X
1360852643(.)X
1360862749(.)X
1360872855(.)X
1360882961(.)X
1360893067(.)X
1360903173(.)X
1360913279(.)X
1360923385(.)X
1360933491(.)X
1360943597(.)X
1360953703(.)X
1360963809(.)X
1360971 f
1360983992(9)X
136099676 1344(7.16)N
136100856(DW_AT_MIPS_ptr_dopetype)X
1361012166(0x200e)X
1361023 f
1361032537(.)X
1361042643(.)X
1361052749(.)X
1361062855(.)X
1361072961(.)X
1361083067(.)X
1361093173(.)X
1361103279(.)X
1361113385(.)X
1361123491(.)X
1361133597(.)X
1361143703(.)X
1361153809(.)X
1361161 f
1361173992(9)X
136118676 1440(7.17)N
136119856(DW_AT_MIPS_allocatable_dopetype)X
1361202265(0x200f)X
1361213 f
1361222537(.)X
1361232643(.)X
1361242749(.)X
1361252855(.)X
1361262961(.)X
1361273067(.)X
1361283173(.)X
1361293279(.)X
1361303385(.)X
1361313491(.)X
1361323597(.)X
1361333703(.)X
1361343809(.)X
1361351 f
1361363992(9)X
136137676 1536(7.18)N
136138856(DW_AT_MIPS_assumed_shape_dopetype)X
1361392376(0x2010)X
1361403 f
1361412749(.)X
1361422855(.)X
1361432961(.)X
1361443067(.)X
1361453173(.)X
1361463279(.)X
1361473385(.)X
1361483491(.)X
1361493597(.)X
1361503703(.)X
1361513809(.)X
1361521 f
1361533992(9)X
136154676 1632(7.19)N
136155856(Overview)X
1361561193(of)X
1361571280(debugger)X
1361581599(use)X
1361591726(of)X
1361601813(dope)X
1361611989(vectors)X
1361623 f
1361632325(.)X
1361642431(.)X
1361652537(.)X
1361662643(.)X
1361672749(.)X
1361682855(.)X
1361692961(.)X
1361703067(.)X
1361713173(.)X
1361723279(.)X
1361733385(.)X
1361743491(.)X
1361753597(.)X
1361763703(.)X
1361773809(.)X
1361781 f
1361793992(9)X
136180676 1728(7.20)N
136181856(Example)X
1361821161(f90)X
1361831288(code)X
1361841460(for)X
1361851574(use)X
1361861701(in)X
1361871783(explanation)X
1361883 f
1361892219(.)X
1361902325(.)X
1361912431(.)X
1361922537(.)X
1361932643(.)X
1361942749(.)X
1361952855(.)X
1361962961(.)X
1361973067(.)X
1361983173(.)X
1361993279(.)X
1362003385(.)X
1362013491(.)X
1362023597(.)X
1362033703(.)X
1362043809(.)X
1362051 f
1362063992(9)X
136207676 1824(7.21)N
136208856(the)X
136209974(problem)X
1362101261(with)X
1362111423(standard)X
1362121715(dwarf)X
1362131923(and)X
1362142059(this)X
1362152194(example)X
1362163 f
1362172537(.)X
1362182643(.)X
1362192749(.)X
1362202855(.)X
1362212961(.)X
1362223067(.)X
1362233173(.)X
1362243279(.)X
1362253385(.)X
1362263491(.)X
1362273597(.)X
1362283703(.)X
1362293809(.)X
1362301 f
1362313952(10)X
136232676 1920(7.22)N
136233856(A)X
136234934(simplified)X
1362351278(sketch)X
1362361503(of)X
1362371590(the)X
1362381708(dwarf)X
1362391916(information)X
1362403 f
1362412431(.)X
1362422537(.)X
1362432643(.)X
1362442749(.)X
1362452855(.)X
1362462961(.)X
1362473067(.)X
1362483173(.)X
1362493279(.)X
1362503385(.)X
1362513491(.)X
1362523597(.)X
1362533703(.)X
1362543809(.)X
1362551 f
1362563952(10)X
136257676 2016(7.23)N
136258856(A)X
136259934(simplified)X
1362601278(sketch)X
1362611503(of)X
1362621590(the)X
1362631708(dope)X
1362641884(vector)X
1362652105(information)X
1362663 f
1362672537(.)X
1362682643(.)X
1362692749(.)X
1362702855(.)X
1362712961(.)X
1362723067(.)X
1362733173(.)X
1362743279(.)X
1362753385(.)X
1362763491(.)X
1362773597(.)X
1362783703(.)X
1362793809(.)X
1362801 f
1362813952(10)X
136282676 2112(7.24)N
136283856(The)X
1362841001(dwarf)X
1362851209(information)X
1362863 f
1362871689(.)X
1362881795(.)X
1362891901(.)X
1362902007(.)X
1362912113(.)X
1362922219(.)X
1362932325(.)X
1362942431(.)X
1362952537(.)X
1362962643(.)X
1362972749(.)X
1362982855(.)X
1362992961(.)X
1363003067(.)X
1363013173(.)X
1363023279(.)X
1363033385(.)X
1363043491(.)X
1363053597(.)X
1363063703(.)X
1363073809(.)X
1363081 f
1363093952(11)X
136310676 2208(7.25)N
136311856(The)X
1363121001(dope)X
1363131177(vector)X
1363141398(structure)X
1363151699(details)X
1363163 f
1363172007(.)X
1363182113(.)X
1363192219(.)X
1363202325(.)X
1363212431(.)X
1363222537(.)X
1363232643(.)X
1363242749(.)X
1363252855(.)X
1363262961(.)X
1363273067(.)X
1363283173(.)X
1363293279(.)X
1363303385(.)X
1363313491(.)X
1363323597(.)X
1363333703(.)X
1363343809(.)X
1363351 f
1363363952(14)X
136337676 2304(7.26)N
136338856(DW_AT_MIPS_assumed_size)X
1363391984(0x2011)X
1363403 f
1363412325(.)X
1363422431(.)X
1363432537(.)X
1363442643(.)X
1363452749(.)X
1363462855(.)X
1363472961(.)X
1363483067(.)X
1363493173(.)X
1363503279(.)X
1363513385(.)X
1363523491(.)X
1363533597(.)X
1363543703(.)X
1363553809(.)X
1363561 f
1363573952(14)X
136358576 2448(8.)N
136359676(Line)X
136360843(information)X
1363611241(and)X
1363621377(Source)X
1363631620(Position)X
1363643 f
1363652007(.)X
1363662113(.)X
1363672219(.)X
1363682325(.)X
1363692431(.)X
1363702537(.)X
1363712643(.)X
1363722749(.)X
1363732855(.)X
1363742961(.)X
1363753067(.)X
1363763173(.)X
1363773279(.)X
1363783385(.)X
1363793491(.)X
1363803597(.)X
1363813703(.)X
1363823809(.)X
1363831 f
1363843952(15)X
136385676 2544(8.1)N
136386856(Definition)X
1363871205(of)X
1363881292(Statement)X
1363893 f
1363901689(.)X
1363911795(.)X
1363921901(.)X
1363932007(.)X
1363942113(.)X
1363952219(.)X
1363962325(.)X
1363972431(.)X
1363982537(.)X
1363992643(.)X
1364002749(.)X
1364012855(.)X
1364022961(.)X
1364033067(.)X
1364043173(.)X
1364053279(.)X
1364063385(.)X
1364073491(.)X
1364083597(.)X
1364093703(.)X
1364103809(.)X
1364111 f
1364123952(15)X
136413676 2640(8.2)N
136414856(Finding)X
1364151124(The)X
1364161269(First)X
1364171435(User)X
1364181607(Code)X
1364191796(in)X
1364201878(a)X
1364211934(Function)X
1364223 f
1364232325(.)X
1364242431(.)X
1364252537(.)X
1364262643(.)X
1364272749(.)X
1364282855(.)X
1364292961(.)X
1364303067(.)X
1364313173(.)X
1364323279(.)X
1364333385(.)X
1364343491(.)X
1364353597(.)X
1364363703(.)X
1364373809(.)X
1364381 f
1364393952(15)X
136440676 2736(8.3)N
136441856(Using)X
1364421067(debug_frame)X
1364431511(Information)X
1364441914(to)X
1364451996(find)X
1364462145(first)X
1364472294(user)X
1364482448(statement)X
1364493 f
1364502855(.)X
1364512961(.)X
1364523067(.)X
1364533173(.)X
1364543279(.)X
1364553385(.)X
1364563491(.)X
1364573597(.)X
1364583703(.)X
1364593809(.)X
1364601 f
1364613952(16)X
136462676 2832(8.4)N
136463856(Debugger)X
1364641193(Use)X
1364651338(Of)X
1364661443(Source)X
1364671686(Position)X
1364683 f
1364692007(.)X
1364702113(.)X
1364712219(.)X
1364722325(.)X
1364732431(.)X
1364742537(.)X
1364752643(.)X
1364762749(.)X
1364772855(.)X
1364782961(.)X
1364793067(.)X
1364803173(.)X
1364813279(.)X
1364823385(.)X
1364833491(.)X
1364843597(.)X
1364853703(.)X
1364863809(.)X
1364871 f
1364883952(16)X
136489576 2976(9.)N
136490676(Known)X
136491932(Bugs)X
1364923 f
1364931159(.)X
1364941265(.)X
1364951371(.)X
1364961477(.)X
1364971583(.)X
1364981689(.)X
1364991795(.)X
1365001901(.)X
1365012007(.)X
1365022113(.)X
1365032219(.)X
1365042325(.)X
1365052431(.)X
1365062537(.)X
1365072643(.)X
1365082749(.)X
1365092855(.)X
1365102961(.)X
1365113067(.)X
1365123173(.)X
1365133279(.)X
1365143385(.)X
1365153491(.)X
1365163597(.)X
1365173703(.)X
1365183809(.)X
1365191 f
1365203952(16)X
1365212235 6164(-)N
1365222282(ii)X
1365232346(-)X
136524
13652520 p
136526%%Page: 20 20
13652710 s 0 xH 0 xS 1 f
1365283 f
13652912 s
1365301462 576(MIPS)N
1365311726(Extensions)X
1365322192(to)X
1365332296(DWARF)X
1365342682(Version)X
1365353026(2.0)X
1365362 f
13653711 s
1365381669 720(Silicon)N
1365391937(Graphics)X
1365402286(Computer)X
1365412660(Systems)X
13654210 s
1365432115 1152(ABSTRACT)N
1365441 f
136545576 1392(This)N
136546755(document)X
1365471108(describes)X
1365481444(the)X
1365491579(MIPS/Silicon)X
1365502050(Graphics)X
1365512377(extensions)X
1365522752(to)X
1365532851(the)X
1365542987("DWARF)X
1365553347(Information)X
1365563768(Format")X
136557576 1488(\(version)N
136558859(2.0.0)X
1365591039(dated)X
1365601233(July)X
1365611386(27,)X
1365621506(1993\).)X
136563576 1632(Rather)N
136564810(than)X
136565968(alter)X
1365661131(the)X
1365671249(base)X
1365681412(documents)X
1365691779(to)X
1365701861(describe)X
1365712149(the)X
1365722267(extensions)X
1365732625(we)X
1365742739(provide)X
1365753004(this)X
1365763139(separate)X
1365773423(document.)X
136578576 1776(The)N
136579721(extensions)X
1365801079(documented)X
1365811491(here)X
1365821650(are)X
1365831769(subject)X
1365842016(to)X
1365852098(change.)X
136586576 1920(It)N
136587645(also)X
136588794(describes)X
1365891113(known)X
1365901351(bugs)X
1365911522(resulting)X
1365921822(in)X
1365931904(incorrect)X
1365942210(dwarf)X
1365952418(usage.)X
136596576 2064(rev)N
136597699(1.17,)X
136598879(29)X
136599979(Aug)X
1366001137(2001)X
136601
13660221 p
136603%%Page: 21 21
13660410 s 0 xH 0 xS 1 f
136605
13660621 p
136607%%Trailer
136608xt
136609
136610xs
136611��0707010001ad950000812400011e740000000a0000000140206828000007a5000000660000000000000000000000000000001500000000libdwarf/pro_alloc.c��/*
136612
136613  Copyright (C) 2000,2004 Silicon Graphics, Inc.  All Rights Reserved.
136614
136615  This program is free software; you can redistribute it and/or modify it
136616  under the terms of version 2.1 of the GNU Lesser General Public License
136617  as published by the Free Software Foundation.
136618
136619  This program is distributed in the hope that it would be useful, but
136620  WITHOUT ANY WARRANTY; without even the implied warranty of
136621  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
136622
136623  Further, this software is distributed without any warranty that it is
136624  free of the rightful claim of any third person regarding infringement
136625  or the like.  Any license provided herein, whether implied or
136626  otherwise, applies only to this software file.  Patent licenses, if
136627  any, provided herein do not apply to combinations of this program with
136628  other software, or any other product whatsoever.
136629
136630  You should have received a copy of the GNU Lesser General Public
136631  License along with this program; if not, write the Free Software
136632  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
136633  USA.
136634
136635  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
136636  Mountain View, CA 94043, or:
136637
136638  http://www.sgi.com
136639
136640  For further information regarding this notice, see:
136641
136642  http://oss.sgi.com/projects/GenInfo/NoticeExplan
136643
136644*/
136645
136646
136647
136648#include "config.h"
136649#include "dwarf_incl.h"
136650#include <stdlib.h>
136651
136652/*
136653	The allocator wants to know which region
136654	this is to be in so it can allocate the new space
136655	with respect to the right region.
136656*/
136657 /*ARGSUSED*/
136658    Dwarf_Ptr _dwarf_p_get_alloc(Dwarf_P_Debug dbg, Dwarf_Unsigned size)
136659{
136660    void *sp;
136661
136662    sp = malloc(size);
136663    memset(sp,0, (int) size);
136664    return sp;
136665}
136666
136667
136668 /*ARGSUSED*/ void
136669dwarf_p_dealloc(void *space, Dwarf_Unsigned typ)
136670{
136671    free(space);
136672    return;
136673}
136674
136675
136676/* Essentially a stub for now. */
136677 /*ARGSUSED*/ void
136678_dwarf_p_dealloc(Dwarf_P_Debug dbg, Dwarf_Small * ptr)
136679{
136680    dwarf_p_dealloc(ptr, DW_DLA_STRING);
136681}
136682���0707010001ad960000812400011e740000000a0000000140206828000005a4000000660000000000000000000000000000001500000000libdwarf/pro_alloc.h��/*
136683
136684  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
136685
136686  This program is free software; you can redistribute it and/or modify it
136687  under the terms of version 2.1 of the GNU Lesser General Public License
136688  as published by the Free Software Foundation.
136689
136690  This program is distributed in the hope that it would be useful, but
136691  WITHOUT ANY WARRANTY; without even the implied warranty of
136692  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
136693
136694  Further, this software is distributed without any warranty that it is
136695  free of the rightful claim of any third person regarding infringement
136696  or the like.  Any license provided herein, whether implied or
136697  otherwise, applies only to this software file.  Patent licenses, if
136698  any, provided herein do not apply to combinations of this program with
136699  other software, or any other product whatsoever.
136700
136701  You should have received a copy of the GNU Lesser General Public
136702  License along with this program; if not, write the Free Software
136703  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
136704  USA.
136705
136706  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
136707  Mountain View, CA 94043, or:
136708
136709  http://www.sgi.com
136710
136711  For further information regarding this notice, see:
136712
136713  http://oss.sgi.com/projects/GenInfo/NoticeExplan
136714
136715*/
136716
136717
136718
136719Dwarf_Ptr _dwarf_p_get_alloc(Dwarf_P_Debug, Dwarf_Unsigned);
136720
136721void _dwarf_p_dealloc(Dwarf_P_Debug dbg, Dwarf_Small * ptr);
1367220707010001ad970000812400011e740000000a00000001402068270000257e000000660000000000000000000000000000001600000000libdwarf/pro_arange.c�/*
136723
136724  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
136725
136726  This program is free software; you can redistribute it and/or modify it
136727  under the terms of version 2.1 of the GNU Lesser General Public License
136728  as published by the Free Software Foundation.
136729
136730  This program is distributed in the hope that it would be useful, but
136731  WITHOUT ANY WARRANTY; without even the implied warranty of
136732  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
136733
136734  Further, this software is distributed without any warranty that it is
136735  free of the rightful claim of any third person regarding infringement
136736  or the like.  Any license provided herein, whether implied or
136737  otherwise, applies only to this software file.  Patent licenses, if
136738  any, provided herein do not apply to combinations of this program with
136739  other software, or any other product whatsoever.
136740
136741  You should have received a copy of the GNU Lesser General Public
136742  License along with this program; if not, write the Free Software
136743  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
136744  USA.
136745
136746  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
136747  Mountain View, CA 94043, or:
136748
136749  http://www.sgi.com
136750
136751  For further information regarding this notice, see:
136752
136753  http://oss.sgi.com/projects/GenInfo/NoticeExplan
136754
136755*/
136756
136757
136758
136759#include "config.h"
136760#include "libdwarfdefs.h"
136761#include <stdio.h>
136762#include <string.h>
136763#ifdef HAVE_ELFACCESS_H
136764#include <elfaccess.h>
136765#endif
136766#include "pro_incl.h"
136767#include "pro_arange.h"
136768#include "pro_section.h"
136769#include "pro_reloc.h"
136770
136771
136772
136773/*
136774    This function adds another address range
136775    to the list of address ranges for the
136776    given Dwarf_P_Debug.  It returns 0 on error,
136777    and 1 otherwise.
136778*/
136779Dwarf_Unsigned
136780dwarf_add_arange(Dwarf_P_Debug dbg,
136781		 Dwarf_Addr begin_address,
136782		 Dwarf_Unsigned length,
136783		 Dwarf_Signed symbol_index, Dwarf_Error * error)
136784{
136785    return dwarf_add_arange_b(dbg, begin_address, length, symbol_index,
136786			      /* end_symbol_index */ 0,
136787			      /* offset_from_end_sym */ 0,
136788			      error);
136789}
136790
136791/*
136792    This function adds another address range
136793    to the list of address ranges for the
136794    given Dwarf_P_Debug.  It returns 0 on error,
136795    and 1 otherwise.
136796*/
136797Dwarf_Unsigned
136798dwarf_add_arange_b(Dwarf_P_Debug dbg,
136799		   Dwarf_Addr begin_address,
136800		   Dwarf_Unsigned length,
136801		   Dwarf_Unsigned symbol_index,
136802		   Dwarf_Unsigned end_symbol_index,
136803		   Dwarf_Addr offset_from_end_sym, Dwarf_Error * error)
136804{
136805    Dwarf_P_Arange arange;
136806
136807    if (dbg == NULL) {
136808	_dwarf_p_error(NULL, error, DW_DLE_DBG_NULL);
136809	return (0);
136810    }
136811
136812    arange = (Dwarf_P_Arange)
136813	_dwarf_p_get_alloc(dbg, sizeof(struct Dwarf_P_Arange_s));
136814    if (arange == NULL) {
136815	_dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
136816	return (0);
136817    }
136818
136819    arange->ag_begin_address = begin_address;
136820    arange->ag_length = length;
136821    arange->ag_symbol_index = symbol_index;
136822    arange->ag_end_symbol_index = end_symbol_index;
136823    arange->ag_end_symbol_offset = offset_from_end_sym;
136824
136825    if (dbg->de_arange == NULL)
136826	dbg->de_arange = dbg->de_last_arange = arange;
136827    else {
136828	dbg->de_last_arange->ag_next = arange;
136829	dbg->de_last_arange = arange;
136830    }
136831    dbg->de_arange_count++;
136832
136833    return (1);
136834}
136835
136836
136837int
136838_dwarf_transform_arange_to_disk(Dwarf_P_Debug dbg, Dwarf_Error * error)
136839{
136840    /* Total num of bytes in .debug_aranges section. */
136841    Dwarf_Unsigned arange_num_bytes;
136842
136843    /*
136844       Adjustment to align the start of the actual address ranges on a
136845       boundary aligned with twice the address size. */
136846    Dwarf_Small remainder;
136847
136848    /* Total number of bytes excluding the length field. */
136849    Dwarf_Unsigned adjusted_length;
136850
136851    /* Points to first byte of .debug_aranges buffer. */
136852    Dwarf_Small *arange;
136853
136854    /* Fills in the .debug_aranges buffer. */
136855    Dwarf_Small *arange_ptr;
136856
136857    /* Scans the list of address ranges provided by user. */
136858    Dwarf_P_Arange given_arange;
136859
136860    /* Used to fill in 0. */
136861    const Dwarf_Signed big_zero = 0;
136862
136863    int extension_word_size = dbg->de_64bit_extension ? 4 : 0;
136864    int uword_size = dbg->de_offset_size;
136865    int upointer_size = dbg->de_pointer_size;
136866    int res;
136867
136868
136869    /* ***** BEGIN CODE ***** */
136870
136871    /* Size of the .debug_aranges section header. */
136872    arange_num_bytes = extension_word_size + uword_size +	/* Size
136873								   of
136874								   length
136875								   field.
136876								 */
136877	sizeof(Dwarf_Half) +	/* Size of version field. */
136878	uword_size +		/* Size of .debug_info offset. */
136879	sizeof(Dwarf_Small) +	/* Size of address size field. */
136880	sizeof(Dwarf_Small);	/* Size of segment size field. */
136881
136882    /*
136883       Adjust the size so that the set of aranges begins on a boundary
136884       that aligned with twice the address size.  This is a Libdwarf
136885       requirement. */
136886    remainder = arange_num_bytes % (2 * upointer_size);
136887    if (remainder != 0)
136888	arange_num_bytes += (2 * upointer_size) - remainder;
136889
136890
136891    /* Add the bytes for the actual address ranges. */
136892    arange_num_bytes += upointer_size * 2 * (dbg->de_arange_count + 1);
136893
136894    GET_CHUNK(dbg, dbg->de_elf_sects[DEBUG_ARANGES],
136895	      arange, (unsigned long) arange_num_bytes, error);
136896    arange_ptr = arange;
136897    if (arange == NULL) {
136898	_dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
136899	return (0);
136900    }
136901    if (extension_word_size) {
136902	Dwarf_Word x = DISTINGUISHED_VALUE;
136903
136904	WRITE_UNALIGNED(dbg, (void *) arange_ptr,
136905			(const void *) &x,
136906			sizeof(x), extension_word_size);
136907	arange_ptr += extension_word_size;
136908    }
136909
136910    /* Write the total length of .debug_aranges section. */
136911    adjusted_length = arange_num_bytes - uword_size
136912	- extension_word_size;
136913    {
136914	Dwarf_Unsigned du = adjusted_length;
136915
136916	WRITE_UNALIGNED(dbg, (void *) arange_ptr,
136917			(const void *) &du, sizeof(du), uword_size);
136918	arange_ptr += uword_size;
136919    }
136920
136921    /* Write the version as 2 bytes. */
136922    {
136923	Dwarf_Half verstamp = CURRENT_VERSION_STAMP;
136924
136925	WRITE_UNALIGNED(dbg, (void *) arange_ptr,
136926			(const void *) &verstamp,
136927			sizeof(verstamp), sizeof(Dwarf_Half));
136928	arange_ptr += sizeof(Dwarf_Half);
136929    }
136930
136931
136932    /* Write the .debug_info offset.  This is always 0. */
136933    WRITE_UNALIGNED(dbg, (void *) arange_ptr,
136934		    (const void *) &big_zero,
136935		    sizeof(big_zero), uword_size);
136936    arange_ptr += uword_size;
136937
136938    {
136939	unsigned long count = dbg->de_arange_count + 1;
136940	int res;
136941
136942	if (dbg->de_reloc_pair) {
136943	    count = (3 * dbg->de_arange_count) + 1;
136944	}
136945	/* the following is a small optimization: not needed for
136946	   correctness */
136947	res = _dwarf_pro_pre_alloc_n_reloc_slots(dbg,
136948						 DEBUG_ARANGES, count);
136949	if (res != DW_DLV_OK) {
136950	    {
136951		_dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
136952		return (0);
136953	    }
136954	}
136955    }
136956
136957    /* reloc for .debug_info */
136958    res = dbg->de_reloc_name(dbg,
136959			     DEBUG_ARANGES,
136960			     extension_word_size +
136961			     uword_size + sizeof(Dwarf_Half),
136962			     dbg->de_sect_name_idx[DEBUG_INFO],
136963			     dwarf_drt_data_reloc, uword_size);
136964
136965    /* Write the size of addresses. */
136966    *arange_ptr = dbg->de_pointer_size;
136967    arange_ptr++;
136968
136969    /*
136970       Write the size of segment addresses. This is zero for MIPS
136971       architectures. */
136972    *arange_ptr = 0;
136973    arange_ptr++;
136974
136975    /*
136976       Skip over the padding to align the start of the actual address
136977       ranges to twice the address size. */
136978    if (remainder != 0)
136979	arange_ptr += (2 * upointer_size) - remainder;
136980
136981
136982
136983
136984
136985    /* The arange address, length are pointer-size fields of the target
136986       machine. */
136987    for (given_arange = dbg->de_arange; given_arange != NULL;
136988	 given_arange = given_arange->ag_next) {
136989
136990	/* Write relocation record for beginning of address range. */
136991	res = dbg->de_reloc_name(dbg, DEBUG_ARANGES, arange_ptr - arange,	/* r_offset */
136992				 (long) given_arange->ag_symbol_index,
136993				 dwarf_drt_data_reloc, upointer_size);
136994	if (res != DW_DLV_OK) {
136995	    {
136996		_dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
136997		return (0);
136998	    }
136999	}
137000
137001	/* Copy beginning address of range. */
137002	WRITE_UNALIGNED(dbg, (void *) arange_ptr,
137003			(const void *) &given_arange->ag_begin_address,
137004			sizeof(given_arange->ag_begin_address),
137005			upointer_size);
137006	arange_ptr += upointer_size;
137007
137008	if (dbg->de_reloc_pair &&
137009	    given_arange->ag_end_symbol_index != 0 &&
137010	    given_arange->ag_length == 0) {
137011	    /* symbolic reloc, need reloc for length What if we really
137012	       know the length? If so, should use the other part of
137013	       'if'. */
137014	    Dwarf_Unsigned val;
137015
137016	    res = dbg->de_reloc_pair(dbg, DEBUG_ARANGES, arange_ptr - arange,	/* r_offset
137017										 */
137018				     given_arange->ag_symbol_index,
137019				     given_arange->ag_end_symbol_index,
137020				     dwarf_drt_first_of_length_pair,
137021				     upointer_size);
137022	    if (res != DW_DLV_OK) {
137023		{
137024		    _dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
137025		    return (0);
137026		}
137027	    }
137028
137029	    /* arrange pre-calc so assem text can do .word end - begin
137030	       + val (gets val from stream) */
137031	    val = given_arange->ag_end_symbol_offset -
137032		given_arange->ag_begin_address;
137033	    WRITE_UNALIGNED(dbg, (void *) arange_ptr,
137034			    (const void *) &val,
137035			    sizeof(val), upointer_size);
137036	    arange_ptr += upointer_size;
137037
137038	} else {
137039	    /* plain old length to copy, no relocation at all */
137040	    WRITE_UNALIGNED(dbg, (void *) arange_ptr,
137041			    (const void *) &given_arange->ag_length,
137042			    sizeof(given_arange->ag_length),
137043			    upointer_size);
137044	    arange_ptr += upointer_size;
137045	}
137046    }
137047
137048    WRITE_UNALIGNED(dbg, (void *) arange_ptr,
137049		    (const void *) &big_zero,
137050		    sizeof(big_zero), upointer_size);
137051
137052    arange_ptr += upointer_size;
137053    WRITE_UNALIGNED(dbg, (void *) arange_ptr,
137054		    (const void *) &big_zero,
137055		    sizeof(big_zero), upointer_size);
137056    return (int) dbg->de_n_debug_sect;
137057}
137058��0707010001ad980000812400011e740000000a0000000140206827000007a5000000660000000000000000000000000000001600000000libdwarf/pro_arange.h�/*
137059
137060  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
137061
137062  This program is free software; you can redistribute it and/or modify it
137063  under the terms of version 2.1 of the GNU Lesser General Public License
137064  as published by the Free Software Foundation.
137065
137066  This program is distributed in the hope that it would be useful, but
137067  WITHOUT ANY WARRANTY; without even the implied warranty of
137068  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
137069
137070  Further, this software is distributed without any warranty that it is
137071  free of the rightful claim of any third person regarding infringement
137072  or the like.  Any license provided herein, whether implied or
137073  otherwise, applies only to this software file.  Patent licenses, if
137074  any, provided herein do not apply to combinations of this program with
137075  other software, or any other product whatsoever.
137076
137077  You should have received a copy of the GNU Lesser General Public
137078  License along with this program; if not, write the Free Software
137079  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
137080  USA.
137081
137082  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
137083  Mountain View, CA 94043, or:
137084
137085  http://www.sgi.com
137086
137087  For further information regarding this notice, see:
137088
137089  http://oss.sgi.com/projects/GenInfo/NoticeExplan
137090
137091*/
137092
137093
137094/*
137095	If ag_end_symbol_index is zero,
137096	ag_length must be known and non-zero.
137097
137098
137099	Deals with length being known costant or fr
137100	assembler output, not known.
137101
137102*/
137103
137104struct Dwarf_P_Arange_s {
137105    Dwarf_Addr ag_begin_address;	/* known address or for
137106					   symbolic assem output,
137107					   offset of symbol */
137108    Dwarf_Addr ag_length;	/* zero or address or offset */
137109    Dwarf_Unsigned ag_symbol_index;
137110
137111    Dwarf_P_Arange ag_next;
137112
137113    Dwarf_Unsigned ag_end_symbol_index;	/* zero or index/id of end
137114					   symbol */
137115    Dwarf_Addr ag_end_symbol_offset;	/* known address or for
137116					   symbolic assem output,
137117					   offset of end symbol */
137118
137119};
137120���0707010001ad990000812400011e740000000a000000014020682700002e0a000000660000000000000000000000000000001300000000libdwarf/pro_die.c����/*
137121
137122  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
137123
137124  This program is free software; you can redistribute it and/or modify it
137125  under the terms of version 2.1 of the GNU Lesser General Public License
137126  as published by the Free Software Foundation.
137127
137128  This program is distributed in the hope that it would be useful, but
137129  WITHOUT ANY WARRANTY; without even the implied warranty of
137130  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
137131
137132  Further, this software is distributed without any warranty that it is
137133  free of the rightful claim of any third person regarding infringement
137134  or the like.  Any license provided herein, whether implied or
137135  otherwise, applies only to this software file.  Patent licenses, if
137136  any, provided herein do not apply to combinations of this program with
137137  other software, or any other product whatsoever.
137138
137139  You should have received a copy of the GNU Lesser General Public
137140  License along with this program; if not, write the Free Software
137141  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
137142  USA.
137143
137144  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
137145  Mountain View, CA 94043, or:
137146
137147  http://www.sgi.com
137148
137149  For further information regarding this notice, see:
137150
137151  http://oss.sgi.com/projects/GenInfo/NoticeExplan
137152
137153*/
137154
137155
137156
137157#include "config.h"
137158#include "libdwarfdefs.h"
137159#include <stdio.h>
137160#include <string.h>
137161#include "pro_incl.h"
137162#include "pro_die.h"
137163
137164#ifndef R_MIPS_NONE
137165#define R_MIPS_NONE 0
137166#endif
137167
137168/* adds an attribute to a die */
137169void _dwarf_pro_add_at_to_die(Dwarf_P_Die die, Dwarf_P_Attribute attr);
137170
137171/*----------------------------------------------------------------------------
137172	This function creates a new die.
137173	tag: tag of the new die to be created
137174	parent,child,left,right: specify neighbors of the new die. Only
137175	    one of these may be non-null
137176-----------------------------------------------------------------------------*/
137177Dwarf_P_Die
137178dwarf_new_die(Dwarf_P_Debug dbg,
137179	      Dwarf_Tag tag,
137180	      Dwarf_P_Die parent,
137181	      Dwarf_P_Die child,
137182	      Dwarf_P_Die left, Dwarf_P_Die right, Dwarf_Error * error)
137183{
137184    Dwarf_P_Die new_die, ret_die;
137185
137186    new_die = (Dwarf_P_Die)
137187	_dwarf_p_get_alloc(dbg, sizeof(struct Dwarf_P_Die_s));
137188    if (new_die == NULL) {
137189	DWARF_P_DBG_ERROR(dbg, DW_DLE_DIE_ALLOC,
137190			  (Dwarf_P_Die) DW_DLV_BADADDR);
137191    }
137192    new_die->di_parent = NULL;
137193    new_die->di_left = NULL;
137194    new_die->di_right = NULL;
137195    new_die->di_child = NULL;
137196    new_die->di_tag = tag;
137197    ret_die =
137198	dwarf_die_link(new_die, parent, child, left, right, error);
137199    return ret_die;
137200}
137201
137202/*----------------------------------------------------------------------------
137203	This function links up a die to specified neighbors
137204	parent,child,left,right: specify neighbors of the new die. Only
137205	    one of these may be non-null
137206-----------------------------------------------------------------------------*/
137207Dwarf_P_Die
137208dwarf_die_link(Dwarf_P_Die new_die,
137209	       Dwarf_P_Die parent,
137210	       Dwarf_P_Die child,
137211	       Dwarf_P_Die left, Dwarf_P_Die right, Dwarf_Error * error)
137212{
137213    int n_nulls;		/* to count # of non null neighbors */
137214
137215    n_nulls = 0;
137216    if (parent != NULL) {
137217	n_nulls++;
137218	new_die->di_parent = parent;
137219	if (parent->di_child) {	/* got to traverse the child's siblings
137220				 */
137221	    Dwarf_P_Die curdie;
137222
137223	    curdie = parent->di_child;
137224	    while (curdie->di_right)
137225		curdie = curdie->di_right;
137226	    curdie->di_right = new_die;	/* attach to sibling list */
137227	    new_die->di_left = curdie;	/* back pointer */
137228	} else
137229	    parent->di_child = new_die;
137230    }
137231    if (child != NULL) {
137232	n_nulls++;
137233	new_die->di_child = child;
137234	if (child->di_parent) {
137235	    DWARF_P_DBG_ERROR(NULL, DW_DLE_PARENT_EXISTS,
137236			      (Dwarf_P_Die) DW_DLV_BADADDR);
137237	} else
137238	    child->di_parent = new_die;
137239    }
137240    if (left != NULL) {
137241	n_nulls++;
137242	new_die->di_left = left;
137243	if (left->di_right)	/* there's already a right sibl, lets
137244				   insert */
137245	    new_die->di_right = left->di_right;
137246	left->di_right = new_die;
137247	/* add parent pointer */
137248	if (new_die->di_parent) {
137249	    DWARF_P_DBG_ERROR(NULL, DW_DLE_PARENT_EXISTS,
137250			      (Dwarf_P_Die) DW_DLV_BADADDR);
137251	} else
137252	    new_die->di_parent = left->di_parent;
137253    }
137254    if (right != NULL) {
137255	n_nulls++;
137256	new_die->di_right = right;
137257	if (right->di_left)	/* left sibl exists, try inserting */
137258	    new_die->di_left = right->di_left;
137259	right->di_left = new_die;
137260	if (new_die->di_parent) {
137261	    DWARF_P_DBG_ERROR(NULL, DW_DLE_PARENT_EXISTS,
137262			      (Dwarf_P_Die) DW_DLV_BADADDR);
137263	} else
137264	    new_die->di_parent = right->di_parent;
137265    }
137266    if (n_nulls > 1) {		/* multiple neighbors, error */
137267	DWARF_P_DBG_ERROR(NULL, DW_DLE_EXTRA_NEIGHBORS,
137268			  (Dwarf_P_Die) DW_DLV_BADADDR);
137269    }
137270    return new_die;
137271
137272}
137273
137274/*----------------------------------------------------------------------------
137275	This function adds a die to dbg struct. It should be called using
137276	the root of all the dies.
137277-----------------------------------------------------------------------------*/
137278Dwarf_Unsigned
137279dwarf_add_die_to_debug(Dwarf_P_Debug dbg,
137280		       Dwarf_P_Die first_die, Dwarf_Error * error)
137281{
137282    if (first_die == NULL) {
137283	DWARF_P_DBG_ERROR(dbg, DW_DLE_DIE_NULL, DW_DLV_NOCOUNT);
137284    }
137285    if (first_die->di_tag != DW_TAG_compile_unit) {
137286	DWARF_P_DBG_ERROR(dbg, DW_DLE_WRONG_TAG, DW_DLV_NOCOUNT);
137287    }
137288    dbg->de_dies = first_die;
137289    return 0;
137290}
137291
137292int
137293_dwarf_pro_add_AT_stmt_list(Dwarf_P_Debug dbg,
137294			    Dwarf_P_Die first_die, Dwarf_Error * error)
137295{
137296    Dwarf_P_Attribute new_attr;
137297    int uwordb_size = dbg->de_offset_size;
137298
137299    /* Add AT_stmt_list attribute */
137300    new_attr = (Dwarf_P_Attribute)
137301	_dwarf_p_get_alloc(NULL, sizeof(struct Dwarf_P_Attribute_s));
137302    if (new_attr == NULL) {
137303	DWARF_P_DBG_ERROR(NULL, DW_DLE_ATTR_ALLOC, DW_DLV_NOCOUNT);
137304    }
137305
137306    new_attr->ar_attribute = DW_AT_stmt_list;
137307    new_attr->ar_attribute_form = dbg->de_ar_data_attribute_form;
137308    new_attr->ar_rel_type = dbg->de_offset_reloc;
137309
137310    new_attr->ar_nbytes = uwordb_size;
137311    new_attr->ar_next = NULL;
137312    new_attr->ar_reloc_len = uwordb_size;
137313    new_attr->ar_data = (char *)
137314	_dwarf_p_get_alloc(NULL, uwordb_size);
137315    if (new_attr->ar_data == NULL) {
137316	DWARF_P_DBG_ERROR(NULL, DW_DLE_ADDR_ALLOC, DW_DLV_NOCOUNT);
137317    }
137318    {
137319	Dwarf_Unsigned du = 0;
137320
137321	WRITE_UNALIGNED(dbg, (void *) new_attr->ar_data,
137322			(const void *) &du, sizeof(du), uwordb_size);
137323    }
137324
137325    _dwarf_pro_add_at_to_die(first_die, new_attr);
137326    return 0;
137327}
137328
137329/*-----------------------------------------------------------------------------
137330	Add AT_name attribute to die
137331------------------------------------------------------------------------------*/
137332Dwarf_P_Attribute
137333dwarf_add_AT_name(Dwarf_P_Die die, char *name, Dwarf_Error * error)
137334{
137335    Dwarf_P_Attribute new_attr;
137336
137337    if (die == NULL) {
137338	DWARF_P_DBG_ERROR(NULL, DW_DLE_DIE_NULL,
137339			  (Dwarf_P_Attribute) DW_DLV_BADADDR);
137340    }
137341    new_attr = (Dwarf_P_Attribute)
137342	_dwarf_p_get_alloc(NULL, sizeof(struct Dwarf_P_Attribute_s));
137343    if (new_attr == NULL) {
137344	DWARF_P_DBG_ERROR(NULL, DW_DLE_ATTR_ALLOC,
137345			  (Dwarf_P_Attribute) DW_DLV_BADADDR);
137346    }
137347
137348    /* fill in the information */
137349    new_attr->ar_attribute = DW_AT_name;
137350    /* assume that form is string, no debug_str yet */
137351    new_attr->ar_attribute_form = DW_FORM_string;
137352    new_attr->ar_nbytes = strlen(name) + 1;
137353    new_attr->ar_next = NULL;
137354    new_attr->ar_reloc_len = 0;
137355    new_attr->ar_data = (char *)
137356	_dwarf_p_get_alloc(NULL, strlen(name) + 1);
137357    if (new_attr->ar_data == NULL) {
137358	DWARF_P_DBG_ERROR(NULL, DW_DLE_STRING_ALLOC,
137359			  (Dwarf_P_Attribute) DW_DLV_BADADDR);
137360    }
137361    strcpy(new_attr->ar_data, name);
137362
137363    new_attr->ar_rel_type = R_MIPS_NONE;
137364
137365    /* add attribute to the die */
137366    _dwarf_pro_add_at_to_die(die, new_attr);
137367    return new_attr;
137368}
137369
137370
137371/*-----------------------------------------------------------------------------
137372	Add AT_comp_dir attribute to die
137373------------------------------------------------------------------------------*/
137374Dwarf_P_Attribute
137375dwarf_add_AT_comp_dir(Dwarf_P_Die ownerdie,
137376		      char *current_working_directory,
137377		      Dwarf_Error * error)
137378{
137379    Dwarf_P_Attribute new_attr;
137380
137381    if (ownerdie == NULL) {
137382	DWARF_P_DBG_ERROR(NULL, DW_DLE_DIE_NULL,
137383			  (Dwarf_P_Attribute) DW_DLV_BADADDR);
137384    }
137385    new_attr = (Dwarf_P_Attribute)
137386	_dwarf_p_get_alloc(NULL, sizeof(struct Dwarf_P_Attribute_s));
137387    if (new_attr == NULL) {
137388	DWARF_P_DBG_ERROR(NULL, DW_DLE_ATTR_ALLOC,
137389			  (Dwarf_P_Attribute) DW_DLV_BADADDR);
137390    }
137391
137392    /* fill in the information */
137393    new_attr->ar_attribute = DW_AT_comp_dir;
137394    /* assume that form is string, no debug_str yet */
137395    new_attr->ar_attribute_form = DW_FORM_string;
137396    new_attr->ar_nbytes = strlen(current_working_directory) + 1;
137397    new_attr->ar_next = NULL;
137398    new_attr->ar_reloc_len = 0;
137399    new_attr->ar_data = (char *)
137400	_dwarf_p_get_alloc(NULL, strlen(current_working_directory) + 1);
137401    if (new_attr->ar_data == NULL) {
137402	DWARF_P_DBG_ERROR(NULL, DW_DLE_STRING_ALLOC,
137403			  (Dwarf_P_Attribute) DW_DLV_BADADDR);
137404    }
137405    strcpy(new_attr->ar_data, current_working_directory);
137406
137407    new_attr->ar_rel_type = R_MIPS_NONE;
137408
137409    /* add attribute to the die */
137410    _dwarf_pro_add_at_to_die(ownerdie, new_attr);
137411    return new_attr;
137412}
137413
137414int
137415_dwarf_pro_add_AT_fde(Dwarf_P_Debug dbg,
137416		      Dwarf_P_Die die,
137417		      Dwarf_Unsigned offset, Dwarf_Error * error)
137418{
137419    Dwarf_P_Attribute new_attr;
137420    int uwordb_size = dbg->de_offset_size;
137421
137422    if (die == NULL) {
137423	DWARF_P_DBG_ERROR(NULL, DW_DLE_DIE_NULL, -1);
137424    }
137425    new_attr = (Dwarf_P_Attribute)
137426	_dwarf_p_get_alloc(NULL, sizeof(struct Dwarf_P_Attribute_s));
137427    if (new_attr == NULL) {
137428	DWARF_P_DBG_ERROR(NULL, DW_DLE_ATTR_ALLOC, -1);
137429    }
137430
137431    /* fill in the information */
137432    new_attr->ar_attribute = DW_AT_MIPS_fde;
137433    new_attr->ar_attribute_form = dbg->de_ar_data_attribute_form;;
137434    new_attr->ar_rel_type = dbg->de_offset_reloc;
137435    new_attr->ar_nbytes = uwordb_size;
137436    new_attr->ar_next = NULL;
137437    new_attr->ar_reloc_len = uwordb_size;
137438    new_attr->ar_data = (char *)
137439	_dwarf_p_get_alloc(NULL, uwordb_size);
137440    if (new_attr->ar_data == NULL) {
137441	DWARF_P_DBG_ERROR(NULL, DW_DLE_ADDR_ALLOC, DW_DLV_NOCOUNT);
137442    }
137443    {
137444	Dwarf_Unsigned du = offset;
137445
137446	WRITE_UNALIGNED(dbg, (void *) new_attr->ar_data,
137447			(const void *) &du, sizeof(du), uwordb_size);
137448    }
137449
137450    _dwarf_pro_add_at_to_die(die, new_attr);
137451
137452    return 0;
137453}
137454
137455int
137456_dwarf_pro_add_AT_macro_info(Dwarf_P_Debug dbg,
137457			     Dwarf_P_Die die,
137458			     Dwarf_Unsigned offset, Dwarf_Error * error)
137459{
137460    Dwarf_P_Attribute new_attr;
137461    int uwordb_size = dbg->de_offset_size;
137462
137463    if (die == NULL) {
137464	DWARF_P_DBG_ERROR(NULL, DW_DLE_DIE_NULL, -1);
137465    }
137466    new_attr = (Dwarf_P_Attribute)
137467	_dwarf_p_get_alloc(NULL, sizeof(struct Dwarf_P_Attribute_s));
137468    if (new_attr == NULL) {
137469	DWARF_P_DBG_ERROR(NULL, DW_DLE_ATTR_ALLOC, -1);
137470    }
137471
137472    /* fill in the information */
137473    new_attr->ar_attribute = DW_AT_macro_info;
137474    new_attr->ar_attribute_form = dbg->de_ar_data_attribute_form;
137475    new_attr->ar_rel_type = dbg->de_offset_reloc;
137476
137477    new_attr->ar_nbytes = uwordb_size;
137478    new_attr->ar_next = NULL;
137479    new_attr->ar_reloc_len = uwordb_size;
137480    new_attr->ar_data = (char *)
137481	_dwarf_p_get_alloc(NULL, uwordb_size);
137482    if (new_attr->ar_data == NULL) {
137483	DWARF_P_DBG_ERROR(NULL, DW_DLE_ADDR_ALLOC, DW_DLV_NOCOUNT);
137484    }
137485    {
137486	Dwarf_Unsigned du = offset;
137487
137488	WRITE_UNALIGNED(dbg, (void *) new_attr->ar_data,
137489			(const void *) &du, sizeof(du), uwordb_size);
137490    }
137491
137492    _dwarf_pro_add_at_to_die(die, new_attr);
137493
137494    return 0;
137495}
137496
137497
137498void
137499_dwarf_pro_add_at_to_die(Dwarf_P_Die die, Dwarf_P_Attribute attr)
137500{
137501    if (die->di_last_attr) {
137502	die->di_last_attr->ar_next = attr;
137503	die->di_last_attr = attr;
137504	die->di_n_attr++;
137505    } else {
137506	die->di_n_attr = 1;
137507	die->di_attrs = die->di_last_attr = attr;
137508    }
137509}
137510��0707010001ad9a0000812400011e740000000a000000014020682700000914000000660000000000000000000000000000001300000000libdwarf/pro_die.h����/*
137511
137512  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
137513
137514  This program is free software; you can redistribute it and/or modify it
137515  under the terms of version 2.1 of the GNU Lesser General Public License
137516  as published by the Free Software Foundation.
137517
137518  This program is distributed in the hope that it would be useful, but
137519  WITHOUT ANY WARRANTY; without even the implied warranty of
137520  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
137521
137522  Further, this software is distributed without any warranty that it is
137523  free of the rightful claim of any third person regarding infringement
137524  or the like.  Any license provided herein, whether implied or
137525  otherwise, applies only to this software file.  Patent licenses, if
137526  any, provided herein do not apply to combinations of this program with
137527  other software, or any other product whatsoever.
137528
137529  You should have received a copy of the GNU Lesser General Public
137530  License along with this program; if not, write the Free Software
137531  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
137532  USA.
137533
137534  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
137535  Mountain View, CA 94043, or:
137536
137537  http://www.sgi.com
137538
137539  For further information regarding this notice, see:
137540
137541  http://oss.sgi.com/projects/GenInfo/NoticeExplan
137542
137543*/
137544
137545
137546
137547
137548/*
137549	This struct holds the abbreviation table, before they are written
137550	on disk. Holds a linked list of abbreviations, each consisting of
137551	a bitmap for attributes and a bitmap for forms
137552*/
137553typedef struct Dwarf_P_Abbrev_s *Dwarf_P_Abbrev;
137554
137555struct Dwarf_P_Abbrev_s {
137556    Dwarf_Unsigned abb_idx;	/* index of abbreviation */
137557    Dwarf_Tag abb_tag;		/* tag of die */
137558    Dwarf_Ubyte abb_children;	/* if children are present */
137559    Dwarf_ufixed *abb_attrs;	/* holds names of attrs */
137560    Dwarf_ufixed *abb_forms;	/* forms of attributes */
137561    int abb_n_attr;		/* num of attrs = # of forms */
137562    Dwarf_P_Abbrev abb_next;
137563};
137564
137565/* used in pro_section.c */
137566
137567int _dwarf_pro_add_AT_fde(Dwarf_P_Debug dbg, Dwarf_P_Die die,
137568			  Dwarf_Unsigned offset, Dwarf_Error * error);
137569
137570int _dwarf_pro_add_AT_stmt_list(Dwarf_P_Debug dbg,
137571				Dwarf_P_Die first_die,
137572				Dwarf_Error * error);
137573
137574int _dwarf_pro_add_AT_macro_info(Dwarf_P_Debug dbg,
137575				 Dwarf_P_Die first_die,
137576				 Dwarf_Unsigned offset,
137577				 Dwarf_Error * error);
1375780707010001ad9b0000812400011e740000000a000000014020682700000c74000000660000000000000000000000000000001900000000libdwarf/pro_encode_nm.c��/*
137579
137580  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
137581
137582  This program is free software; you can redistribute it and/or modify it
137583  under the terms of version 2.1 of the GNU Lesser General Public License
137584  as published by the Free Software Foundation.
137585
137586  This program is distributed in the hope that it would be useful, but
137587  WITHOUT ANY WARRANTY; without even the implied warranty of
137588  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
137589
137590  Further, this software is distributed without any warranty that it is
137591  free of the rightful claim of any third person regarding infringement
137592  or the like.  Any license provided herein, whether implied or
137593  otherwise, applies only to this software file.  Patent licenses, if
137594  any, provided herein do not apply to combinations of this program with
137595  other software, or any other product whatsoever.
137596
137597  You should have received a copy of the GNU Lesser General Public
137598  License along with this program; if not, write the Free Software
137599  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
137600  USA.
137601
137602  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
137603  Mountain View, CA 94043, or:
137604
137605  http://www.sgi.com
137606
137607  For further information regarding this notice, see:
137608
137609  http://oss.sgi.com/projects/GenInfo/NoticeExplan
137610
137611*/
137612
137613
137614
137615#include "config.h"
137616#include "libdwarfdefs.h"
137617#include <string.h>
137618#include "pro_incl.h"
137619
137620#define MORE_BYTES      0x80
137621#define DATA_MASK       0x7f
137622#define DIGIT_WIDTH     7
137623#define SIGN_BIT        0x40
137624
137625
137626/*-------------------------------------------------------------
137627	Encode val as a leb128. This encodes it as an unsigned
137628	number.
137629---------------------------------------------------------------*/
137630/* return DW_DLV_ERROR or DW_DLV_OK.
137631** space to write leb number is provided by caller, with caller
137632** passing length.
137633** number of bytes used returned thru nbytes arg
137634*/
137635int
137636_dwarf_pro_encode_leb128_nm(Dwarf_Unsigned val, int *nbytes,
137637			    char *space, int splen)
137638{
137639    char *a;
137640    char *end = space + splen;
137641
137642    a = space;
137643    do {
137644	unsigned char uc;
137645
137646	if (a >= end) {
137647	    return DW_DLV_ERROR;
137648	}
137649	uc = val & DATA_MASK;
137650	val >>= DIGIT_WIDTH;
137651	if (val != 0) {
137652	    uc |= MORE_BYTES;
137653	}
137654	*a = uc;
137655	a++;
137656    } while (val);
137657    *nbytes = a - space;
137658    return DW_DLV_OK;
137659}
137660
137661/* return DW_DLV_ERROR or DW_DLV_OK.
137662** space to write leb number is provided by caller, with caller
137663** passing length.
137664** number of bytes used returned thru nbytes arg
137665** encodes a signed number.
137666*/
137667int
137668_dwarf_pro_encode_signed_leb128_nm(Dwarf_Signed value, int *nbytes,
137669				   char *space, int splen)
137670{
137671    char *str;
137672    Dwarf_Signed sign = -(value < 0);
137673    int more = 1;
137674    char *end = space + splen;
137675
137676    str = space;
137677
137678    do {
137679	unsigned char byte = value & DATA_MASK;
137680
137681	value >>= DIGIT_WIDTH;
137682
137683	if (str >= end) {
137684	    return DW_DLV_ERROR;
137685	}
137686	/*
137687	 * Remaining chunks would just contain the sign bit, and this chunk
137688	 * has already captured at least one sign bit.
137689	 */
137690	if (value == sign && ((byte & SIGN_BIT) == (sign & SIGN_BIT))) {
137691	    more = 0;
137692	} else {
137693	    byte |= MORE_BYTES;
137694	}
137695	*str = byte;
137696	str++;
137697    } while (more);
137698    *nbytes = str - space;
137699    return DW_DLV_OK;
137700}
1377010707010001ad9c0000812400011e740000000a000000014020682700000687000000660000000000000000000000000000001900000000libdwarf/pro_encode_nm.h��/*
137702
137703  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
137704
137705  This program is free software; you can redistribute it and/or modify it
137706  under the terms of version 2.1 of the GNU Lesser General Public License
137707  as published by the Free Software Foundation.
137708
137709  This program is distributed in the hope that it would be useful, but
137710  WITHOUT ANY WARRANTY; without even the implied warranty of
137711  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
137712
137713  Further, this software is distributed without any warranty that it is
137714  free of the rightful claim of any third person regarding infringement
137715  or the like.  Any license provided herein, whether implied or
137716  otherwise, applies only to this software file.  Patent licenses, if
137717  any, provided herein do not apply to combinations of this program with
137718  other software, or any other product whatsoever.
137719
137720  You should have received a copy of the GNU Lesser General Public
137721  License along with this program; if not, write the Free Software
137722  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
137723  USA.
137724
137725  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
137726  Mountain View, CA 94043, or:
137727
137728  http://www.sgi.com
137729
137730  For further information regarding this notice, see:
137731
137732  http://oss.sgi.com/projects/GenInfo/NoticeExplan
137733
137734*/
137735
137736
137737
137738/*  Bytes needed to encode a number.
137739    Not a tight bound, just a reasonable bound.
137740*/
137741#define ENCODE_SPACE_NEEDED   (2*sizeof(Dwarf_Unsigned))
137742
137743
137744int _dwarf_pro_encode_leb128_nm(Dwarf_Unsigned val, int *nbytes,
137745				char *space, int splen);
137746
137747int _dwarf_pro_encode_signed_leb128_nm(Dwarf_Signed value, int *nbytes,
137748				       char *space, int splen);
137749�0707010001ad9d0000812400011e740000000a000000014020682700000b51000000660000000000000000000000000000001500000000libdwarf/pro_error.c��/*
137750
137751  Copyright (C) 2000, 2002 Silicon Graphics, Inc.  All Rights Reserved.
137752
137753  This program is free software; you can redistribute it and/or modify it
137754  under the terms of version 2.1 of the GNU Lesser General Public License
137755  as published by the Free Software Foundation.
137756
137757  This program is distributed in the hope that it would be useful, but
137758  WITHOUT ANY WARRANTY; without even the implied warranty of
137759  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
137760
137761  Further, this software is distributed without any warranty that it is
137762  free of the rightful claim of any third person regarding infringement
137763  or the like.  Any license provided herein, whether implied or
137764  otherwise, applies only to this software file.  Patent licenses, if
137765  any, provided herein do not apply to combinations of this program with
137766  other software, or any other product whatsoever.
137767
137768  You should have received a copy of the GNU Lesser General Public
137769  License along with this program; if not, write the Free Software
137770  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
137771  USA.
137772
137773  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
137774  Mountain View, CA 94043, or:
137775
137776  http://www.sgi.com
137777
137778  For further information regarding this notice, see:
137779
137780  http://oss.sgi.com/projects/GenInfo/NoticeExplan
137781
137782*/
137783
137784
137785
137786#include "config.h"
137787#include "libdwarfdefs.h"
137788#ifdef HAVE_ELF_H
137789#include <elf.h>
137790#endif
137791
137792#include <stdio.h>
137793#include <sys/stat.h>
137794#include <sys/types.h>
137795#include <stdlib.h>
137796#include "pro_incl.h"
137797
137798extern char *_dwarf_errmsgs[];
137799
137800/*
137801    This function performs error handling as described in the
137802    libdwarf consumer document section 3.  Dbg is the Dwarf_P_debug
137803    structure being processed.  Error is a pointer to the pointer
137804    to the error descriptor that will be returned.  Errval is an
137805    error code listed in dwarf_error.h.
137806*/
137807void
137808_dwarf_p_error(Dwarf_P_Debug dbg,
137809	       Dwarf_Error * error, Dwarf_Word errval)
137810{
137811    Dwarf_Error errptr;
137812
137813    /* Allow NULL dbg on entry, since sometimes that can happen and we
137814       want to report the upper-level error, not this one. */
137815    if ((Dwarf_Sword) errval < 0)
137816	printf("ERROR VALUE: %ld - %s\n",
137817	       (long) errval, _dwarf_errmsgs[-errval - 1]);
137818    if (error != NULL) {
137819	errptr = (Dwarf_Error)
137820	    _dwarf_p_get_alloc(dbg, sizeof(struct Dwarf_Error_s));
137821	if (errptr == NULL) {
137822	    fprintf(stderr,
137823		    "Could not allocate Dwarf_Error structure\n");
137824	    abort();
137825	}
137826	errptr->er_errval = (Dwarf_Sword) errval;
137827	*error = errptr;
137828	return;
137829    }
137830
137831    if (dbg != NULL && dbg->de_errhand != NULL) {
137832	errptr = (Dwarf_Error)
137833	    _dwarf_p_get_alloc(dbg, sizeof(struct Dwarf_Error_s));
137834	if (errptr == NULL) {
137835	    fprintf(stderr,
137836		    "Could not allocate Dwarf_Error structure\n");
137837	    abort();
137838	}
137839	errptr->er_errval = (Dwarf_Sword) errval;
137840	dbg->de_errhand(errptr, dbg->de_errarg);
137841	return;
137842    }
137843
137844    abort();
137845}
137846���0707010001ad9e0000812400011e740000000a000000014020682700000708000000660000000000000000000000000000001500000000libdwarf/pro_error.h��/*
137847
137848  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
137849
137850  This program is free software; you can redistribute it and/or modify it
137851  under the terms of version 2.1 of the GNU Lesser General Public License
137852  as published by the Free Software Foundation.
137853
137854  This program is distributed in the hope that it would be useful, but
137855  WITHOUT ANY WARRANTY; without even the implied warranty of
137856  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
137857
137858  Further, this software is distributed without any warranty that it is
137859  free of the rightful claim of any third person regarding infringement
137860  or the like.  Any license provided herein, whether implied or
137861  otherwise, applies only to this software file.  Patent licenses, if
137862  any, provided herein do not apply to combinations of this program with
137863  other software, or any other product whatsoever.
137864
137865  You should have received a copy of the GNU Lesser General Public
137866  License along with this program; if not, write the Free Software
137867  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
137868  USA.
137869
137870  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
137871  Mountain View, CA 94043, or:
137872
137873  http://www.sgi.com
137874
137875  For further information regarding this notice, see:
137876
137877  http://oss.sgi.com/projects/GenInfo/NoticeExplan
137878
137879*/
137880
137881
137882
137883
137884/* Handle error passing in the name of the Dwarf_P_Debug
137885   User must supply {} around the macro.
137886   Putting the {} here leads to macro uses that don't look like C.
137887   The error argument to dwarf_error is hard coded here as 'error'
137888*/
137889#define DWARF_P_DBG_ERROR(dbg,errval,retval) \
137890     _dwarf_p_error(dbg,error,errval); return(retval);
137891
137892struct Dwarf_Error_s {
137893    Dwarf_Sword er_errval;
137894};
137895
137896void _dwarf_p_error(Dwarf_P_Debug dbg, Dwarf_Error * error,
137897		    Dwarf_Word errval);
1378980707010001ad9f0000812400011e740000000a0000000140206828000036ac000000660000000000000000000000000000001400000000libdwarf/pro_expr.c���/*
137899
137900  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
137901
137902  This program is free software; you can redistribute it and/or modify it
137903  under the terms of version 2.1 of the GNU Lesser General Public License
137904  as published by the Free Software Foundation.
137905
137906  This program is distributed in the hope that it would be useful, but
137907  WITHOUT ANY WARRANTY; without even the implied warranty of
137908  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
137909
137910  Further, this software is distributed without any warranty that it is
137911  free of the rightful claim of any third person regarding infringement
137912  or the like.  Any license provided herein, whether implied or
137913  otherwise, applies only to this software file.  Patent licenses, if
137914  any, provided herein do not apply to combinations of this program with
137915  other software, or any other product whatsoever.
137916
137917  You should have received a copy of the GNU Lesser General Public
137918  License along with this program; if not, write the Free Software
137919  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
137920  USA.
137921
137922  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
137923  Mountain View, CA 94043, or:
137924
137925  http://www.sgi.com
137926
137927  For further information regarding this notice, see:
137928
137929  http://oss.sgi.com/projects/GenInfo/NoticeExplan
137930
137931*/
137932
137933
137934
137935#include "config.h"
137936#include "libdwarfdefs.h"
137937#include <stdio.h>
137938#include <string.h>
137939#include "pro_incl.h"
137940#include "pro_expr.h"
137941
137942/*
137943    This function creates a new expression
137944    struct that can be used to build up a
137945    location expression.
137946*/
137947Dwarf_P_Expr
137948dwarf_new_expr(Dwarf_P_Debug dbg, Dwarf_Error * error)
137949{
137950    Dwarf_P_Expr ret_expr;
137951
137952    if (dbg == NULL) {
137953	_dwarf_p_error(NULL, error, DW_DLE_DBG_NULL);
137954	return (NULL);
137955    }
137956
137957    ret_expr = (Dwarf_P_Expr)
137958	_dwarf_p_get_alloc(dbg, sizeof(struct Dwarf_P_Expr_s));
137959    if (ret_expr == NULL) {
137960	_dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
137961	return (NULL);
137962    }
137963
137964    ret_expr->ex_dbg = dbg;
137965
137966    return (ret_expr);
137967}
137968
137969
137970Dwarf_Unsigned
137971dwarf_add_expr_gen(Dwarf_P_Expr expr,
137972		   Dwarf_Small opcode,
137973		   Dwarf_Unsigned val1,
137974		   Dwarf_Unsigned val2, Dwarf_Error * error)
137975{
137976    char encode_buffer[2 * ENCODE_SPACE_NEEDED];	/* 2* since
137977							   used to
137978							   concatenate
137979							   2 leb's
137980							   below */
137981    char encode_buffer2[ENCODE_SPACE_NEEDED];
137982    int res;
137983    Dwarf_P_Debug dbg = expr->ex_dbg;
137984
137985    /*
137986       Give the buffer where the operands are first going to be
137987       assembled the largest alignment. */
137988    Dwarf_Unsigned operand_buffer[10];
137989
137990    /*
137991       Size of the byte stream buffer that needs to be memcpy-ed. */
137992    int operand_size;
137993
137994    /*
137995       Points to the byte stream for the first operand, and finally to
137996       the buffer that is memcp-ed into the Dwarf_P_Expr_s struct. */
137997    Dwarf_Small *operand;
137998
137999    /* Size of the byte stream for second operand. */
138000    int operand2_size;
138001
138002    /* Points to next byte to be written in Dwarf_P_Expr_s struct. */
138003    Dwarf_Small *next_byte_ptr;
138004
138005    /* Offset past the last byte written into Dwarf_P_Expr_s. */
138006    int next_byte_offset;
138007
138008    /* ***** BEGIN CODE ***** */
138009
138010    if (expr == NULL) {
138011	_dwarf_p_error(NULL, error, DW_DLE_EXPR_NULL);
138012	return (DW_DLV_NOCOUNT);
138013    }
138014
138015    if (expr->ex_dbg == NULL) {
138016	_dwarf_p_error(NULL, error, DW_DLE_DBG_NULL);
138017	return (DW_DLV_NOCOUNT);
138018    }
138019
138020    operand = NULL;
138021    operand_size = 0;
138022
138023    switch (opcode) {
138024    case DW_OP_reg0:
138025    case DW_OP_reg1:
138026    case DW_OP_reg2:
138027    case DW_OP_reg3:
138028    case DW_OP_reg4:
138029    case DW_OP_reg5:
138030    case DW_OP_reg6:
138031    case DW_OP_reg7:
138032    case DW_OP_reg8:
138033    case DW_OP_reg9:
138034    case DW_OP_reg10:
138035    case DW_OP_reg11:
138036    case DW_OP_reg12:
138037    case DW_OP_reg13:
138038    case DW_OP_reg14:
138039    case DW_OP_reg15:
138040    case DW_OP_reg16:
138041    case DW_OP_reg17:
138042    case DW_OP_reg18:
138043    case DW_OP_reg19:
138044    case DW_OP_reg20:
138045    case DW_OP_reg21:
138046    case DW_OP_reg22:
138047    case DW_OP_reg23:
138048    case DW_OP_reg24:
138049    case DW_OP_reg25:
138050    case DW_OP_reg26:
138051    case DW_OP_reg27:
138052    case DW_OP_reg28:
138053    case DW_OP_reg29:
138054    case DW_OP_reg30:
138055    case DW_OP_reg31:
138056	break;
138057
138058    case DW_OP_breg0:
138059    case DW_OP_breg1:
138060    case DW_OP_breg2:
138061    case DW_OP_breg3:
138062    case DW_OP_breg4:
138063    case DW_OP_breg5:
138064    case DW_OP_breg6:
138065    case DW_OP_breg7:
138066    case DW_OP_breg8:
138067    case DW_OP_breg9:
138068    case DW_OP_breg10:
138069    case DW_OP_breg11:
138070    case DW_OP_breg12:
138071    case DW_OP_breg13:
138072    case DW_OP_breg14:
138073    case DW_OP_breg15:
138074    case DW_OP_breg16:
138075    case DW_OP_breg17:
138076    case DW_OP_breg18:
138077    case DW_OP_breg19:
138078    case DW_OP_breg20:
138079    case DW_OP_breg21:
138080    case DW_OP_breg22:
138081    case DW_OP_breg23:
138082    case DW_OP_breg24:
138083    case DW_OP_breg25:
138084    case DW_OP_breg26:
138085    case DW_OP_breg27:
138086    case DW_OP_breg28:
138087    case DW_OP_breg29:
138088    case DW_OP_breg30:
138089    case DW_OP_breg31:
138090	res = _dwarf_pro_encode_signed_leb128_nm(val1,
138091						 &operand_size,
138092						 encode_buffer,
138093						 sizeof(encode_buffer));
138094	if (res != DW_DLV_OK) {
138095	    _dwarf_p_error(expr->ex_dbg, error, DW_DLE_EXPR_LENGTH_BAD);
138096	    return (DW_DLV_NOCOUNT);
138097	}
138098	operand = (Dwarf_Small *) encode_buffer;
138099	break;
138100
138101    case DW_OP_regx:
138102	res = _dwarf_pro_encode_leb128_nm(val1, &operand_size,
138103					  encode_buffer,
138104					  sizeof(encode_buffer));
138105	if (res != DW_DLV_OK) {
138106	    _dwarf_p_error(expr->ex_dbg, error, DW_DLE_EXPR_LENGTH_BAD);
138107	    return (DW_DLV_NOCOUNT);
138108	}
138109	operand = (Dwarf_Small *) encode_buffer;
138110	break;
138111
138112    case DW_OP_lit0:
138113    case DW_OP_lit1:
138114    case DW_OP_lit2:
138115    case DW_OP_lit3:
138116    case DW_OP_lit4:
138117    case DW_OP_lit5:
138118    case DW_OP_lit6:
138119    case DW_OP_lit7:
138120    case DW_OP_lit8:
138121    case DW_OP_lit9:
138122    case DW_OP_lit10:
138123    case DW_OP_lit11:
138124    case DW_OP_lit12:
138125    case DW_OP_lit13:
138126    case DW_OP_lit14:
138127    case DW_OP_lit15:
138128    case DW_OP_lit16:
138129    case DW_OP_lit17:
138130    case DW_OP_lit18:
138131    case DW_OP_lit19:
138132    case DW_OP_lit20:
138133    case DW_OP_lit21:
138134    case DW_OP_lit22:
138135    case DW_OP_lit23:
138136    case DW_OP_lit24:
138137    case DW_OP_lit25:
138138    case DW_OP_lit26:
138139    case DW_OP_lit27:
138140    case DW_OP_lit28:
138141    case DW_OP_lit29:
138142    case DW_OP_lit30:
138143    case DW_OP_lit31:
138144	break;
138145
138146    case DW_OP_addr:
138147	_dwarf_p_error(expr->ex_dbg, error, DW_DLE_BAD_EXPR_OPCODE);
138148	return (DW_DLV_NOCOUNT);
138149
138150    case DW_OP_const1u:
138151    case DW_OP_const1s:
138152	operand = (Dwarf_Small *) & operand_buffer[0];
138153	WRITE_UNALIGNED(dbg, operand, &val1, sizeof(val1), 1);
138154	operand_size = 1;
138155	break;
138156
138157    case DW_OP_const2u:
138158    case DW_OP_const2s:
138159	operand = (Dwarf_Small *) & operand_buffer[0];
138160	WRITE_UNALIGNED(dbg, operand, &val1, sizeof(val1), 2);
138161	operand_size = 2;
138162	break;
138163
138164    case DW_OP_const4u:
138165    case DW_OP_const4s:
138166	operand = (Dwarf_Small *) & operand_buffer[0];
138167	WRITE_UNALIGNED(dbg, operand, &val1, sizeof(val1), 4);
138168	operand_size = 4;
138169	break;
138170
138171    case DW_OP_const8u:
138172    case DW_OP_const8s:
138173	operand = (Dwarf_Small *) & operand_buffer[0];
138174	WRITE_UNALIGNED(dbg, operand, &val1, sizeof(val1), 8);
138175	operand_size = 8;
138176	break;
138177
138178    case DW_OP_constu:
138179	res = _dwarf_pro_encode_leb128_nm(val1,
138180					  &operand_size,
138181					  encode_buffer,
138182					  sizeof(encode_buffer));
138183	if (res != DW_DLV_OK) {
138184	    _dwarf_p_error(expr->ex_dbg, error, DW_DLE_EXPR_LENGTH_BAD);
138185	    return (DW_DLV_NOCOUNT);
138186	}
138187	operand = (Dwarf_Small *) encode_buffer;
138188	break;
138189
138190    case DW_OP_consts:
138191	res = _dwarf_pro_encode_signed_leb128_nm(val1,
138192						 &operand_size,
138193						 encode_buffer,
138194						 sizeof(encode_buffer));
138195	if (res != DW_DLV_OK) {
138196	    _dwarf_p_error(expr->ex_dbg, error, DW_DLE_EXPR_LENGTH_BAD);
138197	    return (DW_DLV_NOCOUNT);
138198	}
138199	operand = (Dwarf_Small *) encode_buffer;
138200	break;
138201
138202    case DW_OP_fbreg:
138203	res = _dwarf_pro_encode_signed_leb128_nm(val1,
138204						 &operand_size,
138205						 encode_buffer,
138206						 sizeof(encode_buffer));
138207	if (res != DW_DLV_OK) {
138208	    _dwarf_p_error(expr->ex_dbg, error, DW_DLE_EXPR_LENGTH_BAD);
138209	    return (DW_DLV_NOCOUNT);
138210	}
138211	operand = (Dwarf_Small *) encode_buffer;
138212	break;
138213
138214    case DW_OP_bregx:
138215	res = _dwarf_pro_encode_leb128_nm(val1, &operand_size,
138216					  encode_buffer,
138217					  sizeof(encode_buffer));
138218	if (res != DW_DLV_OK) {
138219	    _dwarf_p_error(expr->ex_dbg, error, DW_DLE_EXPR_LENGTH_BAD);
138220	    return (DW_DLV_NOCOUNT);
138221	}
138222	operand = (Dwarf_Small *) encode_buffer;
138223	/* put this one directly into 'operand' at tail of prev value */
138224	res = _dwarf_pro_encode_signed_leb128_nm(val2, &operand2_size,
138225						 ((char *) operand) +
138226						 operand_size,
138227						 sizeof
138228						 (encode_buffer2));
138229	if (res != DW_DLV_OK) {
138230	    _dwarf_p_error(expr->ex_dbg, error, DW_DLE_EXPR_LENGTH_BAD);
138231	    return (DW_DLV_NOCOUNT);
138232	}
138233	operand_size += operand2_size;
138234
138235    case DW_OP_dup:
138236    case DW_OP_drop:
138237	break;
138238
138239    case DW_OP_pick:
138240	operand = (Dwarf_Small *) & operand_buffer[0];
138241	/* Cast of val1 to pointer is ok as if val1 does not point into
138242	   our (process) address space we are in big trouble anyway
138243	   (internal error in libdwarf or in libdwarf caller). Compiler
138244	   may warn about cast to pointer. */
138245	WRITE_UNALIGNED(dbg, operand, (const void *) val1,
138246			sizeof(val1), 1);
138247	operand_size = 1;
138248	break;
138249
138250    case DW_OP_over:
138251    case DW_OP_swap:
138252    case DW_OP_rot:
138253    case DW_OP_deref:
138254    case DW_OP_xderef:
138255	break;
138256
138257    case DW_OP_deref_size:
138258    case DW_OP_xderef_size:
138259	operand = (Dwarf_Small *) & operand_buffer[0];
138260	/* Cast of val1 to pointer is ok as if val1 does not point into
138261	   our (process) address space we are in big trouble anyway
138262	   (internal error in libdwarf or in libdwarf caller). Compiler
138263	   may warn about cast to pointer. */
138264	WRITE_UNALIGNED(dbg, operand, (const void *) val1,
138265			sizeof(val1), 1);
138266	operand_size = 1;
138267	break;
138268
138269    case DW_OP_abs:
138270    case DW_OP_and:
138271    case DW_OP_div:
138272    case DW_OP_minus:
138273    case DW_OP_mod:
138274    case DW_OP_mul:
138275    case DW_OP_neg:
138276    case DW_OP_not:
138277    case DW_OP_or:
138278    case DW_OP_plus:
138279	break;
138280
138281    case DW_OP_plus_uconst:
138282	res = _dwarf_pro_encode_leb128_nm(val1, &operand_size,
138283					  encode_buffer,
138284					  sizeof(encode_buffer));
138285	if (res != DW_DLV_OK) {
138286	    _dwarf_p_error(expr->ex_dbg, error, DW_DLE_EXPR_LENGTH_BAD);
138287	    return (DW_DLV_NOCOUNT);
138288	}
138289	operand = (Dwarf_Small *) encode_buffer;
138290	break;
138291
138292    case DW_OP_shl:
138293    case DW_OP_shr:
138294    case DW_OP_shra:
138295    case DW_OP_xor:
138296	break;
138297
138298    case DW_OP_le:
138299    case DW_OP_ge:
138300    case DW_OP_eq:
138301    case DW_OP_lt:
138302    case DW_OP_gt:
138303    case DW_OP_ne:
138304	break;
138305
138306    case DW_OP_skip:
138307    case DW_OP_bra:
138308	/* FIX: unhandled! OP_bra, OP_skip! */
138309	_dwarf_p_error(expr->ex_dbg, error, DW_DLE_BAD_EXPR_OPCODE);
138310	return (DW_DLV_NOCOUNT);
138311
138312    case DW_OP_piece:
138313	res = _dwarf_pro_encode_leb128_nm(val1, &operand_size,
138314					  encode_buffer,
138315					  sizeof(encode_buffer));
138316	if (res != DW_DLV_OK) {
138317	    _dwarf_p_error(expr->ex_dbg, error, DW_DLE_EXPR_LENGTH_BAD);
138318	    return (DW_DLV_NOCOUNT);
138319	}
138320	operand = (Dwarf_Small *) encode_buffer;
138321	break;
138322
138323    case DW_OP_nop:
138324	break;
138325
138326    default:
138327	_dwarf_p_error(expr->ex_dbg, error, DW_DLE_BAD_EXPR_OPCODE);
138328	return (DW_DLV_NOCOUNT);
138329    }
138330
138331    next_byte_offset = expr->ex_next_byte_offset + operand_size + 1;
138332
138333    if (next_byte_offset > MAXIMUM_LOC_EXPR_LENGTH) {
138334	_dwarf_p_error(expr->ex_dbg, error, DW_DLE_EXPR_LENGTH_BAD);
138335	return (DW_DLV_NOCOUNT);
138336    }
138337
138338    next_byte_ptr =
138339	&(expr->ex_byte_stream[0]) + expr->ex_next_byte_offset;
138340
138341    *next_byte_ptr = opcode;
138342    next_byte_ptr++;
138343    memcpy(next_byte_ptr, operand, operand_size);
138344
138345    expr->ex_next_byte_offset = next_byte_offset;
138346    return (next_byte_offset);
138347}
138348
138349Dwarf_Unsigned
138350dwarf_add_expr_addr_b(Dwarf_P_Expr expr,
138351		      Dwarf_Unsigned addr,
138352		      Dwarf_Unsigned sym_index, Dwarf_Error * error)
138353{
138354    Dwarf_P_Debug dbg;
138355    Dwarf_Small *next_byte_ptr;
138356    Dwarf_Unsigned next_byte_offset;
138357    int upointer_size;
138358
138359    if (expr == NULL) {
138360	_dwarf_p_error(NULL, error, DW_DLE_EXPR_NULL);
138361	return (DW_DLV_NOCOUNT);
138362    }
138363
138364    dbg = expr->ex_dbg;
138365    if (dbg == NULL) {
138366	_dwarf_p_error(NULL, error, DW_DLE_DBG_NULL);
138367	return (DW_DLV_NOCOUNT);
138368    }
138369
138370    upointer_size = dbg->de_pointer_size;
138371    next_byte_offset = expr->ex_next_byte_offset + upointer_size + 1;
138372    if (next_byte_offset > MAXIMUM_LOC_EXPR_LENGTH) {
138373	_dwarf_p_error(dbg, error, DW_DLE_EXPR_LENGTH_BAD);
138374	return (DW_DLV_NOCOUNT);
138375    }
138376
138377    next_byte_ptr =
138378	&(expr->ex_byte_stream[0]) + expr->ex_next_byte_offset;
138379
138380    *next_byte_ptr = DW_OP_addr;
138381    next_byte_ptr++;
138382    WRITE_UNALIGNED(dbg, next_byte_ptr, (const void *) &addr,
138383		    sizeof(addr), upointer_size);
138384
138385    if (expr->ex_reloc_offset != 0) {
138386	_dwarf_p_error(dbg, error, DW_DLE_MULTIPLE_RELOC_IN_EXPR);
138387	return (DW_DLV_NOCOUNT);
138388    }
138389
138390    expr->ex_reloc_sym_index = sym_index;
138391    expr->ex_reloc_offset = expr->ex_next_byte_offset + 1;
138392
138393    expr->ex_next_byte_offset = next_byte_offset;
138394    return (next_byte_offset);
138395}
138396
138397Dwarf_Unsigned
138398dwarf_add_expr_addr(Dwarf_P_Expr expr,
138399		    Dwarf_Unsigned addr,
138400		    Dwarf_Signed sym_index, Dwarf_Error * error)
138401{
138402    return
138403	dwarf_add_expr_addr_b(expr, addr, (Dwarf_Unsigned) sym_index,
138404			      error);
138405}
138406
138407
138408Dwarf_Unsigned
138409dwarf_expr_current_offset(Dwarf_P_Expr expr, Dwarf_Error * error)
138410{
138411    if (expr == NULL) {
138412	_dwarf_p_error(NULL, error, DW_DLE_EXPR_NULL);
138413	return (DW_DLV_NOCOUNT);
138414    }
138415
138416    if (expr->ex_dbg == NULL) {
138417	_dwarf_p_error(NULL, error, DW_DLE_DBG_NULL);
138418	return (DW_DLV_NOCOUNT);
138419    }
138420
138421    return (expr->ex_next_byte_offset);
138422}
138423
138424
138425Dwarf_Addr
138426dwarf_expr_into_block(Dwarf_P_Expr expr,
138427		      Dwarf_Unsigned * length, Dwarf_Error * error)
138428{
138429    if (expr == NULL) {
138430	_dwarf_p_error(NULL, error, DW_DLE_EXPR_NULL);
138431	return (DW_DLV_BADADDR);
138432    }
138433
138434    if (expr->ex_dbg == NULL) {
138435	_dwarf_p_error(NULL, error, DW_DLE_DBG_NULL);
138436	return (DW_DLV_BADADDR);
138437    }
138438
138439    if (length != NULL)
138440	*length = expr->ex_next_byte_offset;
138441    /* The following cast from pointer to integer is ok as long as
138442       Dwarf_Addr is at least as large as a pointer. Which is a
138443       requirement of libdwarf so must be satisfied (some compilers
138444       emit a warning about the following line). */
138445    return ((Dwarf_Addr) & (expr->ex_byte_stream[0]));
138446}
1384470707010001ada00000812400011e740000000a00000001402068280000062e000000660000000000000000000000000000001400000000libdwarf/pro_expr.h���/*
138448
138449  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
138450
138451  This program is free software; you can redistribute it and/or modify it
138452  under the terms of version 2.1 of the GNU Lesser General Public License
138453  as published by the Free Software Foundation.
138454
138455  This program is distributed in the hope that it would be useful, but
138456  WITHOUT ANY WARRANTY; without even the implied warranty of
138457  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
138458
138459  Further, this software is distributed without any warranty that it is
138460  free of the rightful claim of any third person regarding infringement
138461  or the like.  Any license provided herein, whether implied or
138462  otherwise, applies only to this software file.  Patent licenses, if
138463  any, provided herein do not apply to combinations of this program with
138464  other software, or any other product whatsoever.
138465
138466  You should have received a copy of the GNU Lesser General Public
138467  License along with this program; if not, write the Free Software
138468  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
138469  USA.
138470
138471  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
138472  Mountain View, CA 94043, or:
138473
138474  http://www.sgi.com
138475
138476  For further information regarding this notice, see:
138477
138478  http://oss.sgi.com/projects/GenInfo/NoticeExplan
138479
138480*/
138481
138482
138483#define	MAXIMUM_LOC_EXPR_LENGTH		20
138484
138485struct Dwarf_P_Expr_s {
138486    Dwarf_Small ex_byte_stream[MAXIMUM_LOC_EXPR_LENGTH];
138487    Dwarf_P_Debug ex_dbg;
138488    Dwarf_Unsigned ex_next_byte_offset;
138489    Dwarf_Unsigned ex_reloc_sym_index;
138490    Dwarf_Unsigned ex_reloc_offset;
138491};
138492��0707010001ada10000812400011e740000000a000000014020682700000742000000660000000000000000000000000000001600000000libdwarf/pro_finish.c�/*
138493
138494  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
138495
138496  This program is free software; you can redistribute it and/or modify it
138497  under the terms of version 2.1 of the GNU Lesser General Public License
138498  as published by the Free Software Foundation.
138499
138500  This program is distributed in the hope that it would be useful, but
138501  WITHOUT ANY WARRANTY; without even the implied warranty of
138502  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
138503
138504  Further, this software is distributed without any warranty that it is
138505  free of the rightful claim of any third person regarding infringement
138506  or the like.  Any license provided herein, whether implied or
138507  otherwise, applies only to this software file.  Patent licenses, if
138508  any, provided herein do not apply to combinations of this program with
138509  other software, or any other product whatsoever.
138510
138511  You should have received a copy of the GNU Lesser General Public
138512  License along with this program; if not, write the Free Software
138513  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
138514  USA.
138515
138516  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
138517  Mountain View, CA 94043, or:
138518
138519  http://www.sgi.com
138520
138521  For further information regarding this notice, see:
138522
138523  http://oss.sgi.com/projects/GenInfo/NoticeExplan
138524
138525*/
138526
138527
138528
138529#include "config.h"
138530#include "libdwarfdefs.h"
138531#include "pro_incl.h"
138532
138533/*---------------------------------------------------------------
138534	This routine deallocates all memory, and does some
138535	finishing up
138536-----------------------------------------------------------------*/
138537 /*ARGSUSED*/ Dwarf_Unsigned
138538dwarf_producer_finish(Dwarf_P_Debug dbg, Dwarf_Error * error)
138539{
138540    if (dbg->de_version_magic_number != PRO_VERSION_MAGIC) {
138541	DWARF_P_DBG_ERROR(dbg, DW_DLE_IA, DW_DLV_NOCOUNT);
138542    }
138543
138544    dwarf_p_dealloc((void *) dbg, 0);
138545    return 0;
138546}
138547��0707010001ada20000812400011e740000000a000000014020682700005cdd000000660000000000000000000000000000001500000000libdwarf/pro_forms.c��/*
138548
138549  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
138550
138551  This program is free software; you can redistribute it and/or modify it
138552  under the terms of version 2.1 of the GNU Lesser General Public License
138553  as published by the Free Software Foundation.
138554
138555  This program is distributed in the hope that it would be useful, but
138556  WITHOUT ANY WARRANTY; without even the implied warranty of
138557  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
138558
138559  Further, this software is distributed without any warranty that it is
138560  free of the rightful claim of any third person regarding infringement
138561  or the like.  Any license provided herein, whether implied or
138562  otherwise, applies only to this software file.  Patent licenses, if
138563  any, provided herein do not apply to combinations of this program with
138564  other software, or any other product whatsoever.
138565
138566  You should have received a copy of the GNU Lesser General Public
138567  License along with this program; if not, write the Free Software
138568  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
138569  USA.
138570
138571  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
138572  Mountain View, CA 94043, or:
138573
138574  http://www.sgi.com
138575
138576  For further information regarding this notice, see:
138577
138578  http://oss.sgi.com/projects/GenInfo/NoticeExplan
138579
138580*/
138581
138582
138583
138584#include "config.h"
138585#include "libdwarfdefs.h"
138586#include <stdio.h>
138587#include <string.h>
138588#include <limits.h>
138589#include "pro_incl.h"
138590#include "pro_expr.h"
138591
138592#ifndef R_MIPS_NONE
138593#define R_MIPS_NONE 0
138594#endif
138595
138596
138597    /* Indicates no relocation needed. */
138598#define NO_ELF_SYM_INDEX	0
138599
138600
138601/* adds an attribute to a die */
138602extern void _dwarf_pro_add_at_to_die(Dwarf_P_Die die,
138603				     Dwarf_P_Attribute attr);
138604
138605/*
138606    This function adds an attribute whose value is
138607    a target address to the given die.  The attribute
138608    is given the name provided by attr.  The address
138609    is given in pc_value.
138610*/
138611/* old interface */
138612Dwarf_P_Attribute
138613dwarf_add_AT_targ_address(Dwarf_P_Debug dbg,
138614			  Dwarf_P_Die ownerdie,
138615			  Dwarf_Half attr,
138616			  Dwarf_Unsigned pc_value,
138617			  Dwarf_Signed sym_index, Dwarf_Error * error)
138618{
138619    return
138620	dwarf_add_AT_targ_address_b(dbg,
138621				    ownerdie,
138622				    attr,
138623				    pc_value,
138624				    (Dwarf_Unsigned) sym_index, error);
138625}
138626
138627/* new interface */
138628Dwarf_P_Attribute
138629dwarf_add_AT_targ_address_b(Dwarf_P_Debug dbg,
138630			    Dwarf_P_Die ownerdie,
138631			    Dwarf_Half attr,
138632			    Dwarf_Unsigned pc_value,
138633			    Dwarf_Unsigned sym_index,
138634			    Dwarf_Error * error)
138635{
138636    Dwarf_P_Attribute new_attr;
138637    int upointer_size = dbg->de_pointer_size;
138638
138639    if (dbg == NULL) {
138640	_dwarf_p_error(NULL, error, DW_DLE_DBG_NULL);
138641	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
138642    }
138643
138644    if (ownerdie == NULL) {
138645	_dwarf_p_error(dbg, error, DW_DLE_DIE_NULL);
138646	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
138647    }
138648
138649    if (attr != DW_AT_low_pc && attr != DW_AT_high_pc &&
138650	attr != DW_AT_MIPS_loop_begin &&
138651	attr != DW_AT_MIPS_tail_loop_begin &&
138652	attr != DW_AT_MIPS_epilog_begin) {
138653	_dwarf_p_error(dbg, error, DW_DLE_INPUT_ATTR_BAD);
138654	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
138655    }
138656
138657    new_attr = (Dwarf_P_Attribute)
138658	_dwarf_p_get_alloc(dbg, sizeof(struct Dwarf_P_Attribute_s));
138659    if (new_attr == NULL) {
138660	_dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
138661	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
138662    }
138663
138664    new_attr->ar_attribute = attr;
138665    new_attr->ar_attribute_form = DW_FORM_addr;
138666    new_attr->ar_nbytes = upointer_size;
138667    new_attr->ar_rel_symidx = sym_index;
138668    new_attr->ar_reloc_len = upointer_size;
138669    new_attr->ar_next = 0;
138670    if (sym_index != NO_ELF_SYM_INDEX)
138671	new_attr->ar_rel_type = dbg->de_ptr_reloc;
138672    else
138673	new_attr->ar_rel_type = R_MIPS_NONE;
138674
138675    new_attr->ar_data = (char *)
138676	_dwarf_p_get_alloc(dbg, upointer_size);
138677    if (new_attr->ar_data == NULL) {
138678	_dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
138679	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
138680    }
138681    WRITE_UNALIGNED(dbg, new_attr->ar_data,
138682		    (const void *) &pc_value,
138683		    sizeof(pc_value), upointer_size);
138684
138685    /* add attribute to the die */
138686    _dwarf_pro_add_at_to_die(ownerdie, new_attr);
138687    return new_attr;
138688}
138689
138690
138691/*
138692    This function adds attributes whose value
138693    is an unsigned constant.  It determines the
138694    size of the value field from the value of
138695    the constant.
138696*/
138697Dwarf_P_Attribute
138698dwarf_add_AT_unsigned_const(Dwarf_P_Debug dbg,
138699			    Dwarf_P_Die ownerdie,
138700			    Dwarf_Half attr,
138701			    Dwarf_Unsigned value, Dwarf_Error * error)
138702{
138703    Dwarf_P_Attribute new_attr;
138704    Dwarf_Half attr_form;
138705    Dwarf_Small size;
138706
138707    if (dbg == NULL) {
138708	_dwarf_p_error(NULL, error, DW_DLE_DBG_NULL);
138709	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
138710    }
138711
138712    if (ownerdie == NULL) {
138713	_dwarf_p_error(dbg, error, DW_DLE_DIE_NULL);
138714	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
138715    }
138716
138717    switch (attr) {
138718    case DW_AT_ordering:
138719    case DW_AT_byte_size:
138720    case DW_AT_bit_offset:
138721    case DW_AT_bit_size:
138722    case DW_AT_inline:
138723    case DW_AT_language:
138724    case DW_AT_visibility:
138725    case DW_AT_virtuality:
138726    case DW_AT_accessibility:
138727    case DW_AT_address_class:
138728    case DW_AT_calling_convention:
138729    case DW_AT_encoding:
138730    case DW_AT_identifier_case:
138731    case DW_AT_MIPS_loop_unroll_factor:
138732    case DW_AT_MIPS_software_pipeline_depth:
138733	break;
138734
138735    case DW_AT_decl_column:
138736    case DW_AT_decl_file:
138737    case DW_AT_decl_line:
138738    case DW_AT_const_value:
138739    case DW_AT_start_scope:
138740    case DW_AT_stride_size:
138741    case DW_AT_count:
138742	break;
138743
138744    default:{
138745	    _dwarf_p_error(dbg, error, DW_DLE_INPUT_ATTR_BAD);
138746	    return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
138747	}
138748    }
138749
138750    /*
138751       Compute the number of bytes needed to hold constant. */
138752    if (value <= UCHAR_MAX) {
138753	attr_form = DW_FORM_data1;
138754	size = 1;
138755    } else if (value <= USHRT_MAX) {
138756	attr_form = DW_FORM_data2;
138757	size = 2;
138758    } else if (value <= UINT_MAX) {
138759	attr_form = DW_FORM_data4;
138760	size = 4;
138761    } else {
138762	attr_form = DW_FORM_data8;
138763	size = 8;
138764    }
138765
138766    new_attr = (Dwarf_P_Attribute)
138767	_dwarf_p_get_alloc(dbg, sizeof(struct Dwarf_P_Attribute_s));
138768    if (new_attr == NULL) {
138769	_dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
138770	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
138771    }
138772
138773    new_attr->ar_attribute = attr;
138774    new_attr->ar_attribute_form = attr_form;
138775    new_attr->ar_rel_type = R_MIPS_NONE;
138776    new_attr->ar_reloc_len = 0;	/* irrelevant: unused with R_MIPS_NONE */
138777    new_attr->ar_nbytes = size;
138778    new_attr->ar_next = 0;
138779
138780    new_attr->ar_data = (char *)
138781	_dwarf_p_get_alloc(dbg, size);
138782    if (new_attr->ar_data == NULL) {
138783	_dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
138784	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
138785    }
138786    WRITE_UNALIGNED(dbg, new_attr->ar_data,
138787		    (const void *) &value, sizeof(value), size);
138788
138789    /* add attribute to the die */
138790    _dwarf_pro_add_at_to_die(ownerdie, new_attr);
138791    return new_attr;
138792}
138793
138794
138795/*
138796    This function adds attributes whose value
138797    is an signed constant.  It determines the
138798    size of the value field from the value of
138799    the constant.
138800*/
138801Dwarf_P_Attribute
138802dwarf_add_AT_signed_const(Dwarf_P_Debug dbg,
138803			  Dwarf_P_Die ownerdie,
138804			  Dwarf_Half attr,
138805			  Dwarf_Signed value, Dwarf_Error * error)
138806{
138807    Dwarf_P_Attribute new_attr;
138808    Dwarf_Half attr_form;
138809    Dwarf_Small size;
138810
138811    if (dbg == NULL) {
138812	_dwarf_p_error(NULL, error, DW_DLE_DBG_NULL);
138813	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
138814    }
138815
138816    if (ownerdie == NULL) {
138817	_dwarf_p_error(dbg, error, DW_DLE_DIE_NULL);
138818	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
138819    }
138820
138821    switch (attr) {
138822    case DW_AT_upper_bound:
138823    case DW_AT_lower_bound:
138824	break;
138825
138826    default:{
138827	    _dwarf_p_error(dbg, error, DW_DLE_INPUT_ATTR_BAD);
138828	    return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
138829	}
138830    }
138831
138832    /*
138833       Compute the number of bytes needed to hold constant. */
138834    if (value >= SCHAR_MIN && value <= SCHAR_MAX) {
138835	attr_form = DW_FORM_data1;
138836	size = 1;
138837    } else if (value >= SHRT_MIN && value <= SHRT_MAX) {
138838	attr_form = DW_FORM_data2;
138839	size = 2;
138840    } else if (value >= INT_MIN && value <= INT_MAX) {
138841	attr_form = DW_FORM_data4;
138842	size = 4;
138843    } else {
138844	attr_form = DW_FORM_data8;
138845	size = 8;
138846    }
138847
138848    new_attr = (Dwarf_P_Attribute)
138849	_dwarf_p_get_alloc(dbg, sizeof(struct Dwarf_P_Attribute_s));
138850    if (new_attr == NULL) {
138851	_dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
138852	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
138853    }
138854
138855    new_attr->ar_attribute = attr;
138856    new_attr->ar_attribute_form = attr_form;
138857    new_attr->ar_rel_type = R_MIPS_NONE;
138858    new_attr->ar_reloc_len = 0;	/* irrelevant: unused with R_MIPS_NONE
138859				 */
138860    new_attr->ar_nbytes = size;
138861    new_attr->ar_next = 0;
138862
138863    new_attr->ar_data = (char *)
138864	_dwarf_p_get_alloc(dbg, size);
138865    if (new_attr->ar_data == NULL) {
138866	_dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
138867	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
138868    }
138869    WRITE_UNALIGNED(dbg, new_attr->ar_data,
138870		    (const void *) &value, sizeof(value), size);
138871
138872    /* add attribute to the die */
138873    _dwarf_pro_add_at_to_die(ownerdie, new_attr);
138874    return new_attr;
138875}
138876
138877
138878/*
138879    This function adds attributes whose value
138880    is a location expression.
138881*/
138882Dwarf_P_Attribute
138883dwarf_add_AT_location_expr(Dwarf_P_Debug dbg,
138884			   Dwarf_P_Die ownerdie,
138885			   Dwarf_Half attr,
138886			   Dwarf_P_Expr loc_expr, Dwarf_Error * error)
138887{
138888    char encode_buffer[ENCODE_SPACE_NEEDED];
138889    int res;
138890    Dwarf_P_Attribute new_attr;
138891    Dwarf_Half attr_form;
138892    char *len_str;
138893    int len_size;
138894    int block_size;
138895    char *block_dest_ptr;
138896    int do_len_as_int = 0;
138897
138898    if (dbg == NULL) {
138899	_dwarf_p_error(NULL, error, DW_DLE_DBG_NULL);
138900	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
138901    }
138902
138903    if (ownerdie == NULL) {
138904	_dwarf_p_error(dbg, error, DW_DLE_DIE_NULL);
138905	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
138906    }
138907
138908    if (loc_expr == NULL) {
138909	_dwarf_p_error(dbg, error, DW_DLE_EXPR_NULL);
138910	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
138911    }
138912
138913    if (loc_expr->ex_dbg != dbg) {
138914	_dwarf_p_error(dbg, error, DW_DLE_LOC_EXPR_BAD);
138915	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
138916    }
138917    block_size = loc_expr->ex_next_byte_offset;
138918
138919    switch (attr) {
138920    case DW_AT_location:
138921    case DW_AT_string_length:
138922    case DW_AT_const_value:
138923    case DW_AT_use_location:
138924    case DW_AT_return_addr:
138925    case DW_AT_data_member_location:
138926    case DW_AT_frame_base:
138927    case DW_AT_static_link:
138928    case DW_AT_vtable_elem_location:
138929	break;
138930
138931    default:{
138932	    _dwarf_p_error(dbg, error, DW_DLE_INPUT_ATTR_BAD);
138933	    return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
138934	}
138935    }
138936
138937    /*
138938       Compute the number of bytes needed to hold constant. */
138939    if (block_size <= UCHAR_MAX) {
138940	attr_form = DW_FORM_block1;
138941	len_size = 1;
138942	do_len_as_int = 1;
138943    } else if (block_size <= USHRT_MAX) {
138944	attr_form = DW_FORM_block2;
138945	len_size = 2;
138946	do_len_as_int = 1;
138947    } else if (block_size <= UINT_MAX) {
138948	attr_form = DW_FORM_block4;
138949	len_size = 4;
138950	do_len_as_int = 1;
138951    } else {
138952	attr_form = DW_FORM_block;
138953	res = _dwarf_pro_encode_leb128_nm(block_size, &len_size,
138954					  encode_buffer,
138955					  sizeof(encode_buffer));
138956	if (res != DW_DLV_OK) {
138957	    _dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
138958	    return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
138959	}
138960	len_str = (char *) encode_buffer;
138961    }
138962
138963    new_attr = (Dwarf_P_Attribute)
138964	_dwarf_p_get_alloc(dbg, sizeof(struct Dwarf_P_Attribute_s));
138965    if (new_attr == NULL) {
138966	_dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
138967	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
138968    }
138969
138970    new_attr->ar_attribute = attr;
138971    new_attr->ar_attribute_form = attr_form;
138972    new_attr->ar_reloc_len = dbg->de_pointer_size;
138973    if (loc_expr->ex_reloc_sym_index != NO_ELF_SYM_INDEX) {
138974	new_attr->ar_rel_type = dbg->de_ptr_reloc;
138975    } else {
138976	new_attr->ar_rel_type = R_MIPS_NONE;
138977    }
138978    new_attr->ar_rel_symidx = loc_expr->ex_reloc_sym_index;
138979    new_attr->ar_rel_offset =
138980	(Dwarf_Word) loc_expr->ex_reloc_offset + len_size;
138981
138982    new_attr->ar_nbytes = block_size + len_size;
138983
138984    new_attr->ar_next = 0;
138985    new_attr->ar_data = block_dest_ptr =
138986	(char *) _dwarf_p_get_alloc(dbg, block_size + len_size);
138987    if (new_attr->ar_data == NULL) {
138988	_dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
138989	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
138990    }
138991
138992    if (do_len_as_int) {
138993	WRITE_UNALIGNED(dbg, block_dest_ptr, (const void *) &block_size,
138994			sizeof(block_size), len_size);
138995    } else {
138996	/* is uleb number form */
138997	memcpy(block_dest_ptr, len_str, len_size);
138998    }
138999    block_dest_ptr += len_size;
139000    memcpy(block_dest_ptr, &(loc_expr->ex_byte_stream[0]), block_size);
139001
139002    /* add attribute to the die */
139003    _dwarf_pro_add_at_to_die(ownerdie, new_attr);
139004    return new_attr;
139005}
139006
139007
139008/*
139009    This function adds attributes of reference class.
139010    The references here are local CU references,
139011    not DW_FORM_ref_addr.
139012    The offset field is 4 bytes for 32-bit objects,
139013    and 8-bytes for 64-bit objects.  Otherdie is the
139014    that is referenced by ownerdie.
139015
139016    For reference attributes, the ar_data and ar_nbytes
139017    are not needed.  Instead, the ar_ref_die points to
139018    the other die, and its di_offset value is used as
139019    the reference value.
139020*/
139021Dwarf_P_Attribute
139022dwarf_add_AT_reference(Dwarf_P_Debug dbg,
139023		       Dwarf_P_Die ownerdie,
139024		       Dwarf_Half attr,
139025		       Dwarf_P_Die otherdie, Dwarf_Error * error)
139026{
139027    Dwarf_P_Attribute new_attr;
139028
139029    if (dbg == NULL) {
139030	_dwarf_p_error(NULL, error, DW_DLE_DBG_NULL);
139031	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139032    }
139033
139034    if (ownerdie == NULL) {
139035	_dwarf_p_error(dbg, error, DW_DLE_DIE_NULL);
139036	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139037    }
139038
139039    if (otherdie == NULL) {
139040	_dwarf_p_error(dbg, error, DW_DLE_DIE_NULL);
139041	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139042    }
139043
139044    switch (attr) {
139045    case DW_AT_specification:
139046    case DW_AT_discr:
139047    case DW_AT_common_reference:
139048    case DW_AT_import:
139049    case DW_AT_containing_type:
139050    case DW_AT_default_value:
139051    case DW_AT_abstract_origin:
139052    case DW_AT_friend:
139053    case DW_AT_priority:
139054    case DW_AT_type:
139055    case DW_AT_lower_bound:
139056    case DW_AT_upper_bound:
139057    case DW_AT_count:
139058    case DW_AT_sibling:
139059    case DW_AT_MIPS_stride:
139060    case DW_AT_MIPS_stride_byte:
139061    case DW_AT_MIPS_stride_elem:
139062    case DW_AT_MIPS_clone_origin:
139063    case DW_AT_MIPS_ptr_dopetype:
139064    case DW_AT_MIPS_allocatable_dopetype:
139065    case DW_AT_MIPS_assumed_shape_dopetype:
139066	break;
139067
139068    default:{
139069	    _dwarf_p_error(dbg, error, DW_DLE_INPUT_ATTR_BAD);
139070	    return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139071	}
139072    }
139073
139074    new_attr = (Dwarf_P_Attribute)
139075	_dwarf_p_get_alloc(dbg, sizeof(struct Dwarf_P_Attribute_s));
139076    if (new_attr == NULL) {
139077	_dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
139078	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139079    }
139080
139081    new_attr->ar_attribute = attr;
139082    new_attr->ar_attribute_form = dbg->de_ar_ref_attr_form;
139083    new_attr->ar_nbytes = dbg->de_offset_size;
139084    new_attr->ar_reloc_len = dbg->de_offset_size;
139085    new_attr->ar_ref_die = otherdie;
139086    new_attr->ar_rel_type = R_MIPS_NONE;
139087    new_attr->ar_next = 0;
139088
139089    /* add attribute to the die */
139090    _dwarf_pro_add_at_to_die(ownerdie, new_attr);
139091    return new_attr;
139092}
139093
139094
139095/*
139096    This function adds attributes of the flag class.
139097*/
139098Dwarf_P_Attribute
139099dwarf_add_AT_flag(Dwarf_P_Debug dbg,
139100		  Dwarf_P_Die ownerdie,
139101		  Dwarf_Half attr,
139102		  Dwarf_Small flag, Dwarf_Error * error)
139103{
139104    Dwarf_P_Attribute new_attr;
139105
139106    if (dbg == NULL) {
139107	_dwarf_p_error(NULL, error, DW_DLE_DBG_NULL);
139108	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139109    }
139110
139111    if (ownerdie == NULL) {
139112	_dwarf_p_error(dbg, error, DW_DLE_DIE_NULL);
139113	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139114    }
139115
139116    switch (attr) {
139117    case DW_AT_is_optional:
139118    case DW_AT_artificial:
139119    case DW_AT_declaration:
139120    case DW_AT_external:
139121    case DW_AT_prototyped:
139122    case DW_AT_variable_parameter:
139123    case DW_AT_MIPS_has_inlines:
139124    case DW_AT_MIPS_assumed_size:
139125	break;
139126
139127    default:{
139128	    _dwarf_p_error(dbg, error, DW_DLE_INPUT_ATTR_BAD);
139129	    return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139130	}
139131    }
139132
139133    new_attr = (Dwarf_P_Attribute)
139134	_dwarf_p_get_alloc(dbg, sizeof(struct Dwarf_P_Attribute_s));
139135    if (new_attr == NULL) {
139136	_dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
139137	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139138    }
139139
139140    new_attr->ar_attribute = attr;
139141    new_attr->ar_attribute_form = DW_FORM_flag;
139142    new_attr->ar_nbytes = 1;
139143    new_attr->ar_reloc_len = 0;	/* not used */
139144    new_attr->ar_rel_type = R_MIPS_NONE;
139145    new_attr->ar_next = 0;
139146
139147    new_attr->ar_data = (char *)
139148	_dwarf_p_get_alloc(dbg, 1);
139149    if (new_attr->ar_data == NULL) {
139150	_dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
139151	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139152    }
139153    memcpy(new_attr->ar_data, &flag, 1);
139154
139155    /* add attribute to the die */
139156    _dwarf_pro_add_at_to_die(ownerdie, new_attr);
139157    return new_attr;
139158}
139159
139160
139161/*
139162    This function adds values of attributes
139163    belonging to the string class.
139164*/
139165Dwarf_P_Attribute
139166dwarf_add_AT_string(Dwarf_P_Debug dbg,
139167		    Dwarf_P_Die ownerdie,
139168		    Dwarf_Half attr, char *string, Dwarf_Error * error)
139169{
139170    Dwarf_P_Attribute new_attr;
139171
139172    if (dbg == NULL) {
139173	_dwarf_p_error(NULL, error, DW_DLE_DBG_NULL);
139174	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139175    }
139176
139177    if (ownerdie == NULL) {
139178	_dwarf_p_error(dbg, error, DW_DLE_DIE_NULL);
139179	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139180    }
139181
139182    new_attr = (Dwarf_P_Attribute)
139183	_dwarf_p_get_alloc(dbg, sizeof(struct Dwarf_P_Attribute_s));
139184    if (new_attr == NULL) {
139185	_dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
139186	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139187    }
139188
139189    switch (attr) {
139190    case DW_AT_name:
139191    case DW_AT_comp_dir:
139192    case DW_AT_const_value:
139193    case DW_AT_producer:
139194    case DW_AT_MIPS_linkage_name:
139195    case DW_AT_MIPS_abstract_name:
139196	break;
139197
139198    default:{
139199	    _dwarf_p_error(dbg, error, DW_DLE_INPUT_ATTR_BAD);
139200	    return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139201	}
139202    }
139203
139204    new_attr->ar_attribute = attr;
139205    new_attr->ar_attribute_form = DW_FORM_string;
139206    new_attr->ar_nbytes = strlen(string) + 1;
139207    new_attr->ar_next = 0;
139208
139209    new_attr->ar_data =
139210	(char *) _dwarf_p_get_alloc(NULL, strlen(string) + 1);
139211    if (new_attr->ar_data == NULL) {
139212	_dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
139213	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139214    }
139215
139216    strcpy(new_attr->ar_data, string);
139217    new_attr->ar_rel_type = R_MIPS_NONE;
139218    new_attr->ar_reloc_len = 0;	/* unused for R_MIPS_NONE */
139219
139220    /* add attribute to the die */
139221    _dwarf_pro_add_at_to_die(ownerdie, new_attr);
139222    return new_attr;
139223}
139224
139225
139226Dwarf_P_Attribute
139227dwarf_add_AT_const_value_string(Dwarf_P_Die ownerdie,
139228				char *string_value, Dwarf_Error * error)
139229{
139230    Dwarf_P_Attribute new_attr;
139231
139232    if (ownerdie == NULL) {
139233	_dwarf_p_error(NULL, error, DW_DLE_DIE_NULL);
139234	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139235    }
139236
139237    new_attr = (Dwarf_P_Attribute)
139238	_dwarf_p_get_alloc(NULL, sizeof(struct Dwarf_P_Attribute_s));
139239    if (new_attr == NULL) {
139240	_dwarf_p_error(NULL, error, DW_DLE_ALLOC_FAIL);
139241	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139242    }
139243
139244    new_attr->ar_attribute = DW_AT_const_value;
139245    new_attr->ar_attribute_form = DW_FORM_string;
139246    new_attr->ar_nbytes = strlen(string_value) + 1;
139247    new_attr->ar_next = 0;
139248
139249    new_attr->ar_data =
139250	(char *) _dwarf_p_get_alloc(NULL, strlen(string_value) + 1);
139251    if (new_attr->ar_data == NULL) {
139252	_dwarf_p_error(NULL, error, DW_DLE_ALLOC_FAIL);
139253	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139254    }
139255
139256    strcpy(new_attr->ar_data, string_value);
139257    new_attr->ar_rel_type = R_MIPS_NONE;
139258    new_attr->ar_reloc_len = 0;	/* unused for R_MIPS_NONE */
139259
139260    /* add attribute to the die */
139261    _dwarf_pro_add_at_to_die(ownerdie, new_attr);
139262    return new_attr;
139263}
139264
139265
139266Dwarf_P_Attribute
139267dwarf_add_AT_producer(Dwarf_P_Die ownerdie,
139268		      char *producer_string, Dwarf_Error * error)
139269{
139270    Dwarf_P_Attribute new_attr;
139271
139272    if (ownerdie == NULL) {
139273	_dwarf_p_error(NULL, error, DW_DLE_DIE_NULL);
139274	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139275    }
139276
139277    new_attr = (Dwarf_P_Attribute)
139278	_dwarf_p_get_alloc(NULL, sizeof(struct Dwarf_P_Attribute_s));
139279    if (new_attr == NULL) {
139280	_dwarf_p_error(NULL, error, DW_DLE_ALLOC_FAIL);
139281	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139282    }
139283
139284    new_attr->ar_attribute = DW_AT_producer;
139285    new_attr->ar_attribute_form = DW_FORM_string;
139286    new_attr->ar_nbytes = strlen(producer_string) + 1;
139287    new_attr->ar_next = 0;
139288
139289    new_attr->ar_data =
139290	(char *) _dwarf_p_get_alloc(NULL, strlen(producer_string) + 1);
139291    if (new_attr->ar_data == NULL) {
139292	_dwarf_p_error(NULL, error, DW_DLE_ALLOC_FAIL);
139293	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139294    }
139295
139296    strcpy(new_attr->ar_data, producer_string);
139297    new_attr->ar_rel_type = R_MIPS_NONE;
139298    new_attr->ar_reloc_len = 0;	/* unused for R_MIPS_NONE */
139299
139300    /* add attribute to the die */
139301    _dwarf_pro_add_at_to_die(ownerdie, new_attr);
139302    return new_attr;
139303}
139304
139305
139306Dwarf_P_Attribute
139307dwarf_add_AT_const_value_signedint(Dwarf_P_Die ownerdie,
139308				   Dwarf_Signed signed_value,
139309				   Dwarf_Error * error)
139310{
139311    Dwarf_P_Attribute new_attr;
139312    int leb_size;
139313    char encode_buffer[ENCODE_SPACE_NEEDED];
139314    int res;
139315
139316    if (ownerdie == NULL) {
139317	_dwarf_p_error(NULL, error, DW_DLE_DIE_NULL);
139318	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139319    }
139320
139321    new_attr = (Dwarf_P_Attribute)
139322	_dwarf_p_get_alloc(NULL, sizeof(struct Dwarf_P_Attribute_s));
139323    if (new_attr == NULL) {
139324	_dwarf_p_error(NULL, error, DW_DLE_ALLOC_FAIL);
139325	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139326    }
139327
139328    new_attr->ar_attribute = DW_AT_const_value;
139329    new_attr->ar_attribute_form = DW_FORM_sdata;
139330    new_attr->ar_rel_type = R_MIPS_NONE;
139331    new_attr->ar_reloc_len = 0;	/* unused for R_MIPS_NONE */
139332    new_attr->ar_next = 0;
139333
139334    res = _dwarf_pro_encode_signed_leb128_nm(signed_value, &leb_size,
139335					     encode_buffer,
139336					     sizeof(encode_buffer));
139337    if (res != DW_DLV_OK) {
139338	_dwarf_p_error(NULL, error, DW_DLE_ALLOC_FAIL);
139339	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139340    }
139341    new_attr->ar_data = (char *)
139342	_dwarf_p_get_alloc(NULL, leb_size);
139343    if (new_attr->ar_data == NULL) {
139344	_dwarf_p_error(NULL, error, DW_DLE_ALLOC_FAIL);
139345	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139346    }
139347    memcpy(new_attr->ar_data, encode_buffer, leb_size);
139348    new_attr->ar_nbytes = leb_size;
139349
139350    /* add attribute to the die */
139351    _dwarf_pro_add_at_to_die(ownerdie, new_attr);
139352    return new_attr;
139353}
139354
139355
139356Dwarf_P_Attribute
139357dwarf_add_AT_const_value_unsignedint(Dwarf_P_Die ownerdie,
139358				     Dwarf_Unsigned unsigned_value,
139359				     Dwarf_Error * error)
139360{
139361    Dwarf_P_Attribute new_attr;
139362    int leb_size;
139363    char encode_buffer[ENCODE_SPACE_NEEDED];
139364    int res;
139365
139366    if (ownerdie == NULL) {
139367	_dwarf_p_error(NULL, error, DW_DLE_DIE_NULL);
139368	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139369    }
139370
139371    new_attr = (Dwarf_P_Attribute)
139372	_dwarf_p_get_alloc(NULL, sizeof(struct Dwarf_P_Attribute_s));
139373    if (new_attr == NULL) {
139374	_dwarf_p_error(NULL, error, DW_DLE_ALLOC_FAIL);
139375	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139376    }
139377
139378    new_attr->ar_attribute = DW_AT_const_value;
139379    new_attr->ar_attribute_form = DW_FORM_udata;
139380    new_attr->ar_rel_type = R_MIPS_NONE;
139381    new_attr->ar_reloc_len = 0;	/* unused for R_MIPS_NONE */
139382    new_attr->ar_next = 0;
139383
139384    res = _dwarf_pro_encode_leb128_nm(unsigned_value, &leb_size,
139385				      encode_buffer,
139386				      sizeof(encode_buffer));
139387    if (res != DW_DLV_OK) {
139388	_dwarf_p_error(NULL, error, DW_DLE_ALLOC_FAIL);
139389	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139390    }
139391    new_attr->ar_data = (char *)
139392	_dwarf_p_get_alloc(NULL, leb_size);
139393    if (new_attr->ar_data == NULL) {
139394	_dwarf_p_error(NULL, error, DW_DLE_ALLOC_FAIL);
139395	return ((Dwarf_P_Attribute) DW_DLV_BADADDR);
139396    }
139397    memcpy(new_attr->ar_data, encode_buffer, leb_size);
139398    new_attr->ar_nbytes = leb_size;
139399
139400    /* add attribute to the die */
139401    _dwarf_pro_add_at_to_die(ownerdie, new_attr);
139402    return new_attr;
139403}
139404���0707010001ada30000812400011e740000000a0000000140206827000040c0000000660000000000000000000000000000001500000000libdwarf/pro_frame.c��/*
139405
139406  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
139407
139408  This program is free software; you can redistribute it and/or modify it
139409  under the terms of version 2.1 of the GNU Lesser General Public License
139410  as published by the Free Software Foundation.
139411
139412  This program is distributed in the hope that it would be useful, but
139413  WITHOUT ANY WARRANTY; without even the implied warranty of
139414  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
139415
139416  Further, this software is distributed without any warranty that it is
139417  free of the rightful claim of any third person regarding infringement
139418  or the like.  Any license provided herein, whether implied or
139419  otherwise, applies only to this software file.  Patent licenses, if
139420  any, provided herein do not apply to combinations of this program with
139421  other software, or any other product whatsoever.
139422
139423  You should have received a copy of the GNU Lesser General Public
139424  License along with this program; if not, write the Free Software
139425  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
139426  USA.
139427
139428  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
139429  Mountain View, CA 94043, or:
139430
139431  http://www.sgi.com
139432
139433  For further information regarding this notice, see:
139434
139435  http://oss.sgi.com/projects/GenInfo/NoticeExplan
139436
139437*/
139438
139439
139440
139441#include "config.h"
139442#include "libdwarfdefs.h"
139443#include <stdio.h>
139444#include <string.h>
139445#include <limits.h>
139446#include "pro_incl.h"
139447#include "pro_frame.h"
139448
139449static void _dwarf_pro_add_to_fde(Dwarf_P_Fde fde,
139450				  Dwarf_P_Frame_Pgm inst);
139451
139452/*-------------------------------------------------------------------------
139453	This functions adds a cie struct to the debug pointer. Its in the
139454	form of a linked list.
139455	augmenter: string reps augmentation (implementation defined)
139456	code_align: alignment of code
139457	data_align: alignment of data
139458	init_bytes: byts having initial instructions
139459	init_n_bytes: number of bytes of initial instructions
139460--------------------------------------------------------------------------*/
139461Dwarf_Unsigned
139462dwarf_add_frame_cie(Dwarf_P_Debug dbg,
139463		    char *augmenter,
139464		    Dwarf_Small code_align,
139465		    Dwarf_Small data_align,
139466		    Dwarf_Small return_reg,
139467		    Dwarf_Ptr init_bytes,
139468		    Dwarf_Unsigned init_n_bytes, Dwarf_Error * error)
139469{
139470    Dwarf_P_Cie curcie;
139471
139472    if (dbg->de_frame_cies == NULL) {
139473	dbg->de_frame_cies = (Dwarf_P_Cie)
139474	    _dwarf_p_get_alloc(dbg, sizeof(struct Dwarf_P_Cie_s));
139475	if (dbg->de_frame_cies == NULL) {
139476	    DWARF_P_DBG_ERROR(dbg, DW_DLE_CIE_ALLOC, DW_DLV_NOCOUNT);
139477	}
139478	curcie = dbg->de_frame_cies;
139479	dbg->de_n_cie = 1;
139480	dbg->de_last_cie = curcie;
139481    } else {
139482	curcie = dbg->de_last_cie;
139483	curcie->cie_next = (Dwarf_P_Cie)
139484	    _dwarf_p_get_alloc(dbg, sizeof(struct Dwarf_P_Cie_s));
139485	if (curcie->cie_next == NULL) {
139486	    DWARF_P_DBG_ERROR(dbg, DW_DLE_CIE_ALLOC, DW_DLV_NOCOUNT);
139487	}
139488	curcie = curcie->cie_next;
139489	dbg->de_n_cie++;
139490	dbg->de_last_cie = curcie;
139491    }
139492    curcie->cie_version = DW_CIE_VERSION;
139493    curcie->cie_aug = augmenter;
139494    curcie->cie_code_align = code_align;
139495    curcie->cie_data_align = data_align;
139496    curcie->cie_ret_reg = return_reg;
139497    curcie->cie_inst = (char *) init_bytes;
139498    curcie->cie_inst_bytes = (long) init_n_bytes;
139499    curcie->cie_next = NULL;
139500    return dbg->de_n_cie;
139501}
139502
139503
139504/*-------------------------------------------------------------------------
139505	This functions adds a fde struct to the debug pointer. Its in the
139506	form of a linked list.
139507	die: subprogram/function die corresponding to this fde
139508	cie: cie referred to by this fde, obtained from call to
139509	    add_frame_cie() routine.
139510	virt_addr: beginning address
139511	code_len: length of code reps by the fde
139512--------------------------------------------------------------------------*/
139513 /*ARGSUSED*/			/* pretend all args used */
139514    Dwarf_Unsigned
139515dwarf_add_frame_fde(Dwarf_P_Debug dbg,
139516		    Dwarf_P_Fde fde,
139517		    Dwarf_P_Die die,
139518		    Dwarf_Unsigned cie,
139519		    Dwarf_Unsigned virt_addr,
139520		    Dwarf_Unsigned code_len,
139521		    Dwarf_Unsigned symidx, Dwarf_Error * error)
139522{
139523    return dwarf_add_frame_fde_b(dbg, fde, die, cie, virt_addr,
139524				 code_len, symidx, 0, 0, error);
139525}
139526
139527/*ARGSUSED10*/
139528Dwarf_Unsigned
139529dwarf_add_frame_fde_b(Dwarf_P_Debug dbg,
139530		      Dwarf_P_Fde fde,
139531		      Dwarf_P_Die die,
139532		      Dwarf_Unsigned cie,
139533		      Dwarf_Unsigned virt_addr,
139534		      Dwarf_Unsigned code_len,
139535		      Dwarf_Unsigned symidx,
139536		      Dwarf_Unsigned symidx_of_end,
139537		      Dwarf_Addr offset_from_end_sym,
139538		      Dwarf_Error * error)
139539{
139540    Dwarf_P_Fde curfde;
139541
139542    fde->fde_die = die;
139543    fde->fde_cie = (long) cie;
139544    fde->fde_initloc = virt_addr;
139545    fde->fde_r_symidx = symidx;
139546    fde->fde_addr_range = code_len;
139547    fde->fde_offset_into_exception_tables = DW_DLX_NO_EH_OFFSET;
139548    fde->fde_exception_table_symbol = 0;
139549    fde->fde_end_symbol_offset = offset_from_end_sym;
139550    fde->fde_end_symbol = symidx_of_end;
139551
139552    curfde = dbg->de_last_fde;
139553    if (curfde == NULL) {
139554	dbg->de_frame_fdes = fde;
139555	dbg->de_last_fde = fde;
139556	dbg->de_n_fde = 1;
139557    } else {
139558	curfde->fde_next = fde;
139559	dbg->de_last_fde = fde;
139560	dbg->de_n_fde++;
139561    }
139562    return dbg->de_n_fde;
139563}
139564
139565/*-------------------------------------------------------------------------
139566	This functions adds information to an fde. The fde is
139567	linked into the linked list of fde's maintained in the Dwarf_P_Debug
139568	structure.
139569	dbg: The debug descriptor.
139570	fde: The fde to be added.
139571	die: subprogram/function die corresponding to this fde
139572	cie: cie referred to by this fde, obtained from call to
139573	    add_frame_cie() routine.
139574	virt_addr: beginning address
139575	code_len: length of code reps by the fde
139576	symidx: The symbol id of the symbol wrt to which relocation needs
139577		to be performed for 'virt_addr'.
139578	offset_into_exception_tables: The start of exception tables for
139579		this function (indicated as an offset into the exception
139580		tables). A value of -1 indicates that there is no exception
139581		table entries associated with this function.
139582	exception_table_symbol: The symbol id of the section for exception
139583		tables wrt to which the offset_into_exception_tables will
139584		be relocated.
139585--------------------------------------------------------------------------*/
139586Dwarf_Unsigned
139587dwarf_add_frame_info(Dwarf_P_Debug dbg,
139588		     Dwarf_P_Fde fde,
139589		     Dwarf_P_Die die,
139590		     Dwarf_Unsigned cie,
139591		     Dwarf_Unsigned virt_addr,
139592		     Dwarf_Unsigned code_len,
139593		     Dwarf_Unsigned symidx,
139594		     Dwarf_Signed offset_into_exception_tables,
139595		     Dwarf_Unsigned exception_table_symbol,
139596		     Dwarf_Error * error)
139597{
139598
139599    return dwarf_add_frame_info_b(dbg, fde, die, cie, virt_addr,
139600				  code_len, symidx,
139601				  /* end_symbol */ 0,
139602				  /* offset_from_end */ 0,
139603				  offset_into_exception_tables,
139604				  exception_table_symbol, error);
139605
139606}
139607
139608 /*ARGSUSED*/			/* pretend all args used */
139609    Dwarf_Unsigned
139610dwarf_add_frame_info_b(Dwarf_P_Debug dbg,
139611		       Dwarf_P_Fde fde,
139612		       Dwarf_P_Die die,
139613		       Dwarf_Unsigned cie,
139614		       Dwarf_Unsigned virt_addr,
139615		       Dwarf_Unsigned code_len,
139616		       Dwarf_Unsigned symidx,
139617		       Dwarf_Unsigned end_symidx,
139618		       Dwarf_Unsigned offset_from_end_symbol,
139619		       Dwarf_Signed offset_into_exception_tables,
139620		       Dwarf_Unsigned exception_table_symbol,
139621		       Dwarf_Error * error)
139622{
139623    Dwarf_P_Fde curfde;
139624
139625    fde->fde_die = die;
139626    fde->fde_cie = (long) cie;
139627    fde->fde_initloc = virt_addr;
139628    fde->fde_r_symidx = symidx;
139629    fde->fde_addr_range = code_len;
139630    fde->fde_offset_into_exception_tables =
139631	offset_into_exception_tables;
139632    fde->fde_exception_table_symbol = exception_table_symbol;
139633    fde->fde_end_symbol_offset = offset_from_end_symbol;
139634    fde->fde_end_symbol = end_symidx;
139635
139636
139637    curfde = dbg->de_last_fde;
139638    if (curfde == NULL) {
139639	dbg->de_frame_fdes = fde;
139640	dbg->de_last_fde = fde;
139641	dbg->de_n_fde = 1;
139642    } else {
139643	curfde->fde_next = fde;
139644	dbg->de_last_fde = fde;
139645	dbg->de_n_fde++;
139646    }
139647    return dbg->de_n_fde;
139648}
139649
139650
139651/*-------------------------------------------------------------------
139652	Create a new fde
139653---------------------------------------------------------------------*/
139654Dwarf_P_Fde
139655dwarf_new_fde(Dwarf_P_Debug dbg, Dwarf_Error * error)
139656{
139657    Dwarf_P_Fde fde;
139658
139659    fde = (Dwarf_P_Fde)
139660	_dwarf_p_get_alloc(dbg, sizeof(struct Dwarf_P_Fde_s));
139661    if (fde == NULL) {
139662	DWARF_P_DBG_ERROR(dbg, DW_DLE_FDE_ALLOC,
139663			  (Dwarf_P_Fde) DW_DLV_BADADDR);
139664    }
139665    fde->fde_next = NULL;
139666    fde->fde_inst = NULL;
139667    fde->fde_n_inst = 0;
139668    fde->fde_n_bytes = 0;
139669    fde->fde_last_inst = NULL;
139670    fde->fde_uwordb_size = dbg->de_offset_size;
139671    return fde;
139672}
139673
139674/*------------------------------------------------------------------------
139675	Add cfe_offset instruction to fde
139676-------------------------------------------------------------------------*/
139677Dwarf_P_Fde
139678dwarf_fde_cfa_offset(Dwarf_P_Fde fde,
139679		     Dwarf_Unsigned reg,
139680		     Dwarf_Signed offset, Dwarf_Error * error)
139681{
139682    Dwarf_Ubyte opc, regno;
139683    char *ptr;
139684    Dwarf_P_Frame_Pgm curinst;
139685    int nbytes;
139686    int res;
139687    char buff1[ENCODE_SPACE_NEEDED];
139688
139689    curinst = (Dwarf_P_Frame_Pgm)
139690	_dwarf_p_get_alloc(NULL, sizeof(struct Dwarf_P_Frame_Pgm_s));
139691    if (curinst == NULL) {
139692	DWARF_P_DBG_ERROR(NULL, DW_DLE_FPGM_ALLOC,
139693			  (Dwarf_P_Fde) DW_DLV_BADADDR);
139694    }
139695    opc = DW_CFA_offset;
139696    regno = reg;
139697    if (regno & 0xc0) {
139698	DWARF_P_DBG_ERROR(NULL, DW_DLE_REGNO_OVFL,
139699			  (Dwarf_P_Fde) DW_DLV_BADADDR);
139700    }
139701    opc = opc | regno;		/* lower 6 bits are register number */
139702    curinst->dfp_opcode = opc;
139703    res = _dwarf_pro_encode_leb128_nm(offset, &nbytes,
139704				      buff1, sizeof(buff1));
139705    if (res != DW_DLV_OK) {
139706	_dwarf_p_error(NULL, error, DW_DLE_STRING_ALLOC);
139707	return ((Dwarf_P_Fde) DW_DLV_BADADDR);
139708    }
139709    ptr = (char *) _dwarf_p_get_alloc(NULL, nbytes);
139710    if (ptr == NULL) {
139711	_dwarf_p_error(NULL, error, DW_DLE_STRING_ALLOC);
139712	return ((Dwarf_P_Fde) DW_DLV_BADADDR);
139713    }
139714    memcpy(ptr, buff1, nbytes);
139715
139716    curinst->dfp_args = ptr;
139717    curinst->dfp_nbytes = nbytes;
139718    curinst->dfp_next = NULL;
139719
139720    _dwarf_pro_add_to_fde(fde, curinst);
139721    return fde;
139722}
139723
139724/*
139725    Generic routine to add opcode to fde instructions. val1 and
139726    val2 are parameters whose interpretation depends on the 'op'.
139727
139728    This does not work properly for  DW_DLC_SYMBOLIC_RELOCATIONS
139729    for DW_CFA_set_loc or DW_DVA_advance_loc* 'op', as
139730    these ops normally are addresses or (DW_CFA_set_loc)
139731    or code lengths (DW_DVA_advance_loc*) and such must be
139732    represented with relocations and symbol indices for
139733    DW_DLC_SYMBOLIC_RELOCATIONS.
139734
139735*/
139736Dwarf_P_Fde
139737dwarf_add_fde_inst(Dwarf_P_Fde fde,
139738		   Dwarf_Small op,
139739		   Dwarf_Unsigned val1,
139740		   Dwarf_Unsigned val2, Dwarf_Error * error)
139741{
139742    Dwarf_P_Frame_Pgm curinst;
139743    int nbytes, nbytes1, nbytes2;
139744    Dwarf_Ubyte db;
139745    Dwarf_Half dh;
139746    Dwarf_Word dw;
139747    Dwarf_Unsigned du;
139748    char *ptr;
139749    int res;
139750    char buff1[ENCODE_SPACE_NEEDED];
139751    char buff2[ENCODE_SPACE_NEEDED];
139752
139753
139754    nbytes = 0;
139755    ptr = NULL;
139756    curinst = (Dwarf_P_Frame_Pgm)
139757	_dwarf_p_get_alloc(NULL, sizeof(struct Dwarf_P_Frame_Pgm_s));
139758    if (curinst == NULL) {
139759	_dwarf_p_error(NULL, error, DW_DLE_FPGM_ALLOC);
139760	return ((Dwarf_P_Fde) DW_DLV_BADADDR);
139761    }
139762
139763    switch (op) {
139764
139765    case DW_CFA_advance_loc:
139766	if (val1 <= 0x3f) {
139767	    db = val1;
139768	    op |= db;
139769	}
139770	/* test not portable FIX */
139771	else if (val1 <= UCHAR_MAX) {
139772	    op = DW_CFA_advance_loc1;
139773	    db = val1;
139774	    ptr = (char *) _dwarf_p_get_alloc(NULL, 1);
139775	    if (ptr == NULL) {
139776		_dwarf_p_error(NULL, error, DW_DLE_STRING_ALLOC);
139777		return ((Dwarf_P_Fde) DW_DLV_BADADDR);
139778	    }
139779	    memcpy((void *) ptr, (const void *) &db, 1);
139780	    nbytes = 1;
139781	}
139782	/* test not portable FIX */
139783	else if (val1 <= USHRT_MAX) {
139784	    op = DW_CFA_advance_loc2;
139785	    dh = val1;
139786	    ptr = (char *) _dwarf_p_get_alloc(NULL, 2);
139787	    if (ptr == NULL) {
139788		_dwarf_p_error(NULL, error, DW_DLE_STRING_ALLOC);
139789		return ((Dwarf_P_Fde) DW_DLV_BADADDR);
139790	    }
139791	    memcpy((void *) ptr, (const void *) &dh, 2);
139792	    nbytes = 2;
139793	}
139794	/* test not portable FIX */
139795	else if (val1 <= ULONG_MAX) {
139796	    op = DW_CFA_advance_loc4;
139797	    dw = (Dwarf_Word) val1;
139798	    ptr = (char *) _dwarf_p_get_alloc(NULL, 4);
139799	    if (ptr == NULL) {
139800		_dwarf_p_error(NULL, error, DW_DLE_STRING_ALLOC);
139801		return ((Dwarf_P_Fde) DW_DLV_BADADDR);
139802	    }
139803	    memcpy((void *) ptr, (const void *) &dw, 4);
139804	    nbytes = 4;
139805	} else {
139806	    op = DW_CFA_MIPS_advance_loc8;
139807	    du = val1;
139808	    ptr =
139809		(char *) _dwarf_p_get_alloc(NULL,
139810					    sizeof(Dwarf_Unsigned));
139811	    if (ptr == NULL) {
139812		_dwarf_p_error(NULL, error, DW_DLE_STRING_ALLOC);
139813		return ((Dwarf_P_Fde) DW_DLV_BADADDR);
139814	    }
139815	    memcpy((void *) ptr, (const void *) &du, 8);
139816	    nbytes = 8;
139817	}
139818	break;
139819
139820    case DW_CFA_offset:
139821	if (val1 <= MAX_6_BIT_VALUE) {
139822	    db = val1;
139823	    op |= db;
139824	    res = _dwarf_pro_encode_leb128_nm(val2, &nbytes,
139825					      buff1, sizeof(buff1));
139826	    if (res != DW_DLV_OK) {
139827		_dwarf_p_error(NULL, error, DW_DLE_STRING_ALLOC);
139828		return ((Dwarf_P_Fde) DW_DLV_BADADDR);
139829	    }
139830	    ptr = (char *) _dwarf_p_get_alloc(NULL, nbytes);
139831	    if (ptr == NULL) {
139832		_dwarf_p_error(NULL, error, DW_DLE_STRING_ALLOC);
139833		return ((Dwarf_P_Fde) DW_DLV_BADADDR);
139834	    }
139835	    memcpy(ptr, buff1, nbytes);
139836
139837	} else {
139838	    op = DW_CFA_offset_extended;
139839
139840	    res = _dwarf_pro_encode_leb128_nm(val1, &nbytes1,
139841					      buff1, sizeof(buff1));
139842	    if (res != DW_DLV_OK) {
139843		_dwarf_p_error(NULL, error, DW_DLE_STRING_ALLOC);
139844		return ((Dwarf_P_Fde) DW_DLV_BADADDR);
139845	    }
139846	    res = _dwarf_pro_encode_leb128_nm(val2, &nbytes2,
139847					      buff2, sizeof(buff2));
139848	    if (res != DW_DLV_OK) {
139849		_dwarf_p_error(NULL, error, DW_DLE_STRING_ALLOC);
139850		return ((Dwarf_P_Fde) DW_DLV_BADADDR);
139851	    }
139852	    ptr = (char *) _dwarf_p_get_alloc(NULL, nbytes1 + nbytes2);
139853	    if (ptr == NULL) {
139854		_dwarf_p_error(NULL, error, DW_DLE_STRING_ALLOC);
139855		return ((Dwarf_P_Fde) DW_DLV_BADADDR);
139856	    }
139857	    memcpy(ptr, buff1, nbytes1);
139858	    memcpy(ptr + nbytes1, buff2, nbytes2);
139859	    nbytes = nbytes1 + nbytes2;
139860	}
139861	break;
139862
139863    case DW_CFA_undefined:
139864    case DW_CFA_same_value:
139865	res = _dwarf_pro_encode_leb128_nm(val1, &nbytes,
139866					  buff1, sizeof(buff1));
139867	if (res != DW_DLV_OK) {
139868	    _dwarf_p_error(NULL, error, DW_DLE_STRING_ALLOC);
139869	    return ((Dwarf_P_Fde) DW_DLV_BADADDR);
139870	}
139871	ptr = (char *) _dwarf_p_get_alloc(NULL, nbytes);
139872	if (ptr == NULL) {
139873	    _dwarf_p_error(NULL, error, DW_DLE_STRING_ALLOC);
139874	    return ((Dwarf_P_Fde) DW_DLV_BADADDR);
139875	}
139876	memcpy(ptr, buff1, nbytes);
139877	break;
139878
139879    case DW_CFA_register:
139880    case DW_CFA_def_cfa:
139881	res = _dwarf_pro_encode_leb128_nm(val1, &nbytes1,
139882					  buff1, sizeof(buff1));
139883	if (res != DW_DLV_OK) {
139884	    _dwarf_p_error(NULL, error, DW_DLE_STRING_ALLOC);
139885	    return ((Dwarf_P_Fde) DW_DLV_BADADDR);
139886	}
139887
139888	res = _dwarf_pro_encode_leb128_nm(val2, &nbytes2,
139889					  buff2, sizeof(buff2));
139890	if (res != DW_DLV_OK) {
139891	    _dwarf_p_error(NULL, error, DW_DLE_STRING_ALLOC);
139892	    return ((Dwarf_P_Fde) DW_DLV_BADADDR);
139893	}
139894
139895	ptr = (char *) _dwarf_p_get_alloc(NULL, nbytes1 + nbytes2);
139896	if (ptr == NULL) {
139897	    _dwarf_p_error(NULL, error, DW_DLE_STRING_ALLOC);
139898	    return ((Dwarf_P_Fde) DW_DLV_BADADDR);
139899	}
139900	memcpy(ptr, buff1, nbytes1);
139901	memcpy(ptr + nbytes1, buff2, nbytes2);
139902	nbytes = nbytes1 + nbytes2;
139903	break;
139904
139905    case DW_CFA_def_cfa_register:
139906    case DW_CFA_def_cfa_offset:
139907	res = _dwarf_pro_encode_leb128_nm(val1, &nbytes,
139908					  buff1, sizeof(buff1));
139909	if (res != DW_DLV_OK) {
139910	    _dwarf_p_error(NULL, error, DW_DLE_STRING_ALLOC);
139911	    return ((Dwarf_P_Fde) DW_DLV_BADADDR);
139912	}
139913	ptr = (char *) _dwarf_p_get_alloc(NULL, nbytes);
139914	if (ptr == NULL) {
139915	    _dwarf_p_error(NULL, error, DW_DLE_STRING_ALLOC);
139916	    return ((Dwarf_P_Fde) DW_DLV_BADADDR);
139917	}
139918	memcpy(ptr, buff1, nbytes);
139919	break;
139920
139921    default:
139922	break;
139923    }
139924
139925    curinst->dfp_opcode = op;
139926    curinst->dfp_args = ptr;
139927    curinst->dfp_nbytes = nbytes;
139928    curinst->dfp_next = NULL;
139929
139930    _dwarf_pro_add_to_fde(fde, curinst);
139931    return fde;
139932}
139933
139934
139935/*------------------------------------------------------------------------
139936	instructions are added to fde in the form of a linked
139937	list. This function manages the linked list
139938-------------------------------------------------------------------------*/
139939void
139940_dwarf_pro_add_to_fde(Dwarf_P_Fde fde, Dwarf_P_Frame_Pgm curinst)
139941{
139942    if (fde->fde_last_inst) {
139943	fde->fde_last_inst->dfp_next = curinst;
139944	fde->fde_last_inst = curinst;
139945	fde->fde_n_inst++;
139946	fde->fde_n_bytes +=
139947	    (long) (curinst->dfp_nbytes + sizeof(Dwarf_Ubyte));
139948    } else {
139949	fde->fde_last_inst = curinst;
139950	fde->fde_inst = curinst;
139951	fde->fde_n_inst = 1;
139952	fde->fde_n_bytes =
139953	    (long) (curinst->dfp_nbytes + sizeof(Dwarf_Ubyte));
139954    }
139955}
1399560707010001ada40000812400011e740000000a000000014020682700000e7a000000660000000000000000000000000000001500000000libdwarf/pro_frame.h��/*
139957
139958  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
139959
139960  This program is free software; you can redistribute it and/or modify it
139961  under the terms of version 2.1 of the GNU Lesser General Public License
139962  as published by the Free Software Foundation.
139963
139964  This program is distributed in the hope that it would be useful, but
139965  WITHOUT ANY WARRANTY; without even the implied warranty of
139966  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
139967
139968  Further, this software is distributed without any warranty that it is
139969  free of the rightful claim of any third person regarding infringement
139970  or the like.  Any license provided herein, whether implied or
139971  otherwise, applies only to this software file.  Patent licenses, if
139972  any, provided herein do not apply to combinations of this program with
139973  other software, or any other product whatsoever.
139974
139975  You should have received a copy of the GNU Lesser General Public
139976  License along with this program; if not, write the Free Software
139977  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
139978  USA.
139979
139980  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
139981  Mountain View, CA 94043, or:
139982
139983  http://www.sgi.com
139984
139985  For further information regarding this notice, see:
139986
139987  http://oss.sgi.com/projects/GenInfo/NoticeExplan
139988
139989*/
139990
139991
139992
139993/*
139994    Largest register value that can be coded into
139995    the opcode since there are only 6 bits in the
139996    register field.
139997*/
139998#define MAX_6_BIT_VALUE		0x3f
139999
140000/*
140001	This struct holds debug_frame instructions
140002*/
140003typedef struct Dwarf_P_Frame_Pgm_s *Dwarf_P_Frame_Pgm;
140004
140005struct Dwarf_P_Frame_Pgm_s {
140006    Dwarf_Ubyte dfp_opcode;	/* opcode - includes reg # */
140007    char *dfp_args;		/* operands */
140008    int dfp_nbytes;		/* number of bytes in args */
140009#if 0
140010    Dwarf_Unsigned dfp_sym_index;	/* 0 unless reloc needed */
140011#endif
140012    Dwarf_P_Frame_Pgm dfp_next;
140013};
140014
140015
140016/*
140017	This struct has cie related information. Used to gather data
140018	from user program, and later to transform to disk form
140019*/
140020struct Dwarf_P_Cie_s {
140021    Dwarf_Ubyte cie_version;
140022    char *cie_aug;		/* augmentation */
140023    Dwarf_Ubyte cie_code_align;	/* alignment of code */
140024    Dwarf_Sbyte cie_data_align;
140025    Dwarf_Ubyte cie_ret_reg;	/* return register # */
140026    char *cie_inst;		/* initial instruction */
140027    long cie_inst_bytes;
140028    /* no of init_inst */
140029    Dwarf_P_Cie cie_next;
140030};
140031
140032
140033/* producer fields */
140034struct Dwarf_P_Fde_s {
140035    Dwarf_Unsigned fde_unused1;
140036
140037    /* function/subr die for this fde */
140038    Dwarf_P_Die fde_die;
140039
140040    /* index to asso. cie */
140041    Dwarf_Word fde_cie;
140042
140043    /* Address of first location of the code this frame applies to If
140044       fde_end_symbol non-zero, this represents the offset from the
140045       symbol indicated by fde_r_symidx */
140046    Dwarf_Addr fde_initloc;
140047
140048    /* Relocation symbol for address of the code this frame applies to.
140049     */
140050    Dwarf_Unsigned fde_r_symidx;
140051
140052    /* Bytes of instr for this fde, if known */
140053    Dwarf_Unsigned fde_addr_range;
140054
140055    /* linked list of instructions we will put in fde. */
140056    Dwarf_P_Frame_Pgm fde_inst;
140057
140058    /* number of instructions in fde */
140059    long fde_n_inst;
140060
140061    /* number of bytes of inst in fde */
140062    long fde_n_bytes;
140063
140064    /* offset into exception table for this function. */
140065    Dwarf_Signed fde_offset_into_exception_tables;
140066
140067    /* The symbol for the exception table elf section. */
140068    Dwarf_Unsigned fde_exception_table_symbol;
140069
140070    /* pointer to last inst */
140071    Dwarf_P_Frame_Pgm fde_last_inst;
140072
140073    Dwarf_P_Fde fde_next;
140074
140075    /* The symbol and offset of the end symbol. When fde_end_symbol is
140076       non-zero we must represent the */
140077    Dwarf_Addr fde_end_symbol_offset;
140078    Dwarf_Unsigned fde_end_symbol;
140079
140080    int fde_uwordb_size;
140081};
140082��0707010001ada50000812400011e740000000a00000001402068280000076b000000660000000000000000000000000000001500000000libdwarf/pro_funcs.c��/*
140083
140084  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
140085
140086  This program is free software; you can redistribute it and/or modify it
140087  under the terms of version 2.1 of the GNU Lesser General Public License
140088  as published by the Free Software Foundation.
140089
140090  This program is distributed in the hope that it would be useful, but
140091  WITHOUT ANY WARRANTY; without even the implied warranty of
140092  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
140093
140094  Further, this software is distributed without any warranty that it is
140095  free of the rightful claim of any third person regarding infringement
140096  or the like.  Any license provided herein, whether implied or
140097  otherwise, applies only to this software file.  Patent licenses, if
140098  any, provided herein do not apply to combinations of this program with
140099  other software, or any other product whatsoever.
140100
140101  You should have received a copy of the GNU Lesser General Public
140102  License along with this program; if not, write the Free Software
140103  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
140104  USA.
140105
140106  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
140107  Mountain View, CA 94043, or:
140108
140109  http://www.sgi.com
140110
140111  For further information regarding this notice, see:
140112
140113  http://oss.sgi.com/projects/GenInfo/NoticeExplan
140114
140115*/
140116
140117
140118
140119#include "config.h"
140120#include "libdwarfdefs.h"
140121#include <stdio.h>
140122#include <string.h>
140123#ifdef HAVE_ELFACCESS_H
140124#include <elfaccess.h>
140125#endif
140126#include "pro_incl.h"
140127#include "pro_section.h"
140128
140129/*
140130    This function adds another function name to the
140131    list of function names for the given Dwarf_P_Debug.
140132    It returns 0 on error, and 1 otherwise.
140133*/
140134Dwarf_Unsigned
140135dwarf_add_funcname(Dwarf_P_Debug dbg,
140136		   Dwarf_P_Die die,
140137		   char *function_name, Dwarf_Error * error)
140138{
140139    return
140140	_dwarf_add_simple_name_entry(dbg, die, function_name,
140141				     dwarf_snk_funcname, error);
140142
140143}
140144�0707010001ada60000812400011e740000000a0000000140206828000007fe000000660000000000000000000000000000001400000000libdwarf/pro_incl.h���/*
140145
140146  Copyright (C) 2000, 2002 Silicon Graphics, Inc.  All Rights Reserved.
140147
140148  This program is free software; you can redistribute it and/or modify it
140149  under the terms of version 2.1 of the GNU Lesser General Public License
140150  as published by the Free Software Foundation.
140151
140152  This program is distributed in the hope that it would be useful, but
140153  WITHOUT ANY WARRANTY; without even the implied warranty of
140154  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
140155
140156  Further, this software is distributed without any warranty that it is
140157  free of the rightful claim of any third person regarding infringement
140158  or the like.  Any license provided herein, whether implied or
140159  otherwise, applies only to this software file.  Patent licenses, if
140160  any, provided herein do not apply to combinations of this program with
140161  other software, or any other product whatsoever.
140162
140163  You should have received a copy of the GNU Lesser General Public
140164  License along with this program; if not, write the Free Software
140165  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
140166  USA.
140167
140168  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
140169  Mountain View, CA 94043, or:
140170
140171  http://www.sgi.com
140172
140173  For further information regarding this notice, see:
140174
140175  http://oss.sgi.com/projects/GenInfo/NoticeExplan
140176
140177*/
140178
140179
140180
140181#ifdef HAVE_ELF_H
140182#include <elf.h>
140183#endif
140184
140185/* The target address is given: the place in the source integer
140186   is to be determined.
140187*/
140188#ifdef WORDS_BIGENDIAN
140189#define WRITE_UNALIGNED(dbg,dest,source, srclength,len_out) \
140190    { \
140191      dbg->de_copy_word(dest, \
140192                        ((char *)source) +srclength-len_out,  \
140193			len_out) ; \
140194    }
140195
140196
140197#else /* LITTLE ENDIAN */
140198
140199#define WRITE_UNALIGNED(dbg,dest,source, srclength,len_out) \
140200    { \
140201      dbg->de_copy_word( (dest) , \
140202                        ((char *)source) ,  \
140203			len_out) ; \
140204    }
140205#endif
140206
140207
140208
140209#include "libdwarf.h"
140210
140211#include "dwarf.h"
140212#include "pro_opaque.h"
140213#include "pro_error.h"
140214#include "pro_util.h"
140215#include "pro_encode_nm.h"
140216#include "pro_alloc.h"
140217��0707010001ada70000812400011e740000000a000000014020682800001f4c000000660000000000000000000000000000001400000000libdwarf/pro_init.c���/*
140218
140219  Copyright (C) 2000,2004 Silicon Graphics, Inc.  All Rights Reserved.
140220
140221  This program is free software; you can redistribute it and/or modify it
140222  under the terms of version 2.1 of the GNU Lesser General Public License
140223  as published by the Free Software Foundation.
140224
140225  This program is distributed in the hope that it would be useful, but
140226  WITHOUT ANY WARRANTY; without even the implied warranty of
140227  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
140228
140229  Further, this software is distributed without any warranty that it is
140230  free of the rightful claim of any third person regarding infringement
140231  or the like.  Any license provided herein, whether implied or
140232  otherwise, applies only to this software file.  Patent licenses, if
140233  any, provided herein do not apply to combinations of this program with
140234  other software, or any other product whatsoever.
140235
140236  You should have received a copy of the GNU Lesser General Public
140237  License along with this program; if not, write the Free Software
140238  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
140239  USA.
140240
140241  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
140242  Mountain View, CA 94043, or:
140243
140244  http://www.sgi.com
140245
140246  For further information regarding this notice, see:
140247
140248  http://oss.sgi.com/projects/GenInfo/NoticeExplan
140249
140250*/
140251
140252
140253
140254#include "config.h"
140255#include "libdwarfdefs.h"
140256#include <stdio.h>
140257#include <string.h>
140258#include "pro_incl.h"
140259#include "pro_section.h"	/* for MAGIC_SECT_NO */
140260#include "pro_reloc_symbolic.h"
140261#include "pro_reloc_stream.h"
140262
140263
140264static void common_init(Dwarf_P_Debug dbg, Dwarf_Unsigned flags);
140265
140266void *_dwarf_memcpy_swap_bytes(void *s1, const void *s2, size_t len);
140267
140268/*--------------------------------------------------------------------
140269	This function sets up a new dwarf producing region.
140270	flags: Indicates type of access method, one of DW_DLC* macros
140271	func(): Used to create a new object file, a call back function
140272	errhand(): Error Handler provided by user
140273	errarg: Argument to errhand()
140274	error: returned error value
140275--------------------------------------------------------------------*/
140276    /* We want the following to have an elf section number that matches
140277       'nothing' */
140278static struct Dwarf_P_Section_Data_s init_sect = {
140279    MAGIC_SECT_NO, 0, 0, 0, 0
140280};
140281
140282Dwarf_P_Debug
140283dwarf_producer_init_b(Dwarf_Unsigned flags,
140284		      Dwarf_Callback_Func_b func,
140285		      Dwarf_Handler errhand,
140286		      Dwarf_Ptr errarg, Dwarf_Error * error)
140287{
140288    Dwarf_P_Debug dbg;
140289    dbg = (Dwarf_P_Debug) _dwarf_p_get_alloc(NULL,
140290					     sizeof(struct
140291						    Dwarf_P_Debug_s));
140292    if (dbg == NULL) {
140293	DWARF_P_DBG_ERROR(dbg, DW_DLE_DBG_ALLOC,
140294			  (Dwarf_P_Debug) DW_DLV_BADADDR);
140295    }
140296    memset((void *) dbg,0, sizeof(struct Dwarf_P_Debug_s));
140297    /* For the time being */
140298    if (func == NULL) {
140299	DWARF_P_DBG_ERROR(dbg, DW_DLE_NO_CALLBACK_FUNC,
140300			  (Dwarf_P_Debug) DW_DLV_BADADDR);
140301    }
140302    dbg->de_func_b = func;
140303    dbg->de_errhand = errhand;
140304    dbg->de_errarg = errarg;
140305    common_init(dbg, flags);
140306    return dbg;
140307
140308}
140309
140310Dwarf_P_Debug
140311dwarf_producer_init(Dwarf_Unsigned flags,
140312		    Dwarf_Callback_Func func,
140313		    Dwarf_Handler errhand,
140314		    Dwarf_Ptr errarg, Dwarf_Error * error)
140315{
140316
140317    Dwarf_P_Debug dbg;
140318
140319
140320
140321    dbg = (Dwarf_P_Debug) _dwarf_p_get_alloc(NULL,
140322					     sizeof(struct
140323						    Dwarf_P_Debug_s));
140324    if (dbg == NULL) {
140325	DWARF_P_DBG_ERROR(dbg, DW_DLE_DBG_ALLOC,
140326			  (Dwarf_P_Debug) DW_DLV_BADADDR);
140327    }
140328    memset((void *) dbg,0, sizeof(struct Dwarf_P_Debug_s));
140329    /* For the time being */
140330    if (func == NULL) {
140331	DWARF_P_DBG_ERROR(dbg, DW_DLE_NO_CALLBACK_FUNC,
140332			  (Dwarf_P_Debug) DW_DLV_BADADDR);
140333    }
140334    dbg->de_func = func;
140335    dbg->de_errhand = errhand;
140336    dbg->de_errarg = errarg;
140337    common_init(dbg, flags);
140338    return dbg;
140339}
140340static void
140341common_init(Dwarf_P_Debug dbg, Dwarf_Unsigned flags)
140342{
140343    unsigned int k;
140344
140345
140346    dbg->de_version_magic_number = PRO_VERSION_MAGIC;
140347    dbg->de_n_debug_sect = 0;
140348    dbg->de_debug_sects = &init_sect;
140349    dbg->de_current_active_section = &init_sect;
140350    dbg->de_flags = flags;
140351
140352    /* Now, with flags set, can use 64bit tests */
140353
140354
140355
140356#if  defined(HAVE_DWARF2_99_EXTENSION)
140357    /* Revised 64 bit output, using distingushed values. Per 1999
140358       dwarf2 revision This produces 64bit extension with ia64 objects.
140359
140360       Some might want library run time selection of offset size. Not
140361       provided here at present. */
140362    dbg->de_64bit_extension = (IS_64BIT(dbg) ? 1 : 0);
140363    dbg->de_pointer_size = (IS_64BIT(dbg) ? 8 : 4);
140364    dbg->de_offset_size = (IS_64BIT(dbg) ? 8 : 4);
140365    dbg->de_ptr_reloc =
140366	IS_64BIT(dbg) ? Get_REL64_isa(dbg) : Get_REL32_isa(dbg);
140367    /* Non-MIPS, dwarf lengths and offsets are 32 bits even for 64bit
140368       pointer environments. */
140369    /* Get_REL??_isa here supports 64bit-offset dwarf. For 64bit, we
140370       emit the extension bytes. */
140371
140372    dbg->de_offset_reloc = IS_64BIT(dbg) ? Get_REL64_isa(dbg)
140373	: Get_REL32_isa(dbg);
140374#elif defined(HAVE_OLD_DWARF2_32BIT_OFFSET)
140375    /* This is cygnus 32bit offset, as specified in pure dwarf2 v2.0.0 */
140376    dbg->de_64bit_extension = 0;
140377    dbg->de_pointer_size = (IS_64BIT(dbg) ? 8 : 4);
140378    dbg->de_offset_size = (IS_64BIT(dbg) ? 4 : 4);
140379    dbg->de_ptr_reloc =
140380	IS_64BIT(dbg) ? Get_REL64_isa(dbg) : Get_REL32_isa(dbg);
140381    /* non-MIPS, dwarf lengths and offsets are 32 bits even for 64bit
140382       pointer environments. */
140383    /* Get_REL32_isa here supports 64-bit-pointer dwarf with pure
140384       dwarf2 v2.0.0 32bit offsets, as emitted by cygnus tools. And
140385       pure 32 bit offset dwarf for 32bit pointer apps. */
140386
140387    dbg->de_offset_reloc = Get_REL32_isa(dbg);
140388#else
140389    /* MIPS-SGI 32 or 64, where offsets and lengths are both 64 bit for
140390       64bit pointer objects and both 32 bit for 32bit pointer
140391       objects. And a dwarf-reader must check elf info to tell which
140392       applies. */
140393    dbg->de_64bit_extension = 0;
140394    dbg->de_pointer_size = (IS_64BIT(dbg) ? 8 : 4);
140395    dbg->de_offset_size = (IS_64BIT(dbg) ? 8 : 4);
140396    dbg->de_ptr_reloc =
140397	IS_64BIT(dbg) ? Get_REL64_isa(dbg) : Get_REL32_isa(dbg);
140398    dbg->de_offset_reloc = dbg->de_ptr_reloc;
140399#endif
140400    dbg->de_exc_reloc = Get_REL_SEGREL_isa(dbg);
140401
140402    dbg->de_is_64bit = IS_64BIT(dbg);
140403
140404
140405    if (flags & DW_DLC_SYMBOLIC_RELOCATIONS) {
140406	dbg->de_relocation_record_size =
140407	    sizeof(struct Dwarf_Relocation_Data_s);
140408    } else {
140409#if HAVE_ELF64_GETEHDR
140410	dbg->de_relocation_record_size =
140411	    IS_64BIT(dbg) ? sizeof(Elf64_Rel) : sizeof(Elf32_Rel);
140412#else
140413	dbg->de_relocation_record_size = sizeof(Elf32_Rel);
140414#endif
140415    }
140416
140417    if (dbg->de_offset_size == 8) {
140418	dbg->de_ar_data_attribute_form = DW_FORM_data8;
140419	dbg->de_ar_ref_attr_form = DW_FORM_ref8;
140420    } else {
140421	dbg->de_ar_data_attribute_form = DW_FORM_data4;
140422	dbg->de_ar_ref_attr_form = DW_FORM_ref4;
140423    }
140424
140425    if (flags & DW_DLC_SYMBOLIC_RELOCATIONS) {
140426	dbg->de_reloc_name = _dwarf_pro_reloc_name_symbolic;
140427	dbg->de_reloc_pair = _dwarf_pro_reloc_length_symbolic;
140428	dbg->de_transform_relocs_to_disk =
140429	    _dwarf_symbolic_relocs_to_disk;
140430    } else {
140431	if (IS_64BIT(dbg)) {
140432	    dbg->de_reloc_name = _dwarf_pro_reloc_name_stream64;
140433	} else {
140434	    dbg->de_reloc_name = _dwarf_pro_reloc_name_stream32;
140435	}
140436	dbg->de_reloc_pair = 0;
140437	dbg->de_transform_relocs_to_disk = _dwarf_stream_relocs_to_disk;
140438    }
140439    for (k = 0; k < NUM_DEBUG_SECTIONS; ++k) {
140440
140441	Dwarf_P_Per_Reloc_Sect prel = &dbg->de_reloc_sect[k];
140442
140443	prel->pr_slots_per_block_to_alloc = DEFAULT_SLOTS_PER_BLOCK;
140444    }
140445    /* First assume host, target same endianness */
140446    dbg->de_same_endian = 1;
140447    dbg->de_copy_word = memcpy;
140448#ifdef WORDS_BIGENDIAN
140449    /* host is big endian, so what endian is target? */
140450    if (flags & DW_DLC_TARGET_LITTLEENDIAN) {
140451	dbg->de_same_endian = 0;
140452	dbg->de_copy_word = _dwarf_memcpy_swap_bytes;
140453    }
140454#else /* little endian */
140455    /* host is little endian, so what endian is target? */
140456    if (flags & DW_DLC_TARGET_BIGENDIAN) {
140457	dbg->de_same_endian = 0;
140458	dbg->de_copy_word = _dwarf_memcpy_swap_bytes;
140459    }
140460#endif /* !WORDS_BIGENDIAN */
140461
140462
140463    return;
140464
140465}
1404660707010001ada80000812400011e740000000a000000014020682800002852000000660000000000000000000000000000001400000000libdwarf/pro_line.c���/*
140467
140468  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
140469
140470  This program is free software; you can redistribute it and/or modify it
140471  under the terms of version 2.1 of the GNU Lesser General Public License
140472  as published by the Free Software Foundation.
140473
140474  This program is distributed in the hope that it would be useful, but
140475  WITHOUT ANY WARRANTY; without even the implied warranty of
140476  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
140477
140478  Further, this software is distributed without any warranty that it is
140479  free of the rightful claim of any third person regarding infringement
140480  or the like.  Any license provided herein, whether implied or
140481  otherwise, applies only to this software file.  Patent licenses, if
140482  any, provided herein do not apply to combinations of this program with
140483  other software, or any other product whatsoever.
140484
140485  You should have received a copy of the GNU Lesser General Public
140486  License along with this program; if not, write the Free Software
140487  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
140488  USA.
140489
140490  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
140491  Mountain View, CA 94043, or:
140492
140493  http://www.sgi.com
140494
140495  For further information regarding this notice, see:
140496
140497  http://oss.sgi.com/projects/GenInfo/NoticeExplan
140498
140499*/
140500
140501
140502
140503#include "config.h"
140504#include "libdwarfdefs.h"
140505#include <stdio.h>
140506#include <string.h>
140507#ifdef HAVE_ELF_H
140508#include <elf.h>
140509#endif
140510#include "pro_incl.h"
140511#include "pro_line.h"
140512
140513Dwarf_Unsigned _dwarf_pro_add_line_entry(Dwarf_P_Debug,
140514					 Dwarf_Unsigned file_index,
140515					 Dwarf_Addr code_address,
140516					 Dwarf_Unsigned symidx,
140517					 Dwarf_Unsigned line_no,
140518					 Dwarf_Signed col_no,
140519					 Dwarf_Bool is_stmt_begin,
140520					 Dwarf_Bool is_bb_begin,
140521					 Dwarf_Ubyte opc,
140522					 Dwarf_Error * error);
140523
140524/*-------------------------------------------------------------------------
140525	Add a entry to the line information section
140526	file_index: index of file in file entries, obtained from
140527	add_file_entry() call.
140528
140529	This function actually calls _dwarf_pro_add_line_entry(), with
140530	an extra parameter, the opcode. Done so that interface calls
140531	dwarf_lne_set_address() and dwarf_lne_end_sequence() can use
140532	this internal routine.
140533---------------------------------------------------------------------------*/
140534Dwarf_Unsigned
140535dwarf_add_line_entry(Dwarf_P_Debug dbg,
140536		     Dwarf_Unsigned file_index,
140537		     Dwarf_Addr code_address,
140538		     Dwarf_Unsigned line_no,
140539		     Dwarf_Signed col_no,
140540		     Dwarf_Bool is_stmt_begin,
140541		     Dwarf_Bool is_bb_begin, Dwarf_Error * error)
140542{
140543    Dwarf_Unsigned retval;
140544
140545    retval = _dwarf_pro_add_line_entry(dbg, file_index, code_address, 0,
140546				       line_no, col_no, is_stmt_begin,
140547				       is_bb_begin, 0, error);
140548    return retval;
140549}
140550
140551/*------------------------------------------------------------------------
140552	Ask to emit DW_LNE_set_address opcode explicitly. Used by be
140553	to emit start of a new .text section, or to force a relocated
140554	address into debug line information entry.
140555-------------------------------------------------------------------------*/
140556Dwarf_Unsigned
140557dwarf_lne_set_address(Dwarf_P_Debug dbg,
140558		      Dwarf_Addr offs,
140559		      Dwarf_Unsigned symidx, Dwarf_Error * error)
140560{
140561    Dwarf_Ubyte opc;
140562    Dwarf_Unsigned retval;
140563
140564    opc = DW_LNE_set_address;
140565    retval =
140566	_dwarf_pro_add_line_entry(dbg, 0, offs, symidx, 0, 0, 0, 0, opc,
140567				  error);
140568    return retval;
140569}
140570
140571/*------------------------------------------------------------------------
140572	Ask to emit end_seqence opcode. Used normally at the end of a
140573	compilation unit. Can also be used in the middle if there
140574	are gaps in the region described by the code address.
140575-------------------------------------------------------------------------*/
140576Dwarf_Unsigned
140577dwarf_lne_end_sequence(Dwarf_P_Debug dbg,
140578		       Dwarf_Addr end_address, Dwarf_Error * error)
140579{
140580    Dwarf_Ubyte opc;
140581    Dwarf_Unsigned retval;
140582
140583    opc = DW_LNE_end_sequence;
140584    retval =
140585	_dwarf_pro_add_line_entry(dbg, 0, end_address, 0, 0, 0, 0, 0,
140586				  opc, error);
140587    return retval;
140588}
140589
140590/*----------------------------------------------------------------------------
140591	Add an entry in the internal list of lines mantained by producer.
140592	Opc indicates if an opcode needs to be generated, rather than just
140593	an entry in the matrix. During opcodes generation time, these
140594	opcodes will be used.
140595-----------------------------------------------------------------------------*/
140596Dwarf_Unsigned
140597_dwarf_pro_add_line_entry(Dwarf_P_Debug dbg,
140598			  Dwarf_Unsigned file_index,
140599			  Dwarf_Addr code_address,
140600			  Dwarf_Unsigned symidx,
140601			  Dwarf_Unsigned line_no,
140602			  Dwarf_Signed col_no,
140603			  Dwarf_Bool is_stmt_begin,
140604			  Dwarf_Bool is_bb_begin,
140605			  Dwarf_Ubyte opc, Dwarf_Error * error)
140606{
140607    if (dbg->de_lines == NULL) {
140608	dbg->de_lines = (Dwarf_P_Line)
140609	    _dwarf_p_get_alloc(dbg, sizeof(struct Dwarf_P_Line_s));
140610	if (dbg->de_lines == NULL) {
140611	    DWARF_P_DBG_ERROR(dbg, DW_DLE_LINE_ALLOC, DW_DLV_NOCOUNT);
140612	}
140613	dbg->de_last_line = dbg->de_lines;
140614	_dwarf_pro_reg_init(dbg->de_lines);
140615
140616    } else {
140617	dbg->de_last_line->dpl_next = (Dwarf_P_Line)
140618	    _dwarf_p_get_alloc(dbg, sizeof(struct Dwarf_P_Line_s));
140619	if (dbg->de_last_line->dpl_next == NULL) {
140620	    DWARF_P_DBG_ERROR(dbg, DW_DLE_LINE_ALLOC, DW_DLV_NOCOUNT);
140621	}
140622	dbg->de_last_line = dbg->de_last_line->dpl_next;
140623	_dwarf_pro_reg_init(dbg->de_last_line);
140624    }
140625    dbg->de_last_line->dpl_address = code_address;
140626    dbg->de_last_line->dpl_file = (unsigned long) file_index;
140627    dbg->de_last_line->dpl_line = (unsigned long) line_no;
140628    dbg->de_last_line->dpl_column = (unsigned long) col_no;
140629    dbg->de_last_line->dpl_is_stmt = is_stmt_begin;
140630    dbg->de_last_line->dpl_basic_block = is_bb_begin;
140631    dbg->de_last_line->dpl_opc = opc;
140632    dbg->de_last_line->dpl_r_symidx = symidx;
140633
140634    return (0);
140635}
140636
140637/*-----------------------------------------------------------------------
140638	Add a directory declaration to the debug_line section. Stored
140639	in linked list.
140640------------------------------------------------------------------------*/
140641Dwarf_Unsigned
140642dwarf_add_directory_decl(Dwarf_P_Debug dbg,
140643			 char *name, Dwarf_Error * error)
140644{
140645    if (dbg->de_inc_dirs == NULL) {
140646	dbg->de_inc_dirs = (Dwarf_P_Inc_Dir)
140647	    _dwarf_p_get_alloc(dbg, sizeof(struct Dwarf_P_Inc_Dir_s));
140648	if (dbg->de_inc_dirs == NULL) {
140649	    DWARF_P_DBG_ERROR(dbg, DW_DLE_INCDIR_ALLOC, DW_DLV_NOCOUNT);
140650	}
140651	dbg->de_last_inc_dir = dbg->de_inc_dirs;
140652	dbg->de_n_inc_dirs = 1;
140653    } else {
140654	dbg->de_last_inc_dir->did_next = (Dwarf_P_Inc_Dir)
140655	    _dwarf_p_get_alloc(dbg, sizeof(struct Dwarf_P_Inc_Dir_s));
140656	if (dbg->de_last_inc_dir->did_next == NULL) {
140657	    DWARF_P_DBG_ERROR(dbg, DW_DLE_INCDIR_ALLOC, DW_DLV_NOCOUNT);
140658	}
140659	dbg->de_last_inc_dir = dbg->de_last_inc_dir->did_next;
140660	dbg->de_n_inc_dirs++;
140661    }
140662    dbg->de_last_inc_dir->did_name =
140663	(char *) _dwarf_p_get_alloc(dbg, strlen(name) + 1);
140664    if (dbg->de_last_inc_dir->did_name == NULL) {
140665	DWARF_P_DBG_ERROR(dbg, DW_DLE_STRING_ALLOC, DW_DLV_NOCOUNT);
140666    }
140667    strcpy(dbg->de_last_inc_dir->did_name, name);
140668    dbg->de_last_inc_dir->did_next = NULL;
140669
140670    return dbg->de_n_inc_dirs;
140671}
140672
140673/*-----------------------------------------------------------------------
140674	Add a file entry declaration to the debug_line section. Stored
140675	in linked list. The data is immediately encodes as leb128
140676	and stored in Dwarf_P_F_Entry_s struct.
140677------------------------------------------------------------------------*/
140678Dwarf_Unsigned
140679dwarf_add_file_decl(Dwarf_P_Debug dbg,
140680		    char *name,
140681		    Dwarf_Unsigned dir_idx,
140682		    Dwarf_Unsigned time_mod,
140683		    Dwarf_Unsigned length, Dwarf_Error * error)
140684{
140685    Dwarf_P_F_Entry cur;
140686    char *ptr;
140687    int nbytes_idx, nbytes_time, nbytes_len;
140688    char buffidx[ENCODE_SPACE_NEEDED];
140689    char bufftime[ENCODE_SPACE_NEEDED];
140690    char bufflen[ENCODE_SPACE_NEEDED];
140691    int res;
140692
140693    if (dbg->de_file_entries == NULL) {
140694	dbg->de_file_entries = (Dwarf_P_F_Entry)
140695	    _dwarf_p_get_alloc(dbg, sizeof(struct Dwarf_P_F_Entry_s));
140696	if (dbg->de_file_entries == NULL) {
140697	    DWARF_P_DBG_ERROR(dbg, DW_DLE_FILE_ENTRY_ALLOC,
140698			      DW_DLV_NOCOUNT);
140699	}
140700	cur = dbg->de_file_entries;
140701	dbg->de_last_file_entry = cur;
140702	dbg->de_n_file_entries = 1;
140703    } else {
140704	cur = dbg->de_last_file_entry;
140705	cur->dfe_next = (Dwarf_P_F_Entry)
140706	    _dwarf_p_get_alloc(dbg, sizeof(struct Dwarf_P_F_Entry_s));
140707	if (cur->dfe_next == NULL) {
140708	    DWARF_P_DBG_ERROR(dbg, DW_DLE_FILE_ENTRY_ALLOC,
140709			      DW_DLV_NOCOUNT);
140710	}
140711	cur = cur->dfe_next;
140712	dbg->de_last_file_entry = cur;
140713	dbg->de_n_file_entries++;
140714    }
140715    cur->dfe_name = (char *) _dwarf_p_get_alloc(dbg, strlen(name) + 1);
140716    if (cur->dfe_name == NULL) {
140717	DWARF_P_DBG_ERROR(dbg, DW_DLE_ALLOC_FAIL, DW_DLV_NOCOUNT);
140718    }
140719    strcpy((char *) cur->dfe_name, name);
140720    res = _dwarf_pro_encode_leb128_nm(dir_idx, &nbytes_idx,
140721				      buffidx, sizeof(buffidx));
140722    if (res != DW_DLV_OK) {
140723	DWARF_P_DBG_ERROR(dbg, DW_DLE_ALLOC_FAIL, DW_DLV_NOCOUNT);
140724    }
140725    res = _dwarf_pro_encode_leb128_nm(time_mod, &nbytes_time,
140726				      bufftime, sizeof(bufftime));
140727    if (res != DW_DLV_OK) {
140728	DWARF_P_DBG_ERROR(dbg, DW_DLE_ALLOC_FAIL, DW_DLV_NOCOUNT);
140729    }
140730    res = _dwarf_pro_encode_leb128_nm(length, &nbytes_len,
140731				      bufflen, sizeof(bufflen));
140732    cur->dfe_args = (char *)
140733	_dwarf_p_get_alloc(dbg, nbytes_idx + nbytes_time + nbytes_len);
140734    if (cur->dfe_args == NULL) {
140735	DWARF_P_DBG_ERROR(dbg, DW_DLE_ALLOC_FAIL, DW_DLV_NOCOUNT);
140736    }
140737    ptr = cur->dfe_args;
140738    memcpy((void *) ptr, buffidx, nbytes_idx);
140739    ptr += nbytes_idx;
140740    memcpy((void *) ptr, bufftime, nbytes_time);
140741    ptr += nbytes_time;
140742    memcpy((void *) ptr, bufflen, nbytes_len);
140743    ptr += nbytes_len;
140744    cur->dfe_nbytes = nbytes_idx + nbytes_time + nbytes_len;
140745    cur->dfe_next = NULL;
140746
140747    return dbg->de_n_file_entries;
140748}
140749
140750
140751/*---------------------------------------------------------------------
140752	Initialize a row of the matrix for line numbers, meaning
140753	initialize the struct corresponding to it
140754----------------------------------------------------------------------*/
140755void
140756_dwarf_pro_reg_init(Dwarf_P_Line cur_line)
140757{
140758    cur_line->dpl_address = 0;
140759    cur_line->dpl_file = 1;
140760    cur_line->dpl_line = 1;
140761    cur_line->dpl_column = 0;
140762    cur_line->dpl_is_stmt = DEFAULT_IS_STMT;
140763    cur_line->dpl_basic_block = false;
140764    cur_line->dpl_next = NULL;
140765}
140766��0707010001ada90000812400011e740000000a000000014020682800000bca000000660000000000000000000000000000001400000000libdwarf/pro_line.h���/*
140767
140768  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
140769
140770  This program is free software; you can redistribute it and/or modify it
140771  under the terms of version 2.1 of the GNU Lesser General Public License
140772  as published by the Free Software Foundation.
140773
140774  This program is distributed in the hope that it would be useful, but
140775  WITHOUT ANY WARRANTY; without even the implied warranty of
140776  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
140777
140778  Further, this software is distributed without any warranty that it is
140779  free of the rightful claim of any third person regarding infringement
140780  or the like.  Any license provided herein, whether implied or
140781  otherwise, applies only to this software file.  Patent licenses, if
140782  any, provided herein do not apply to combinations of this program with
140783  other software, or any other product whatsoever.
140784
140785  You should have received a copy of the GNU Lesser General Public
140786  License along with this program; if not, write the Free Software
140787  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
140788  USA.
140789
140790  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
140791  Mountain View, CA 94043, or:
140792
140793  http://www.sgi.com
140794
140795  For further information regarding this notice, see:
140796
140797  http://oss.sgi.com/projects/GenInfo/NoticeExplan
140798
140799*/
140800
140801
140802
140803#define VERSION				2
140804#define MIN_INST_LENGTH			4
140805#define DEFAULT_IS_STMT			false
140806			/* line base and range are temporarily defines.
140807			   They need to be calculated later */
140808#define LINE_BASE			-1
140809#define LINE_RANGE			4
140810
140811#define OPCODE_BASE			10
140812#define MAX_OPCODE			255
140813
140814
140815/*
140816	This struct is used to hold entries in the include directories
140817	part of statement prologue.
140818*/
140819struct Dwarf_P_Inc_Dir_s {
140820    char *did_name;		/* name of directory */
140821    Dwarf_P_Inc_Dir did_next;
140822};
140823
140824
140825/*
140826	This struct holds file entries for the statement prologue.
140827	Defined in pro_line.h
140828*/
140829struct Dwarf_P_F_Entry_s {
140830    char *dfe_name;
140831    char *dfe_args;		/* has dir index, time of modification,
140832				   length in bytes. Encodes as leb128 */
140833    int dfe_nbytes;		/* number of bytes in args */
140834    Dwarf_P_F_Entry dfe_next;
140835};
140836
140837
140838/*
140839	Struct holding line number information for each of the producer
140840	line entries
140841*/
140842struct Dwarf_P_Line_s {
140843    /* code address */
140844    Dwarf_Addr dpl_address;
140845
140846    /* file index, index into file entry */
140847    Dwarf_Word dpl_file;
140848
140849    /* line number */
140850    Dwarf_Word dpl_line;
140851
140852    /* column number */
140853    Dwarf_Word dpl_column;
140854
140855    /* whether its a beginning of a stmt */
140856    Dwarf_Ubyte dpl_is_stmt;
140857
140858    /* whether its a beginning of basic blk */
140859    Dwarf_Ubyte dpl_basic_block;
140860
140861    /* used to store opcodes set_address, and end_seq */
140862    Dwarf_Ubyte dpl_opc;
140863
140864    /*
140865       Used only for relocations.  Has index of symbol relative to
140866       which relocation has to be done (the S part in S + A) */
140867    Dwarf_Unsigned dpl_r_symidx;
140868
140869    Dwarf_P_Line dpl_next;
140870};
140871
140872/*
140873	to initialize state machine registers, definition in
140874	pro_line.c
140875*/
140876void _dwarf_pro_reg_init(Dwarf_P_Line);
140877��0707010001adaa0000812400011e740000000a000000014020682700003343000000660000000000000000000000000000001700000000libdwarf/pro_macinfo.c����/*
140878
140879  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
140880
140881  This program is free software; you can redistribute it and/or modify it
140882  under the terms of version 2.1 of the GNU Lesser General Public License
140883  as published by the Free Software Foundation.
140884
140885  This program is distributed in the hope that it would be useful, but
140886  WITHOUT ANY WARRANTY; without even the implied warranty of
140887  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
140888
140889  Further, this software is distributed without any warranty that it is
140890  free of the rightful claim of any third person regarding infringement
140891  or the like.  Any license provided herein, whether implied or
140892  otherwise, applies only to this software file.  Patent licenses, if
140893  any, provided herein do not apply to combinations of this program with
140894  other software, or any other product whatsoever.
140895
140896  You should have received a copy of the GNU Lesser General Public
140897  License along with this program; if not, write the Free Software
140898  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
140899  USA.
140900
140901  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
140902  Mountain View, CA 94043, or:
140903
140904  http://www.sgi.com
140905
140906  For further information regarding this notice, see:
140907
140908  http://oss.sgi.com/projects/GenInfo/NoticeExplan
140909
140910*/
140911
140912
140913
140914#include "config.h"
140915#include "libdwarfdefs.h"
140916#include <stdio.h>
140917#include <string.h>
140918#include "pro_incl.h"
140919#include "pro_section.h"
140920#include "pro_macinfo.h"
140921
140922/*
140923	I don't much like the error strings this generates, since
140924	like the rest of libdwarf they are simple strings with
140925	no useful numbers in them. But that's not something I can
140926	fix without more work than I have time for
140927	right now.  davea Nov 94.
140928*/
140929
140930/* these are gross overestimates of the number of
140931** bytes needed to store a number in LEB form.
140932** Just estimates, and since blocks are reasonable size,
140933** the end-block waste is small.
140934** Of course the waste is NOT present on disk.
140935*/
140936
140937#define COMMAND_LEN ENCODE_SPACE_NEEDED
140938#define LINE_LEN    ENCODE_SPACE_NEEDED
140939#define BASE_MACINFO_MALLOC_LEN 2048
140940
140941static int
140942libdwarf_compose_begin(Dwarf_P_Debug dbg, int code,
140943		       size_t maxlen, int *compose_error_type)
140944{
140945    unsigned char *nextchar;
140946    struct dw_macinfo_block_s *curblk = dbg->de_current_macinfo;
140947
140948    if (curblk == 0) {
140949	struct dw_macinfo_block_s *newb;
140950	size_t len;
140951
140952	/* initial allocation */
140953	size_t blen = BASE_MACINFO_MALLOC_LEN;
140954
140955	if (blen < maxlen) {
140956	    blen = 2 * maxlen;
140957	}
140958	len = sizeof(struct dw_macinfo_block_s) + blen;
140959	newb =
140960	    (struct dw_macinfo_block_s *) _dwarf_p_get_alloc(dbg, len);
140961	if (!newb) {
140962	    *compose_error_type = DW_DLE_MACINFO_MALLOC_FAIL;
140963	    return DW_DLV_ERROR;
140964	}
140965	newb->mb_data =
140966	    (char *) newb + sizeof(struct dw_macinfo_block_s);
140967	newb->mb_avail_len = blen;
140968	newb->mb_used_len = 0;
140969	newb->mb_macinfo_data_space_len = blen;
140970	dbg->de_first_macinfo = newb;
140971	dbg->de_current_macinfo = newb;
140972	curblk = newb;
140973    } else if (curblk->mb_avail_len < maxlen) {
140974	struct dw_macinfo_block_s *newb;
140975	size_t len;
140976
140977	/* no space left in block: allocate a new block */
140978	size_t blen =
140979	    dbg->de_current_macinfo->mb_macinfo_data_space_len * 2;
140980	if (blen < maxlen) {
140981	    blen = 2 * maxlen;
140982	}
140983	len = sizeof(struct dw_macinfo_block_s) + blen;
140984	newb =
140985	    (struct dw_macinfo_block_s *) _dwarf_p_get_alloc(dbg, len);
140986	if (!newb) {
140987	    *compose_error_type = DW_DLE_MACINFO_MALLOC_FAIL;
140988	    return DW_DLV_ERROR;
140989	}
140990	newb->mb_data =
140991	    (char *) newb + sizeof(struct dw_macinfo_block_s);
140992	newb->mb_avail_len = blen;
140993	newb->mb_used_len = 0;
140994	newb->mb_macinfo_data_space_len = blen;
140995	dbg->de_first_macinfo->mb_next = newb;
140996	dbg->de_current_macinfo = newb;
140997	curblk = newb;
140998    }
140999    /* now curblk has enough room */
141000    dbg->de_compose_avail = curblk->mb_avail_len;
141001    dbg->de_compose_used_len = curblk->mb_used_len;
141002    nextchar =
141003	(unsigned char *) (curblk->mb_data + dbg->de_compose_used_len);
141004    *nextchar = code;
141005    dbg->de_compose_avail--;
141006    ++dbg->de_compose_used_len;
141007    return DW_DLV_OK;
141008}
141009
141010
141011
141012static void
141013libdwarf_compose_add_string(Dwarf_P_Debug dbg, char *string, size_t len)
141014{
141015    struct dw_macinfo_block_s *curblk = dbg->de_current_macinfo;
141016    unsigned char *nextchar;
141017
141018    nextchar =
141019	(unsigned char *) (curblk->mb_data + dbg->de_compose_used_len);
141020
141021    len += 1;			/* count the null terminator */
141022
141023    memcpy(nextchar, string, len);
141024    dbg->de_compose_avail -= len;
141025    dbg->de_compose_used_len += len;
141026    return;
141027
141028}
141029static int
141030libdwarf_compose_add_line(Dwarf_P_Debug dbg,
141031			  Dwarf_Unsigned line, int *compose_error_type)
141032{
141033    struct dw_macinfo_block_s *curblk = dbg->de_current_macinfo;
141034    unsigned char *nextchar;
141035    int res;
141036    int nbytes;
141037
141038    nextchar =
141039	(unsigned char *) (curblk->mb_data + dbg->de_compose_used_len);
141040
141041    /* Put the created leb number directly into the macro buffer If
141042       dbg->de_compose_avail is > INT_MAX this will not work as the
141043       'int' will look negative to _dwarf_pro_encode_leb128_nm! */
141044
141045    res = _dwarf_pro_encode_leb128_nm(line, &nbytes,
141046				      (char *) nextchar,
141047				      (int) dbg->de_compose_avail);
141048    if (res != DW_DLV_OK) {
141049	*compose_error_type = DW_DLE_MACINFO_INTERNAL_ERROR_SPACE;
141050	return DW_DLV_ERROR;
141051    }
141052
141053    dbg->de_compose_avail -= nbytes;
141054    dbg->de_compose_used_len += nbytes;
141055    return DW_DLV_OK;
141056}
141057
141058/*
141059   This function actually 'commits' the space used by the
141060   preceeding calls.
141061*/
141062static int
141063libdwarf_compose_complete(Dwarf_P_Debug dbg, int *compose_error_type)
141064{
141065    struct dw_macinfo_block_s *curblk = dbg->de_current_macinfo;
141066
141067    if (dbg->de_compose_used_len > curblk->mb_macinfo_data_space_len) {
141068	*compose_error_type = DW_DLE_MACINFO_INTERNAL_ERROR_SPACE;
141069	return DW_DLV_ERROR;
141070    }
141071    curblk->mb_avail_len = dbg->de_compose_avail;
141072    curblk->mb_used_len = dbg->de_compose_used_len;
141073    return DW_DLV_OK;
141074}
141075
141076
141077
141078int
141079dwarf_def_macro(Dwarf_P_Debug dbg,
141080		Dwarf_Unsigned line,
141081		char *macname, char *macvalue, Dwarf_Error * error)
141082{
141083    size_t len;
141084    size_t len2;
141085    size_t length_est;
141086    int res;
141087    int compose_error_type;
141088
141089    if (dbg == NULL) {
141090	_dwarf_p_error(NULL, error, DW_DLE_DBG_NULL);
141091	return (DW_DLV_ERROR);
141092    }
141093    if (macname == 0) {
141094	_dwarf_p_error(NULL, error, DW_DLE_MACINFO_STRING_NULL);
141095	return (DW_DLV_ERROR);
141096    }
141097    len = strlen(macname) + 1;
141098    if (len == 0) {
141099	_dwarf_p_error(NULL, error, DW_DLE_MACINFO_STRING_EMPTY);
141100	return (DW_DLV_ERROR);
141101    }
141102    if (macvalue) {
141103	len2 = strlen(macvalue) + 1;
141104    } else {
141105	len2 = 0;
141106    }
141107    length_est = COMMAND_LEN + LINE_LEN + len + len2 + 1;	/* 1
141108								   for
141109								   space
141110								   character
141111								   we
141112								   add */
141113    res = libdwarf_compose_begin(dbg, DW_MACINFO_define, length_est,
141114				 &compose_error_type);
141115    if (res != DW_DLV_OK) {
141116	_dwarf_p_error(NULL, error, compose_error_type);
141117	return (DW_DLV_ERROR);
141118    }
141119    res = libdwarf_compose_add_line(dbg, line, &compose_error_type);
141120    if (res != DW_DLV_OK) {
141121	_dwarf_p_error(NULL, error, compose_error_type);
141122	return (DW_DLV_ERROR);
141123    }
141124    libdwarf_compose_add_string(dbg, macname, len);
141125    libdwarf_compose_add_string(dbg, " ", 1);
141126    if (macvalue) {
141127	libdwarf_compose_add_string(dbg, " ", 1);
141128	libdwarf_compose_add_string(dbg, macvalue, len2);
141129    }
141130    res = libdwarf_compose_complete(dbg, &compose_error_type);
141131    if (res != DW_DLV_OK) {
141132	_dwarf_p_error(NULL, error, compose_error_type);
141133	return (DW_DLV_ERROR);
141134    }
141135    return DW_DLV_OK;
141136}
141137
141138int
141139dwarf_undef_macro(Dwarf_P_Debug dbg,
141140		  Dwarf_Unsigned line,
141141		  char *macname, Dwarf_Error * error)
141142{
141143
141144    size_t len;
141145    size_t length_est;
141146    int res;
141147    int compose_error_type;
141148
141149    if (dbg == NULL) {
141150	_dwarf_p_error(NULL, error, DW_DLE_DBG_NULL);
141151	return (DW_DLV_ERROR);
141152    }
141153    if (macname == 0) {
141154	_dwarf_p_error(NULL, error, DW_DLE_MACINFO_STRING_NULL);
141155	return (DW_DLV_ERROR);
141156    }
141157    len = strlen(macname) + 1;
141158    if (len == 0) {
141159	_dwarf_p_error(NULL, error, DW_DLE_MACINFO_STRING_EMPTY);
141160	return (DW_DLV_ERROR);
141161    }
141162    length_est = COMMAND_LEN + LINE_LEN + len;
141163    res = libdwarf_compose_begin(dbg, DW_MACINFO_undef, length_est,
141164				 &compose_error_type);
141165    if (res != DW_DLV_OK) {
141166	_dwarf_p_error(NULL, error, compose_error_type);
141167	return (DW_DLV_ERROR);
141168    }
141169    res = libdwarf_compose_add_line(dbg, line, &compose_error_type);
141170    if (res != DW_DLV_OK) {
141171	_dwarf_p_error(NULL, error, compose_error_type);
141172	return (DW_DLV_ERROR);
141173    }
141174    libdwarf_compose_add_string(dbg, macname, len);
141175    res = libdwarf_compose_complete(dbg, &compose_error_type);
141176    if (res != DW_DLV_OK) {
141177	_dwarf_p_error(NULL, error, compose_error_type);
141178	return (DW_DLV_ERROR);
141179    }
141180    return DW_DLV_OK;
141181}
141182
141183int
141184dwarf_start_macro_file(Dwarf_P_Debug dbg,
141185		       Dwarf_Unsigned fileindex,
141186		       Dwarf_Unsigned linenumber, Dwarf_Error * error)
141187{
141188    size_t length_est;
141189    int res;
141190    int compose_error_type;
141191
141192    if (dbg == NULL) {
141193	_dwarf_p_error(NULL, error, DW_DLE_DBG_NULL);
141194	return (DW_DLV_ERROR);
141195    }
141196    length_est = COMMAND_LEN + LINE_LEN + LINE_LEN;
141197    res = libdwarf_compose_begin(dbg, DW_MACINFO_start_file, length_est,
141198				 &compose_error_type);
141199    if (res != DW_DLV_OK) {
141200	_dwarf_p_error(NULL, error, compose_error_type);
141201	return (DW_DLV_ERROR);
141202    }
141203    res = libdwarf_compose_add_line(dbg, fileindex,
141204				    &compose_error_type);
141205    if (res != DW_DLV_OK) {
141206	_dwarf_p_error(NULL, error, compose_error_type);
141207	return (DW_DLV_ERROR);
141208    }
141209    res = libdwarf_compose_add_line(dbg, linenumber,
141210				    &compose_error_type);
141211    if (res != DW_DLV_OK) {
141212	_dwarf_p_error(NULL, error, compose_error_type);
141213	return (DW_DLV_ERROR);
141214    }
141215    return DW_DLV_OK;
141216}
141217
141218int
141219dwarf_end_macro_file(Dwarf_P_Debug dbg, Dwarf_Error * error)
141220{
141221    size_t length_est;
141222    int res;
141223    int compose_error_type;
141224
141225    if (dbg == NULL) {
141226	_dwarf_p_error(NULL, error, DW_DLE_DBG_NULL);
141227	return (DW_DLV_ERROR);
141228    }
141229    length_est = COMMAND_LEN;
141230    res = libdwarf_compose_begin(dbg, DW_MACINFO_end_file, length_est,
141231				 &compose_error_type);
141232    if (res != DW_DLV_OK) {
141233	_dwarf_p_error(NULL, error, compose_error_type);
141234	return (DW_DLV_ERROR);
141235    }
141236    res = libdwarf_compose_complete(dbg, &compose_error_type);
141237    if (res != DW_DLV_OK) {
141238	_dwarf_p_error(NULL, error, compose_error_type);
141239	return (DW_DLV_ERROR);
141240    }
141241    return DW_DLV_OK;
141242}
141243
141244int
141245dwarf_vendor_ext(Dwarf_P_Debug dbg,
141246		 Dwarf_Unsigned constant,
141247		 char *string, Dwarf_Error * error)
141248{
141249    size_t len;
141250    size_t length_est;
141251    int res;
141252    int compose_error_type;
141253
141254    if (dbg == NULL) {
141255	_dwarf_p_error(NULL, error, DW_DLE_DBG_NULL);
141256	return (DW_DLV_ERROR);
141257    }
141258    if (string == 0) {
141259	_dwarf_p_error(NULL, error, DW_DLE_MACINFO_STRING_NULL);
141260	return (DW_DLV_ERROR);
141261    }
141262    len = strlen(string) + 1;
141263    if (len == 0) {
141264	_dwarf_p_error(NULL, error, DW_DLE_MACINFO_STRING_EMPTY);
141265	return (DW_DLV_ERROR);
141266    }
141267    length_est = COMMAND_LEN + LINE_LEN + len;
141268    res = libdwarf_compose_begin(dbg, DW_MACINFO_vendor_ext, length_est,
141269				 &compose_error_type);
141270    if (res != DW_DLV_OK) {
141271	_dwarf_p_error(NULL, error, compose_error_type);
141272	return (DW_DLV_ERROR);
141273    }
141274    res = libdwarf_compose_add_line(dbg, constant, &compose_error_type);
141275    if (res != DW_DLV_OK) {
141276	_dwarf_p_error(NULL, error, compose_error_type);
141277	return (DW_DLV_ERROR);
141278    }
141279    libdwarf_compose_add_string(dbg, string, len);
141280    libdwarf_compose_complete(dbg, &compose_error_type);
141281    if (res != DW_DLV_OK) {
141282	_dwarf_p_error(NULL, error, compose_error_type);
141283	return (DW_DLV_ERROR);
141284    }
141285    return DW_DLV_OK;
141286}
141287
141288
141289
141290int
141291_dwarf_pro_transform_macro_info_to_disk(Dwarf_P_Debug dbg,
141292					Dwarf_Error * error)
141293{
141294    /* Total num of bytes in .debug_macinfo section. */
141295    Dwarf_Unsigned mac_num_bytes;
141296
141297    /* Points to first byte of .debug_macinfo buffer. */
141298    Dwarf_Small *macinfo;
141299
141300    /* Fills in the .debug_macinfo buffer. */
141301    Dwarf_Small *macinfo_ptr;
141302
141303
141304    /* Used to scan the section data buffers. */
141305    struct dw_macinfo_block_s *m_prev;
141306    struct dw_macinfo_block_s *m_sect;
141307
141308
141309    /* Get the size of the debug_macinfo data */
141310    mac_num_bytes = 0;
141311    for (m_sect = dbg->de_first_macinfo; m_sect != NULL;
141312	 m_sect = m_sect->mb_next) {
141313	mac_num_bytes += m_sect->mb_used_len;
141314    }
141315    /* Tthe final entry has a type code of 0 to indicate It is final
141316       for this CU Takes just 1 byte. */
141317    mac_num_bytes += 1;
141318
141319    GET_CHUNK(dbg, dbg->de_elf_sects[DEBUG_MACINFO],
141320	      macinfo, (unsigned long) mac_num_bytes, error);
141321    if (macinfo == NULL) {
141322	_dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
141323	return (0);
141324    }
141325
141326    macinfo_ptr = macinfo;
141327    m_prev = 0;
141328    for (m_sect = dbg->de_first_macinfo; m_sect != NULL;
141329	 m_sect = m_sect->mb_next) {
141330	memcpy(macinfo_ptr, m_sect->mb_data, m_sect->mb_used_len);
141331	macinfo_ptr += m_sect->mb_used_len;
141332	if (m_prev) {
141333	    _dwarf_p_dealloc(dbg, (Dwarf_Small *) m_prev);
141334	    m_prev = 0;
141335	}
141336	m_prev = m_sect;
141337    }
141338    *macinfo_ptr = 0;		/* the type code of 0 as last entry */
141339    if (m_prev) {
141340	_dwarf_p_dealloc(dbg, (Dwarf_Small *) m_prev);
141341	m_prev = 0;
141342    }
141343
141344    dbg->de_first_macinfo = NULL;
141345    dbg->de_current_macinfo = NULL;
141346
141347    return (int) dbg->de_n_debug_sect;
141348}
141349�0707010001adab0000812400011e740000000a000000014020682700000588000000660000000000000000000000000000001700000000libdwarf/pro_macinfo.h����/*
141350
141351  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
141352
141353  This program is free software; you can redistribute it and/or modify it
141354  under the terms of version 2.1 of the GNU Lesser General Public License
141355  as published by the Free Software Foundation.
141356
141357  This program is distributed in the hope that it would be useful, but
141358  WITHOUT ANY WARRANTY; without even the implied warranty of
141359  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
141360
141361  Further, this software is distributed without any warranty that it is
141362  free of the rightful claim of any third person regarding infringement
141363  or the like.  Any license provided herein, whether implied or
141364  otherwise, applies only to this software file.  Patent licenses, if
141365  any, provided herein do not apply to combinations of this program with
141366  other software, or any other product whatsoever.
141367
141368  You should have received a copy of the GNU Lesser General Public
141369  License along with this program; if not, write the Free Software
141370  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
141371  USA.
141372
141373  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
141374  Mountain View, CA 94043, or:
141375
141376  http://www.sgi.com
141377
141378  For further information regarding this notice, see:
141379
141380  http://oss.sgi.com/projects/GenInfo/NoticeExplan
141381
141382*/
141383
141384
141385
141386
141387int _dwarf_pro_transform_macro_info_to_disk(Dwarf_P_Debug dbg,
141388					    Dwarf_Error * error);
1413890707010001adac0000812400011e740000000a000000014020682800003ac7000000660000000000000000000000000000001600000000libdwarf/pro_opaque.h�/*
141390
141391  Copyright (C) 2000, 2002 Silicon Graphics, Inc.  All Rights Reserved.
141392
141393  This program is free software; you can redistribute it and/or modify it
141394  under the terms of version 2.1 of the GNU Lesser General Public License
141395  as published by the Free Software Foundation.
141396
141397  This program is distributed in the hope that it would be useful, but
141398  WITHOUT ANY WARRANTY; without even the implied warranty of
141399  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
141400
141401  Further, this software is distributed without any warranty that it is
141402  free of the rightful claim of any third person regarding infringement
141403  or the like.  Any license provided herein, whether implied or
141404  otherwise, applies only to this software file.  Patent licenses, if
141405  any, provided herein do not apply to combinations of this program with
141406  other software, or any other product whatsoever.
141407
141408  You should have received a copy of the GNU Lesser General Public
141409  License along with this program; if not, write the Free Software
141410  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
141411  USA.
141412
141413  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
141414  Mountain View, CA 94043, or:
141415
141416  http://www.sgi.com
141417
141418  For further information regarding this notice, see:
141419
141420  http://oss.sgi.com/projects/GenInfo/NoticeExplan
141421
141422*/
141423
141424
141425#include <stddef.h>
141426
141427/*
141428    Sgidefs included to define __uint32_t,
141429    a guaranteed 4-byte quantity.
141430*/
141431#include "libdwarfdefs.h"
141432
141433#define true                    1
141434#define false                   0
141435
141436/* to identify a cie */
141437#define DW_CIE_ID 		~(0x0)
141438#define DW_CIE_VERSION		1
141439
141440/*Dwarf_Word  is unsigned word usable for index, count in memory */
141441/*Dwarf_Sword is   signed word usable for index, count in memory */
141442/* The are 32 or 64 bits depending if 64 bit longs or not, which
141443** fits the  ILP32 and LP64 models
141444** These work equally well with ILP64.
141445*/
141446
141447typedef unsigned long Dwarf_Word;
141448typedef long Dwarf_Sword;
141449
141450
141451typedef signed char Dwarf_Sbyte;
141452typedef unsigned char Dwarf_Ubyte;
141453typedef signed short Dwarf_Shalf;
141454
141455/*
141456	On any change that makes libdwarf producer
141457	incompatible, increment this number.
141458	1->2->3 ...
141459
141460*/
141461#define  PRO_VERSION_MAGIC 0xdead1
141462
141463
141464/* these 2 are fixed sizes which must not vary with the
141465** ILP32/LP64 model. These two stay at 32 bit.
141466*/
141467typedef __uint32_t Dwarf_ufixed;
141468typedef __int32_t Dwarf_sfixed;
141469
141470/*
141471	producer:
141472	This struct is used to hold information about all
141473	debug* sections. On creating a new section, section
141474	names and indices are added to this struct
141475	definition in pro_section.h
141476*/
141477typedef struct Dwarf_P_Section_Data_s *Dwarf_P_Section_Data;
141478
141479/*
141480	producer:
141481	This struct is used to hold entries in the include directories
141482	part of statement prologue. Definition in pro_line.h
141483*/
141484typedef struct Dwarf_P_Inc_Dir_s *Dwarf_P_Inc_Dir;
141485
141486/*
141487	producer:
141488	This struct holds file entries for the statement prologue.
141489	Defined in pro_line.h
141490*/
141491typedef struct Dwarf_P_F_Entry_s *Dwarf_P_F_Entry;
141492
141493/*
141494	producer:
141495	This struct holds information for each cie. Defn in pro_frame.h
141496*/
141497typedef struct Dwarf_P_Cie_s *Dwarf_P_Cie;
141498
141499/*
141500	producer:
141501	Struct to hold line number information, different from
141502	Dwarf_Line opaque type.
141503*/
141504typedef struct Dwarf_P_Line_s *Dwarf_P_Line;
141505
141506/*
141507	producer:
141508	Struct to hold information about address ranges.
141509*/
141510typedef struct Dwarf_P_Simple_nameentry_s *Dwarf_P_Simple_nameentry;
141511typedef struct Dwarf_P_Simple_name_header_s *Dwarf_P_Simple_name_header;
141512typedef struct Dwarf_P_Arange_s *Dwarf_P_Arange;
141513typedef struct Dwarf_P_Per_Reloc_Sect_s *Dwarf_P_Per_Reloc_Sect;
141514
141515/* Defined to get at the elf section numbers and section name
141516   indices in symtab for the dwarf sections
141517   Must match .rel.* names in _dwarf_rel_section_names
141518   exactly.
141519*/
141520#define         DEBUG_INFO      0
141521#define         DEBUG_LINE      1
141522#define         DEBUG_ABBREV    2
141523#define         DEBUG_FRAME     3
141524#define         DEBUG_ARANGES   4
141525#define         DEBUG_PUBNAMES  5
141526#define         DEBUG_STR       6
141527#define         DEBUG_FUNCNAMES 7
141528#define         DEBUG_TYPENAMES 8
141529#define         DEBUG_VARNAMES  9
141530#define         DEBUG_WEAKNAMES 10
141531#define         DEBUG_MACINFO   11
141532#define         DEBUG_LOC   12
141533
141534    /* number of debug_* sections not including the relocations */
141535#define         NUM_DEBUG_SECTIONS      DEBUG_LOC + 1
141536
141537
141538struct Dwarf_P_Die_s {
141539    Dwarf_Unsigned di_offset;	/* offset in debug info */
141540    char *di_abbrev;		/* abbreviation */
141541    Dwarf_Word di_abbrev_nbytes;	/* # of bytes in abbrev */
141542    Dwarf_Tag di_tag;
141543    Dwarf_P_Die di_parent;	/* parent of current die */
141544    Dwarf_P_Die di_child;	/* first child */
141545    Dwarf_P_Die di_left;	/* left sibling */
141546    Dwarf_P_Die di_right;	/* right sibling */
141547    Dwarf_P_Attribute di_attrs;	/* list of attributes */
141548    Dwarf_P_Attribute di_last_attr;	/* last attribute */
141549    int di_n_attr;		/* number of attributes */
141550};
141551
141552
141553/* producer fields */
141554struct Dwarf_P_Attribute_s {
141555    Dwarf_Half ar_attribute;	/* Attribute Value. */
141556    Dwarf_Half ar_attribute_form;	/* Attribute Form. */
141557    Dwarf_P_Die ar_ref_die;	/* die pointer if form ref */
141558    char *ar_data;		/* data, format given by form */
141559    Dwarf_Unsigned ar_nbytes;	/* no. of bytes of data */
141560    Dwarf_Unsigned ar_rel_symidx;	/* when attribute has a
141561					   relocatable value, holds
141562					   index of symbol in SYMTAB */
141563    Dwarf_Ubyte ar_rel_type;	/* relocation type */
141564    Dwarf_Word ar_rel_offset;	/* Offset of relocation within block */
141565    char ar_reloc_len;		/* Number of bytes that relocation
141566				   applies to. 4 or 8. Unused and may
141567				   be 0 if if ar_rel_type is
141568				   R_MIPS_NONE */
141569    Dwarf_P_Attribute ar_next;
141570};
141571
141572/* A block of .debug_macinfo data: this forms a series of blocks.
141573** Each macinfo input is compressed immediately and put into
141574** the current block if room, else a newblock allocated.
141575** The space allocation is such that the block and the macinfo
141576** data are one malloc block: free with a pointer to this and the
141577** mb_data is freed automatically.
141578** Like the struct hack, but legal ANSI C.
141579*/
141580struct dw_macinfo_block_s {
141581    struct dw_macinfo_block_s *mb_next;
141582    unsigned long mb_avail_len;
141583    unsigned long mb_used_len;
141584    unsigned long mb_macinfo_data_space_len;
141585    char *mb_data;		/* original malloc ptr. */
141586};
141587
141588/* dwarf_sn_kind is for the array of similarly-treated
141589   name -> cu ties
141590*/
141591enum dwarf_sn_kind { dwarf_snk_pubname, dwarf_snk_funcname,
141592    dwarf_snk_weakname, dwarf_snk_typename,
141593    dwarf_snk_varname,
141594    dwarf_snk_entrycount	/* this one must be last */
141595};
141596
141597
141598
141599/* The calls to add a varname etc use a list of
141600   these as the list.
141601*/
141602struct Dwarf_P_Simple_nameentry_s {
141603    Dwarf_P_Die sne_die;
141604    char *sne_name;
141605    int sne_name_len;
141606    Dwarf_P_Simple_nameentry sne_next;
141607};
141608
141609/* An array of these, each of which heads a list
141610   of Dwarf_P_Simple_nameentry
141611*/
141612struct Dwarf_P_Simple_name_header_s {
141613    Dwarf_P_Simple_nameentry sn_head;
141614    Dwarf_P_Simple_nameentry sn_tail;
141615    Dwarf_Signed sn_count;
141616
141617    /* length that will be generated, not counting fixed header or
141618       trailer */
141619    Dwarf_Signed sn_net_len;
141620};
141621typedef int (*_dwarf_pro_reloc_name_func_ptr) (Dwarf_P_Debug dbg, int sec_index, Dwarf_Unsigned offset,	/* r_offset
141622													 */
141623					       Dwarf_Unsigned symidx,
141624					       enum Dwarf_Rel_Type type,
141625					       int reltarget_length);
141626
141627typedef int (*_dwarf_pro_reloc_length_func_ptr) (Dwarf_P_Debug dbg, int sec_index, Dwarf_Unsigned offset,	/* r_offset
141628														 */
141629						 Dwarf_Unsigned
141630						 start_symidx,
141631						 Dwarf_Unsigned
141632						 end_symidx,
141633						 enum Dwarf_Rel_Type
141634						 type,
141635						 int reltarget_length);
141636typedef int (*_dwarf_pro_transform_relocs_func_ptr) (Dwarf_P_Debug dbg,
141637						     Dwarf_Signed *
141638						     new_sec_count);
141639
141640/*
141641	Each slot in a block of slots could be:
141642	a binary stream relocation entry (32 or 64bit relocation data)
141643        a SYMBOLIC relocation entry.
141644	During creation sometimes we create multiple chained blocks,
141645	but sometimes we create a single long block.
141646        Before returning reloc data to caller,
141647        we switch to a single, long-enough,
141648	block.
141649
141650	We make counters here Dwarf_Unsigned so that we
141651	get sufficient alignment. Since we use space after
141652	the struct (at malloc time) for user data which
141653        must have Dwarf_Unsigned alignment, this
141654	struct must have that alignment too.
141655
141656*/
141657struct Dwarf_P_Relocation_Block_s {
141658    Dwarf_Unsigned rb_slots_in_block;	/* slots in block, as created */
141659    Dwarf_Unsigned rb_next_slot_to_use;	/* counter, start at 0. */
141660    struct Dwarf_P_Relocation_Block_s *rb_next;
141661    char *rb_where_to_add_next;	/* pointer to next slot (might be past
141662				   end, depending on
141663				   rb_next_slot_to_use) */
141664    char *rb_data;		/* data area */
141665};
141666
141667/* One of these per potential relocation section
141668   So one per actual dwarf section.
141669   Left zeroed when not used (some sections have
141670   no relocations).
141671*/
141672struct Dwarf_P_Per_Reloc_Sect_s {
141673
141674
141675    unsigned long pr_reloc_total_count;	/* total number of entries
141676					   across all blocks */
141677
141678    unsigned long pr_slots_per_block_to_alloc;	/* at Block alloc, this
141679						   is the default
141680						   number of slots to
141681						   use */
141682
141683    int pr_sect_num_of_reloc_sect;	/* sect number returned by
141684					   de_func() or de_func_b()
141685					   call, this is the sect
141686					   number of the relocation
141687					   section. */
141688
141689
141690    /* singly-linked list. add at and ('last') with count of blocks */
141691    struct Dwarf_P_Relocation_Block_s *pr_first_block;
141692    struct Dwarf_P_Relocation_Block_s *pr_last_block;
141693    unsigned long pr_block_count;
141694};
141695
141696#define DEFAULT_SLOTS_PER_BLOCK 3
141697
141698
141699/* Fields used by producer */
141700struct Dwarf_P_Debug_s {
141701    /* used to catch dso passing dbg to another DSO with incompatible
141702       version of libdwarf See PRO_VERSION_MAGIC */
141703    int de_version_magic_number;
141704
141705    Dwarf_Unsigned de_access;
141706    Dwarf_Handler de_errhand;
141707    Dwarf_Ptr de_errarg;
141708
141709    /*
141710       Call back function, used to create .debug* sections. Provided
141711       by user. Only of these used per dbg. */
141712    Dwarf_Callback_Func de_func;
141713    Dwarf_Callback_Func_b de_func_b;
141714
141715    /* Flags from producer_init call */
141716    Dwarf_Unsigned de_flags;
141717
141718    /* This holds information on debug section stream output, including
141719       the stream data */
141720    Dwarf_P_Section_Data de_debug_sects;
141721
141722    /* Pointer to the 'current active' section */
141723    Dwarf_P_Section_Data de_current_active_section;
141724
141725    /* Number of debug data streams globs. */
141726    Dwarf_Word de_n_debug_sect;
141727
141728    /* File entry information, null terminated singly-linked list */
141729    Dwarf_P_F_Entry de_file_entries;
141730    Dwarf_P_F_Entry de_last_file_entry;
141731    Dwarf_Unsigned de_n_file_entries;
141732
141733    /* Has the directories used to search for source files */
141734    Dwarf_P_Inc_Dir de_inc_dirs;
141735    Dwarf_P_Inc_Dir de_last_inc_dir;
141736    Dwarf_Unsigned de_n_inc_dirs;
141737
141738    /* Has all the line number info for the stmt program */
141739    Dwarf_P_Line de_lines;
141740    Dwarf_P_Line de_last_line;
141741
141742    /* List of cie's for the debug unit */
141743    Dwarf_P_Cie de_frame_cies;
141744    Dwarf_P_Cie de_last_cie;
141745    Dwarf_Unsigned de_n_cie;
141746
141747
141748    /* Singly-linked list of fde's for the debug unit */
141749    Dwarf_P_Fde de_frame_fdes;
141750    Dwarf_P_Fde de_last_fde;
141751    Dwarf_Unsigned de_n_fde;
141752
141753    /* First die, leads to all others */
141754    Dwarf_P_Die de_dies;
141755
141756    /* Pointer to list of strings */
141757    char *de_strings;
141758
141759    /* Pointer to chain of aranges */
141760    Dwarf_P_Arange de_arange;
141761    Dwarf_P_Arange de_last_arange;
141762    Dwarf_Sword de_arange_count;
141763
141764    /* macinfo controls. */
141765    /* first points to beginning of the list during creation */
141766    struct dw_macinfo_block_s *de_first_macinfo;
141767
141768    /* current points to the current, unfilled, block */
141769    struct dw_macinfo_block_s *de_current_macinfo;
141770
141771
141772    /* Pointer to the first section, to support reset_section_bytes */
141773    Dwarf_P_Section_Data de_first_debug_sect;
141774
141775    /* handles pubnames, weaknames, etc. See dwarf_sn_kind in
141776       pro_opaque.h */
141777    struct Dwarf_P_Simple_name_header_s
141778      de_simple_name_headers[dwarf_snk_entrycount];
141779
141780    /* relocation data. not all sections will actally have relocation
141781       info, of course */
141782    struct Dwarf_P_Per_Reloc_Sect_s de_reloc_sect[NUM_DEBUG_SECTIONS];
141783    int de_reloc_next_to_return;	/* iterator on reloc sections
141784					   (SYMBOLIC output) */
141785
141786    /* used in remembering sections */
141787    int de_elf_sects[NUM_DEBUG_SECTIONS];	/*
141788						   elf sect number of
141789						   the section itself,
141790						   DEBUG_LINE for
141791						   example */
141792
141793    Dwarf_Unsigned de_sect_name_idx[NUM_DEBUG_SECTIONS];	/* section
141794								   name
141795								   index
141796								   or
141797								   handle
141798								   for
141799								   the
141800								   name
141801								   of
141802								   the
141803								   symbol
141804								   for
141805								   DEBUG_LINE
141806								   for
141807								   example
141808								 */
141809
141810
141811
141812    int de_offset_reloc;	/* offset reloc type, R_MIPS_32 for
141813				   example. Specific to the ABI being
141814				   produced. Relocates offset size
141815				   field */
141816    int de_exc_reloc;		/* reloc type specific to exception
141817				   table relocs. */
141818    int de_ptr_reloc;		/* standard reloc type, R_MIPS_32 for
141819				   example. Specific to the ABI being
141820				   produced. relocates pointer size
141821				   field */
141822
141823    unsigned char de_offset_size;	/* section offset. Here to
141824					   avoid test of abi in macro
141825					   at run time MIPS -n32 4,
141826					   -64 8.  */
141827
141828    unsigned char de_pointer_size;	/* size of pointer in target.
141829					   Here to avoid test of abi in
141830					   macro at run time MIPS -n32
141831					   4, -64 is 8.  */
141832
141833    unsigned char de_is_64bit;	/* non-zero if is 64bit. Else 32 bit:
141834				   used for passing this info as a flag
141835				 */
141836    unsigned char de_relocation_record_size;	/* reloc record size
141837						   varies by ABI and
141838						   relocation-output
141839						   method (stream or
141840						   symbolic) */
141841
141842    unsigned char de_64bit_extension;	/* non-zero if creating 64 bit
141843					   offsets using dwarf2-99
141844					   extension proposal */
141845
141846    int de_ar_data_attribute_form;	/* data8, data4 abi dependent */
141847    int de_ar_ref_attr_form;	/* ref8 ref4 , abi dependent */
141848
141849    /* simple name relocations */
141850    _dwarf_pro_reloc_name_func_ptr de_reloc_name;
141851
141852    /* relocations for a length, requiring a pair of symbols */
141853    _dwarf_pro_reloc_length_func_ptr de_reloc_pair;
141854
141855    _dwarf_pro_transform_relocs_func_ptr de_transform_relocs_to_disk;
141856
141857    /* following used for macro buffers */
141858    unsigned long de_compose_avail;
141859    unsigned long de_compose_used_len;
141860
141861    unsigned char de_same_endian;
141862    void *(*de_copy_word) (void *, const void *, size_t);
141863
141864    /* Add new fields at the END of this struct to preserve some hope
141865       of sensible behavior on dbg passing between DSOs linked with
141866       mismatched libdwarf producer versions. */
141867
141868};
141869
141870
141871#define CURRENT_VERSION_STAMP		2
141872
141873Dwarf_Unsigned _dwarf_add_simple_name_entry(Dwarf_P_Debug dbg,
141874					    Dwarf_P_Die die,
141875					    char *entry_name,
141876					    enum dwarf_sn_kind
141877					    entrykind,
141878					    Dwarf_Error * error);
141879
141880
141881#define DISTINGUISHED_VALUE 0xffffffff	/* 64bit extension flag */
141882�0707010001adad0000812400011e740000000a000000014020682700000762000000660000000000000000000000000000001800000000libdwarf/pro_pubnames.c���/*
141883
141884  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
141885
141886  This program is free software; you can redistribute it and/or modify it
141887  under the terms of version 2.1 of the GNU Lesser General Public License
141888  as published by the Free Software Foundation.
141889
141890  This program is distributed in the hope that it would be useful, but
141891  WITHOUT ANY WARRANTY; without even the implied warranty of
141892  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
141893
141894  Further, this software is distributed without any warranty that it is
141895  free of the rightful claim of any third person regarding infringement
141896  or the like.  Any license provided herein, whether implied or
141897  otherwise, applies only to this software file.  Patent licenses, if
141898  any, provided herein do not apply to combinations of this program with
141899  other software, or any other product whatsoever.
141900
141901  You should have received a copy of the GNU Lesser General Public
141902  License along with this program; if not, write the Free Software
141903  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
141904  USA.
141905
141906  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
141907  Mountain View, CA 94043, or:
141908
141909  http://www.sgi.com
141910
141911  For further information regarding this notice, see:
141912
141913  http://oss.sgi.com/projects/GenInfo/NoticeExplan
141914
141915*/
141916
141917
141918
141919#include "config.h"
141920#include "libdwarfdefs.h"
141921#include <stdio.h>
141922#include <string.h>
141923#ifdef HAVE_ELFACCESS_H
141924#include <elfaccess.h>
141925#endif
141926#include "pro_incl.h"
141927#include "pro_section.h"
141928
141929
141930/*
141931    This function adds another public name to the
141932    list of public names for the given Dwarf_P_Debug.
141933    It returns 0 on error, and 1 otherwise.
141934*/
141935
141936Dwarf_Unsigned
141937dwarf_add_pubname(Dwarf_P_Debug dbg,
141938		  Dwarf_P_Die die,
141939		  char *pubname_name, Dwarf_Error * error)
141940{
141941    return
141942	_dwarf_add_simple_name_entry(dbg, die, pubname_name,
141943				     dwarf_snk_pubname, error);
141944}
141945��0707010001adae0000812400011e740000000a000000014020682800001b50000000660000000000000000000000000000001500000000libdwarf/pro_reloc.c��/*
141946
141947  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
141948
141949  This program is free software; you can redistribute it and/or modify it
141950  under the terms of version 2.1 of the GNU Lesser General Public License
141951  as published by the Free Software Foundation.
141952
141953  This program is distributed in the hope that it would be useful, but
141954  WITHOUT ANY WARRANTY; without even the implied warranty of
141955  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
141956
141957  Further, this software is distributed without any warranty that it is
141958  free of the rightful claim of any third person regarding infringement
141959  or the like.  Any license provided herein, whether implied or
141960  otherwise, applies only to this software file.  Patent licenses, if
141961  any, provided herein do not apply to combinations of this program with
141962  other software, or any other product whatsoever.
141963
141964  You should have received a copy of the GNU Lesser General Public
141965  License along with this program; if not, write the Free Software
141966  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
141967  USA.
141968
141969  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
141970  Mountain View, CA 94043, or:
141971
141972  http://www.sgi.com
141973
141974  For further information regarding this notice, see:
141975
141976  http://oss.sgi.com/projects/GenInfo/NoticeExplan
141977
141978*/
141979
141980
141981
141982#include "config.h"
141983#include "libdwarfdefs.h"
141984#include <stdio.h>
141985#include <string.h>
141986/*#include <elfaccess.h> */
141987#include "pro_incl.h"
141988
141989
141990/*Do initial alloc of newslots slots.
141991  Fails only if malloc fails.
141992
141993  Supposed to be called before any relocs allocated.
141994  Ignored if after any allocated.
141995
141996  Part of an optimization, so that for a known 'newslots'
141997  relocations count we can preallocate the right size block.
141998  Called from just 2 places.
141999
142000  returns DW_DLV_OK or  DW_DLV_ERROR
142001*/
142002int
142003_dwarf_pro_pre_alloc_n_reloc_slots(Dwarf_P_Debug dbg,
142004				   int rel_sec_index,
142005				   Dwarf_Unsigned newslots)
142006{
142007    unsigned long len;
142008    struct Dwarf_P_Relocation_Block_s *data;
142009    Dwarf_P_Per_Reloc_Sect prel = &dbg->de_reloc_sect[rel_sec_index];
142010    unsigned long slots_in_blk = (unsigned long) newslots;
142011    unsigned long rel_rec_size = dbg->de_relocation_record_size;
142012
142013    if (prel->pr_first_block)
142014	return DW_DLV_OK;	/* do nothing */
142015
142016    len = sizeof(struct Dwarf_P_Relocation_Block_s) +
142017	slots_in_blk * rel_rec_size;
142018
142019
142020    data = (struct Dwarf_P_Relocation_Block_s *)
142021	_dwarf_p_get_alloc(dbg, len);
142022    if (!data) {
142023	return DW_DLV_ERROR;
142024    }
142025    data->rb_slots_in_block = slots_in_blk;	/* could use default
142026						   here, as fallback in
142027						   case our origininal
142028						   estimate wrong.
142029						   When we call this we
142030						   presumably know what
142031						   we are doing, so
142032						   keep this count for
142033						   now */
142034    data->rb_next_slot_to_use = 0;
142035    data->rb_where_to_add_next =
142036	((char *) data) + sizeof(struct Dwarf_P_Relocation_Block_s);
142037    data->rb_data = data->rb_where_to_add_next;
142038
142039    prel->pr_first_block = data;
142040    prel->pr_last_block = data;
142041    prel->pr_block_count = 1;
142042
142043
142044    return DW_DLV_OK;
142045}
142046
142047
142048/*Do alloc of slots.
142049  Fails only if malloc fails.
142050
142051  Only allocator used.
142052
142053  returns DW_DLV_OK or  DW_DLV_ERROR
142054*/
142055int
142056_dwarf_pro_alloc_reloc_slots(Dwarf_P_Debug dbg, int rel_sec_index)
142057{
142058    unsigned long len;
142059    struct Dwarf_P_Relocation_Block_s *data;
142060    Dwarf_P_Per_Reloc_Sect prel = &dbg->de_reloc_sect[rel_sec_index];
142061    unsigned long slots_in_blk = prel->pr_slots_per_block_to_alloc;
142062    unsigned long rel_rec_size = dbg->de_relocation_record_size;
142063
142064    len = sizeof(struct Dwarf_P_Relocation_Block_s) +
142065	slots_in_blk * rel_rec_size;
142066
142067    data = (struct Dwarf_P_Relocation_Block_s *)
142068	_dwarf_p_get_alloc(dbg, len);
142069    if (!data) {
142070	return DW_DLV_ERROR;
142071    }
142072
142073    if (prel->pr_first_block) {
142074	prel->pr_last_block->rb_next = data;
142075	prel->pr_last_block = data;
142076	prel->pr_block_count += 1;
142077
142078    } else {
142079
142080	prel->pr_first_block = data;
142081	prel->pr_last_block = data;
142082	prel->pr_block_count = 1;
142083    }
142084
142085    data->rb_slots_in_block = slots_in_blk;
142086    data->rb_next_slot_to_use = 0;
142087    data->rb_where_to_add_next =
142088	((char *) data) + sizeof(struct Dwarf_P_Relocation_Block_s);
142089    data->rb_data = data->rb_where_to_add_next;
142090
142091    return DW_DLV_OK;
142092
142093}
142094
142095/*
142096	Reserve a slot. return DW_DLV_OK if succeeds.
142097
142098	Return DW_DLV_ERROR if fails (malloc error).
142099
142100	Use the relrec_to_fill to pass back a pointer to
142101	a slot space to use.
142102*/
142103int
142104_dwarf_pro_reloc_get_a_slot(Dwarf_P_Debug dbg,
142105			    int base_sec_index, void **relrec_to_fill)
142106{
142107    struct Dwarf_P_Relocation_Block_s *data;
142108    Dwarf_P_Per_Reloc_Sect prel = &dbg->de_reloc_sect[base_sec_index];
142109    unsigned long rel_rec_size = dbg->de_relocation_record_size;
142110
142111    char *ret_addr;
142112
142113    data = prel->pr_last_block;
142114    if ((data == 0) ||
142115	(data->rb_next_slot_to_use >= data->rb_slots_in_block)) {
142116	int res;
142117
142118	res = _dwarf_pro_alloc_reloc_slots(dbg, base_sec_index);
142119	if (res != DW_DLV_OK) {
142120	    return res;
142121	}
142122    }
142123
142124    data = prel->pr_last_block;
142125    /* now we have an empty slot */
142126    ret_addr = data->rb_where_to_add_next;
142127
142128    data->rb_where_to_add_next += rel_rec_size;
142129    data->rb_next_slot_to_use += 1;
142130
142131    prel->pr_reloc_total_count += 1;
142132
142133    *relrec_to_fill = (void *) ret_addr;
142134
142135    return DW_DLV_OK;
142136
142137}
142138
142139/*
142140   On success  returns count of
142141   .rel.* sections that are symbolic
142142   thru count_of_relocation_sections.
142143
142144   On success, returns DW_DLV_OK.
142145
142146   If this is not a 'symbolic' run, returns
142147    DW_DLV_NO_ENTRY.
142148
142149   No errors are possible.
142150
142151
142152
142153
142154*/
142155
142156 /*ARGSUSED*/ int
142157dwarf_get_relocation_info_count(Dwarf_P_Debug dbg,
142158				Dwarf_Unsigned *
142159				count_of_relocation_sections,
142160				int *drd_buffer_version,
142161				Dwarf_Error * error)
142162{
142163    if (dbg->de_flags & DW_DLC_SYMBOLIC_RELOCATIONS) {
142164	int i;
142165	unsigned int count = 0;
142166
142167	for (i = 0; i < NUM_DEBUG_SECTIONS; ++i) {
142168	    if (dbg->de_reloc_sect[i].pr_reloc_total_count > 0) {
142169		++count;
142170	    }
142171	}
142172	*count_of_relocation_sections = (Dwarf_Unsigned) count;
142173	*drd_buffer_version = DWARF_DRD_BUFFER_VERSION;
142174	return DW_DLV_OK;
142175    }
142176    return DW_DLV_NO_ENTRY;
142177}
142178
142179int
142180dwarf_get_relocation_info(Dwarf_P_Debug dbg,
142181			  Dwarf_Signed * elf_section_index,
142182			  Dwarf_Signed * elf_section_index_link,
142183			  Dwarf_Unsigned * relocation_buffer_count,
142184			  Dwarf_Relocation_Data * reldata_buffer,
142185			  Dwarf_Error * error)
142186{
142187    int next = dbg->de_reloc_next_to_return;
142188
142189    if (dbg->de_flags & DW_DLC_SYMBOLIC_RELOCATIONS) {
142190	int i;
142191
142192	for (i = next; i < NUM_DEBUG_SECTIONS; ++i) {
142193	    Dwarf_P_Per_Reloc_Sect prel = &dbg->de_reloc_sect[i];
142194
142195	    if (prel->pr_reloc_total_count > 0) {
142196		dbg->de_reloc_next_to_return = i + 1;
142197
142198
142199		/* ASSERT: prel->.pr_block_count == 1 */
142200
142201		*elf_section_index = prel->pr_sect_num_of_reloc_sect;
142202		*elf_section_index_link = dbg->de_elf_sects[i];
142203		*relocation_buffer_count = prel->pr_reloc_total_count;
142204		*reldata_buffer = (Dwarf_Relocation_Data)
142205		    (prel->pr_first_block->rb_data);
142206		return DW_DLV_OK;
142207	    }
142208	}
142209	DWARF_P_DBG_ERROR(dbg, DW_DLE_REL_ALLOC, DW_DLV_ERROR);
142210    }
142211    return DW_DLV_NO_ENTRY;
142212}
1422130707010001adaf0000812400011e740000000a000000014020682800000658000000660000000000000000000000000000001500000000libdwarf/pro_reloc.h��/*
142214
142215  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
142216
142217  This program is free software; you can redistribute it and/or modify it
142218  under the terms of version 2.1 of the GNU Lesser General Public License
142219  as published by the Free Software Foundation.
142220
142221  This program is distributed in the hope that it would be useful, but
142222  WITHOUT ANY WARRANTY; without even the implied warranty of
142223  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
142224
142225  Further, this software is distributed without any warranty that it is
142226  free of the rightful claim of any third person regarding infringement
142227  or the like.  Any license provided herein, whether implied or
142228  otherwise, applies only to this software file.  Patent licenses, if
142229  any, provided herein do not apply to combinations of this program with
142230  other software, or any other product whatsoever.
142231
142232  You should have received a copy of the GNU Lesser General Public
142233  License along with this program; if not, write the Free Software
142234  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
142235  USA.
142236
142237  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
142238  Mountain View, CA 94043, or:
142239
142240  http://www.sgi.com
142241
142242  For further information regarding this notice, see:
142243
142244  http://oss.sgi.com/projects/GenInfo/NoticeExplan
142245
142246*/
142247
142248
142249
142250
142251int _dwarf_pro_pre_alloc_n_reloc_slots(Dwarf_P_Debug dbg,
142252				       int rel_sec_index,
142253				       Dwarf_Unsigned newslots);
142254
142255int _dwarf_pro_alloc_reloc_slots(Dwarf_P_Debug dbg, int rel_sec_index);
142256
142257int _dwarf_pro_reloc_get_a_slot(Dwarf_P_Debug dbg,
142258				int base_sec_index,
142259				void **relrec_to_fill);
1422600707010001adb00000812400011e740000000a000000014020682700001f89000000660000000000000000000000000000001c00000000libdwarf/pro_reloc_stream.c���/*
142261
142262  Copyright (C) 2000, 2001 Silicon Graphics, Inc.  All Rights Reserved.
142263
142264  This program is free software; you can redistribute it and/or modify it
142265  under the terms of version 2.1 of the GNU Lesser General Public License
142266  as published by the Free Software Foundation.
142267
142268  This program is distributed in the hope that it would be useful, but
142269  WITHOUT ANY WARRANTY; without even the implied warranty of
142270  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
142271
142272  Further, this software is distributed without any warranty that it is
142273  free of the rightful claim of any third person regarding infringement
142274  or the like.  Any license provided herein, whether implied or
142275  otherwise, applies only to this software file.  Patent licenses, if
142276  any, provided herein do not apply to combinations of this program with
142277  other software, or any other product whatsoever.
142278
142279  You should have received a copy of the GNU Lesser General Public
142280  License along with this program; if not, write the Free Software
142281  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
142282  USA.
142283
142284  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
142285  Mountain View, CA 94043, or:
142286
142287  http://www.sgi.com
142288
142289  For further information regarding this notice, see:
142290
142291  http://oss.sgi.com/projects/GenInfo/NoticeExplan
142292
142293*/
142294
142295
142296
142297#include "config.h"
142298#include "libdwarfdefs.h"
142299#include <stdio.h>
142300#include <string.h>
142301#ifdef HAVE_ELFACCESS_H
142302#include <elfaccess.h>
142303#else
142304/* Set r_info  as defined by ELF generic ABI */
142305#define Set_REL32_info(r,s,t) ((r).r_info = ELF32_R_INFO(s,t))
142306#define Set_REL64_info(r,s,t) ((r).r_info = ELF64_R_INFO(s,t))
142307#endif
142308#include "pro_incl.h"
142309#include "pro_section.h"
142310#include "pro_reloc.h"
142311#include "pro_reloc_stream.h"
142312
142313/*
142314	Return DW_DLV_ERROR on malloc error or reltarget_length error.
142315	Return DW_DLV_OK otherwise
142316
142317
142318
142319*/
142320 /*ARGSUSED*/ int
142321_dwarf_pro_reloc_name_stream64(Dwarf_P_Debug dbg, int base_sec_index, Dwarf_Unsigned offset,	/* r_offset
142322												   of
142323												   reloc
142324												 */
142325			       Dwarf_Unsigned symidx,
142326			       enum Dwarf_Rel_Type type,
142327			       int reltarget_length)
142328{
142329#if HAVE_ELF64_GETEHDR
142330    Elf64_Rel *elf64_reloc;
142331    void *relrec_to_fill;
142332    int res;
142333    int rel_type;
142334
142335    res = _dwarf_pro_reloc_get_a_slot(dbg, base_sec_index,
142336				      &relrec_to_fill);
142337    if (res != DW_DLV_OK)
142338	return res;
142339
142340
142341    if (type == dwarf_drt_data_reloc) {
142342	if (reltarget_length == dbg->de_offset_size) {
142343	    rel_type = dbg->de_offset_reloc;
142344	} else if (reltarget_length == dbg->de_pointer_size) {
142345	    rel_type = dbg->de_ptr_reloc;
142346	} else {
142347	    return DW_DLV_ERROR;
142348	}
142349    } else if (type == dwarf_drt_segment_rel) {
142350	rel_type = dbg->de_exc_reloc;
142351    } else {
142352	/* We are in trouble: improper use of stream relocations.
142353	   Someone else will diagnose */
142354	rel_type = 0;
142355    }
142356
142357    elf64_reloc = (Elf64_Rel *) relrec_to_fill;
142358    elf64_reloc->r_offset = offset;
142359    Set_REL64_info(*elf64_reloc, symidx, rel_type);
142360    return DW_DLV_OK;
142361#else /* !HAVE_ELF64_GETEHDR */
142362    return DW_DLV_ERROR;
142363#endif /* #if HAVE_ELF64_GETEHDR */
142364}
142365
142366/*
142367	Return DW_DLV_ERROR on malloc error or reltarget_length error.
142368	Return DW_DLV_OK otherwise
142369	a binary reloc: 32bit ABI
142370*/
142371int
142372_dwarf_pro_reloc_name_stream32(Dwarf_P_Debug dbg, int base_sec_index, Dwarf_Unsigned offset,	/* r_offset
142373												   of
142374												   reloc
142375												 */
142376			       Dwarf_Unsigned symidx,
142377			       enum Dwarf_Rel_Type type,
142378			       int reltarget_length)
142379{
142380    Elf32_Rel *elf32_reloc;
142381    void *relrec_to_fill;
142382    int res;
142383    int rel_type;
142384
142385    res = _dwarf_pro_reloc_get_a_slot(dbg, base_sec_index,
142386				      &relrec_to_fill);
142387    if (res != DW_DLV_OK)
142388	return res;
142389    if (type == dwarf_drt_data_reloc) {
142390	if (reltarget_length == dbg->de_offset_size) {
142391	    rel_type = dbg->de_offset_reloc;
142392	} else if (reltarget_length == dbg->de_pointer_size) {
142393	    rel_type = dbg->de_ptr_reloc;
142394	} else {
142395	    return DW_DLV_ERROR;
142396	}
142397    } else if (type == dwarf_drt_segment_rel) {
142398	rel_type = dbg->de_exc_reloc;
142399    } else {
142400	/* We are in trouble: improper use of stream relocations.
142401	   Someone else will diagnose */
142402	rel_type = 0;
142403    }
142404
142405    elf32_reloc = (Elf32_Rel *) relrec_to_fill;
142406    elf32_reloc->r_offset = (Elf32_Addr) offset;
142407    Set_REL32_info(*elf32_reloc, (Dwarf_Word) symidx, rel_type);
142408    return DW_DLV_OK;
142409
142410    /* get a slot, fill in the slot entry */
142411}
142412
142413
142414
142415/*
142416	Return DW_DLV_OK.
142417	Never can really do anything: lengths cannot
142418	be represented as end-start in a stream.
142419
142420*/
142421 /*ARGSUSED*/ int
142422_dwarf_pro_reloc_length_stream(Dwarf_P_Debug dbg, int base_sec_index, Dwarf_Unsigned offset,	/* r_offset
142423												   of
142424												   reloc
142425												 */
142426			       Dwarf_Unsigned start_symidx,
142427			       Dwarf_Unsigned end_symidx,
142428			       enum Dwarf_Rel_Type type,
142429			       int reltarget_length)
142430{
142431    /* get a slot, fill in the slot entry */
142432    return DW_DLV_OK;
142433}
142434
142435
142436/*
142437        Ensure each stream is a single buffer and
142438        add that single buffer to the set of stream buffers.
142439
142440	By creating a new buffer and copying if necessary.
142441
142442        Free the input set of buffers if we consolidate.
142443        Return -1 on error (malloc failure)
142444
142445
142446        Return DW_DLV_OK on success. Any other return indicates
142447	malloc failed.
142448
142449*/
142450int
142451_dwarf_stream_relocs_to_disk(Dwarf_P_Debug dbg,
142452			     Dwarf_Signed * new_sec_count)
142453{
142454    unsigned long total_size = 0;
142455    Dwarf_Small *data;
142456    int sec_index;
142457    unsigned long i;
142458    Dwarf_Error err;
142459    Dwarf_Error *error = &err;
142460
142461    Dwarf_Signed sec_count = 0;
142462
142463    Dwarf_P_Per_Reloc_Sect p_reloc = &dbg->de_reloc_sect[0];
142464
142465    for (i = 0; i < NUM_DEBUG_SECTIONS; ++i, ++p_reloc) {
142466	unsigned long ct = p_reloc->pr_reloc_total_count;
142467	unsigned len;
142468	struct Dwarf_P_Relocation_Block_s *p_blk;
142469	struct Dwarf_P_Relocation_Block_s *p_blk_last;
142470	Dwarf_P_Per_Reloc_Sect prb;
142471
142472	if (ct == 0) {
142473	    continue;
142474	}
142475	prb = &dbg->de_reloc_sect[i];
142476	len = dbg->de_relocation_record_size;
142477	++sec_count;
142478
142479	total_size = ct * len;
142480	sec_index = prb->pr_sect_num_of_reloc_sect;
142481	if (sec_index == 0) {
142482	    /* call de_func or de_func_b, getting section number of
142483	       reloc sec */
142484	    int rel_section_index;
142485	    Dwarf_Unsigned name_idx;
142486	    int int_name;
142487	    int err;
142488
142489	    if (dbg->de_func_b) {
142490		rel_section_index =
142491		    dbg->de_func_b(_dwarf_rel_section_names[i],
142492				   /* size */
142493				   dbg->de_relocation_record_size,
142494				   /* type */ SHT_REL,
142495				   /* flags */ 0,
142496				   /* link to symtab, which we cannot
142497				      know */ 0,
142498				   /* info == link to sec rels apply to */
142499				   dbg->de_elf_sects[i],
142500				   &name_idx, &err);
142501	    } else {
142502		rel_section_index =
142503		    dbg->de_func(_dwarf_rel_section_names[i],
142504				 /* size */
142505				 dbg->de_relocation_record_size,
142506				 /* type */ SHT_REL,
142507				 /* flags */ 0,
142508				 /* link to symtab, which we cannot
142509				    know */ 0,
142510				 /* info == link to sec rels apply to */
142511				 dbg->de_elf_sects[i], &int_name, &err);
142512		name_idx = int_name;
142513	    }
142514	    if (rel_section_index == -1) {
142515		{
142516		    _dwarf_p_error(dbg, error, DW_DLE_ELF_SECT_ERR);
142517		    return (DW_DLV_ERROR);
142518		}
142519
142520	    }
142521	    prb->pr_sect_num_of_reloc_sect = rel_section_index;
142522	    sec_index = rel_section_index;
142523	}
142524	GET_CHUNK(dbg, sec_index, data, total_size, &err);
142525	p_blk = p_reloc->pr_first_block;
142526
142527	/* following loop executes at least once. Effects the
142528	   consolidation to a single block or, if already a single
142529	   block, simply copies to the output buffer. And frees the
142530	   input block. The new block is in the de_debug_sects list. */
142531	while (p_blk) {
142532
142533	    unsigned long len =
142534		p_blk->rb_where_to_add_next - p_blk->rb_data;
142535
142536	    memcpy(data, p_blk->rb_data, len);
142537
142538
142539	    data += len;
142540
142541	    p_blk_last = p_blk;
142542	    p_blk = p_blk->rb_next;
142543
142544	    _dwarf_p_dealloc(dbg, (Dwarf_Small *) p_blk_last);
142545	}
142546	/* ASSERT: sum of len copied == total_size */
142547
142548	/*
142549	   We have copied the input, now drop the pointers to it. For
142550	   debugging, leave the other data untouched. */
142551	p_reloc->pr_first_block = 0;
142552	p_reloc->pr_last_block = 0;
142553    }
142554
142555    *new_sec_count = sec_count;
142556    return DW_DLV_OK;
142557}
142558���0707010001adb10000812400011e740000000a0000000140206827000008b1000000660000000000000000000000000000001c00000000libdwarf/pro_reloc_stream.h���/*
142559
142560  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
142561
142562  This program is free software; you can redistribute it and/or modify it
142563  under the terms of version 2.1 of the GNU Lesser General Public License
142564  as published by the Free Software Foundation.
142565
142566  This program is distributed in the hope that it would be useful, but
142567  WITHOUT ANY WARRANTY; without even the implied warranty of
142568  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
142569
142570  Further, this software is distributed without any warranty that it is
142571  free of the rightful claim of any third person regarding infringement
142572  or the like.  Any license provided herein, whether implied or
142573  otherwise, applies only to this software file.  Patent licenses, if
142574  any, provided herein do not apply to combinations of this program with
142575  other software, or any other product whatsoever.
142576
142577  You should have received a copy of the GNU Lesser General Public
142578  License along with this program; if not, write the Free Software
142579  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
142580  USA.
142581
142582  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
142583  Mountain View, CA 94043, or:
142584
142585  http://www.sgi.com
142586
142587  For further information regarding this notice, see:
142588
142589  http://oss.sgi.com/projects/GenInfo/NoticeExplan
142590
142591*/
142592
142593
142594
142595
142596int _dwarf_pro_reloc_name_stream64(Dwarf_P_Debug dbg, int base_sec_index, Dwarf_Unsigned offset,	/* r_offset
142597													   of
142598													   reloc
142599													 */
142600				   Dwarf_Unsigned symidx,
142601				   enum Dwarf_Rel_Type,
142602				   int reltarget_length);
142603int _dwarf_pro_reloc_name_stream32(Dwarf_P_Debug dbg, int base_sec_index, Dwarf_Unsigned offset,	/* r_offset
142604													   of
142605													   reloc
142606													 */
142607				   Dwarf_Unsigned symidx,
142608				   enum Dwarf_Rel_Type,
142609				   int reltarget_length);
142610int _dwarf_pro_reloc_length_stream(Dwarf_P_Debug dbg, int base_sec_index, Dwarf_Unsigned offset,	/* r_offset
142611													   of
142612													   reloc
142613													 */
142614				   Dwarf_Unsigned start_symidx,
142615				   Dwarf_Unsigned end_symidx,
142616				   enum Dwarf_Rel_Type,
142617				   int reltarget_length);
142618
142619int _dwarf_stream_relocs_to_disk(Dwarf_P_Debug dbg,
142620				 Dwarf_Signed * new_sec_count);
142621���0707010001adb20000812400011e740000000a000000014020682800001fd9000000660000000000000000000000000000001e00000000libdwarf/pro_reloc_symbolic.c�/*
142622
142623  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
142624
142625  This program is free software; you can redistribute it and/or modify it
142626  under the terms of version 2.1 of the GNU Lesser General Public License
142627  as published by the Free Software Foundation.
142628
142629  This program is distributed in the hope that it would be useful, but
142630  WITHOUT ANY WARRANTY; without even the implied warranty of
142631  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
142632
142633  Further, this software is distributed without any warranty that it is
142634  free of the rightful claim of any third person regarding infringement
142635  or the like.  Any license provided herein, whether implied or
142636  otherwise, applies only to this software file.  Patent licenses, if
142637  any, provided herein do not apply to combinations of this program with
142638  other software, or any other product whatsoever.
142639
142640  You should have received a copy of the GNU Lesser General Public
142641  License along with this program; if not, write the Free Software
142642  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
142643  USA.
142644
142645  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
142646  Mountain View, CA 94043, or:
142647
142648  http://www.sgi.com
142649
142650  For further information regarding this notice, see:
142651
142652  http://oss.sgi.com/projects/GenInfo/NoticeExplan
142653
142654*/
142655
142656
142657
142658#include "config.h"
142659#include "libdwarfdefs.h"
142660#include <stdio.h>
142661#include <string.h>
142662/*#include <elfaccess.h> */
142663#include "pro_incl.h"
142664#include "pro_section.h"
142665#include "pro_reloc.h"
142666#include "pro_reloc_symbolic.h"
142667
142668/*
142669	Return DW_DLV_ERROR on malloc error.
142670	Return DW_DLV_OK otherwise
142671*/
142672
142673int
142674_dwarf_pro_reloc_name_symbolic(Dwarf_P_Debug dbg, int base_sec_index, Dwarf_Unsigned offset,	/* r_offset
142675												   of
142676												   reloc
142677												 */
142678			       Dwarf_Unsigned symidx,
142679			       enum Dwarf_Rel_Type type,
142680			       int reltarget_length)
142681{
142682    /* get a slot, fill in the slot entry */
142683    void *relrec_to_fill;
142684    int res;
142685    struct Dwarf_Relocation_Data_s *slotp;
142686
142687    res = _dwarf_pro_reloc_get_a_slot(dbg, base_sec_index,
142688				      &relrec_to_fill);
142689    if (res != DW_DLV_OK)
142690	return res;
142691
142692    slotp = (struct Dwarf_Relocation_Data_s *) relrec_to_fill;
142693    slotp->drd_type = type;
142694    slotp->drd_length = reltarget_length;
142695    slotp->drd_offset = offset;
142696    slotp->drd_symbol_index = symidx;
142697    return DW_DLV_OK;
142698
142699}
142700
142701
142702
142703/*
142704	Return DW_DLV_ERROR on malloc error.
142705	Return DW_DLV_OK otherwise
142706*/
142707int
142708_dwarf_pro_reloc_length_symbolic(Dwarf_P_Debug dbg, int base_sec_index, Dwarf_Unsigned offset,	/* r_offset
142709												   of
142710												   reloc
142711												 */
142712				 Dwarf_Unsigned start_symidx,
142713				 Dwarf_Unsigned end_symidx,
142714				 enum Dwarf_Rel_Type type,
142715				 int reltarget_length)
142716{
142717    /* get a slot, fill in the slot entry */
142718    void *relrec_to_fill;
142719    int res;
142720    struct Dwarf_Relocation_Data_s *slotp1;
142721    struct Dwarf_Relocation_Data_s *slotp2;
142722
142723
142724
142725    res = _dwarf_pro_reloc_get_a_slot(dbg, base_sec_index,
142726				      &relrec_to_fill);
142727    if (res != DW_DLV_OK)
142728	return res;
142729    slotp1 = (struct Dwarf_Relocation_Data_s *) relrec_to_fill;
142730    res = _dwarf_pro_reloc_get_a_slot(dbg, base_sec_index,
142731				      &relrec_to_fill);
142732    if (res != DW_DLV_OK)
142733	return res;
142734    slotp2 = (struct Dwarf_Relocation_Data_s *) relrec_to_fill;
142735
142736    /* ASSERT: type == dwarf_drt_first_of_length_type_pair */
142737    slotp1->drd_type = type;
142738    slotp1->drd_length = reltarget_length;
142739    slotp1->drd_offset = offset;
142740    slotp1->drd_symbol_index = start_symidx;
142741
142742    slotp2->drd_type = dwarf_drt_second_of_length_pair;
142743    slotp2->drd_length = reltarget_length;
142744    slotp2->drd_offset = offset;
142745    slotp2->drd_symbol_index = end_symidx;
142746
142747    return DW_DLV_OK;
142748}
142749
142750/*
142751   Reset whatever fields of Dwarf_P_Per_Reloc_Sect_s
142752   we must to allow adding a fresh new single
142753   block easily (block consolidation use only).
142754
142755*/
142756static void
142757_dwarf_reset_reloc_sect_info(struct Dwarf_P_Per_Reloc_Sect_s *pblk,
142758			     unsigned long ct)
142759{
142760
142761
142762    /* do not zero pr_sect_num_of_reloc_sect */
142763
142764    pblk->pr_reloc_total_count = 0;
142765    pblk->pr_first_block = 0;
142766    pblk->pr_last_block = 0;
142767    pblk->pr_block_count = 0;
142768    pblk->pr_slots_per_block_to_alloc = ct;
142769}
142770
142771/*
142772        Ensure each stream is a single buffer and
142773        add that single buffer to the set of stream buffers.
142774
142775	By creating a new buffer and copying if necessary.
142776	(If > 1 block, reduce to 1 block)
142777
142778        Free the input set of buffers if we consolidate.
142779
142780	We pass back *new_sec_count as zero because we
142781        are not creating normal sections for a .o, but
142782	symbolic relocations, separately counted.
142783
142784        Return -1 on error (malloc failure)
142785
142786
142787        Return DW_DLV_OK on success. Any other return indicates
142788	malloc failed.
142789*/
142790int
142791_dwarf_symbolic_relocs_to_disk(Dwarf_P_Debug dbg,
142792			       Dwarf_Signed * new_sec_count)
142793{
142794    /* unsigned long total_size =0; */
142795    Dwarf_Small *data;
142796    int sec_index;
142797    int res;
142798    unsigned long i;
142799    Dwarf_Error error;
142800
142801    Dwarf_Signed sec_count = 0;
142802
142803    Dwarf_P_Per_Reloc_Sect p_reloc = &dbg->de_reloc_sect[0];
142804
142805    for (i = 0; i < NUM_DEBUG_SECTIONS; ++i, ++p_reloc) {
142806
142807	unsigned long ct = p_reloc->pr_reloc_total_count;
142808	struct Dwarf_P_Relocation_Block_s *p_blk;
142809	struct Dwarf_P_Relocation_Block_s *p_blk_last;
142810
142811	/* int len */
142812	int err;
142813
142814
142815	if (ct == 0) {
142816	    continue;
142817	}
142818
142819	/* len = dbg->de_relocation_record_size; */
142820	++sec_count;
142821
142822	/* total_size = ct *len; */
142823	sec_index = p_reloc->pr_sect_num_of_reloc_sect;
142824	if (sec_index == 0) {
142825	    /* call de_func or de_func_b, getting section number of
142826	       reloc sec */
142827	    int rel_section_index;
142828	    int int_name;
142829	    Dwarf_Unsigned name_idx;
142830
142831	    /*
142832	       This is a bit of a fake, as we do not really have true
142833	       elf sections at all. Just the data such might contain.
142834	       But this lets the caller eventually link things
142835	       together: without this call we would not know what rel
142836	       data goes with what section when we are asked for the
142837	       real arrays. */
142838
142839	    if (dbg->de_func_b) {
142840		rel_section_index =
142841		    dbg->de_func_b(_dwarf_rel_section_names[i],
142842				   dbg->de_relocation_record_size,
142843				   /* type */ SHT_REL,
142844				   /* flags */ 0,
142845				   /* link to symtab, which we cannot
142846				      know */ SHN_UNDEF,
142847				   /* sec rels apply to */
142848				   dbg->de_elf_sects[i],
142849				   &name_idx, &err);
142850	    } else {
142851		rel_section_index =
142852		    dbg->de_func(_dwarf_rel_section_names[i],
142853				 dbg->de_relocation_record_size,
142854				 /* type */ SHT_REL,
142855				 /* flags */ 0,
142856				 /* link to symtab, which we cannot
142857				    know */ SHN_UNDEF,
142858				 /* sec rels apply to, in elf, sh_info */
142859				 dbg->de_elf_sects[i], &int_name, &err);
142860		name_idx = int_name;
142861	    }
142862	    if (rel_section_index == -1) {
142863		{
142864		    _dwarf_p_error(dbg, &error, DW_DLE_ELF_SECT_ERR);
142865		    return (DW_DLV_ERROR);
142866		}
142867	    }
142868	    p_reloc->pr_sect_num_of_reloc_sect = rel_section_index;
142869	    sec_index = rel_section_index;
142870	}
142871
142872	p_blk = p_reloc->pr_first_block;
142873
142874	if (p_reloc->pr_block_count > 1) {
142875	    struct Dwarf_P_Relocation_Block_s *new_blk;
142876
142877	    /* HACK , not normal interfaces, trashing p_reloc
142878	       current contents! */
142879	    _dwarf_reset_reloc_sect_info(p_reloc, ct);
142880
142881	    /* Creating new single block for all 'ct' entries */
142882	    res = _dwarf_pro_pre_alloc_n_reloc_slots(dbg, (int) i, ct);
142883
142884
142885	    if (res != DW_DLV_OK) {
142886		return res;
142887	    }
142888	    new_blk = p_reloc->pr_first_block;
142889
142890	    data = (Dwarf_Small *) new_blk->rb_data;
142891
142892	    /* The following loop does the consolidation to a
142893	       single block and frees the input block(s). */
142894	    do {
142895
142896		unsigned long len =
142897		    p_blk->rb_where_to_add_next - p_blk->rb_data;
142898
142899		memcpy(data, p_blk->rb_data, len);
142900		data += len;
142901
142902		p_blk_last = p_blk;
142903		p_blk = p_blk->rb_next;
142904
142905		_dwarf_p_dealloc(dbg, (Dwarf_Small *) p_blk_last);
142906	    } while (p_blk) ;
142907	    /* ASSERT: sum of len copied == total_size */
142908	    new_blk->rb_next_slot_to_use = ct;
142909	    new_blk->rb_where_to_add_next = (char *) data;
142910	    p_reloc->pr_reloc_total_count = ct;
142911
142912	    /* have now created a single block, but no change in slots
142913	       used (pr_reloc_total_count) */
142914	}
142915    }
142916
142917    *new_sec_count = 0;
142918    return DW_DLV_OK;
142919}
142920���0707010001adb30000812400011e740000000a0000000140206828000007b5000000660000000000000000000000000000001e00000000libdwarf/pro_reloc_symbolic.h�/*
142921
142922  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
142923
142924  This program is free software; you can redistribute it and/or modify it
142925  under the terms of version 2.1 of the GNU Lesser General Public License
142926  as published by the Free Software Foundation.
142927
142928  This program is distributed in the hope that it would be useful, but
142929  WITHOUT ANY WARRANTY; without even the implied warranty of
142930  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
142931
142932  Further, this software is distributed without any warranty that it is
142933  free of the rightful claim of any third person regarding infringement
142934  or the like.  Any license provided herein, whether implied or
142935  otherwise, applies only to this software file.  Patent licenses, if
142936  any, provided herein do not apply to combinations of this program with
142937  other software, or any other product whatsoever.
142938
142939  You should have received a copy of the GNU Lesser General Public
142940  License along with this program; if not, write the Free Software
142941  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
142942  USA.
142943
142944  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
142945  Mountain View, CA 94043, or:
142946
142947  http://www.sgi.com
142948
142949  For further information regarding this notice, see:
142950
142951  http://oss.sgi.com/projects/GenInfo/NoticeExplan
142952
142953*/
142954
142955
142956int _dwarf_pro_reloc_name_symbolic(Dwarf_P_Debug dbg, int base_sec_index, Dwarf_Unsigned offset,	/* r_offset
142957													   of
142958													   reloc
142959													 */
142960				   Dwarf_Unsigned symidx,
142961				   enum Dwarf_Rel_Type,
142962				   int reltarget_length);
142963int
142964  _dwarf_pro_reloc_length_symbolic(Dwarf_P_Debug dbg, int base_sec_index, Dwarf_Unsigned offset,	/* r_offset
142965													   of
142966													   reloc
142967													 */
142968				   Dwarf_Unsigned start_symidx,
142969				   Dwarf_Unsigned end_symidx,
142970				   enum Dwarf_Rel_Type,
142971				   int reltarget_length);
142972
142973int _dwarf_symbolic_relocs_to_disk(Dwarf_P_Debug dbg,
142974				   Dwarf_Signed * new_sec_count);
142975���0707010001adb40000812400011e740000000a00000001402068270000d9a5000000660000000000000000000000000000001700000000libdwarf/pro_section.c����/*
142976
142977  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
142978
142979  This program is free software; you can redistribute it and/or modify it
142980  under the terms of version 2.1 of the GNU Lesser General Public License
142981  as published by the Free Software Foundation.
142982
142983  This program is distributed in the hope that it would be useful, but
142984  WITHOUT ANY WARRANTY; without even the implied warranty of
142985  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
142986
142987  Further, this software is distributed without any warranty that it is
142988  free of the rightful claim of any third person regarding infringement
142989  or the like.  Any license provided herein, whether implied or
142990  otherwise, applies only to this software file.  Patent licenses, if
142991  any, provided herein do not apply to combinations of this program with
142992  other software, or any other product whatsoever.
142993
142994  You should have received a copy of the GNU Lesser General Public
142995  License along with this program; if not, write the Free Software
142996  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
142997  USA.
142998
142999  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
143000  Mountain View, CA 94043, or:
143001
143002  http://www.sgi.com
143003
143004  For further information regarding this notice, see:
143005
143006  http://oss.sgi.com/projects/GenInfo/NoticeExplan
143007
143008*/
143009
143010
143011
143012#include "config.h"
143013#include "libdwarfdefs.h"
143014#include <stdio.h>
143015#include <string.h>
143016#ifdef   HAVE_ELFACCESS_H
143017#include <elfaccess.h>
143018#endif
143019#include "pro_incl.h"
143020#include "pro_section.h"
143021#include "pro_line.h"
143022#include "pro_frame.h"
143023#include "pro_die.h"
143024#include "pro_macinfo.h"
143025#include "pro_types.h"
143026
143027#ifndef SHF_MIPS_NOSTRIP
143028/* if this is not defined, we probably don't need it: just use 0 */
143029#define SHF_MIPS_NOSTRIP 0
143030#endif
143031#ifndef R_MIPS_NONE
143032#define R_MIPS_NONE 0
143033#endif
143034
143035#ifndef TRUE
143036#define TRUE 1
143037#endif
143038#ifndef FALSE
143039#define FALSE 0
143040#endif
143041
143042/* must match up with pro_section.h defines of DEBUG_INFO etc
143043and sectnames (below)
143044*/
143045char *_dwarf_rel_section_names[] = {
143046    ".rel.debug_info",
143047    ".rel.debug_line",
143048    ".rel.debug_abbrev",	/* no relocations on this, really */
143049    ".rel.debug_frame",
143050    ".rel.debug_aranges",
143051    ".rel.debug_pubnames",
143052    ".rel.debug_str",
143053    ".rel.debug_funcnames",	/* sgi extension */
143054    ".rel.debug_typenames",	/* sgi extension */
143055    ".rel.debug_varnames",	/* sgi extension */
143056    ".rel.debug_weaknames",	/* sgi extension */
143057    ".rel.debug_macinfo",
143058    ".rel.debug_loc"
143059};
143060
143061/* names of sections. Ensure that it matches the defines
143062   in pro_section.h, in the same order
143063   Must match also _dwarf_rel_section_names above
143064*/
143065char *_dwarf_sectnames[] = {
143066    ".debug_info",
143067    ".debug_line",
143068    ".debug_abbrev",
143069    ".debug_frame",
143070    ".debug_aranges",
143071    ".debug_pubnames",
143072    ".debug_str",
143073    ".debug_funcnames",		/* sgi extension */
143074    ".debug_typenames",		/* sgi extension */
143075    ".debug_varnames",		/* sgi extension */
143076    ".debug_weaknames",		/* sgi extension */
143077    ".debug_macinfo",
143078    ".debug_loc"
143079};
143080
143081
143082
143083
143084static Dwarf_Ubyte std_opcode_len[] = { 0,	/* DW_LNS_copy */
143085    1,				/* DW_LNS_advance_pc */
143086    1,				/* DW_LNS_advance_line */
143087    1,				/* DW_LNS_set_file */
143088    1,				/* DW_LNS_set_column */
143089    0,				/* DW_LNS_negate_stmt */
143090    0,				/* DW_LNS_set_basic_block */
143091    0,				/* DW_LNS_const_add_pc */
143092    1,				/* DW_LNS_fixed_advance_pc */
143093};
143094
143095/* struct to hold relocation entries. Its mantained as a linked
143096   list of relocation structs, and will then be written at as a
143097   whole into the relocation section. Whether its 32 bit or
143098   64 bit will be obtained from Dwarf_Debug pointer.
143099*/
143100
143101typedef struct Dwarf_P_Rel_s *Dwarf_P_Rel;
143102struct Dwarf_P_Rel_s {
143103    Dwarf_P_Rel dr_next;
143104    void *dr_rel_datap;
143105};
143106typedef struct Dwarf_P_Rel_Head_s *Dwarf_P_Rel_Head;
143107struct Dwarf_P_Rel_Head_s {
143108    struct Dwarf_P_Rel_s *drh_head;
143109    struct Dwarf_P_Rel_s *drh_tail;
143110};
143111
143112static int _dwarf_pro_generate_debugline(Dwarf_P_Debug dbg,
143113					 Dwarf_Error * error);
143114static int _dwarf_pro_generate_debugframe(Dwarf_P_Debug dbg,
143115					  Dwarf_Error * error);
143116static int _dwarf_pro_generate_debuginfo(Dwarf_P_Debug dbg,
143117					 Dwarf_Error * error);
143118static Dwarf_P_Abbrev _dwarf_pro_getabbrev(Dwarf_P_Die, Dwarf_P_Abbrev);
143119static int _dwarf_pro_match_attr
143120    (Dwarf_P_Attribute, Dwarf_P_Abbrev, int no_attr);
143121
143122/* these macros used as return value for below functions */
143123#define		OPC_INCS_ZERO		-1
143124#define		OPC_OUT_OF_RANGE	-2
143125#define		LINE_OUT_OF_RANGE	-3
143126static int _dwarf_pro_get_opc(Dwarf_Unsigned addr_adv, int line_adv);
143127
143128
143129
143130/*
143131	Return TRUE if we need the section, FALSE otherwise
143132
143133        If any of the 'line-data-related' calls were made
143134        including file or directory entries,
143135        produce .debug_line .
143136
143137*/
143138static int
143139dwarf_need_debug_line_section(Dwarf_P_Debug dbg)
143140{
143141    if (dbg->de_lines == NULL && dbg->de_file_entries == NULL
143142	&& dbg->de_inc_dirs == NULL) {
143143	return FALSE;
143144    }
143145    return TRUE;
143146}
143147
143148/*
143149    Convert debug information to  a format such that
143150    it can be written on disk.
143151    Called exactly once per execution.
143152*/
143153Dwarf_Signed
143154dwarf_transform_to_disk_form(Dwarf_P_Debug dbg, Dwarf_Error * error)
143155{
143156    /*
143157       Section data in written out in a number of buffers. Each
143158       _generate_*() function returns a cumulative count of buffers for
143159       all the sections. get_section_bytes() returns pointers to these
143160       buffers one at a time. */
143161    int nbufs;
143162    int sect;
143163    int name_idx;
143164    int err;
143165    Dwarf_Unsigned du;
143166
143167    if (dbg->de_version_magic_number != PRO_VERSION_MAGIC) {
143168	DWARF_P_DBG_ERROR(dbg, DW_DLE_IA, DW_DLV_NOCOUNT);
143169    }
143170
143171    /* Create dwarf section headers */
143172    for (sect = 0; sect < NUM_DEBUG_SECTIONS; sect++) {
143173	long flags = 0;
143174
143175	switch (sect) {
143176
143177	case DEBUG_INFO:
143178	    if (dbg->de_dies == NULL)
143179		continue;
143180	    break;
143181
143182	case DEBUG_LINE:
143183	    if (dwarf_need_debug_line_section(dbg) == FALSE) {
143184		continue;
143185	    }
143186	    break;
143187
143188	case DEBUG_ABBREV:
143189	    if (dbg->de_dies == NULL)
143190		continue;
143191	    break;
143192
143193	case DEBUG_FRAME:
143194	    if (dbg->de_frame_cies == NULL)
143195		continue;
143196	    flags = SHF_MIPS_NOSTRIP;
143197	    break;
143198
143199	case DEBUG_ARANGES:
143200	    if (dbg->de_arange == NULL)
143201		continue;
143202	    break;
143203
143204	case DEBUG_PUBNAMES:
143205	    if (dbg->de_simple_name_headers[dwarf_snk_pubname].
143206		sn_head == NULL)
143207		continue;
143208	    break;
143209
143210	case DEBUG_STR:
143211	    if (dbg->de_strings == NULL)
143212		continue;
143213	    break;
143214
143215	case DEBUG_FUNCNAMES:
143216	    if (dbg->de_simple_name_headers[dwarf_snk_funcname].
143217		sn_head == NULL)
143218		continue;
143219	    break;
143220
143221	case DEBUG_TYPENAMES:
143222	    if (dbg->de_simple_name_headers[dwarf_snk_typename].
143223		sn_head == NULL)
143224		continue;
143225	    break;
143226
143227	case DEBUG_VARNAMES:
143228	    if (dbg->de_simple_name_headers[dwarf_snk_varname].
143229		sn_head == NULL)
143230		continue;
143231	    break;
143232
143233	case DEBUG_WEAKNAMES:
143234	    if (dbg->de_simple_name_headers[dwarf_snk_weakname].
143235		sn_head == NULL)
143236		continue;
143237	    break;
143238
143239	case DEBUG_MACINFO:
143240	    if (dbg->de_first_macinfo == NULL)
143241		continue;
143242	    break;
143243	case DEBUG_LOC:
143244	    /* not handled yet */
143245	    continue;
143246	default:
143247	    /* logic error: missing a case */
143248	    DWARF_P_DBG_ERROR(dbg, DW_DLE_ELF_SECT_ERR, DW_DLV_NOCOUNT);
143249	}
143250	{
143251	    int new_base_elf_sect;
143252
143253	    if (dbg->de_func_b) {
143254		new_base_elf_sect =
143255		    dbg->de_func_b(_dwarf_sectnames[sect],
143256				   /* rec size */ 1,
143257				   SECTION_TYPE,
143258				   flags, SHN_UNDEF, 0, &du, &err);
143259
143260	    } else {
143261		new_base_elf_sect = dbg->de_func(_dwarf_sectnames[sect],
143262						 dbg->
143263						 de_relocation_record_size,
143264						 SECTION_TYPE, flags,
143265						 SHN_UNDEF, 0,
143266						 &name_idx, &err);
143267		du = name_idx;
143268	    }
143269	    if (new_base_elf_sect == -1) {
143270		DWARF_P_DBG_ERROR(dbg, DW_DLE_ELF_SECT_ERR,
143271				  DW_DLV_NOCOUNT);
143272	    }
143273	    dbg->de_elf_sects[sect] = new_base_elf_sect;
143274
143275	    dbg->de_sect_name_idx[sect] = du;
143276	}
143277    }
143278
143279    nbufs = 0;
143280
143281    /*
143282       Changing the order in which the sections are generated may
143283       cause problems because of relocations. */
143284
143285    if (dwarf_need_debug_line_section(dbg) == TRUE) {
143286	nbufs = _dwarf_pro_generate_debugline(dbg, error);
143287	if (nbufs < 0) {
143288	    DWARF_P_DBG_ERROR(dbg, DW_DLE_DEBUGLINE_ERROR,
143289			      DW_DLV_NOCOUNT);
143290	}
143291    }
143292
143293    if (dbg->de_frame_cies) {
143294	nbufs = _dwarf_pro_generate_debugframe(dbg, error);
143295	if (nbufs < 0) {
143296	    DWARF_P_DBG_ERROR(dbg, DW_DLE_DEBUGFRAME_ERROR,
143297			      DW_DLV_NOCOUNT);
143298	}
143299    }
143300    if (dbg->de_first_macinfo) {
143301	nbufs = _dwarf_pro_transform_macro_info_to_disk(dbg, error);
143302	if (nbufs < 0) {
143303	    DWARF_P_DBG_ERROR(dbg, DW_DLE_DEBUGMACINFO_ERROR,
143304			      DW_DLV_NOCOUNT);
143305	}
143306    }
143307
143308    if (dbg->de_dies) {
143309	nbufs = _dwarf_pro_generate_debuginfo(dbg, error);
143310	if (nbufs < 0) {
143311	    DWARF_P_DBG_ERROR(dbg, DW_DLE_DEBUGINFO_ERROR,
143312			      DW_DLV_NOCOUNT);
143313	}
143314    }
143315
143316    if (dbg->de_arange) {
143317	nbufs = _dwarf_transform_arange_to_disk(dbg, error);
143318	if (nbufs < 0) {
143319	    DWARF_P_DBG_ERROR(dbg, DW_DLE_DEBUGINFO_ERROR,
143320			      DW_DLV_NOCOUNT);
143321	}
143322    }
143323
143324    if (dbg->de_simple_name_headers[dwarf_snk_pubname].sn_head) {
143325	nbufs = _dwarf_transform_simplename_to_disk(dbg,
143326						    dwarf_snk_pubname,
143327						    DEBUG_PUBNAMES,
143328						    error);
143329
143330
143331	if (nbufs < 0) {
143332	    DWARF_P_DBG_ERROR(dbg, DW_DLE_DEBUGINFO_ERROR,
143333			      DW_DLV_NOCOUNT);
143334	}
143335    }
143336
143337    if (dbg->de_simple_name_headers[dwarf_snk_funcname].sn_head) {
143338	nbufs = _dwarf_transform_simplename_to_disk(dbg,
143339						    dwarf_snk_funcname,
143340						    DEBUG_FUNCNAMES,
143341						    error);
143342	if (nbufs < 0) {
143343	    DWARF_P_DBG_ERROR(dbg, DW_DLE_DEBUGINFO_ERROR,
143344			      DW_DLV_NOCOUNT);
143345	}
143346    }
143347
143348    if (dbg->de_simple_name_headers[dwarf_snk_typename].sn_head) {
143349	nbufs = _dwarf_transform_simplename_to_disk(dbg,
143350						    dwarf_snk_typename,
143351						    DEBUG_TYPENAMES,
143352						    error);
143353	if (nbufs < 0) {
143354	    DWARF_P_DBG_ERROR(dbg, DW_DLE_DEBUGINFO_ERROR,
143355			      DW_DLV_NOCOUNT);
143356	}
143357    }
143358
143359    if (dbg->de_simple_name_headers[dwarf_snk_varname].sn_head) {
143360	nbufs = _dwarf_transform_simplename_to_disk(dbg,
143361						    dwarf_snk_varname,
143362						    DEBUG_VARNAMES,
143363						    error);
143364
143365	if (nbufs < 0) {
143366	    DWARF_P_DBG_ERROR(dbg, DW_DLE_DEBUGINFO_ERROR,
143367			      DW_DLV_NOCOUNT);
143368	}
143369    }
143370
143371    if (dbg->de_simple_name_headers[dwarf_snk_weakname].sn_head) {
143372	nbufs = _dwarf_transform_simplename_to_disk(dbg,
143373						    dwarf_snk_weakname,
143374						    DEBUG_WEAKNAMES,
143375						    error);
143376
143377	if (nbufs < 0) {
143378	    DWARF_P_DBG_ERROR(dbg, DW_DLE_DEBUGINFO_ERROR,
143379			      DW_DLV_NOCOUNT);
143380	}
143381    }
143382
143383    {
143384	Dwarf_Signed new_secs;
143385	int res;
143386
143387	res = dbg->de_transform_relocs_to_disk(dbg, &new_secs);
143388	if (res != DW_DLV_OK) {
143389	    DWARF_P_DBG_ERROR(dbg, DW_DLE_DEBUGINFO_ERROR,
143390			      DW_DLV_NOCOUNT);
143391	}
143392	nbufs += new_secs;
143393    }
143394    return nbufs;
143395}
143396
143397
143398/*---------------------------------------------------------------
143399	Generate debug_line section
143400---------------------------------------------------------------*/
143401static int
143402_dwarf_pro_generate_debugline(Dwarf_P_Debug dbg, Dwarf_Error * error)
143403{
143404    Dwarf_P_Inc_Dir curdir;
143405    Dwarf_P_F_Entry curentry;
143406    Dwarf_P_Line curline, prevline;
143407
143408    /* all data named cur* are used to loop thru linked lists */
143409
143410    int sum_bytes;
143411    int prolog_size;
143412    unsigned char *data;	/* holds disk form data */
143413    int elfsectno;
143414    unsigned char *start_line_sec;	/* pointer to the buffer at
143415					   section start */
143416    /* temps for memcpy */
143417    Dwarf_Unsigned du;
143418    Dwarf_Ubyte db;
143419    Dwarf_Half dh;
143420    int res;
143421    int uwordb_size = dbg->de_offset_size;
143422    int extension_size = dbg->de_64bit_extension ? 4 : 0;
143423    int upointer_size = dbg->de_pointer_size;
143424    char buff1[ENCODE_SPACE_NEEDED];
143425
143426
143427    sum_bytes = 0;
143428
143429    elfsectno = dbg->de_elf_sects[DEBUG_LINE];
143430
143431    /* statement prologue information */
143432    prolog_size = 0;
143433    /* include directories */
143434    curdir = dbg->de_inc_dirs;
143435    while (curdir) {
143436	prolog_size += strlen(curdir->did_name) + 1;
143437	curdir = curdir->did_next;
143438    }
143439    prolog_size++;		/* last null following last directory
143440				   entry. */
143441
143442    /* file entries */
143443    curentry = dbg->de_file_entries;
143444    while (curentry) {
143445	prolog_size +=
143446	    strlen(curentry->dfe_name) + 1 + curentry->dfe_nbytes;
143447	curentry = curentry->dfe_next;
143448    }
143449    prolog_size++;		/* last null byte */
143450
143451
143452    prolog_size += extension_size +	/* DISTINGUISHED VALUE */
143453	sizeof_uhalf(dbg) +	/* version # */
143454	uwordb_size +		/* prologue length */
143455	sizeof_ubyte(dbg) +	/* min_instr length */
143456	sizeof_ubyte(dbg) +	/* default is_stmt */
143457	sizeof_ubyte(dbg) +	/* linebase */
143458	sizeof_ubyte(dbg) +	/* linerange */
143459	sizeof_ubyte(dbg);	/* opcode base */
143460
143461    /* length of table specifying # of opnds */
143462    prolog_size += sizeof(std_opcode_len);
143463    prolog_size += uwordb_size;	/* for total length field */
143464
143465    GET_CHUNK(dbg, elfsectno, data, prolog_size, error);
143466    start_line_sec = data;
143467
143468    /* copy over the data */
143469    /* total_length */
143470    du = 0;
143471    if (extension_size) {
143472	Dwarf_Word x = DISTINGUISHED_VALUE;
143473
143474	WRITE_UNALIGNED(dbg, (void *) data, (const void *) &x,
143475			sizeof(x), extension_size);
143476	data += extension_size;
143477    }
143478
143479    WRITE_UNALIGNED(dbg, (void *) data, (const void *) &du,
143480		    sizeof(du), uwordb_size);
143481    data += uwordb_size;
143482
143483    dh = VERSION;
143484    WRITE_UNALIGNED(dbg, (void *) data, (const void *) &dh,
143485		    sizeof(dh), sizeof(Dwarf_Half));
143486    data += sizeof(Dwarf_Half);
143487
143488    /* prologue length */
143489    du = prolog_size - (uwordb_size + sizeof(Dwarf_Half) + uwordb_size);
143490    {
143491	WRITE_UNALIGNED(dbg, (void *) data, (const void *) &du,
143492			sizeof(du), uwordb_size);
143493	data += uwordb_size;
143494    }
143495    db = MIN_INST_LENGTH;
143496    WRITE_UNALIGNED(dbg, (void *) data, (const void *) &db,
143497		    sizeof(db), sizeof(Dwarf_Ubyte));
143498    data += sizeof(Dwarf_Ubyte);
143499    db = DEFAULT_IS_STMT;
143500    WRITE_UNALIGNED(dbg, (void *) data, (const void *) &db,
143501		    sizeof(db), sizeof(Dwarf_Ubyte));
143502    data += sizeof(Dwarf_Ubyte);
143503    db = (Dwarf_Ubyte) LINE_BASE;
143504    WRITE_UNALIGNED(dbg, (void *) data, (const void *) &db,
143505		    sizeof(db), sizeof(Dwarf_Ubyte));
143506    data += sizeof(Dwarf_Ubyte);
143507    db = LINE_RANGE;
143508    WRITE_UNALIGNED(dbg, (void *) data, (const void *) &db,
143509		    sizeof(db), sizeof(Dwarf_Ubyte));
143510    data += sizeof(Dwarf_Ubyte);
143511    db = OPCODE_BASE;
143512    WRITE_UNALIGNED(dbg, (void *) data, (const void *) &db,
143513		    sizeof(db), sizeof(Dwarf_Ubyte));
143514    data += sizeof(Dwarf_Ubyte);
143515    WRITE_UNALIGNED(dbg, (void *) data, (const void *) std_opcode_len,
143516		    sizeof(std_opcode_len), sizeof(std_opcode_len));
143517    data += sizeof(std_opcode_len);
143518
143519    /* copy over include directories */
143520    curdir = dbg->de_inc_dirs;
143521    while (curdir) {
143522	strcpy((char *) data, curdir->did_name);
143523	data += strlen(curdir->did_name) + 1;
143524	curdir = curdir->did_next;
143525    }
143526    *data = '\0';		/* last null */
143527    data++;
143528
143529    /* copy file entries */
143530    curentry = dbg->de_file_entries;
143531    while (curentry) {
143532	strcpy((char *) data, curentry->dfe_name);
143533	data += strlen(curentry->dfe_name) + 1;
143534	/* copies of leb numbers, no endian issues */
143535	memcpy((void *) data,
143536	       (const void *) curentry->dfe_args, curentry->dfe_nbytes);
143537	data += curentry->dfe_nbytes;
143538	curentry = curentry->dfe_next;
143539    }
143540    *data = '\0';
143541    data++;
143542
143543    sum_bytes += prolog_size;
143544
143545    curline = dbg->de_lines;
143546    prevline = (Dwarf_P_Line)
143547	_dwarf_p_get_alloc(dbg, sizeof(struct Dwarf_P_Line_s));
143548    if (prevline == NULL) {
143549	DWARF_P_DBG_ERROR(dbg, DW_DLE_LINE_ALLOC, -1);
143550    }
143551    _dwarf_pro_reg_init(prevline);
143552    /* generate opcodes for line numbers */
143553    while (curline) {
143554	int nbytes;
143555	char *arg;
143556	int opc;
143557	int no_lns_copy;	/* if lns copy opcode doesnt need to be
143558				   generated, if special opcode or end
143559				   sequence */
143560	Dwarf_Unsigned addr_adv;
143561	int line_adv;		/* supposed to be a reasonably small
143562				   number, so the size should not be a
143563				   problem. ? */
143564
143565	no_lns_copy = 0;
143566	if (curline->dpl_opc != 0) {
143567	    int inst_bytes;	/* no of bytes in extended opcode */
143568	    char *str;		/* hold leb encoded inst_bytes */
143569	    int str_nbytes;	/* no of bytes in str */
143570
143571	    switch (curline->dpl_opc) {
143572	    case DW_LNE_end_sequence:
143573
143574		/* Advance pc to end of text section. */
143575		addr_adv = curline->dpl_address - prevline->dpl_address;
143576		if (addr_adv > 0) {
143577		    db = DW_LNS_advance_pc;
143578		    res =
143579			_dwarf_pro_encode_leb128_nm(addr_adv /
143580						    MIN_INST_LENGTH,
143581						    &nbytes, buff1,
143582						    sizeof(buff1));
143583		    if (res != DW_DLV_OK) {
143584			DWARF_P_DBG_ERROR(dbg, DW_DLE_CHUNK_ALLOC, -1);
143585		    }
143586		    GET_CHUNK(dbg, elfsectno, data,
143587			      nbytes + sizeof(Dwarf_Ubyte), error);
143588		    WRITE_UNALIGNED(dbg, (void *) data,
143589				    (const void *) &db, sizeof(db),
143590				    sizeof(Dwarf_Ubyte));
143591		    data += sizeof(Dwarf_Ubyte);
143592		    /* leb, no endianness issue */
143593		    memcpy((void *) data, (const void *) buff1, nbytes);
143594		    data += nbytes + sizeof(Dwarf_Ubyte);
143595		    sum_bytes += nbytes + sizeof(Dwarf_Ubyte);
143596		    prevline->dpl_address = curline->dpl_address;
143597		}
143598
143599		/* first null byte */
143600		db = 0;
143601		GET_CHUNK(dbg, elfsectno, data, sizeof(Dwarf_Ubyte),
143602			  error);
143603		WRITE_UNALIGNED(dbg, (void *) data, (const void *) &db,
143604				sizeof(db), sizeof(Dwarf_Ubyte));
143605		data += sizeof(Dwarf_Ubyte);
143606		sum_bytes += sizeof(Dwarf_Ubyte);
143607
143608		/* write length of extended opcode */
143609		inst_bytes = sizeof(Dwarf_Ubyte);
143610		res =
143611		    _dwarf_pro_encode_leb128_nm(inst_bytes, &str_nbytes,
143612						buff1, sizeof(buff1));
143613		if (res != DW_DLV_OK) {
143614		    DWARF_P_DBG_ERROR(dbg, DW_DLE_CHUNK_ALLOC, -1);
143615		}
143616		GET_CHUNK(dbg, elfsectno, data, str_nbytes, error);
143617		memcpy((void *) data, (const void *) buff1, str_nbytes);
143618		data += str_nbytes;
143619		sum_bytes += str_nbytes;
143620
143621		/* write extended opcode */
143622		db = DW_LNE_end_sequence;
143623		GET_CHUNK(dbg, elfsectno, data, sizeof(Dwarf_Ubyte),
143624			  error);
143625		WRITE_UNALIGNED(dbg, (void *) data, (const void *) &db,
143626				sizeof(db), sizeof(Dwarf_Ubyte));
143627		data += sizeof(Dwarf_Ubyte);
143628		sum_bytes += sizeof(Dwarf_Ubyte);
143629		/* reset value to original values */
143630		_dwarf_pro_reg_init(prevline);
143631		no_lns_copy = 1;
143632		/* this is set only for end_sequence, so that a
143633		   dw_lns_copy is not generated */
143634		break;
143635
143636	    case DW_LNE_set_address:
143637
143638		/* first null byte */
143639		db = 0;
143640		GET_CHUNK(dbg, elfsectno, data, sizeof(Dwarf_Ubyte),
143641			  error);
143642		WRITE_UNALIGNED(dbg, (void *) data, (const void *) &db,
143643				sizeof(db), sizeof(Dwarf_Ubyte));
143644		data += sizeof(Dwarf_Ubyte);
143645		sum_bytes += sizeof(Dwarf_Ubyte);
143646
143647		/* write length of extended opcode */
143648		inst_bytes = sizeof(Dwarf_Ubyte) + upointer_size;
143649		res =
143650		    _dwarf_pro_encode_leb128_nm(inst_bytes, &str_nbytes,
143651						buff1, sizeof(buff1));
143652		if (res != DW_DLV_OK) {
143653		    DWARF_P_DBG_ERROR(dbg, DW_DLE_CHUNK_ALLOC, -1);
143654		}
143655		GET_CHUNK(dbg, elfsectno, data, str_nbytes, error);
143656		str = buff1;
143657		/* leb number, no endian issue */
143658		memcpy((void *) data, (const void *) str, str_nbytes);
143659		data += str_nbytes;
143660		sum_bytes += str_nbytes;
143661
143662		/* write extended opcode */
143663		db = DW_LNE_set_address;
143664		GET_CHUNK(dbg, elfsectno, data, upointer_size +
143665			  sizeof(Dwarf_Ubyte), error);
143666		WRITE_UNALIGNED(dbg, (void *) data, (const void *) &db,
143667				sizeof(db), sizeof(Dwarf_Ubyte));
143668		data += sizeof(Dwarf_Ubyte);
143669		sum_bytes += sizeof(Dwarf_Ubyte);
143670
143671		/* reloc for address */
143672		res = dbg->de_reloc_name(dbg, DEBUG_LINE, sum_bytes,	/* r_offset
143673									 */
143674					 curline->dpl_r_symidx,
143675					 dwarf_drt_data_reloc,
143676					 uwordb_size);
143677		if (res != DW_DLV_OK) {
143678		    DWARF_P_DBG_ERROR(dbg, DW_DLE_CHUNK_ALLOC, -1);
143679		}
143680
143681		/* write offset (address) */
143682		du = curline->dpl_address;
143683		WRITE_UNALIGNED(dbg, (void *) data, (const void *) &du,
143684				sizeof(du), upointer_size);
143685		data += upointer_size;
143686		sum_bytes += upointer_size;
143687		prevline->dpl_address = curline->dpl_address;
143688		no_lns_copy = 1;
143689		break;
143690	    }
143691	} else {
143692	    if (curline->dpl_file != prevline->dpl_file) {
143693		db = DW_LNS_set_file;
143694		res =
143695		    _dwarf_pro_encode_leb128_nm(curline->dpl_file,
143696						&nbytes, buff1,
143697						sizeof(buff1));
143698		if (res != DW_DLV_OK) {
143699		    DWARF_P_DBG_ERROR(dbg, DW_DLE_CHUNK_ALLOC, -1);
143700		}
143701		arg = buff1;
143702		GET_CHUNK(dbg, elfsectno, data,
143703			  nbytes + sizeof(Dwarf_Ubyte), error);
143704		WRITE_UNALIGNED(dbg, (void *) data, (const void *) &db,
143705				sizeof(db), sizeof(Dwarf_Ubyte));
143706		data += sizeof(Dwarf_Ubyte);
143707		memcpy((void *) data, (const void *) arg, nbytes);
143708		data += nbytes;
143709		sum_bytes += nbytes + sizeof(Dwarf_Ubyte);
143710		prevline->dpl_file = curline->dpl_file;
143711	    }
143712	    if (curline->dpl_column != prevline->dpl_column) {
143713		db = DW_LNS_set_column;
143714		res = _dwarf_pro_encode_leb128_nm(curline->dpl_column,
143715						  &nbytes,
143716						  buff1, sizeof(buff1));
143717		if (res != DW_DLV_OK) {
143718		    DWARF_P_DBG_ERROR(dbg, DW_DLE_CHUNK_ALLOC, -1);
143719		}
143720
143721		arg = buff1;
143722		GET_CHUNK(dbg, elfsectno, data,
143723			  nbytes + sizeof(Dwarf_Ubyte), error);
143724		WRITE_UNALIGNED(dbg, (void *) data, (const void *) &db,
143725				sizeof(db), sizeof(Dwarf_Ubyte));
143726		data += sizeof(Dwarf_Ubyte);
143727		memcpy((void *) data, (const void *) arg, nbytes);
143728		data += nbytes;
143729		sum_bytes += nbytes + sizeof(Dwarf_Ubyte);
143730		prevline->dpl_column = curline->dpl_column;
143731	    }
143732	    if (curline->dpl_is_stmt != prevline->dpl_is_stmt) {
143733		db = DW_LNS_negate_stmt;
143734		GET_CHUNK(dbg, elfsectno, data, sizeof(Dwarf_Ubyte),
143735			  error);
143736		WRITE_UNALIGNED(dbg, (void *) data, (const void *) &db,
143737				sizeof(db), sizeof(Dwarf_Ubyte));
143738		data += sizeof(Dwarf_Ubyte);
143739		sum_bytes += sizeof(Dwarf_Ubyte);
143740		prevline->dpl_is_stmt = curline->dpl_is_stmt;
143741	    }
143742	    if (curline->dpl_basic_block == true &&
143743		prevline->dpl_basic_block == false) {
143744		db = DW_LNS_set_basic_block;
143745		GET_CHUNK(dbg, elfsectno, data, sizeof(Dwarf_Ubyte),
143746			  error);
143747		WRITE_UNALIGNED(dbg, (void *) data, (const void *) &db,
143748				sizeof(db), sizeof(Dwarf_Ubyte));
143749		data += sizeof(Dwarf_Ubyte);
143750		sum_bytes += sizeof(Dwarf_Ubyte);
143751		prevline->dpl_basic_block = curline->dpl_basic_block;
143752	    }
143753	    addr_adv = curline->dpl_address - prevline->dpl_address;
143754
143755	    line_adv = (int) (curline->dpl_line - prevline->dpl_line);
143756	    if ((addr_adv % MIN_INST_LENGTH) != 0) {
143757		DWARF_P_DBG_ERROR(dbg, DW_DLE_WRONG_ADDRESS, -1);
143758	    }
143759	    if ((opc = _dwarf_pro_get_opc(addr_adv, line_adv)) > 0) {
143760		no_lns_copy = 1;
143761		db = opc;
143762		GET_CHUNK(dbg, elfsectno, data, sizeof(Dwarf_Ubyte),
143763			  error);
143764		WRITE_UNALIGNED(dbg, (void *) data, (const void *) &db,
143765				sizeof(db), sizeof(Dwarf_Ubyte));
143766		data += sizeof(Dwarf_Ubyte);
143767		sum_bytes += sizeof(Dwarf_Ubyte);
143768		prevline->dpl_basic_block = false;
143769		prevline->dpl_address = curline->dpl_address;
143770		prevline->dpl_line = curline->dpl_line;
143771	    } else {
143772		if (addr_adv > 0) {
143773		    db = DW_LNS_advance_pc;
143774		    res =
143775			_dwarf_pro_encode_leb128_nm(addr_adv /
143776						    MIN_INST_LENGTH,
143777						    &nbytes, buff1,
143778						    sizeof(buff1));
143779		    if (res != DW_DLV_OK) {
143780			DWARF_P_DBG_ERROR(dbg, DW_DLE_CHUNK_ALLOC, -1);
143781		    }
143782
143783		    arg = buff1;
143784		    GET_CHUNK(dbg, elfsectno, data,
143785			      nbytes + sizeof(Dwarf_Ubyte), error);
143786		    WRITE_UNALIGNED(dbg, (void *) data,
143787				    (const void *) &db,
143788				    sizeof(db), sizeof(Dwarf_Ubyte));
143789		    data += sizeof(Dwarf_Ubyte);
143790		    memcpy((void *) data, (const void *) arg, nbytes);
143791		    data += nbytes + sizeof(Dwarf_Ubyte);
143792		    sum_bytes += nbytes + sizeof(Dwarf_Ubyte);
143793		    prevline->dpl_basic_block = false;
143794		    prevline->dpl_address = curline->dpl_address;
143795		}
143796		if (line_adv != 0) {
143797		    db = DW_LNS_advance_line;
143798		    res = _dwarf_pro_encode_signed_leb128_nm(line_adv,
143799							     &nbytes,
143800							     buff1,
143801							     sizeof
143802							     (buff1));
143803		    if (res != DW_DLV_OK) {
143804			DWARF_P_DBG_ERROR(dbg, DW_DLE_CHUNK_ALLOC, -1);
143805		    }
143806
143807		    arg = buff1;
143808		    GET_CHUNK(dbg, elfsectno, data,
143809			      nbytes + sizeof(Dwarf_Ubyte), error);
143810		    WRITE_UNALIGNED(dbg, (void *) data,
143811				    (const void *) &db, sizeof(db),
143812				    sizeof(Dwarf_Ubyte));
143813		    data += sizeof(Dwarf_Ubyte);
143814		    memcpy((void *) data, (const void *) arg, nbytes);
143815		    data += nbytes + sizeof(Dwarf_Ubyte);
143816		    sum_bytes += nbytes + sizeof(Dwarf_Ubyte);
143817		    prevline->dpl_basic_block = false;
143818		    prevline->dpl_line = curline->dpl_line;
143819		}
143820	    }
143821	}			/* ends else for opc != 0 */
143822	if (no_lns_copy == 0) {	/* if not a special or dw_lne_end_seq
143823				   generate a matrix line */
143824	    db = DW_LNS_copy;
143825	    GET_CHUNK(dbg, elfsectno, data, sizeof(Dwarf_Ubyte), error);
143826	    WRITE_UNALIGNED(dbg, (void *) data,
143827			    (const void *) &db,
143828			    sizeof(db), sizeof(Dwarf_Ubyte));
143829	    data += sizeof(Dwarf_Ubyte);
143830	    sum_bytes += sizeof(Dwarf_Ubyte);
143831	    prevline->dpl_basic_block = false;
143832	}
143833	curline = curline->dpl_next;
143834    }
143835
143836    /* write total length field */
143837    du = sum_bytes - uwordb_size - extension_size;	/* subtract
143838							   length field
143839							 */
143840    {
143841	start_line_sec += extension_size;
143842	WRITE_UNALIGNED(dbg, (void *) start_line_sec,
143843			(const void *) &du, sizeof(du), uwordb_size);
143844    }
143845
143846    return (int) dbg->de_n_debug_sect;
143847}
143848
143849/*---------------------------------------------------------------
143850	Generate debug_frame section
143851---------------------------------------------------------------*/
143852static int
143853_dwarf_pro_generate_debugframe(Dwarf_P_Debug dbg, Dwarf_Error * error)
143854{
143855    int elfsectno;
143856    int i;
143857    int firsttime = 1;
143858    int pad;			/* pad for padding to align cies and
143859				   fdes */
143860    Dwarf_P_Cie curcie;
143861    Dwarf_P_Fde curfde;
143862    unsigned char *data;
143863    Dwarf_sfixed dsw;
143864    Dwarf_Unsigned du;
143865    Dwarf_Ubyte db;
143866    long *cie_offs;		/* holds byte offsets for links to
143867				   fde's */
143868    unsigned long cie_length;
143869    int cie_no;
143870    int uwordb_size = dbg->de_offset_size;
143871    int extension_size = dbg->de_64bit_extension ? 4 : 0;
143872    int upointer_size = dbg->de_pointer_size;
143873    Dwarf_Unsigned cur_off;	/* current offset of written data,
143874				   held for relocation info */
143875
143876    elfsectno = dbg->de_elf_sects[DEBUG_FRAME];
143877
143878    curcie = dbg->de_frame_cies;
143879    cie_length = 0;
143880    cur_off = 0;
143881    cie_offs = (long *)
143882	_dwarf_p_get_alloc(dbg, sizeof(long) * dbg->de_n_cie);
143883    if (cie_offs == NULL) {
143884	DWARF_P_DBG_ERROR(dbg, DW_DLE_CIE_OFFS_ALLOC, -1);
143885    }
143886    /* generate cie number as we go along */
143887    cie_no = 1;
143888    while (curcie) {
143889	char *code_al;
143890	int c_bytes;
143891	char *data_al;
143892	int d_bytes;
143893	int res;
143894	char buff1[ENCODE_SPACE_NEEDED];
143895	char buff2[ENCODE_SPACE_NEEDED];
143896	char buff3[ENCODE_SPACE_NEEDED];
143897	char *augmentation;
143898	char *augmented_al;
143899	long augmented_fields_length;
143900	int a_bytes;
143901
143902	res = _dwarf_pro_encode_leb128_nm(curcie->cie_code_align,
143903					  &c_bytes,
143904					  buff1, sizeof(buff1));
143905	if (res != DW_DLV_OK) {
143906	    DWARF_P_DBG_ERROR(dbg, DW_DLE_CIE_OFFS_ALLOC, -1);
143907	}
143908	/* Before April 1999, the following was using an unsigned
143909	   encode. That worked ok even though the decoder used the
143910	   correct signed leb read, but doing the encode correctly
143911	   (according to the dwarf spec) saves space in the output file
143912	   and is completely compatible.
143913
143914	   Note the actual stored amount on MIPS was 10 bytes (!) to
143915	   store the value -4. (hex)fc ffffffff ffffffff 01 The
143916	   libdwarf consumer consumed all 10 bytes too!
143917
143918	   old version res =
143919	   _dwarf_pro_encode_leb128_nm(curcie->cie_data_align,
143920
143921	   below is corrected signed version. */
143922	res = _dwarf_pro_encode_signed_leb128_nm(curcie->cie_data_align,
143923						 &d_bytes,
143924						 buff2, sizeof(buff2));
143925	if (res != DW_DLV_OK) {
143926	    DWARF_P_DBG_ERROR(dbg, DW_DLE_CIE_OFFS_ALLOC, -1);
143927	}
143928	code_al = buff1;
143929	data_al = buff2;
143930
143931	/* get the correct offset */
143932	if (firsttime) {
143933	    cie_offs[cie_no - 1] = 0;
143934	    firsttime = 0;
143935	} else {
143936	    cie_offs[cie_no - 1] = cie_offs[cie_no - 2] +
143937		(long) cie_length + uwordb_size + extension_size;
143938	}
143939	cie_no++;
143940	augmentation = curcie->cie_aug;
143941	if (strcmp(augmentation, DW_CIE_AUGMENTER_STRING_V0) == 0) {
143942	    augmented_fields_length = 0;
143943	    res = _dwarf_pro_encode_leb128_nm(augmented_fields_length,
143944					      &a_bytes, buff3,
143945					      sizeof(buff3));
143946	    augmented_al = buff3;
143947	    if (res != DW_DLV_OK) {
143948		DWARF_P_DBG_ERROR(dbg, DW_DLE_CIE_OFFS_ALLOC, -1);
143949	    }
143950	    cie_length = uwordb_size +	/* cie_id */
143951		sizeof(Dwarf_Ubyte) +	/* cie version */
143952		strlen(curcie->cie_aug) + 1 +	/* augmentation */
143953		c_bytes +	/* code alignment factor */
143954		d_bytes +	/* data alignment factor */
143955		sizeof(Dwarf_Ubyte) +	/* return reg address */
143956		a_bytes +	/* augmentation length */
143957		curcie->cie_inst_bytes;
143958	} else {
143959	    cie_length = uwordb_size +	/* cie_id */
143960		sizeof(Dwarf_Ubyte) +	/* cie version */
143961		strlen(curcie->cie_aug) + 1 +	/* augmentation */
143962		c_bytes + d_bytes + sizeof(Dwarf_Ubyte) +	/* return
143963								   reg
143964								   address
143965								 */
143966		curcie->cie_inst_bytes;
143967	}
143968	pad = (int) PADDING(cie_length, upointer_size);
143969	cie_length += pad;
143970	GET_CHUNK(dbg, elfsectno, data, cie_length + uwordb_size
143971		  + extension_size, error);
143972	if (extension_size) {
143973	    Dwarf_Unsigned x = DISTINGUISHED_VALUE;
143974
143975	    WRITE_UNALIGNED(dbg, (void *) data,
143976			    (const void *) &x,
143977			    sizeof(x), extension_size);
143978	    data += extension_size;
143979
143980	}
143981	du = cie_length;
143982	/* total length of cie */
143983	WRITE_UNALIGNED(dbg, (void *) data,
143984			(const void *) &du, sizeof(du), uwordb_size);
143985	data += uwordb_size;
143986
143987	/* cie-id is a special value. */
143988	du = DW_CIE_ID;
143989	WRITE_UNALIGNED(dbg, (void *) data, (const void *) &du,
143990			sizeof(du), uwordb_size);
143991	data += uwordb_size;
143992
143993	db = curcie->cie_version;
143994	WRITE_UNALIGNED(dbg, (void *) data, (const void *) &db,
143995			sizeof(db), sizeof(Dwarf_Ubyte));
143996	data += sizeof(Dwarf_Ubyte);
143997	strcpy((char *) data, curcie->cie_aug);
143998	data += strlen(curcie->cie_aug) + 1;
143999	memcpy((void *) data, (const void *) code_al, c_bytes);
144000	data += c_bytes;
144001	memcpy((void *) data, (const void *) data_al, d_bytes);
144002	data += d_bytes;
144003	db = curcie->cie_ret_reg;
144004	WRITE_UNALIGNED(dbg, (void *) data, (const void *) &db,
144005			sizeof(db), sizeof(Dwarf_Ubyte));
144006	data += sizeof(Dwarf_Ubyte);
144007
144008	if (strcmp(augmentation, DW_CIE_AUGMENTER_STRING_V0) == 0) {
144009	    memcpy((void *) data, (const void *) augmented_al, a_bytes);
144010	    data += a_bytes;
144011	}
144012	memcpy((void *) data, (const void *) curcie->cie_inst,
144013	       curcie->cie_inst_bytes);
144014	data += curcie->cie_inst_bytes;
144015	for (i = 0; i < pad; i++) {
144016	    *data = DW_CFA_nop;
144017	    data++;
144018	}
144019	curcie = curcie->cie_next;
144020    }
144021    /* calculate current offset */
144022    cur_off = cie_offs[cie_no - 2] + cie_length + uwordb_size
144023	+ extension_size;
144024
144025    /* write out fde's */
144026    curfde = dbg->de_frame_fdes;
144027    while (curfde) {
144028	Dwarf_P_Frame_Pgm curinst;
144029	long fde_length;
144030	int pad;
144031	Dwarf_P_Cie cie_ptr;
144032	Dwarf_Word cie_index, index;
144033	int oet_length, afl_length, res;
144034	int v0_augmentation = 0;
144035
144036#if 0
144037	unsigned char *fde_start_point;
144038#endif
144039
144040	char afl_buff[ENCODE_SPACE_NEEDED];
144041
144042	/* Find the CIE associated with this fde. */
144043	cie_ptr = dbg->de_frame_cies;
144044	cie_index = curfde->fde_cie;
144045	index = 1;		/* The cie_index of the first cie is 1,
144046				   not 0. */
144047	while (cie_ptr && index < cie_index) {
144048	    cie_ptr = cie_ptr->cie_next;
144049	    index++;
144050	}
144051	if (cie_ptr == NULL) {
144052	    DWARF_P_DBG_ERROR(dbg, DW_DLE_CIE_NULL, -1);
144053	}
144054
144055	if (strcmp(cie_ptr->cie_aug, DW_CIE_AUGMENTER_STRING_V0) == 0) {
144056	    v0_augmentation = 1;
144057	    oet_length = sizeof(Dwarf_sfixed);
144058	    /* encode the length of augmented fields. */
144059	    res = _dwarf_pro_encode_leb128_nm(oet_length,
144060					      &afl_length, afl_buff,
144061					      sizeof(afl_buff));
144062	    if (res != DW_DLV_OK) {
144063		DWARF_P_DBG_ERROR(dbg, DW_DLE_CIE_OFFS_ALLOC, -1);
144064	    }
144065
144066	    fde_length = curfde->fde_n_bytes + uwordb_size +	/* cie
144067								   pointer
144068								 */
144069		upointer_size +	/* initial loc */
144070		upointer_size +	/* address range */
144071		afl_length +	/* augmented field length */
144072		oet_length;	/* exception_table offset */
144073	} else {
144074	    fde_length = curfde->fde_n_bytes + uwordb_size +	/* cie
144075								   pointer
144076								 */
144077		upointer_size +	/* initial loc */
144078		upointer_size;	/* address range */
144079	}
144080
144081	/* using fde offset, generate DW_AT_MIPS_fde attribute for the
144082	   die corresponding to this fde */
144083	if (_dwarf_pro_add_AT_fde(dbg, curfde->fde_die, cur_off, error)
144084	    < 0)
144085	    return -1;
144086
144087	/* store relocation for cie pointer */
144088	res = dbg->de_reloc_name(dbg, DEBUG_FRAME, cur_off + uwordb_size,	/* r_offset
144089										 */
144090				 dbg->de_sect_name_idx[DEBUG_FRAME],
144091				 dwarf_drt_data_reloc, uwordb_size);
144092	if (res != DW_DLV_OK) {
144093	    DWARF_P_DBG_ERROR(dbg, DW_DLE_CHUNK_ALLOC, -1);
144094	}
144095
144096	/* store relocation information for initial location */
144097	res = dbg->de_reloc_name(dbg, DEBUG_FRAME, cur_off + uwordb_size + upointer_size,	/* r_offset
144098												 */
144099				 curfde->fde_r_symidx,
144100				 dwarf_drt_data_reloc, upointer_size);
144101	if (res != DW_DLV_OK) {
144102	    DWARF_P_DBG_ERROR(dbg, DW_DLE_CHUNK_ALLOC, -1);
144103	}
144104	/* Store the relocation information for the
144105	   offset_into_exception_info field, if the offset is valid (0
144106	   is a valid offset). */
144107	if (v0_augmentation &&
144108	    curfde->fde_offset_into_exception_tables >= 0) {
144109
144110	    res = dbg->de_reloc_name(dbg, DEBUG_FRAME,
144111				     /* r_offset, where in cie this
144112				        field starts */
144113				     cur_off + 2 * uwordb_size +
144114				     2 * upointer_size + afl_length,
144115				     curfde->fde_exception_table_symbol,
144116				     dwarf_drt_segment_rel,
144117				     sizeof(Dwarf_sfixed));
144118	    if (res != DW_DLV_OK) {
144119		DWARF_P_DBG_ERROR(dbg, DW_DLE_CHUNK_ALLOC, -1);
144120	    }
144121	}
144122
144123	/* adjust for padding */
144124	pad = (int) PADDING(fde_length, upointer_size);
144125	fde_length += pad;
144126
144127
144128	/* write out fde */
144129	GET_CHUNK(dbg, elfsectno, data, fde_length + uwordb_size +
144130		  extension_size, error);
144131#if 0
144132	fde_start_point = data;
144133#endif
144134	du = fde_length;
144135	{
144136	    if (extension_size) {
144137		Dwarf_Word x = DISTINGUISHED_VALUE;
144138
144139		WRITE_UNALIGNED(dbg, (void *) data,
144140				(const void *) &x,
144141				sizeof(x), extension_size);
144142		data += extension_size;
144143	    }
144144	    /* length */
144145	    WRITE_UNALIGNED(dbg, (void *) data,
144146			    (const void *) &du,
144147			    sizeof(du), uwordb_size);
144148	    data += uwordb_size;
144149
144150	    /* offset to cie */
144151	    du = cie_offs[curfde->fde_cie - 1];
144152	    WRITE_UNALIGNED(dbg, (void *) data,
144153			    (const void *) &du,
144154			    sizeof(du), uwordb_size);
144155	    data += uwordb_size;
144156
144157	    du = curfde->fde_initloc;
144158	    WRITE_UNALIGNED(dbg, (void *) data,
144159			    (const void *) &du,
144160			    sizeof(du), upointer_size);
144161	    data += upointer_size;
144162
144163	    if (dbg->de_reloc_pair &&
144164		curfde->fde_end_symbol != 0 &&
144165		curfde->fde_addr_range == 0) {
144166		/* symbolic reloc, need reloc for length What if we
144167		   really know the length? If so, should use the other
144168		   part of 'if'. */
144169		Dwarf_Unsigned val;
144170
144171		res = dbg->de_reloc_pair(dbg,
144172					 /* DEBUG_ARANGES, */
144173					 DEBUG_FRAME, cur_off + 2 * uwordb_size + upointer_size,	/* r_offset
144174													 */
144175					 curfde->fde_r_symidx,
144176					 curfde->fde_end_symbol,
144177					 dwarf_drt_first_of_length_pair,
144178					 upointer_size);
144179		if (res != DW_DLV_OK) {
144180		    {
144181			_dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
144182			return (0);
144183		    }
144184		}
144185
144186		/* arrange pre-calc so assem text can do .word end -
144187		   begin + val (gets val from stream) */
144188		val = curfde->fde_end_symbol_offset -
144189		    curfde->fde_initloc;
144190		WRITE_UNALIGNED(dbg, data,
144191				(const void *) &val,
144192				sizeof(val), upointer_size);
144193		data += upointer_size;
144194	    } else {
144195
144196		du = curfde->fde_addr_range;
144197		WRITE_UNALIGNED(dbg, (void *) data,
144198				(const void *) &du,
144199				sizeof(du), upointer_size);
144200		data += upointer_size;
144201	    }
144202	}
144203
144204	if (v0_augmentation) {
144205	    /* write the encoded augmented field length. */
144206	    memcpy((void *) data, (const void *) afl_buff, afl_length);
144207	    data += afl_length;
144208	    /* write the offset_into_exception_tables field. */
144209	    dsw =
144210		(Dwarf_sfixed) curfde->fde_offset_into_exception_tables;
144211	    WRITE_UNALIGNED(dbg, (void *) data, (const void *) &dsw,
144212			    sizeof(dsw), sizeof(Dwarf_sfixed));
144213	    data += sizeof(Dwarf_sfixed);
144214	}
144215
144216	curinst = curfde->fde_inst;
144217	while (curinst) {
144218	    db = curinst->dfp_opcode;
144219	    WRITE_UNALIGNED(dbg, (void *) data, (const void *) &db,
144220			    sizeof(db), sizeof(Dwarf_Ubyte));
144221	    data += sizeof(Dwarf_Ubyte);
144222#if 0
144223	    if (curinst->dfp_sym_index) {
144224		int res;
144225
144226		res = dbg->de_reloc_name(dbg,
144227					 DEBUG_FRAME,
144228					 (data - fde_start_point)
144229					 + cur_off + uwordb_size,	/* r_offset
144230									 */
144231					 curinst->dfp_sym_index,
144232					 dwarf_drt_data_reloc,
144233					 upointer_size);
144234		if (res != DW_DLV_OK) {
144235		    {
144236			_dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
144237			return (0);
144238		    }
144239		}
144240	    }
144241#endif
144242	    memcpy((void *) data,
144243		   (const void *) curinst->dfp_args,
144244		   curinst->dfp_nbytes);
144245	    data += curinst->dfp_nbytes;
144246	    curinst = curinst->dfp_next;
144247	}
144248	/* padding */
144249	for (i = 0; i < pad; i++) {
144250	    *data = DW_CFA_nop;
144251	    data++;
144252	}
144253	cur_off += fde_length + uwordb_size;
144254	curfde = curfde->fde_next;
144255    }
144256
144257
144258    return (int) dbg->de_n_debug_sect;
144259}
144260
144261
144262
144263/*---------------------------------------------------------------
144264	Generate debug_info and debug_abbrev sections
144265---------------------------------------------------------------*/
144266static int
144267_dwarf_pro_generate_debuginfo(Dwarf_P_Debug dbg, Dwarf_Error * error)
144268{
144269    int elfsectno_of_debug_info;
144270    int abbrevsectno;
144271    unsigned char *data;
144272    int cu_header_size;
144273    Dwarf_P_Abbrev curabbrev, abbrev_head, abbrev_tail;
144274    Dwarf_P_Die curdie;
144275    Dwarf_P_Die first_child;
144276    Dwarf_Word dw;
144277    Dwarf_Unsigned du;
144278    Dwarf_Half dh;
144279    Dwarf_Ubyte db;
144280    Dwarf_Half version;		/* need 2 byte quantity */
144281    Dwarf_Unsigned die_off;	/* offset of die in debug_info */
144282    int n_abbrevs;
144283    int res;
144284
144285    Dwarf_Small *start_info_sec;
144286
144287    int uword_size = dbg->de_offset_size;
144288    int extension_size = dbg->de_64bit_extension ? 4 : 0;
144289
144290    abbrev_head = abbrev_tail = NULL;
144291    elfsectno_of_debug_info = dbg->de_elf_sects[DEBUG_INFO];
144292
144293    /* write cu header */
144294    cu_header_size = extension_size + uword_size +	/* length of
144295							   info section
144296							 */
144297	sizeof(Dwarf_Half) +	/* version stamp */
144298	uword_size +		/* offset into abbrev table */
144299	sizeof(Dwarf_Ubyte);	/* size of target address */
144300    GET_CHUNK(dbg, elfsectno_of_debug_info, data, cu_header_size,
144301	      error);
144302    start_info_sec = data;
144303    if (extension_size) {
144304	du = DISTINGUISHED_VALUE;
144305	WRITE_UNALIGNED(dbg, (void *) data,
144306			(const void *) &du, sizeof(du), extension_size);
144307	data += extension_size;
144308    }
144309    du = 0;			/* length of debug_info, not counting
144310				   this field itself (unknown at this
144311				   point). */
144312    WRITE_UNALIGNED(dbg, (void *) data,
144313		    (const void *) &du, sizeof(du), uword_size);
144314    data += uword_size;
144315
144316    version = CURRENT_VERSION_STAMP;	/* assume this length will not
144317					   change */
144318    WRITE_UNALIGNED(dbg, (void *) data, (const void *) &version,
144319		    sizeof(version), sizeof(Dwarf_Half));
144320    data += sizeof(Dwarf_Half);
144321
144322    du = 0;			/* offset into abbrev table, not yet
144323				   known. */
144324    WRITE_UNALIGNED(dbg, (void *) data,
144325		    (const void *) &du, sizeof(du), uword_size);
144326    data += uword_size;
144327
144328
144329    db = dbg->de_pointer_size;
144330
144331    WRITE_UNALIGNED(dbg, (void *) data, (const void *) &db,
144332		    sizeof(db), 1);
144333
144334    /* We have filled the chunk we got with GET_CHUNK. At this point we
144335       no longer dare use "data" or "start_info_sec" as a pointer any
144336       longer except to refer to that first small chunk for the cu
144337       header. */
144338
144339    curdie = dbg->de_dies;
144340
144341    /* create AT_macro_info if appropriate */
144342    if (dbg->de_first_macinfo != NULL) {
144343	if (_dwarf_pro_add_AT_macro_info(dbg, curdie, 0, error) < 0)
144344	    return -1;
144345    }
144346
144347    /* create AT_stmt_list attribute if necessary */
144348    if (dwarf_need_debug_line_section(dbg) == TRUE)
144349	if (_dwarf_pro_add_AT_stmt_list(dbg, curdie, error) < 0)
144350	    return -1;
144351
144352    die_off = cu_header_size;
144353
144354    /*
144355       Relocation for abbrev offset in cu header store relocation
144356       record in linked list */
144357    res = dbg->de_reloc_name(dbg, DEBUG_INFO, extension_size + uword_size + sizeof(Dwarf_Half),	/* r_offset
144358												 */
144359			     dbg->de_sect_name_idx[DEBUG_ABBREV],
144360			     dwarf_drt_data_reloc, uword_size);
144361    if (res != DW_DLV_OK) {
144362	DWARF_P_DBG_ERROR(dbg, DW_DLE_REL_ALLOC, -1);
144363    }
144364
144365    /* pass 0: only top level dies, add at_sibling attribute to those
144366       dies with children */
144367    first_child = curdie->di_child;
144368    while (first_child && first_child->di_right) {
144369	if (first_child->di_child)
144370	    dwarf_add_AT_reference(dbg,
144371				   first_child,
144372				   DW_AT_sibling,
144373				   first_child->di_right, error);
144374	first_child = first_child->di_right;
144375    }
144376
144377    /* pass 1: create abbrev info, get die offsets, calc relocations */
144378    while (curdie != NULL) {
144379	int nbytes;
144380	Dwarf_P_Attribute curattr;
144381	char *space;
144382	int res;
144383	char buff1[ENCODE_SPACE_NEEDED];
144384
144385	curdie->di_offset = die_off;
144386	curabbrev = _dwarf_pro_getabbrev(curdie, abbrev_head);
144387	if (curabbrev == NULL) {
144388	    DWARF_P_DBG_ERROR(dbg, DW_DLE_ABBREV_ALLOC, -1);
144389	}
144390	if (abbrev_head == NULL) {
144391	    n_abbrevs = 1;
144392	    curabbrev->abb_idx = n_abbrevs;
144393	    abbrev_tail = abbrev_head = curabbrev;
144394	} else {
144395	    /* check if its a new abbreviation, if yes, add to tail */
144396	    if (curabbrev->abb_idx == 0) {
144397		n_abbrevs++;
144398		curabbrev->abb_idx = n_abbrevs;
144399		abbrev_tail->abb_next = curabbrev;
144400		abbrev_tail = curabbrev;
144401	    }
144402	}
144403	res = _dwarf_pro_encode_leb128_nm(curabbrev->abb_idx,
144404					  &nbytes,
144405					  buff1, sizeof(buff1));
144406	if (res != DW_DLV_OK) {
144407	    DWARF_P_DBG_ERROR(dbg, DW_DLE_ABBREV_ALLOC, -1);
144408	}
144409	space = _dwarf_p_get_alloc(dbg, nbytes);
144410	if (space == NULL) {
144411	    DWARF_P_DBG_ERROR(dbg, DW_DLE_ABBREV_ALLOC, -1);
144412	}
144413	memcpy(space, buff1, nbytes);
144414	curdie->di_abbrev = space;
144415	curdie->di_abbrev_nbytes = nbytes;
144416	die_off += nbytes;
144417	curattr = curdie->di_attrs;
144418	while (curattr) {
144419	    if (curattr->ar_rel_type != R_MIPS_NONE) {
144420		switch (curattr->ar_attribute) {
144421		case DW_AT_stmt_list:
144422		    curattr->ar_rel_symidx =
144423			dbg->de_sect_name_idx[DEBUG_LINE];
144424		    break;
144425		case DW_AT_MIPS_fde:
144426		    curattr->ar_rel_symidx =
144427			dbg->de_sect_name_idx[DEBUG_FRAME];
144428		    break;
144429		case DW_AT_macro_info:
144430		    curattr->ar_rel_symidx =
144431			dbg->de_sect_name_idx[DEBUG_MACINFO];
144432		    break;
144433		default:
144434		    break;
144435		}
144436		res = dbg->de_reloc_name(dbg, DEBUG_INFO, die_off + curattr->ar_rel_offset,	/* r_offset
144437												 */
144438					 curattr->ar_rel_symidx,
144439					 dwarf_drt_data_reloc,
144440					 curattr->ar_reloc_len);
144441
144442		if (res != DW_DLV_OK) {
144443		    DWARF_P_DBG_ERROR(dbg, DW_DLE_REL_ALLOC, -1);
144444		}
144445
144446	    }
144447	    die_off += curattr->ar_nbytes;
144448	    curattr = curattr->ar_next;
144449	}
144450	/* depth first search */
144451	if (curdie->di_child)
144452	    curdie = curdie->di_child;
144453	else {
144454	    while (curdie != NULL && curdie->di_right == NULL) {
144455		curdie = curdie->di_parent;
144456		die_off++;	/* since we are writing a null die at
144457				   the end of each sibling chain */
144458	    }
144459	    if (curdie != NULL)
144460		curdie = curdie->di_right;
144461	}
144462    }
144463
144464    /* Pass 2: Write out the die information Here 'data' is a
144465       temporary, one block for each GET_CHUNK.  'data' is overused. */
144466    curdie = dbg->de_dies;
144467    while (curdie != NULL) {
144468	Dwarf_P_Attribute curattr;
144469
144470	/* index to abbreviation table */
144471	GET_CHUNK(dbg, elfsectno_of_debug_info,
144472		  data, curdie->di_abbrev_nbytes, error);
144473
144474	memcpy((void *) data,
144475	       (const void *) curdie->di_abbrev,
144476	       curdie->di_abbrev_nbytes);
144477
144478	/* Attribute values - need to fill in all form attributes */
144479	curattr = curdie->di_attrs;
144480	while (curattr) {
144481	    GET_CHUNK(dbg, elfsectno_of_debug_info, data,
144482		      (unsigned long) curattr->ar_nbytes, error);
144483	    switch (curattr->ar_attribute_form) {
144484	    case DW_FORM_ref1:
144485		{
144486		    if (curattr->ar_ref_die->di_offset >
144487			(unsigned) 0xff) {
144488			DWARF_P_DBG_ERROR(dbg, DW_DLE_OFFSET_UFLW, -1);
144489		    }
144490		    db = curattr->ar_ref_die->di_offset;
144491		    WRITE_UNALIGNED(dbg, (void *) data,
144492				    (const void *) &db,
144493				    sizeof(db), sizeof(Dwarf_Ubyte));
144494		    break;
144495		}
144496	    case DW_FORM_ref2:
144497		{
144498		    if (curattr->ar_ref_die->di_offset >
144499			(unsigned) 0xffff) {
144500			DWARF_P_DBG_ERROR(dbg, DW_DLE_OFFSET_UFLW, -1);
144501		    }
144502		    dh = curattr->ar_ref_die->di_offset;
144503		    WRITE_UNALIGNED(dbg, (void *) data,
144504				    (const void *) &dh,
144505				    sizeof(dh), sizeof(Dwarf_Half));
144506		    break;
144507		}
144508	    case DW_FORM_ref_addr:
144509		{
144510		    du = curattr->ar_ref_die->di_offset;
144511		    {
144512			/* ref to offset of die */
144513			WRITE_UNALIGNED(dbg, (void *) data,
144514					(const void *) &du,
144515					sizeof(du), uword_size);
144516		    }
144517		    break;
144518
144519		}
144520	    case DW_FORM_ref4:
144521		{
144522		    if (curattr->ar_ref_die->di_offset >
144523			(unsigned) 0xffffffff) {
144524			DWARF_P_DBG_ERROR(dbg, DW_DLE_OFFSET_UFLW, -1);
144525		    }
144526		    dw = (Dwarf_Word) curattr->ar_ref_die->di_offset;
144527		    WRITE_UNALIGNED(dbg, (void *) data,
144528				    (const void *) &dw,
144529				    sizeof(dw), sizeof(Dwarf_ufixed));
144530		    break;
144531		}
144532	    case DW_FORM_ref8:
144533		du = curattr->ar_ref_die->di_offset;
144534		WRITE_UNALIGNED(dbg, (void *) data,
144535				(const void *) &du,
144536				sizeof(du), sizeof(Dwarf_Unsigned));
144537		break;
144538	    case DW_FORM_ref_udata:
144539		{		/* unsigned leb128 offset */
144540
144541		    int nbytes;
144542		    char buff1[ENCODE_SPACE_NEEDED];
144543
144544		    res =
144545			_dwarf_pro_encode_leb128_nm(curattr->
144546						    ar_ref_die->
144547						    di_offset, &nbytes,
144548						    buff1,
144549						    sizeof(buff1));
144550		    if (res != DW_DLV_OK) {
144551			DWARF_P_DBG_ERROR(dbg, DW_DLE_ABBREV_ALLOC, -1);
144552		    }
144553
144554		    memcpy(data, buff1, nbytes);
144555		    break;
144556		}
144557	    default:
144558		memcpy((void *) data,
144559		       (const void *) curattr->ar_data,
144560		       curattr->ar_nbytes);
144561		break;
144562	    }
144563	    curattr = curattr->ar_next;
144564	}
144565
144566	/* depth first search */
144567	if (curdie->di_child)
144568	    curdie = curdie->di_child;
144569	else {
144570	    while (curdie != NULL && curdie->di_right == NULL) {
144571		GET_CHUNK(dbg, elfsectno_of_debug_info, data, 1, error);
144572		*data = '\0';
144573		curdie = curdie->di_parent;
144574	    }
144575	    if (curdie != NULL)
144576		curdie = curdie->di_right;
144577	}
144578    }
144579
144580    /* Write out debug_info size */
144581    /* Dont include length field or extension bytes */
144582    du = die_off - uword_size - extension_size;
144583    WRITE_UNALIGNED(dbg, (void *) (start_info_sec + extension_size),
144584		    (const void *) &du, sizeof(du), uword_size);
144585
144586
144587    data = 0;			/* Emphasise not usable now */
144588
144589    /* Write out debug_abbrev section */
144590    abbrevsectno = dbg->de_elf_sects[DEBUG_ABBREV];
144591
144592    curabbrev = abbrev_head;
144593    while (curabbrev) {
144594	char *val;
144595	int nbytes;
144596	int idx;
144597	int res;
144598	char buff1[ENCODE_SPACE_NEEDED];
144599
144600	res = _dwarf_pro_encode_leb128_nm(curabbrev->abb_idx, &nbytes,
144601					  buff1, sizeof(buff1));
144602	if (res != DW_DLV_OK) {
144603	    DWARF_P_DBG_ERROR(dbg, DW_DLE_ABBREV_ALLOC, -1);
144604	}
144605
144606	GET_CHUNK(dbg, abbrevsectno, data, nbytes, error);
144607	val = buff1;
144608	memcpy((void *) data, (const void *) val, nbytes);
144609	res = _dwarf_pro_encode_leb128_nm(curabbrev->abb_tag, &nbytes,
144610					  buff1, sizeof(buff1));
144611	if (res != DW_DLV_OK) {
144612	    DWARF_P_DBG_ERROR(dbg, DW_DLE_ABBREV_ALLOC, -1);
144613	}
144614	val = buff1;
144615	GET_CHUNK(dbg, abbrevsectno, data, nbytes, error);
144616	memcpy((void *) data, (const void *) val, nbytes);
144617	db = curabbrev->abb_children;
144618	GET_CHUNK(dbg, abbrevsectno, data, sizeof(Dwarf_Ubyte), error);
144619	WRITE_UNALIGNED(dbg, (void *) data, (const void *) &db,
144620			sizeof(db), sizeof(Dwarf_Ubyte));
144621
144622	/* add attributes and forms */
144623	for (idx = 0; idx < curabbrev->abb_n_attr; idx++) {
144624	    res = _dwarf_pro_encode_leb128_nm(curabbrev->abb_attrs[idx],
144625					      &nbytes,
144626					      buff1, sizeof(buff1));
144627	    if (res != DW_DLV_OK) {
144628		DWARF_P_DBG_ERROR(dbg, DW_DLE_ABBREV_ALLOC, -1);
144629	    }
144630	    val = buff1;
144631	    GET_CHUNK(dbg, abbrevsectno, data, nbytes, error);
144632	    memcpy((void *) data, (const void *) val, nbytes);
144633	    res = _dwarf_pro_encode_leb128_nm(curabbrev->abb_forms[idx],
144634					      &nbytes,
144635					      buff1, sizeof(buff1));
144636	    if (res != DW_DLV_OK) {
144637		DWARF_P_DBG_ERROR(dbg, DW_DLE_ABBREV_ALLOC, -1);
144638	    }
144639	    val = buff1;
144640	    GET_CHUNK(dbg, abbrevsectno, data, nbytes, error);
144641	    memcpy((void *) data, (const void *) val, nbytes);
144642	}
144643	GET_CHUNK(dbg, abbrevsectno, data, 2, error);	/* two zeros,
144644			for last
144645			entry, see dwarf2 sec 7.5.3 */
144646	*data = 0;
144647	data++;
144648	*data = 0;
144649
144650	curabbrev = curabbrev->abb_next;
144651    }
144652
144653    GET_CHUNK(dbg,abbrevsectno,data,1,error);       /* one zero,
144654                        for end of cu, see dwarf2 sec 7.5.3 */
144655    *data = 0;
144656
144657
144658    return (int) dbg->de_n_debug_sect;
144659}
144660
144661
144662/*---------------------------------------------------------------------
144663	Get a buffer of section data.
144664	section_idx is the elf-section number that this data applies to.
144665	length shows length of returned data
144666----------------------------------------------------------------------*/
144667 /*ARGSUSED*/			/* pretend all args used */
144668    Dwarf_Ptr
144669dwarf_get_section_bytes(Dwarf_P_Debug dbg,
144670			Dwarf_Signed dwarf_section,
144671			Dwarf_Signed * section_idx,
144672			Dwarf_Unsigned * length, Dwarf_Error * error)
144673{
144674    Dwarf_Ptr buf;
144675
144676    if (dbg->de_version_magic_number != PRO_VERSION_MAGIC) {
144677	DWARF_P_DBG_ERROR(dbg, DW_DLE_IA, NULL);
144678    }
144679
144680    if (dbg->de_debug_sects == 0) {
144681	/* no more data !! */
144682	return NULL;
144683    }
144684    if (dbg->de_debug_sects->ds_elf_sect_no == MAGIC_SECT_NO) {
144685	/* no data ever entered !! */
144686	return NULL;
144687    }
144688    *section_idx = dbg->de_debug_sects->ds_elf_sect_no;
144689    *length = dbg->de_debug_sects->ds_nbytes;
144690
144691    buf = (Dwarf_Ptr *) dbg->de_debug_sects->ds_data;
144692
144693    dbg->de_debug_sects = dbg->de_debug_sects->ds_next;
144694
144695    /* We may want to call the section stuff more than once: see
144696       dwarf_reset_section_bytes() do not do: dbg->de_n_debug_sect--; */
144697
144698    return buf;
144699}
144700
144701/*
144702	No errors possible.
144703*/
144704void
144705dwarf_reset_section_bytes(Dwarf_P_Debug dbg)
144706{
144707    dbg->de_debug_sects = dbg->de_first_debug_sect;
144708    /* No need to reset; commented out decrement. dbg->de_n_debug_sect
144709       = ???; */
144710    dbg->de_reloc_next_to_return = 0;
144711}
144712
144713/*
144714    Storage handler. Gets either a new chunk of memory, or
144715    a pointer in existing memory, from the linked list attached
144716    to dbg at de_debug_sects, depending on size of nbytes
144717
144718    Assume dbg not null, checked in top level routine
144719
144720    Returns a pointer to the allocated buffer space for the
144721    lib to fill in,  predincrements next-to-use count so the
144722    space requested is already counted 'used'
144723    when this returns (ie, reserved).
144724
144725*/
144726Dwarf_Small *
144727_dwarf_pro_buffer(Dwarf_P_Debug dbg,
144728		  int elfsectno, unsigned long nbytes)
144729{
144730    Dwarf_P_Section_Data cursect;
144731
144732
144733    cursect = dbg->de_current_active_section;
144734    /* By using MAGIC_SECT_NO we allow the following MAGIC_SECT_NO must
144735       not match any legit section number. test to have just two
144736       clauses (no NULL pointer test) See dwarf_producer_init(). */
144737    if ((cursect->ds_elf_sect_no != elfsectno) ||
144738	((cursect->ds_nbytes + nbytes) > cursect->ds_orig_alloc)
144739	) {
144740
144741	/* Either the elf section has changed or there is not enough
144742	   space in the current section.
144743
144744	   Create a new Dwarf_P_Section_Data_s for the chunk. and have
144745	   space 'on the end' for the buffer itself so we just do one
144746	   malloc (not two).
144747
144748	 */
144749	unsigned long space = nbytes;
144750
144751	if (nbytes < CHUNK_SIZE)
144752	    space = CHUNK_SIZE;
144753
144754	cursect = (Dwarf_P_Section_Data)
144755	    _dwarf_p_get_alloc(dbg,
144756			       sizeof(struct Dwarf_P_Section_Data_s)
144757			       + space);
144758
144759
144760	if (cursect == NULL)
144761	    return (NULL);
144762
144763	/* _dwarf_p_get_alloc zeroes the space... */
144764
144765	cursect->ds_data = (char *) cursect +
144766	    sizeof(struct Dwarf_P_Section_Data_s);
144767	cursect->ds_orig_alloc = space;
144768	cursect->ds_elf_sect_no = elfsectno;
144769	cursect->ds_nbytes = nbytes;	/* reserve this number of bytes
144770					   of space for caller to fill
144771					   in */
144772
144773	/* Now link on the end of the list, and mark this one as the
144774	   current one */
144775
144776	if (dbg->de_debug_sects->ds_elf_sect_no == MAGIC_SECT_NO) {
144777	    /* the only entry is the special one for 'no entry' so
144778	       delete that phony one while adding this initial real
144779	       one. */
144780	    dbg->de_debug_sects = cursect;
144781	    dbg->de_current_active_section = cursect;
144782	    dbg->de_first_debug_sect = cursect;
144783	} else {
144784	    dbg->de_current_active_section->ds_next = cursect;
144785	    dbg->de_current_active_section = cursect;
144786	}
144787	dbg->de_n_debug_sect++;
144788
144789	return ((Dwarf_Small *) cursect->ds_data);
144790    }
144791
144792    /* There is enough space in the current buffer */
144793    {
144794	Dwarf_Small *space_for_caller = (Dwarf_Small *)
144795	    (cursect->ds_data + cursect->ds_nbytes);
144796
144797	cursect->ds_nbytes += nbytes;
144798	return space_for_caller;
144799    }
144800}
144801
144802
144803/*------------------------------------------------------------
144804	Given address advance and line advance, it gives
144805	either special opcode, or a number < 0
144806------------------------------------------------------------*/
144807static int
144808_dwarf_pro_get_opc(Dwarf_Unsigned addr_adv, int line_adv)
144809{
144810    int opc;
144811
144812    addr_adv = addr_adv / MIN_INST_LENGTH;
144813    if (line_adv == 0 && addr_adv == 0)
144814	return OPC_INCS_ZERO;
144815    if (line_adv >= LINE_BASE && line_adv < LINE_BASE + LINE_RANGE) {
144816	opc =
144817	    (line_adv - LINE_BASE) + (addr_adv * LINE_RANGE) +
144818	    OPCODE_BASE;
144819	if (opc > 255)
144820	    return OPC_OUT_OF_RANGE;
144821	return opc;
144822    } else
144823	return LINE_OUT_OF_RANGE;
144824}
144825
144826/*-----------------------------------------------------------------------
144827	Handles abbreviations. It takes a die, searches through
144828	current list of abbreviations for matching one. If it
144829	finds one, it returns a pointer to it, and if it doesnt,
144830	it returns a new one. Upto the user of this function to
144831	link it up to the abbreviation head. If its a new one,
144832	abb_idx has 0.
144833-----------------------------------------------------------------------*/
144834static Dwarf_P_Abbrev
144835_dwarf_pro_getabbrev(Dwarf_P_Die die, Dwarf_P_Abbrev head)
144836{
144837    Dwarf_P_Abbrev curabbrev;
144838    Dwarf_P_Attribute curattr;
144839    int res1;
144840    int nattrs;
144841    int match;
144842    Dwarf_ufixed *forms = 0;
144843    Dwarf_ufixed *attrs = 0;
144844
144845    curabbrev = head;
144846    while (curabbrev) {
144847	if ((die->di_tag == curabbrev->abb_tag) &&
144848	    ((die->di_child != NULL &&
144849	      curabbrev->abb_children == DW_CHILDREN_yes) ||
144850	     (die->di_child == NULL &&
144851	      curabbrev->abb_children == DW_CHILDREN_no)) &&
144852	    (die->di_n_attr == curabbrev->abb_n_attr)) {
144853
144854	    /* There is a chance of a match. */
144855	    curattr = die->di_attrs;
144856	    match = 1;		/* Assume match found. */
144857	    while (match && curattr) {
144858		res1 = _dwarf_pro_match_attr(curattr,
144859					     curabbrev,
144860					     (int) curabbrev->
144861					     abb_n_attr);
144862		if (res1 == 0)
144863		    match = 0;
144864		curattr = curattr->ar_next;
144865	    }
144866	    if (match == 1)
144867		return curabbrev;
144868	}
144869	curabbrev = curabbrev->abb_next;
144870    }
144871
144872    /* no match, create new abbreviation */
144873    if (die->di_n_attr != 0) {
144874	forms = (Dwarf_ufixed *)
144875	    _dwarf_p_get_alloc(NULL,
144876			       sizeof(Dwarf_ufixed) * die->di_n_attr);
144877	if (forms == NULL)
144878	    return NULL;
144879	attrs = (Dwarf_ufixed *)
144880	    _dwarf_p_get_alloc(NULL,
144881			       sizeof(Dwarf_ufixed) * die->di_n_attr);
144882	if (attrs == NULL)
144883	    return NULL;
144884    }
144885    nattrs = 0;
144886    curattr = die->di_attrs;
144887    while (curattr) {
144888	attrs[nattrs] = curattr->ar_attribute;
144889	forms[nattrs] = curattr->ar_attribute_form;
144890	nattrs++;
144891	curattr = curattr->ar_next;
144892    }
144893
144894    curabbrev = (Dwarf_P_Abbrev)
144895	_dwarf_p_get_alloc(NULL, sizeof(struct Dwarf_P_Abbrev_s));
144896    if (curabbrev == NULL)
144897	return NULL;
144898
144899    if (die->di_child == NULL)
144900	curabbrev->abb_children = DW_CHILDREN_no;
144901    else
144902	curabbrev->abb_children = DW_CHILDREN_yes;
144903    curabbrev->abb_tag = die->di_tag;
144904    curabbrev->abb_attrs = attrs;
144905    curabbrev->abb_forms = forms;
144906    curabbrev->abb_n_attr = die->di_n_attr;
144907    curabbrev->abb_idx = 0;
144908    curabbrev->abb_next = NULL;
144909
144910    return curabbrev;
144911}
144912
144913/*------------------------------------------------------------------
144914	Tries to see if given attribute and form combination
144915	exists in the given abbreviation
144916-------------------------------------------------------------------*/
144917static int
144918_dwarf_pro_match_attr(Dwarf_P_Attribute attr,
144919		      Dwarf_P_Abbrev abbrev, int no_attr)
144920{
144921    int i;
144922    int found = 0;
144923
144924    for (i = 0; i < no_attr; i++) {
144925	if (attr->ar_attribute == abbrev->abb_attrs[i] &&
144926	    attr->ar_attribute_form == abbrev->abb_forms[i]) {
144927	    found = 1;
144928	    break;
144929	}
144930    }
144931    return found;
144932}
144933���0707010001adb50000812400011e740000000a000000014020682700000d91000000660000000000000000000000000000001700000000libdwarf/pro_section.h����/*
144934
144935  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
144936
144937  This program is free software; you can redistribute it and/or modify it
144938  under the terms of version 2.1 of the GNU Lesser General Public License
144939  as published by the Free Software Foundation.
144940
144941  This program is distributed in the hope that it would be useful, but
144942  WITHOUT ANY WARRANTY; without even the implied warranty of
144943  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
144944
144945  Further, this software is distributed without any warranty that it is
144946  free of the rightful claim of any third person regarding infringement
144947  or the like.  Any license provided herein, whether implied or
144948  otherwise, applies only to this software file.  Patent licenses, if
144949  any, provided herein do not apply to combinations of this program with
144950  other software, or any other product whatsoever.
144951
144952  You should have received a copy of the GNU Lesser General Public
144953  License along with this program; if not, write the Free Software
144954  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
144955  USA.
144956
144957  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
144958  Mountain View, CA 94043, or:
144959
144960  http://www.sgi.com
144961
144962  For further information regarding this notice, see:
144963
144964  http://oss.sgi.com/projects/GenInfo/NoticeExplan
144965
144966*/
144967
144968
144969
144970
144971
144972/* relocation section names */
144973extern char *_dwarf_rel_section_names[];
144974
144975/* section names */
144976extern char *_dwarf_sectnames[];
144977
144978/* struct to hold relocation entries. Its mantained as a linked
144979   list of relocation structs, and will then be written at as a
144980   whole into the relocation section. Whether its 32 bit or
144981   64 bit will be obtained from Dwarf_Debug pointer.
144982*/
144983
144984
144985
144986
144987
144988/*
144989	struct stores a chunk of data pertaining to a section
144990*/
144991struct Dwarf_P_Section_Data_s {
144992    int ds_elf_sect_no;		/* elf section number */
144993    char *ds_data;		/* data contained in section */
144994    unsigned long ds_nbytes;	/* bytes of data used so far */
144995    unsigned long ds_orig_alloc;	/* bytes allocated originally */
144996    Dwarf_P_Section_Data ds_next;	/* next on the list */
144997};
144998
144999/* Used to allow a dummy initial struct (which we
145000   drop before it gets used
145001   This must not match any legitimate 'section' number.
145002*/
145003#define MAGIC_SECT_NO -3
145004
145005/* Size of chunk of data allocated in one alloc
145006   Not clear if this is the best size.
145007   Used to be just 4096 for user data, the section data struct
145008   was a separate malloc.
145009*/
145010#define 	CHUNK_SIZE (4096 - sizeof (struct Dwarf_P_Section_Data_s))
145011
145012/*
145013	chunk alloc routine -
145014	if chunk->ds_data is nil, it will alloc CHUNK_SIZE bytes,
145015	and return pointer to the beginning. If chunk is not nil,
145016	it will see if there's enoungh space for nbytes in current
145017	chunk, if not, add new chunk to linked list, and return
145018	a char * pointer to it. Return null if unsuccessful.
145019*/
145020Dwarf_Small *_dwarf_pro_buffer(Dwarf_P_Debug dbg, int sectno,
145021			       unsigned long nbytes);
145022
145023#define GET_CHUNK(dbg,sectno,ptr,nbytes,error) \
145024	{ \
145025	    (ptr) = _dwarf_pro_buffer((dbg),(sectno),(nbytes)); \
145026	    if ((ptr) == NULL) { \
145027		DWARF_P_DBG_ERROR(dbg,DW_DLE_CHUNK_ALLOC,-1); \
145028	    } \
145029	}
145030
145031
145032
145033int
145034  _dwarf_transform_arange_to_disk(Dwarf_P_Debug dbg,
145035				  Dwarf_Error * error);
145036
145037/* These are for creating ELF section type codes.
145038*/
145039#if defined(linux) || defined(__BEOS__) || !defined(SHT_MIPS_DWARF)
145040/* Intel's SoftSdv accepts only this */
145041#define SECTION_TYPE            SHT_PROGBITS
145042#else
145043#define SECTION_TYPE            SHT_MIPS_DWARF
145044#endif
145045���0707010001adb60000812400011e740000000a000000014020682700001fdc000000660000000000000000000000000000001500000000libdwarf/pro_types.c��/*
145046
145047  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
145048
145049  This program is free software; you can redistribute it and/or modify it
145050  under the terms of version 2.1 of the GNU Lesser General Public License
145051  as published by the Free Software Foundation.
145052
145053  This program is distributed in the hope that it would be useful, but
145054  WITHOUT ANY WARRANTY; without even the implied warranty of
145055  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
145056
145057  Further, this software is distributed without any warranty that it is
145058  free of the rightful claim of any third person regarding infringement
145059  or the like.  Any license provided herein, whether implied or
145060  otherwise, applies only to this software file.  Patent licenses, if
145061  any, provided herein do not apply to combinations of this program with
145062  other software, or any other product whatsoever.
145063
145064  You should have received a copy of the GNU Lesser General Public
145065  License along with this program; if not, write the Free Software
145066  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
145067  USA.
145068
145069  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
145070  Mountain View, CA 94043, or:
145071
145072  http://www.sgi.com
145073
145074  For further information regarding this notice, see:
145075
145076  http://oss.sgi.com/projects/GenInfo/NoticeExplan
145077
145078*/
145079
145080
145081
145082#include "config.h"
145083#include "libdwarfdefs.h"
145084#include <stdio.h>
145085#include <string.h>
145086#ifdef HAVE_ELFACCESS_H
145087#include <elfaccess.h>
145088#endif
145089#include "pro_incl.h"
145090#include "pro_section.h"
145091
145092
145093/*
145094    This function adds another type name to the
145095    list of type names for the given Dwarf_P_Debug.
145096    It returns 0 on error, and 1 otherwise.
145097*/
145098Dwarf_Unsigned
145099dwarf_add_typename(Dwarf_P_Debug dbg,
145100		   Dwarf_P_Die die,
145101		   char *type_name, Dwarf_Error * error)
145102{
145103    return
145104	_dwarf_add_simple_name_entry(dbg, die, type_name,
145105				     dwarf_snk_typename, error);
145106}
145107
145108/*
145109  The following is the generic 'add a simple name entry'
145110  for any of the simple name sections.
145111
145112  See enum dwarf_sn_kind in pro_opaque.h
145113
145114*/
145115Dwarf_Unsigned
145116_dwarf_add_simple_name_entry(Dwarf_P_Debug dbg,
145117			     Dwarf_P_Die die,
145118			     char *entry_name,
145119			     enum dwarf_sn_kind entrykind,
145120			     Dwarf_Error * error)
145121{
145122    Dwarf_P_Simple_nameentry nameentry;
145123    Dwarf_P_Simple_name_header hdr;
145124    char *name;
145125    int uword_size;
145126
145127    if (dbg == NULL) {
145128	_dwarf_p_error(NULL, error, DW_DLE_DBG_NULL);
145129	return (0);
145130    }
145131
145132    if (die == NULL) {
145133	_dwarf_p_error(NULL, error, DW_DLE_DIE_NULL);
145134	return (0);
145135    }
145136
145137
145138    nameentry = (Dwarf_P_Simple_nameentry)
145139	_dwarf_p_get_alloc(dbg,
145140			   sizeof(struct Dwarf_P_Simple_nameentry_s));
145141    if (nameentry == NULL) {
145142	_dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
145143	return (0);
145144    }
145145
145146    name = _dwarf_p_get_alloc(dbg, strlen(entry_name) + 1);
145147    if (name == NULL) {
145148	_dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
145149	return (0);
145150    }
145151    strcpy(name, entry_name);
145152
145153    nameentry->sne_die = die;
145154    nameentry->sne_name = name;
145155    nameentry->sne_name_len = strlen(name);
145156    uword_size = dbg->de_offset_size;
145157
145158    hdr = &dbg->de_simple_name_headers[entrykind];
145159    if (hdr->sn_head == NULL)
145160	hdr->sn_head = hdr->sn_tail = nameentry;
145161    else {
145162	hdr->sn_tail->sne_next = nameentry;
145163	hdr->sn_tail = nameentry;
145164    }
145165    hdr->sn_count++;
145166    hdr->sn_net_len += uword_size + nameentry->sne_name_len + 1;
145167
145168    return (1);
145169}
145170
145171
145172
145173/*
145174     _dwarf_transform_simplename_to_disk writes
145175     ".rel.debug_pubnames",
145176     ".rel.debug_funcnames",       sgi extension
145177     ".rel.debug_typenames",       sgi extension
145178     ".rel.debug_varnames",        sgi extension
145179     ".rel.debug_weaknames",       sgi extension
145180     to disk.
145181	section_index indexes one of those sections.
145182	entrykind is one of those 'kind's.
145183
145184*/
145185int
145186_dwarf_transform_simplename_to_disk(Dwarf_P_Debug dbg,
145187		enum dwarf_sn_kind entrykind,
145188		int section_index,	/* in de_elf_sects etc */
145189		Dwarf_Error * error)
145190{
145191
145192
145193    /* Used to fill in 0. */
145194    const Dwarf_Signed big_zero = 0;
145195
145196    /* Used to scan the section data buffers. */
145197    Dwarf_P_Section_Data debug_sect;
145198
145199    Dwarf_Signed debug_info_size;
145200
145201    Dwarf_P_Simple_nameentry nameentry_original;
145202    Dwarf_P_Simple_nameentry nameentry;
145203    Dwarf_Small *stream_bytes;
145204    Dwarf_Small *cur_stream_bytes_ptr;
145205    Dwarf_Unsigned stream_bytes_count;
145206    Dwarf_Unsigned adjusted_length;	/* count excluding length
145207					   field */
145208
145209
145210    int uword_size = dbg->de_offset_size;
145211    int extension_size = dbg->de_64bit_extension ? 4 : 0;
145212
145213    Dwarf_P_Simple_name_header hdr;
145214
145215
145216    /* ***** BEGIN CODE ***** */
145217
145218    debug_info_size = 0;
145219    for (debug_sect = dbg->de_debug_sects; debug_sect != NULL;
145220	 debug_sect = debug_sect->ds_next) {
145221	/* We want the size of the .debug_info section for this CU
145222	   because the dwarf spec requires us to output it below
145223	   so we look for it specifically. */
145224	if (debug_sect->ds_elf_sect_no ==
145225	    dbg->de_elf_sects[DEBUG_INFO]) {
145226	    debug_info_size += debug_sect->ds_nbytes;
145227	}
145228    }
145229
145230    hdr = &dbg->de_simple_name_headers[entrykind];
145231    /* Size of the .debug_typenames (or similar) section header. */
145232    stream_bytes_count = extension_size + uword_size +	/* Size of
145233							   length
145234							   field. */
145235	sizeof(Dwarf_Half) +	/* Size of version field. */
145236	uword_size +		/* Size of .debug_info offset. */
145237	uword_size;		/* Size of .debug_names. */
145238
145239
145240
145241    nameentry_original = hdr->sn_head;
145242    nameentry = nameentry_original;
145243    /* add in the content size */
145244    stream_bytes_count += hdr->sn_net_len;
145245
145246    /* Size of the last 0 offset. */
145247    stream_bytes_count += uword_size;
145248
145249    /* Now we know how long the entire section is */
145250    GET_CHUNK(dbg, dbg->de_elf_sects[section_index],
145251	      stream_bytes, (unsigned long) stream_bytes_count, error);
145252    if (stream_bytes == NULL) {
145253	_dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
145254	return (0);
145255    }
145256    cur_stream_bytes_ptr = stream_bytes;
145257
145258    if (extension_size) {
145259	Dwarf_Unsigned x = DISTINGUISHED_VALUE;
145260
145261	WRITE_UNALIGNED(dbg, cur_stream_bytes_ptr,
145262			(const void *) &x, sizeof(x), extension_size);
145263	cur_stream_bytes_ptr += extension_size;
145264
145265    }
145266    /* Write the adjusted length of .debug_*names section. */
145267    adjusted_length = stream_bytes_count - uword_size - extension_size;
145268    WRITE_UNALIGNED(dbg, cur_stream_bytes_ptr,
145269		    (const void *) &adjusted_length,
145270		    sizeof(adjusted_length), uword_size);
145271    cur_stream_bytes_ptr += uword_size;
145272
145273    /* Write the version as 2 bytes. */
145274    {
145275	Dwarf_Half verstamp = CURRENT_VERSION_STAMP;
145276
145277	WRITE_UNALIGNED(dbg, cur_stream_bytes_ptr,
145278			(const void *) &verstamp,
145279			sizeof(verstamp), sizeof(Dwarf_Half));
145280	cur_stream_bytes_ptr += sizeof(Dwarf_Half);
145281    }
145282
145283    /* Write the offset of the compile-unit. */
145284    WRITE_UNALIGNED(dbg, cur_stream_bytes_ptr,
145285		    (const void *) &big_zero,
145286		    sizeof(big_zero), uword_size);
145287    cur_stream_bytes_ptr += uword_size;
145288
145289    /* now create the relocation for the compile_unit offset */
145290    {
145291	int res = dbg->de_reloc_name(dbg,
145292		section_index,
145293		extension_size + uword_size + sizeof(Dwarf_Half)
145294				/* r_offset */ ,
145295	        /* debug_info section name symbol */
145296		     dbg->de_sect_name_idx[DEBUG_INFO],
145297		dwarf_drt_data_reloc,
145298		uword_size);
145299
145300	if (res != DW_DLV_OK) {
145301	    {
145302		_dwarf_p_error(dbg, error, DW_DLE_ALLOC_FAIL);
145303		return (0);
145304	    }
145305	}
145306    }
145307
145308    /* Write the size of .debug_info section. */
145309    WRITE_UNALIGNED(dbg, cur_stream_bytes_ptr,
145310		    (const void *) &debug_info_size,
145311		    sizeof(debug_info_size), uword_size);
145312    cur_stream_bytes_ptr += uword_size;
145313
145314
145315    for (nameentry = nameentry_original;
145316	 nameentry != NULL; nameentry = nameentry->sne_next) {
145317
145318	/* Copy offset of die from start of compile-unit. */
145319	WRITE_UNALIGNED(dbg, cur_stream_bytes_ptr,
145320			(const void *) &nameentry->sne_die->di_offset,
145321			sizeof(nameentry->sne_die->di_offset),
145322			uword_size);
145323	cur_stream_bytes_ptr += uword_size;
145324
145325	/* Copy the type name. */
145326	strcpy((char *) cur_stream_bytes_ptr, nameentry->sne_name);
145327	cur_stream_bytes_ptr += nameentry->sne_name_len + 1;
145328    }
145329
145330    WRITE_UNALIGNED(dbg, cur_stream_bytes_ptr,
145331		    (const void *) &big_zero,
145332		    sizeof(big_zero), uword_size);
145333
145334
145335
145336
145337    return (int) dbg->de_n_debug_sect;
145338}
1453390707010001adb70000812400011e740000000a000000014020682700000611000000660000000000000000000000000000001500000000libdwarf/pro_types.h��/*
145340
145341  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
145342
145343  This program is free software; you can redistribute it and/or modify it
145344  under the terms of version 2.1 of the GNU Lesser General Public License
145345  as published by the Free Software Foundation.
145346
145347  This program is distributed in the hope that it would be useful, but
145348  WITHOUT ANY WARRANTY; without even the implied warranty of
145349  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
145350
145351  Further, this software is distributed without any warranty that it is
145352  free of the rightful claim of any third person regarding infringement
145353  or the like.  Any license provided herein, whether implied or
145354  otherwise, applies only to this software file.  Patent licenses, if
145355  any, provided herein do not apply to combinations of this program with
145356  other software, or any other product whatsoever.
145357
145358  You should have received a copy of the GNU Lesser General Public
145359  License along with this program; if not, write the Free Software
145360  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
145361  USA.
145362
145363  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
145364  Mountain View, CA 94043, or:
145365
145366  http://www.sgi.com
145367
145368  For further information regarding this notice, see:
145369
145370  http://oss.sgi.com/projects/GenInfo/NoticeExplan
145371
145372*/
145373
145374
145375/* pro_types.h */
145376
145377
145378int _dwarf_transform_simplename_to_disk(Dwarf_P_Debug dbg, enum dwarf_sn_kind entrykind, int section_index,	/* in
145379														   de_elf_sects
145380														   etc
145381														 */
145382					Dwarf_Error * error);
145383���0707010001adb80000812400011e740000000a000000014020682700000dce000000660000000000000000000000000000001400000000libdwarf/pro_util.h���/*
145384
145385  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
145386
145387  This program is free software; you can redistribute it and/or modify it
145388  under the terms of version 2.1 of the GNU Lesser General Public License
145389  as published by the Free Software Foundation.
145390
145391  This program is distributed in the hope that it would be useful, but
145392  WITHOUT ANY WARRANTY; without even the implied warranty of
145393  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
145394
145395  Further, this software is distributed without any warranty that it is
145396  free of the rightful claim of any third person regarding infringement
145397  or the like.  Any license provided herein, whether implied or
145398  otherwise, applies only to this software file.  Patent licenses, if
145399  any, provided herein do not apply to combinations of this program with
145400  other software, or any other product whatsoever.
145401
145402  You should have received a copy of the GNU Lesser General Public
145403  License along with this program; if not, write the Free Software
145404  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
145405  USA.
145406
145407  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
145408  Mountain View, CA 94043, or:
145409
145410  http://www.sgi.com
145411
145412  For further information regarding this notice, see:
145413
145414  http://oss.sgi.com/projects/GenInfo/NoticeExplan
145415
145416*/
145417
145418
145419
145420
145421#define IS_64BIT(dbg) 	((dbg)->de_flags & DW_DLC_SIZE_64 ? 1 : 0)
145422#define ISA_IA64(dbg) 	((dbg)->de_flags & DW_DLC_ISA_IA64 ? 1 : 0)
145423
145424/* definition of sizes of types, given target machine */
145425#define sizeof_sbyte(dbg) 	sizeof(Dwarf_Sbyte)
145426#define sizeof_ubyte(dbg)	sizeof(Dwarf_Ubyte)
145427#define sizeof_uhalf(dbg)	sizeof(Dwarf_Half)
145428/* certain sizes not defined here, but set in dbg record.
145429   See pro_init.c
145430*/
145431
145432/* Computes amount of padding necessary to align n to a k-boundary. */
145433/* Important: Assumes n, k both GREATER than zero. */
145434#define PADDING(n, k) ( (k)-1 - ((n)-1)%(k) )
145435
145436/* The following defines are only important for users of the
145437** producer part of libdwarf, and such should have these
145438** defined correctly (as necessary)
145439** by the #include <elf.h> done in pro_incl.h
145440** before the #include "pro_util.h".
145441** For others producer macros do not matter so 0 is a usable value, and
145442** zero values let compilation succeed on more non-MIPS architectures.
145443** A better approach would be welcome.
145444*/
145445/* R_MIPS* are #define so #ifndef works */
145446/* R_IA_64* are not necessarily #define (might be enum) so #ifndef
145447   is useless, we use the configure script generating
145448   HAVE_R_IA_64_DIR32LSB.
145449*/
145450#ifndef R_MIPS_64
145451#define R_MIPS_64 0
145452#endif
145453#ifndef R_MIPS_32
145454#define R_MIPS_32 0
145455#endif
145456#ifndef R_MIPS_SCN_DISP
145457#define R_MIPS_SCN_DISP 0
145458#endif
145459
145460#ifndef HAVE_R_IA_64_DIR32LSB
145461#define R_IA_64_DIR32LSB 0
145462#define R_IA_64_DIR64LSB 0
145463#define R_IA_64_SEGREL64LSB 0
145464#define R_IA_64_SEGREL32LSB 0
145465#endif
145466
145467#ifdef HAVE_SYS_IA64_ELF_H
145468#define Get_REL64_isa(dbg)         (ISA_IA64(dbg) ? \
145469				R_IA_64_DIR64LSB : R_MIPS_64)
145470#define Get_REL32_isa(dbg)         (ISA_IA64(dbg) ? \
145471				R_IA_64_DIR32LSB : R_MIPS_32)
145472
145473
145474/* ia64 uses 32bit dwarf offsets for sections */
145475#define Get_REL_SEGREL_isa(dbg)    (ISA_IA64(dbg) ? \
145476				R_IA_64_SEGREL32LSB : R_MIPS_SCN_DISP)
145477#else
145478
145479#if !defined(linux) && !defined(__BEOS__)
145480#define Get_REL64_isa(dbg)         (R_MIPS_64)
145481#define Get_REL32_isa(dbg)         (R_MIPS_32)
145482#define Get_REL_SEGREL_isa(dbg)    (R_MIPS_SCN_DISP)
145483#else
145484#define Get_REL64_isa(dbg)	(R_IA_64_DIR64LSB)
145485#define Get_REL32_isa(dbg)	(R_IA_64_DIR32LSB)
145486#define Get_REL_SEGREL_isa(dbg)	(R_IA_64_SEGREL64LSB)
145487#endif
145488
145489#endif
145490��0707010001adb90000812400011e740000000a00000001402068270000075a000000660000000000000000000000000000001400000000libdwarf/pro_vars.c���/*
145491
145492  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
145493
145494  This program is free software; you can redistribute it and/or modify it
145495  under the terms of version 2.1 of the GNU Lesser General Public License
145496  as published by the Free Software Foundation.
145497
145498  This program is distributed in the hope that it would be useful, but
145499  WITHOUT ANY WARRANTY; without even the implied warranty of
145500  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
145501
145502  Further, this software is distributed without any warranty that it is
145503  free of the rightful claim of any third person regarding infringement
145504  or the like.  Any license provided herein, whether implied or
145505  otherwise, applies only to this software file.  Patent licenses, if
145506  any, provided herein do not apply to combinations of this program with
145507  other software, or any other product whatsoever.
145508
145509  You should have received a copy of the GNU Lesser General Public
145510  License along with this program; if not, write the Free Software
145511  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
145512  USA.
145513
145514  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
145515  Mountain View, CA 94043, or:
145516
145517  http://www.sgi.com
145518
145519  For further information regarding this notice, see:
145520
145521  http://oss.sgi.com/projects/GenInfo/NoticeExplan
145522
145523*/
145524
145525
145526
145527#include "config.h"
145528#include "libdwarfdefs.h"
145529#include <stdio.h>
145530#include <string.h>
145531#ifdef HAVE_ELFACCESS_H
145532#include <elfaccess.h>
145533#endif
145534#include "pro_incl.h"
145535#include "pro_section.h"
145536
145537/*
145538    This function adds another variable name to the
145539    list of variable names for the given Dwarf_P_Debug.
145540    It returns 0 on error, and 1 otherwise.
145541*/
145542Dwarf_Unsigned
145543dwarf_add_varname(Dwarf_P_Debug dbg,
145544		  Dwarf_P_Die die, char *var_name, Dwarf_Error * error)
145545{
145546    return
145547	_dwarf_add_simple_name_entry(dbg, die, var_name,
145548				     dwarf_snk_varname, error);
145549
145550
145551}
145552��0707010001adba0000812400011e740000000a00000001402068270000075a000000660000000000000000000000000000001500000000libdwarf/pro_weaks.c��/*
145553
145554  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved.
145555
145556  This program is free software; you can redistribute it and/or modify it
145557  under the terms of version 2.1 of the GNU Lesser General Public License
145558  as published by the Free Software Foundation.
145559
145560  This program is distributed in the hope that it would be useful, but
145561  WITHOUT ANY WARRANTY; without even the implied warranty of
145562  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
145563
145564  Further, this software is distributed without any warranty that it is
145565  free of the rightful claim of any third person regarding infringement
145566  or the like.  Any license provided herein, whether implied or
145567  otherwise, applies only to this software file.  Patent licenses, if
145568  any, provided herein do not apply to combinations of this program with
145569  other software, or any other product whatsoever.
145570
145571  You should have received a copy of the GNU Lesser General Public
145572  License along with this program; if not, write the Free Software
145573  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
145574  USA.
145575
145576  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
145577  Mountain View, CA 94043, or:
145578
145579  http://www.sgi.com
145580
145581  For further information regarding this notice, see:
145582
145583  http://oss.sgi.com/projects/GenInfo/NoticeExplan
145584
145585*/
145586
145587
145588
145589#include "config.h"
145590#include "libdwarfdefs.h"
145591#include <stdio.h>
145592#include <string.h>
145593#ifdef HAVE_ELFACCESS_H
145594#include <elfaccess.h>
145595#endif
145596#include "pro_incl.h"
145597#include "pro_section.h"
145598
145599/*
145600    This function adds another weak name to the
145601    list of weak names for the given Dwarf_P_Debug.
145602    It returns 0 on error, and 1 otherwise.
145603*/
145604Dwarf_Unsigned
145605dwarf_add_weakname(Dwarf_P_Debug dbg,
145606		   Dwarf_P_Die die,
145607		   char *weak_name, Dwarf_Error * error)
145608{
145609    return
145610	_dwarf_add_simple_name_entry(dbg, die, weak_name,
145611				     dwarf_snk_weakname, error);
145612}
145613��0707010001adbd0000812400011e740000000a000000014046ea800000234f000000660000000000000000000000000000001c00000000libdwarf/dwarf_opaque.h.bak���/*
145614
145615  Copyright (C) 2000,2002,2003 Silicon Graphics, Inc.  All Rights Reserved.
145616
145617  This program is free software; you can redistribute it and/or modify it
145618  under the terms of version 2.1 of the GNU Lesser General Public License
145619  as published by the Free Software Foundation.
145620
145621  This program is distributed in the hope that it would be useful, but
145622  WITHOUT ANY WARRANTY; without even the implied warranty of
145623  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
145624
145625  Further, this software is distributed without any warranty that it is
145626  free of the rightful claim of any third person regarding infringement
145627  or the like.  Any license provided herein, whether implied or
145628  otherwise, applies only to this software file.  Patent licenses, if
145629  any, provided herein do not apply to combinations of this program with
145630  other software, or any other product whatsoever.
145631
145632  You should have received a copy of the GNU Lesser General Public
145633  License along with this program; if not, write the Free Software
145634  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
145635  USA.
145636
145637  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
145638  Mountain View, CA 94043, or:
145639
145640  http://www.sgi.com
145641
145642  For further information regarding this notice, see:
145643
145644  http://oss.sgi.com/projects/GenInfo/NoticeExplan
145645
145646*/
145647
145648#include <stddef.h>
145649
145650
145651struct Dwarf_Die_s {
145652    /*
145653       Points to the start of the portion corresponding to this Die in
145654       the .debug_info section. */
145655    Dwarf_Byte_Ptr di_debug_info_ptr;
145656
145657    Dwarf_Abbrev_List di_abbrev_list;
145658
145659    /* Points to cu context for this die.  */
145660    Dwarf_CU_Context di_cu_context;
145661};
145662
145663struct Dwarf_Attribute_s {
145664    Dwarf_Half ar_attribute;	/* Attribute Value. */
145665    Dwarf_Half ar_attribute_form;	/* Attribute Form. */
145666    Dwarf_Half ar_attribute_form_direct;
145667	        /* Identical to ar_attribute_form except that if
145668		the original form uleb was DW_FORM_indirect,
145669		ar_attribute_form_direct contains DW_FORM_indirect
145670		but ar_attribute_form contains the true form. */
145671
145672    Dwarf_CU_Context ar_cu_context;
145673    Dwarf_Small *ar_debug_info_ptr;
145674    Dwarf_Attribute ar_next;
145675};
145676
145677/*
145678    This structure provides the context for a compilation unit.
145679    Thus, it contains the Dwarf_Debug, cc_dbg, that this cu
145680    belongs to.  It contains the information in the compilation
145681    unit header, cc_length, cc_version_stamp, cc_abbrev_offset,
145682    and cc_address_size, in the .debug_info section for that cu.
145683    In addition, it contains the count, cc_count_cu, of the cu
145684    number of that cu in the list of cu's in the .debug_info.
145685    The count starts at 1, ie cc_count_cu is 1 for the first cu,
145686    2 for the second and so on.  This struct also contains a
145687    pointer, cc_abbrev_table, to a list of pairs of abbrev code
145688    and a pointer to the start of that abbrev
145689    in the .debug_abbrev section.
145690
145691    Each die will also contain a pointer to such a struct to
145692    record the context for that die.
145693
145694    **Updated by dwarf_next_cu_header in dwarf_die_deliv.c
145695*/
145696struct Dwarf_CU_Context_s {
145697    Dwarf_Debug cc_dbg;
145698    Dwarf_Word cc_length;
145699    Dwarf_Small cc_length_size;
145700    Dwarf_Small cc_extension_size;
145701    Dwarf_Half cc_version_stamp;
145702    Dwarf_Sword cc_abbrev_offset;
145703    Dwarf_Small cc_address_size;
145704    Dwarf_Word cc_debug_info_offset;
145705    Dwarf_Byte_Ptr cc_last_abbrev_ptr;
145706    Dwarf_Hash_Table cc_abbrev_hash_table;
145707    Dwarf_CU_Context cc_next;
145708    unsigned char cc_offset_length;
145709};
145710
145711
145712struct Dwarf_Debug_s {
145713    dwarf_elf_handle de_elf; /* see de_elf_must_close at end of struct */
145714
145715    Dwarf_Unsigned de_access;
145716    Dwarf_Handler de_errhand;
145717    Dwarf_Ptr de_errarg;
145718
145719    /*
145720       Context for the compilation_unit just read by a call to
145721       dwarf_next_cu_header. **Updated by dwarf_next_cu_header in
145722       dwarf_die_deliv.c */
145723    Dwarf_CU_Context de_cu_context;
145724
145725    /*
145726       Points to linked list of CU Contexts for the CU's already read.
145727       These are only CU's read by dwarf_next_cu_header(). */
145728    Dwarf_CU_Context de_cu_context_list;
145729
145730    /*
145731       Points to the last CU Context added to the list by
145732       dwarf_next_cu_header(). */
145733    Dwarf_CU_Context de_cu_context_list_end;
145734
145735    /*
145736       This is the list of CU contexts read for dwarf_offdie().  These
145737       may read ahead of dwarf_next_cu_header(). */
145738    Dwarf_CU_Context de_offdie_cu_context;
145739    Dwarf_CU_Context de_offdie_cu_context_end;
145740
145741    /* Offset of last byte of last CU read. */
145742    Dwarf_Word de_info_last_offset;
145743
145744    /*
145745       Number of bytes in the length, and offset field in various
145746       .debug_* sections.  It's not very meaningful, and is
145747       only used in one 'approximate' calculation.  */
145748    Dwarf_Small de_length_size;
145749
145750    /* number of bytes in a pointer of the target in various .debug_
145751       sections. 4 in 32bit, 8 in MIPS 64, ia64. */
145752    Dwarf_Small de_pointer_size;
145753
145754    /* set at creation of a Dwarf_Debug to say if form_string should be
145755       checked for valid length at every call. 0 means do the check.
145756       non-zero means do not do the check. */
145757    Dwarf_Small de_assume_string_in_bounds;
145758
145759    /*
145760       Dwarf_Alloc_Hdr_s structs used to manage chunks that are
145761       malloc'ed for each allocation type for structs. */
145762    struct Dwarf_Alloc_Hdr_s de_alloc_hdr[ALLOC_AREA_REAL_TABLE_MAX];
145763#ifdef DWARF_SIMPLE_MALLOC
145764    struct simple_malloc_record_s *  de_simple_malloc_base;
145765    struct simple_malloc_record_s *  de_simple_malloc_current;
145766#endif
145767
145768
145769    /*
145770       These fields are used to process debug_frame section.  **Updated
145771       by dwarf_get_fde_list in dwarf_frame.h */
145772    /*
145773       Points to contiguous block of pointers to Dwarf_Cie_s structs. */
145774    Dwarf_Cie *de_cie_data;
145775    /* Count of number of Dwarf_Cie_s structs. */
145776    Dwarf_Signed de_cie_count;
145777    /*
145778       Points to contiguous block of pointers to Dwarf_Fde_s structs. */
145779    Dwarf_Fde *de_fde_data;
145780    /* Count of number of Dwarf_Fde_s structs. */
145781    Dwarf_Signed de_fde_count;
145782
145783    Dwarf_Small *de_debug_info;
145784    Dwarf_Small *de_debug_abbrev;
145785    Dwarf_Small *de_debug_line;
145786    Dwarf_Small *de_debug_loc;
145787    Dwarf_Small *de_debug_aranges;
145788    Dwarf_Small *de_debug_macinfo;
145789    Dwarf_Small *de_debug_pubnames;
145790    Dwarf_Small *de_debug_str;
145791    Dwarf_Small *de_debug_frame;
145792    Dwarf_Small *de_debug_frame_eh_gnu;	/* gnu for the g++ eh_frame
145793					   section */
145794
145795    Dwarf_Small *de_debug_funcnames;
145796    Dwarf_Small *de_debug_typenames;
145797    Dwarf_Small *de_debug_varnames;
145798    Dwarf_Small *de_debug_weaknames;
145799
145800    Dwarf_Unsigned de_debug_info_size;
145801    Dwarf_Unsigned de_debug_abbrev_size;
145802    Dwarf_Unsigned de_debug_line_size;
145803    Dwarf_Unsigned de_debug_loc_size;
145804    Dwarf_Unsigned de_debug_aranges_size;
145805    Dwarf_Unsigned de_debug_macinfo_size;
145806    Dwarf_Unsigned de_debug_pubnames_size;
145807    Dwarf_Unsigned de_debug_str_size;
145808
145809
145810    Dwarf_Unsigned de_debug_frame_size;
145811
145812    Dwarf_Unsigned de_debug_frame_size_eh_gnu;	/* gnu for the g++
145813					   eh_frame section */
145814
145815    Dwarf_Unsigned de_debug_funcnames_size;
145816    Dwarf_Unsigned de_debug_typenames_size;
145817    Dwarf_Unsigned de_debug_varnames_size;
145818    Dwarf_Unsigned de_debug_weaknames_size;
145819
145820    void *(*de_copy_word) (void *, const void *, size_t);
145821    unsigned char de_same_endian;
145822    unsigned char de_elf_must_close; /* if non-zero, then
145823	it was dwarf_init (not dwarf_elf_init)
145824	so must elf_end() */
145825
145826    /*
145827       The following are used for storing section indicies.
145828
145829       After a Dwarf_Debug is initialized, a zero for any of
145830       these indicies indicates an absent section.
145831
145832       If the ELF spec is ever changed to permit 32-bit section
145833       indicies, these will need to be changed.
145834     */
145835    Dwarf_Half de_debug_aranges_index;
145836    Dwarf_Half de_debug_line_index;
145837    Dwarf_Half de_debug_loc_index;
145838    Dwarf_Half de_debug_macinfo_index;
145839    Dwarf_Half de_debug_pubnames_index;
145840    Dwarf_Half de_debug_funcnames_index;
145841    Dwarf_Half de_debug_typenames_index;
145842    Dwarf_Half de_debug_varnames_index;
145843    Dwarf_Half de_debug_weaknames_index;
145844    Dwarf_Half de_debug_frame_index;
145845    Dwarf_Half de_debug_frame_eh_gnu_index;
145846    Dwarf_Half de_debug_str_index;
145847    Dwarf_Half de_debug_info_index;
145848    Dwarf_Half de_debug_abbrev_index;
145849    unsigned char de_big_endian_object; /* non-zero if big-endian
145850		object opened. */
145851};
145852
145853typedef struct Dwarf_Chain_s *Dwarf_Chain;
145854struct Dwarf_Chain_s {
145855    void *ch_item;
145856    Dwarf_Chain ch_next;
145857};
145858
145859#define CURRENT_VERSION_STAMP		2
145860
145861    /* Size of cu header version stamp field. */
145862#define CU_VERSION_STAMP_SIZE   sizeof(Dwarf_Half)
145863
145864    /* Size of cu header address size field. */
145865#define CU_ADDRESS_SIZE_SIZE	sizeof(Dwarf_Small)
145866
145867void *_dwarf_memcpy_swap_bytes(void *s1, const void *s2, size_t len);
145868
145869#define ORIGINAL_DWARF_OFFSET_SIZE  4
145870#define DISTINGUISHED_VALUE  0xffffffff
145871#define DISTINGUISHED_VALUE_OFFSET_SIZE 8
145872
145873/*
145874    We don't load the sections until they are needed. This function is
145875    used to load the section.
145876 */
145877int _dwarf_load_section(Dwarf_Debug,
145878		        Dwarf_Half,
145879			Dwarf_Small **,
145880			Dwarf_Error *);
145881�0707010001adbc0000812400011e740000000a000000014046e94800004c7f000000660000000000000000000000000000002100000000libdwarf/dwarf_init_finish.c.bak��/*
145882
145883  Copyright (C) 2000,2002,2003 Silicon Graphics, Inc.  All Rights Reserved.
145884
145885  This program is free software; you can redistribute it and/or modify it
145886  under the terms of version 2.1 of the GNU Lesser General Public License
145887  as published by the Free Software Foundation.
145888
145889  This program is distributed in the hope that it would be useful, but
145890  WITHOUT ANY WARRANTY; without even the implied warranty of
145891  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
145892
145893  Further, this software is distributed without any warranty that it is
145894  free of the rightful claim of any third person regarding infringement
145895  or the like.  Any license provided herein, whether implied or
145896  otherwise, applies only to this software file.  Patent licenses, if
145897  any, provided herein do not apply to combinations of this program with
145898  other software, or any other product whatsoever.
145899
145900  You should have received a copy of the GNU Lesser General Public
145901  License along with this program; if not, write the Free Software
145902  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
145903  USA.
145904
145905  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
145906  Mountain View, CA 94043, or:
145907
145908  http://www.sgi.com
145909
145910  For further information regarding this notice, see:
145911
145912  http://oss.sgi.com/projects/GenInfo/NoticeExplan
145913
145914*/
145915
145916
145917
145918#include "config.h"
145919#include "dwarf_incl.h"
145920#ifdef HAVE_ELF_H
145921#include <elf.h>
145922#endif
145923#ifdef __SGI_FAST_LIBELF
145924#include <libelf_sgi.h>
145925#else
145926#ifdef HAVE_LIBELF_H
145927#include <libelf.h>
145928#else
145929#ifdef HAVE_LIBELF_LIBELF_H
145930#include <libelf/libelf.h>
145931#endif
145932#endif
145933#endif /* !defined(__SGI_FAST_LIBELF) */
145934
145935#include <stdio.h>
145936#include <sys/stat.h>
145937#include <sys/types.h>
145938#include <string.h>
145939#include <stdlib.h>
145940#include <malloc.h>
145941
145942#include "dwarf_incl.h"
145943
145944#define DWARF_DBG_ERROR(dbg,errval,retval) \
145945     _dwarf_error(dbg, error, errval); return(retval);
145946
145947#define FALSE	0
145948#define TRUE	1
145949
145950#ifdef __SGI_FAST_LIBELF
145951#else
145952#ifdef HAVE_ELF64_GETEHDR
145953extern Elf64_Ehdr *elf64_getehdr(Elf *);
145954#endif
145955#ifdef HAVE_ELF64_GETSHDR
145956extern Elf64_Shdr *elf64_getshdr(Elf_Scn *);
145957#endif
145958#endif /* !defined(__SGI_FAST_LIBELF) */
145959
145960
145961/* This static is copied to the dbg on dbg init
145962   so that the static need not be referenced at
145963   run time, preserving better locality of
145964   reference.
145965   Value is 0 means do the string check.
145966   Value non-zero means do not do the check.
145967*/
145968static Dwarf_Small _dwarf_assume_string_bad;
145969
145970
145971int
145972dwarf_set_stringcheck(int newval)
145973{
145974    int oldval = _dwarf_assume_string_bad;
145975
145976    _dwarf_assume_string_bad = newval;
145977    return oldval;
145978}
145979
145980#ifdef __SGI_FAST_LIBELF
145981/*
145982	This function translates an elf_sgi error code into a libdwarf
145983	code.
145984 */
145985static int
145986_dwarf_error_code_from_elf_sgi_error_code(enum elf_sgi_error_type val)
145987{
145988    switch (val) {
145989    case ELF_SGI_ERROR_OK:        return DW_DLE_NE;
145990    case ELF_SGI_ERROR_BAD_ALLOC: return DW_DLE_MAF;
145991    case ELF_SGI_ERROR_FORMAT:    return DW_DLE_MDE;
145992    case ELF_SGI_ERROR_ERRNO:     return DW_DLE_IOF;
145993    case ELF_SGI_ERROR_TOO_BIG:   return DW_DLE_MOF;
145994    default:                      return DW_DLE_LEE;
145995    }
145996}
145997#endif
145998
145999/*
146000    Given an Elf ptr, set up dbg with pointers
146001    to all the Dwarf data sections.
146002    Return NULL on error.
146003
146004    This function is also responsible for determining
146005    whether the given object contains Dwarf information
146006    or not.  The test currently used is that it contains
146007    either a .debug_info or a .debug_frame section.  If
146008    not, it returns DW_DLV_NO_ENTRY causing dwarf_init() also to
146009    return DW_DLV_NO_ENTRY.  Earlier, we had thought of using only
146010    the presence/absence of .debug_info to test, but we
146011    added .debug_frame since there could be stripped objects
146012    that have only a .debug_frame section for exception
146013    processing.
146014    DW_DLV_NO_ENTRY or DW_DLV_OK or DW_DLV_ERROR
146015*/
146016static int
146017_dwarf_setup(Dwarf_Debug dbg, dwarf_elf_handle elf, Dwarf_Error * error)
146018{
146019#ifdef __SGI_FAST_LIBELF
146020    Elf64_Ehdr ehdr;
146021    Elf64_Shdr shdr;
146022    enum elf_sgi_error_type sres;
146023    unsigned char const* ehdr_ident;
146024#else
146025    Elf32_Ehdr *ehdr32;
146026
146027#ifdef HAVE_ELF64_GETEHDR
146028    Elf64_Ehdr *ehdr64;
146029#endif
146030    Elf32_Shdr *shdr32;
146031
146032#ifdef HAVE_ELF64_GETSHDR
146033    Elf64_Shdr *shdr64;
146034#endif
146035    Elf_Scn *scn;
146036    char *ehdr_ident;
146037#endif /* !defined(__SGI_FAST_LIBELF) */
146038    Dwarf_Half machine;
146039    char *scn_name;
146040    int is_64bit;
146041    int foundDwarf;
146042
146043    Dwarf_Unsigned section_size;
146044    Dwarf_Unsigned section_count;
146045    Dwarf_Half section_index;
146046
146047    foundDwarf = FALSE;
146048    dbg->de_elf = elf;
146049
146050    dbg->de_assume_string_in_bounds = _dwarf_assume_string_bad;
146051
146052#ifdef __SGI_FAST_LIBELF
146053    sres = elf_sgi_ehdr(elf, &ehdr);
146054    if (sres != ELF_SGI_ERROR_OK) {
146055	DWARF_DBG_ERROR(dbg, _dwarf_error_code_from_elf_sgi_error_code(sres),
146056			DW_DLV_ERROR);
146057    }
146058    ehdr_ident = ehdr.e_ident;
146059    section_count = ehdr.e_shnum;
146060    machine = ehdr.e_machine;
146061#else
146062    if ((ehdr_ident = elf_getident(elf, NULL)) == NULL) {
146063	DWARF_DBG_ERROR(dbg, DW_DLE_ELF_GETIDENT_ERROR, DW_DLV_ERROR);
146064    }
146065#endif
146066
146067    is_64bit = (ehdr_ident[EI_CLASS] == ELFCLASS64);
146068
146069
146070    dbg->de_same_endian = 1;
146071    dbg->de_copy_word = memcpy;
146072#ifdef WORDS_BIGENDIAN
146073    dbg->de_big_endian_object = 1;
146074    if (ehdr_ident[EI_DATA] == ELFDATA2LSB) {
146075	dbg->de_same_endian = 0;
146076	dbg->de_big_endian_object = 0;
146077	dbg->de_copy_word = _dwarf_memcpy_swap_bytes;
146078    }
146079#else /* little endian */
146080    dbg->de_big_endian_object = 0;
146081    if (ehdr_ident[EI_DATA] == ELFDATA2MSB) {
146082	dbg->de_same_endian = 0;
146083        dbg->de_big_endian_object = 1;
146084	dbg->de_copy_word = _dwarf_memcpy_swap_bytes;
146085    }
146086#endif /* !WORDS_BIGENDIAN */
146087
146088    /* The following de_length_size is Not Too Significant.
146089	Only used one calculation, and an appoximate one at that. */
146090    dbg->de_length_size = is_64bit ? 8 : 4;
146091    dbg->de_pointer_size = is_64bit ? 8 : 4;
146092
146093
146094#ifdef __SGI_FAST_LIBELF
146095    /* We've already loaded the ELF header, so there's nothing to do here */
146096#else
146097#ifdef HAVE_ELF64_GETEHDR
146098    if (is_64bit) {
146099	ehdr64 = elf64_getehdr(elf);
146100	if (ehdr64 == NULL) {
146101	    DWARF_DBG_ERROR(dbg, DW_DLE_ELF_GETEHDR_ERROR,
146102			    DW_DLV_ERROR);
146103	}
146104        section_count = ehdr64->e_shnum;
146105        machine = ehdr64->e_machine;
146106    } else
146107#endif
146108    {
146109	ehdr32 = elf32_getehdr(elf);
146110	if (ehdr32 == NULL) {
146111	    DWARF_DBG_ERROR(dbg, DW_DLE_ELF_GETEHDR_ERROR,
146112			    DW_DLV_ERROR);
146113	}
146114        section_count = ehdr32->e_shnum;
146115        machine = ehdr32->e_machine;
146116    }
146117#endif /* !defined(__SGI_FAST_LIBELF) */
146118
146119    if (is_64bit && machine != EM_MIPS) {
146120        /* MIPS/IRIX makes pointer size and length size 8 for -64.
146121           Other platforms make length 4 always. */
146122        /* 4 here supports 32bit-offset dwarf2, as emitted by
146123           cygnus tools, and the dwarfv2.1 64bit extension setting. */
146124        dbg->de_length_size = 4;
146125    }
146126
146127    /* We start at index 1 to skip the initial empty section. */
146128    for (section_index = 1; section_index < section_count; ++section_index) {
146129
146130#ifdef __SGI_FAST_LIBELF
146131	sres = elf_sgi_shdr(elf, section_index, &shdr);
146132	if (sres != ELF_SGI_ERROR_OK) {
146133	    DWARF_DBG_ERROR(dbg, _dwarf_error_code_from_elf_sgi_error_code(sres),
146134			    DW_DLV_ERROR);
146135	}
146136
146137	section_size = shdr.sh_size;
146138
146139	sres = elf_sgi_string(elf, ehdr.e_shstrndx, shdr.sh_name, (char const** )&scn_name);
146140	if (sres != ELF_SGI_ERROR_OK) {
146141	    DWARF_DBG_ERROR(dbg, _dwarf_error_code_from_elf_sgi_error_code(sres),
146142			    DW_DLV_ERROR);
146143	}
146144#else /* !defined(__SGI_FAST_LIBELF) */
146145	scn = elf_getscn(elf, section_index);
146146	if (scn == NULL) {
146147	    DWARF_DBG_ERROR(dbg, DW_DLE_MDE,
146148			    DW_DLV_ERROR);
146149	}
146150
146151#ifdef HAVE_ELF64_GETSHDR
146152	if (is_64bit) {
146153	    shdr64 = elf64_getshdr(scn);
146154	    if (shdr64 == NULL) {
146155		DWARF_DBG_ERROR(dbg, DW_DLE_ELF_GETSHDR_ERROR,
146156				DW_DLV_ERROR);
146157	    }
146158
146159	    section_size = shdr64->sh_size;
146160
146161	    if ((scn_name = elf_strptr(elf, ehdr64->e_shstrndx,
146162				       shdr64->sh_name))
146163		== NULL) {
146164		DWARF_DBG_ERROR(dbg, DW_DLE_ELF_STRPTR_ERROR,
146165				DW_DLV_ERROR);
146166	    }
146167	} else
146168#endif /* HAVE_ELF64_GETSHDR */
146169	{
146170	    if ((shdr32 = elf32_getshdr(scn)) == NULL) {
146171		DWARF_DBG_ERROR(dbg, DW_DLE_ELF_GETSHDR_ERROR, 0);
146172	    }
146173
146174	    section_size = shdr32->sh_size;
146175
146176	    if ((scn_name = elf_strptr(elf, ehdr32->e_shstrndx,
146177				       shdr32->sh_name)) == NULL) {
146178		DWARF_DBG_ERROR(dbg, DW_DLE_ELF_STRPTR_ERROR,
146179				DW_DLV_ERROR);
146180	    }
146181	}
146182#endif /* !defined(__SGI_FAST_LIBELF) */
146183
146184	if (strncmp(scn_name, ".debug_", 7)
146185	    && strcmp(scn_name, ".eh_frame")
146186	    )
146187	    continue;
146188
146189	else if (strcmp(scn_name, ".debug_info") == 0) {
146190	    if (dbg->de_debug_info != NULL) {
146191		DWARF_DBG_ERROR(dbg, DW_DLE_DEBUG_INFO_DUPLICATE,
146192				DW_DLV_ERROR);
146193	    }
146194	    if (section_size == 0) {
146195		/* Know no reason to allow empty debug_info section */
146196		DWARF_DBG_ERROR(dbg, DW_DLE_DEBUG_INFO_NULL,
146197				DW_DLV_ERROR);
146198	    }
146199	    foundDwarf = TRUE;
146200	    dbg->de_debug_info_index = section_index;
146201	    dbg->de_debug_info_size = section_size;
146202	}
146203
146204	else if (strcmp(scn_name, ".debug_abbrev") == 0) {
146205	    if (dbg->de_debug_abbrev != NULL) {
146206		DWARF_DBG_ERROR(dbg, DW_DLE_DEBUG_ABBREV_DUPLICATE,
146207				DW_DLV_ERROR);
146208	    }
146209	    if (section_size == 0) {
146210		/* Know no reason to allow empty debug_abbrev section */
146211		DWARF_DBG_ERROR(dbg, DW_DLE_DEBUG_ABBREV_NULL,
146212				DW_DLV_ERROR);
146213	    }
146214	    dbg->de_debug_abbrev_index = section_index;
146215	    dbg->de_debug_abbrev_size = section_size;
146216	}
146217
146218	else if (strcmp(scn_name, ".debug_aranges") == 0) {
146219	    if (dbg->de_debug_aranges_index != 0) {
146220		DWARF_DBG_ERROR(dbg,
146221				DW_DLE_DEBUG_ARANGES_DUPLICATE,
146222				DW_DLV_ERROR);
146223	    }
146224	    if (section_size == 0) {
146225		/* a zero size section is just empty. Ok, no error */
146226		continue;
146227	    }
146228	    dbg->de_debug_aranges_index = section_index;
146229	    dbg->de_debug_aranges_size = section_size;
146230	}
146231
146232	else if (strcmp(scn_name, ".debug_line") == 0) {
146233	    if (dbg->de_debug_line_index != 0) {
146234		DWARF_DBG_ERROR(dbg,
146235				DW_DLE_DEBUG_LINE_DUPLICATE,
146236				DW_DLV_ERROR);
146237	    }
146238	    if (section_size == 0) {
146239		/* a zero size section is just empty. Ok, no error */
146240		continue;
146241	    }
146242	    dbg->de_debug_line_index = section_index;
146243	    dbg->de_debug_line_size = section_size;
146244	}
146245
146246	else if (strcmp(scn_name, ".debug_frame") == 0) {
146247	    if (dbg->de_debug_frame_index != 0) {
146248		DWARF_DBG_ERROR(dbg,
146249				DW_DLE_DEBUG_FRAME_DUPLICATE,
146250				DW_DLV_ERROR);
146251	    }
146252	    if (section_size == 0) {
146253		/* a zero size section is just empty. Ok, no error */
146254		continue;
146255	    }
146256	    dbg->de_debug_frame_index = section_index;
146257	    dbg->de_debug_frame_size = section_size;
146258	    foundDwarf = TRUE;
146259	} else if (strcmp(scn_name, ".eh_frame") == 0) {
146260	    /* gnu egcs-1.1.2 data */
146261	    if (dbg->de_debug_frame_eh_gnu_index != 0) {
146262		DWARF_DBG_ERROR(dbg,
146263				DW_DLE_DEBUG_FRAME_DUPLICATE,
146264				DW_DLV_ERROR);
146265	    }
146266	    if (section_size == 0) {
146267		/* a zero size section is just empty. Ok, no error */
146268		continue;
146269	    }
146270	    dbg->de_debug_frame_eh_gnu_index = section_index;
146271	    dbg->de_debug_frame_size_eh_gnu = section_size;
146272	    foundDwarf = TRUE;
146273	}
146274
146275	else if (strcmp(scn_name, ".debug_loc") == 0) {
146276	    if (dbg->de_debug_loc_index != 0) {
146277		DWARF_DBG_ERROR(dbg, DW_DLE_DEBUG_LOC_DUPLICATE,
146278				DW_DLV_ERROR);
146279	    }
146280	    if (section_size == 0) {
146281		/* a zero size section is just empty. Ok, no error */
146282		continue;
146283	    }
146284	    dbg->de_debug_loc_index = section_index;
146285	    dbg->de_debug_loc_size = section_size;
146286	}
146287
146288
146289	else if (strcmp(scn_name, ".debug_pubnames") == 0) {
146290	    if (dbg->de_debug_pubnames_index != 0) {
146291		DWARF_DBG_ERROR(dbg, DW_DLE_DEBUG_PUBNAMES_DUPLICATE,
146292				DW_DLV_ERROR);
146293	    }
146294	    if (section_size == 0) {
146295		/* a zero size section is just empty. Ok, no error */
146296		continue;
146297	    }
146298	    dbg->de_debug_pubnames_index = section_index;
146299	    dbg->de_debug_pubnames_size = section_size;
146300	}
146301
146302	else if (strcmp(scn_name, ".debug_str") == 0) {
146303	    if (dbg->de_debug_str_index != 0) {
146304		DWARF_DBG_ERROR(dbg,
146305				DW_DLE_DEBUG_STR_DUPLICATE,
146306				DW_DLV_ERROR);
146307	    }
146308	    if (section_size == 0) {
146309		/* a zero size section is just empty. Ok, no error */
146310		continue;
146311	    }
146312	    dbg->de_debug_str_index = section_index;
146313	    dbg->de_debug_str_size = section_size;
146314	}
146315
146316	else if (strcmp(scn_name, ".debug_funcnames") == 0) {
146317	    if (dbg->de_debug_funcnames_index != 0) {
146318		DWARF_DBG_ERROR(dbg,
146319				DW_DLE_DEBUG_FUNCNAMES_DUPLICATE,
146320				DW_DLV_ERROR);
146321	    }
146322	    if (section_size == 0) {
146323		/* a zero size section is just empty. Ok, no error */
146324		continue;
146325	    }
146326	    dbg->de_debug_funcnames_index = section_index;
146327	    dbg->de_debug_funcnames_size = section_size;
146328	}
146329
146330	else if (strcmp(scn_name, ".debug_typenames") == 0) {
146331	    if (dbg->de_debug_typenames_index != 0) {
146332		DWARF_DBG_ERROR(dbg,
146333				DW_DLE_DEBUG_TYPENAMES_DUPLICATE,
146334				DW_DLV_ERROR);
146335	    }
146336	    if (section_size == 0) {
146337		/* a zero size section is just empty. Ok, no error */
146338		continue;
146339	    }
146340	    dbg->de_debug_typenames_index = section_index;
146341	    dbg->de_debug_typenames_size = section_size;
146342	}
146343
146344	else if (strcmp(scn_name, ".debug_varnames") == 0) {
146345	    if (dbg->de_debug_varnames_index != 0) {
146346		DWARF_DBG_ERROR(dbg,
146347				DW_DLE_DEBUG_VARNAMES_DUPLICATE,
146348				DW_DLV_ERROR);
146349	    }
146350	    if (section_size == 0) {
146351		/* a zero size section is just empty. Ok, no error */
146352		continue;
146353	    }
146354	    dbg->de_debug_varnames_index = section_index;
146355	    dbg->de_debug_varnames_size = section_size;
146356	}
146357
146358	else if (strcmp(scn_name, ".debug_weaknames") == 0) {
146359	    if (dbg->de_debug_weaknames_index != 0) {
146360		DWARF_DBG_ERROR(dbg,
146361				DW_DLE_DEBUG_WEAKNAMES_DUPLICATE,
146362				DW_DLV_ERROR);
146363	    }
146364	    if (section_size == 0) {
146365		/* a zero size section is just empty. Ok, no error */
146366		continue;
146367	    }
146368	    dbg->de_debug_weaknames_index = section_index;
146369	    dbg->de_debug_weaknames_size = section_size;
146370	} else if (strcmp(scn_name, ".debug_macinfo") == 0) {
146371	    if (dbg->de_debug_macinfo_index != 0) {
146372		DWARF_DBG_ERROR(dbg,
146373				DW_DLE_DEBUG_MACINFO_DUPLICATE,
146374				DW_DLV_ERROR);
146375	    }
146376	    if (section_size == 0) {
146377		/* a zero size section is just empty. Ok, no error */
146378		continue;
146379	    }
146380	    dbg->de_debug_macinfo_index = section_index;
146381	    dbg->de_debug_macinfo_size = section_size;
146382	}
146383    }
146384    if (foundDwarf) {
146385	return DW_DLV_OK;
146386    }
146387
146388    return (DW_DLV_NO_ENTRY);
146389}
146390
146391
146392/*
146393    The basic dwarf initializer function for consumers.
146394    Return NULL on error.
146395*/
146396int
146397dwarf_init(int fd,
146398	   Dwarf_Unsigned access,
146399	   Dwarf_Handler errhand,
146400	   Dwarf_Ptr errarg, Dwarf_Debug * ret_dbg, Dwarf_Error * error)
146401{
146402    Dwarf_Debug dbg;
146403    struct stat fstat_buf;
146404    dwarf_elf_handle elf;
146405    int res;
146406#ifdef __SGI_FAST_LIBELF
146407    enum elf_sgi_error_type sres;
146408#else
146409    Elf_Cmd what_kind_of_elf_read;
146410#endif
146411
146412    dbg = _dwarf_get_debug();
146413    if (dbg == NULL) {
146414	DWARF_DBG_ERROR(dbg, DW_DLE_DBG_ALLOC, DW_DLV_ERROR);
146415    }
146416    dbg->de_errhand = errhand;
146417    dbg->de_errarg = errarg;
146418
146419    if (fstat(fd, &fstat_buf) != 0) {
146420	DWARF_DBG_ERROR(dbg, DW_DLE_FSTAT_ERROR, DW_DLV_ERROR);
146421    }
146422    if (!S_ISREG(fstat_buf.st_mode)) {
146423	DWARF_DBG_ERROR(dbg, DW_DLE_FSTAT_MODE_ERROR, DW_DLV_ERROR);
146424    }
146425
146426    if (access != DW_DLC_READ) {
146427	DWARF_DBG_ERROR(dbg, DW_DLE_INIT_ACCESS_WRONG, DW_DLV_ERROR);
146428    }
146429    dbg->de_access = access;
146430
146431#ifdef __SGI_FAST_LIBELF
146432    elf = elf_sgi_new();
146433    if (elf == NULL) {
146434	DWARF_DBG_ERROR(dbg, DW_DLE_MAF, DW_DLV_ERROR);
146435    }
146436
146437    sres = elf_sgi_begin_fd(elf, fd, 0);
146438    if (sres != ELF_SGI_ERROR_OK) {
146439	DWARF_DBG_ERROR(dbg, _dwarf_error_code_from_elf_sgi_error_code(sres),
146440			DW_DLV_ERROR);
146441    }
146442#else
146443    elf_version(EV_CURRENT);
146444    /* changed to mmap request per bug 281217. 6/95 */
146445#ifdef HAVE_ELF_C_READ_MMAP
146446    /* ELF_C_READ_MMAP is an SGI IRIX specific enum value from IRIX
146447       libelf.h meaning read but use mmap */
146448    what_kind_of_elf_read = ELF_C_READ_MMAP;
146449#else
146450    /* ELF_C_READ is a portable value */
146451    what_kind_of_elf_read  = ELF_C_READ;
146452#endif
146453
146454    if ((elf = elf_begin(fd, what_kind_of_elf_read, 0)) == NULL) {
146455	DWARF_DBG_ERROR(dbg, DW_DLE_ELF_BEGIN_ERROR, DW_DLV_ERROR);
146456    }
146457#endif /* !defined(__SGI_FAST_LIBELF) */
146458
146459    dbg->de_elf_must_close = 1;
146460    if ((res = _dwarf_setup(dbg, elf, error)) != DW_DLV_OK) {
146461	free(dbg);
146462	return (res);
146463    }
146464
146465    /* call cannot fail: no malloc or free involved */
146466    _dwarf_setup_debug(dbg);
146467
146468    *ret_dbg = dbg;
146469    return (DW_DLV_OK);
146470}
146471
146472
146473/*
146474    The alternate dwarf setup call for consumers
146475*/
146476int
146477dwarf_elf_init(dwarf_elf_handle elf_file_pointer,
146478	       Dwarf_Unsigned access,
146479	       Dwarf_Handler errhand,
146480	       Dwarf_Ptr errarg,
146481	       Dwarf_Debug * ret_dbg, Dwarf_Error * error)
146482{
146483    Dwarf_Debug dbg;
146484    int res;
146485
146486    dbg = _dwarf_get_debug();
146487    if (dbg == NULL) {
146488	DWARF_DBG_ERROR(dbg, DW_DLE_DBG_ALLOC, DW_DLV_ERROR);
146489    }
146490    dbg->de_errhand = errhand;
146491    dbg->de_errarg = errarg;
146492
146493    if (access != DW_DLC_READ) {
146494	DWARF_DBG_ERROR(dbg, DW_DLE_INIT_ACCESS_WRONG, DW_DLV_ERROR);
146495    }
146496    dbg->de_access = access;
146497
146498    dbg->de_elf_must_close = 0;
146499    if ((res = _dwarf_setup(dbg, elf_file_pointer, error)) != DW_DLV_OK) {
146500	free(dbg);
146501	return (res);
146502    }
146503
146504    /* this call cannot fail: allocates nothing, releases nothing */
146505    _dwarf_setup_debug(dbg);
146506
146507    *ret_dbg = dbg;
146508    return (DW_DLV_OK);
146509}
146510
146511
146512/*
146513	Frees all memory that was not previously freed
146514	by dwarf_dealloc.
146515	Aside from certain categories.
146516*/
146517int
146518dwarf_finish(Dwarf_Debug dbg, Dwarf_Error * error)
146519{
146520    int res = DW_DLV_OK;
146521    if(dbg->de_elf_must_close) {
146522	/* Must do this *before* _dwarf_free_all_of_one_debug()
146523	   as that zeroes out dbg contents
146524	*/
146525#ifdef __SGI_FAST_LIBELF
146526	elf_sgi_free(dbg->de_elf);
146527#else
146528	elf_end(dbg->de_elf);
146529#endif
146530    }
146531
146532    res = _dwarf_free_all_of_one_debug(dbg);
146533    if (res == DW_DLV_ERROR) {
146534	DWARF_DBG_ERROR(dbg, DW_DLE_DBG_ALLOC, DW_DLV_ERROR);
146535    }
146536
146537    return res;
146538
146539
146540}
146541
146542
146543/*
146544    This function returns the Elf * pointer
146545    associated with a Dwarf_Debug.
146546*/
146547int
146548dwarf_get_elf(Dwarf_Debug dbg, dwarf_elf_handle* elf, Dwarf_Error * error)
146549{
146550    if (dbg == NULL) {
146551	_dwarf_error(NULL, error, DW_DLE_DBG_NULL);
146552	return (DW_DLV_ERROR);
146553    }
146554
146555    *elf = dbg->de_elf;
146556    return (DW_DLV_OK);
146557}
146558
146559
146560/*
146561	Load the ELF section with the specified index and set the
146562	pointer pointed to by section_data to the memory where it
146563	was loaded.
146564 */
146565int
146566_dwarf_load_section(Dwarf_Debug dbg,
146567		    Dwarf_Half section_index,
146568		    Dwarf_Small ** section_data,
146569		    Dwarf_Error * error)
146570{
146571    if (section_index == 0) {
146572	return DW_DLV_NO_ENTRY;
146573    }
146574
146575    /* check to see if the section is already loaded */
146576    if (*section_data != NULL) {
146577	return DW_DLV_OK;
146578    }
146579
146580    {
146581#ifdef __SGI_FAST_LIBELF
146582        enum elf_sgi_error_type sres;
146583
146584        sres = elf_sgi_section(dbg->de_elf,
146585		               section_index,
146586			       (void**) section_data);
146587        if (sres != ELF_SGI_ERROR_OK) {
146588	    DWARF_DBG_ERROR(dbg, _dwarf_error_code_from_elf_sgi_error_code(sres),
146589			    DW_DLV_ERROR);
146590        }
146591#else
146592        Elf_Scn* scn;
146593        Elf_Data* data;
146594
146595        scn = elf_getscn(dbg->de_elf, section_index);
146596        if (scn == NULL) {
146597	    _dwarf_error(dbg, error, DW_DLE_MDE);
146598	    return DW_DLV_ERROR;
146599        }
146600
146601	/*
146602	    When using libelf as a producer, section data may be stored
146603	    in multiple buffers. In libdwarf however, we only use libelf
146604	    as a consumer (there is a dwarf producer API, but it doesn't
146605	    use libelf). Because of this, this single call to elf_getdata
146606	    will retrieve the entire section in a single contiguous buffer.
146607	 */
146608        data = elf_getdata(scn, NULL);
146609        if (data == NULL) {
146610	    _dwarf_error(dbg, error, DW_DLE_MDE);
146611	    return DW_DLV_ERROR;
146612        }
146613
146614        *section_data = data->d_buf;
146615#endif /* !defined(__SGI_FAST_LIBELF) */
146616    }
146617
146618    return DW_DLV_OK;
146619}
146620�0707010001adbe000081a400011e740000000a000000014046f23c00006cc2000000660000000000000000000000000000001400000000libdwarf/config.log���This file contains any messages produced by compilers while
146621running configure, to aid debugging if configure makes a mistake.
146622
146623It was created by configure, which was
146624generated by GNU Autoconf 2.57.  Invocation command line was
146625
146626  $ ./configure --prefix=/p/local/dwarf-20040203
146627
146628## --------- ##
146629## Platform. ##
146630## --------- ##
146631
146632hostname = defiant
146633uname -m = i86pc
146634uname -r = 5.10
146635uname -s = SunOS
146636uname -v = s10_51
146637
146638/usr/bin/uname -p = i386
146639/bin/uname -X     = System = SunOS
146640Node = defiant
146641Release = 5.10
146642KernelID = s10_51
146643Machine = i86pc
146644BusType = <unknown>
146645Serial = <unknown>
146646Users = <unknown>
146647OEM# = 0
146648Origin# = 1
146649NumCPU = 1
146650
146651/bin/arch              = i86pc
146652/usr/bin/arch -k       = i86pc
146653/usr/convex/getsysinfo = unknown
146654hostinfo               = unknown
146655/bin/machine           = unknown
146656/usr/bin/oslevel       = unknown
146657/bin/universe          = unknown
146658
146659PATH: /home/simmonmt/bin
146660PATH: /usr/bin
146661PATH: /usr/sfw/bin
146662PATH: /opt/sfw/bin
146663PATH: /usr/local/bin
146664PATH: /opt/onbld/bin
146665PATH: /opt/onbld/bin/i386
146666PATH: /usr/sbin
146667PATH: /usr/bin
146668PATH: /bin
146669PATH: /usr/ccs/bin
146670PATH: /usr/etc
146671PATH: /usr/lib
146672PATH: /usr/openwin/bin
146673PATH: /opt/SUNWspro/SOS8/bin
146674PATH: /opt/teamware/bin
146675PATH: /usr/ucb
146676PATH: /usr/dt/bin
146677PATH: /usr/perl5/bin
146678
146679
146680## ----------- ##
146681## Core tests. ##
146682## ----------- ##
146683
146684configure:1303: checking for gcc
146685configure:1329: result: cc
146686configure:1573: checking for C compiler version
146687configure:1576: cc --version </dev/null >&5
146688cc: Warning: option -- passed to ld
146689usage: cc [ options] files.  Use 'cc -flags' for details
146690configure:1579: $? = 1
146691configure:1581: cc -v </dev/null >&5
146692usage: cc [ options] files.  Use 'cc -flags' for details
146693configure:1584: $? = 1
146694configure:1586: cc -V </dev/null >&5
146695cc: Sun C 5.5 Patch 112761-04 2003/10/03
146696usage: cc [ options] files.  Use 'cc -flags' for details
146697configure:1589: $? = 1
146698configure:1613: checking for C compiler default output
146699configure:1616: cc    conftest.c  >&5
146700configure:1619: $? = 0
146701configure:1665: result: a.out
146702configure:1670: checking whether the C compiler works
146703configure:1676: ./a.out
146704configure:1679: $? = 0
146705configure:1696: result: yes
146706configure:1703: checking whether we are cross compiling
146707configure:1705: result: no
146708configure:1708: checking for suffix of executables
146709configure:1710: cc -o conftest    conftest.c  >&5
146710configure:1713: $? = 0
146711configure:1738: result:
146712configure:1744: checking for suffix of object files
146713configure:1766: cc -c   conftest.c >&5
146714configure:1769: $? = 0
146715configure:1791: result: o
146716configure:1795: checking whether we are using the GNU C compiler
146717configure:1820: cc -c   conftest.c >&5
146718"configure", line 1813: undefined symbol: choke
146719"configure", line 1813: syntax error before or at: me
146720cc: acomp failed for conftest.c
146721configure:1823: $? = 2
146722configure: failed program was:
146723| #line 1800 "configure"
146724| /* confdefs.h.  */
146725|
146726| #define PACKAGE_NAME ""
146727| #define PACKAGE_TARNAME ""
146728| #define PACKAGE_VERSION ""
146729| #define PACKAGE_STRING ""
146730| #define PACKAGE_BUGREPORT ""
146731| /* end confdefs.h.  */
146732|
146733| int
146734| main ()
146735| {
146736| #ifndef __GNUC__
146737|        choke me
146738| #endif
146739|
146740|   ;
146741|   return 0;
146742| }
146743configure:1842: result: no
146744configure:1848: checking whether cc accepts -g
146745configure:1870: cc -c -g  conftest.c >&5
146746configure:1873: $? = 0
146747configure:1876: test -s conftest.o
146748configure:1879: $? = 0
146749configure:1890: result: yes
146750configure:1907: checking for cc option to accept ANSI C
146751configure:1968: cc  -c -g  conftest.c >&5
146752"configure", line 1955: warning: statement not reached
146753configure:1971: $? = 0
146754configure:1974: test -s conftest.o
146755configure:1977: $? = 0
146756configure:1995: result: none needed
146757configure:2013: cc -c -g  conftest.c >&5
146758"conftest.c", line 2: warning: old-style declaration or incorrect type for: choke
146759"conftest.c", line 2: syntax error before or at: me
146760"conftest.c", line 3: warning: old-style declaration or incorrect type for: me
146761cc: acomp failed for conftest.c
146762configure:2016: $? = 2
146763configure: failed program was:
146764| #ifndef __cplusplus
146765|   choke me
146766| #endif
146767configure:2126: checking whether byte ordering is bigendian
146768configure:2154: cc -c -g  conftest.c >&5
146769"configure", line 2147: undefined symbol: bogus
146770"configure", line 2147: syntax error before or at: endian
146771cc: acomp failed for conftest.c
146772configure:2157: $? = 2
146773configure: failed program was:
146774| #line 2132 "configure"
146775| /* confdefs.h.  */
146776|
146777| #define PACKAGE_NAME ""
146778| #define PACKAGE_TARNAME ""
146779| #define PACKAGE_VERSION ""
146780| #define PACKAGE_STRING ""
146781| #define PACKAGE_BUGREPORT ""
146782| /* end confdefs.h.  */
146783| #include <sys/types.h>
146784| #include <sys/param.h>
146785|
146786| int
146787| main ()
146788| {
146789| #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
146790|  bogus endian macros
146791| #endif
146792|
146793|   ;
146794|   return 0;
146795| }
146796configure:2287: cc -o conftest -g   conftest.c  >&5
146797"configure", line 2284: warning: implicit function declaration: exit
146798configure:2290: $? = 0
146799configure:2292: ./conftest
146800configure:2295: $? = 0
146801configure:2311: result: no
146802configure:2335: checking how to run the C preprocessor
146803configure:2371: cc -E  conftest.c
146804configure:2377: $? = 0
146805configure:2409: cc -E  conftest.c
146806"configure", line 2408: cannot find include file: <ac_nonexistent.h>
146807cc: acomp failed for conftest.c
146808configure:2415: $? = 2
146809configure: failed program was:
146810| #line 2400 "configure"
146811| /* confdefs.h.  */
146812|
146813| #define PACKAGE_NAME ""
146814| #define PACKAGE_TARNAME ""
146815| #define PACKAGE_VERSION ""
146816| #define PACKAGE_STRING ""
146817| #define PACKAGE_BUGREPORT ""
146818| /* end confdefs.h.  */
146819| #include <ac_nonexistent.h>
146820configure:2453: result: cc -E
146821configure:2478: cc -E  conftest.c
146822configure:2484: $? = 0
146823configure:2516: cc -E  conftest.c
146824"configure", line 2515: cannot find include file: <ac_nonexistent.h>
146825cc: acomp failed for conftest.c
146826configure:2522: $? = 2
146827configure: failed program was:
146828| #line 2507 "configure"
146829| /* confdefs.h.  */
146830|
146831| #define PACKAGE_NAME ""
146832| #define PACKAGE_TARNAME ""
146833| #define PACKAGE_VERSION ""
146834| #define PACKAGE_STRING ""
146835| #define PACKAGE_BUGREPORT ""
146836| /* end confdefs.h.  */
146837| #include <ac_nonexistent.h>
146838configure:2565: checking for egrep
146839configure:2575: result: egrep
146840configure:2669: checking for a BSD-compatible install
146841configure:2723: result: /usr/local/bin/ginstall -c
146842configure:2775: checking for ranlib
146843configure:2791: found /usr/ccs/bin/ranlib
146844configure:2802: result: ranlib
146845configure:2855: checking for ar
146846configure:2871: found /usr/ccs/bin/ar
146847configure:2881: result: ar
146848configure:2895: checking for ANSI C header files
146849configure:2921: cc -c -g  conftest.c >&5
146850configure:2924: $? = 0
146851configure:2927: test -s conftest.o
146852configure:2930: $? = 0
146853configure:3019: cc -o conftest -g   conftest.c  >&5
146854"configure", line 3015: warning: implicit function declaration: exit
146855configure:3022: $? = 0
146856configure:3024: ./conftest
146857configure:3027: $? = 0
146858configure:3042: result: yes
146859configure:3066: checking for sys/types.h
146860configure:3083: cc -c -g  conftest.c >&5
146861configure:3086: $? = 0
146862configure:3089: test -s conftest.o
146863configure:3092: $? = 0
146864configure:3103: result: yes
146865configure:3066: checking for sys/stat.h
146866configure:3083: cc -c -g  conftest.c >&5
146867configure:3086: $? = 0
146868configure:3089: test -s conftest.o
146869configure:3092: $? = 0
146870configure:3103: result: yes
146871configure:3066: checking for stdlib.h
146872configure:3083: cc -c -g  conftest.c >&5
146873configure:3086: $? = 0
146874configure:3089: test -s conftest.o
146875configure:3092: $? = 0
146876configure:3103: result: yes
146877configure:3066: checking for string.h
146878configure:3083: cc -c -g  conftest.c >&5
146879configure:3086: $? = 0
146880configure:3089: test -s conftest.o
146881configure:3092: $? = 0
146882configure:3103: result: yes
146883configure:3066: checking for memory.h
146884configure:3083: cc -c -g  conftest.c >&5
146885configure:3086: $? = 0
146886configure:3089: test -s conftest.o
146887configure:3092: $? = 0
146888configure:3103: result: yes
146889configure:3066: checking for strings.h
146890configure:3083: cc -c -g  conftest.c >&5
146891configure:3086: $? = 0
146892configure:3089: test -s conftest.o
146893configure:3092: $? = 0
146894configure:3103: result: yes
146895configure:3066: checking for inttypes.h
146896configure:3083: cc -c -g  conftest.c >&5
146897configure:3086: $? = 0
146898configure:3089: test -s conftest.o
146899configure:3092: $? = 0
146900configure:3103: result: yes
146901configure:3066: checking for stdint.h
146902configure:3083: cc -c -g  conftest.c >&5
146903configure:3086: $? = 0
146904configure:3089: test -s conftest.o
146905configure:3092: $? = 0
146906configure:3103: result: yes
146907configure:3066: checking for unistd.h
146908configure:3083: cc -c -g  conftest.c >&5
146909configure:3086: $? = 0
146910configure:3089: test -s conftest.o
146911configure:3092: $? = 0
146912configure:3103: result: yes
146913configure:3136: checking alloca.h usability
146914configure:3149: cc -c -g  conftest.c >&5
146915configure:3152: $? = 0
146916configure:3155: test -s conftest.o
146917configure:3158: $? = 0
146918configure:3168: result: yes
146919configure:3172: checking alloca.h presence
146920configure:3183: cc -E  conftest.c
146921configure:3189: $? = 0
146922configure:3208: result: yes
146923configure:3244: checking for alloca.h
146924configure:3251: result: yes
146925configure:3136: checking elf.h usability
146926configure:3149: cc -c -g  conftest.c >&5
146927configure:3152: $? = 0
146928configure:3155: test -s conftest.o
146929configure:3158: $? = 0
146930configure:3168: result: yes
146931configure:3172: checking elf.h presence
146932configure:3183: cc -E  conftest.c
146933configure:3189: $? = 0
146934configure:3208: result: yes
146935configure:3244: checking for elf.h
146936configure:3251: result: yes
146937configure:3136: checking elfaccess.h usability
146938configure:3149: cc -c -g  conftest.c >&5
146939"configure", line 3192: cannot find include file: <elfaccess.h>
146940cc: acomp failed for conftest.c
146941configure:3152: $? = 2
146942configure: failed program was:
146943| #line 3138 "configure"
146944| /* confdefs.h.  */
146945|
146946| #define PACKAGE_NAME ""
146947| #define PACKAGE_TARNAME ""
146948| #define PACKAGE_VERSION ""
146949| #define PACKAGE_STRING ""
146950| #define PACKAGE_BUGREPORT ""
146951| #define STDC_HEADERS 1
146952| #define HAVE_SYS_TYPES_H 1
146953| #define HAVE_SYS_STAT_H 1
146954| #define HAVE_STDLIB_H 1
146955| #define HAVE_STRING_H 1
146956| #define HAVE_MEMORY_H 1
146957| #define HAVE_STRINGS_H 1
146958| #define HAVE_INTTYPES_H 1
146959| #define HAVE_STDINT_H 1
146960| #define HAVE_UNISTD_H 1
146961| #define HAVE_ALLOCA_H 1
146962| #define HAVE_ELF_H 1
146963| /* end confdefs.h.  */
146964| #include <stdio.h>
146965| #if HAVE_SYS_TYPES_H
146966| # include <sys/types.h>
146967| #endif
146968| #if HAVE_SYS_STAT_H
146969| # include <sys/stat.h>
146970| #endif
146971| #if STDC_HEADERS
146972| # include <stdlib.h>
146973| # include <stddef.h>
146974| #else
146975| # if HAVE_STDLIB_H
146976| #  include <stdlib.h>
146977| # endif
146978| #endif
146979| #if HAVE_STRING_H
146980| # if !STDC_HEADERS && HAVE_MEMORY_H
146981| #  include <memory.h>
146982| # endif
146983| # include <string.h>
146984| #endif
146985| #if HAVE_STRINGS_H
146986| # include <strings.h>
146987| #endif
146988| #if HAVE_INTTYPES_H
146989| # include <inttypes.h>
146990| #else
146991| # if HAVE_STDINT_H
146992| #  include <stdint.h>
146993| # endif
146994| #endif
146995| #if HAVE_UNISTD_H
146996| # include <unistd.h>
146997| #endif
146998| #include <elfaccess.h>
146999configure:3168: result: no
147000configure:3172: checking elfaccess.h presence
147001configure:3183: cc -E  conftest.c
147002"configure", line 3194: cannot find include file: <elfaccess.h>
147003cc: acomp failed for conftest.c
147004configure:3189: $? = 2
147005configure: failed program was:
147006| #line 3174 "configure"
147007| /* confdefs.h.  */
147008|
147009| #define PACKAGE_NAME ""
147010| #define PACKAGE_TARNAME ""
147011| #define PACKAGE_VERSION ""
147012| #define PACKAGE_STRING ""
147013| #define PACKAGE_BUGREPORT ""
147014| #define STDC_HEADERS 1
147015| #define HAVE_SYS_TYPES_H 1
147016| #define HAVE_SYS_STAT_H 1
147017| #define HAVE_STDLIB_H 1
147018| #define HAVE_STRING_H 1
147019| #define HAVE_MEMORY_H 1
147020| #define HAVE_STRINGS_H 1
147021| #define HAVE_INTTYPES_H 1
147022| #define HAVE_STDINT_H 1
147023| #define HAVE_UNISTD_H 1
147024| #define HAVE_ALLOCA_H 1
147025| #define HAVE_ELF_H 1
147026| /* end confdefs.h.  */
147027| #include <elfaccess.h>
147028configure:3208: result: no
147029configure:3244: checking for elfaccess.h
147030configure:3251: result: no
147031configure:3136: checking libelf.h usability
147032configure:3149: cc -c -g  conftest.c >&5
147033configure:3152: $? = 0
147034configure:3155: test -s conftest.o
147035configure:3158: $? = 0
147036configure:3168: result: yes
147037configure:3172: checking libelf.h presence
147038configure:3183: cc -E  conftest.c
147039configure:3189: $? = 0
147040configure:3208: result: yes
147041configure:3244: checking for libelf.h
147042configure:3251: result: yes
147043configure:3136: checking libelf/libelf.h usability
147044configure:3149: cc -c -g  conftest.c >&5
147045"configure", line 3193: cannot find include file: <libelf/libelf.h>
147046cc: acomp failed for conftest.c
147047configure:3152: $? = 2
147048configure: failed program was:
147049| #line 3138 "configure"
147050| /* confdefs.h.  */
147051|
147052| #define PACKAGE_NAME ""
147053| #define PACKAGE_TARNAME ""
147054| #define PACKAGE_VERSION ""
147055| #define PACKAGE_STRING ""
147056| #define PACKAGE_BUGREPORT ""
147057| #define STDC_HEADERS 1
147058| #define HAVE_SYS_TYPES_H 1
147059| #define HAVE_SYS_STAT_H 1
147060| #define HAVE_STDLIB_H 1
147061| #define HAVE_STRING_H 1
147062| #define HAVE_MEMORY_H 1
147063| #define HAVE_STRINGS_H 1
147064| #define HAVE_INTTYPES_H 1
147065| #define HAVE_STDINT_H 1
147066| #define HAVE_UNISTD_H 1
147067| #define HAVE_ALLOCA_H 1
147068| #define HAVE_ELF_H 1
147069| #define HAVE_LIBELF_H 1
147070| /* end confdefs.h.  */
147071| #include <stdio.h>
147072| #if HAVE_SYS_TYPES_H
147073| # include <sys/types.h>
147074| #endif
147075| #if HAVE_SYS_STAT_H
147076| # include <sys/stat.h>
147077| #endif
147078| #if STDC_HEADERS
147079| # include <stdlib.h>
147080| # include <stddef.h>
147081| #else
147082| # if HAVE_STDLIB_H
147083| #  include <stdlib.h>
147084| # endif
147085| #endif
147086| #if HAVE_STRING_H
147087| # if !STDC_HEADERS && HAVE_MEMORY_H
147088| #  include <memory.h>
147089| # endif
147090| # include <string.h>
147091| #endif
147092| #if HAVE_STRINGS_H
147093| # include <strings.h>
147094| #endif
147095| #if HAVE_INTTYPES_H
147096| # include <inttypes.h>
147097| #else
147098| # if HAVE_STDINT_H
147099| #  include <stdint.h>
147100| # endif
147101| #endif
147102| #if HAVE_UNISTD_H
147103| # include <unistd.h>
147104| #endif
147105| #include <libelf/libelf.h>
147106configure:3168: result: no
147107configure:3172: checking libelf/libelf.h presence
147108configure:3183: cc -E  conftest.c
147109"configure", line 3195: cannot find include file: <libelf/libelf.h>
147110cc: acomp failed for conftest.c
147111configure:3189: $? = 2
147112configure: failed program was:
147113| #line 3174 "configure"
147114| /* confdefs.h.  */
147115|
147116| #define PACKAGE_NAME ""
147117| #define PACKAGE_TARNAME ""
147118| #define PACKAGE_VERSION ""
147119| #define PACKAGE_STRING ""
147120| #define PACKAGE_BUGREPORT ""
147121| #define STDC_HEADERS 1
147122| #define HAVE_SYS_TYPES_H 1
147123| #define HAVE_SYS_STAT_H 1
147124| #define HAVE_STDLIB_H 1
147125| #define HAVE_STRING_H 1
147126| #define HAVE_MEMORY_H 1
147127| #define HAVE_STRINGS_H 1
147128| #define HAVE_INTTYPES_H 1
147129| #define HAVE_STDINT_H 1
147130| #define HAVE_UNISTD_H 1
147131| #define HAVE_ALLOCA_H 1
147132| #define HAVE_ELF_H 1
147133| #define HAVE_LIBELF_H 1
147134| /* end confdefs.h.  */
147135| #include <libelf/libelf.h>
147136configure:3208: result: no
147137configure:3244: checking for libelf/libelf.h
147138configure:3251: result: no
147139configure:3136: checking sgidefs.h usability
147140configure:3149: cc -c -g  conftest.c >&5
147141"configure", line 3193: cannot find include file: <sgidefs.h>
147142cc: acomp failed for conftest.c
147143configure:3152: $? = 2
147144configure: failed program was:
147145| #line 3138 "configure"
147146| /* confdefs.h.  */
147147|
147148| #define PACKAGE_NAME ""
147149| #define PACKAGE_TARNAME ""
147150| #define PACKAGE_VERSION ""
147151| #define PACKAGE_STRING ""
147152| #define PACKAGE_BUGREPORT ""
147153| #define STDC_HEADERS 1
147154| #define HAVE_SYS_TYPES_H 1
147155| #define HAVE_SYS_STAT_H 1
147156| #define HAVE_STDLIB_H 1
147157| #define HAVE_STRING_H 1
147158| #define HAVE_MEMORY_H 1
147159| #define HAVE_STRINGS_H 1
147160| #define HAVE_INTTYPES_H 1
147161| #define HAVE_STDINT_H 1
147162| #define HAVE_UNISTD_H 1
147163| #define HAVE_ALLOCA_H 1
147164| #define HAVE_ELF_H 1
147165| #define HAVE_LIBELF_H 1
147166| /* end confdefs.h.  */
147167| #include <stdio.h>
147168| #if HAVE_SYS_TYPES_H
147169| # include <sys/types.h>
147170| #endif
147171| #if HAVE_SYS_STAT_H
147172| # include <sys/stat.h>
147173| #endif
147174| #if STDC_HEADERS
147175| # include <stdlib.h>
147176| # include <stddef.h>
147177| #else
147178| # if HAVE_STDLIB_H
147179| #  include <stdlib.h>
147180| # endif
147181| #endif
147182| #if HAVE_STRING_H
147183| # if !STDC_HEADERS && HAVE_MEMORY_H
147184| #  include <memory.h>
147185| # endif
147186| # include <string.h>
147187| #endif
147188| #if HAVE_STRINGS_H
147189| # include <strings.h>
147190| #endif
147191| #if HAVE_INTTYPES_H
147192| # include <inttypes.h>
147193| #else
147194| # if HAVE_STDINT_H
147195| #  include <stdint.h>
147196| # endif
147197| #endif
147198| #if HAVE_UNISTD_H
147199| # include <unistd.h>
147200| #endif
147201| #include <sgidefs.h>
147202configure:3168: result: no
147203configure:3172: checking sgidefs.h presence
147204configure:3183: cc -E  conftest.c
147205"configure", line 3195: cannot find include file: <sgidefs.h>
147206cc: acomp failed for conftest.c
147207configure:3189: $? = 2
147208configure: failed program was:
147209| #line 3174 "configure"
147210| /* confdefs.h.  */
147211|
147212| #define PACKAGE_NAME ""
147213| #define PACKAGE_TARNAME ""
147214| #define PACKAGE_VERSION ""
147215| #define PACKAGE_STRING ""
147216| #define PACKAGE_BUGREPORT ""
147217| #define STDC_HEADERS 1
147218| #define HAVE_SYS_TYPES_H 1
147219| #define HAVE_SYS_STAT_H 1
147220| #define HAVE_STDLIB_H 1
147221| #define HAVE_STRING_H 1
147222| #define HAVE_MEMORY_H 1
147223| #define HAVE_STRINGS_H 1
147224| #define HAVE_INTTYPES_H 1
147225| #define HAVE_STDINT_H 1
147226| #define HAVE_UNISTD_H 1
147227| #define HAVE_ALLOCA_H 1
147228| #define HAVE_ELF_H 1
147229| #define HAVE_LIBELF_H 1
147230| /* end confdefs.h.  */
147231| #include <sgidefs.h>
147232configure:3208: result: no
147233configure:3244: checking for sgidefs.h
147234configure:3251: result: no
147235configure:3127: checking for sys/types.h
147236configure:3132: result: yes
147237configure:3136: checking sys/ia64/elf.h usability
147238configure:3149: cc -c -g  conftest.c >&5
147239"configure", line 3194: cannot find include file: <sys/ia64/elf.h>
147240cc: acomp failed for conftest.c
147241configure:3152: $? = 2
147242configure: failed program was:
147243| #line 3138 "configure"
147244| /* confdefs.h.  */
147245|
147246| #define PACKAGE_NAME ""
147247| #define PACKAGE_TARNAME ""
147248| #define PACKAGE_VERSION ""
147249| #define PACKAGE_STRING ""
147250| #define PACKAGE_BUGREPORT ""
147251| #define STDC_HEADERS 1
147252| #define HAVE_SYS_TYPES_H 1
147253| #define HAVE_SYS_STAT_H 1
147254| #define HAVE_STDLIB_H 1
147255| #define HAVE_STRING_H 1
147256| #define HAVE_MEMORY_H 1
147257| #define HAVE_STRINGS_H 1
147258| #define HAVE_INTTYPES_H 1
147259| #define HAVE_STDINT_H 1
147260| #define HAVE_UNISTD_H 1
147261| #define HAVE_ALLOCA_H 1
147262| #define HAVE_ELF_H 1
147263| #define HAVE_LIBELF_H 1
147264| #define HAVE_SYS_TYPES_H 1
147265| /* end confdefs.h.  */
147266| #include <stdio.h>
147267| #if HAVE_SYS_TYPES_H
147268| # include <sys/types.h>
147269| #endif
147270| #if HAVE_SYS_STAT_H
147271| # include <sys/stat.h>
147272| #endif
147273| #if STDC_HEADERS
147274| # include <stdlib.h>
147275| # include <stddef.h>
147276| #else
147277| # if HAVE_STDLIB_H
147278| #  include <stdlib.h>
147279| # endif
147280| #endif
147281| #if HAVE_STRING_H
147282| # if !STDC_HEADERS && HAVE_MEMORY_H
147283| #  include <memory.h>
147284| # endif
147285| # include <string.h>
147286| #endif
147287| #if HAVE_STRINGS_H
147288| # include <strings.h>
147289| #endif
147290| #if HAVE_INTTYPES_H
147291| # include <inttypes.h>
147292| #else
147293| # if HAVE_STDINT_H
147294| #  include <stdint.h>
147295| # endif
147296| #endif
147297| #if HAVE_UNISTD_H
147298| # include <unistd.h>
147299| #endif
147300| #include <sys/ia64/elf.h>
147301configure:3168: result: no
147302configure:3172: checking sys/ia64/elf.h presence
147303configure:3183: cc -E  conftest.c
147304"configure", line 3196: cannot find include file: <sys/ia64/elf.h>
147305cc: acomp failed for conftest.c
147306configure:3189: $? = 2
147307configure: failed program was:
147308| #line 3174 "configure"
147309| /* confdefs.h.  */
147310|
147311| #define PACKAGE_NAME ""
147312| #define PACKAGE_TARNAME ""
147313| #define PACKAGE_VERSION ""
147314| #define PACKAGE_STRING ""
147315| #define PACKAGE_BUGREPORT ""
147316| #define STDC_HEADERS 1
147317| #define HAVE_SYS_TYPES_H 1
147318| #define HAVE_SYS_STAT_H 1
147319| #define HAVE_STDLIB_H 1
147320| #define HAVE_STRING_H 1
147321| #define HAVE_MEMORY_H 1
147322| #define HAVE_STRINGS_H 1
147323| #define HAVE_INTTYPES_H 1
147324| #define HAVE_STDINT_H 1
147325| #define HAVE_UNISTD_H 1
147326| #define HAVE_ALLOCA_H 1
147327| #define HAVE_ELF_H 1
147328| #define HAVE_LIBELF_H 1
147329| #define HAVE_SYS_TYPES_H 1
147330| /* end confdefs.h.  */
147331| #include <sys/ia64/elf.h>
147332configure:3208: result: no
147333configure:3244: checking for sys/ia64/elf.h
147334configure:3251: result: no
147335configure:3265: checking for elf64_getehdr in -lelf
147336configure:3296: cc -o conftest -g   conftest.c -lelf   >&5
147337configure:3299: $? = 0
147338configure:3302: test -s conftest
147339configure:3305: $? = 0
147340configure:3317: result: yes
147341configure:3326: checking for elf64_getshdr in -lelf
147342configure:3357: cc -o conftest -g   conftest.c -lelf   >&5
147343configure:3360: $? = 0
147344configure:3363: test -s conftest
147345configure:3366: $? = 0
147346configure:3378: result: yes
147347configure:3404: cc -c -g  conftest.c >&5
147348"configure", line 3415: undefined symbol: __uint32_t
147349"configure", line 3415: syntax error before or at: p
147350"configure", line 3415: undefined symbol: p
147351cc: acomp failed for conftest.c
147352configure:3407: $? = 2
147353configure: failed program was:
147354| #line 3387 "configure"
147355| /* confdefs.h.  */
147356|
147357| #define PACKAGE_NAME ""
147358| #define PACKAGE_TARNAME ""
147359| #define PACKAGE_VERSION ""
147360| #define PACKAGE_STRING ""
147361| #define PACKAGE_BUGREPORT ""
147362| #define STDC_HEADERS 1
147363| #define HAVE_SYS_TYPES_H 1
147364| #define HAVE_SYS_STAT_H 1
147365| #define HAVE_STDLIB_H 1
147366| #define HAVE_STRING_H 1
147367| #define HAVE_MEMORY_H 1
147368| #define HAVE_STRINGS_H 1
147369| #define HAVE_INTTYPES_H 1
147370| #define HAVE_STDINT_H 1
147371| #define HAVE_UNISTD_H 1
147372| #define HAVE_ALLOCA_H 1
147373| #define HAVE_ELF_H 1
147374| #define HAVE_LIBELF_H 1
147375| #define HAVE_SYS_TYPES_H 1
147376| #define HAVE_ELF64_GETEHDR 1
147377| #define HAVE_ELF64_GETSHDR 1
147378| /* end confdefs.h.  */
147379|
147380| int
147381| main ()
147382| {
147383| __uint32_t p; p = 3;
147384|   ;
147385|   return 0;
147386| }
147387configure:3442: cc -c -g  conftest.c >&5
147388"configure", line 3453: undefined symbol: __uint64_t
147389"configure", line 3453: syntax error before or at: p
147390"configure", line 3453: undefined symbol: p
147391cc: acomp failed for conftest.c
147392configure:3445: $? = 2
147393configure: failed program was:
147394| #line 3425 "configure"
147395| /* confdefs.h.  */
147396|
147397| #define PACKAGE_NAME ""
147398| #define PACKAGE_TARNAME ""
147399| #define PACKAGE_VERSION ""
147400| #define PACKAGE_STRING ""
147401| #define PACKAGE_BUGREPORT ""
147402| #define STDC_HEADERS 1
147403| #define HAVE_SYS_TYPES_H 1
147404| #define HAVE_SYS_STAT_H 1
147405| #define HAVE_STDLIB_H 1
147406| #define HAVE_STRING_H 1
147407| #define HAVE_MEMORY_H 1
147408| #define HAVE_STRINGS_H 1
147409| #define HAVE_INTTYPES_H 1
147410| #define HAVE_STDINT_H 1
147411| #define HAVE_UNISTD_H 1
147412| #define HAVE_ALLOCA_H 1
147413| #define HAVE_ELF_H 1
147414| #define HAVE_LIBELF_H 1
147415| #define HAVE_SYS_TYPES_H 1
147416| #define HAVE_ELF64_GETEHDR 1
147417| #define HAVE_ELF64_GETSHDR 1
147418| /* end confdefs.h.  */
147419|
147420| int
147421| main ()
147422| {
147423| __uint64_t p; p = 3;
147424|   ;
147425|   return 0;
147426| }
147427configure:3480: cc -c -g  conftest.c >&5
147428"configure", line 3491: undefined symbol: __uint32_t
147429"configure", line 3491: syntax error before or at: p
147430"configure", line 3491: undefined symbol: p
147431cc: acomp failed for conftest.c
147432configure:3483: $? = 2
147433configure: failed program was:
147434| #line 3463 "configure"
147435| /* confdefs.h.  */
147436|
147437| #define PACKAGE_NAME ""
147438| #define PACKAGE_TARNAME ""
147439| #define PACKAGE_VERSION ""
147440| #define PACKAGE_STRING ""
147441| #define PACKAGE_BUGREPORT ""
147442| #define STDC_HEADERS 1
147443| #define HAVE_SYS_TYPES_H 1
147444| #define HAVE_SYS_STAT_H 1
147445| #define HAVE_STDLIB_H 1
147446| #define HAVE_STRING_H 1
147447| #define HAVE_MEMORY_H 1
147448| #define HAVE_STRINGS_H 1
147449| #define HAVE_INTTYPES_H 1
147450| #define HAVE_STDINT_H 1
147451| #define HAVE_UNISTD_H 1
147452| #define HAVE_ALLOCA_H 1
147453| #define HAVE_ELF_H 1
147454| #define HAVE_LIBELF_H 1
147455| #define HAVE_SYS_TYPES_H 1
147456| #define HAVE_ELF64_GETEHDR 1
147457| #define HAVE_ELF64_GETSHDR 1
147458| /* end confdefs.h.  */
147459| #include <sys/types.h>
147460| int
147461| main ()
147462| {
147463|   __uint32_t p; p = 3;
147464|   ;
147465|   return 0;
147466| }
147467configure:3518: cc -c -g  conftest.c >&5
147468"configure", line 3529: undefined symbol: R_IA_64_DIR32LSB
147469cc: acomp failed for conftest.c
147470configure:3521: $? = 2
147471configure: failed program was:
147472| #line 3501 "configure"
147473| /* confdefs.h.  */
147474|
147475| #define PACKAGE_NAME ""
147476| #define PACKAGE_TARNAME ""
147477| #define PACKAGE_VERSION ""
147478| #define PACKAGE_STRING ""
147479| #define PACKAGE_BUGREPORT ""
147480| #define STDC_HEADERS 1
147481| #define HAVE_SYS_TYPES_H 1
147482| #define HAVE_SYS_STAT_H 1
147483| #define HAVE_STDLIB_H 1
147484| #define HAVE_STRING_H 1
147485| #define HAVE_MEMORY_H 1
147486| #define HAVE_STRINGS_H 1
147487| #define HAVE_INTTYPES_H 1
147488| #define HAVE_STDINT_H 1
147489| #define HAVE_UNISTD_H 1
147490| #define HAVE_ALLOCA_H 1
147491| #define HAVE_ELF_H 1
147492| #define HAVE_LIBELF_H 1
147493| #define HAVE_SYS_TYPES_H 1
147494| #define HAVE_ELF64_GETEHDR 1
147495| #define HAVE_ELF64_GETSHDR 1
147496| /* end confdefs.h.  */
147497| #include <elf.h>
147498| int
147499| main ()
147500| {
147501|   int p; p = R_IA_64_DIR32LSB;
147502|   ;
147503|   return 0;
147504| }
147505configure:3557: cc -c -g  conftest.c >&5
147506"configure", line 3568: undefined symbol: R_IA_64_DIR32LSB
147507cc: acomp failed for conftest.c
147508configure:3560: $? = 2
147509configure: failed program was:
147510| #line 3540 "configure"
147511| /* confdefs.h.  */
147512|
147513| #define PACKAGE_NAME ""
147514| #define PACKAGE_TARNAME ""
147515| #define PACKAGE_VERSION ""
147516| #define PACKAGE_STRING ""
147517| #define PACKAGE_BUGREPORT ""
147518| #define STDC_HEADERS 1
147519| #define HAVE_SYS_TYPES_H 1
147520| #define HAVE_SYS_STAT_H 1
147521| #define HAVE_STDLIB_H 1
147522| #define HAVE_STRING_H 1
147523| #define HAVE_MEMORY_H 1
147524| #define HAVE_STRINGS_H 1
147525| #define HAVE_INTTYPES_H 1
147526| #define HAVE_STDINT_H 1
147527| #define HAVE_UNISTD_H 1
147528| #define HAVE_ALLOCA_H 1
147529| #define HAVE_ELF_H 1
147530| #define HAVE_LIBELF_H 1
147531| #define HAVE_SYS_TYPES_H 1
147532| #define HAVE_ELF64_GETEHDR 1
147533| #define HAVE_ELF64_GETSHDR 1
147534| /* end confdefs.h.  */
147535| #include <elf.h>
147536| int
147537| main ()
147538| {
147539|   int p; p = R_IA_64_DIR32LSB;
147540|   ;
147541|   return 0;
147542| }
147543configure:3675: creating ./config.status
147544
147545## ---------------------- ##
147546## Running config.status. ##
147547## ---------------------- ##
147548
147549This file was extended by config.status, which was
147550generated by GNU Autoconf 2.57.  Invocation command line was
147551
147552  CONFIG_FILES    =
147553  CONFIG_HEADERS  =
147554  CONFIG_LINKS    =
147555  CONFIG_COMMANDS =
147556  $ ./config.status
147557
147558on defiant
147559
147560config.status:619: creating Makefile
147561config.status:723: creating config.h
147562
147563## ---------------- ##
147564## Cache variables. ##
147565## ---------------- ##
147566
147567ac_cv_c_bigendian=no
147568ac_cv_c_compiler_gnu=no
147569ac_cv_env_CC_set=set
147570ac_cv_env_CC_value=cc
147571ac_cv_env_CFLAGS_set=
147572ac_cv_env_CFLAGS_value=
147573ac_cv_env_CPPFLAGS_set=
147574ac_cv_env_CPPFLAGS_value=
147575ac_cv_env_CPP_set=
147576ac_cv_env_CPP_value=
147577ac_cv_env_LDFLAGS_set=
147578ac_cv_env_LDFLAGS_value=
147579ac_cv_env_build_alias_set=
147580ac_cv_env_build_alias_value=
147581ac_cv_env_host_alias_set=
147582ac_cv_env_host_alias_value=
147583ac_cv_env_target_alias_set=
147584ac_cv_env_target_alias_value=
147585ac_cv_exeext=
147586ac_cv_header_alloca_h=yes
147587ac_cv_header_elf_h=yes
147588ac_cv_header_elfaccess_h=no
147589ac_cv_header_inttypes_h=yes
147590ac_cv_header_libelf_h=yes
147591ac_cv_header_libelf_libelf_h=no
147592ac_cv_header_memory_h=yes
147593ac_cv_header_sgidefs_h=no
147594ac_cv_header_stdc=yes
147595ac_cv_header_stdint_h=yes
147596ac_cv_header_stdlib_h=yes
147597ac_cv_header_string_h=yes
147598ac_cv_header_strings_h=yes
147599ac_cv_header_sys_ia64_elf_h=no
147600ac_cv_header_sys_stat_h=yes
147601ac_cv_header_sys_types_h=yes
147602ac_cv_header_unistd_h=yes
147603ac_cv_lib_elf_elf64_getehdr=yes
147604ac_cv_lib_elf_elf64_getshdr=yes
147605ac_cv_objext=o
147606ac_cv_path_install='/usr/local/bin/ginstall -c'
147607ac_cv_prog_CPP='cc -E'
147608ac_cv_prog_ac_ct_AR=ar
147609ac_cv_prog_ac_ct_CC=cc
147610ac_cv_prog_ac_ct_RANLIB=ranlib
147611ac_cv_prog_cc_g=yes
147612ac_cv_prog_cc_stdc=
147613ac_cv_prog_egrep=egrep
147614
147615## ----------------- ##
147616## Output variables. ##
147617## ----------------- ##
147618
147619AR='ar'
147620CC='cc'
147621CFLAGS='-g'
147622CPP='cc -E'
147623CPPFLAGS=''
147624DEFS='-DHAVE_CONFIG_H'
147625ECHO_C=''
147626ECHO_N='-n'
147627ECHO_T=''
147628EGREP='egrep'
147629EXEEXT=''
147630INSTALL_DATA='${INSTALL} -m 644'
147631INSTALL_PROGRAM='${INSTALL}'
147632INSTALL_SCRIPT='${INSTALL}'
147633LDFLAGS=''
147634LIBOBJS=''
147635LIBS=''
147636LTLIBOBJS=''
147637OBJEXT='o'
147638PACKAGE_BUGREPORT=''
147639PACKAGE_NAME=''
147640PACKAGE_STRING=''
147641PACKAGE_TARNAME=''
147642PACKAGE_VERSION=''
147643PATH_SEPARATOR=':'
147644RANLIB='ranlib'
147645SHELL='/bin/bash'
147646ac_ct_AR='ar'
147647ac_ct_CC='cc'
147648ac_ct_RANLIB='ranlib'
147649bindir='${exec_prefix}/bin'
147650build_alias=''
147651datadir='${prefix}/share'
147652exec_prefix='${prefix}'
147653host_alias=''
147654includedir='${prefix}/include'
147655infodir='${prefix}/info'
147656libdir='${exec_prefix}/lib'
147657libexecdir='${exec_prefix}/libexec'
147658localstatedir='${prefix}/var'
147659mandir='${prefix}/man'
147660oldincludedir='/usr/include'
147661prefix='/p/local/dwarf-20040203'
147662program_transform_name='s,x,x,'
147663sbindir='${exec_prefix}/sbin'
147664sharedstatedir='${prefix}/com'
147665sysconfdir='${prefix}/etc'
147666target_alias=''
147667
147668## ----------- ##
147669## confdefs.h. ##
147670## ----------- ##
147671
147672#define HAVE_ALLOCA_H 1
147673#define HAVE_ELF64_GETEHDR 1
147674#define HAVE_ELF64_GETSHDR 1
147675#define HAVE_ELF_H 1
147676#define HAVE_INTTYPES_H 1
147677#define HAVE_LIBELF_H 1
147678#define HAVE_MEMORY_H 1
147679#define HAVE_STDINT_H 1
147680#define HAVE_STDLIB_H 1
147681#define HAVE_STRINGS_H 1
147682#define HAVE_STRING_H 1
147683#define HAVE_SYS_STAT_H 1
147684#define HAVE_SYS_TYPES_H 1
147685#define HAVE_SYS_TYPES_H 1
147686#define HAVE_UNISTD_H 1
147687#define PACKAGE_BUGREPORT ""
147688#define PACKAGE_NAME ""
147689#define PACKAGE_STRING ""
147690#define PACKAGE_TARNAME ""
147691#define PACKAGE_VERSION ""
147692#define STDC_HEADERS 1
147693
147694configure: exit 0
147695��0707010001adc0000081ed00011e740000000a000000014046f23b00006d25000000660000000000000000000000000000001700000000libdwarf/config.status����#! /bin/bash
147696# Generated by configure.
147697# Run this file to recreate the current configuration.
147698# Compiler output produced by configure, useful for debugging
147699# configure, is in config.log if it exists.
147700
147701debug=false
147702ac_cs_recheck=false
147703ac_cs_silent=false
147704SHELL=${CONFIG_SHELL-/bin/bash}
147705## --------------------- ##
147706## M4sh Initialization.  ##
147707## --------------------- ##
147708
147709# Be Bourne compatible
147710if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
147711  emulate sh
147712  NULLCMD=:
147713  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
147714  # is contrary to our usage.  Disable this feature.
147715  alias -g '${1+"$@"}'='"$@"'
147716elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
147717  set -o posix
147718fi
147719
147720# Support unset when possible.
147721if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
147722  as_unset=unset
147723else
147724  as_unset=false
147725fi
147726
147727
147728# Work around bugs in pre-3.0 UWIN ksh.
147729$as_unset ENV MAIL MAILPATH
147730PS1='$ '
147731PS2='> '
147732PS4='+ '
147733
147734# NLS nuisances.
147735for as_var in \
147736  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
147737  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
147738  LC_TELEPHONE LC_TIME
147739do
147740  if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
147741    eval $as_var=C; export $as_var
147742  else
147743    $as_unset $as_var
147744  fi
147745done
147746
147747# Required to use basename.
147748if expr a : '\(a\)' >/dev/null 2>&1; then
147749  as_expr=expr
147750else
147751  as_expr=false
147752fi
147753
147754if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
147755  as_basename=basename
147756else
147757  as_basename=false
147758fi
147759
147760
147761# Name of the executable.
147762as_me=`$as_basename "$0" ||
147763$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
147764	 X"$0" : 'X\(//\)$' \| \
147765	 X"$0" : 'X\(/\)$' \| \
147766	 .     : '\(.\)' 2>/dev/null ||
147767echo X/"$0" |
147768    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
147769  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
147770  	  /^X\/\(\/\).*/{ s//\1/; q; }
147771  	  s/.*/./; q'`
147772
147773
147774# PATH needs CR, and LINENO needs CR and PATH.
147775# Avoid depending upon Character Ranges.
147776as_cr_letters='abcdefghijklmnopqrstuvwxyz'
147777as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
147778as_cr_Letters=$as_cr_letters$as_cr_LETTERS
147779as_cr_digits='0123456789'
147780as_cr_alnum=$as_cr_Letters$as_cr_digits
147781
147782# The user is always right.
147783if test "${PATH_SEPARATOR+set}" != set; then
147784  echo "#! /bin/sh" >conf$$.sh
147785  echo  "exit 0"   >>conf$$.sh
147786  chmod +x conf$$.sh
147787  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
147788    PATH_SEPARATOR=';'
147789  else
147790    PATH_SEPARATOR=:
147791  fi
147792  rm -f conf$$.sh
147793fi
147794
147795
147796  as_lineno_1=$LINENO
147797  as_lineno_2=$LINENO
147798  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
147799  test "x$as_lineno_1" != "x$as_lineno_2" &&
147800  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
147801  # Find who we are.  Look in the path if we contain no path at all
147802  # relative or not.
147803  case $0 in
147804    *[\\/]* ) as_myself=$0 ;;
147805    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
147806for as_dir in $PATH
147807do
147808  IFS=$as_save_IFS
147809  test -z "$as_dir" && as_dir=.
147810  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
147811done
147812
147813       ;;
147814  esac
147815  # We did not find ourselves, most probably we were run as `sh COMMAND'
147816  # in which case we are not to be found in the path.
147817  if test "x$as_myself" = x; then
147818    as_myself=$0
147819  fi
147820  if test ! -f "$as_myself"; then
147821    { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
147822echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
147823   { (exit 1); exit 1; }; }
147824  fi
147825  case $CONFIG_SHELL in
147826  '')
147827    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
147828for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
147829do
147830  IFS=$as_save_IFS
147831  test -z "$as_dir" && as_dir=.
147832  for as_base in sh bash ksh sh5; do
147833	 case $as_dir in
147834	 /*)
147835	   if ("$as_dir/$as_base" -c '
147836  as_lineno_1=$LINENO
147837  as_lineno_2=$LINENO
147838  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
147839  test "x$as_lineno_1" != "x$as_lineno_2" &&
147840  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
147841	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
147842	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
147843	     CONFIG_SHELL=$as_dir/$as_base
147844	     export CONFIG_SHELL
147845	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
147846	   fi;;
147847	 esac
147848       done
147849done
147850;;
147851  esac
147852
147853  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
147854  # uniformly replaced by the line number.  The first 'sed' inserts a
147855  # line-number line before each line; the second 'sed' does the real
147856  # work.  The second script uses 'N' to pair each line-number line
147857  # with the numbered line, and appends trailing '-' during
147858  # substitution so that $LINENO is not a special case at line end.
147859  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
147860  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
147861  sed '=' <$as_myself |
147862    sed '
147863      N
147864      s,$,-,
147865      : loop
147866      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
147867      t loop
147868      s,-$,,
147869      s,^['$as_cr_digits']*\n,,
147870    ' >$as_me.lineno &&
147871  chmod +x $as_me.lineno ||
147872    { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
147873echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
147874   { (exit 1); exit 1; }; }
147875
147876  # Don't try to exec as it changes $[0], causing all sort of problems
147877  # (the dirname of $[0] is not the place where we might find the
147878  # original and so on.  Autoconf is especially sensible to this).
147879  . ./$as_me.lineno
147880  # Exit status is that of the last command.
147881  exit
147882}
147883
147884
147885case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
147886  *c*,-n*) ECHO_N= ECHO_C='
147887' ECHO_T='	' ;;
147888  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
147889  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
147890esac
147891
147892if expr a : '\(a\)' >/dev/null 2>&1; then
147893  as_expr=expr
147894else
147895  as_expr=false
147896fi
147897
147898rm -f conf$$ conf$$.exe conf$$.file
147899echo >conf$$.file
147900if ln -s conf$$.file conf$$ 2>/dev/null; then
147901  # We could just check for DJGPP; but this test a) works b) is more generic
147902  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
147903  if test -f conf$$.exe; then
147904    # Don't use ln at all; we don't have any links
147905    as_ln_s='cp -p'
147906  else
147907    as_ln_s='ln -s'
147908  fi
147909elif ln conf$$.file conf$$ 2>/dev/null; then
147910  as_ln_s=ln
147911else
147912  as_ln_s='cp -p'
147913fi
147914rm -f conf$$ conf$$.exe conf$$.file
147915
147916if mkdir -p . 2>/dev/null; then
147917  as_mkdir_p=:
147918else
147919  as_mkdir_p=false
147920fi
147921
147922as_executable_p="test -f"
147923
147924# Sed expression to map a string onto a valid CPP name.
147925as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
147926
147927# Sed expression to map a string onto a valid variable name.
147928as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
147929
147930
147931# IFS
147932# We need space, tab and new line, in precisely that order.
147933as_nl='
147934'
147935IFS=" 	$as_nl"
147936
147937# CDPATH.
147938$as_unset CDPATH
147939
147940exec 6>&1
147941
147942# Open the log real soon, to keep \$[0] and so on meaningful, and to
147943# report actual input values of CONFIG_FILES etc. instead of their
147944# values after options handling.  Logging --version etc. is OK.
147945exec 5>>config.log
147946{
147947  echo
147948  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
147949## Running $as_me. ##
147950_ASBOX
147951} >&5
147952cat >&5 <<_CSEOF
147953
147954This file was extended by $as_me, which was
147955generated by GNU Autoconf 2.57.  Invocation command line was
147956
147957  CONFIG_FILES    = $CONFIG_FILES
147958  CONFIG_HEADERS  = $CONFIG_HEADERS
147959  CONFIG_LINKS    = $CONFIG_LINKS
147960  CONFIG_COMMANDS = $CONFIG_COMMANDS
147961  $ $0 $@
147962
147963_CSEOF
147964echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
147965echo >&5
147966config_files=" Makefile"
147967config_headers=" config.h"
147968
147969ac_cs_usage="\
147970\`$as_me' instantiates files from templates according to the
147971current configuration.
147972
147973Usage: $0 [OPTIONS] [FILE]...
147974
147975  -h, --help       print this help, then exit
147976  -V, --version    print version number, then exit
147977  -q, --quiet      do not print progress messages
147978  -d, --debug      don't remove temporary files
147979      --recheck    update $as_me by reconfiguring in the same conditions
147980  --file=FILE[:TEMPLATE]
147981                   instantiate the configuration file FILE
147982  --header=FILE[:TEMPLATE]
147983                   instantiate the configuration header FILE
147984
147985Configuration files:
147986$config_files
147987
147988Configuration headers:
147989$config_headers
147990
147991Report bugs to <bug-autoconf@gnu.org>."
147992ac_cs_version="\
147993config.status
147994configured by ./configure, generated by GNU Autoconf 2.57,
147995  with options \"'--prefix=/p/local/dwarf-20040203' 'CC=cc'\"
147996
147997Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
147998Free Software Foundation, Inc.
147999This config.status script is free software; the Free Software Foundation
148000gives unlimited permission to copy, distribute and modify it."
148001srcdir=.
148002INSTALL="/usr/local/bin/ginstall -c"
148003# If no file are specified by the user, then we need to provide default
148004# value.  By we need to know if files were specified by the user.
148005ac_need_defaults=:
148006while test $# != 0
148007do
148008  case $1 in
148009  --*=*)
148010    ac_option=`expr "x$1" : 'x\([^=]*\)='`
148011    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
148012    ac_shift=:
148013    ;;
148014  -*)
148015    ac_option=$1
148016    ac_optarg=$2
148017    ac_shift=shift
148018    ;;
148019  *) # This is not an option, so the user has probably given explicit
148020     # arguments.
148021     ac_option=$1
148022     ac_need_defaults=false;;
148023  esac
148024
148025  case $ac_option in
148026  # Handling of the options.
148027  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
148028    ac_cs_recheck=: ;;
148029  --version | --vers* | -V )
148030    echo "$ac_cs_version"; exit 0 ;;
148031  --he | --h)
148032    # Conflict between --help and --header
148033    { { echo "$as_me:$LINENO: error: ambiguous option: $1
148034Try \`$0 --help' for more information." >&5
148035echo "$as_me: error: ambiguous option: $1
148036Try \`$0 --help' for more information." >&2;}
148037   { (exit 1); exit 1; }; };;
148038  --help | --hel | -h )
148039    echo "$ac_cs_usage"; exit 0 ;;
148040  --debug | --d* | -d )
148041    debug=: ;;
148042  --file | --fil | --fi | --f )
148043    $ac_shift
148044    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
148045    ac_need_defaults=false;;
148046  --header | --heade | --head | --hea )
148047    $ac_shift
148048    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
148049    ac_need_defaults=false;;
148050  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
148051  | -silent | --silent | --silen | --sile | --sil | --si | --s)
148052    ac_cs_silent=: ;;
148053
148054  # This is an error.
148055  -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
148056Try \`$0 --help' for more information." >&5
148057echo "$as_me: error: unrecognized option: $1
148058Try \`$0 --help' for more information." >&2;}
148059   { (exit 1); exit 1; }; } ;;
148060
148061  *) ac_config_targets="$ac_config_targets $1" ;;
148062
148063  esac
148064  shift
148065done
148066
148067ac_configure_extra_args=
148068
148069if $ac_cs_silent; then
148070  exec 6>/dev/null
148071  ac_configure_extra_args="$ac_configure_extra_args --silent"
148072fi
148073
148074if $ac_cs_recheck; then
148075  echo "running /bin/bash ./configure " '--prefix=/p/local/dwarf-20040203' 'CC=cc' $ac_configure_extra_args " --no-create --no-recursion" >&6
148076  exec /bin/bash ./configure '--prefix=/p/local/dwarf-20040203' 'CC=cc' $ac_configure_extra_args --no-create --no-recursion
148077fi
148078
148079for ac_config_target in $ac_config_targets
148080do
148081  case "$ac_config_target" in
148082  # Handling of arguments.
148083  "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
148084  "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
148085  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
148086echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
148087   { (exit 1); exit 1; }; };;
148088  esac
148089done
148090
148091# If the user did not use the arguments to specify the items to instantiate,
148092# then the envvar interface is used.  Set only those that are not.
148093# We use the long form for the default assignment because of an extremely
148094# bizarre bug on SunOS 4.1.3.
148095if $ac_need_defaults; then
148096  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
148097  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
148098fi
148099
148100# Have a temporary directory for convenience.  Make it in the build tree
148101# simply because there is no reason to put it here, and in addition,
148102# creating and moving files from /tmp can sometimes cause problems.
148103# Create a temporary directory, and hook for its removal unless debugging.
148104$debug ||
148105{
148106  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
148107  trap '{ (exit 1); exit 1; }' 1 2 13 15
148108}
148109
148110# Create a (secure) tmp directory for tmp files.
148111
148112{
148113  tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
148114  test -n "$tmp" && test -d "$tmp"
148115}  ||
148116{
148117  tmp=./confstat$$-$RANDOM
148118  (umask 077 && mkdir $tmp)
148119} ||
148120{
148121   echo "$me: cannot create a temporary directory in ." >&2
148122   { (exit 1); exit 1; }
148123}
148124
148125
148126#
148127# CONFIG_FILES section.
148128#
148129
148130# No need to generate the scripts if there are no CONFIG_FILES.
148131# This happens for instance when ./config.status config.h
148132if test -n "$CONFIG_FILES"; then
148133  # Protect against being on the right side of a sed subst in config.status.
148134  sed 's/,@/@@/; s/@,/@@/; s/,;t t$/@;t t/; /@;t t$/s/[\\&,]/\\&/g;
148135   s/@@/,@/; s/@@/@,/; s/@;t t$/,;t t/' >$tmp/subs.sed <<\CEOF
148136s,@SHELL@,/bin/bash,;t t
148137s,@PATH_SEPARATOR@,:,;t t
148138s,@PACKAGE_NAME@,,;t t
148139s,@PACKAGE_TARNAME@,,;t t
148140s,@PACKAGE_VERSION@,,;t t
148141s,@PACKAGE_STRING@,,;t t
148142s,@PACKAGE_BUGREPORT@,,;t t
148143s,@exec_prefix@,${prefix},;t t
148144s,@prefix@,/p/local/dwarf-20040203,;t t
148145s,@program_transform_name@,s,x,x,,;t t
148146s,@bindir@,${exec_prefix}/bin,;t t
148147s,@sbindir@,${exec_prefix}/sbin,;t t
148148s,@libexecdir@,${exec_prefix}/libexec,;t t
148149s,@datadir@,${prefix}/share,;t t
148150s,@sysconfdir@,${prefix}/etc,;t t
148151s,@sharedstatedir@,${prefix}/com,;t t
148152s,@localstatedir@,${prefix}/var,;t t
148153s,@libdir@,${exec_prefix}/lib,;t t
148154s,@includedir@,${prefix}/include,;t t
148155s,@oldincludedir@,/usr/include,;t t
148156s,@infodir@,${prefix}/info,;t t
148157s,@mandir@,${prefix}/man,;t t
148158s,@build_alias@,,;t t
148159s,@host_alias@,,;t t
148160s,@target_alias@,,;t t
148161s,@DEFS@,-DHAVE_CONFIG_H,;t t
148162s,@ECHO_C@,,;t t
148163s,@ECHO_N@,-n,;t t
148164s,@ECHO_T@,,;t t
148165s,@LIBS@,,;t t
148166s,@CC@,cc,;t t
148167s,@CFLAGS@,-g,;t t
148168s,@LDFLAGS@,,;t t
148169s,@CPPFLAGS@,,;t t
148170s,@ac_ct_CC@,cc,;t t
148171s,@EXEEXT@,,;t t
148172s,@OBJEXT@,o,;t t
148173s,@CPP@,cc -E,;t t
148174s,@EGREP@,egrep,;t t
148175s,@INSTALL_PROGRAM@,${INSTALL},;t t
148176s,@INSTALL_SCRIPT@,${INSTALL},;t t
148177s,@INSTALL_DATA@,${INSTALL} -m 644,;t t
148178s,@RANLIB@,ranlib,;t t
148179s,@ac_ct_RANLIB@,ranlib,;t t
148180s,@AR@,ar,;t t
148181s,@ac_ct_AR@,ar,;t t
148182s,@LIBOBJS@,,;t t
148183s,@LTLIBOBJS@,,;t t
148184CEOF
148185
148186  # Split the substitutions into bite-sized pieces for seds with
148187  # small command number limits, like on Digital OSF/1 and HP-UX.
148188  ac_max_sed_lines=48
148189  ac_sed_frag=1 # Number of current file.
148190  ac_beg=1 # First line for current file.
148191  ac_end=$ac_max_sed_lines # Line after last line for current file.
148192  ac_more_lines=:
148193  ac_sed_cmds=
148194  while $ac_more_lines; do
148195    if test $ac_beg -gt 1; then
148196      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
148197    else
148198      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
148199    fi
148200    if test ! -s $tmp/subs.frag; then
148201      ac_more_lines=false
148202    else
148203      # The purpose of the label and of the branching condition is to
148204      # speed up the sed processing (if there are no `@' at all, there
148205      # is no need to browse any of the substitutions).
148206      # These are the two extra sed commands mentioned above.
148207      (echo ':t
148208  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
148209      if test -z "$ac_sed_cmds"; then
148210  	ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
148211      else
148212  	ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
148213      fi
148214      ac_sed_frag=`expr $ac_sed_frag + 1`
148215      ac_beg=$ac_end
148216      ac_end=`expr $ac_end + $ac_max_sed_lines`
148217    fi
148218  done
148219  if test -z "$ac_sed_cmds"; then
148220    ac_sed_cmds=cat
148221  fi
148222fi # test -n "$CONFIG_FILES"
148223
148224for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
148225  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
148226  case $ac_file in
148227  - | *:- | *:-:* ) # input from stdin
148228        cat >$tmp/stdin
148229        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
148230        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
148231  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
148232        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
148233  * )   ac_file_in=$ac_file.in ;;
148234  esac
148235
148236  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
148237  ac_dir=`(dirname "$ac_file") 2>/dev/null ||
148238$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
148239         X"$ac_file" : 'X\(//\)[^/]' \| \
148240         X"$ac_file" : 'X\(//\)$' \| \
148241         X"$ac_file" : 'X\(/\)' \| \
148242         .     : '\(.\)' 2>/dev/null ||
148243echo X"$ac_file" |
148244    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
148245  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
148246  	  /^X\(\/\/\)$/{ s//\1/; q; }
148247  	  /^X\(\/\).*/{ s//\1/; q; }
148248  	  s/.*/./; q'`
148249  { if $as_mkdir_p; then
148250    mkdir -p "$ac_dir"
148251  else
148252    as_dir="$ac_dir"
148253    as_dirs=
148254    while test ! -d "$as_dir"; do
148255      as_dirs="$as_dir $as_dirs"
148256      as_dir=`(dirname "$as_dir") 2>/dev/null ||
148257$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
148258         X"$as_dir" : 'X\(//\)[^/]' \| \
148259         X"$as_dir" : 'X\(//\)$' \| \
148260         X"$as_dir" : 'X\(/\)' \| \
148261         .     : '\(.\)' 2>/dev/null ||
148262echo X"$as_dir" |
148263    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
148264  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
148265  	  /^X\(\/\/\)$/{ s//\1/; q; }
148266  	  /^X\(\/\).*/{ s//\1/; q; }
148267  	  s/.*/./; q'`
148268    done
148269    test ! -n "$as_dirs" || mkdir $as_dirs
148270  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
148271echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
148272   { (exit 1); exit 1; }; }; }
148273
148274  ac_builddir=.
148275
148276if test "$ac_dir" != .; then
148277  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
148278  # A "../" for each directory in $ac_dir_suffix.
148279  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
148280else
148281  ac_dir_suffix= ac_top_builddir=
148282fi
148283
148284case $srcdir in
148285  .)  # No --srcdir option.  We are building in place.
148286    ac_srcdir=.
148287    if test -z "$ac_top_builddir"; then
148288       ac_top_srcdir=.
148289    else
148290       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
148291    fi ;;
148292  [\\/]* | ?:[\\/]* )  # Absolute path.
148293    ac_srcdir=$srcdir$ac_dir_suffix;
148294    ac_top_srcdir=$srcdir ;;
148295  *) # Relative path.
148296    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
148297    ac_top_srcdir=$ac_top_builddir$srcdir ;;
148298esac
148299# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
148300# absolute.
148301ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
148302ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
148303ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
148304ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
148305
148306
148307  case $INSTALL in
148308  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
148309  *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
148310  esac
148311
148312  if test x"$ac_file" != x-; then
148313    { echo "$as_me:$LINENO: creating $ac_file" >&5
148314echo "$as_me: creating $ac_file" >&6;}
148315    rm -f "$ac_file"
148316  fi
148317  # Let's still pretend it is `configure' which instantiates (i.e., don't
148318  # use $as_me), people would be surprised to read:
148319  #    /* config.h.  Generated by config.status.  */
148320  if test x"$ac_file" = x-; then
148321    configure_input=
148322  else
148323    configure_input="$ac_file.  "
148324  fi
148325  configure_input=$configure_input"Generated from `echo $ac_file_in |
148326                                     sed 's,.*/,,'` by configure."
148327
148328  # First look for the input files in the build tree, otherwise in the
148329  # src tree.
148330  ac_file_inputs=`IFS=:
148331    for f in $ac_file_in; do
148332      case $f in
148333      -) echo $tmp/stdin ;;
148334      [\\/$]*)
148335         # Absolute (can't be DOS-style, as IFS=:)
148336         test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
148337echo "$as_me: error: cannot find input file: $f" >&2;}
148338   { (exit 1); exit 1; }; }
148339         echo $f;;
148340      *) # Relative
148341         if test -f "$f"; then
148342           # Build tree
148343           echo $f
148344         elif test -f "$srcdir/$f"; then
148345           # Source tree
148346           echo $srcdir/$f
148347         else
148348           # /dev/null tree
148349           { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
148350echo "$as_me: error: cannot find input file: $f" >&2;}
148351   { (exit 1); exit 1; }; }
148352         fi;;
148353      esac
148354    done` || { (exit 1); exit 1; }
148355  sed "/^[ 	]*VPATH[ 	]*=/{
148356s/:*\$(srcdir):*/:/;
148357s/:*\${srcdir}:*/:/;
148358s/:*@srcdir@:*/:/;
148359s/^\([^=]*=[ 	]*\):*/\1/;
148360s/:*$//;
148361s/^[^=]*=[ 	]*$//;
148362}
148363
148364:t
148365/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
148366s,@configure_input@,$configure_input,;t t
148367s,@srcdir@,$ac_srcdir,;t t
148368s,@abs_srcdir@,$ac_abs_srcdir,;t t
148369s,@top_srcdir@,$ac_top_srcdir,;t t
148370s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
148371s,@builddir@,$ac_builddir,;t t
148372s,@abs_builddir@,$ac_abs_builddir,;t t
148373s,@top_builddir@,$ac_top_builddir,;t t
148374s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
148375s,@INSTALL@,$ac_INSTALL,;t t
148376" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
148377  rm -f $tmp/stdin
148378  if test x"$ac_file" != x-; then
148379    mv $tmp/out $ac_file
148380  else
148381    cat $tmp/out
148382    rm -f $tmp/out
148383  fi
148384
148385done
148386
148387#
148388# CONFIG_HEADER section.
148389#
148390
148391# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
148392# NAME is the cpp macro being defined and VALUE is the value it is being given.
148393#
148394# ac_d sets the value in "#define NAME VALUE" lines.
148395ac_dA='s,^\([ 	]*\)#\([ 	]*define[ 	][ 	]*\)'
148396ac_dB='[ 	].*$,\1#\2'
148397ac_dC=' '
148398ac_dD=',;t'
148399# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
148400ac_uA='s,^\([ 	]*\)#\([ 	]*\)undef\([ 	][ 	]*\)'
148401ac_uB='$,\1#\2define\3'
148402ac_uC=' '
148403ac_uD=',;t'
148404
148405for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
148406  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
148407  case $ac_file in
148408  - | *:- | *:-:* ) # input from stdin
148409        cat >$tmp/stdin
148410        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
148411        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
148412  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
148413        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
148414  * )   ac_file_in=$ac_file.in ;;
148415  esac
148416
148417  test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
148418echo "$as_me: creating $ac_file" >&6;}
148419
148420  # First look for the input files in the build tree, otherwise in the
148421  # src tree.
148422  ac_file_inputs=`IFS=:
148423    for f in $ac_file_in; do
148424      case $f in
148425      -) echo $tmp/stdin ;;
148426      [\\/$]*)
148427         # Absolute (can't be DOS-style, as IFS=:)
148428         test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
148429echo "$as_me: error: cannot find input file: $f" >&2;}
148430   { (exit 1); exit 1; }; }
148431         echo $f;;
148432      *) # Relative
148433         if test -f "$f"; then
148434           # Build tree
148435           echo $f
148436         elif test -f "$srcdir/$f"; then
148437           # Source tree
148438           echo $srcdir/$f
148439         else
148440           # /dev/null tree
148441           { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
148442echo "$as_me: error: cannot find input file: $f" >&2;}
148443   { (exit 1); exit 1; }; }
148444         fi;;
148445      esac
148446    done` || { (exit 1); exit 1; }
148447  # Remove the trailing spaces.
148448  sed 's/[ 	]*$//' $ac_file_inputs >$tmp/in
148449
148450  # Handle all the #define templates only if necessary.
148451  if grep "^[ 	]*#[ 	]*define" $tmp/in >/dev/null; then
148452  # If there are no defines, we may have an empty if/fi
148453  :
148454  cat >$tmp/defines.sed <<CEOF
148455/^[ 	]*#[ 	]*define/!b
148456t clr
148457: clr
148458${ac_dA}PACKAGE_NAME${ac_dB}PACKAGE_NAME${ac_dC}""${ac_dD}
148459${ac_dA}PACKAGE_TARNAME${ac_dB}PACKAGE_TARNAME${ac_dC}""${ac_dD}
148460${ac_dA}PACKAGE_VERSION${ac_dB}PACKAGE_VERSION${ac_dC}""${ac_dD}
148461${ac_dA}PACKAGE_STRING${ac_dB}PACKAGE_STRING${ac_dC}""${ac_dD}
148462${ac_dA}PACKAGE_BUGREPORT${ac_dB}PACKAGE_BUGREPORT${ac_dC}""${ac_dD}
148463${ac_dA}STDC_HEADERS${ac_dB}STDC_HEADERS${ac_dC}1${ac_dD}
148464${ac_dA}HAVE_SYS_TYPES_H${ac_dB}HAVE_SYS_TYPES_H${ac_dC}1${ac_dD}
148465${ac_dA}HAVE_SYS_STAT_H${ac_dB}HAVE_SYS_STAT_H${ac_dC}1${ac_dD}
148466${ac_dA}HAVE_STDLIB_H${ac_dB}HAVE_STDLIB_H${ac_dC}1${ac_dD}
148467${ac_dA}HAVE_STRING_H${ac_dB}HAVE_STRING_H${ac_dC}1${ac_dD}
148468${ac_dA}HAVE_MEMORY_H${ac_dB}HAVE_MEMORY_H${ac_dC}1${ac_dD}
148469${ac_dA}HAVE_STRINGS_H${ac_dB}HAVE_STRINGS_H${ac_dC}1${ac_dD}
148470${ac_dA}HAVE_INTTYPES_H${ac_dB}HAVE_INTTYPES_H${ac_dC}1${ac_dD}
148471${ac_dA}HAVE_STDINT_H${ac_dB}HAVE_STDINT_H${ac_dC}1${ac_dD}
148472${ac_dA}HAVE_UNISTD_H${ac_dB}HAVE_UNISTD_H${ac_dC}1${ac_dD}
148473${ac_dA}HAVE_ALLOCA_H${ac_dB}HAVE_ALLOCA_H${ac_dC}1${ac_dD}
148474${ac_dA}HAVE_ELF_H${ac_dB}HAVE_ELF_H${ac_dC}1${ac_dD}
148475${ac_dA}HAVE_LIBELF_H${ac_dB}HAVE_LIBELF_H${ac_dC}1${ac_dD}
148476${ac_dA}HAVE_SYS_TYPES_H${ac_dB}HAVE_SYS_TYPES_H${ac_dC}1${ac_dD}
148477${ac_dA}HAVE_ELF64_GETEHDR${ac_dB}HAVE_ELF64_GETEHDR${ac_dC}1${ac_dD}
148478${ac_dA}HAVE_ELF64_GETSHDR${ac_dB}HAVE_ELF64_GETSHDR${ac_dC}1${ac_dD}
148479CEOF
148480  sed -f $tmp/defines.sed $tmp/in >$tmp/out
148481  rm -f $tmp/in
148482  mv $tmp/out $tmp/in
148483
148484  fi # grep
148485
148486  # Handle all the #undef templates
148487  cat >$tmp/undefs.sed <<CEOF
148488/^[ 	]*#[ 	]*undef/!b
148489t clr
148490: clr
148491${ac_uA}PACKAGE_NAME${ac_uB}PACKAGE_NAME${ac_uC}""${ac_uD}
148492${ac_uA}PACKAGE_TARNAME${ac_uB}PACKAGE_TARNAME${ac_uC}""${ac_uD}
148493${ac_uA}PACKAGE_VERSION${ac_uB}PACKAGE_VERSION${ac_uC}""${ac_uD}
148494${ac_uA}PACKAGE_STRING${ac_uB}PACKAGE_STRING${ac_uC}""${ac_uD}
148495${ac_uA}PACKAGE_BUGREPORT${ac_uB}PACKAGE_BUGREPORT${ac_uC}""${ac_uD}
148496${ac_uA}STDC_HEADERS${ac_uB}STDC_HEADERS${ac_uC}1${ac_uD}
148497${ac_uA}HAVE_SYS_TYPES_H${ac_uB}HAVE_SYS_TYPES_H${ac_uC}1${ac_uD}
148498${ac_uA}HAVE_SYS_STAT_H${ac_uB}HAVE_SYS_STAT_H${ac_uC}1${ac_uD}
148499${ac_uA}HAVE_STDLIB_H${ac_uB}HAVE_STDLIB_H${ac_uC}1${ac_uD}
148500${ac_uA}HAVE_STRING_H${ac_uB}HAVE_STRING_H${ac_uC}1${ac_uD}
148501${ac_uA}HAVE_MEMORY_H${ac_uB}HAVE_MEMORY_H${ac_uC}1${ac_uD}
148502${ac_uA}HAVE_STRINGS_H${ac_uB}HAVE_STRINGS_H${ac_uC}1${ac_uD}
148503${ac_uA}HAVE_INTTYPES_H${ac_uB}HAVE_INTTYPES_H${ac_uC}1${ac_uD}
148504${ac_uA}HAVE_STDINT_H${ac_uB}HAVE_STDINT_H${ac_uC}1${ac_uD}
148505${ac_uA}HAVE_UNISTD_H${ac_uB}HAVE_UNISTD_H${ac_uC}1${ac_uD}
148506${ac_uA}HAVE_ALLOCA_H${ac_uB}HAVE_ALLOCA_H${ac_uC}1${ac_uD}
148507${ac_uA}HAVE_ELF_H${ac_uB}HAVE_ELF_H${ac_uC}1${ac_uD}
148508${ac_uA}HAVE_LIBELF_H${ac_uB}HAVE_LIBELF_H${ac_uC}1${ac_uD}
148509${ac_uA}HAVE_SYS_TYPES_H${ac_uB}HAVE_SYS_TYPES_H${ac_uC}1${ac_uD}
148510${ac_uA}HAVE_ELF64_GETEHDR${ac_uB}HAVE_ELF64_GETEHDR${ac_uC}1${ac_uD}
148511${ac_uA}HAVE_ELF64_GETSHDR${ac_uB}HAVE_ELF64_GETSHDR${ac_uC}1${ac_uD}
148512s,^[ 	]*#[ 	]*undef[ 	][ 	]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
148513CEOF
148514  sed -f $tmp/undefs.sed $tmp/in >$tmp/out
148515  rm -f $tmp/in
148516  mv $tmp/out $tmp/in
148517
148518  # Let's still pretend it is `configure' which instantiates (i.e., don't
148519  # use $as_me), people would be surprised to read:
148520  #    /* config.h.  Generated by config.status.  */
148521  if test x"$ac_file" = x-; then
148522    echo "/* Generated by configure.  */" >$tmp/config.h
148523  else
148524    echo "/* $ac_file.  Generated by configure.  */" >$tmp/config.h
148525  fi
148526  cat $tmp/in >>$tmp/config.h
148527  rm -f $tmp/in
148528  if test x"$ac_file" != x-; then
148529    if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
148530      { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
148531echo "$as_me: $ac_file is unchanged" >&6;}
148532    else
148533      ac_dir=`(dirname "$ac_file") 2>/dev/null ||
148534$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
148535         X"$ac_file" : 'X\(//\)[^/]' \| \
148536         X"$ac_file" : 'X\(//\)$' \| \
148537         X"$ac_file" : 'X\(/\)' \| \
148538         .     : '\(.\)' 2>/dev/null ||
148539echo X"$ac_file" |
148540    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
148541  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
148542  	  /^X\(\/\/\)$/{ s//\1/; q; }
148543  	  /^X\(\/\).*/{ s//\1/; q; }
148544  	  s/.*/./; q'`
148545      { if $as_mkdir_p; then
148546    mkdir -p "$ac_dir"
148547  else
148548    as_dir="$ac_dir"
148549    as_dirs=
148550    while test ! -d "$as_dir"; do
148551      as_dirs="$as_dir $as_dirs"
148552      as_dir=`(dirname "$as_dir") 2>/dev/null ||
148553$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
148554         X"$as_dir" : 'X\(//\)[^/]' \| \
148555         X"$as_dir" : 'X\(//\)$' \| \
148556         X"$as_dir" : 'X\(/\)' \| \
148557         .     : '\(.\)' 2>/dev/null ||
148558echo X"$as_dir" |
148559    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
148560  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
148561  	  /^X\(\/\/\)$/{ s//\1/; q; }
148562  	  /^X\(\/\).*/{ s//\1/; q; }
148563  	  s/.*/./; q'`
148564    done
148565    test ! -n "$as_dirs" || mkdir $as_dirs
148566  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
148567echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
148568   { (exit 1); exit 1; }; }; }
148569
148570      rm -f $ac_file
148571      mv $tmp/config.h $ac_file
148572    fi
148573  else
148574    cat $tmp/config.h
148575    rm -f $tmp/config.h
148576  fi
148577done
148578
148579{ (exit 0); exit 0; }
148580���0707010001adc5000081a400011e740000000a000000014046f23b0000110d000000660000000000000000000000000000001200000000libdwarf/Makefile�#
148581#
148582#  Copyright (C) 2000, 2003 Silicon Graphics, Inc.  All Rights Reserved.
148583#
148584#  This program is free software; you can redistribute it and/or modify it
148585#  under the terms of version 2.1 of the GNU Lesser General Public License
148586#  as published by the Free Software Foundation.
148587#
148588#  This program is distributed in the hope that it would be useful, but
148589#  WITHOUT ANY WARRANTY; without even the implied warranty of
148590#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
148591#
148592#  Further, this software is distributed without any warranty that it is
148593#  free of the rightful claim of any third person regarding infringement
148594#  or the like.  Any license provided herein, whether implied or
148595#  otherwise, applies only to this software file.  Patent licenses, if
148596#  any, provided herein do not apply to combinations of this program with
148597#  other software, or any other product whatsoever.
148598#
148599#  You should have received a copy of the GNU Lesser General Public
148600#  License along with this program; if not, write the Free Software
148601#  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
148602#  USA.
148603#
148604#  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
148605#  Mountain View, CA 94043, or:
148606#
148607#  http://www.sgi.com
148608#
148609#  For further information regarding this notice, see:
148610#
148611#  http://oss.sgi.com/projects/GenInfo/NoticeExplan
148612#
148613#
148614
148615#
148616#  Makefile for libdwarf
148617#  This is made very simple so it should work with
148618#  any 'make'.
148619#
148620
148621srcdir =	.
148622
148623
148624prefix =	/p/local/dwarf-20040203
148625exec_prefix =	${prefix}
148626bindir =	$(exec_prefix)/bin
148627libdir =	$(exec_prefix)/lib
148628
148629INSTALL =	/usr/local/bin/ginstall -c
148630INSTALL_PROGRAM = ${INSTALL}
148631INSTALL_DATA =	${INSTALL} -m 644
148632SHELL =		/bin/sh
148633CC =		cc
148634AR =		ar
148635#ARFLAGS =	@ARFLAGS@
148636RM =		rm
148637RANLIB =	ranlib
148638DEFS =		-DHAVE_CONFIG_H
148639LIBS =
148640INCLUDES =	-I. -I$(srcdir)
148641CFLAGS =	-g $(INCLUDES)
148642LDFLAGS =
148643
148644
148645BUILD_BASE = .
148646
148647OBJS= dwarf_abbrev.o \
148648        dwarf_alloc.o \
148649        dwarf_arange.o \
148650        dwarf_die_deliv.o \
148651        dwarf_error.o \
148652        dwarf_form.o \
148653        dwarf_frame.o \
148654        dwarf_funcs.o \
148655        dwarf_global.o \
148656        dwarf_init_finish.o  \
148657        dwarf_line.o \
148658        dwarf_loc.o \
148659        dwarf_query.o \
148660        dwarf_string.o \
148661        dwarf_stubs.o \
148662        dwarf_types.o \
148663        dwarf_util.o \
148664        dwarf_leb.o \
148665        dwarf_vars.o \
148666        dwarf_weaks.o    \
148667        dwarf_addr_finder.o \
148668	dwarf_sort_line.o \
148669	dwarf_print_lines.o \
148670	dwarf_macro.o \
148671        pro_alloc.o \
148672        pro_arange.o \
148673        pro_die.o \
148674	pro_encode_nm.o \
148675        pro_error.o \
148676        pro_expr.o \
148677        pro_finish.o \
148678        pro_forms.o \
148679        pro_funcs.o \
148680        pro_frame.o \
148681        pro_init.o \
148682        pro_line.o \
148683        pro_reloc.o \
148684        pro_reloc_stream.o \
148685        pro_reloc_symbolic.o \
148686        pro_pubnames.o \
148687        pro_section.o \
148688        pro_types.o \
148689        pro_vars.o \
148690	pro_macinfo.o \
148691        pro_weaks.o
148692
148693
148694all:		libdwarf.a
148695
148696libdwarf.a:	$(OBJS)
148697		$(AR) $(ARFLAGS) $@ $(OBJS)
148698
148699#
148700# The following are very SGI-centric
148701# psroff is just a troff formatter.
148702# the .mm files are in ATT/USL/USG mm form.
148703#
148704
148705psbld:		libdwarf2.1.ps libdwarf2p.1.ps dwarf.v2.ps index.v2.ps mips_extensions.ps
148706
148707# pr expands tabs to spaces: this avoids problems with tab
148708# interpretation
148709
148710libdwarf2.1.ps:  $(BUILD_BASE)/libdwarf2.1.mm
148711		pr -t -e $(BUILD_BASE)/libdwarf2.1.mm \
148712		  | tbl | psroff -t -mm >libdwarf2.1.ps
148713
148714libdwarf2p.1.ps:  $(BUILD_BASE)/libdwarf2p.1.mm
148715		pr -t -e  $(BUILD_BASE)/libdwarf2p.1.mm \
148716		  | tbl | psroff -t -mm >libdwarf2p.1.ps
148717
148718# At present, the newIndex is not usable: we have no tools
148719# to build a new index page at the moment.
148720
148721dwarf.v2.ps:	$(BUILD_BASE)/dwarf.v2.mm
148722		pic $(BUILD_BASE)/dwarf.v2.mm \
148723		  | tbl | psroff -t -mm >dwarf.v2.ps 2> newIndex
148724		-cp dwarf.v2.ps $(BUILD_BASE)
148725		-cp newIndex $(BUILD_BASE)
148726
148727# the index is only useful till the document changes: it is
148728# not autmatically correct. It was prepared by tools internal
148729# to USL/Novell
148730
148731index.v2.ps:  index.v2.mm
148732		pic index.v2.mm | tbl | psroff -t -mm >index.v2.ps
148733
148734
148735mips_extensions.ps: mips_extensions.mm
148736		pr -t -e mips_extensions.mm | tbl | \
148737                 psroff -t -mm >mips_extensions.ps
148738
148739clean:
148740		rm -f *.o libdwarf.a
148741
148742distclean:	clean
148743		rm -f config.status config.log config.cache config.h
148744
148745shar:
148746		@echo "shar not set up yet"
148747dist:
148748		@echo "dist not set up yet"
148749���0707010001adc6000081a400011e740000000a000000014046f23b0000118c000000660000000000000000000000000000001200000000libdwarf/config.h�/* config.h.  Generated by configure.  */
148750/* config.h.in.  Generated from configure.in by autoheader.  */
148751/*
148752
148753  Copyright (C) 2000,2003,2004 Silicon Graphics, Inc.  All Rights Reserved.
148754
148755  This program is free software; you can redistribute it and/or modify it
148756  under the terms of version 2.1 of the GNU Lesser General Public License
148757  as published by the Free Software Foundation.
148758
148759  This program is distributed in the hope that it would be useful, but
148760  WITHOUT ANY WARRANTY; without even the implied warranty of
148761  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
148762
148763  Further, this software is distributed without any warranty that it is
148764  free of the rightful claim of any third person regarding infringement
148765  or the like.  Any license provided herein, whether implied or
148766  otherwise, applies only to this software file.  Patent licenses, if
148767  any, provided herein do not apply to combinations of this program with
148768  other software, or any other product whatsoever.
148769
148770  You should have received a copy of the GNU Lesser General Public
148771  License along with this program; if not, write the Free Software
148772  Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
148773  USA.
148774
148775  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
148776  Mountain View, CA 94043, or:
148777
148778  http://www.sgi.com
148779
148780  For further information regarding this notice, see:
148781
148782  http://oss.sgi.com/projects/GenInfo/NoticeExplan
148783
148784*/
148785
148786
148787
148788/* Define to 1 if the elf64_getshdr function is in libelf.a */
148789#define HAVE_ELF64_GETSHDR 1
148790
148791/* Define to 1 if the elf64_getehdr function is in libelf.a */
148792#define HAVE_ELF64_GETEHDR 1
148793
148794
148795/* see if __uint32_t is predefined in the compiler */
148796/* #undef HAVE___UINT32_T */
148797
148798/* see if __uint64_t is predefined in the compiler */
148799/* #undef HAVE___UINT64_T */
148800
148801/* Define 1 if sys/types.h defines __uint32_t */
148802/* #undef HAVE___UINT32_T_IN_SYS_TYPES_H */
148803
148804/* Define 1 if  R_IA_64_DIR32LSB is defined (might be enum value) */
148805/* #undef HAVE_R_IA_64_DIR32LSB */
148806
148807/* Define 1 if sys/ia64/elf.h exists*/
148808/* #undef HAVE_SYS_IA64_ELF_H */
148809
148810/* Define 1 if want to build with 32/64bit section offsets for ia64 */
148811/* per the dwarf2 committee proposal adopted Dec 1999 */
148812/* #undef HAVE_DWARF2_99_EXTENSION */
148813
148814/* Define 1 if want only 32bit section offsets per pure dwarf2.0.0 spec */
148815/* Only one of HAVE_OLD_DWARF2_32BIT_OFFSET or HAVE_DWARF2_99_EXTENSION */
148816/* may be defined */
148817/* #undef HAVE_OLD_DWARF2_32BIT_OFFSET */
148818
148819
148820/* Define to 1 if you have the <alloca.h> header file. */
148821#define HAVE_ALLOCA_H 1
148822
148823/* Define to 1 if you have the <elfaccess.h> header file. */
148824/* #undef HAVE_ELFACCESS_H */
148825
148826/* Define to 1 if you have the <elf.h> header file. */
148827#define HAVE_ELF_H 1
148828
148829/* Define to 1 if you have the <inttypes.h> header file. */
148830#define HAVE_INTTYPES_H 1
148831
148832/* Define to 1 if you have the <libelf.h> header file. */
148833#define HAVE_LIBELF_H 1
148834
148835/* Define to 1 if you have the <libelf/libelf.h> header file. */
148836/* #undef HAVE_LIBELF_LIBELF_H */
148837
148838/* Define to 1 if you have the <memory.h> header file. */
148839#define HAVE_MEMORY_H 1
148840
148841/* Define to 1 if you have the <sgidefs.h> header file. */
148842/* #undef HAVE_SGIDEFS_H */
148843
148844/* Define to 1 if you have the <stdint.h> header file. */
148845#define HAVE_STDINT_H 1
148846
148847/* Define to 1 if you have the <stdlib.h> header file. */
148848#define HAVE_STDLIB_H 1
148849
148850/* Define to 1 if you have the <strings.h> header file. */
148851#define HAVE_STRINGS_H 1
148852
148853/* Define to 1 if you have the <string.h> header file. */
148854#define HAVE_STRING_H 1
148855
148856/* Define to 1 if you have the <sys/ia64/elf.h> header file. */
148857/* #undef HAVE_SYS_IA64_ELF_H */
148858
148859/* Define to 1 if you have the <sys/stat.h> header file. */
148860#define HAVE_SYS_STAT_H 1
148861
148862/* Define to 1 if you have the <sys/types.h> header file. */
148863#define HAVE_SYS_TYPES_H 1
148864
148865/* Define to 1 if you have the <unistd.h> header file. */
148866#define HAVE_UNISTD_H 1
148867
148868/* Define to the address where bug reports for this package should be sent. */
148869#define PACKAGE_BUGREPORT ""
148870
148871/* Define to the full name of this package. */
148872#define PACKAGE_NAME ""
148873
148874/* Define to the full name and version of this package. */
148875#define PACKAGE_STRING ""
148876
148877/* Define to the one symbol short name of this package. */
148878#define PACKAGE_TARNAME ""
148879
148880/* Define to the version of this package. */
148881#define PACKAGE_VERSION ""
148882
148883/* Define to 1 if you have the ANSI C header files. */
148884#define STDC_HEADERS 1
148885
148886/* Define to 1 if your processor stores words with the most significant byte
148887   first (like Motorola and SPARC, unlike Intel and VAX). */
148888/* #undef WORDS_BIGENDIAN */
14888907070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������