fa5d3c8ee404e7dc5a0796033c04eccb37e201cb
[deliverable/binutils-gdb.git] / gdb / dwarf2read.c
1 /* DWARF 2 debugging format support for GDB.
2
3 Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
4 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
5
6 Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
7 Inc. with support from Florida State University (under contract
8 with the Ada Joint Program Office), and Silicon Graphics, Inc.
9 Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
10 based on Fred Fish's (Cygnus Support) implementation of DWARF 1
11 support.
12
13 This file is part of GDB.
14
15 This program is free software; you can redistribute it and/or modify
16 it under the terms of the GNU General Public License as published by
17 the Free Software Foundation; either version 3 of the License, or
18 (at your option) any later version.
19
20 This program is distributed in the hope that it will be useful,
21 but WITHOUT ANY WARRANTY; without even the implied warranty of
22 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 GNU General Public License for more details.
24
25 You should have received a copy of the GNU General Public License
26 along with this program. If not, see <http://www.gnu.org/licenses/>. */
27
28 #include "defs.h"
29 #include "bfd.h"
30 #include "symtab.h"
31 #include "gdbtypes.h"
32 #include "objfiles.h"
33 #include "elf/dwarf2.h"
34 #include "buildsym.h"
35 #include "demangle.h"
36 #include "expression.h"
37 #include "filenames.h" /* for DOSish file names */
38 #include "macrotab.h"
39 #include "language.h"
40 #include "complaints.h"
41 #include "bcache.h"
42 #include "dwarf2expr.h"
43 #include "dwarf2loc.h"
44 #include "cp-support.h"
45 #include "hashtab.h"
46 #include "command.h"
47 #include "gdbcmd.h"
48
49 #include <fcntl.h>
50 #include "gdb_string.h"
51 #include "gdb_assert.h"
52 #include <sys/types.h>
53
54 /* A note on memory usage for this file.
55
56 At the present time, this code reads the debug info sections into
57 the objfile's objfile_obstack. A definite improvement for startup
58 time, on platforms which do not emit relocations for debug
59 sections, would be to use mmap instead. The object's complete
60 debug information is loaded into memory, partly to simplify
61 absolute DIE references.
62
63 Whether using obstacks or mmap, the sections should remain loaded
64 until the objfile is released, and pointers into the section data
65 can be used for any other data associated to the objfile (symbol
66 names, type names, location expressions to name a few). */
67
68 #if 0
69 /* .debug_info header for a compilation unit
70 Because of alignment constraints, this structure has padding and cannot
71 be mapped directly onto the beginning of the .debug_info section. */
72 typedef struct comp_unit_header
73 {
74 unsigned int length; /* length of the .debug_info
75 contribution */
76 unsigned short version; /* version number -- 2 for DWARF
77 version 2 */
78 unsigned int abbrev_offset; /* offset into .debug_abbrev section */
79 unsigned char addr_size; /* byte size of an address -- 4 */
80 }
81 _COMP_UNIT_HEADER;
82 #define _ACTUAL_COMP_UNIT_HEADER_SIZE 11
83 #endif
84
85 /* .debug_pubnames header
86 Because of alignment constraints, this structure has padding and cannot
87 be mapped directly onto the beginning of the .debug_info section. */
88 typedef struct pubnames_header
89 {
90 unsigned int length; /* length of the .debug_pubnames
91 contribution */
92 unsigned char version; /* version number -- 2 for DWARF
93 version 2 */
94 unsigned int info_offset; /* offset into .debug_info section */
95 unsigned int info_size; /* byte size of .debug_info section
96 portion */
97 }
98 _PUBNAMES_HEADER;
99 #define _ACTUAL_PUBNAMES_HEADER_SIZE 13
100
101 /* .debug_pubnames header
102 Because of alignment constraints, this structure has padding and cannot
103 be mapped directly onto the beginning of the .debug_info section. */
104 typedef struct aranges_header
105 {
106 unsigned int length; /* byte len of the .debug_aranges
107 contribution */
108 unsigned short version; /* version number -- 2 for DWARF
109 version 2 */
110 unsigned int info_offset; /* offset into .debug_info section */
111 unsigned char addr_size; /* byte size of an address */
112 unsigned char seg_size; /* byte size of segment descriptor */
113 }
114 _ARANGES_HEADER;
115 #define _ACTUAL_ARANGES_HEADER_SIZE 12
116
117 /* .debug_line statement program prologue
118 Because of alignment constraints, this structure has padding and cannot
119 be mapped directly onto the beginning of the .debug_info section. */
120 typedef struct statement_prologue
121 {
122 unsigned int total_length; /* byte length of the statement
123 information */
124 unsigned short version; /* version number -- 2 for DWARF
125 version 2 */
126 unsigned int prologue_length; /* # bytes between prologue &
127 stmt program */
128 unsigned char minimum_instruction_length; /* byte size of
129 smallest instr */
130 unsigned char default_is_stmt; /* initial value of is_stmt
131 register */
132 char line_base;
133 unsigned char line_range;
134 unsigned char opcode_base; /* number assigned to first special
135 opcode */
136 unsigned char *standard_opcode_lengths;
137 }
138 _STATEMENT_PROLOGUE;
139
140 static const struct objfile_data *dwarf2_objfile_data_key;
141
142 struct dwarf2_per_objfile
143 {
144 /* Sizes of debugging sections. */
145 unsigned int info_size;
146 unsigned int abbrev_size;
147 unsigned int line_size;
148 unsigned int pubnames_size;
149 unsigned int aranges_size;
150 unsigned int loc_size;
151 unsigned int macinfo_size;
152 unsigned int str_size;
153 unsigned int ranges_size;
154 unsigned int frame_size;
155 unsigned int eh_frame_size;
156
157 /* Loaded data from the sections. */
158 gdb_byte *info_buffer;
159 gdb_byte *abbrev_buffer;
160 gdb_byte *line_buffer;
161 gdb_byte *str_buffer;
162 gdb_byte *macinfo_buffer;
163 gdb_byte *ranges_buffer;
164 gdb_byte *loc_buffer;
165
166 /* A list of all the compilation units. This is used to locate
167 the target compilation unit of a particular reference. */
168 struct dwarf2_per_cu_data **all_comp_units;
169
170 /* The number of compilation units in ALL_COMP_UNITS. */
171 int n_comp_units;
172
173 /* A chain of compilation units that are currently read in, so that
174 they can be freed later. */
175 struct dwarf2_per_cu_data *read_in_chain;
176
177 /* A flag indicating wether this objfile has a section loaded at a
178 VMA of 0. */
179 int has_section_at_zero;
180 };
181
182 static struct dwarf2_per_objfile *dwarf2_per_objfile;
183
184 static asection *dwarf_info_section;
185 static asection *dwarf_abbrev_section;
186 static asection *dwarf_line_section;
187 static asection *dwarf_pubnames_section;
188 static asection *dwarf_aranges_section;
189 static asection *dwarf_loc_section;
190 static asection *dwarf_macinfo_section;
191 static asection *dwarf_str_section;
192 static asection *dwarf_ranges_section;
193 asection *dwarf_frame_section;
194 asection *dwarf_eh_frame_section;
195
196 /* names of the debugging sections */
197
198 #define INFO_SECTION ".debug_info"
199 #define ABBREV_SECTION ".debug_abbrev"
200 #define LINE_SECTION ".debug_line"
201 #define PUBNAMES_SECTION ".debug_pubnames"
202 #define ARANGES_SECTION ".debug_aranges"
203 #define LOC_SECTION ".debug_loc"
204 #define MACINFO_SECTION ".debug_macinfo"
205 #define STR_SECTION ".debug_str"
206 #define RANGES_SECTION ".debug_ranges"
207 #define FRAME_SECTION ".debug_frame"
208 #define EH_FRAME_SECTION ".eh_frame"
209
210 /* local data types */
211
212 /* We hold several abbreviation tables in memory at the same time. */
213 #ifndef ABBREV_HASH_SIZE
214 #define ABBREV_HASH_SIZE 121
215 #endif
216
217 /* The data in a compilation unit header, after target2host
218 translation, looks like this. */
219 struct comp_unit_head
220 {
221 unsigned long length;
222 short version;
223 unsigned int abbrev_offset;
224 unsigned char addr_size;
225 unsigned char signed_addr_p;
226
227 /* Size of file offsets; either 4 or 8. */
228 unsigned int offset_size;
229
230 /* Size of the length field; either 4 or 12. */
231 unsigned int initial_length_size;
232
233 /* Offset to the first byte of this compilation unit header in the
234 .debug_info section, for resolving relative reference dies. */
235 unsigned int offset;
236
237 /* Pointer to this compilation unit header in the .debug_info
238 section. */
239 gdb_byte *cu_head_ptr;
240
241 /* Pointer to the first die of this compilation unit. This will be
242 the first byte following the compilation unit header. */
243 gdb_byte *first_die_ptr;
244
245 /* Pointer to the next compilation unit header in the program. */
246 struct comp_unit_head *next;
247
248 /* Base address of this compilation unit. */
249 CORE_ADDR base_address;
250
251 /* Non-zero if base_address has been set. */
252 int base_known;
253 };
254
255 /* Fixed size for the DIE hash table. */
256 #ifndef REF_HASH_SIZE
257 #define REF_HASH_SIZE 1021
258 #endif
259
260 /* Internal state when decoding a particular compilation unit. */
261 struct dwarf2_cu
262 {
263 /* The objfile containing this compilation unit. */
264 struct objfile *objfile;
265
266 /* The header of the compilation unit.
267
268 FIXME drow/2003-11-10: Some of the things from the comp_unit_head
269 should logically be moved to the dwarf2_cu structure. */
270 struct comp_unit_head header;
271
272 struct function_range *first_fn, *last_fn, *cached_fn;
273
274 /* The language we are debugging. */
275 enum language language;
276 const struct language_defn *language_defn;
277
278 const char *producer;
279
280 /* The generic symbol table building routines have separate lists for
281 file scope symbols and all all other scopes (local scopes). So
282 we need to select the right one to pass to add_symbol_to_list().
283 We do it by keeping a pointer to the correct list in list_in_scope.
284
285 FIXME: The original dwarf code just treated the file scope as the
286 first local scope, and all other local scopes as nested local
287 scopes, and worked fine. Check to see if we really need to
288 distinguish these in buildsym.c. */
289 struct pending **list_in_scope;
290
291 /* DWARF abbreviation table associated with this compilation unit. */
292 struct abbrev_info **dwarf2_abbrevs;
293
294 /* Storage for the abbrev table. */
295 struct obstack abbrev_obstack;
296
297 /* Hash table holding all the loaded partial DIEs. */
298 htab_t partial_dies;
299
300 /* Storage for things with the same lifetime as this read-in compilation
301 unit, including partial DIEs. */
302 struct obstack comp_unit_obstack;
303
304 /* When multiple dwarf2_cu structures are living in memory, this field
305 chains them all together, so that they can be released efficiently.
306 We will probably also want a generation counter so that most-recently-used
307 compilation units are cached... */
308 struct dwarf2_per_cu_data *read_in_chain;
309
310 /* Backchain to our per_cu entry if the tree has been built. */
311 struct dwarf2_per_cu_data *per_cu;
312
313 /* How many compilation units ago was this CU last referenced? */
314 int last_used;
315
316 /* A hash table of die offsets for following references. */
317 struct die_info *die_ref_table[REF_HASH_SIZE];
318
319 /* Full DIEs if read in. */
320 struct die_info *dies;
321
322 /* A set of pointers to dwarf2_per_cu_data objects for compilation
323 units referenced by this one. Only set during full symbol processing;
324 partial symbol tables do not have dependencies. */
325 htab_t dependencies;
326
327 /* Header data from the line table, during full symbol processing. */
328 struct line_header *line_header;
329
330 /* Mark used when releasing cached dies. */
331 unsigned int mark : 1;
332
333 /* This flag will be set if this compilation unit might include
334 inter-compilation-unit references. */
335 unsigned int has_form_ref_addr : 1;
336
337 /* This flag will be set if this compilation unit includes any
338 DW_TAG_namespace DIEs. If we know that there are explicit
339 DIEs for namespaces, we don't need to try to infer them
340 from mangled names. */
341 unsigned int has_namespace_info : 1;
342 };
343
344 /* Persistent data held for a compilation unit, even when not
345 processing it. We put a pointer to this structure in the
346 read_symtab_private field of the psymtab. If we encounter
347 inter-compilation-unit references, we also maintain a sorted
348 list of all compilation units. */
349
350 struct dwarf2_per_cu_data
351 {
352 /* The start offset and length of this compilation unit. 2**30-1
353 bytes should suffice to store the length of any compilation unit
354 - if it doesn't, GDB will fall over anyway. */
355 unsigned long offset;
356 unsigned long length : 30;
357
358 /* Flag indicating this compilation unit will be read in before
359 any of the current compilation units are processed. */
360 unsigned long queued : 1;
361
362 /* This flag will be set if we need to load absolutely all DIEs
363 for this compilation unit, instead of just the ones we think
364 are interesting. It gets set if we look for a DIE in the
365 hash table and don't find it. */
366 unsigned int load_all_dies : 1;
367
368 /* Set iff currently read in. */
369 struct dwarf2_cu *cu;
370
371 /* If full symbols for this CU have been read in, then this field
372 holds a map of DIE offsets to types. It isn't always possible
373 to reconstruct this information later, so we have to preserve
374 it. */
375 htab_t type_hash;
376
377 /* The partial symbol table associated with this compilation unit,
378 or NULL for partial units (which do not have an associated
379 symtab). */
380 struct partial_symtab *psymtab;
381 };
382
383 /* The line number information for a compilation unit (found in the
384 .debug_line section) begins with a "statement program header",
385 which contains the following information. */
386 struct line_header
387 {
388 unsigned int total_length;
389 unsigned short version;
390 unsigned int header_length;
391 unsigned char minimum_instruction_length;
392 unsigned char default_is_stmt;
393 int line_base;
394 unsigned char line_range;
395 unsigned char opcode_base;
396
397 /* standard_opcode_lengths[i] is the number of operands for the
398 standard opcode whose value is i. This means that
399 standard_opcode_lengths[0] is unused, and the last meaningful
400 element is standard_opcode_lengths[opcode_base - 1]. */
401 unsigned char *standard_opcode_lengths;
402
403 /* The include_directories table. NOTE! These strings are not
404 allocated with xmalloc; instead, they are pointers into
405 debug_line_buffer. If you try to free them, `free' will get
406 indigestion. */
407 unsigned int num_include_dirs, include_dirs_size;
408 char **include_dirs;
409
410 /* The file_names table. NOTE! These strings are not allocated
411 with xmalloc; instead, they are pointers into debug_line_buffer.
412 Don't try to free them directly. */
413 unsigned int num_file_names, file_names_size;
414 struct file_entry
415 {
416 char *name;
417 unsigned int dir_index;
418 unsigned int mod_time;
419 unsigned int length;
420 int included_p; /* Non-zero if referenced by the Line Number Program. */
421 struct symtab *symtab; /* The associated symbol table, if any. */
422 } *file_names;
423
424 /* The start and end of the statement program following this
425 header. These point into dwarf2_per_objfile->line_buffer. */
426 gdb_byte *statement_program_start, *statement_program_end;
427 };
428
429 /* When we construct a partial symbol table entry we only
430 need this much information. */
431 struct partial_die_info
432 {
433 /* Offset of this DIE. */
434 unsigned int offset;
435
436 /* DWARF-2 tag for this DIE. */
437 ENUM_BITFIELD(dwarf_tag) tag : 16;
438
439 /* Language code associated with this DIE. This is only used
440 for the compilation unit DIE. */
441 unsigned int language : 8;
442
443 /* Assorted flags describing the data found in this DIE. */
444 unsigned int has_children : 1;
445 unsigned int is_external : 1;
446 unsigned int is_declaration : 1;
447 unsigned int has_type : 1;
448 unsigned int has_specification : 1;
449 unsigned int has_stmt_list : 1;
450 unsigned int has_pc_info : 1;
451
452 /* Flag set if the SCOPE field of this structure has been
453 computed. */
454 unsigned int scope_set : 1;
455
456 /* Flag set if the DIE has a byte_size attribute. */
457 unsigned int has_byte_size : 1;
458
459 /* The name of this DIE. Normally the value of DW_AT_name, but
460 sometimes DW_TAG_MIPS_linkage_name or a string computed in some
461 other fashion. */
462 char *name;
463 char *dirname;
464
465 /* The scope to prepend to our children. This is generally
466 allocated on the comp_unit_obstack, so will disappear
467 when this compilation unit leaves the cache. */
468 char *scope;
469
470 /* The location description associated with this DIE, if any. */
471 struct dwarf_block *locdesc;
472
473 /* If HAS_PC_INFO, the PC range associated with this DIE. */
474 CORE_ADDR lowpc;
475 CORE_ADDR highpc;
476
477 /* Pointer into the info_buffer pointing at the target of
478 DW_AT_sibling, if any. */
479 gdb_byte *sibling;
480
481 /* If HAS_SPECIFICATION, the offset of the DIE referred to by
482 DW_AT_specification (or DW_AT_abstract_origin or
483 DW_AT_extension). */
484 unsigned int spec_offset;
485
486 /* If HAS_STMT_LIST, the offset of the Line Number Information data. */
487 unsigned int line_offset;
488
489 /* Pointers to this DIE's parent, first child, and next sibling,
490 if any. */
491 struct partial_die_info *die_parent, *die_child, *die_sibling;
492 };
493
494 /* This data structure holds the information of an abbrev. */
495 struct abbrev_info
496 {
497 unsigned int number; /* number identifying abbrev */
498 enum dwarf_tag tag; /* dwarf tag */
499 unsigned short has_children; /* boolean */
500 unsigned short num_attrs; /* number of attributes */
501 struct attr_abbrev *attrs; /* an array of attribute descriptions */
502 struct abbrev_info *next; /* next in chain */
503 };
504
505 struct attr_abbrev
506 {
507 enum dwarf_attribute name;
508 enum dwarf_form form;
509 };
510
511 /* This data structure holds a complete die structure. */
512 struct die_info
513 {
514 enum dwarf_tag tag; /* Tag indicating type of die */
515 unsigned int abbrev; /* Abbrev number */
516 unsigned int offset; /* Offset in .debug_info section */
517 unsigned int num_attrs; /* Number of attributes */
518 struct attribute *attrs; /* An array of attributes */
519 struct die_info *next_ref; /* Next die in ref hash table */
520
521 /* The dies in a compilation unit form an n-ary tree. PARENT
522 points to this die's parent; CHILD points to the first child of
523 this node; and all the children of a given node are chained
524 together via their SIBLING fields, terminated by a die whose
525 tag is zero. */
526 struct die_info *child; /* Its first child, if any. */
527 struct die_info *sibling; /* Its next sibling, if any. */
528 struct die_info *parent; /* Its parent, if any. */
529
530 struct type *type; /* Cached type information */
531 };
532
533 /* Attributes have a name and a value */
534 struct attribute
535 {
536 enum dwarf_attribute name;
537 enum dwarf_form form;
538 union
539 {
540 char *str;
541 struct dwarf_block *blk;
542 unsigned long unsnd;
543 long int snd;
544 CORE_ADDR addr;
545 }
546 u;
547 };
548
549 struct function_range
550 {
551 const char *name;
552 CORE_ADDR lowpc, highpc;
553 int seen_line;
554 struct function_range *next;
555 };
556
557 /* Get at parts of an attribute structure */
558
559 #define DW_STRING(attr) ((attr)->u.str)
560 #define DW_UNSND(attr) ((attr)->u.unsnd)
561 #define DW_BLOCK(attr) ((attr)->u.blk)
562 #define DW_SND(attr) ((attr)->u.snd)
563 #define DW_ADDR(attr) ((attr)->u.addr)
564
565 /* Blocks are a bunch of untyped bytes. */
566 struct dwarf_block
567 {
568 unsigned int size;
569 gdb_byte *data;
570 };
571
572 #ifndef ATTR_ALLOC_CHUNK
573 #define ATTR_ALLOC_CHUNK 4
574 #endif
575
576 /* Allocate fields for structs, unions and enums in this size. */
577 #ifndef DW_FIELD_ALLOC_CHUNK
578 #define DW_FIELD_ALLOC_CHUNK 4
579 #endif
580
581 /* A zeroed version of a partial die for initialization purposes. */
582 static struct partial_die_info zeroed_partial_die;
583
584 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
585 but this would require a corresponding change in unpack_field_as_long
586 and friends. */
587 static int bits_per_byte = 8;
588
589 /* The routines that read and process dies for a C struct or C++ class
590 pass lists of data member fields and lists of member function fields
591 in an instance of a field_info structure, as defined below. */
592 struct field_info
593 {
594 /* List of data member and baseclasses fields. */
595 struct nextfield
596 {
597 struct nextfield *next;
598 int accessibility;
599 int virtuality;
600 struct field field;
601 }
602 *fields;
603
604 /* Number of fields. */
605 int nfields;
606
607 /* Number of baseclasses. */
608 int nbaseclasses;
609
610 /* Set if the accesibility of one of the fields is not public. */
611 int non_public_fields;
612
613 /* Member function fields array, entries are allocated in the order they
614 are encountered in the object file. */
615 struct nextfnfield
616 {
617 struct nextfnfield *next;
618 struct fn_field fnfield;
619 }
620 *fnfields;
621
622 /* Member function fieldlist array, contains name of possibly overloaded
623 member function, number of overloaded member functions and a pointer
624 to the head of the member function field chain. */
625 struct fnfieldlist
626 {
627 char *name;
628 int length;
629 struct nextfnfield *head;
630 }
631 *fnfieldlists;
632
633 /* Number of entries in the fnfieldlists array. */
634 int nfnfields;
635 };
636
637 /* One item on the queue of compilation units to read in full symbols
638 for. */
639 struct dwarf2_queue_item
640 {
641 struct dwarf2_per_cu_data *per_cu;
642 struct dwarf2_queue_item *next;
643 };
644
645 /* The current queue. */
646 static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
647
648 /* Loaded secondary compilation units are kept in memory until they
649 have not been referenced for the processing of this many
650 compilation units. Set this to zero to disable caching. Cache
651 sizes of up to at least twenty will improve startup time for
652 typical inter-CU-reference binaries, at an obvious memory cost. */
653 static int dwarf2_max_cache_age = 5;
654 static void
655 show_dwarf2_max_cache_age (struct ui_file *file, int from_tty,
656 struct cmd_list_element *c, const char *value)
657 {
658 fprintf_filtered (file, _("\
659 The upper bound on the age of cached dwarf2 compilation units is %s.\n"),
660 value);
661 }
662
663
664 /* Various complaints about symbol reading that don't abort the process */
665
666 static void
667 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
668 {
669 complaint (&symfile_complaints,
670 _("statement list doesn't fit in .debug_line section"));
671 }
672
673 static void
674 dwarf2_debug_line_missing_file_complaint (void)
675 {
676 complaint (&symfile_complaints,
677 _(".debug_line section has line data without a file"));
678 }
679
680 static void
681 dwarf2_complex_location_expr_complaint (void)
682 {
683 complaint (&symfile_complaints, _("location expression too complex"));
684 }
685
686 static void
687 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
688 int arg3)
689 {
690 complaint (&symfile_complaints,
691 _("const value length mismatch for '%s', got %d, expected %d"), arg1,
692 arg2, arg3);
693 }
694
695 static void
696 dwarf2_macros_too_long_complaint (void)
697 {
698 complaint (&symfile_complaints,
699 _("macro info runs off end of `.debug_macinfo' section"));
700 }
701
702 static void
703 dwarf2_macro_malformed_definition_complaint (const char *arg1)
704 {
705 complaint (&symfile_complaints,
706 _("macro debug info contains a malformed macro definition:\n`%s'"),
707 arg1);
708 }
709
710 static void
711 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
712 {
713 complaint (&symfile_complaints,
714 _("invalid attribute class or form for '%s' in '%s'"), arg1, arg2);
715 }
716
717 /* local function prototypes */
718
719 static void dwarf2_locate_sections (bfd *, asection *, void *);
720
721 #if 0
722 static void dwarf2_build_psymtabs_easy (struct objfile *, int);
723 #endif
724
725 static void dwarf2_create_include_psymtab (char *, struct partial_symtab *,
726 struct objfile *);
727
728 static void dwarf2_build_include_psymtabs (struct dwarf2_cu *,
729 struct partial_die_info *,
730 struct partial_symtab *);
731
732 static void dwarf2_build_psymtabs_hard (struct objfile *, int);
733
734 static void scan_partial_symbols (struct partial_die_info *,
735 CORE_ADDR *, CORE_ADDR *,
736 struct dwarf2_cu *);
737
738 static void add_partial_symbol (struct partial_die_info *,
739 struct dwarf2_cu *);
740
741 static int pdi_needs_namespace (enum dwarf_tag tag);
742
743 static void add_partial_namespace (struct partial_die_info *pdi,
744 CORE_ADDR *lowpc, CORE_ADDR *highpc,
745 struct dwarf2_cu *cu);
746
747 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
748 struct dwarf2_cu *cu);
749
750 static gdb_byte *locate_pdi_sibling (struct partial_die_info *orig_pdi,
751 gdb_byte *info_ptr,
752 bfd *abfd,
753 struct dwarf2_cu *cu);
754
755 static void dwarf2_psymtab_to_symtab (struct partial_symtab *);
756
757 static void psymtab_to_symtab_1 (struct partial_symtab *);
758
759 gdb_byte *dwarf2_read_section (struct objfile *, asection *);
760
761 static void dwarf2_read_abbrevs (bfd *abfd, struct dwarf2_cu *cu);
762
763 static void dwarf2_free_abbrev_table (void *);
764
765 static struct abbrev_info *peek_die_abbrev (gdb_byte *, unsigned int *,
766 struct dwarf2_cu *);
767
768 static struct abbrev_info *dwarf2_lookup_abbrev (unsigned int,
769 struct dwarf2_cu *);
770
771 static struct partial_die_info *load_partial_dies (bfd *, gdb_byte *, int,
772 struct dwarf2_cu *);
773
774 static gdb_byte *read_partial_die (struct partial_die_info *,
775 struct abbrev_info *abbrev, unsigned int,
776 bfd *, gdb_byte *, struct dwarf2_cu *);
777
778 static struct partial_die_info *find_partial_die (unsigned long,
779 struct dwarf2_cu *);
780
781 static void fixup_partial_die (struct partial_die_info *,
782 struct dwarf2_cu *);
783
784 static gdb_byte *read_full_die (struct die_info **, bfd *, gdb_byte *,
785 struct dwarf2_cu *, int *);
786
787 static gdb_byte *read_attribute (struct attribute *, struct attr_abbrev *,
788 bfd *, gdb_byte *, struct dwarf2_cu *);
789
790 static gdb_byte *read_attribute_value (struct attribute *, unsigned,
791 bfd *, gdb_byte *, struct dwarf2_cu *);
792
793 static unsigned int read_1_byte (bfd *, gdb_byte *);
794
795 static int read_1_signed_byte (bfd *, gdb_byte *);
796
797 static unsigned int read_2_bytes (bfd *, gdb_byte *);
798
799 static unsigned int read_4_bytes (bfd *, gdb_byte *);
800
801 static unsigned long read_8_bytes (bfd *, gdb_byte *);
802
803 static CORE_ADDR read_address (bfd *, gdb_byte *ptr, struct dwarf2_cu *,
804 unsigned int *);
805
806 static LONGEST read_initial_length (bfd *, gdb_byte *,
807 struct comp_unit_head *, unsigned int *);
808
809 static LONGEST read_offset (bfd *, gdb_byte *, const struct comp_unit_head *,
810 unsigned int *);
811
812 static gdb_byte *read_n_bytes (bfd *, gdb_byte *, unsigned int);
813
814 static char *read_string (bfd *, gdb_byte *, unsigned int *);
815
816 static char *read_indirect_string (bfd *, gdb_byte *,
817 const struct comp_unit_head *,
818 unsigned int *);
819
820 static unsigned long read_unsigned_leb128 (bfd *, gdb_byte *, unsigned int *);
821
822 static long read_signed_leb128 (bfd *, gdb_byte *, unsigned int *);
823
824 static gdb_byte *skip_leb128 (bfd *, gdb_byte *);
825
826 static void set_cu_language (unsigned int, struct dwarf2_cu *);
827
828 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
829 struct dwarf2_cu *);
830
831 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
832 struct dwarf2_cu *cu);
833
834 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
835
836 static struct die_info *die_specification (struct die_info *die,
837 struct dwarf2_cu *);
838
839 static void free_line_header (struct line_header *lh);
840
841 static void add_file_name (struct line_header *, char *, unsigned int,
842 unsigned int, unsigned int);
843
844 static struct line_header *(dwarf_decode_line_header
845 (unsigned int offset,
846 bfd *abfd, struct dwarf2_cu *cu));
847
848 static void dwarf_decode_lines (struct line_header *, char *, bfd *,
849 struct dwarf2_cu *, struct partial_symtab *);
850
851 static void dwarf2_start_subfile (char *, char *, char *);
852
853 static struct symbol *new_symbol (struct die_info *, struct type *,
854 struct dwarf2_cu *);
855
856 static void dwarf2_const_value (struct attribute *, struct symbol *,
857 struct dwarf2_cu *);
858
859 static void dwarf2_const_value_data (struct attribute *attr,
860 struct symbol *sym,
861 int bits);
862
863 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
864
865 static struct type *die_containing_type (struct die_info *,
866 struct dwarf2_cu *);
867
868 static struct type *tag_type_to_type (struct die_info *, struct dwarf2_cu *);
869
870 static void read_type_die (struct die_info *, struct dwarf2_cu *);
871
872 static char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
873
874 static char *typename_concat (struct obstack *,
875 const char *prefix,
876 const char *suffix,
877 struct dwarf2_cu *);
878
879 static void read_typedef (struct die_info *, struct dwarf2_cu *);
880
881 static void read_base_type (struct die_info *, struct dwarf2_cu *);
882
883 static void read_subrange_type (struct die_info *die, struct dwarf2_cu *cu);
884
885 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
886
887 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
888
889 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
890
891 static int dwarf2_get_pc_bounds (struct die_info *,
892 CORE_ADDR *, CORE_ADDR *, struct dwarf2_cu *);
893
894 static void get_scope_pc_bounds (struct die_info *,
895 CORE_ADDR *, CORE_ADDR *,
896 struct dwarf2_cu *);
897
898 static void dwarf2_add_field (struct field_info *, struct die_info *,
899 struct dwarf2_cu *);
900
901 static void dwarf2_attach_fields_to_type (struct field_info *,
902 struct type *, struct dwarf2_cu *);
903
904 static void dwarf2_add_member_fn (struct field_info *,
905 struct die_info *, struct type *,
906 struct dwarf2_cu *);
907
908 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
909 struct type *, struct dwarf2_cu *);
910
911 static void read_structure_type (struct die_info *, struct dwarf2_cu *);
912
913 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
914
915 static char *determine_class_name (struct die_info *die, struct dwarf2_cu *cu);
916
917 static void read_common_block (struct die_info *, struct dwarf2_cu *);
918
919 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
920
921 static const char *namespace_name (struct die_info *die,
922 int *is_anonymous, struct dwarf2_cu *);
923
924 static void read_enumeration_type (struct die_info *, struct dwarf2_cu *);
925
926 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
927
928 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
929
930 static void read_array_type (struct die_info *, struct dwarf2_cu *);
931
932 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
933 struct dwarf2_cu *);
934
935 static void read_tag_pointer_type (struct die_info *, struct dwarf2_cu *);
936
937 static void read_tag_ptr_to_member_type (struct die_info *,
938 struct dwarf2_cu *);
939
940 static void read_tag_reference_type (struct die_info *, struct dwarf2_cu *);
941
942 static void read_tag_const_type (struct die_info *, struct dwarf2_cu *);
943
944 static void read_tag_volatile_type (struct die_info *, struct dwarf2_cu *);
945
946 static void read_tag_string_type (struct die_info *, struct dwarf2_cu *);
947
948 static void read_subroutine_type (struct die_info *, struct dwarf2_cu *);
949
950 static struct die_info *read_comp_unit (gdb_byte *, bfd *, struct dwarf2_cu *);
951
952 static struct die_info *read_die_and_children (gdb_byte *info_ptr, bfd *abfd,
953 struct dwarf2_cu *,
954 gdb_byte **new_info_ptr,
955 struct die_info *parent);
956
957 static struct die_info *read_die_and_siblings (gdb_byte *info_ptr, bfd *abfd,
958 struct dwarf2_cu *,
959 gdb_byte **new_info_ptr,
960 struct die_info *parent);
961
962 static void free_die_list (struct die_info *);
963
964 static void process_die (struct die_info *, struct dwarf2_cu *);
965
966 static char *dwarf2_linkage_name (struct die_info *, struct dwarf2_cu *);
967
968 static char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
969
970 static struct die_info *dwarf2_extension (struct die_info *die,
971 struct dwarf2_cu *);
972
973 static char *dwarf_tag_name (unsigned int);
974
975 static char *dwarf_attr_name (unsigned int);
976
977 static char *dwarf_form_name (unsigned int);
978
979 static char *dwarf_stack_op_name (unsigned int);
980
981 static char *dwarf_bool_name (unsigned int);
982
983 static char *dwarf_type_encoding_name (unsigned int);
984
985 #if 0
986 static char *dwarf_cfi_name (unsigned int);
987
988 struct die_info *copy_die (struct die_info *);
989 #endif
990
991 static struct die_info *sibling_die (struct die_info *);
992
993 static void dump_die (struct die_info *);
994
995 static void dump_die_list (struct die_info *);
996
997 static void store_in_ref_table (unsigned int, struct die_info *,
998 struct dwarf2_cu *);
999
1000 static unsigned int dwarf2_get_ref_die_offset (struct attribute *,
1001 struct dwarf2_cu *);
1002
1003 static int dwarf2_get_attr_constant_value (struct attribute *, int);
1004
1005 static struct die_info *follow_die_ref (struct die_info *,
1006 struct attribute *,
1007 struct dwarf2_cu *);
1008
1009 /* memory allocation interface */
1010
1011 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1012
1013 static struct abbrev_info *dwarf_alloc_abbrev (struct dwarf2_cu *);
1014
1015 static struct die_info *dwarf_alloc_die (void);
1016
1017 static void initialize_cu_func_list (struct dwarf2_cu *);
1018
1019 static void add_to_cu_func_list (const char *, CORE_ADDR, CORE_ADDR,
1020 struct dwarf2_cu *);
1021
1022 static void dwarf_decode_macros (struct line_header *, unsigned int,
1023 char *, bfd *, struct dwarf2_cu *);
1024
1025 static int attr_form_is_block (struct attribute *);
1026
1027 static void dwarf2_symbol_mark_computed (struct attribute *attr,
1028 struct symbol *sym,
1029 struct dwarf2_cu *cu);
1030
1031 static gdb_byte *skip_one_die (gdb_byte *info_ptr, struct abbrev_info *abbrev,
1032 struct dwarf2_cu *cu);
1033
1034 static void free_stack_comp_unit (void *);
1035
1036 static hashval_t partial_die_hash (const void *item);
1037
1038 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1039
1040 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1041 (unsigned long offset, struct objfile *objfile);
1042
1043 static struct dwarf2_per_cu_data *dwarf2_find_comp_unit
1044 (unsigned long offset, struct objfile *objfile);
1045
1046 static void free_one_comp_unit (void *);
1047
1048 static void free_cached_comp_units (void *);
1049
1050 static void age_cached_comp_units (void);
1051
1052 static void free_one_cached_comp_unit (void *);
1053
1054 static void set_die_type (struct die_info *, struct type *,
1055 struct dwarf2_cu *);
1056
1057 static void reset_die_and_siblings_types (struct die_info *,
1058 struct dwarf2_cu *);
1059
1060 static void create_all_comp_units (struct objfile *);
1061
1062 static struct dwarf2_cu *load_full_comp_unit (struct dwarf2_per_cu_data *,
1063 struct objfile *);
1064
1065 static void process_full_comp_unit (struct dwarf2_per_cu_data *);
1066
1067 static void dwarf2_add_dependence (struct dwarf2_cu *,
1068 struct dwarf2_per_cu_data *);
1069
1070 static void dwarf2_mark (struct dwarf2_cu *);
1071
1072 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1073
1074 static void read_set_type (struct die_info *, struct dwarf2_cu *);
1075
1076
1077 /* Try to locate the sections we need for DWARF 2 debugging
1078 information and return true if we have enough to do something. */
1079
1080 int
1081 dwarf2_has_info (struct objfile *objfile)
1082 {
1083 struct dwarf2_per_objfile *data;
1084
1085 /* Initialize per-objfile state. */
1086 data = obstack_alloc (&objfile->objfile_obstack, sizeof (*data));
1087 memset (data, 0, sizeof (*data));
1088 set_objfile_data (objfile, dwarf2_objfile_data_key, data);
1089 dwarf2_per_objfile = data;
1090
1091 dwarf_info_section = 0;
1092 dwarf_abbrev_section = 0;
1093 dwarf_line_section = 0;
1094 dwarf_str_section = 0;
1095 dwarf_macinfo_section = 0;
1096 dwarf_frame_section = 0;
1097 dwarf_eh_frame_section = 0;
1098 dwarf_ranges_section = 0;
1099 dwarf_loc_section = 0;
1100
1101 bfd_map_over_sections (objfile->obfd, dwarf2_locate_sections, NULL);
1102 return (dwarf_info_section != NULL && dwarf_abbrev_section != NULL);
1103 }
1104
1105 /* This function is mapped across the sections and remembers the
1106 offset and size of each of the debugging sections we are interested
1107 in. */
1108
1109 static void
1110 dwarf2_locate_sections (bfd *abfd, asection *sectp, void *ignore_ptr)
1111 {
1112 if (strcmp (sectp->name, INFO_SECTION) == 0)
1113 {
1114 dwarf2_per_objfile->info_size = bfd_get_section_size (sectp);
1115 dwarf_info_section = sectp;
1116 }
1117 else if (strcmp (sectp->name, ABBREV_SECTION) == 0)
1118 {
1119 dwarf2_per_objfile->abbrev_size = bfd_get_section_size (sectp);
1120 dwarf_abbrev_section = sectp;
1121 }
1122 else if (strcmp (sectp->name, LINE_SECTION) == 0)
1123 {
1124 dwarf2_per_objfile->line_size = bfd_get_section_size (sectp);
1125 dwarf_line_section = sectp;
1126 }
1127 else if (strcmp (sectp->name, PUBNAMES_SECTION) == 0)
1128 {
1129 dwarf2_per_objfile->pubnames_size = bfd_get_section_size (sectp);
1130 dwarf_pubnames_section = sectp;
1131 }
1132 else if (strcmp (sectp->name, ARANGES_SECTION) == 0)
1133 {
1134 dwarf2_per_objfile->aranges_size = bfd_get_section_size (sectp);
1135 dwarf_aranges_section = sectp;
1136 }
1137 else if (strcmp (sectp->name, LOC_SECTION) == 0)
1138 {
1139 dwarf2_per_objfile->loc_size = bfd_get_section_size (sectp);
1140 dwarf_loc_section = sectp;
1141 }
1142 else if (strcmp (sectp->name, MACINFO_SECTION) == 0)
1143 {
1144 dwarf2_per_objfile->macinfo_size = bfd_get_section_size (sectp);
1145 dwarf_macinfo_section = sectp;
1146 }
1147 else if (strcmp (sectp->name, STR_SECTION) == 0)
1148 {
1149 dwarf2_per_objfile->str_size = bfd_get_section_size (sectp);
1150 dwarf_str_section = sectp;
1151 }
1152 else if (strcmp (sectp->name, FRAME_SECTION) == 0)
1153 {
1154 dwarf2_per_objfile->frame_size = bfd_get_section_size (sectp);
1155 dwarf_frame_section = sectp;
1156 }
1157 else if (strcmp (sectp->name, EH_FRAME_SECTION) == 0)
1158 {
1159 flagword aflag = bfd_get_section_flags (ignore_abfd, sectp);
1160 if (aflag & SEC_HAS_CONTENTS)
1161 {
1162 dwarf2_per_objfile->eh_frame_size = bfd_get_section_size (sectp);
1163 dwarf_eh_frame_section = sectp;
1164 }
1165 }
1166 else if (strcmp (sectp->name, RANGES_SECTION) == 0)
1167 {
1168 dwarf2_per_objfile->ranges_size = bfd_get_section_size (sectp);
1169 dwarf_ranges_section = sectp;
1170 }
1171
1172 if ((bfd_get_section_flags (abfd, sectp) & SEC_LOAD)
1173 && bfd_section_vma (abfd, sectp) == 0)
1174 dwarf2_per_objfile->has_section_at_zero = 1;
1175 }
1176
1177 /* Build a partial symbol table. */
1178
1179 void
1180 dwarf2_build_psymtabs (struct objfile *objfile, int mainline)
1181 {
1182 /* We definitely need the .debug_info and .debug_abbrev sections */
1183
1184 dwarf2_per_objfile->info_buffer = dwarf2_read_section (objfile, dwarf_info_section);
1185 dwarf2_per_objfile->abbrev_buffer = dwarf2_read_section (objfile, dwarf_abbrev_section);
1186
1187 if (dwarf_line_section)
1188 dwarf2_per_objfile->line_buffer = dwarf2_read_section (objfile, dwarf_line_section);
1189 else
1190 dwarf2_per_objfile->line_buffer = NULL;
1191
1192 if (dwarf_str_section)
1193 dwarf2_per_objfile->str_buffer = dwarf2_read_section (objfile, dwarf_str_section);
1194 else
1195 dwarf2_per_objfile->str_buffer = NULL;
1196
1197 if (dwarf_macinfo_section)
1198 dwarf2_per_objfile->macinfo_buffer = dwarf2_read_section (objfile,
1199 dwarf_macinfo_section);
1200 else
1201 dwarf2_per_objfile->macinfo_buffer = NULL;
1202
1203 if (dwarf_ranges_section)
1204 dwarf2_per_objfile->ranges_buffer = dwarf2_read_section (objfile, dwarf_ranges_section);
1205 else
1206 dwarf2_per_objfile->ranges_buffer = NULL;
1207
1208 if (dwarf_loc_section)
1209 dwarf2_per_objfile->loc_buffer = dwarf2_read_section (objfile, dwarf_loc_section);
1210 else
1211 dwarf2_per_objfile->loc_buffer = NULL;
1212
1213 if (mainline
1214 || (objfile->global_psymbols.size == 0
1215 && objfile->static_psymbols.size == 0))
1216 {
1217 init_psymbol_list (objfile, 1024);
1218 }
1219
1220 #if 0
1221 if (dwarf_aranges_offset && dwarf_pubnames_offset)
1222 {
1223 /* Things are significantly easier if we have .debug_aranges and
1224 .debug_pubnames sections */
1225
1226 dwarf2_build_psymtabs_easy (objfile, mainline);
1227 }
1228 else
1229 #endif
1230 /* only test this case for now */
1231 {
1232 /* In this case we have to work a bit harder */
1233 dwarf2_build_psymtabs_hard (objfile, mainline);
1234 }
1235 }
1236
1237 #if 0
1238 /* Build the partial symbol table from the information in the
1239 .debug_pubnames and .debug_aranges sections. */
1240
1241 static void
1242 dwarf2_build_psymtabs_easy (struct objfile *objfile, int mainline)
1243 {
1244 bfd *abfd = objfile->obfd;
1245 char *aranges_buffer, *pubnames_buffer;
1246 char *aranges_ptr, *pubnames_ptr;
1247 unsigned int entry_length, version, info_offset, info_size;
1248
1249 pubnames_buffer = dwarf2_read_section (objfile,
1250 dwarf_pubnames_section);
1251 pubnames_ptr = pubnames_buffer;
1252 while ((pubnames_ptr - pubnames_buffer) < dwarf2_per_objfile->pubnames_size)
1253 {
1254 struct comp_unit_head cu_header;
1255 unsigned int bytes_read;
1256
1257 entry_length = read_initial_length (abfd, pubnames_ptr, &cu_header,
1258 &bytes_read);
1259 pubnames_ptr += bytes_read;
1260 version = read_1_byte (abfd, pubnames_ptr);
1261 pubnames_ptr += 1;
1262 info_offset = read_4_bytes (abfd, pubnames_ptr);
1263 pubnames_ptr += 4;
1264 info_size = read_4_bytes (abfd, pubnames_ptr);
1265 pubnames_ptr += 4;
1266 }
1267
1268 aranges_buffer = dwarf2_read_section (objfile,
1269 dwarf_aranges_section);
1270
1271 }
1272 #endif
1273
1274 /* Read in the comp unit header information from the debug_info at
1275 info_ptr. */
1276
1277 static gdb_byte *
1278 read_comp_unit_head (struct comp_unit_head *cu_header,
1279 gdb_byte *info_ptr, bfd *abfd)
1280 {
1281 int signed_addr;
1282 unsigned int bytes_read;
1283 cu_header->length = read_initial_length (abfd, info_ptr, cu_header,
1284 &bytes_read);
1285 info_ptr += bytes_read;
1286 cu_header->version = read_2_bytes (abfd, info_ptr);
1287 info_ptr += 2;
1288 cu_header->abbrev_offset = read_offset (abfd, info_ptr, cu_header,
1289 &bytes_read);
1290 info_ptr += bytes_read;
1291 cu_header->addr_size = read_1_byte (abfd, info_ptr);
1292 info_ptr += 1;
1293 signed_addr = bfd_get_sign_extend_vma (abfd);
1294 if (signed_addr < 0)
1295 internal_error (__FILE__, __LINE__,
1296 _("read_comp_unit_head: dwarf from non elf file"));
1297 cu_header->signed_addr_p = signed_addr;
1298 return info_ptr;
1299 }
1300
1301 static gdb_byte *
1302 partial_read_comp_unit_head (struct comp_unit_head *header, gdb_byte *info_ptr,
1303 bfd *abfd)
1304 {
1305 gdb_byte *beg_of_comp_unit = info_ptr;
1306
1307 info_ptr = read_comp_unit_head (header, info_ptr, abfd);
1308
1309 if (header->version != 2 && header->version != 3)
1310 error (_("Dwarf Error: wrong version in compilation unit header "
1311 "(is %d, should be %d) [in module %s]"), header->version,
1312 2, bfd_get_filename (abfd));
1313
1314 if (header->abbrev_offset >= dwarf2_per_objfile->abbrev_size)
1315 error (_("Dwarf Error: bad offset (0x%lx) in compilation unit header "
1316 "(offset 0x%lx + 6) [in module %s]"),
1317 (long) header->abbrev_offset,
1318 (long) (beg_of_comp_unit - dwarf2_per_objfile->info_buffer),
1319 bfd_get_filename (abfd));
1320
1321 if (beg_of_comp_unit + header->length + header->initial_length_size
1322 > dwarf2_per_objfile->info_buffer + dwarf2_per_objfile->info_size)
1323 error (_("Dwarf Error: bad length (0x%lx) in compilation unit header "
1324 "(offset 0x%lx + 0) [in module %s]"),
1325 (long) header->length,
1326 (long) (beg_of_comp_unit - dwarf2_per_objfile->info_buffer),
1327 bfd_get_filename (abfd));
1328
1329 return info_ptr;
1330 }
1331
1332 /* Allocate a new partial symtab for file named NAME and mark this new
1333 partial symtab as being an include of PST. */
1334
1335 static void
1336 dwarf2_create_include_psymtab (char *name, struct partial_symtab *pst,
1337 struct objfile *objfile)
1338 {
1339 struct partial_symtab *subpst = allocate_psymtab (name, objfile);
1340
1341 subpst->section_offsets = pst->section_offsets;
1342 subpst->textlow = 0;
1343 subpst->texthigh = 0;
1344
1345 subpst->dependencies = (struct partial_symtab **)
1346 obstack_alloc (&objfile->objfile_obstack,
1347 sizeof (struct partial_symtab *));
1348 subpst->dependencies[0] = pst;
1349 subpst->number_of_dependencies = 1;
1350
1351 subpst->globals_offset = 0;
1352 subpst->n_global_syms = 0;
1353 subpst->statics_offset = 0;
1354 subpst->n_static_syms = 0;
1355 subpst->symtab = NULL;
1356 subpst->read_symtab = pst->read_symtab;
1357 subpst->readin = 0;
1358
1359 /* No private part is necessary for include psymtabs. This property
1360 can be used to differentiate between such include psymtabs and
1361 the regular ones. */
1362 subpst->read_symtab_private = NULL;
1363 }
1364
1365 /* Read the Line Number Program data and extract the list of files
1366 included by the source file represented by PST. Build an include
1367 partial symtab for each of these included files.
1368
1369 This procedure assumes that there *is* a Line Number Program in
1370 the given CU. Callers should check that PDI->HAS_STMT_LIST is set
1371 before calling this procedure. */
1372
1373 static void
1374 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
1375 struct partial_die_info *pdi,
1376 struct partial_symtab *pst)
1377 {
1378 struct objfile *objfile = cu->objfile;
1379 bfd *abfd = objfile->obfd;
1380 struct line_header *lh;
1381
1382 lh = dwarf_decode_line_header (pdi->line_offset, abfd, cu);
1383 if (lh == NULL)
1384 return; /* No linetable, so no includes. */
1385
1386 dwarf_decode_lines (lh, NULL, abfd, cu, pst);
1387
1388 free_line_header (lh);
1389 }
1390
1391
1392 /* Build the partial symbol table by doing a quick pass through the
1393 .debug_info and .debug_abbrev sections. */
1394
1395 static void
1396 dwarf2_build_psymtabs_hard (struct objfile *objfile, int mainline)
1397 {
1398 /* Instead of reading this into a big buffer, we should probably use
1399 mmap() on architectures that support it. (FIXME) */
1400 bfd *abfd = objfile->obfd;
1401 gdb_byte *info_ptr;
1402 gdb_byte *beg_of_comp_unit;
1403 struct partial_die_info comp_unit_die;
1404 struct partial_symtab *pst;
1405 struct cleanup *back_to;
1406 CORE_ADDR lowpc, highpc, baseaddr;
1407
1408 info_ptr = dwarf2_per_objfile->info_buffer;
1409
1410 /* Any cached compilation units will be linked by the per-objfile
1411 read_in_chain. Make sure to free them when we're done. */
1412 back_to = make_cleanup (free_cached_comp_units, NULL);
1413
1414 create_all_comp_units (objfile);
1415
1416 /* Since the objects we're extracting from .debug_info vary in
1417 length, only the individual functions to extract them (like
1418 read_comp_unit_head and load_partial_die) can really know whether
1419 the buffer is large enough to hold another complete object.
1420
1421 At the moment, they don't actually check that. If .debug_info
1422 holds just one extra byte after the last compilation unit's dies,
1423 then read_comp_unit_head will happily read off the end of the
1424 buffer. read_partial_die is similarly casual. Those functions
1425 should be fixed.
1426
1427 For this loop condition, simply checking whether there's any data
1428 left at all should be sufficient. */
1429 while (info_ptr < (dwarf2_per_objfile->info_buffer
1430 + dwarf2_per_objfile->info_size))
1431 {
1432 struct cleanup *back_to_inner;
1433 struct dwarf2_cu cu;
1434 struct abbrev_info *abbrev;
1435 unsigned int bytes_read;
1436 struct dwarf2_per_cu_data *this_cu;
1437
1438 beg_of_comp_unit = info_ptr;
1439
1440 memset (&cu, 0, sizeof (cu));
1441
1442 obstack_init (&cu.comp_unit_obstack);
1443
1444 back_to_inner = make_cleanup (free_stack_comp_unit, &cu);
1445
1446 cu.objfile = objfile;
1447 info_ptr = partial_read_comp_unit_head (&cu.header, info_ptr, abfd);
1448
1449 /* Complete the cu_header */
1450 cu.header.offset = beg_of_comp_unit - dwarf2_per_objfile->info_buffer;
1451 cu.header.first_die_ptr = info_ptr;
1452 cu.header.cu_head_ptr = beg_of_comp_unit;
1453
1454 cu.list_in_scope = &file_symbols;
1455
1456 /* Read the abbrevs for this compilation unit into a table */
1457 dwarf2_read_abbrevs (abfd, &cu);
1458 make_cleanup (dwarf2_free_abbrev_table, &cu);
1459
1460 this_cu = dwarf2_find_comp_unit (cu.header.offset, objfile);
1461
1462 /* Read the compilation unit die */
1463 abbrev = peek_die_abbrev (info_ptr, &bytes_read, &cu);
1464 info_ptr = read_partial_die (&comp_unit_die, abbrev, bytes_read,
1465 abfd, info_ptr, &cu);
1466
1467 if (comp_unit_die.tag == DW_TAG_partial_unit)
1468 {
1469 info_ptr = (beg_of_comp_unit + cu.header.length
1470 + cu.header.initial_length_size);
1471 do_cleanups (back_to_inner);
1472 continue;
1473 }
1474
1475 /* Set the language we're debugging */
1476 set_cu_language (comp_unit_die.language, &cu);
1477
1478 /* Allocate a new partial symbol table structure */
1479 pst = start_psymtab_common (objfile, objfile->section_offsets,
1480 comp_unit_die.name ? comp_unit_die.name : "",
1481 comp_unit_die.lowpc,
1482 objfile->global_psymbols.next,
1483 objfile->static_psymbols.next);
1484
1485 if (comp_unit_die.dirname)
1486 pst->dirname = xstrdup (comp_unit_die.dirname);
1487
1488 pst->read_symtab_private = (char *) this_cu;
1489
1490 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
1491
1492 /* Store the function that reads in the rest of the symbol table */
1493 pst->read_symtab = dwarf2_psymtab_to_symtab;
1494
1495 /* If this compilation unit was already read in, free the
1496 cached copy in order to read it in again. This is
1497 necessary because we skipped some symbols when we first
1498 read in the compilation unit (see load_partial_dies).
1499 This problem could be avoided, but the benefit is
1500 unclear. */
1501 if (this_cu->cu != NULL)
1502 free_one_cached_comp_unit (this_cu->cu);
1503
1504 cu.per_cu = this_cu;
1505
1506 /* Note that this is a pointer to our stack frame, being
1507 added to a global data structure. It will be cleaned up
1508 in free_stack_comp_unit when we finish with this
1509 compilation unit. */
1510 this_cu->cu = &cu;
1511
1512 this_cu->psymtab = pst;
1513
1514 /* Check if comp unit has_children.
1515 If so, read the rest of the partial symbols from this comp unit.
1516 If not, there's no more debug_info for this comp unit. */
1517 if (comp_unit_die.has_children)
1518 {
1519 struct partial_die_info *first_die;
1520
1521 lowpc = ((CORE_ADDR) -1);
1522 highpc = ((CORE_ADDR) 0);
1523
1524 first_die = load_partial_dies (abfd, info_ptr, 1, &cu);
1525
1526 scan_partial_symbols (first_die, &lowpc, &highpc, &cu);
1527
1528 /* If we didn't find a lowpc, set it to highpc to avoid
1529 complaints from `maint check'. */
1530 if (lowpc == ((CORE_ADDR) -1))
1531 lowpc = highpc;
1532
1533 /* If the compilation unit didn't have an explicit address range,
1534 then use the information extracted from its child dies. */
1535 if (! comp_unit_die.has_pc_info)
1536 {
1537 comp_unit_die.lowpc = lowpc;
1538 comp_unit_die.highpc = highpc;
1539 }
1540 }
1541 pst->textlow = comp_unit_die.lowpc + baseaddr;
1542 pst->texthigh = comp_unit_die.highpc + baseaddr;
1543
1544 pst->n_global_syms = objfile->global_psymbols.next -
1545 (objfile->global_psymbols.list + pst->globals_offset);
1546 pst->n_static_syms = objfile->static_psymbols.next -
1547 (objfile->static_psymbols.list + pst->statics_offset);
1548 sort_pst_symbols (pst);
1549
1550 /* If there is already a psymtab or symtab for a file of this
1551 name, remove it. (If there is a symtab, more drastic things
1552 also happen.) This happens in VxWorks. */
1553 free_named_symtabs (pst->filename);
1554
1555 info_ptr = beg_of_comp_unit + cu.header.length
1556 + cu.header.initial_length_size;
1557
1558 if (comp_unit_die.has_stmt_list)
1559 {
1560 /* Get the list of files included in the current compilation unit,
1561 and build a psymtab for each of them. */
1562 dwarf2_build_include_psymtabs (&cu, &comp_unit_die, pst);
1563 }
1564
1565 do_cleanups (back_to_inner);
1566 }
1567 do_cleanups (back_to);
1568 }
1569
1570 /* Load the DIEs for a secondary CU into memory. */
1571
1572 static void
1573 load_comp_unit (struct dwarf2_per_cu_data *this_cu, struct objfile *objfile)
1574 {
1575 bfd *abfd = objfile->obfd;
1576 gdb_byte *info_ptr, *beg_of_comp_unit;
1577 struct partial_die_info comp_unit_die;
1578 struct dwarf2_cu *cu;
1579 struct abbrev_info *abbrev;
1580 unsigned int bytes_read;
1581 struct cleanup *back_to;
1582
1583 info_ptr = dwarf2_per_objfile->info_buffer + this_cu->offset;
1584 beg_of_comp_unit = info_ptr;
1585
1586 cu = xmalloc (sizeof (struct dwarf2_cu));
1587 memset (cu, 0, sizeof (struct dwarf2_cu));
1588
1589 obstack_init (&cu->comp_unit_obstack);
1590
1591 cu->objfile = objfile;
1592 info_ptr = partial_read_comp_unit_head (&cu->header, info_ptr, abfd);
1593
1594 /* Complete the cu_header. */
1595 cu->header.offset = beg_of_comp_unit - dwarf2_per_objfile->info_buffer;
1596 cu->header.first_die_ptr = info_ptr;
1597 cu->header.cu_head_ptr = beg_of_comp_unit;
1598
1599 /* Read the abbrevs for this compilation unit into a table. */
1600 dwarf2_read_abbrevs (abfd, cu);
1601 back_to = make_cleanup (dwarf2_free_abbrev_table, cu);
1602
1603 /* Read the compilation unit die. */
1604 abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
1605 info_ptr = read_partial_die (&comp_unit_die, abbrev, bytes_read,
1606 abfd, info_ptr, cu);
1607
1608 /* Set the language we're debugging. */
1609 set_cu_language (comp_unit_die.language, cu);
1610
1611 /* Link this compilation unit into the compilation unit tree. */
1612 this_cu->cu = cu;
1613 cu->per_cu = this_cu;
1614
1615 /* Check if comp unit has_children.
1616 If so, read the rest of the partial symbols from this comp unit.
1617 If not, there's no more debug_info for this comp unit. */
1618 if (comp_unit_die.has_children)
1619 load_partial_dies (abfd, info_ptr, 0, cu);
1620
1621 do_cleanups (back_to);
1622 }
1623
1624 /* Create a list of all compilation units in OBJFILE. We do this only
1625 if an inter-comp-unit reference is found; presumably if there is one,
1626 there will be many, and one will occur early in the .debug_info section.
1627 So there's no point in building this list incrementally. */
1628
1629 static void
1630 create_all_comp_units (struct objfile *objfile)
1631 {
1632 int n_allocated;
1633 int n_comp_units;
1634 struct dwarf2_per_cu_data **all_comp_units;
1635 gdb_byte *info_ptr = dwarf2_per_objfile->info_buffer;
1636
1637 n_comp_units = 0;
1638 n_allocated = 10;
1639 all_comp_units = xmalloc (n_allocated
1640 * sizeof (struct dwarf2_per_cu_data *));
1641
1642 while (info_ptr < dwarf2_per_objfile->info_buffer + dwarf2_per_objfile->info_size)
1643 {
1644 struct comp_unit_head cu_header;
1645 gdb_byte *beg_of_comp_unit;
1646 struct dwarf2_per_cu_data *this_cu;
1647 unsigned long offset;
1648 unsigned int bytes_read;
1649
1650 offset = info_ptr - dwarf2_per_objfile->info_buffer;
1651
1652 /* Read just enough information to find out where the next
1653 compilation unit is. */
1654 cu_header.initial_length_size = 0;
1655 cu_header.length = read_initial_length (objfile->obfd, info_ptr,
1656 &cu_header, &bytes_read);
1657
1658 /* Save the compilation unit for later lookup. */
1659 this_cu = obstack_alloc (&objfile->objfile_obstack,
1660 sizeof (struct dwarf2_per_cu_data));
1661 memset (this_cu, 0, sizeof (*this_cu));
1662 this_cu->offset = offset;
1663 this_cu->length = cu_header.length + cu_header.initial_length_size;
1664
1665 if (n_comp_units == n_allocated)
1666 {
1667 n_allocated *= 2;
1668 all_comp_units = xrealloc (all_comp_units,
1669 n_allocated
1670 * sizeof (struct dwarf2_per_cu_data *));
1671 }
1672 all_comp_units[n_comp_units++] = this_cu;
1673
1674 info_ptr = info_ptr + this_cu->length;
1675 }
1676
1677 dwarf2_per_objfile->all_comp_units
1678 = obstack_alloc (&objfile->objfile_obstack,
1679 n_comp_units * sizeof (struct dwarf2_per_cu_data *));
1680 memcpy (dwarf2_per_objfile->all_comp_units, all_comp_units,
1681 n_comp_units * sizeof (struct dwarf2_per_cu_data *));
1682 xfree (all_comp_units);
1683 dwarf2_per_objfile->n_comp_units = n_comp_units;
1684 }
1685
1686 /* Process all loaded DIEs for compilation unit CU, starting at FIRST_DIE.
1687 Also set *LOWPC and *HIGHPC to the lowest and highest PC values found
1688 in CU. */
1689
1690 static void
1691 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
1692 CORE_ADDR *highpc, struct dwarf2_cu *cu)
1693 {
1694 struct objfile *objfile = cu->objfile;
1695 bfd *abfd = objfile->obfd;
1696 struct partial_die_info *pdi;
1697
1698 /* Now, march along the PDI's, descending into ones which have
1699 interesting children but skipping the children of the other ones,
1700 until we reach the end of the compilation unit. */
1701
1702 pdi = first_die;
1703
1704 while (pdi != NULL)
1705 {
1706 fixup_partial_die (pdi, cu);
1707
1708 /* Anonymous namespaces have no name but have interesting
1709 children, so we need to look at them. Ditto for anonymous
1710 enums. */
1711
1712 if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
1713 || pdi->tag == DW_TAG_enumeration_type)
1714 {
1715 switch (pdi->tag)
1716 {
1717 case DW_TAG_subprogram:
1718 if (pdi->has_pc_info)
1719 {
1720 if (pdi->lowpc < *lowpc)
1721 {
1722 *lowpc = pdi->lowpc;
1723 }
1724 if (pdi->highpc > *highpc)
1725 {
1726 *highpc = pdi->highpc;
1727 }
1728 if (!pdi->is_declaration)
1729 {
1730 add_partial_symbol (pdi, cu);
1731 }
1732 }
1733 break;
1734 case DW_TAG_variable:
1735 case DW_TAG_typedef:
1736 case DW_TAG_union_type:
1737 if (!pdi->is_declaration)
1738 {
1739 add_partial_symbol (pdi, cu);
1740 }
1741 break;
1742 case DW_TAG_class_type:
1743 case DW_TAG_structure_type:
1744 if (!pdi->is_declaration)
1745 {
1746 add_partial_symbol (pdi, cu);
1747 }
1748 break;
1749 case DW_TAG_enumeration_type:
1750 if (!pdi->is_declaration)
1751 add_partial_enumeration (pdi, cu);
1752 break;
1753 case DW_TAG_base_type:
1754 case DW_TAG_subrange_type:
1755 /* File scope base type definitions are added to the partial
1756 symbol table. */
1757 add_partial_symbol (pdi, cu);
1758 break;
1759 case DW_TAG_namespace:
1760 add_partial_namespace (pdi, lowpc, highpc, cu);
1761 break;
1762 default:
1763 break;
1764 }
1765 }
1766
1767 /* If the die has a sibling, skip to the sibling. */
1768
1769 pdi = pdi->die_sibling;
1770 }
1771 }
1772
1773 /* Functions used to compute the fully scoped name of a partial DIE.
1774
1775 Normally, this is simple. For C++, the parent DIE's fully scoped
1776 name is concatenated with "::" and the partial DIE's name. For
1777 Java, the same thing occurs except that "." is used instead of "::".
1778 Enumerators are an exception; they use the scope of their parent
1779 enumeration type, i.e. the name of the enumeration type is not
1780 prepended to the enumerator.
1781
1782 There are two complexities. One is DW_AT_specification; in this
1783 case "parent" means the parent of the target of the specification,
1784 instead of the direct parent of the DIE. The other is compilers
1785 which do not emit DW_TAG_namespace; in this case we try to guess
1786 the fully qualified name of structure types from their members'
1787 linkage names. This must be done using the DIE's children rather
1788 than the children of any DW_AT_specification target. We only need
1789 to do this for structures at the top level, i.e. if the target of
1790 any DW_AT_specification (if any; otherwise the DIE itself) does not
1791 have a parent. */
1792
1793 /* Compute the scope prefix associated with PDI's parent, in
1794 compilation unit CU. The result will be allocated on CU's
1795 comp_unit_obstack, or a copy of the already allocated PDI->NAME
1796 field. NULL is returned if no prefix is necessary. */
1797 static char *
1798 partial_die_parent_scope (struct partial_die_info *pdi,
1799 struct dwarf2_cu *cu)
1800 {
1801 char *grandparent_scope;
1802 struct partial_die_info *parent, *real_pdi;
1803
1804 /* We need to look at our parent DIE; if we have a DW_AT_specification,
1805 then this means the parent of the specification DIE. */
1806
1807 real_pdi = pdi;
1808 while (real_pdi->has_specification)
1809 real_pdi = find_partial_die (real_pdi->spec_offset, cu);
1810
1811 parent = real_pdi->die_parent;
1812 if (parent == NULL)
1813 return NULL;
1814
1815 if (parent->scope_set)
1816 return parent->scope;
1817
1818 fixup_partial_die (parent, cu);
1819
1820 grandparent_scope = partial_die_parent_scope (parent, cu);
1821
1822 if (parent->tag == DW_TAG_namespace
1823 || parent->tag == DW_TAG_structure_type
1824 || parent->tag == DW_TAG_class_type
1825 || parent->tag == DW_TAG_union_type)
1826 {
1827 if (grandparent_scope == NULL)
1828 parent->scope = parent->name;
1829 else
1830 parent->scope = typename_concat (&cu->comp_unit_obstack, grandparent_scope,
1831 parent->name, cu);
1832 }
1833 else if (parent->tag == DW_TAG_enumeration_type)
1834 /* Enumerators should not get the name of the enumeration as a prefix. */
1835 parent->scope = grandparent_scope;
1836 else
1837 {
1838 /* FIXME drow/2004-04-01: What should we be doing with
1839 function-local names? For partial symbols, we should probably be
1840 ignoring them. */
1841 complaint (&symfile_complaints,
1842 _("unhandled containing DIE tag %d for DIE at %d"),
1843 parent->tag, pdi->offset);
1844 parent->scope = grandparent_scope;
1845 }
1846
1847 parent->scope_set = 1;
1848 return parent->scope;
1849 }
1850
1851 /* Return the fully scoped name associated with PDI, from compilation unit
1852 CU. The result will be allocated with malloc. */
1853 static char *
1854 partial_die_full_name (struct partial_die_info *pdi,
1855 struct dwarf2_cu *cu)
1856 {
1857 char *parent_scope;
1858
1859 parent_scope = partial_die_parent_scope (pdi, cu);
1860 if (parent_scope == NULL)
1861 return NULL;
1862 else
1863 return typename_concat (NULL, parent_scope, pdi->name, cu);
1864 }
1865
1866 static void
1867 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
1868 {
1869 struct objfile *objfile = cu->objfile;
1870 CORE_ADDR addr = 0;
1871 char *actual_name = NULL;
1872 const char *my_prefix;
1873 const struct partial_symbol *psym = NULL;
1874 CORE_ADDR baseaddr;
1875 int built_actual_name = 0;
1876
1877 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
1878
1879 if (pdi_needs_namespace (pdi->tag))
1880 {
1881 actual_name = partial_die_full_name (pdi, cu);
1882 if (actual_name)
1883 built_actual_name = 1;
1884 }
1885
1886 if (actual_name == NULL)
1887 actual_name = pdi->name;
1888
1889 switch (pdi->tag)
1890 {
1891 case DW_TAG_subprogram:
1892 if (pdi->is_external)
1893 {
1894 /*prim_record_minimal_symbol (actual_name, pdi->lowpc + baseaddr,
1895 mst_text, objfile); */
1896 psym = add_psymbol_to_list (actual_name, strlen (actual_name),
1897 VAR_DOMAIN, LOC_BLOCK,
1898 &objfile->global_psymbols,
1899 0, pdi->lowpc + baseaddr,
1900 cu->language, objfile);
1901 }
1902 else
1903 {
1904 /*prim_record_minimal_symbol (actual_name, pdi->lowpc + baseaddr,
1905 mst_file_text, objfile); */
1906 psym = add_psymbol_to_list (actual_name, strlen (actual_name),
1907 VAR_DOMAIN, LOC_BLOCK,
1908 &objfile->static_psymbols,
1909 0, pdi->lowpc + baseaddr,
1910 cu->language, objfile);
1911 }
1912 break;
1913 case DW_TAG_variable:
1914 if (pdi->is_external)
1915 {
1916 /* Global Variable.
1917 Don't enter into the minimal symbol tables as there is
1918 a minimal symbol table entry from the ELF symbols already.
1919 Enter into partial symbol table if it has a location
1920 descriptor or a type.
1921 If the location descriptor is missing, new_symbol will create
1922 a LOC_UNRESOLVED symbol, the address of the variable will then
1923 be determined from the minimal symbol table whenever the variable
1924 is referenced.
1925 The address for the partial symbol table entry is not
1926 used by GDB, but it comes in handy for debugging partial symbol
1927 table building. */
1928
1929 if (pdi->locdesc)
1930 addr = decode_locdesc (pdi->locdesc, cu);
1931 if (pdi->locdesc || pdi->has_type)
1932 psym = add_psymbol_to_list (actual_name, strlen (actual_name),
1933 VAR_DOMAIN, LOC_STATIC,
1934 &objfile->global_psymbols,
1935 0, addr + baseaddr,
1936 cu->language, objfile);
1937 }
1938 else
1939 {
1940 /* Static Variable. Skip symbols without location descriptors. */
1941 if (pdi->locdesc == NULL)
1942 {
1943 if (built_actual_name)
1944 xfree (actual_name);
1945 return;
1946 }
1947 addr = decode_locdesc (pdi->locdesc, cu);
1948 /*prim_record_minimal_symbol (actual_name, addr + baseaddr,
1949 mst_file_data, objfile); */
1950 psym = add_psymbol_to_list (actual_name, strlen (actual_name),
1951 VAR_DOMAIN, LOC_STATIC,
1952 &objfile->static_psymbols,
1953 0, addr + baseaddr,
1954 cu->language, objfile);
1955 }
1956 break;
1957 case DW_TAG_typedef:
1958 case DW_TAG_base_type:
1959 case DW_TAG_subrange_type:
1960 add_psymbol_to_list (actual_name, strlen (actual_name),
1961 VAR_DOMAIN, LOC_TYPEDEF,
1962 &objfile->static_psymbols,
1963 0, (CORE_ADDR) 0, cu->language, objfile);
1964 break;
1965 case DW_TAG_namespace:
1966 add_psymbol_to_list (actual_name, strlen (actual_name),
1967 VAR_DOMAIN, LOC_TYPEDEF,
1968 &objfile->global_psymbols,
1969 0, (CORE_ADDR) 0, cu->language, objfile);
1970 break;
1971 case DW_TAG_class_type:
1972 case DW_TAG_structure_type:
1973 case DW_TAG_union_type:
1974 case DW_TAG_enumeration_type:
1975 /* Skip external references. The DWARF standard says in the section
1976 about "Structure, Union, and Class Type Entries": "An incomplete
1977 structure, union or class type is represented by a structure,
1978 union or class entry that does not have a byte size attribute
1979 and that has a DW_AT_declaration attribute." */
1980 if (!pdi->has_byte_size && pdi->is_declaration)
1981 {
1982 if (built_actual_name)
1983 xfree (actual_name);
1984 return;
1985 }
1986
1987 /* NOTE: carlton/2003-10-07: See comment in new_symbol about
1988 static vs. global. */
1989 add_psymbol_to_list (actual_name, strlen (actual_name),
1990 STRUCT_DOMAIN, LOC_TYPEDEF,
1991 (cu->language == language_cplus
1992 || cu->language == language_java)
1993 ? &objfile->global_psymbols
1994 : &objfile->static_psymbols,
1995 0, (CORE_ADDR) 0, cu->language, objfile);
1996
1997 if (cu->language == language_cplus
1998 || cu->language == language_java
1999 || cu->language == language_ada)
2000 {
2001 /* For C++ and Java, these implicitly act as typedefs as well. */
2002 add_psymbol_to_list (actual_name, strlen (actual_name),
2003 VAR_DOMAIN, LOC_TYPEDEF,
2004 &objfile->global_psymbols,
2005 0, (CORE_ADDR) 0, cu->language, objfile);
2006 }
2007 break;
2008 case DW_TAG_enumerator:
2009 add_psymbol_to_list (actual_name, strlen (actual_name),
2010 VAR_DOMAIN, LOC_CONST,
2011 (cu->language == language_cplus
2012 || cu->language == language_java)
2013 ? &objfile->global_psymbols
2014 : &objfile->static_psymbols,
2015 0, (CORE_ADDR) 0, cu->language, objfile);
2016 break;
2017 default:
2018 break;
2019 }
2020
2021 /* Check to see if we should scan the name for possible namespace
2022 info. Only do this if this is C++, if we don't have namespace
2023 debugging info in the file, if the psym is of an appropriate type
2024 (otherwise we'll have psym == NULL), and if we actually had a
2025 mangled name to begin with. */
2026
2027 /* FIXME drow/2004-02-22: Why don't we do this for classes, i.e. the
2028 cases which do not set PSYM above? */
2029
2030 if (cu->language == language_cplus
2031 && cu->has_namespace_info == 0
2032 && psym != NULL
2033 && SYMBOL_CPLUS_DEMANGLED_NAME (psym) != NULL)
2034 cp_check_possible_namespace_symbols (SYMBOL_CPLUS_DEMANGLED_NAME (psym),
2035 objfile);
2036
2037 if (built_actual_name)
2038 xfree (actual_name);
2039 }
2040
2041 /* Determine whether a die of type TAG living in a C++ class or
2042 namespace needs to have the name of the scope prepended to the
2043 name listed in the die. */
2044
2045 static int
2046 pdi_needs_namespace (enum dwarf_tag tag)
2047 {
2048 switch (tag)
2049 {
2050 case DW_TAG_namespace:
2051 case DW_TAG_typedef:
2052 case DW_TAG_class_type:
2053 case DW_TAG_structure_type:
2054 case DW_TAG_union_type:
2055 case DW_TAG_enumeration_type:
2056 case DW_TAG_enumerator:
2057 return 1;
2058 default:
2059 return 0;
2060 }
2061 }
2062
2063 /* Read a partial die corresponding to a namespace; also, add a symbol
2064 corresponding to that namespace to the symbol table. NAMESPACE is
2065 the name of the enclosing namespace. */
2066
2067 static void
2068 add_partial_namespace (struct partial_die_info *pdi,
2069 CORE_ADDR *lowpc, CORE_ADDR *highpc,
2070 struct dwarf2_cu *cu)
2071 {
2072 struct objfile *objfile = cu->objfile;
2073
2074 /* Add a symbol for the namespace. */
2075
2076 add_partial_symbol (pdi, cu);
2077
2078 /* Now scan partial symbols in that namespace. */
2079
2080 if (pdi->has_children)
2081 scan_partial_symbols (pdi->die_child, lowpc, highpc, cu);
2082 }
2083
2084 /* See if we can figure out if the class lives in a namespace. We do
2085 this by looking for a member function; its demangled name will
2086 contain namespace info, if there is any. */
2087
2088 static void
2089 guess_structure_name (struct partial_die_info *struct_pdi,
2090 struct dwarf2_cu *cu)
2091 {
2092 if ((cu->language == language_cplus
2093 || cu->language == language_java)
2094 && cu->has_namespace_info == 0
2095 && struct_pdi->has_children)
2096 {
2097 /* NOTE: carlton/2003-10-07: Getting the info this way changes
2098 what template types look like, because the demangler
2099 frequently doesn't give the same name as the debug info. We
2100 could fix this by only using the demangled name to get the
2101 prefix (but see comment in read_structure_type). */
2102
2103 struct partial_die_info *child_pdi = struct_pdi->die_child;
2104 struct partial_die_info *real_pdi;
2105
2106 /* If this DIE (this DIE's specification, if any) has a parent, then
2107 we should not do this. We'll prepend the parent's fully qualified
2108 name when we create the partial symbol. */
2109
2110 real_pdi = struct_pdi;
2111 while (real_pdi->has_specification)
2112 real_pdi = find_partial_die (real_pdi->spec_offset, cu);
2113
2114 if (real_pdi->die_parent != NULL)
2115 return;
2116
2117 while (child_pdi != NULL)
2118 {
2119 if (child_pdi->tag == DW_TAG_subprogram)
2120 {
2121 char *actual_class_name
2122 = language_class_name_from_physname (cu->language_defn,
2123 child_pdi->name);
2124 if (actual_class_name != NULL)
2125 {
2126 struct_pdi->name
2127 = obsavestring (actual_class_name,
2128 strlen (actual_class_name),
2129 &cu->comp_unit_obstack);
2130 xfree (actual_class_name);
2131 }
2132 break;
2133 }
2134
2135 child_pdi = child_pdi->die_sibling;
2136 }
2137 }
2138 }
2139
2140 /* Read a partial die corresponding to an enumeration type. */
2141
2142 static void
2143 add_partial_enumeration (struct partial_die_info *enum_pdi,
2144 struct dwarf2_cu *cu)
2145 {
2146 struct objfile *objfile = cu->objfile;
2147 bfd *abfd = objfile->obfd;
2148 struct partial_die_info *pdi;
2149
2150 if (enum_pdi->name != NULL)
2151 add_partial_symbol (enum_pdi, cu);
2152
2153 pdi = enum_pdi->die_child;
2154 while (pdi)
2155 {
2156 if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
2157 complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
2158 else
2159 add_partial_symbol (pdi, cu);
2160 pdi = pdi->die_sibling;
2161 }
2162 }
2163
2164 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit CU.
2165 Return the corresponding abbrev, or NULL if the number is zero (indicating
2166 an empty DIE). In either case *BYTES_READ will be set to the length of
2167 the initial number. */
2168
2169 static struct abbrev_info *
2170 peek_die_abbrev (gdb_byte *info_ptr, unsigned int *bytes_read,
2171 struct dwarf2_cu *cu)
2172 {
2173 bfd *abfd = cu->objfile->obfd;
2174 unsigned int abbrev_number;
2175 struct abbrev_info *abbrev;
2176
2177 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
2178
2179 if (abbrev_number == 0)
2180 return NULL;
2181
2182 abbrev = dwarf2_lookup_abbrev (abbrev_number, cu);
2183 if (!abbrev)
2184 {
2185 error (_("Dwarf Error: Could not find abbrev number %d [in module %s]"), abbrev_number,
2186 bfd_get_filename (abfd));
2187 }
2188
2189 return abbrev;
2190 }
2191
2192 /* Scan the debug information for CU starting at INFO_PTR. Returns a
2193 pointer to the end of a series of DIEs, terminated by an empty
2194 DIE. Any children of the skipped DIEs will also be skipped. */
2195
2196 static gdb_byte *
2197 skip_children (gdb_byte *info_ptr, struct dwarf2_cu *cu)
2198 {
2199 struct abbrev_info *abbrev;
2200 unsigned int bytes_read;
2201
2202 while (1)
2203 {
2204 abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
2205 if (abbrev == NULL)
2206 return info_ptr + bytes_read;
2207 else
2208 info_ptr = skip_one_die (info_ptr + bytes_read, abbrev, cu);
2209 }
2210 }
2211
2212 /* Scan the debug information for CU starting at INFO_PTR. INFO_PTR
2213 should point just after the initial uleb128 of a DIE, and the
2214 abbrev corresponding to that skipped uleb128 should be passed in
2215 ABBREV. Returns a pointer to this DIE's sibling, skipping any
2216 children. */
2217
2218 static gdb_byte *
2219 skip_one_die (gdb_byte *info_ptr, struct abbrev_info *abbrev,
2220 struct dwarf2_cu *cu)
2221 {
2222 unsigned int bytes_read;
2223 struct attribute attr;
2224 bfd *abfd = cu->objfile->obfd;
2225 unsigned int form, i;
2226
2227 for (i = 0; i < abbrev->num_attrs; i++)
2228 {
2229 /* The only abbrev we care about is DW_AT_sibling. */
2230 if (abbrev->attrs[i].name == DW_AT_sibling)
2231 {
2232 read_attribute (&attr, &abbrev->attrs[i],
2233 abfd, info_ptr, cu);
2234 if (attr.form == DW_FORM_ref_addr)
2235 complaint (&symfile_complaints, _("ignoring absolute DW_AT_sibling"));
2236 else
2237 return dwarf2_per_objfile->info_buffer
2238 + dwarf2_get_ref_die_offset (&attr, cu);
2239 }
2240
2241 /* If it isn't DW_AT_sibling, skip this attribute. */
2242 form = abbrev->attrs[i].form;
2243 skip_attribute:
2244 switch (form)
2245 {
2246 case DW_FORM_addr:
2247 case DW_FORM_ref_addr:
2248 info_ptr += cu->header.addr_size;
2249 break;
2250 case DW_FORM_data1:
2251 case DW_FORM_ref1:
2252 case DW_FORM_flag:
2253 info_ptr += 1;
2254 break;
2255 case DW_FORM_data2:
2256 case DW_FORM_ref2:
2257 info_ptr += 2;
2258 break;
2259 case DW_FORM_data4:
2260 case DW_FORM_ref4:
2261 info_ptr += 4;
2262 break;
2263 case DW_FORM_data8:
2264 case DW_FORM_ref8:
2265 info_ptr += 8;
2266 break;
2267 case DW_FORM_string:
2268 read_string (abfd, info_ptr, &bytes_read);
2269 info_ptr += bytes_read;
2270 break;
2271 case DW_FORM_strp:
2272 info_ptr += cu->header.offset_size;
2273 break;
2274 case DW_FORM_block:
2275 info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
2276 info_ptr += bytes_read;
2277 break;
2278 case DW_FORM_block1:
2279 info_ptr += 1 + read_1_byte (abfd, info_ptr);
2280 break;
2281 case DW_FORM_block2:
2282 info_ptr += 2 + read_2_bytes (abfd, info_ptr);
2283 break;
2284 case DW_FORM_block4:
2285 info_ptr += 4 + read_4_bytes (abfd, info_ptr);
2286 break;
2287 case DW_FORM_sdata:
2288 case DW_FORM_udata:
2289 case DW_FORM_ref_udata:
2290 info_ptr = skip_leb128 (abfd, info_ptr);
2291 break;
2292 case DW_FORM_indirect:
2293 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
2294 info_ptr += bytes_read;
2295 /* We need to continue parsing from here, so just go back to
2296 the top. */
2297 goto skip_attribute;
2298
2299 default:
2300 error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
2301 dwarf_form_name (form),
2302 bfd_get_filename (abfd));
2303 }
2304 }
2305
2306 if (abbrev->has_children)
2307 return skip_children (info_ptr, cu);
2308 else
2309 return info_ptr;
2310 }
2311
2312 /* Locate ORIG_PDI's sibling; INFO_PTR should point to the start of
2313 the next DIE after ORIG_PDI. */
2314
2315 static gdb_byte *
2316 locate_pdi_sibling (struct partial_die_info *orig_pdi, gdb_byte *info_ptr,
2317 bfd *abfd, struct dwarf2_cu *cu)
2318 {
2319 /* Do we know the sibling already? */
2320
2321 if (orig_pdi->sibling)
2322 return orig_pdi->sibling;
2323
2324 /* Are there any children to deal with? */
2325
2326 if (!orig_pdi->has_children)
2327 return info_ptr;
2328
2329 /* Skip the children the long way. */
2330
2331 return skip_children (info_ptr, cu);
2332 }
2333
2334 /* Expand this partial symbol table into a full symbol table. */
2335
2336 static void
2337 dwarf2_psymtab_to_symtab (struct partial_symtab *pst)
2338 {
2339 /* FIXME: This is barely more than a stub. */
2340 if (pst != NULL)
2341 {
2342 if (pst->readin)
2343 {
2344 warning (_("bug: psymtab for %s is already read in."), pst->filename);
2345 }
2346 else
2347 {
2348 if (info_verbose)
2349 {
2350 printf_filtered (_("Reading in symbols for %s..."), pst->filename);
2351 gdb_flush (gdb_stdout);
2352 }
2353
2354 /* Restore our global data. */
2355 dwarf2_per_objfile = objfile_data (pst->objfile,
2356 dwarf2_objfile_data_key);
2357
2358 psymtab_to_symtab_1 (pst);
2359
2360 /* Finish up the debug error message. */
2361 if (info_verbose)
2362 printf_filtered (_("done.\n"));
2363 }
2364 }
2365 }
2366
2367 /* Add PER_CU to the queue. */
2368
2369 static void
2370 queue_comp_unit (struct dwarf2_per_cu_data *per_cu)
2371 {
2372 struct dwarf2_queue_item *item;
2373
2374 per_cu->queued = 1;
2375 item = xmalloc (sizeof (*item));
2376 item->per_cu = per_cu;
2377 item->next = NULL;
2378
2379 if (dwarf2_queue == NULL)
2380 dwarf2_queue = item;
2381 else
2382 dwarf2_queue_tail->next = item;
2383
2384 dwarf2_queue_tail = item;
2385 }
2386
2387 /* Process the queue. */
2388
2389 static void
2390 process_queue (struct objfile *objfile)
2391 {
2392 struct dwarf2_queue_item *item, *next_item;
2393
2394 /* Initially, there is just one item on the queue. Load its DIEs,
2395 and the DIEs of any other compilation units it requires,
2396 transitively. */
2397
2398 for (item = dwarf2_queue; item != NULL; item = item->next)
2399 {
2400 /* Read in this compilation unit. This may add new items to
2401 the end of the queue. */
2402 load_full_comp_unit (item->per_cu, objfile);
2403
2404 item->per_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
2405 dwarf2_per_objfile->read_in_chain = item->per_cu;
2406
2407 /* If this compilation unit has already had full symbols created,
2408 reset the TYPE fields in each DIE. */
2409 if (item->per_cu->type_hash)
2410 reset_die_and_siblings_types (item->per_cu->cu->dies,
2411 item->per_cu->cu);
2412 }
2413
2414 /* Now everything left on the queue needs to be read in. Process
2415 them, one at a time, removing from the queue as we finish. */
2416 for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
2417 {
2418 if (item->per_cu->psymtab && !item->per_cu->psymtab->readin)
2419 process_full_comp_unit (item->per_cu);
2420
2421 item->per_cu->queued = 0;
2422 next_item = item->next;
2423 xfree (item);
2424 }
2425
2426 dwarf2_queue_tail = NULL;
2427 }
2428
2429 /* Free all allocated queue entries. This function only releases anything if
2430 an error was thrown; if the queue was processed then it would have been
2431 freed as we went along. */
2432
2433 static void
2434 dwarf2_release_queue (void *dummy)
2435 {
2436 struct dwarf2_queue_item *item, *last;
2437
2438 item = dwarf2_queue;
2439 while (item)
2440 {
2441 /* Anything still marked queued is likely to be in an
2442 inconsistent state, so discard it. */
2443 if (item->per_cu->queued)
2444 {
2445 if (item->per_cu->cu != NULL)
2446 free_one_cached_comp_unit (item->per_cu->cu);
2447 item->per_cu->queued = 0;
2448 }
2449
2450 last = item;
2451 item = item->next;
2452 xfree (last);
2453 }
2454
2455 dwarf2_queue = dwarf2_queue_tail = NULL;
2456 }
2457
2458 /* Read in full symbols for PST, and anything it depends on. */
2459
2460 static void
2461 psymtab_to_symtab_1 (struct partial_symtab *pst)
2462 {
2463 struct dwarf2_per_cu_data *per_cu;
2464 struct cleanup *back_to;
2465 int i;
2466
2467 for (i = 0; i < pst->number_of_dependencies; i++)
2468 if (!pst->dependencies[i]->readin)
2469 {
2470 /* Inform about additional files that need to be read in. */
2471 if (info_verbose)
2472 {
2473 /* FIXME: i18n: Need to make this a single string. */
2474 fputs_filtered (" ", gdb_stdout);
2475 wrap_here ("");
2476 fputs_filtered ("and ", gdb_stdout);
2477 wrap_here ("");
2478 printf_filtered ("%s...", pst->dependencies[i]->filename);
2479 wrap_here (""); /* Flush output */
2480 gdb_flush (gdb_stdout);
2481 }
2482 psymtab_to_symtab_1 (pst->dependencies[i]);
2483 }
2484
2485 per_cu = (struct dwarf2_per_cu_data *) pst->read_symtab_private;
2486
2487 if (per_cu == NULL)
2488 {
2489 /* It's an include file, no symbols to read for it.
2490 Everything is in the parent symtab. */
2491 pst->readin = 1;
2492 return;
2493 }
2494
2495 back_to = make_cleanup (dwarf2_release_queue, NULL);
2496
2497 queue_comp_unit (per_cu);
2498
2499 process_queue (pst->objfile);
2500
2501 /* Age the cache, releasing compilation units that have not
2502 been used recently. */
2503 age_cached_comp_units ();
2504
2505 do_cleanups (back_to);
2506 }
2507
2508 /* Load the DIEs associated with PST and PER_CU into memory. */
2509
2510 static struct dwarf2_cu *
2511 load_full_comp_unit (struct dwarf2_per_cu_data *per_cu, struct objfile *objfile)
2512 {
2513 bfd *abfd = objfile->obfd;
2514 struct dwarf2_cu *cu;
2515 unsigned long offset;
2516 gdb_byte *info_ptr;
2517 struct cleanup *back_to, *free_cu_cleanup;
2518 struct attribute *attr;
2519 CORE_ADDR baseaddr;
2520
2521 /* Set local variables from the partial symbol table info. */
2522 offset = per_cu->offset;
2523
2524 info_ptr = dwarf2_per_objfile->info_buffer + offset;
2525
2526 cu = xmalloc (sizeof (struct dwarf2_cu));
2527 memset (cu, 0, sizeof (struct dwarf2_cu));
2528
2529 /* If an error occurs while loading, release our storage. */
2530 free_cu_cleanup = make_cleanup (free_one_comp_unit, cu);
2531
2532 cu->objfile = objfile;
2533
2534 /* read in the comp_unit header */
2535 info_ptr = read_comp_unit_head (&cu->header, info_ptr, abfd);
2536
2537 /* Read the abbrevs for this compilation unit */
2538 dwarf2_read_abbrevs (abfd, cu);
2539 back_to = make_cleanup (dwarf2_free_abbrev_table, cu);
2540
2541 cu->header.offset = offset;
2542
2543 cu->per_cu = per_cu;
2544 per_cu->cu = cu;
2545
2546 /* We use this obstack for block values in dwarf_alloc_block. */
2547 obstack_init (&cu->comp_unit_obstack);
2548
2549 cu->dies = read_comp_unit (info_ptr, abfd, cu);
2550
2551 /* We try not to read any attributes in this function, because not
2552 all objfiles needed for references have been loaded yet, and symbol
2553 table processing isn't initialized. But we have to set the CU language,
2554 or we won't be able to build types correctly. */
2555 attr = dwarf2_attr (cu->dies, DW_AT_language, cu);
2556 if (attr)
2557 set_cu_language (DW_UNSND (attr), cu);
2558 else
2559 set_cu_language (language_minimal, cu);
2560
2561 do_cleanups (back_to);
2562
2563 /* We've successfully allocated this compilation unit. Let our caller
2564 clean it up when finished with it. */
2565 discard_cleanups (free_cu_cleanup);
2566
2567 return cu;
2568 }
2569
2570 /* Generate full symbol information for PST and CU, whose DIEs have
2571 already been loaded into memory. */
2572
2573 static void
2574 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu)
2575 {
2576 struct partial_symtab *pst = per_cu->psymtab;
2577 struct dwarf2_cu *cu = per_cu->cu;
2578 struct objfile *objfile = pst->objfile;
2579 bfd *abfd = objfile->obfd;
2580 CORE_ADDR lowpc, highpc;
2581 struct symtab *symtab;
2582 struct cleanup *back_to;
2583 struct attribute *attr;
2584 CORE_ADDR baseaddr;
2585
2586 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
2587
2588 /* We're in the global namespace. */
2589 processing_current_prefix = "";
2590
2591 buildsym_init ();
2592 back_to = make_cleanup (really_free_pendings, NULL);
2593
2594 cu->list_in_scope = &file_symbols;
2595
2596 /* Find the base address of the compilation unit for range lists and
2597 location lists. It will normally be specified by DW_AT_low_pc.
2598 In DWARF-3 draft 4, the base address could be overridden by
2599 DW_AT_entry_pc. It's been removed, but GCC still uses this for
2600 compilation units with discontinuous ranges. */
2601
2602 cu->header.base_known = 0;
2603 cu->header.base_address = 0;
2604
2605 attr = dwarf2_attr (cu->dies, DW_AT_entry_pc, cu);
2606 if (attr)
2607 {
2608 cu->header.base_address = DW_ADDR (attr);
2609 cu->header.base_known = 1;
2610 }
2611 else
2612 {
2613 attr = dwarf2_attr (cu->dies, DW_AT_low_pc, cu);
2614 if (attr)
2615 {
2616 cu->header.base_address = DW_ADDR (attr);
2617 cu->header.base_known = 1;
2618 }
2619 }
2620
2621 /* Do line number decoding in read_file_scope () */
2622 process_die (cu->dies, cu);
2623
2624 /* Some compilers don't define a DW_AT_high_pc attribute for the
2625 compilation unit. If the DW_AT_high_pc is missing, synthesize
2626 it, by scanning the DIE's below the compilation unit. */
2627 get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
2628
2629 symtab = end_symtab (highpc + baseaddr, objfile, SECT_OFF_TEXT (objfile));
2630
2631 /* Set symtab language to language from DW_AT_language.
2632 If the compilation is from a C file generated by language preprocessors,
2633 do not set the language if it was already deduced by start_subfile. */
2634 if (symtab != NULL
2635 && !(cu->language == language_c && symtab->language != language_c))
2636 {
2637 symtab->language = cu->language;
2638 }
2639 pst->symtab = symtab;
2640 pst->readin = 1;
2641
2642 do_cleanups (back_to);
2643 }
2644
2645 /* Process a die and its children. */
2646
2647 static void
2648 process_die (struct die_info *die, struct dwarf2_cu *cu)
2649 {
2650 switch (die->tag)
2651 {
2652 case DW_TAG_padding:
2653 break;
2654 case DW_TAG_compile_unit:
2655 read_file_scope (die, cu);
2656 break;
2657 case DW_TAG_subprogram:
2658 read_subroutine_type (die, cu);
2659 read_func_scope (die, cu);
2660 break;
2661 case DW_TAG_inlined_subroutine:
2662 /* FIXME: These are ignored for now.
2663 They could be used to set breakpoints on all inlined instances
2664 of a function and make GDB `next' properly over inlined functions. */
2665 break;
2666 case DW_TAG_lexical_block:
2667 case DW_TAG_try_block:
2668 case DW_TAG_catch_block:
2669 read_lexical_block_scope (die, cu);
2670 break;
2671 case DW_TAG_class_type:
2672 case DW_TAG_structure_type:
2673 case DW_TAG_union_type:
2674 read_structure_type (die, cu);
2675 process_structure_scope (die, cu);
2676 break;
2677 case DW_TAG_enumeration_type:
2678 read_enumeration_type (die, cu);
2679 process_enumeration_scope (die, cu);
2680 break;
2681
2682 /* FIXME drow/2004-03-14: These initialize die->type, but do not create
2683 a symbol or process any children. Therefore it doesn't do anything
2684 that won't be done on-demand by read_type_die. */
2685 case DW_TAG_subroutine_type:
2686 read_subroutine_type (die, cu);
2687 break;
2688 case DW_TAG_set_type:
2689 read_set_type (die, cu);
2690 break;
2691 case DW_TAG_array_type:
2692 read_array_type (die, cu);
2693 break;
2694 case DW_TAG_pointer_type:
2695 read_tag_pointer_type (die, cu);
2696 break;
2697 case DW_TAG_ptr_to_member_type:
2698 read_tag_ptr_to_member_type (die, cu);
2699 break;
2700 case DW_TAG_reference_type:
2701 read_tag_reference_type (die, cu);
2702 break;
2703 case DW_TAG_string_type:
2704 read_tag_string_type (die, cu);
2705 break;
2706 /* END FIXME */
2707
2708 case DW_TAG_base_type:
2709 read_base_type (die, cu);
2710 /* Add a typedef symbol for the type definition, if it has a
2711 DW_AT_name. */
2712 new_symbol (die, die->type, cu);
2713 break;
2714 case DW_TAG_subrange_type:
2715 read_subrange_type (die, cu);
2716 /* Add a typedef symbol for the type definition, if it has a
2717 DW_AT_name. */
2718 new_symbol (die, die->type, cu);
2719 break;
2720 case DW_TAG_common_block:
2721 read_common_block (die, cu);
2722 break;
2723 case DW_TAG_common_inclusion:
2724 break;
2725 case DW_TAG_namespace:
2726 processing_has_namespace_info = 1;
2727 read_namespace (die, cu);
2728 break;
2729 case DW_TAG_imported_declaration:
2730 case DW_TAG_imported_module:
2731 /* FIXME: carlton/2002-10-16: Eventually, we should use the
2732 information contained in these. DW_TAG_imported_declaration
2733 dies shouldn't have children; DW_TAG_imported_module dies
2734 shouldn't in the C++ case, but conceivably could in the
2735 Fortran case, so we'll have to replace this gdb_assert if
2736 Fortran compilers start generating that info. */
2737 processing_has_namespace_info = 1;
2738 gdb_assert (die->child == NULL);
2739 break;
2740 default:
2741 new_symbol (die, NULL, cu);
2742 break;
2743 }
2744 }
2745
2746 static void
2747 initialize_cu_func_list (struct dwarf2_cu *cu)
2748 {
2749 cu->first_fn = cu->last_fn = cu->cached_fn = NULL;
2750 }
2751
2752 static void
2753 free_cu_line_header (void *arg)
2754 {
2755 struct dwarf2_cu *cu = arg;
2756
2757 free_line_header (cu->line_header);
2758 cu->line_header = NULL;
2759 }
2760
2761 static void
2762 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
2763 {
2764 struct objfile *objfile = cu->objfile;
2765 struct comp_unit_head *cu_header = &cu->header;
2766 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
2767 CORE_ADDR lowpc = ((CORE_ADDR) -1);
2768 CORE_ADDR highpc = ((CORE_ADDR) 0);
2769 struct attribute *attr;
2770 char *name = NULL;
2771 char *comp_dir = NULL;
2772 struct die_info *child_die;
2773 bfd *abfd = objfile->obfd;
2774 struct line_header *line_header = 0;
2775 CORE_ADDR baseaddr;
2776
2777 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
2778
2779 get_scope_pc_bounds (die, &lowpc, &highpc, cu);
2780
2781 /* If we didn't find a lowpc, set it to highpc to avoid complaints
2782 from finish_block. */
2783 if (lowpc == ((CORE_ADDR) -1))
2784 lowpc = highpc;
2785 lowpc += baseaddr;
2786 highpc += baseaddr;
2787
2788 /* Find the filename. Do not use dwarf2_name here, since the filename
2789 is not a source language identifier. */
2790 attr = dwarf2_attr (die, DW_AT_name, cu);
2791 if (attr)
2792 {
2793 name = DW_STRING (attr);
2794 }
2795
2796 attr = dwarf2_attr (die, DW_AT_comp_dir, cu);
2797 if (attr)
2798 comp_dir = DW_STRING (attr);
2799 else if (name != NULL && IS_ABSOLUTE_PATH (name))
2800 {
2801 comp_dir = ldirname (name);
2802 if (comp_dir != NULL)
2803 make_cleanup (xfree, comp_dir);
2804 }
2805 if (comp_dir != NULL)
2806 {
2807 /* Irix 6.2 native cc prepends <machine>.: to the compilation
2808 directory, get rid of it. */
2809 char *cp = strchr (comp_dir, ':');
2810
2811 if (cp && cp != comp_dir && cp[-1] == '.' && cp[1] == '/')
2812 comp_dir = cp + 1;
2813 }
2814
2815 if (name == NULL)
2816 name = "<unknown>";
2817
2818 attr = dwarf2_attr (die, DW_AT_language, cu);
2819 if (attr)
2820 {
2821 set_cu_language (DW_UNSND (attr), cu);
2822 }
2823
2824 attr = dwarf2_attr (die, DW_AT_producer, cu);
2825 if (attr)
2826 cu->producer = DW_STRING (attr);
2827
2828 /* We assume that we're processing GCC output. */
2829 processing_gcc_compilation = 2;
2830
2831 start_symtab (name, comp_dir, lowpc);
2832 record_debugformat ("DWARF 2");
2833 record_producer (cu->producer);
2834
2835 initialize_cu_func_list (cu);
2836
2837 /* Decode line number information if present. We do this before
2838 processing child DIEs, so that the line header table is available
2839 for DW_AT_decl_file. */
2840 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
2841 if (attr)
2842 {
2843 unsigned int line_offset = DW_UNSND (attr);
2844 line_header = dwarf_decode_line_header (line_offset, abfd, cu);
2845 if (line_header)
2846 {
2847 cu->line_header = line_header;
2848 make_cleanup (free_cu_line_header, cu);
2849 dwarf_decode_lines (line_header, comp_dir, abfd, cu, NULL);
2850 }
2851 }
2852
2853 /* Process all dies in compilation unit. */
2854 if (die->child != NULL)
2855 {
2856 child_die = die->child;
2857 while (child_die && child_die->tag)
2858 {
2859 process_die (child_die, cu);
2860 child_die = sibling_die (child_die);
2861 }
2862 }
2863
2864 /* Decode macro information, if present. Dwarf 2 macro information
2865 refers to information in the line number info statement program
2866 header, so we can only read it if we've read the header
2867 successfully. */
2868 attr = dwarf2_attr (die, DW_AT_macro_info, cu);
2869 if (attr && line_header)
2870 {
2871 unsigned int macro_offset = DW_UNSND (attr);
2872 dwarf_decode_macros (line_header, macro_offset,
2873 comp_dir, abfd, cu);
2874 }
2875 do_cleanups (back_to);
2876 }
2877
2878 static void
2879 add_to_cu_func_list (const char *name, CORE_ADDR lowpc, CORE_ADDR highpc,
2880 struct dwarf2_cu *cu)
2881 {
2882 struct function_range *thisfn;
2883
2884 thisfn = (struct function_range *)
2885 obstack_alloc (&cu->comp_unit_obstack, sizeof (struct function_range));
2886 thisfn->name = name;
2887 thisfn->lowpc = lowpc;
2888 thisfn->highpc = highpc;
2889 thisfn->seen_line = 0;
2890 thisfn->next = NULL;
2891
2892 if (cu->last_fn == NULL)
2893 cu->first_fn = thisfn;
2894 else
2895 cu->last_fn->next = thisfn;
2896
2897 cu->last_fn = thisfn;
2898 }
2899
2900 static void
2901 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
2902 {
2903 struct objfile *objfile = cu->objfile;
2904 struct context_stack *new;
2905 CORE_ADDR lowpc;
2906 CORE_ADDR highpc;
2907 struct die_info *child_die;
2908 struct attribute *attr;
2909 char *name;
2910 const char *previous_prefix = processing_current_prefix;
2911 struct cleanup *back_to = NULL;
2912 CORE_ADDR baseaddr;
2913
2914 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
2915
2916 name = dwarf2_linkage_name (die, cu);
2917
2918 /* Ignore functions with missing or empty names and functions with
2919 missing or invalid low and high pc attributes. */
2920 if (name == NULL || !dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu))
2921 return;
2922
2923 if (cu->language == language_cplus
2924 || cu->language == language_java)
2925 {
2926 struct die_info *spec_die = die_specification (die, cu);
2927
2928 /* NOTE: carlton/2004-01-23: We have to be careful in the
2929 presence of DW_AT_specification. For example, with GCC 3.4,
2930 given the code
2931
2932 namespace N {
2933 void foo() {
2934 // Definition of N::foo.
2935 }
2936 }
2937
2938 then we'll have a tree of DIEs like this:
2939
2940 1: DW_TAG_compile_unit
2941 2: DW_TAG_namespace // N
2942 3: DW_TAG_subprogram // declaration of N::foo
2943 4: DW_TAG_subprogram // definition of N::foo
2944 DW_AT_specification // refers to die #3
2945
2946 Thus, when processing die #4, we have to pretend that we're
2947 in the context of its DW_AT_specification, namely the contex
2948 of die #3. */
2949
2950 if (spec_die != NULL)
2951 {
2952 char *specification_prefix = determine_prefix (spec_die, cu);
2953 processing_current_prefix = specification_prefix;
2954 back_to = make_cleanup (xfree, specification_prefix);
2955 }
2956 }
2957
2958 lowpc += baseaddr;
2959 highpc += baseaddr;
2960
2961 /* Record the function range for dwarf_decode_lines. */
2962 add_to_cu_func_list (name, lowpc, highpc, cu);
2963
2964 new = push_context (0, lowpc);
2965 new->name = new_symbol (die, die->type, cu);
2966
2967 /* If there is a location expression for DW_AT_frame_base, record
2968 it. */
2969 attr = dwarf2_attr (die, DW_AT_frame_base, cu);
2970 if (attr)
2971 /* FIXME: cagney/2004-01-26: The DW_AT_frame_base's location
2972 expression is being recorded directly in the function's symbol
2973 and not in a separate frame-base object. I guess this hack is
2974 to avoid adding some sort of frame-base adjunct/annex to the
2975 function's symbol :-(. The problem with doing this is that it
2976 results in a function symbol with a location expression that
2977 has nothing to do with the location of the function, ouch! The
2978 relationship should be: a function's symbol has-a frame base; a
2979 frame-base has-a location expression. */
2980 dwarf2_symbol_mark_computed (attr, new->name, cu);
2981
2982 cu->list_in_scope = &local_symbols;
2983
2984 if (die->child != NULL)
2985 {
2986 child_die = die->child;
2987 while (child_die && child_die->tag)
2988 {
2989 process_die (child_die, cu);
2990 child_die = sibling_die (child_die);
2991 }
2992 }
2993
2994 new = pop_context ();
2995 /* Make a block for the local symbols within. */
2996 finish_block (new->name, &local_symbols, new->old_blocks,
2997 lowpc, highpc, objfile);
2998
2999 /* In C++, we can have functions nested inside functions (e.g., when
3000 a function declares a class that has methods). This means that
3001 when we finish processing a function scope, we may need to go
3002 back to building a containing block's symbol lists. */
3003 local_symbols = new->locals;
3004 param_symbols = new->params;
3005
3006 /* If we've finished processing a top-level function, subsequent
3007 symbols go in the file symbol list. */
3008 if (outermost_context_p ())
3009 cu->list_in_scope = &file_symbols;
3010
3011 processing_current_prefix = previous_prefix;
3012 if (back_to != NULL)
3013 do_cleanups (back_to);
3014 }
3015
3016 /* Process all the DIES contained within a lexical block scope. Start
3017 a new scope, process the dies, and then close the scope. */
3018
3019 static void
3020 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
3021 {
3022 struct objfile *objfile = cu->objfile;
3023 struct context_stack *new;
3024 CORE_ADDR lowpc, highpc;
3025 struct die_info *child_die;
3026 CORE_ADDR baseaddr;
3027
3028 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
3029
3030 /* Ignore blocks with missing or invalid low and high pc attributes. */
3031 /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
3032 as multiple lexical blocks? Handling children in a sane way would
3033 be nasty. Might be easier to properly extend generic blocks to
3034 describe ranges. */
3035 if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu))
3036 return;
3037 lowpc += baseaddr;
3038 highpc += baseaddr;
3039
3040 push_context (0, lowpc);
3041 if (die->child != NULL)
3042 {
3043 child_die = die->child;
3044 while (child_die && child_die->tag)
3045 {
3046 process_die (child_die, cu);
3047 child_die = sibling_die (child_die);
3048 }
3049 }
3050 new = pop_context ();
3051
3052 if (local_symbols != NULL)
3053 {
3054 finish_block (0, &local_symbols, new->old_blocks, new->start_addr,
3055 highpc, objfile);
3056 }
3057 local_symbols = new->locals;
3058 }
3059
3060 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
3061 Return 1 if the attributes are present and valid, otherwise, return 0. */
3062
3063 static int
3064 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
3065 CORE_ADDR *high_return, struct dwarf2_cu *cu)
3066 {
3067 struct objfile *objfile = cu->objfile;
3068 struct comp_unit_head *cu_header = &cu->header;
3069 bfd *obfd = objfile->obfd;
3070 unsigned int addr_size = cu_header->addr_size;
3071 CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
3072 /* Base address selection entry. */
3073 CORE_ADDR base;
3074 int found_base;
3075 unsigned int dummy;
3076 gdb_byte *buffer;
3077 CORE_ADDR marker;
3078 int low_set;
3079 CORE_ADDR low = 0;
3080 CORE_ADDR high = 0;
3081
3082 found_base = cu_header->base_known;
3083 base = cu_header->base_address;
3084
3085 if (offset >= dwarf2_per_objfile->ranges_size)
3086 {
3087 complaint (&symfile_complaints,
3088 _("Offset %d out of bounds for DW_AT_ranges attribute"),
3089 offset);
3090 return 0;
3091 }
3092 buffer = dwarf2_per_objfile->ranges_buffer + offset;
3093
3094 /* Read in the largest possible address. */
3095 marker = read_address (obfd, buffer, cu, &dummy);
3096 if ((marker & mask) == mask)
3097 {
3098 /* If we found the largest possible address, then
3099 read the base address. */
3100 base = read_address (obfd, buffer + addr_size, cu, &dummy);
3101 buffer += 2 * addr_size;
3102 offset += 2 * addr_size;
3103 found_base = 1;
3104 }
3105
3106 low_set = 0;
3107
3108 while (1)
3109 {
3110 CORE_ADDR range_beginning, range_end;
3111
3112 range_beginning = read_address (obfd, buffer, cu, &dummy);
3113 buffer += addr_size;
3114 range_end = read_address (obfd, buffer, cu, &dummy);
3115 buffer += addr_size;
3116 offset += 2 * addr_size;
3117
3118 /* An end of list marker is a pair of zero addresses. */
3119 if (range_beginning == 0 && range_end == 0)
3120 /* Found the end of list entry. */
3121 break;
3122
3123 /* Each base address selection entry is a pair of 2 values.
3124 The first is the largest possible address, the second is
3125 the base address. Check for a base address here. */
3126 if ((range_beginning & mask) == mask)
3127 {
3128 /* If we found the largest possible address, then
3129 read the base address. */
3130 base = read_address (obfd, buffer + addr_size, cu, &dummy);
3131 found_base = 1;
3132 continue;
3133 }
3134
3135 if (!found_base)
3136 {
3137 /* We have no valid base address for the ranges
3138 data. */
3139 complaint (&symfile_complaints,
3140 _("Invalid .debug_ranges data (no base address)"));
3141 return 0;
3142 }
3143
3144 range_beginning += base;
3145 range_end += base;
3146
3147 /* FIXME: This is recording everything as a low-high
3148 segment of consecutive addresses. We should have a
3149 data structure for discontiguous block ranges
3150 instead. */
3151 if (! low_set)
3152 {
3153 low = range_beginning;
3154 high = range_end;
3155 low_set = 1;
3156 }
3157 else
3158 {
3159 if (range_beginning < low)
3160 low = range_beginning;
3161 if (range_end > high)
3162 high = range_end;
3163 }
3164 }
3165
3166 if (! low_set)
3167 /* If the first entry is an end-of-list marker, the range
3168 describes an empty scope, i.e. no instructions. */
3169 return 0;
3170
3171 if (low_return)
3172 *low_return = low;
3173 if (high_return)
3174 *high_return = high;
3175 return 1;
3176 }
3177
3178 /* Get low and high pc attributes from a die. Return 1 if the attributes
3179 are present and valid, otherwise, return 0. Return -1 if the range is
3180 discontinuous, i.e. derived from DW_AT_ranges information. */
3181 static int
3182 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
3183 CORE_ADDR *highpc, struct dwarf2_cu *cu)
3184 {
3185 struct attribute *attr;
3186 CORE_ADDR low = 0;
3187 CORE_ADDR high = 0;
3188 int ret = 0;
3189
3190 attr = dwarf2_attr (die, DW_AT_high_pc, cu);
3191 if (attr)
3192 {
3193 high = DW_ADDR (attr);
3194 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
3195 if (attr)
3196 low = DW_ADDR (attr);
3197 else
3198 /* Found high w/o low attribute. */
3199 return 0;
3200
3201 /* Found consecutive range of addresses. */
3202 ret = 1;
3203 }
3204 else
3205 {
3206 attr = dwarf2_attr (die, DW_AT_ranges, cu);
3207 if (attr != NULL)
3208 {
3209 /* Value of the DW_AT_ranges attribute is the offset in the
3210 .debug_ranges section. */
3211 if (!dwarf2_ranges_read (DW_UNSND (attr), &low, &high, cu))
3212 return 0;
3213 /* Found discontinuous range of addresses. */
3214 ret = -1;
3215 }
3216 }
3217
3218 if (high < low)
3219 return 0;
3220
3221 /* When using the GNU linker, .gnu.linkonce. sections are used to
3222 eliminate duplicate copies of functions and vtables and such.
3223 The linker will arbitrarily choose one and discard the others.
3224 The AT_*_pc values for such functions refer to local labels in
3225 these sections. If the section from that file was discarded, the
3226 labels are not in the output, so the relocs get a value of 0.
3227 If this is a discarded function, mark the pc bounds as invalid,
3228 so that GDB will ignore it. */
3229 if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
3230 return 0;
3231
3232 *lowpc = low;
3233 *highpc = high;
3234 return ret;
3235 }
3236
3237 /* Get the low and high pc's represented by the scope DIE, and store
3238 them in *LOWPC and *HIGHPC. If the correct values can't be
3239 determined, set *LOWPC to -1 and *HIGHPC to 0. */
3240
3241 static void
3242 get_scope_pc_bounds (struct die_info *die,
3243 CORE_ADDR *lowpc, CORE_ADDR *highpc,
3244 struct dwarf2_cu *cu)
3245 {
3246 CORE_ADDR best_low = (CORE_ADDR) -1;
3247 CORE_ADDR best_high = (CORE_ADDR) 0;
3248 CORE_ADDR current_low, current_high;
3249
3250 if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu))
3251 {
3252 best_low = current_low;
3253 best_high = current_high;
3254 }
3255 else
3256 {
3257 struct die_info *child = die->child;
3258
3259 while (child && child->tag)
3260 {
3261 switch (child->tag) {
3262 case DW_TAG_subprogram:
3263 if (dwarf2_get_pc_bounds (child, &current_low, &current_high, cu))
3264 {
3265 best_low = min (best_low, current_low);
3266 best_high = max (best_high, current_high);
3267 }
3268 break;
3269 case DW_TAG_namespace:
3270 /* FIXME: carlton/2004-01-16: Should we do this for
3271 DW_TAG_class_type/DW_TAG_structure_type, too? I think
3272 that current GCC's always emit the DIEs corresponding
3273 to definitions of methods of classes as children of a
3274 DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
3275 the DIEs giving the declarations, which could be
3276 anywhere). But I don't see any reason why the
3277 standards says that they have to be there. */
3278 get_scope_pc_bounds (child, &current_low, &current_high, cu);
3279
3280 if (current_low != ((CORE_ADDR) -1))
3281 {
3282 best_low = min (best_low, current_low);
3283 best_high = max (best_high, current_high);
3284 }
3285 break;
3286 default:
3287 /* Ignore. */
3288 break;
3289 }
3290
3291 child = sibling_die (child);
3292 }
3293 }
3294
3295 *lowpc = best_low;
3296 *highpc = best_high;
3297 }
3298
3299 /* Add an aggregate field to the field list. */
3300
3301 static void
3302 dwarf2_add_field (struct field_info *fip, struct die_info *die,
3303 struct dwarf2_cu *cu)
3304 {
3305 struct objfile *objfile = cu->objfile;
3306 struct nextfield *new_field;
3307 struct attribute *attr;
3308 struct field *fp;
3309 char *fieldname = "";
3310
3311 /* Allocate a new field list entry and link it in. */
3312 new_field = (struct nextfield *) xmalloc (sizeof (struct nextfield));
3313 make_cleanup (xfree, new_field);
3314 memset (new_field, 0, sizeof (struct nextfield));
3315 new_field->next = fip->fields;
3316 fip->fields = new_field;
3317 fip->nfields++;
3318
3319 /* Handle accessibility and virtuality of field.
3320 The default accessibility for members is public, the default
3321 accessibility for inheritance is private. */
3322 if (die->tag != DW_TAG_inheritance)
3323 new_field->accessibility = DW_ACCESS_public;
3324 else
3325 new_field->accessibility = DW_ACCESS_private;
3326 new_field->virtuality = DW_VIRTUALITY_none;
3327
3328 attr = dwarf2_attr (die, DW_AT_accessibility, cu);
3329 if (attr)
3330 new_field->accessibility = DW_UNSND (attr);
3331 if (new_field->accessibility != DW_ACCESS_public)
3332 fip->non_public_fields = 1;
3333 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
3334 if (attr)
3335 new_field->virtuality = DW_UNSND (attr);
3336
3337 fp = &new_field->field;
3338
3339 if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
3340 {
3341 /* Data member other than a C++ static data member. */
3342
3343 /* Get type of field. */
3344 fp->type = die_type (die, cu);
3345
3346 FIELD_STATIC_KIND (*fp) = 0;
3347
3348 /* Get bit size of field (zero if none). */
3349 attr = dwarf2_attr (die, DW_AT_bit_size, cu);
3350 if (attr)
3351 {
3352 FIELD_BITSIZE (*fp) = DW_UNSND (attr);
3353 }
3354 else
3355 {
3356 FIELD_BITSIZE (*fp) = 0;
3357 }
3358
3359 /* Get bit offset of field. */
3360 attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
3361 if (attr)
3362 {
3363 FIELD_BITPOS (*fp) =
3364 decode_locdesc (DW_BLOCK (attr), cu) * bits_per_byte;
3365 }
3366 else
3367 FIELD_BITPOS (*fp) = 0;
3368 attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
3369 if (attr)
3370 {
3371 if (BITS_BIG_ENDIAN)
3372 {
3373 /* For big endian bits, the DW_AT_bit_offset gives the
3374 additional bit offset from the MSB of the containing
3375 anonymous object to the MSB of the field. We don't
3376 have to do anything special since we don't need to
3377 know the size of the anonymous object. */
3378 FIELD_BITPOS (*fp) += DW_UNSND (attr);
3379 }
3380 else
3381 {
3382 /* For little endian bits, compute the bit offset to the
3383 MSB of the anonymous object, subtract off the number of
3384 bits from the MSB of the field to the MSB of the
3385 object, and then subtract off the number of bits of
3386 the field itself. The result is the bit offset of
3387 the LSB of the field. */
3388 int anonymous_size;
3389 int bit_offset = DW_UNSND (attr);
3390
3391 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
3392 if (attr)
3393 {
3394 /* The size of the anonymous object containing
3395 the bit field is explicit, so use the
3396 indicated size (in bytes). */
3397 anonymous_size = DW_UNSND (attr);
3398 }
3399 else
3400 {
3401 /* The size of the anonymous object containing
3402 the bit field must be inferred from the type
3403 attribute of the data member containing the
3404 bit field. */
3405 anonymous_size = TYPE_LENGTH (fp->type);
3406 }
3407 FIELD_BITPOS (*fp) += anonymous_size * bits_per_byte
3408 - bit_offset - FIELD_BITSIZE (*fp);
3409 }
3410 }
3411
3412 /* Get name of field. */
3413 fieldname = dwarf2_name (die, cu);
3414 if (fieldname == NULL)
3415 fieldname = "";
3416
3417 /* The name is already allocated along with this objfile, so we don't
3418 need to duplicate it for the type. */
3419 fp->name = fieldname;
3420
3421 /* Change accessibility for artificial fields (e.g. virtual table
3422 pointer or virtual base class pointer) to private. */
3423 if (dwarf2_attr (die, DW_AT_artificial, cu))
3424 {
3425 new_field->accessibility = DW_ACCESS_private;
3426 fip->non_public_fields = 1;
3427 }
3428 }
3429 else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
3430 {
3431 /* C++ static member. */
3432
3433 /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
3434 is a declaration, but all versions of G++ as of this writing
3435 (so through at least 3.2.1) incorrectly generate
3436 DW_TAG_variable tags. */
3437
3438 char *physname;
3439
3440 /* Get name of field. */
3441 fieldname = dwarf2_name (die, cu);
3442 if (fieldname == NULL)
3443 return;
3444
3445 /* Get physical name. */
3446 physname = dwarf2_linkage_name (die, cu);
3447
3448 /* The name is already allocated along with this objfile, so we don't
3449 need to duplicate it for the type. */
3450 SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
3451 FIELD_TYPE (*fp) = die_type (die, cu);
3452 FIELD_NAME (*fp) = fieldname;
3453 }
3454 else if (die->tag == DW_TAG_inheritance)
3455 {
3456 /* C++ base class field. */
3457 attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
3458 if (attr)
3459 FIELD_BITPOS (*fp) = (decode_locdesc (DW_BLOCK (attr), cu)
3460 * bits_per_byte);
3461 FIELD_BITSIZE (*fp) = 0;
3462 FIELD_STATIC_KIND (*fp) = 0;
3463 FIELD_TYPE (*fp) = die_type (die, cu);
3464 FIELD_NAME (*fp) = type_name_no_tag (fp->type);
3465 fip->nbaseclasses++;
3466 }
3467 }
3468
3469 /* Create the vector of fields, and attach it to the type. */
3470
3471 static void
3472 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
3473 struct dwarf2_cu *cu)
3474 {
3475 int nfields = fip->nfields;
3476
3477 /* Record the field count, allocate space for the array of fields,
3478 and create blank accessibility bitfields if necessary. */
3479 TYPE_NFIELDS (type) = nfields;
3480 TYPE_FIELDS (type) = (struct field *)
3481 TYPE_ALLOC (type, sizeof (struct field) * nfields);
3482 memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
3483
3484 if (fip->non_public_fields)
3485 {
3486 ALLOCATE_CPLUS_STRUCT_TYPE (type);
3487
3488 TYPE_FIELD_PRIVATE_BITS (type) =
3489 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
3490 B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
3491
3492 TYPE_FIELD_PROTECTED_BITS (type) =
3493 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
3494 B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
3495
3496 TYPE_FIELD_IGNORE_BITS (type) =
3497 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
3498 B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
3499 }
3500
3501 /* If the type has baseclasses, allocate and clear a bit vector for
3502 TYPE_FIELD_VIRTUAL_BITS. */
3503 if (fip->nbaseclasses)
3504 {
3505 int num_bytes = B_BYTES (fip->nbaseclasses);
3506 unsigned char *pointer;
3507
3508 ALLOCATE_CPLUS_STRUCT_TYPE (type);
3509 pointer = TYPE_ALLOC (type, num_bytes);
3510 TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
3511 B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->nbaseclasses);
3512 TYPE_N_BASECLASSES (type) = fip->nbaseclasses;
3513 }
3514
3515 /* Copy the saved-up fields into the field vector. Start from the head
3516 of the list, adding to the tail of the field array, so that they end
3517 up in the same order in the array in which they were added to the list. */
3518 while (nfields-- > 0)
3519 {
3520 TYPE_FIELD (type, nfields) = fip->fields->field;
3521 switch (fip->fields->accessibility)
3522 {
3523 case DW_ACCESS_private:
3524 SET_TYPE_FIELD_PRIVATE (type, nfields);
3525 break;
3526
3527 case DW_ACCESS_protected:
3528 SET_TYPE_FIELD_PROTECTED (type, nfields);
3529 break;
3530
3531 case DW_ACCESS_public:
3532 break;
3533
3534 default:
3535 /* Unknown accessibility. Complain and treat it as public. */
3536 {
3537 complaint (&symfile_complaints, _("unsupported accessibility %d"),
3538 fip->fields->accessibility);
3539 }
3540 break;
3541 }
3542 if (nfields < fip->nbaseclasses)
3543 {
3544 switch (fip->fields->virtuality)
3545 {
3546 case DW_VIRTUALITY_virtual:
3547 case DW_VIRTUALITY_pure_virtual:
3548 SET_TYPE_FIELD_VIRTUAL (type, nfields);
3549 break;
3550 }
3551 }
3552 fip->fields = fip->fields->next;
3553 }
3554 }
3555
3556 /* Add a member function to the proper fieldlist. */
3557
3558 static void
3559 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
3560 struct type *type, struct dwarf2_cu *cu)
3561 {
3562 struct objfile *objfile = cu->objfile;
3563 struct attribute *attr;
3564 struct fnfieldlist *flp;
3565 int i;
3566 struct fn_field *fnp;
3567 char *fieldname;
3568 char *physname;
3569 struct nextfnfield *new_fnfield;
3570
3571 /* Get name of member function. */
3572 fieldname = dwarf2_name (die, cu);
3573 if (fieldname == NULL)
3574 return;
3575
3576 /* Get the mangled name. */
3577 physname = dwarf2_linkage_name (die, cu);
3578
3579 /* Look up member function name in fieldlist. */
3580 for (i = 0; i < fip->nfnfields; i++)
3581 {
3582 if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
3583 break;
3584 }
3585
3586 /* Create new list element if necessary. */
3587 if (i < fip->nfnfields)
3588 flp = &fip->fnfieldlists[i];
3589 else
3590 {
3591 if ((fip->nfnfields % DW_FIELD_ALLOC_CHUNK) == 0)
3592 {
3593 fip->fnfieldlists = (struct fnfieldlist *)
3594 xrealloc (fip->fnfieldlists,
3595 (fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
3596 * sizeof (struct fnfieldlist));
3597 if (fip->nfnfields == 0)
3598 make_cleanup (free_current_contents, &fip->fnfieldlists);
3599 }
3600 flp = &fip->fnfieldlists[fip->nfnfields];
3601 flp->name = fieldname;
3602 flp->length = 0;
3603 flp->head = NULL;
3604 fip->nfnfields++;
3605 }
3606
3607 /* Create a new member function field and chain it to the field list
3608 entry. */
3609 new_fnfield = (struct nextfnfield *) xmalloc (sizeof (struct nextfnfield));
3610 make_cleanup (xfree, new_fnfield);
3611 memset (new_fnfield, 0, sizeof (struct nextfnfield));
3612 new_fnfield->next = flp->head;
3613 flp->head = new_fnfield;
3614 flp->length++;
3615
3616 /* Fill in the member function field info. */
3617 fnp = &new_fnfield->fnfield;
3618 /* The name is already allocated along with this objfile, so we don't
3619 need to duplicate it for the type. */
3620 fnp->physname = physname ? physname : "";
3621 fnp->type = alloc_type (objfile);
3622 if (die->type && TYPE_CODE (die->type) == TYPE_CODE_FUNC)
3623 {
3624 int nparams = TYPE_NFIELDS (die->type);
3625
3626 /* TYPE is the domain of this method, and DIE->TYPE is the type
3627 of the method itself (TYPE_CODE_METHOD). */
3628 smash_to_method_type (fnp->type, type,
3629 TYPE_TARGET_TYPE (die->type),
3630 TYPE_FIELDS (die->type),
3631 TYPE_NFIELDS (die->type),
3632 TYPE_VARARGS (die->type));
3633
3634 /* Handle static member functions.
3635 Dwarf2 has no clean way to discern C++ static and non-static
3636 member functions. G++ helps GDB by marking the first
3637 parameter for non-static member functions (which is the
3638 this pointer) as artificial. We obtain this information
3639 from read_subroutine_type via TYPE_FIELD_ARTIFICIAL. */
3640 if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (die->type, 0) == 0)
3641 fnp->voffset = VOFFSET_STATIC;
3642 }
3643 else
3644 complaint (&symfile_complaints, _("member function type missing for '%s'"),
3645 physname);
3646
3647 /* Get fcontext from DW_AT_containing_type if present. */
3648 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
3649 fnp->fcontext = die_containing_type (die, cu);
3650
3651 /* dwarf2 doesn't have stubbed physical names, so the setting of is_const
3652 and is_volatile is irrelevant, as it is needed by gdb_mangle_name only. */
3653
3654 /* Get accessibility. */
3655 attr = dwarf2_attr (die, DW_AT_accessibility, cu);
3656 if (attr)
3657 {
3658 switch (DW_UNSND (attr))
3659 {
3660 case DW_ACCESS_private:
3661 fnp->is_private = 1;
3662 break;
3663 case DW_ACCESS_protected:
3664 fnp->is_protected = 1;
3665 break;
3666 }
3667 }
3668
3669 /* Check for artificial methods. */
3670 attr = dwarf2_attr (die, DW_AT_artificial, cu);
3671 if (attr && DW_UNSND (attr) != 0)
3672 fnp->is_artificial = 1;
3673
3674 /* Get index in virtual function table if it is a virtual member function. */
3675 attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
3676 if (attr)
3677 {
3678 /* Support the .debug_loc offsets */
3679 if (attr_form_is_block (attr))
3680 {
3681 fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
3682 }
3683 else if (attr->form == DW_FORM_data4 || attr->form == DW_FORM_data8)
3684 {
3685 dwarf2_complex_location_expr_complaint ();
3686 }
3687 else
3688 {
3689 dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
3690 fieldname);
3691 }
3692 }
3693 }
3694
3695 /* Create the vector of member function fields, and attach it to the type. */
3696
3697 static void
3698 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
3699 struct dwarf2_cu *cu)
3700 {
3701 struct fnfieldlist *flp;
3702 int total_length = 0;
3703 int i;
3704
3705 ALLOCATE_CPLUS_STRUCT_TYPE (type);
3706 TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
3707 TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields);
3708
3709 for (i = 0, flp = fip->fnfieldlists; i < fip->nfnfields; i++, flp++)
3710 {
3711 struct nextfnfield *nfp = flp->head;
3712 struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
3713 int k;
3714
3715 TYPE_FN_FIELDLIST_NAME (type, i) = flp->name;
3716 TYPE_FN_FIELDLIST_LENGTH (type, i) = flp->length;
3717 fn_flp->fn_fields = (struct fn_field *)
3718 TYPE_ALLOC (type, sizeof (struct fn_field) * flp->length);
3719 for (k = flp->length; (k--, nfp); nfp = nfp->next)
3720 fn_flp->fn_fields[k] = nfp->fnfield;
3721
3722 total_length += flp->length;
3723 }
3724
3725 TYPE_NFN_FIELDS (type) = fip->nfnfields;
3726 TYPE_NFN_FIELDS_TOTAL (type) = total_length;
3727 }
3728
3729 /* Returns non-zero if NAME is the name of a vtable member in CU's
3730 language, zero otherwise. */
3731 static int
3732 is_vtable_name (const char *name, struct dwarf2_cu *cu)
3733 {
3734 static const char vptr[] = "_vptr";
3735 static const char vtable[] = "vtable";
3736
3737 /* Look for the C++ and Java forms of the vtable. */
3738 if ((cu->language == language_java
3739 && strncmp (name, vtable, sizeof (vtable) - 1) == 0)
3740 || (strncmp (name, vptr, sizeof (vptr) - 1) == 0
3741 && is_cplus_marker (name[sizeof (vptr) - 1])))
3742 return 1;
3743
3744 return 0;
3745 }
3746
3747 /* GCC outputs unnamed structures that are really pointers to member
3748 functions, with the ABI-specified layout. If DIE (from CU) describes
3749 such a structure, set its type, and return nonzero. Otherwise return
3750 zero.
3751
3752 GCC shouldn't do this; it should just output pointer to member DIEs.
3753 This is GCC PR debug/28767. */
3754
3755 static int
3756 quirk_gcc_member_function_pointer (struct die_info *die, struct dwarf2_cu *cu)
3757 {
3758 struct objfile *objfile = cu->objfile;
3759 struct type *type;
3760 struct die_info *pfn_die, *delta_die;
3761 struct attribute *pfn_name, *delta_name;
3762 struct type *pfn_type, *domain_type;
3763
3764 /* Check for a structure with no name and two children. */
3765 if (die->tag != DW_TAG_structure_type
3766 || dwarf2_attr (die, DW_AT_name, cu) != NULL
3767 || die->child == NULL
3768 || die->child->sibling == NULL
3769 || (die->child->sibling->sibling != NULL
3770 && die->child->sibling->sibling->tag != DW_TAG_padding))
3771 return 0;
3772
3773 /* Check for __pfn and __delta members. */
3774 pfn_die = die->child;
3775 pfn_name = dwarf2_attr (pfn_die, DW_AT_name, cu);
3776 if (pfn_die->tag != DW_TAG_member
3777 || pfn_name == NULL
3778 || DW_STRING (pfn_name) == NULL
3779 || strcmp ("__pfn", DW_STRING (pfn_name)) != 0)
3780 return 0;
3781
3782 delta_die = pfn_die->sibling;
3783 delta_name = dwarf2_attr (delta_die, DW_AT_name, cu);
3784 if (delta_die->tag != DW_TAG_member
3785 || delta_name == NULL
3786 || DW_STRING (delta_name) == NULL
3787 || strcmp ("__delta", DW_STRING (delta_name)) != 0)
3788 return 0;
3789
3790 /* Find the type of the method. */
3791 pfn_type = die_type (pfn_die, cu);
3792 if (pfn_type == NULL
3793 || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
3794 || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
3795 return 0;
3796
3797 /* Look for the "this" argument. */
3798 pfn_type = TYPE_TARGET_TYPE (pfn_type);
3799 if (TYPE_NFIELDS (pfn_type) == 0
3800 || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
3801 return 0;
3802
3803 domain_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
3804 type = alloc_type (objfile);
3805 smash_to_method_type (type, domain_type, TYPE_TARGET_TYPE (pfn_type),
3806 TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
3807 TYPE_VARARGS (pfn_type));
3808 type = lookup_methodptr_type (type);
3809 set_die_type (die, type, cu);
3810
3811 return 1;
3812 }
3813
3814 /* Called when we find the DIE that starts a structure or union scope
3815 (definition) to process all dies that define the members of the
3816 structure or union.
3817
3818 NOTE: we need to call struct_type regardless of whether or not the
3819 DIE has an at_name attribute, since it might be an anonymous
3820 structure or union. This gets the type entered into our set of
3821 user defined types.
3822
3823 However, if the structure is incomplete (an opaque struct/union)
3824 then suppress creating a symbol table entry for it since gdb only
3825 wants to find the one with the complete definition. Note that if
3826 it is complete, we just call new_symbol, which does it's own
3827 checking about whether the struct/union is anonymous or not (and
3828 suppresses creating a symbol table entry itself). */
3829
3830 static void
3831 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
3832 {
3833 struct objfile *objfile = cu->objfile;
3834 struct type *type;
3835 struct attribute *attr;
3836 const char *previous_prefix = processing_current_prefix;
3837 struct cleanup *back_to = NULL;
3838 char *name;
3839
3840 if (die->type)
3841 return;
3842
3843 if (quirk_gcc_member_function_pointer (die, cu))
3844 return;
3845
3846 type = alloc_type (objfile);
3847 INIT_CPLUS_SPECIFIC (type);
3848 name = dwarf2_name (die, cu);
3849 if (name != NULL)
3850 {
3851 if (cu->language == language_cplus
3852 || cu->language == language_java)
3853 {
3854 char *new_prefix = determine_class_name (die, cu);
3855 TYPE_TAG_NAME (type) = obsavestring (new_prefix,
3856 strlen (new_prefix),
3857 &objfile->objfile_obstack);
3858 back_to = make_cleanup (xfree, new_prefix);
3859 processing_current_prefix = new_prefix;
3860 }
3861 else
3862 {
3863 /* The name is already allocated along with this objfile, so
3864 we don't need to duplicate it for the type. */
3865 TYPE_TAG_NAME (type) = name;
3866 }
3867 }
3868
3869 if (die->tag == DW_TAG_structure_type)
3870 {
3871 TYPE_CODE (type) = TYPE_CODE_STRUCT;
3872 }
3873 else if (die->tag == DW_TAG_union_type)
3874 {
3875 TYPE_CODE (type) = TYPE_CODE_UNION;
3876 }
3877 else
3878 {
3879 /* FIXME: TYPE_CODE_CLASS is currently defined to TYPE_CODE_STRUCT
3880 in gdbtypes.h. */
3881 TYPE_CODE (type) = TYPE_CODE_CLASS;
3882 }
3883
3884 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
3885 if (attr)
3886 {
3887 TYPE_LENGTH (type) = DW_UNSND (attr);
3888 }
3889 else
3890 {
3891 TYPE_LENGTH (type) = 0;
3892 }
3893
3894 TYPE_FLAGS (type) |= TYPE_FLAG_STUB_SUPPORTED;
3895 if (die_is_declaration (die, cu))
3896 TYPE_FLAGS (type) |= TYPE_FLAG_STUB;
3897
3898 /* We need to add the type field to the die immediately so we don't
3899 infinitely recurse when dealing with pointers to the structure
3900 type within the structure itself. */
3901 set_die_type (die, type, cu);
3902
3903 if (die->child != NULL && ! die_is_declaration (die, cu))
3904 {
3905 struct field_info fi;
3906 struct die_info *child_die;
3907 struct cleanup *back_to = make_cleanup (null_cleanup, NULL);
3908
3909 memset (&fi, 0, sizeof (struct field_info));
3910
3911 child_die = die->child;
3912
3913 while (child_die && child_die->tag)
3914 {
3915 if (child_die->tag == DW_TAG_member
3916 || child_die->tag == DW_TAG_variable)
3917 {
3918 /* NOTE: carlton/2002-11-05: A C++ static data member
3919 should be a DW_TAG_member that is a declaration, but
3920 all versions of G++ as of this writing (so through at
3921 least 3.2.1) incorrectly generate DW_TAG_variable
3922 tags for them instead. */
3923 dwarf2_add_field (&fi, child_die, cu);
3924 }
3925 else if (child_die->tag == DW_TAG_subprogram)
3926 {
3927 /* C++ member function. */
3928 read_type_die (child_die, cu);
3929 dwarf2_add_member_fn (&fi, child_die, type, cu);
3930 }
3931 else if (child_die->tag == DW_TAG_inheritance)
3932 {
3933 /* C++ base class field. */
3934 dwarf2_add_field (&fi, child_die, cu);
3935 }
3936 child_die = sibling_die (child_die);
3937 }
3938
3939 /* Attach fields and member functions to the type. */
3940 if (fi.nfields)
3941 dwarf2_attach_fields_to_type (&fi, type, cu);
3942 if (fi.nfnfields)
3943 {
3944 dwarf2_attach_fn_fields_to_type (&fi, type, cu);
3945
3946 /* Get the type which refers to the base class (possibly this
3947 class itself) which contains the vtable pointer for the current
3948 class from the DW_AT_containing_type attribute. */
3949
3950 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
3951 {
3952 struct type *t = die_containing_type (die, cu);
3953
3954 TYPE_VPTR_BASETYPE (type) = t;
3955 if (type == t)
3956 {
3957 int i;
3958
3959 /* Our own class provides vtbl ptr. */
3960 for (i = TYPE_NFIELDS (t) - 1;
3961 i >= TYPE_N_BASECLASSES (t);
3962 --i)
3963 {
3964 char *fieldname = TYPE_FIELD_NAME (t, i);
3965
3966 if (is_vtable_name (fieldname, cu))
3967 {
3968 TYPE_VPTR_FIELDNO (type) = i;
3969 break;
3970 }
3971 }
3972
3973 /* Complain if virtual function table field not found. */
3974 if (i < TYPE_N_BASECLASSES (t))
3975 complaint (&symfile_complaints,
3976 _("virtual function table pointer not found when defining class '%s'"),
3977 TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
3978 "");
3979 }
3980 else
3981 {
3982 TYPE_VPTR_FIELDNO (type) = TYPE_VPTR_FIELDNO (t);
3983 }
3984 }
3985 else if (cu->producer
3986 && strncmp (cu->producer,
3987 "IBM(R) XL C/C++ Advanced Edition", 32) == 0)
3988 {
3989 /* The IBM XLC compiler does not provide direct indication
3990 of the containing type, but the vtable pointer is
3991 always named __vfp. */
3992
3993 int i;
3994
3995 for (i = TYPE_NFIELDS (type) - 1;
3996 i >= TYPE_N_BASECLASSES (type);
3997 --i)
3998 {
3999 if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
4000 {
4001 TYPE_VPTR_FIELDNO (type) = i;
4002 TYPE_VPTR_BASETYPE (type) = type;
4003 break;
4004 }
4005 }
4006 }
4007 }
4008
4009 do_cleanups (back_to);
4010 }
4011
4012 processing_current_prefix = previous_prefix;
4013 if (back_to != NULL)
4014 do_cleanups (back_to);
4015 }
4016
4017 static void
4018 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
4019 {
4020 struct objfile *objfile = cu->objfile;
4021 const char *previous_prefix = processing_current_prefix;
4022 struct die_info *child_die = die->child;
4023
4024 if (TYPE_TAG_NAME (die->type) != NULL)
4025 processing_current_prefix = TYPE_TAG_NAME (die->type);
4026
4027 /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
4028 snapshots) has been known to create a die giving a declaration
4029 for a class that has, as a child, a die giving a definition for a
4030 nested class. So we have to process our children even if the
4031 current die is a declaration. Normally, of course, a declaration
4032 won't have any children at all. */
4033
4034 while (child_die != NULL && child_die->tag)
4035 {
4036 if (child_die->tag == DW_TAG_member
4037 || child_die->tag == DW_TAG_variable
4038 || child_die->tag == DW_TAG_inheritance)
4039 {
4040 /* Do nothing. */
4041 }
4042 else
4043 process_die (child_die, cu);
4044
4045 child_die = sibling_die (child_die);
4046 }
4047
4048 /* Do not consider external references. According to the DWARF standard,
4049 these DIEs are identified by the fact that they have no byte_size
4050 attribute, and a declaration attribute. */
4051 if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
4052 || !die_is_declaration (die, cu))
4053 new_symbol (die, die->type, cu);
4054
4055 processing_current_prefix = previous_prefix;
4056 }
4057
4058 /* Given a DW_AT_enumeration_type die, set its type. We do not
4059 complete the type's fields yet, or create any symbols. */
4060
4061 static void
4062 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
4063 {
4064 struct objfile *objfile = cu->objfile;
4065 struct type *type;
4066 struct attribute *attr;
4067 char *name;
4068
4069 if (die->type)
4070 return;
4071
4072 type = alloc_type (objfile);
4073
4074 TYPE_CODE (type) = TYPE_CODE_ENUM;
4075 name = dwarf2_name (die, cu);
4076 if (name != NULL)
4077 {
4078 if (processing_has_namespace_info)
4079 {
4080 TYPE_TAG_NAME (type) = typename_concat (&objfile->objfile_obstack,
4081 processing_current_prefix,
4082 name, cu);
4083 }
4084 else
4085 {
4086 /* The name is already allocated along with this objfile, so
4087 we don't need to duplicate it for the type. */
4088 TYPE_TAG_NAME (type) = name;
4089 }
4090 }
4091
4092 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
4093 if (attr)
4094 {
4095 TYPE_LENGTH (type) = DW_UNSND (attr);
4096 }
4097 else
4098 {
4099 TYPE_LENGTH (type) = 0;
4100 }
4101
4102 set_die_type (die, type, cu);
4103 }
4104
4105 /* Determine the name of the type represented by DIE, which should be
4106 a named C++ or Java compound type. Return the name in question; the caller
4107 is responsible for xfree()'ing it. */
4108
4109 static char *
4110 determine_class_name (struct die_info *die, struct dwarf2_cu *cu)
4111 {
4112 struct cleanup *back_to = NULL;
4113 struct die_info *spec_die = die_specification (die, cu);
4114 char *new_prefix = NULL;
4115
4116 /* If this is the definition of a class that is declared by another
4117 die, then processing_current_prefix may not be accurate; see
4118 read_func_scope for a similar example. */
4119 if (spec_die != NULL)
4120 {
4121 char *specification_prefix = determine_prefix (spec_die, cu);
4122 processing_current_prefix = specification_prefix;
4123 back_to = make_cleanup (xfree, specification_prefix);
4124 }
4125
4126 /* If we don't have namespace debug info, guess the name by trying
4127 to demangle the names of members, just like we did in
4128 guess_structure_name. */
4129 if (!processing_has_namespace_info)
4130 {
4131 struct die_info *child;
4132
4133 for (child = die->child;
4134 child != NULL && child->tag != 0;
4135 child = sibling_die (child))
4136 {
4137 if (child->tag == DW_TAG_subprogram)
4138 {
4139 new_prefix
4140 = language_class_name_from_physname (cu->language_defn,
4141 dwarf2_linkage_name
4142 (child, cu));
4143
4144 if (new_prefix != NULL)
4145 break;
4146 }
4147 }
4148 }
4149
4150 if (new_prefix == NULL)
4151 {
4152 const char *name = dwarf2_name (die, cu);
4153 new_prefix = typename_concat (NULL, processing_current_prefix,
4154 name ? name : "<<anonymous>>",
4155 cu);
4156 }
4157
4158 if (back_to != NULL)
4159 do_cleanups (back_to);
4160
4161 return new_prefix;
4162 }
4163
4164 /* Given a pointer to a die which begins an enumeration, process all
4165 the dies that define the members of the enumeration, and create the
4166 symbol for the enumeration type.
4167
4168 NOTE: We reverse the order of the element list. */
4169
4170 static void
4171 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
4172 {
4173 struct objfile *objfile = cu->objfile;
4174 struct die_info *child_die;
4175 struct field *fields;
4176 struct symbol *sym;
4177 int num_fields;
4178 int unsigned_enum = 1;
4179 char *name;
4180
4181 num_fields = 0;
4182 fields = NULL;
4183 if (die->child != NULL)
4184 {
4185 child_die = die->child;
4186 while (child_die && child_die->tag)
4187 {
4188 if (child_die->tag != DW_TAG_enumerator)
4189 {
4190 process_die (child_die, cu);
4191 }
4192 else
4193 {
4194 name = dwarf2_name (child_die, cu);
4195 if (name)
4196 {
4197 sym = new_symbol (child_die, die->type, cu);
4198 if (SYMBOL_VALUE (sym) < 0)
4199 unsigned_enum = 0;
4200
4201 if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
4202 {
4203 fields = (struct field *)
4204 xrealloc (fields,
4205 (num_fields + DW_FIELD_ALLOC_CHUNK)
4206 * sizeof (struct field));
4207 }
4208
4209 FIELD_NAME (fields[num_fields]) = DEPRECATED_SYMBOL_NAME (sym);
4210 FIELD_TYPE (fields[num_fields]) = NULL;
4211 FIELD_BITPOS (fields[num_fields]) = SYMBOL_VALUE (sym);
4212 FIELD_BITSIZE (fields[num_fields]) = 0;
4213 FIELD_STATIC_KIND (fields[num_fields]) = 0;
4214
4215 num_fields++;
4216 }
4217 }
4218
4219 child_die = sibling_die (child_die);
4220 }
4221
4222 if (num_fields)
4223 {
4224 TYPE_NFIELDS (die->type) = num_fields;
4225 TYPE_FIELDS (die->type) = (struct field *)
4226 TYPE_ALLOC (die->type, sizeof (struct field) * num_fields);
4227 memcpy (TYPE_FIELDS (die->type), fields,
4228 sizeof (struct field) * num_fields);
4229 xfree (fields);
4230 }
4231 if (unsigned_enum)
4232 TYPE_FLAGS (die->type) |= TYPE_FLAG_UNSIGNED;
4233 }
4234
4235 new_symbol (die, die->type, cu);
4236 }
4237
4238 /* Extract all information from a DW_TAG_array_type DIE and put it in
4239 the DIE's type field. For now, this only handles one dimensional
4240 arrays. */
4241
4242 static void
4243 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
4244 {
4245 struct objfile *objfile = cu->objfile;
4246 struct die_info *child_die;
4247 struct type *type = NULL;
4248 struct type *element_type, *range_type, *index_type;
4249 struct type **range_types = NULL;
4250 struct attribute *attr;
4251 int ndim = 0;
4252 struct cleanup *back_to;
4253 char *name;
4254
4255 /* Return if we've already decoded this type. */
4256 if (die->type)
4257 {
4258 return;
4259 }
4260
4261 element_type = die_type (die, cu);
4262
4263 /* Irix 6.2 native cc creates array types without children for
4264 arrays with unspecified length. */
4265 if (die->child == NULL)
4266 {
4267 index_type = builtin_type_int32;
4268 range_type = create_range_type (NULL, index_type, 0, -1);
4269 set_die_type (die, create_array_type (NULL, element_type, range_type),
4270 cu);
4271 return;
4272 }
4273
4274 back_to = make_cleanup (null_cleanup, NULL);
4275 child_die = die->child;
4276 while (child_die && child_die->tag)
4277 {
4278 if (child_die->tag == DW_TAG_subrange_type)
4279 {
4280 read_subrange_type (child_die, cu);
4281
4282 if (child_die->type != NULL)
4283 {
4284 /* The range type was succesfully read. Save it for
4285 the array type creation. */
4286 if ((ndim % DW_FIELD_ALLOC_CHUNK) == 0)
4287 {
4288 range_types = (struct type **)
4289 xrealloc (range_types, (ndim + DW_FIELD_ALLOC_CHUNK)
4290 * sizeof (struct type *));
4291 if (ndim == 0)
4292 make_cleanup (free_current_contents, &range_types);
4293 }
4294 range_types[ndim++] = child_die->type;
4295 }
4296 }
4297 child_die = sibling_die (child_die);
4298 }
4299
4300 /* Dwarf2 dimensions are output from left to right, create the
4301 necessary array types in backwards order. */
4302
4303 type = element_type;
4304
4305 if (read_array_order (die, cu) == DW_ORD_col_major)
4306 {
4307 int i = 0;
4308 while (i < ndim)
4309 type = create_array_type (NULL, type, range_types[i++]);
4310 }
4311 else
4312 {
4313 while (ndim-- > 0)
4314 type = create_array_type (NULL, type, range_types[ndim]);
4315 }
4316
4317 /* Understand Dwarf2 support for vector types (like they occur on
4318 the PowerPC w/ AltiVec). Gcc just adds another attribute to the
4319 array type. This is not part of the Dwarf2/3 standard yet, but a
4320 custom vendor extension. The main difference between a regular
4321 array and the vector variant is that vectors are passed by value
4322 to functions. */
4323 attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
4324 if (attr)
4325 make_vector_type (type);
4326
4327 name = dwarf2_name (die, cu);
4328 if (name)
4329 TYPE_NAME (type) = name;
4330
4331 do_cleanups (back_to);
4332
4333 /* Install the type in the die. */
4334 set_die_type (die, type, cu);
4335 }
4336
4337 static enum dwarf_array_dim_ordering
4338 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
4339 {
4340 struct attribute *attr;
4341
4342 attr = dwarf2_attr (die, DW_AT_ordering, cu);
4343
4344 if (attr) return DW_SND (attr);
4345
4346 /*
4347 GNU F77 is a special case, as at 08/2004 array type info is the
4348 opposite order to the dwarf2 specification, but data is still
4349 laid out as per normal fortran.
4350
4351 FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
4352 version checking.
4353 */
4354
4355 if (cu->language == language_fortran &&
4356 cu->producer && strstr (cu->producer, "GNU F77"))
4357 {
4358 return DW_ORD_row_major;
4359 }
4360
4361 switch (cu->language_defn->la_array_ordering)
4362 {
4363 case array_column_major:
4364 return DW_ORD_col_major;
4365 case array_row_major:
4366 default:
4367 return DW_ORD_row_major;
4368 };
4369 }
4370
4371 /* Extract all information from a DW_TAG_set_type DIE and put it in
4372 the DIE's type field. */
4373
4374 static void
4375 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
4376 {
4377 if (die->type == NULL)
4378 die->type = create_set_type ((struct type *) NULL, die_type (die, cu));
4379 }
4380
4381 /* First cut: install each common block member as a global variable. */
4382
4383 static void
4384 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
4385 {
4386 struct die_info *child_die;
4387 struct attribute *attr;
4388 struct symbol *sym;
4389 CORE_ADDR base = (CORE_ADDR) 0;
4390
4391 attr = dwarf2_attr (die, DW_AT_location, cu);
4392 if (attr)
4393 {
4394 /* Support the .debug_loc offsets */
4395 if (attr_form_is_block (attr))
4396 {
4397 base = decode_locdesc (DW_BLOCK (attr), cu);
4398 }
4399 else if (attr->form == DW_FORM_data4 || attr->form == DW_FORM_data8)
4400 {
4401 dwarf2_complex_location_expr_complaint ();
4402 }
4403 else
4404 {
4405 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
4406 "common block member");
4407 }
4408 }
4409 if (die->child != NULL)
4410 {
4411 child_die = die->child;
4412 while (child_die && child_die->tag)
4413 {
4414 sym = new_symbol (child_die, NULL, cu);
4415 attr = dwarf2_attr (child_die, DW_AT_data_member_location, cu);
4416 if (attr)
4417 {
4418 SYMBOL_VALUE_ADDRESS (sym) =
4419 base + decode_locdesc (DW_BLOCK (attr), cu);
4420 add_symbol_to_list (sym, &global_symbols);
4421 }
4422 child_die = sibling_die (child_die);
4423 }
4424 }
4425 }
4426
4427 /* Read a C++ namespace. */
4428
4429 static void
4430 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
4431 {
4432 struct objfile *objfile = cu->objfile;
4433 const char *previous_prefix = processing_current_prefix;
4434 const char *name;
4435 int is_anonymous;
4436 struct die_info *current_die;
4437 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
4438
4439 name = namespace_name (die, &is_anonymous, cu);
4440
4441 /* Now build the name of the current namespace. */
4442
4443 if (previous_prefix[0] == '\0')
4444 {
4445 processing_current_prefix = name;
4446 }
4447 else
4448 {
4449 char *temp_name = typename_concat (NULL, previous_prefix, name, cu);
4450 make_cleanup (xfree, temp_name);
4451 processing_current_prefix = temp_name;
4452 }
4453
4454 /* Add a symbol associated to this if we haven't seen the namespace
4455 before. Also, add a using directive if it's an anonymous
4456 namespace. */
4457
4458 if (dwarf2_extension (die, cu) == NULL)
4459 {
4460 struct type *type;
4461
4462 /* FIXME: carlton/2003-06-27: Once GDB is more const-correct,
4463 this cast will hopefully become unnecessary. */
4464 type = init_type (TYPE_CODE_NAMESPACE, 0, 0,
4465 (char *) processing_current_prefix,
4466 objfile);
4467 TYPE_TAG_NAME (type) = TYPE_NAME (type);
4468
4469 new_symbol (die, type, cu);
4470 set_die_type (die, type, cu);
4471
4472 if (is_anonymous)
4473 cp_add_using_directive (processing_current_prefix,
4474 strlen (previous_prefix),
4475 strlen (processing_current_prefix));
4476 }
4477
4478 if (die->child != NULL)
4479 {
4480 struct die_info *child_die = die->child;
4481
4482 while (child_die && child_die->tag)
4483 {
4484 process_die (child_die, cu);
4485 child_die = sibling_die (child_die);
4486 }
4487 }
4488
4489 processing_current_prefix = previous_prefix;
4490 do_cleanups (back_to);
4491 }
4492
4493 /* Return the name of the namespace represented by DIE. Set
4494 *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
4495 namespace. */
4496
4497 static const char *
4498 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
4499 {
4500 struct die_info *current_die;
4501 const char *name = NULL;
4502
4503 /* Loop through the extensions until we find a name. */
4504
4505 for (current_die = die;
4506 current_die != NULL;
4507 current_die = dwarf2_extension (die, cu))
4508 {
4509 name = dwarf2_name (current_die, cu);
4510 if (name != NULL)
4511 break;
4512 }
4513
4514 /* Is it an anonymous namespace? */
4515
4516 *is_anonymous = (name == NULL);
4517 if (*is_anonymous)
4518 name = "(anonymous namespace)";
4519
4520 return name;
4521 }
4522
4523 /* Extract all information from a DW_TAG_pointer_type DIE and add to
4524 the user defined type vector. */
4525
4526 static void
4527 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
4528 {
4529 struct comp_unit_head *cu_header = &cu->header;
4530 struct type *type;
4531 struct attribute *attr_byte_size;
4532 struct attribute *attr_address_class;
4533 int byte_size, addr_class;
4534
4535 if (die->type)
4536 {
4537 return;
4538 }
4539
4540 type = lookup_pointer_type (die_type (die, cu));
4541
4542 attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
4543 if (attr_byte_size)
4544 byte_size = DW_UNSND (attr_byte_size);
4545 else
4546 byte_size = cu_header->addr_size;
4547
4548 attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
4549 if (attr_address_class)
4550 addr_class = DW_UNSND (attr_address_class);
4551 else
4552 addr_class = DW_ADDR_none;
4553
4554 /* If the pointer size or address class is different than the
4555 default, create a type variant marked as such and set the
4556 length accordingly. */
4557 if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
4558 {
4559 if (gdbarch_address_class_type_flags_p (current_gdbarch))
4560 {
4561 int type_flags;
4562
4563 type_flags = gdbarch_address_class_type_flags
4564 (current_gdbarch, byte_size, addr_class);
4565 gdb_assert ((type_flags & ~TYPE_FLAG_ADDRESS_CLASS_ALL) == 0);
4566 type = make_type_with_address_space (type, type_flags);
4567 }
4568 else if (TYPE_LENGTH (type) != byte_size)
4569 {
4570 complaint (&symfile_complaints, _("invalid pointer size %d"), byte_size);
4571 }
4572 else {
4573 /* Should we also complain about unhandled address classes? */
4574 }
4575 }
4576
4577 TYPE_LENGTH (type) = byte_size;
4578 set_die_type (die, type, cu);
4579 }
4580
4581 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
4582 the user defined type vector. */
4583
4584 static void
4585 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
4586 {
4587 struct objfile *objfile = cu->objfile;
4588 struct type *type;
4589 struct type *to_type;
4590 struct type *domain;
4591
4592 if (die->type)
4593 {
4594 return;
4595 }
4596
4597 to_type = die_type (die, cu);
4598 domain = die_containing_type (die, cu);
4599
4600 if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
4601 type = lookup_methodptr_type (to_type);
4602 else
4603 type = lookup_memberptr_type (to_type, domain);
4604
4605 set_die_type (die, type, cu);
4606 }
4607
4608 /* Extract all information from a DW_TAG_reference_type DIE and add to
4609 the user defined type vector. */
4610
4611 static void
4612 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu)
4613 {
4614 struct comp_unit_head *cu_header = &cu->header;
4615 struct type *type;
4616 struct attribute *attr;
4617
4618 if (die->type)
4619 {
4620 return;
4621 }
4622
4623 type = lookup_reference_type (die_type (die, cu));
4624 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
4625 if (attr)
4626 {
4627 TYPE_LENGTH (type) = DW_UNSND (attr);
4628 }
4629 else
4630 {
4631 TYPE_LENGTH (type) = cu_header->addr_size;
4632 }
4633 set_die_type (die, type, cu);
4634 }
4635
4636 static void
4637 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
4638 {
4639 struct type *base_type;
4640
4641 if (die->type)
4642 {
4643 return;
4644 }
4645
4646 base_type = die_type (die, cu);
4647 set_die_type (die, make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0),
4648 cu);
4649 }
4650
4651 static void
4652 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
4653 {
4654 struct type *base_type;
4655
4656 if (die->type)
4657 {
4658 return;
4659 }
4660
4661 base_type = die_type (die, cu);
4662 set_die_type (die, make_cv_type (TYPE_CONST (base_type), 1, base_type, 0),
4663 cu);
4664 }
4665
4666 /* Extract all information from a DW_TAG_string_type DIE and add to
4667 the user defined type vector. It isn't really a user defined type,
4668 but it behaves like one, with other DIE's using an AT_user_def_type
4669 attribute to reference it. */
4670
4671 static void
4672 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
4673 {
4674 struct objfile *objfile = cu->objfile;
4675 struct type *type, *range_type, *index_type, *char_type;
4676 struct attribute *attr;
4677 unsigned int length;
4678
4679 if (die->type)
4680 {
4681 return;
4682 }
4683
4684 attr = dwarf2_attr (die, DW_AT_string_length, cu);
4685 if (attr)
4686 {
4687 length = DW_UNSND (attr);
4688 }
4689 else
4690 {
4691 /* check for the DW_AT_byte_size attribute */
4692 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
4693 if (attr)
4694 {
4695 length = DW_UNSND (attr);
4696 }
4697 else
4698 {
4699 length = 1;
4700 }
4701 }
4702
4703 index_type = builtin_type_int32;
4704 range_type = create_range_type (NULL, index_type, 1, length);
4705 type = create_string_type (NULL, range_type);
4706
4707 set_die_type (die, type, cu);
4708 }
4709
4710 /* Handle DIES due to C code like:
4711
4712 struct foo
4713 {
4714 int (*funcp)(int a, long l);
4715 int b;
4716 };
4717
4718 ('funcp' generates a DW_TAG_subroutine_type DIE)
4719 */
4720
4721 static void
4722 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
4723 {
4724 struct type *type; /* Type that this function returns */
4725 struct type *ftype; /* Function that returns above type */
4726 struct attribute *attr;
4727
4728 /* Decode the type that this subroutine returns */
4729 if (die->type)
4730 {
4731 return;
4732 }
4733 type = die_type (die, cu);
4734 ftype = make_function_type (type, (struct type **) 0);
4735
4736 /* All functions in C++, Pascal and Java have prototypes. */
4737 attr = dwarf2_attr (die, DW_AT_prototyped, cu);
4738 if ((attr && (DW_UNSND (attr) != 0))
4739 || cu->language == language_cplus
4740 || cu->language == language_java
4741 || cu->language == language_pascal)
4742 TYPE_FLAGS (ftype) |= TYPE_FLAG_PROTOTYPED;
4743
4744 if (die->child != NULL)
4745 {
4746 struct die_info *child_die;
4747 int nparams = 0;
4748 int iparams = 0;
4749
4750 /* Count the number of parameters.
4751 FIXME: GDB currently ignores vararg functions, but knows about
4752 vararg member functions. */
4753 child_die = die->child;
4754 while (child_die && child_die->tag)
4755 {
4756 if (child_die->tag == DW_TAG_formal_parameter)
4757 nparams++;
4758 else if (child_die->tag == DW_TAG_unspecified_parameters)
4759 TYPE_FLAGS (ftype) |= TYPE_FLAG_VARARGS;
4760 child_die = sibling_die (child_die);
4761 }
4762
4763 /* Allocate storage for parameters and fill them in. */
4764 TYPE_NFIELDS (ftype) = nparams;
4765 TYPE_FIELDS (ftype) = (struct field *)
4766 TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
4767
4768 child_die = die->child;
4769 while (child_die && child_die->tag)
4770 {
4771 if (child_die->tag == DW_TAG_formal_parameter)
4772 {
4773 /* Dwarf2 has no clean way to discern C++ static and non-static
4774 member functions. G++ helps GDB by marking the first
4775 parameter for non-static member functions (which is the
4776 this pointer) as artificial. We pass this information
4777 to dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL. */
4778 attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
4779 if (attr)
4780 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
4781 else
4782 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
4783 TYPE_FIELD_TYPE (ftype, iparams) = die_type (child_die, cu);
4784 iparams++;
4785 }
4786 child_die = sibling_die (child_die);
4787 }
4788 }
4789
4790 set_die_type (die, ftype, cu);
4791 }
4792
4793 static void
4794 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
4795 {
4796 struct objfile *objfile = cu->objfile;
4797 struct attribute *attr;
4798 char *name = NULL;
4799
4800 if (!die->type)
4801 {
4802 name = dwarf2_name (die, cu);
4803 set_die_type (die, init_type (TYPE_CODE_TYPEDEF, 0,
4804 TYPE_FLAG_TARGET_STUB, name, objfile),
4805 cu);
4806 TYPE_TARGET_TYPE (die->type) = die_type (die, cu);
4807 }
4808 }
4809
4810 /* Find a representation of a given base type and install
4811 it in the TYPE field of the die. */
4812
4813 static void
4814 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
4815 {
4816 struct objfile *objfile = cu->objfile;
4817 struct type *type;
4818 struct attribute *attr;
4819 int encoding = 0, size = 0;
4820 char *name;
4821 enum type_code code = TYPE_CODE_INT;
4822 int type_flags = 0;
4823 struct type *target_type = NULL;
4824
4825 /* If we've already decoded this die, this is a no-op. */
4826 if (die->type)
4827 {
4828 return;
4829 }
4830
4831 attr = dwarf2_attr (die, DW_AT_encoding, cu);
4832 if (attr)
4833 {
4834 encoding = DW_UNSND (attr);
4835 }
4836 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
4837 if (attr)
4838 {
4839 size = DW_UNSND (attr);
4840 }
4841 name = dwarf2_name (die, cu);
4842 if (!name)
4843 {
4844 complaint (&symfile_complaints,
4845 _("DW_AT_name missing from DW_TAG_base_type"));
4846 }
4847
4848 switch (encoding)
4849 {
4850 case DW_ATE_address:
4851 /* Turn DW_ATE_address into a void * pointer. */
4852 code = TYPE_CODE_PTR;
4853 type_flags |= TYPE_FLAG_UNSIGNED;
4854 target_type = init_type (TYPE_CODE_VOID, 1, 0, NULL, objfile);
4855 break;
4856 case DW_ATE_boolean:
4857 code = TYPE_CODE_BOOL;
4858 type_flags |= TYPE_FLAG_UNSIGNED;
4859 break;
4860 case DW_ATE_complex_float:
4861 code = TYPE_CODE_COMPLEX;
4862 target_type = init_type (TYPE_CODE_FLT, size / 2, 0, NULL, objfile);
4863 break;
4864 case DW_ATE_decimal_float:
4865 code = TYPE_CODE_DECFLOAT;
4866 break;
4867 case DW_ATE_float:
4868 code = TYPE_CODE_FLT;
4869 break;
4870 case DW_ATE_signed:
4871 break;
4872 case DW_ATE_unsigned:
4873 type_flags |= TYPE_FLAG_UNSIGNED;
4874 break;
4875 case DW_ATE_signed_char:
4876 if (cu->language == language_m2)
4877 code = TYPE_CODE_CHAR;
4878 break;
4879 case DW_ATE_unsigned_char:
4880 if (cu->language == language_m2)
4881 code = TYPE_CODE_CHAR;
4882 type_flags |= TYPE_FLAG_UNSIGNED;
4883 break;
4884 default:
4885 complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"),
4886 dwarf_type_encoding_name (encoding));
4887 break;
4888 }
4889
4890 type = init_type (code, size, type_flags, name, objfile);
4891 TYPE_TARGET_TYPE (type) = target_type;
4892
4893 set_die_type (die, type, cu);
4894 }
4895
4896 /* Read the given DW_AT_subrange DIE. */
4897
4898 static void
4899 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
4900 {
4901 struct type *base_type;
4902 struct type *range_type;
4903 struct attribute *attr;
4904 int low = 0;
4905 int high = -1;
4906 char *name;
4907
4908 /* If we have already decoded this die, then nothing more to do. */
4909 if (die->type)
4910 return;
4911
4912 base_type = die_type (die, cu);
4913 if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
4914 {
4915 complaint (&symfile_complaints,
4916 _("DW_AT_type missing from DW_TAG_subrange_type"));
4917 base_type
4918 = init_type (TYPE_CODE_INT, gdbarch_addr_bit (current_gdbarch) / 8,
4919 0, NULL, cu->objfile);
4920 }
4921
4922 if (cu->language == language_fortran)
4923 {
4924 /* FORTRAN implies a lower bound of 1, if not given. */
4925 low = 1;
4926 }
4927
4928 /* FIXME: For variable sized arrays either of these could be
4929 a variable rather than a constant value. We'll allow it,
4930 but we don't know how to handle it. */
4931 attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
4932 if (attr)
4933 low = dwarf2_get_attr_constant_value (attr, 0);
4934
4935 attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
4936 if (attr)
4937 {
4938 if (attr->form == DW_FORM_block1)
4939 {
4940 /* GCC encodes arrays with unspecified or dynamic length
4941 with a DW_FORM_block1 attribute.
4942 FIXME: GDB does not yet know how to handle dynamic
4943 arrays properly, treat them as arrays with unspecified
4944 length for now.
4945
4946 FIXME: jimb/2003-09-22: GDB does not really know
4947 how to handle arrays of unspecified length
4948 either; we just represent them as zero-length
4949 arrays. Choose an appropriate upper bound given
4950 the lower bound we've computed above. */
4951 high = low - 1;
4952 }
4953 else
4954 high = dwarf2_get_attr_constant_value (attr, 1);
4955 }
4956
4957 range_type = create_range_type (NULL, base_type, low, high);
4958
4959 name = dwarf2_name (die, cu);
4960 if (name)
4961 TYPE_NAME (range_type) = name;
4962
4963 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
4964 if (attr)
4965 TYPE_LENGTH (range_type) = DW_UNSND (attr);
4966
4967 set_die_type (die, range_type, cu);
4968 }
4969
4970 static void
4971 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
4972 {
4973 struct type *type;
4974
4975 if (die->type)
4976 return;
4977
4978 /* For now, we only support the C meaning of an unspecified type: void. */
4979
4980 type = init_type (TYPE_CODE_VOID, 0, 0, dwarf2_name (die, cu),
4981 cu->objfile);
4982
4983 set_die_type (die, type, cu);
4984 }
4985
4986 /* Read a whole compilation unit into a linked list of dies. */
4987
4988 static struct die_info *
4989 read_comp_unit (gdb_byte *info_ptr, bfd *abfd, struct dwarf2_cu *cu)
4990 {
4991 return read_die_and_children (info_ptr, abfd, cu, &info_ptr, NULL);
4992 }
4993
4994 /* Read a single die and all its descendents. Set the die's sibling
4995 field to NULL; set other fields in the die correctly, and set all
4996 of the descendents' fields correctly. Set *NEW_INFO_PTR to the
4997 location of the info_ptr after reading all of those dies. PARENT
4998 is the parent of the die in question. */
4999
5000 static struct die_info *
5001 read_die_and_children (gdb_byte *info_ptr, bfd *abfd,
5002 struct dwarf2_cu *cu,
5003 gdb_byte **new_info_ptr,
5004 struct die_info *parent)
5005 {
5006 struct die_info *die;
5007 gdb_byte *cur_ptr;
5008 int has_children;
5009
5010 cur_ptr = read_full_die (&die, abfd, info_ptr, cu, &has_children);
5011 store_in_ref_table (die->offset, die, cu);
5012
5013 if (has_children)
5014 {
5015 die->child = read_die_and_siblings (cur_ptr, abfd, cu,
5016 new_info_ptr, die);
5017 }
5018 else
5019 {
5020 die->child = NULL;
5021 *new_info_ptr = cur_ptr;
5022 }
5023
5024 die->sibling = NULL;
5025 die->parent = parent;
5026 return die;
5027 }
5028
5029 /* Read a die, all of its descendents, and all of its siblings; set
5030 all of the fields of all of the dies correctly. Arguments are as
5031 in read_die_and_children. */
5032
5033 static struct die_info *
5034 read_die_and_siblings (gdb_byte *info_ptr, bfd *abfd,
5035 struct dwarf2_cu *cu,
5036 gdb_byte **new_info_ptr,
5037 struct die_info *parent)
5038 {
5039 struct die_info *first_die, *last_sibling;
5040 gdb_byte *cur_ptr;
5041
5042 cur_ptr = info_ptr;
5043 first_die = last_sibling = NULL;
5044
5045 while (1)
5046 {
5047 struct die_info *die
5048 = read_die_and_children (cur_ptr, abfd, cu, &cur_ptr, parent);
5049
5050 if (!first_die)
5051 {
5052 first_die = die;
5053 }
5054 else
5055 {
5056 last_sibling->sibling = die;
5057 }
5058
5059 if (die->tag == 0)
5060 {
5061 *new_info_ptr = cur_ptr;
5062 return first_die;
5063 }
5064 else
5065 {
5066 last_sibling = die;
5067 }
5068 }
5069 }
5070
5071 /* Free a linked list of dies. */
5072
5073 static void
5074 free_die_list (struct die_info *dies)
5075 {
5076 struct die_info *die, *next;
5077
5078 die = dies;
5079 while (die)
5080 {
5081 if (die->child != NULL)
5082 free_die_list (die->child);
5083 next = die->sibling;
5084 xfree (die->attrs);
5085 xfree (die);
5086 die = next;
5087 }
5088 }
5089
5090 /* Read the contents of the section at OFFSET and of size SIZE from the
5091 object file specified by OBJFILE into the objfile_obstack and return it. */
5092
5093 gdb_byte *
5094 dwarf2_read_section (struct objfile *objfile, asection *sectp)
5095 {
5096 bfd *abfd = objfile->obfd;
5097 gdb_byte *buf, *retbuf;
5098 bfd_size_type size = bfd_get_section_size (sectp);
5099
5100 if (size == 0)
5101 return NULL;
5102
5103 buf = obstack_alloc (&objfile->objfile_obstack, size);
5104 retbuf = symfile_relocate_debug_section (abfd, sectp, buf);
5105 if (retbuf != NULL)
5106 return retbuf;
5107
5108 if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
5109 || bfd_bread (buf, size, abfd) != size)
5110 error (_("Dwarf Error: Can't read DWARF data from '%s'"),
5111 bfd_get_filename (abfd));
5112
5113 return buf;
5114 }
5115
5116 /* In DWARF version 2, the description of the debugging information is
5117 stored in a separate .debug_abbrev section. Before we read any
5118 dies from a section we read in all abbreviations and install them
5119 in a hash table. This function also sets flags in CU describing
5120 the data found in the abbrev table. */
5121
5122 static void
5123 dwarf2_read_abbrevs (bfd *abfd, struct dwarf2_cu *cu)
5124 {
5125 struct comp_unit_head *cu_header = &cu->header;
5126 gdb_byte *abbrev_ptr;
5127 struct abbrev_info *cur_abbrev;
5128 unsigned int abbrev_number, bytes_read, abbrev_name;
5129 unsigned int abbrev_form, hash_number;
5130 struct attr_abbrev *cur_attrs;
5131 unsigned int allocated_attrs;
5132
5133 /* Initialize dwarf2 abbrevs */
5134 obstack_init (&cu->abbrev_obstack);
5135 cu->dwarf2_abbrevs = obstack_alloc (&cu->abbrev_obstack,
5136 (ABBREV_HASH_SIZE
5137 * sizeof (struct abbrev_info *)));
5138 memset (cu->dwarf2_abbrevs, 0,
5139 ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
5140
5141 abbrev_ptr = dwarf2_per_objfile->abbrev_buffer + cu_header->abbrev_offset;
5142 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
5143 abbrev_ptr += bytes_read;
5144
5145 allocated_attrs = ATTR_ALLOC_CHUNK;
5146 cur_attrs = xmalloc (allocated_attrs * sizeof (struct attr_abbrev));
5147
5148 /* loop until we reach an abbrev number of 0 */
5149 while (abbrev_number)
5150 {
5151 cur_abbrev = dwarf_alloc_abbrev (cu);
5152
5153 /* read in abbrev header */
5154 cur_abbrev->number = abbrev_number;
5155 cur_abbrev->tag = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
5156 abbrev_ptr += bytes_read;
5157 cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
5158 abbrev_ptr += 1;
5159
5160 if (cur_abbrev->tag == DW_TAG_namespace)
5161 cu->has_namespace_info = 1;
5162
5163 /* now read in declarations */
5164 abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
5165 abbrev_ptr += bytes_read;
5166 abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
5167 abbrev_ptr += bytes_read;
5168 while (abbrev_name)
5169 {
5170 if (cur_abbrev->num_attrs == allocated_attrs)
5171 {
5172 allocated_attrs += ATTR_ALLOC_CHUNK;
5173 cur_attrs
5174 = xrealloc (cur_attrs, (allocated_attrs
5175 * sizeof (struct attr_abbrev)));
5176 }
5177
5178 /* Record whether this compilation unit might have
5179 inter-compilation-unit references. If we don't know what form
5180 this attribute will have, then it might potentially be a
5181 DW_FORM_ref_addr, so we conservatively expect inter-CU
5182 references. */
5183
5184 if (abbrev_form == DW_FORM_ref_addr
5185 || abbrev_form == DW_FORM_indirect)
5186 cu->has_form_ref_addr = 1;
5187
5188 cur_attrs[cur_abbrev->num_attrs].name = abbrev_name;
5189 cur_attrs[cur_abbrev->num_attrs++].form = abbrev_form;
5190 abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
5191 abbrev_ptr += bytes_read;
5192 abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
5193 abbrev_ptr += bytes_read;
5194 }
5195
5196 cur_abbrev->attrs = obstack_alloc (&cu->abbrev_obstack,
5197 (cur_abbrev->num_attrs
5198 * sizeof (struct attr_abbrev)));
5199 memcpy (cur_abbrev->attrs, cur_attrs,
5200 cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
5201
5202 hash_number = abbrev_number % ABBREV_HASH_SIZE;
5203 cur_abbrev->next = cu->dwarf2_abbrevs[hash_number];
5204 cu->dwarf2_abbrevs[hash_number] = cur_abbrev;
5205
5206 /* Get next abbreviation.
5207 Under Irix6 the abbreviations for a compilation unit are not
5208 always properly terminated with an abbrev number of 0.
5209 Exit loop if we encounter an abbreviation which we have
5210 already read (which means we are about to read the abbreviations
5211 for the next compile unit) or if the end of the abbreviation
5212 table is reached. */
5213 if ((unsigned int) (abbrev_ptr - dwarf2_per_objfile->abbrev_buffer)
5214 >= dwarf2_per_objfile->abbrev_size)
5215 break;
5216 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
5217 abbrev_ptr += bytes_read;
5218 if (dwarf2_lookup_abbrev (abbrev_number, cu) != NULL)
5219 break;
5220 }
5221
5222 xfree (cur_attrs);
5223 }
5224
5225 /* Release the memory used by the abbrev table for a compilation unit. */
5226
5227 static void
5228 dwarf2_free_abbrev_table (void *ptr_to_cu)
5229 {
5230 struct dwarf2_cu *cu = ptr_to_cu;
5231
5232 obstack_free (&cu->abbrev_obstack, NULL);
5233 cu->dwarf2_abbrevs = NULL;
5234 }
5235
5236 /* Lookup an abbrev_info structure in the abbrev hash table. */
5237
5238 static struct abbrev_info *
5239 dwarf2_lookup_abbrev (unsigned int number, struct dwarf2_cu *cu)
5240 {
5241 unsigned int hash_number;
5242 struct abbrev_info *abbrev;
5243
5244 hash_number = number % ABBREV_HASH_SIZE;
5245 abbrev = cu->dwarf2_abbrevs[hash_number];
5246
5247 while (abbrev)
5248 {
5249 if (abbrev->number == number)
5250 return abbrev;
5251 else
5252 abbrev = abbrev->next;
5253 }
5254 return NULL;
5255 }
5256
5257 /* Returns nonzero if TAG represents a type that we might generate a partial
5258 symbol for. */
5259
5260 static int
5261 is_type_tag_for_partial (int tag)
5262 {
5263 switch (tag)
5264 {
5265 #if 0
5266 /* Some types that would be reasonable to generate partial symbols for,
5267 that we don't at present. */
5268 case DW_TAG_array_type:
5269 case DW_TAG_file_type:
5270 case DW_TAG_ptr_to_member_type:
5271 case DW_TAG_set_type:
5272 case DW_TAG_string_type:
5273 case DW_TAG_subroutine_type:
5274 #endif
5275 case DW_TAG_base_type:
5276 case DW_TAG_class_type:
5277 case DW_TAG_enumeration_type:
5278 case DW_TAG_structure_type:
5279 case DW_TAG_subrange_type:
5280 case DW_TAG_typedef:
5281 case DW_TAG_union_type:
5282 return 1;
5283 default:
5284 return 0;
5285 }
5286 }
5287
5288 /* Load all DIEs that are interesting for partial symbols into memory. */
5289
5290 static struct partial_die_info *
5291 load_partial_dies (bfd *abfd, gdb_byte *info_ptr, int building_psymtab,
5292 struct dwarf2_cu *cu)
5293 {
5294 struct partial_die_info *part_die;
5295 struct partial_die_info *parent_die, *last_die, *first_die = NULL;
5296 struct abbrev_info *abbrev;
5297 unsigned int bytes_read;
5298 unsigned int load_all = 0;
5299
5300 int nesting_level = 1;
5301
5302 parent_die = NULL;
5303 last_die = NULL;
5304
5305 if (cu->per_cu && cu->per_cu->load_all_dies)
5306 load_all = 1;
5307
5308 cu->partial_dies
5309 = htab_create_alloc_ex (cu->header.length / 12,
5310 partial_die_hash,
5311 partial_die_eq,
5312 NULL,
5313 &cu->comp_unit_obstack,
5314 hashtab_obstack_allocate,
5315 dummy_obstack_deallocate);
5316
5317 part_die = obstack_alloc (&cu->comp_unit_obstack,
5318 sizeof (struct partial_die_info));
5319
5320 while (1)
5321 {
5322 abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
5323
5324 /* A NULL abbrev means the end of a series of children. */
5325 if (abbrev == NULL)
5326 {
5327 if (--nesting_level == 0)
5328 {
5329 /* PART_DIE was probably the last thing allocated on the
5330 comp_unit_obstack, so we could call obstack_free
5331 here. We don't do that because the waste is small,
5332 and will be cleaned up when we're done with this
5333 compilation unit. This way, we're also more robust
5334 against other users of the comp_unit_obstack. */
5335 return first_die;
5336 }
5337 info_ptr += bytes_read;
5338 last_die = parent_die;
5339 parent_die = parent_die->die_parent;
5340 continue;
5341 }
5342
5343 /* Check whether this DIE is interesting enough to save. Normally
5344 we would not be interested in members here, but there may be
5345 later variables referencing them via DW_AT_specification (for
5346 static members). */
5347 if (!load_all
5348 && !is_type_tag_for_partial (abbrev->tag)
5349 && abbrev->tag != DW_TAG_enumerator
5350 && abbrev->tag != DW_TAG_subprogram
5351 && abbrev->tag != DW_TAG_variable
5352 && abbrev->tag != DW_TAG_namespace
5353 && abbrev->tag != DW_TAG_member)
5354 {
5355 /* Otherwise we skip to the next sibling, if any. */
5356 info_ptr = skip_one_die (info_ptr + bytes_read, abbrev, cu);
5357 continue;
5358 }
5359
5360 info_ptr = read_partial_die (part_die, abbrev, bytes_read,
5361 abfd, info_ptr, cu);
5362
5363 /* This two-pass algorithm for processing partial symbols has a
5364 high cost in cache pressure. Thus, handle some simple cases
5365 here which cover the majority of C partial symbols. DIEs
5366 which neither have specification tags in them, nor could have
5367 specification tags elsewhere pointing at them, can simply be
5368 processed and discarded.
5369
5370 This segment is also optional; scan_partial_symbols and
5371 add_partial_symbol will handle these DIEs if we chain
5372 them in normally. When compilers which do not emit large
5373 quantities of duplicate debug information are more common,
5374 this code can probably be removed. */
5375
5376 /* Any complete simple types at the top level (pretty much all
5377 of them, for a language without namespaces), can be processed
5378 directly. */
5379 if (parent_die == NULL
5380 && part_die->has_specification == 0
5381 && part_die->is_declaration == 0
5382 && (part_die->tag == DW_TAG_typedef
5383 || part_die->tag == DW_TAG_base_type
5384 || part_die->tag == DW_TAG_subrange_type))
5385 {
5386 if (building_psymtab && part_die->name != NULL)
5387 add_psymbol_to_list (part_die->name, strlen (part_die->name),
5388 VAR_DOMAIN, LOC_TYPEDEF,
5389 &cu->objfile->static_psymbols,
5390 0, (CORE_ADDR) 0, cu->language, cu->objfile);
5391 info_ptr = locate_pdi_sibling (part_die, info_ptr, abfd, cu);
5392 continue;
5393 }
5394
5395 /* If we're at the second level, and we're an enumerator, and
5396 our parent has no specification (meaning possibly lives in a
5397 namespace elsewhere), then we can add the partial symbol now
5398 instead of queueing it. */
5399 if (part_die->tag == DW_TAG_enumerator
5400 && parent_die != NULL
5401 && parent_die->die_parent == NULL
5402 && parent_die->tag == DW_TAG_enumeration_type
5403 && parent_die->has_specification == 0)
5404 {
5405 if (part_die->name == NULL)
5406 complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
5407 else if (building_psymtab)
5408 add_psymbol_to_list (part_die->name, strlen (part_die->name),
5409 VAR_DOMAIN, LOC_CONST,
5410 (cu->language == language_cplus
5411 || cu->language == language_java)
5412 ? &cu->objfile->global_psymbols
5413 : &cu->objfile->static_psymbols,
5414 0, (CORE_ADDR) 0, cu->language, cu->objfile);
5415
5416 info_ptr = locate_pdi_sibling (part_die, info_ptr, abfd, cu);
5417 continue;
5418 }
5419
5420 /* We'll save this DIE so link it in. */
5421 part_die->die_parent = parent_die;
5422 part_die->die_sibling = NULL;
5423 part_die->die_child = NULL;
5424
5425 if (last_die && last_die == parent_die)
5426 last_die->die_child = part_die;
5427 else if (last_die)
5428 last_die->die_sibling = part_die;
5429
5430 last_die = part_die;
5431
5432 if (first_die == NULL)
5433 first_die = part_die;
5434
5435 /* Maybe add the DIE to the hash table. Not all DIEs that we
5436 find interesting need to be in the hash table, because we
5437 also have the parent/sibling/child chains; only those that we
5438 might refer to by offset later during partial symbol reading.
5439
5440 For now this means things that might have be the target of a
5441 DW_AT_specification, DW_AT_abstract_origin, or
5442 DW_AT_extension. DW_AT_extension will refer only to
5443 namespaces; DW_AT_abstract_origin refers to functions (and
5444 many things under the function DIE, but we do not recurse
5445 into function DIEs during partial symbol reading) and
5446 possibly variables as well; DW_AT_specification refers to
5447 declarations. Declarations ought to have the DW_AT_declaration
5448 flag. It happens that GCC forgets to put it in sometimes, but
5449 only for functions, not for types.
5450
5451 Adding more things than necessary to the hash table is harmless
5452 except for the performance cost. Adding too few will result in
5453 wasted time in find_partial_die, when we reread the compilation
5454 unit with load_all_dies set. */
5455
5456 if (load_all
5457 || abbrev->tag == DW_TAG_subprogram
5458 || abbrev->tag == DW_TAG_variable
5459 || abbrev->tag == DW_TAG_namespace
5460 || part_die->is_declaration)
5461 {
5462 void **slot;
5463
5464 slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
5465 part_die->offset, INSERT);
5466 *slot = part_die;
5467 }
5468
5469 part_die = obstack_alloc (&cu->comp_unit_obstack,
5470 sizeof (struct partial_die_info));
5471
5472 /* For some DIEs we want to follow their children (if any). For C
5473 we have no reason to follow the children of structures; for other
5474 languages we have to, both so that we can get at method physnames
5475 to infer fully qualified class names, and for DW_AT_specification. */
5476 if (last_die->has_children
5477 && (load_all
5478 || last_die->tag == DW_TAG_namespace
5479 || last_die->tag == DW_TAG_enumeration_type
5480 || (cu->language != language_c
5481 && (last_die->tag == DW_TAG_class_type
5482 || last_die->tag == DW_TAG_structure_type
5483 || last_die->tag == DW_TAG_union_type))))
5484 {
5485 nesting_level++;
5486 parent_die = last_die;
5487 continue;
5488 }
5489
5490 /* Otherwise we skip to the next sibling, if any. */
5491 info_ptr = locate_pdi_sibling (last_die, info_ptr, abfd, cu);
5492
5493 /* Back to the top, do it again. */
5494 }
5495 }
5496
5497 /* Read a minimal amount of information into the minimal die structure. */
5498
5499 static gdb_byte *
5500 read_partial_die (struct partial_die_info *part_die,
5501 struct abbrev_info *abbrev,
5502 unsigned int abbrev_len, bfd *abfd,
5503 gdb_byte *info_ptr, struct dwarf2_cu *cu)
5504 {
5505 unsigned int bytes_read, i;
5506 struct attribute attr;
5507 int has_low_pc_attr = 0;
5508 int has_high_pc_attr = 0;
5509
5510 memset (part_die, 0, sizeof (struct partial_die_info));
5511
5512 part_die->offset = info_ptr - dwarf2_per_objfile->info_buffer;
5513
5514 info_ptr += abbrev_len;
5515
5516 if (abbrev == NULL)
5517 return info_ptr;
5518
5519 part_die->tag = abbrev->tag;
5520 part_die->has_children = abbrev->has_children;
5521
5522 for (i = 0; i < abbrev->num_attrs; ++i)
5523 {
5524 info_ptr = read_attribute (&attr, &abbrev->attrs[i], abfd, info_ptr, cu);
5525
5526 /* Store the data if it is of an attribute we want to keep in a
5527 partial symbol table. */
5528 switch (attr.name)
5529 {
5530 case DW_AT_name:
5531
5532 /* Prefer DW_AT_MIPS_linkage_name over DW_AT_name. */
5533 if (part_die->name == NULL)
5534 part_die->name = DW_STRING (&attr);
5535 break;
5536 case DW_AT_comp_dir:
5537 if (part_die->dirname == NULL)
5538 part_die->dirname = DW_STRING (&attr);
5539 break;
5540 case DW_AT_MIPS_linkage_name:
5541 part_die->name = DW_STRING (&attr);
5542 break;
5543 case DW_AT_low_pc:
5544 has_low_pc_attr = 1;
5545 part_die->lowpc = DW_ADDR (&attr);
5546 break;
5547 case DW_AT_high_pc:
5548 has_high_pc_attr = 1;
5549 part_die->highpc = DW_ADDR (&attr);
5550 break;
5551 case DW_AT_ranges:
5552 if (dwarf2_ranges_read (DW_UNSND (&attr), &part_die->lowpc,
5553 &part_die->highpc, cu))
5554 has_low_pc_attr = has_high_pc_attr = 1;
5555 break;
5556 case DW_AT_location:
5557 /* Support the .debug_loc offsets */
5558 if (attr_form_is_block (&attr))
5559 {
5560 part_die->locdesc = DW_BLOCK (&attr);
5561 }
5562 else if (attr.form == DW_FORM_data4 || attr.form == DW_FORM_data8)
5563 {
5564 dwarf2_complex_location_expr_complaint ();
5565 }
5566 else
5567 {
5568 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
5569 "partial symbol information");
5570 }
5571 break;
5572 case DW_AT_language:
5573 part_die->language = DW_UNSND (&attr);
5574 break;
5575 case DW_AT_external:
5576 part_die->is_external = DW_UNSND (&attr);
5577 break;
5578 case DW_AT_declaration:
5579 part_die->is_declaration = DW_UNSND (&attr);
5580 break;
5581 case DW_AT_type:
5582 part_die->has_type = 1;
5583 break;
5584 case DW_AT_abstract_origin:
5585 case DW_AT_specification:
5586 case DW_AT_extension:
5587 part_die->has_specification = 1;
5588 part_die->spec_offset = dwarf2_get_ref_die_offset (&attr, cu);
5589 break;
5590 case DW_AT_sibling:
5591 /* Ignore absolute siblings, they might point outside of
5592 the current compile unit. */
5593 if (attr.form == DW_FORM_ref_addr)
5594 complaint (&symfile_complaints, _("ignoring absolute DW_AT_sibling"));
5595 else
5596 part_die->sibling = dwarf2_per_objfile->info_buffer
5597 + dwarf2_get_ref_die_offset (&attr, cu);
5598 break;
5599 case DW_AT_stmt_list:
5600 part_die->has_stmt_list = 1;
5601 part_die->line_offset = DW_UNSND (&attr);
5602 break;
5603 case DW_AT_byte_size:
5604 part_die->has_byte_size = 1;
5605 break;
5606 case DW_AT_calling_convention:
5607 /* DWARF doesn't provide a way to identify a program's source-level
5608 entry point. DW_AT_calling_convention attributes are only meant
5609 to describe functions' calling conventions.
5610
5611 However, because it's a necessary piece of information in
5612 Fortran, and because DW_CC_program is the only piece of debugging
5613 information whose definition refers to a 'main program' at all,
5614 several compilers have begun marking Fortran main programs with
5615 DW_CC_program --- even when those functions use the standard
5616 calling conventions.
5617
5618 So until DWARF specifies a way to provide this information and
5619 compilers pick up the new representation, we'll support this
5620 practice. */
5621 if (DW_UNSND (&attr) == DW_CC_program
5622 && cu->language == language_fortran)
5623 set_main_name (part_die->name);
5624 break;
5625 default:
5626 break;
5627 }
5628 }
5629
5630 /* When using the GNU linker, .gnu.linkonce. sections are used to
5631 eliminate duplicate copies of functions and vtables and such.
5632 The linker will arbitrarily choose one and discard the others.
5633 The AT_*_pc values for such functions refer to local labels in
5634 these sections. If the section from that file was discarded, the
5635 labels are not in the output, so the relocs get a value of 0.
5636 If this is a discarded function, mark the pc bounds as invalid,
5637 so that GDB will ignore it. */
5638 if (has_low_pc_attr && has_high_pc_attr
5639 && part_die->lowpc < part_die->highpc
5640 && (part_die->lowpc != 0
5641 || dwarf2_per_objfile->has_section_at_zero))
5642 part_die->has_pc_info = 1;
5643 return info_ptr;
5644 }
5645
5646 /* Find a cached partial DIE at OFFSET in CU. */
5647
5648 static struct partial_die_info *
5649 find_partial_die_in_comp_unit (unsigned long offset, struct dwarf2_cu *cu)
5650 {
5651 struct partial_die_info *lookup_die = NULL;
5652 struct partial_die_info part_die;
5653
5654 part_die.offset = offset;
5655 lookup_die = htab_find_with_hash (cu->partial_dies, &part_die, offset);
5656
5657 return lookup_die;
5658 }
5659
5660 /* Find a partial DIE at OFFSET, which may or may not be in CU. */
5661
5662 static struct partial_die_info *
5663 find_partial_die (unsigned long offset, struct dwarf2_cu *cu)
5664 {
5665 struct dwarf2_per_cu_data *per_cu = NULL;
5666 struct partial_die_info *pd = NULL;
5667
5668 if (offset >= cu->header.offset
5669 && offset < cu->header.offset + cu->header.length)
5670 {
5671 pd = find_partial_die_in_comp_unit (offset, cu);
5672 if (pd != NULL)
5673 return pd;
5674 }
5675
5676 per_cu = dwarf2_find_containing_comp_unit (offset, cu->objfile);
5677
5678 if (per_cu->cu == NULL)
5679 {
5680 load_comp_unit (per_cu, cu->objfile);
5681 per_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5682 dwarf2_per_objfile->read_in_chain = per_cu;
5683 }
5684
5685 per_cu->cu->last_used = 0;
5686 pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
5687
5688 if (pd == NULL && per_cu->load_all_dies == 0)
5689 {
5690 struct cleanup *back_to;
5691 struct partial_die_info comp_unit_die;
5692 struct abbrev_info *abbrev;
5693 unsigned int bytes_read;
5694 char *info_ptr;
5695
5696 per_cu->load_all_dies = 1;
5697
5698 /* Re-read the DIEs. */
5699 back_to = make_cleanup (null_cleanup, 0);
5700 if (per_cu->cu->dwarf2_abbrevs == NULL)
5701 {
5702 dwarf2_read_abbrevs (per_cu->cu->objfile->obfd, per_cu->cu);
5703 back_to = make_cleanup (dwarf2_free_abbrev_table, per_cu->cu);
5704 }
5705 info_ptr = per_cu->cu->header.first_die_ptr;
5706 abbrev = peek_die_abbrev (info_ptr, &bytes_read, per_cu->cu);
5707 info_ptr = read_partial_die (&comp_unit_die, abbrev, bytes_read,
5708 per_cu->cu->objfile->obfd, info_ptr,
5709 per_cu->cu);
5710 if (comp_unit_die.has_children)
5711 load_partial_dies (per_cu->cu->objfile->obfd, info_ptr, 0, per_cu->cu);
5712 do_cleanups (back_to);
5713
5714 pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
5715 }
5716
5717 if (pd == NULL)
5718 internal_error (__FILE__, __LINE__,
5719 _("could not find partial DIE 0x%lx in cache [from module %s]\n"),
5720 offset, bfd_get_filename (cu->objfile->obfd));
5721 return pd;
5722 }
5723
5724 /* Adjust PART_DIE before generating a symbol for it. This function
5725 may set the is_external flag or change the DIE's name. */
5726
5727 static void
5728 fixup_partial_die (struct partial_die_info *part_die,
5729 struct dwarf2_cu *cu)
5730 {
5731 /* If we found a reference attribute and the DIE has no name, try
5732 to find a name in the referred to DIE. */
5733
5734 if (part_die->name == NULL && part_die->has_specification)
5735 {
5736 struct partial_die_info *spec_die;
5737
5738 spec_die = find_partial_die (part_die->spec_offset, cu);
5739
5740 fixup_partial_die (spec_die, cu);
5741
5742 if (spec_die->name)
5743 {
5744 part_die->name = spec_die->name;
5745
5746 /* Copy DW_AT_external attribute if it is set. */
5747 if (spec_die->is_external)
5748 part_die->is_external = spec_die->is_external;
5749 }
5750 }
5751
5752 /* Set default names for some unnamed DIEs. */
5753 if (part_die->name == NULL && (part_die->tag == DW_TAG_structure_type
5754 || part_die->tag == DW_TAG_class_type))
5755 part_die->name = "(anonymous class)";
5756
5757 if (part_die->name == NULL && part_die->tag == DW_TAG_namespace)
5758 part_die->name = "(anonymous namespace)";
5759
5760 if (part_die->tag == DW_TAG_structure_type
5761 || part_die->tag == DW_TAG_class_type
5762 || part_die->tag == DW_TAG_union_type)
5763 guess_structure_name (part_die, cu);
5764 }
5765
5766 /* Read the die from the .debug_info section buffer. Set DIEP to
5767 point to a newly allocated die with its information, except for its
5768 child, sibling, and parent fields. Set HAS_CHILDREN to tell
5769 whether the die has children or not. */
5770
5771 static gdb_byte *
5772 read_full_die (struct die_info **diep, bfd *abfd, gdb_byte *info_ptr,
5773 struct dwarf2_cu *cu, int *has_children)
5774 {
5775 unsigned int abbrev_number, bytes_read, i, offset;
5776 struct abbrev_info *abbrev;
5777 struct die_info *die;
5778
5779 offset = info_ptr - dwarf2_per_objfile->info_buffer;
5780 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
5781 info_ptr += bytes_read;
5782 if (!abbrev_number)
5783 {
5784 die = dwarf_alloc_die ();
5785 die->tag = 0;
5786 die->abbrev = abbrev_number;
5787 die->type = NULL;
5788 *diep = die;
5789 *has_children = 0;
5790 return info_ptr;
5791 }
5792
5793 abbrev = dwarf2_lookup_abbrev (abbrev_number, cu);
5794 if (!abbrev)
5795 {
5796 error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
5797 abbrev_number,
5798 bfd_get_filename (abfd));
5799 }
5800 die = dwarf_alloc_die ();
5801 die->offset = offset;
5802 die->tag = abbrev->tag;
5803 die->abbrev = abbrev_number;
5804 die->type = NULL;
5805
5806 die->num_attrs = abbrev->num_attrs;
5807 die->attrs = (struct attribute *)
5808 xmalloc (die->num_attrs * sizeof (struct attribute));
5809
5810 for (i = 0; i < abbrev->num_attrs; ++i)
5811 {
5812 info_ptr = read_attribute (&die->attrs[i], &abbrev->attrs[i],
5813 abfd, info_ptr, cu);
5814
5815 /* If this attribute is an absolute reference to a different
5816 compilation unit, make sure that compilation unit is loaded
5817 also. */
5818 if (die->attrs[i].form == DW_FORM_ref_addr
5819 && (DW_ADDR (&die->attrs[i]) < cu->header.offset
5820 || (DW_ADDR (&die->attrs[i])
5821 >= cu->header.offset + cu->header.length)))
5822 {
5823 struct dwarf2_per_cu_data *per_cu;
5824 per_cu = dwarf2_find_containing_comp_unit (DW_ADDR (&die->attrs[i]),
5825 cu->objfile);
5826
5827 /* Mark the dependence relation so that we don't flush PER_CU
5828 too early. */
5829 dwarf2_add_dependence (cu, per_cu);
5830
5831 /* If it's already on the queue, we have nothing to do. */
5832 if (per_cu->queued)
5833 continue;
5834
5835 /* If the compilation unit is already loaded, just mark it as
5836 used. */
5837 if (per_cu->cu != NULL)
5838 {
5839 per_cu->cu->last_used = 0;
5840 continue;
5841 }
5842
5843 /* Add it to the queue. */
5844 queue_comp_unit (per_cu);
5845 }
5846 }
5847
5848 *diep = die;
5849 *has_children = abbrev->has_children;
5850 return info_ptr;
5851 }
5852
5853 /* Read an attribute value described by an attribute form. */
5854
5855 static gdb_byte *
5856 read_attribute_value (struct attribute *attr, unsigned form,
5857 bfd *abfd, gdb_byte *info_ptr,
5858 struct dwarf2_cu *cu)
5859 {
5860 struct comp_unit_head *cu_header = &cu->header;
5861 unsigned int bytes_read;
5862 struct dwarf_block *blk;
5863
5864 attr->form = form;
5865 switch (form)
5866 {
5867 case DW_FORM_addr:
5868 case DW_FORM_ref_addr:
5869 DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
5870 info_ptr += bytes_read;
5871 break;
5872 case DW_FORM_block2:
5873 blk = dwarf_alloc_block (cu);
5874 blk->size = read_2_bytes (abfd, info_ptr);
5875 info_ptr += 2;
5876 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
5877 info_ptr += blk->size;
5878 DW_BLOCK (attr) = blk;
5879 break;
5880 case DW_FORM_block4:
5881 blk = dwarf_alloc_block (cu);
5882 blk->size = read_4_bytes (abfd, info_ptr);
5883 info_ptr += 4;
5884 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
5885 info_ptr += blk->size;
5886 DW_BLOCK (attr) = blk;
5887 break;
5888 case DW_FORM_data2:
5889 DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
5890 info_ptr += 2;
5891 break;
5892 case DW_FORM_data4:
5893 DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
5894 info_ptr += 4;
5895 break;
5896 case DW_FORM_data8:
5897 DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
5898 info_ptr += 8;
5899 break;
5900 case DW_FORM_string:
5901 DW_STRING (attr) = read_string (abfd, info_ptr, &bytes_read);
5902 info_ptr += bytes_read;
5903 break;
5904 case DW_FORM_strp:
5905 DW_STRING (attr) = read_indirect_string (abfd, info_ptr, cu_header,
5906 &bytes_read);
5907 info_ptr += bytes_read;
5908 break;
5909 case DW_FORM_block:
5910 blk = dwarf_alloc_block (cu);
5911 blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
5912 info_ptr += bytes_read;
5913 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
5914 info_ptr += blk->size;
5915 DW_BLOCK (attr) = blk;
5916 break;
5917 case DW_FORM_block1:
5918 blk = dwarf_alloc_block (cu);
5919 blk->size = read_1_byte (abfd, info_ptr);
5920 info_ptr += 1;
5921 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
5922 info_ptr += blk->size;
5923 DW_BLOCK (attr) = blk;
5924 break;
5925 case DW_FORM_data1:
5926 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
5927 info_ptr += 1;
5928 break;
5929 case DW_FORM_flag:
5930 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
5931 info_ptr += 1;
5932 break;
5933 case DW_FORM_sdata:
5934 DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
5935 info_ptr += bytes_read;
5936 break;
5937 case DW_FORM_udata:
5938 DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
5939 info_ptr += bytes_read;
5940 break;
5941 case DW_FORM_ref1:
5942 DW_ADDR (attr) = cu->header.offset + read_1_byte (abfd, info_ptr);
5943 info_ptr += 1;
5944 break;
5945 case DW_FORM_ref2:
5946 DW_ADDR (attr) = cu->header.offset + read_2_bytes (abfd, info_ptr);
5947 info_ptr += 2;
5948 break;
5949 case DW_FORM_ref4:
5950 DW_ADDR (attr) = cu->header.offset + read_4_bytes (abfd, info_ptr);
5951 info_ptr += 4;
5952 break;
5953 case DW_FORM_ref8:
5954 DW_ADDR (attr) = cu->header.offset + read_8_bytes (abfd, info_ptr);
5955 info_ptr += 8;
5956 break;
5957 case DW_FORM_ref_udata:
5958 DW_ADDR (attr) = (cu->header.offset
5959 + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
5960 info_ptr += bytes_read;
5961 break;
5962 case DW_FORM_indirect:
5963 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
5964 info_ptr += bytes_read;
5965 info_ptr = read_attribute_value (attr, form, abfd, info_ptr, cu);
5966 break;
5967 default:
5968 error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
5969 dwarf_form_name (form),
5970 bfd_get_filename (abfd));
5971 }
5972 return info_ptr;
5973 }
5974
5975 /* Read an attribute described by an abbreviated attribute. */
5976
5977 static gdb_byte *
5978 read_attribute (struct attribute *attr, struct attr_abbrev *abbrev,
5979 bfd *abfd, gdb_byte *info_ptr, struct dwarf2_cu *cu)
5980 {
5981 attr->name = abbrev->name;
5982 return read_attribute_value (attr, abbrev->form, abfd, info_ptr, cu);
5983 }
5984
5985 /* read dwarf information from a buffer */
5986
5987 static unsigned int
5988 read_1_byte (bfd *abfd, gdb_byte *buf)
5989 {
5990 return bfd_get_8 (abfd, buf);
5991 }
5992
5993 static int
5994 read_1_signed_byte (bfd *abfd, gdb_byte *buf)
5995 {
5996 return bfd_get_signed_8 (abfd, buf);
5997 }
5998
5999 static unsigned int
6000 read_2_bytes (bfd *abfd, gdb_byte *buf)
6001 {
6002 return bfd_get_16 (abfd, buf);
6003 }
6004
6005 static int
6006 read_2_signed_bytes (bfd *abfd, gdb_byte *buf)
6007 {
6008 return bfd_get_signed_16 (abfd, buf);
6009 }
6010
6011 static unsigned int
6012 read_4_bytes (bfd *abfd, gdb_byte *buf)
6013 {
6014 return bfd_get_32 (abfd, buf);
6015 }
6016
6017 static int
6018 read_4_signed_bytes (bfd *abfd, gdb_byte *buf)
6019 {
6020 return bfd_get_signed_32 (abfd, buf);
6021 }
6022
6023 static unsigned long
6024 read_8_bytes (bfd *abfd, gdb_byte *buf)
6025 {
6026 return bfd_get_64 (abfd, buf);
6027 }
6028
6029 static CORE_ADDR
6030 read_address (bfd *abfd, gdb_byte *buf, struct dwarf2_cu *cu,
6031 unsigned int *bytes_read)
6032 {
6033 struct comp_unit_head *cu_header = &cu->header;
6034 CORE_ADDR retval = 0;
6035
6036 if (cu_header->signed_addr_p)
6037 {
6038 switch (cu_header->addr_size)
6039 {
6040 case 2:
6041 retval = bfd_get_signed_16 (abfd, buf);
6042 break;
6043 case 4:
6044 retval = bfd_get_signed_32 (abfd, buf);
6045 break;
6046 case 8:
6047 retval = bfd_get_signed_64 (abfd, buf);
6048 break;
6049 default:
6050 internal_error (__FILE__, __LINE__,
6051 _("read_address: bad switch, signed [in module %s]"),
6052 bfd_get_filename (abfd));
6053 }
6054 }
6055 else
6056 {
6057 switch (cu_header->addr_size)
6058 {
6059 case 2:
6060 retval = bfd_get_16 (abfd, buf);
6061 break;
6062 case 4:
6063 retval = bfd_get_32 (abfd, buf);
6064 break;
6065 case 8:
6066 retval = bfd_get_64 (abfd, buf);
6067 break;
6068 default:
6069 internal_error (__FILE__, __LINE__,
6070 _("read_address: bad switch, unsigned [in module %s]"),
6071 bfd_get_filename (abfd));
6072 }
6073 }
6074
6075 *bytes_read = cu_header->addr_size;
6076 return retval;
6077 }
6078
6079 /* Read the initial length from a section. The (draft) DWARF 3
6080 specification allows the initial length to take up either 4 bytes
6081 or 12 bytes. If the first 4 bytes are 0xffffffff, then the next 8
6082 bytes describe the length and all offsets will be 8 bytes in length
6083 instead of 4.
6084
6085 An older, non-standard 64-bit format is also handled by this
6086 function. The older format in question stores the initial length
6087 as an 8-byte quantity without an escape value. Lengths greater
6088 than 2^32 aren't very common which means that the initial 4 bytes
6089 is almost always zero. Since a length value of zero doesn't make
6090 sense for the 32-bit format, this initial zero can be considered to
6091 be an escape value which indicates the presence of the older 64-bit
6092 format. As written, the code can't detect (old format) lengths
6093 greater than 4GB. If it becomes necessary to handle lengths
6094 somewhat larger than 4GB, we could allow other small values (such
6095 as the non-sensical values of 1, 2, and 3) to also be used as
6096 escape values indicating the presence of the old format.
6097
6098 The value returned via bytes_read should be used to increment the
6099 relevant pointer after calling read_initial_length().
6100
6101 As a side effect, this function sets the fields initial_length_size
6102 and offset_size in cu_header to the values appropriate for the
6103 length field. (The format of the initial length field determines
6104 the width of file offsets to be fetched later with read_offset().)
6105
6106 [ Note: read_initial_length() and read_offset() are based on the
6107 document entitled "DWARF Debugging Information Format", revision
6108 3, draft 8, dated November 19, 2001. This document was obtained
6109 from:
6110
6111 http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
6112
6113 This document is only a draft and is subject to change. (So beware.)
6114
6115 Details regarding the older, non-standard 64-bit format were
6116 determined empirically by examining 64-bit ELF files produced by
6117 the SGI toolchain on an IRIX 6.5 machine.
6118
6119 - Kevin, July 16, 2002
6120 ] */
6121
6122 static LONGEST
6123 read_initial_length (bfd *abfd, gdb_byte *buf, struct comp_unit_head *cu_header,
6124 unsigned int *bytes_read)
6125 {
6126 LONGEST length = bfd_get_32 (abfd, buf);
6127
6128 if (length == 0xffffffff)
6129 {
6130 length = bfd_get_64 (abfd, buf + 4);
6131 *bytes_read = 12;
6132 }
6133 else if (length == 0)
6134 {
6135 /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX. */
6136 length = bfd_get_64 (abfd, buf);
6137 *bytes_read = 8;
6138 }
6139 else
6140 {
6141 *bytes_read = 4;
6142 }
6143
6144 if (cu_header)
6145 {
6146 gdb_assert (cu_header->initial_length_size == 0
6147 || cu_header->initial_length_size == 4
6148 || cu_header->initial_length_size == 8
6149 || cu_header->initial_length_size == 12);
6150
6151 if (cu_header->initial_length_size != 0
6152 && cu_header->initial_length_size != *bytes_read)
6153 complaint (&symfile_complaints,
6154 _("intermixed 32-bit and 64-bit DWARF sections"));
6155
6156 cu_header->initial_length_size = *bytes_read;
6157 cu_header->offset_size = (*bytes_read == 4) ? 4 : 8;
6158 }
6159
6160 return length;
6161 }
6162
6163 /* Read an offset from the data stream. The size of the offset is
6164 given by cu_header->offset_size. */
6165
6166 static LONGEST
6167 read_offset (bfd *abfd, gdb_byte *buf, const struct comp_unit_head *cu_header,
6168 unsigned int *bytes_read)
6169 {
6170 LONGEST retval = 0;
6171
6172 switch (cu_header->offset_size)
6173 {
6174 case 4:
6175 retval = bfd_get_32 (abfd, buf);
6176 *bytes_read = 4;
6177 break;
6178 case 8:
6179 retval = bfd_get_64 (abfd, buf);
6180 *bytes_read = 8;
6181 break;
6182 default:
6183 internal_error (__FILE__, __LINE__,
6184 _("read_offset: bad switch [in module %s]"),
6185 bfd_get_filename (abfd));
6186 }
6187
6188 return retval;
6189 }
6190
6191 static gdb_byte *
6192 read_n_bytes (bfd *abfd, gdb_byte *buf, unsigned int size)
6193 {
6194 /* If the size of a host char is 8 bits, we can return a pointer
6195 to the buffer, otherwise we have to copy the data to a buffer
6196 allocated on the temporary obstack. */
6197 gdb_assert (HOST_CHAR_BIT == 8);
6198 return buf;
6199 }
6200
6201 static char *
6202 read_string (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
6203 {
6204 /* If the size of a host char is 8 bits, we can return a pointer
6205 to the string, otherwise we have to copy the string to a buffer
6206 allocated on the temporary obstack. */
6207 gdb_assert (HOST_CHAR_BIT == 8);
6208 if (*buf == '\0')
6209 {
6210 *bytes_read_ptr = 1;
6211 return NULL;
6212 }
6213 *bytes_read_ptr = strlen ((char *) buf) + 1;
6214 return (char *) buf;
6215 }
6216
6217 static char *
6218 read_indirect_string (bfd *abfd, gdb_byte *buf,
6219 const struct comp_unit_head *cu_header,
6220 unsigned int *bytes_read_ptr)
6221 {
6222 LONGEST str_offset = read_offset (abfd, buf, cu_header,
6223 bytes_read_ptr);
6224
6225 if (dwarf2_per_objfile->str_buffer == NULL)
6226 {
6227 error (_("DW_FORM_strp used without .debug_str section [in module %s]"),
6228 bfd_get_filename (abfd));
6229 return NULL;
6230 }
6231 if (str_offset >= dwarf2_per_objfile->str_size)
6232 {
6233 error (_("DW_FORM_strp pointing outside of .debug_str section [in module %s]"),
6234 bfd_get_filename (abfd));
6235 return NULL;
6236 }
6237 gdb_assert (HOST_CHAR_BIT == 8);
6238 if (dwarf2_per_objfile->str_buffer[str_offset] == '\0')
6239 return NULL;
6240 return (char *) (dwarf2_per_objfile->str_buffer + str_offset);
6241 }
6242
6243 static unsigned long
6244 read_unsigned_leb128 (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
6245 {
6246 unsigned long result;
6247 unsigned int num_read;
6248 int i, shift;
6249 unsigned char byte;
6250
6251 result = 0;
6252 shift = 0;
6253 num_read = 0;
6254 i = 0;
6255 while (1)
6256 {
6257 byte = bfd_get_8 (abfd, buf);
6258 buf++;
6259 num_read++;
6260 result |= ((unsigned long)(byte & 127) << shift);
6261 if ((byte & 128) == 0)
6262 {
6263 break;
6264 }
6265 shift += 7;
6266 }
6267 *bytes_read_ptr = num_read;
6268 return result;
6269 }
6270
6271 static long
6272 read_signed_leb128 (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
6273 {
6274 long result;
6275 int i, shift, num_read;
6276 unsigned char byte;
6277
6278 result = 0;
6279 shift = 0;
6280 num_read = 0;
6281 i = 0;
6282 while (1)
6283 {
6284 byte = bfd_get_8 (abfd, buf);
6285 buf++;
6286 num_read++;
6287 result |= ((long)(byte & 127) << shift);
6288 shift += 7;
6289 if ((byte & 128) == 0)
6290 {
6291 break;
6292 }
6293 }
6294 if ((shift < 8 * sizeof (result)) && (byte & 0x40))
6295 result |= -(((long)1) << shift);
6296 *bytes_read_ptr = num_read;
6297 return result;
6298 }
6299
6300 /* Return a pointer to just past the end of an LEB128 number in BUF. */
6301
6302 static gdb_byte *
6303 skip_leb128 (bfd *abfd, gdb_byte *buf)
6304 {
6305 int byte;
6306
6307 while (1)
6308 {
6309 byte = bfd_get_8 (abfd, buf);
6310 buf++;
6311 if ((byte & 128) == 0)
6312 return buf;
6313 }
6314 }
6315
6316 static void
6317 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
6318 {
6319 switch (lang)
6320 {
6321 case DW_LANG_C89:
6322 case DW_LANG_C:
6323 cu->language = language_c;
6324 break;
6325 case DW_LANG_C_plus_plus:
6326 cu->language = language_cplus;
6327 break;
6328 case DW_LANG_Fortran77:
6329 case DW_LANG_Fortran90:
6330 case DW_LANG_Fortran95:
6331 cu->language = language_fortran;
6332 break;
6333 case DW_LANG_Mips_Assembler:
6334 cu->language = language_asm;
6335 break;
6336 case DW_LANG_Java:
6337 cu->language = language_java;
6338 break;
6339 case DW_LANG_Ada83:
6340 case DW_LANG_Ada95:
6341 cu->language = language_ada;
6342 break;
6343 case DW_LANG_Modula2:
6344 cu->language = language_m2;
6345 break;
6346 case DW_LANG_Pascal83:
6347 cu->language = language_pascal;
6348 break;
6349 case DW_LANG_Cobol74:
6350 case DW_LANG_Cobol85:
6351 default:
6352 cu->language = language_minimal;
6353 break;
6354 }
6355 cu->language_defn = language_def (cu->language);
6356 }
6357
6358 /* Return the named attribute or NULL if not there. */
6359
6360 static struct attribute *
6361 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
6362 {
6363 unsigned int i;
6364 struct attribute *spec = NULL;
6365
6366 for (i = 0; i < die->num_attrs; ++i)
6367 {
6368 if (die->attrs[i].name == name)
6369 return &die->attrs[i];
6370 if (die->attrs[i].name == DW_AT_specification
6371 || die->attrs[i].name == DW_AT_abstract_origin)
6372 spec = &die->attrs[i];
6373 }
6374
6375 if (spec)
6376 return dwarf2_attr (follow_die_ref (die, spec, cu), name, cu);
6377
6378 return NULL;
6379 }
6380
6381 /* Return non-zero iff the attribute NAME is defined for the given DIE,
6382 and holds a non-zero value. This function should only be used for
6383 DW_FORM_flag attributes. */
6384
6385 static int
6386 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
6387 {
6388 struct attribute *attr = dwarf2_attr (die, name, cu);
6389
6390 return (attr && DW_UNSND (attr));
6391 }
6392
6393 static int
6394 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
6395 {
6396 /* A DIE is a declaration if it has a DW_AT_declaration attribute
6397 which value is non-zero. However, we have to be careful with
6398 DIEs having a DW_AT_specification attribute, because dwarf2_attr()
6399 (via dwarf2_flag_true_p) follows this attribute. So we may
6400 end up accidently finding a declaration attribute that belongs
6401 to a different DIE referenced by the specification attribute,
6402 even though the given DIE does not have a declaration attribute. */
6403 return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
6404 && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
6405 }
6406
6407 /* Return the die giving the specification for DIE, if there is
6408 one. */
6409
6410 static struct die_info *
6411 die_specification (struct die_info *die, struct dwarf2_cu *cu)
6412 {
6413 struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification, cu);
6414
6415 if (spec_attr == NULL)
6416 return NULL;
6417 else
6418 return follow_die_ref (die, spec_attr, cu);
6419 }
6420
6421 /* Free the line_header structure *LH, and any arrays and strings it
6422 refers to. */
6423 static void
6424 free_line_header (struct line_header *lh)
6425 {
6426 if (lh->standard_opcode_lengths)
6427 xfree (lh->standard_opcode_lengths);
6428
6429 /* Remember that all the lh->file_names[i].name pointers are
6430 pointers into debug_line_buffer, and don't need to be freed. */
6431 if (lh->file_names)
6432 xfree (lh->file_names);
6433
6434 /* Similarly for the include directory names. */
6435 if (lh->include_dirs)
6436 xfree (lh->include_dirs);
6437
6438 xfree (lh);
6439 }
6440
6441
6442 /* Add an entry to LH's include directory table. */
6443 static void
6444 add_include_dir (struct line_header *lh, char *include_dir)
6445 {
6446 /* Grow the array if necessary. */
6447 if (lh->include_dirs_size == 0)
6448 {
6449 lh->include_dirs_size = 1; /* for testing */
6450 lh->include_dirs = xmalloc (lh->include_dirs_size
6451 * sizeof (*lh->include_dirs));
6452 }
6453 else if (lh->num_include_dirs >= lh->include_dirs_size)
6454 {
6455 lh->include_dirs_size *= 2;
6456 lh->include_dirs = xrealloc (lh->include_dirs,
6457 (lh->include_dirs_size
6458 * sizeof (*lh->include_dirs)));
6459 }
6460
6461 lh->include_dirs[lh->num_include_dirs++] = include_dir;
6462 }
6463
6464
6465 /* Add an entry to LH's file name table. */
6466 static void
6467 add_file_name (struct line_header *lh,
6468 char *name,
6469 unsigned int dir_index,
6470 unsigned int mod_time,
6471 unsigned int length)
6472 {
6473 struct file_entry *fe;
6474
6475 /* Grow the array if necessary. */
6476 if (lh->file_names_size == 0)
6477 {
6478 lh->file_names_size = 1; /* for testing */
6479 lh->file_names = xmalloc (lh->file_names_size
6480 * sizeof (*lh->file_names));
6481 }
6482 else if (lh->num_file_names >= lh->file_names_size)
6483 {
6484 lh->file_names_size *= 2;
6485 lh->file_names = xrealloc (lh->file_names,
6486 (lh->file_names_size
6487 * sizeof (*lh->file_names)));
6488 }
6489
6490 fe = &lh->file_names[lh->num_file_names++];
6491 fe->name = name;
6492 fe->dir_index = dir_index;
6493 fe->mod_time = mod_time;
6494 fe->length = length;
6495 fe->included_p = 0;
6496 fe->symtab = NULL;
6497 }
6498
6499
6500 /* Read the statement program header starting at OFFSET in
6501 .debug_line, according to the endianness of ABFD. Return a pointer
6502 to a struct line_header, allocated using xmalloc.
6503
6504 NOTE: the strings in the include directory and file name tables of
6505 the returned object point into debug_line_buffer, and must not be
6506 freed. */
6507 static struct line_header *
6508 dwarf_decode_line_header (unsigned int offset, bfd *abfd,
6509 struct dwarf2_cu *cu)
6510 {
6511 struct cleanup *back_to;
6512 struct line_header *lh;
6513 gdb_byte *line_ptr;
6514 unsigned int bytes_read;
6515 int i;
6516 char *cur_dir, *cur_file;
6517
6518 if (dwarf2_per_objfile->line_buffer == NULL)
6519 {
6520 complaint (&symfile_complaints, _("missing .debug_line section"));
6521 return 0;
6522 }
6523
6524 /* Make sure that at least there's room for the total_length field.
6525 That could be 12 bytes long, but we're just going to fudge that. */
6526 if (offset + 4 >= dwarf2_per_objfile->line_size)
6527 {
6528 dwarf2_statement_list_fits_in_line_number_section_complaint ();
6529 return 0;
6530 }
6531
6532 lh = xmalloc (sizeof (*lh));
6533 memset (lh, 0, sizeof (*lh));
6534 back_to = make_cleanup ((make_cleanup_ftype *) free_line_header,
6535 (void *) lh);
6536
6537 line_ptr = dwarf2_per_objfile->line_buffer + offset;
6538
6539 /* Read in the header. */
6540 lh->total_length =
6541 read_initial_length (abfd, line_ptr, &cu->header, &bytes_read);
6542 line_ptr += bytes_read;
6543 if (line_ptr + lh->total_length > (dwarf2_per_objfile->line_buffer
6544 + dwarf2_per_objfile->line_size))
6545 {
6546 dwarf2_statement_list_fits_in_line_number_section_complaint ();
6547 return 0;
6548 }
6549 lh->statement_program_end = line_ptr + lh->total_length;
6550 lh->version = read_2_bytes (abfd, line_ptr);
6551 line_ptr += 2;
6552 lh->header_length = read_offset (abfd, line_ptr, &cu->header, &bytes_read);
6553 line_ptr += bytes_read;
6554 lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
6555 line_ptr += 1;
6556 lh->default_is_stmt = read_1_byte (abfd, line_ptr);
6557 line_ptr += 1;
6558 lh->line_base = read_1_signed_byte (abfd, line_ptr);
6559 line_ptr += 1;
6560 lh->line_range = read_1_byte (abfd, line_ptr);
6561 line_ptr += 1;
6562 lh->opcode_base = read_1_byte (abfd, line_ptr);
6563 line_ptr += 1;
6564 lh->standard_opcode_lengths
6565 = xmalloc (lh->opcode_base * sizeof (lh->standard_opcode_lengths[0]));
6566
6567 lh->standard_opcode_lengths[0] = 1; /* This should never be used anyway. */
6568 for (i = 1; i < lh->opcode_base; ++i)
6569 {
6570 lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
6571 line_ptr += 1;
6572 }
6573
6574 /* Read directory table. */
6575 while ((cur_dir = read_string (abfd, line_ptr, &bytes_read)) != NULL)
6576 {
6577 line_ptr += bytes_read;
6578 add_include_dir (lh, cur_dir);
6579 }
6580 line_ptr += bytes_read;
6581
6582 /* Read file name table. */
6583 while ((cur_file = read_string (abfd, line_ptr, &bytes_read)) != NULL)
6584 {
6585 unsigned int dir_index, mod_time, length;
6586
6587 line_ptr += bytes_read;
6588 dir_index = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
6589 line_ptr += bytes_read;
6590 mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
6591 line_ptr += bytes_read;
6592 length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
6593 line_ptr += bytes_read;
6594
6595 add_file_name (lh, cur_file, dir_index, mod_time, length);
6596 }
6597 line_ptr += bytes_read;
6598 lh->statement_program_start = line_ptr;
6599
6600 if (line_ptr > (dwarf2_per_objfile->line_buffer
6601 + dwarf2_per_objfile->line_size))
6602 complaint (&symfile_complaints,
6603 _("line number info header doesn't fit in `.debug_line' section"));
6604
6605 discard_cleanups (back_to);
6606 return lh;
6607 }
6608
6609 /* This function exists to work around a bug in certain compilers
6610 (particularly GCC 2.95), in which the first line number marker of a
6611 function does not show up until after the prologue, right before
6612 the second line number marker. This function shifts ADDRESS down
6613 to the beginning of the function if necessary, and is called on
6614 addresses passed to record_line. */
6615
6616 static CORE_ADDR
6617 check_cu_functions (CORE_ADDR address, struct dwarf2_cu *cu)
6618 {
6619 struct function_range *fn;
6620
6621 /* Find the function_range containing address. */
6622 if (!cu->first_fn)
6623 return address;
6624
6625 if (!cu->cached_fn)
6626 cu->cached_fn = cu->first_fn;
6627
6628 fn = cu->cached_fn;
6629 while (fn)
6630 if (fn->lowpc <= address && fn->highpc > address)
6631 goto found;
6632 else
6633 fn = fn->next;
6634
6635 fn = cu->first_fn;
6636 while (fn && fn != cu->cached_fn)
6637 if (fn->lowpc <= address && fn->highpc > address)
6638 goto found;
6639 else
6640 fn = fn->next;
6641
6642 return address;
6643
6644 found:
6645 if (fn->seen_line)
6646 return address;
6647 if (address != fn->lowpc)
6648 complaint (&symfile_complaints,
6649 _("misplaced first line number at 0x%lx for '%s'"),
6650 (unsigned long) address, fn->name);
6651 fn->seen_line = 1;
6652 return fn->lowpc;
6653 }
6654
6655 /* Decode the Line Number Program (LNP) for the given line_header
6656 structure and CU. The actual information extracted and the type
6657 of structures created from the LNP depends on the value of PST.
6658
6659 1. If PST is NULL, then this procedure uses the data from the program
6660 to create all necessary symbol tables, and their linetables.
6661 The compilation directory of the file is passed in COMP_DIR,
6662 and must not be NULL.
6663
6664 2. If PST is not NULL, this procedure reads the program to determine
6665 the list of files included by the unit represented by PST, and
6666 builds all the associated partial symbol tables. In this case,
6667 the value of COMP_DIR is ignored, and can thus be NULL (the COMP_DIR
6668 is not used to compute the full name of the symtab, and therefore
6669 omitting it when building the partial symtab does not introduce
6670 the potential for inconsistency - a partial symtab and its associated
6671 symbtab having a different fullname -). */
6672
6673 static void
6674 dwarf_decode_lines (struct line_header *lh, char *comp_dir, bfd *abfd,
6675 struct dwarf2_cu *cu, struct partial_symtab *pst)
6676 {
6677 gdb_byte *line_ptr, *extended_end;
6678 gdb_byte *line_end;
6679 unsigned int bytes_read, extended_len;
6680 unsigned char op_code, extended_op, adj_opcode;
6681 CORE_ADDR baseaddr;
6682 struct objfile *objfile = cu->objfile;
6683 const int decode_for_pst_p = (pst != NULL);
6684 struct subfile *last_subfile = NULL, *first_subfile = current_subfile;
6685
6686 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
6687
6688 line_ptr = lh->statement_program_start;
6689 line_end = lh->statement_program_end;
6690
6691 /* Read the statement sequences until there's nothing left. */
6692 while (line_ptr < line_end)
6693 {
6694 /* state machine registers */
6695 CORE_ADDR address = 0;
6696 unsigned int file = 1;
6697 unsigned int line = 1;
6698 unsigned int column = 0;
6699 int is_stmt = lh->default_is_stmt;
6700 int basic_block = 0;
6701 int end_sequence = 0;
6702
6703 if (!decode_for_pst_p && lh->num_file_names >= file)
6704 {
6705 /* Start a subfile for the current file of the state machine. */
6706 /* lh->include_dirs and lh->file_names are 0-based, but the
6707 directory and file name numbers in the statement program
6708 are 1-based. */
6709 struct file_entry *fe = &lh->file_names[file - 1];
6710 char *dir = NULL;
6711
6712 if (fe->dir_index)
6713 dir = lh->include_dirs[fe->dir_index - 1];
6714
6715 dwarf2_start_subfile (fe->name, dir, comp_dir);
6716 }
6717
6718 /* Decode the table. */
6719 while (!end_sequence)
6720 {
6721 op_code = read_1_byte (abfd, line_ptr);
6722 line_ptr += 1;
6723
6724 if (op_code >= lh->opcode_base)
6725 {
6726 /* Special operand. */
6727 adj_opcode = op_code - lh->opcode_base;
6728 address += (adj_opcode / lh->line_range)
6729 * lh->minimum_instruction_length;
6730 line += lh->line_base + (adj_opcode % lh->line_range);
6731 if (lh->num_file_names < file)
6732 dwarf2_debug_line_missing_file_complaint ();
6733 else
6734 {
6735 lh->file_names[file - 1].included_p = 1;
6736 if (!decode_for_pst_p)
6737 {
6738 if (last_subfile != current_subfile)
6739 {
6740 if (last_subfile)
6741 record_line (last_subfile, 0, address);
6742 last_subfile = current_subfile;
6743 }
6744 /* Append row to matrix using current values. */
6745 record_line (current_subfile, line,
6746 check_cu_functions (address, cu));
6747 }
6748 }
6749 basic_block = 1;
6750 }
6751 else switch (op_code)
6752 {
6753 case DW_LNS_extended_op:
6754 extended_len = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
6755 line_ptr += bytes_read;
6756 extended_end = line_ptr + extended_len;
6757 extended_op = read_1_byte (abfd, line_ptr);
6758 line_ptr += 1;
6759 switch (extended_op)
6760 {
6761 case DW_LNE_end_sequence:
6762 end_sequence = 1;
6763
6764 if (lh->num_file_names < file)
6765 dwarf2_debug_line_missing_file_complaint ();
6766 else
6767 {
6768 lh->file_names[file - 1].included_p = 1;
6769 if (!decode_for_pst_p)
6770 record_line (current_subfile, 0, address);
6771 }
6772 break;
6773 case DW_LNE_set_address:
6774 address = read_address (abfd, line_ptr, cu, &bytes_read);
6775 line_ptr += bytes_read;
6776 address += baseaddr;
6777 break;
6778 case DW_LNE_define_file:
6779 {
6780 char *cur_file;
6781 unsigned int dir_index, mod_time, length;
6782
6783 cur_file = read_string (abfd, line_ptr, &bytes_read);
6784 line_ptr += bytes_read;
6785 dir_index =
6786 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
6787 line_ptr += bytes_read;
6788 mod_time =
6789 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
6790 line_ptr += bytes_read;
6791 length =
6792 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
6793 line_ptr += bytes_read;
6794 add_file_name (lh, cur_file, dir_index, mod_time, length);
6795 }
6796 break;
6797 default:
6798 complaint (&symfile_complaints,
6799 _("mangled .debug_line section"));
6800 return;
6801 }
6802 /* Make sure that we parsed the extended op correctly. If e.g.
6803 we expected a different address size than the producer used,
6804 we may have read the wrong number of bytes. */
6805 if (line_ptr != extended_end)
6806 {
6807 complaint (&symfile_complaints,
6808 _("mangled .debug_line section"));
6809 return;
6810 }
6811 break;
6812 case DW_LNS_copy:
6813 if (lh->num_file_names < file)
6814 dwarf2_debug_line_missing_file_complaint ();
6815 else
6816 {
6817 lh->file_names[file - 1].included_p = 1;
6818 if (!decode_for_pst_p)
6819 {
6820 if (last_subfile != current_subfile)
6821 {
6822 if (last_subfile)
6823 record_line (last_subfile, 0, address);
6824 last_subfile = current_subfile;
6825 }
6826 record_line (current_subfile, line,
6827 check_cu_functions (address, cu));
6828 }
6829 }
6830 basic_block = 0;
6831 break;
6832 case DW_LNS_advance_pc:
6833 address += lh->minimum_instruction_length
6834 * read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
6835 line_ptr += bytes_read;
6836 break;
6837 case DW_LNS_advance_line:
6838 line += read_signed_leb128 (abfd, line_ptr, &bytes_read);
6839 line_ptr += bytes_read;
6840 break;
6841 case DW_LNS_set_file:
6842 {
6843 /* The arrays lh->include_dirs and lh->file_names are
6844 0-based, but the directory and file name numbers in
6845 the statement program are 1-based. */
6846 struct file_entry *fe;
6847 char *dir = NULL;
6848
6849 file = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
6850 line_ptr += bytes_read;
6851 if (lh->num_file_names < file)
6852 dwarf2_debug_line_missing_file_complaint ();
6853 else
6854 {
6855 fe = &lh->file_names[file - 1];
6856 if (fe->dir_index)
6857 dir = lh->include_dirs[fe->dir_index - 1];
6858 if (!decode_for_pst_p)
6859 {
6860 last_subfile = current_subfile;
6861 dwarf2_start_subfile (fe->name, dir, comp_dir);
6862 }
6863 }
6864 }
6865 break;
6866 case DW_LNS_set_column:
6867 column = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
6868 line_ptr += bytes_read;
6869 break;
6870 case DW_LNS_negate_stmt:
6871 is_stmt = (!is_stmt);
6872 break;
6873 case DW_LNS_set_basic_block:
6874 basic_block = 1;
6875 break;
6876 /* Add to the address register of the state machine the
6877 address increment value corresponding to special opcode
6878 255. I.e., this value is scaled by the minimum
6879 instruction length since special opcode 255 would have
6880 scaled the the increment. */
6881 case DW_LNS_const_add_pc:
6882 address += (lh->minimum_instruction_length
6883 * ((255 - lh->opcode_base) / lh->line_range));
6884 break;
6885 case DW_LNS_fixed_advance_pc:
6886 address += read_2_bytes (abfd, line_ptr);
6887 line_ptr += 2;
6888 break;
6889 default:
6890 {
6891 /* Unknown standard opcode, ignore it. */
6892 int i;
6893
6894 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
6895 {
6896 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
6897 line_ptr += bytes_read;
6898 }
6899 }
6900 }
6901 }
6902 }
6903
6904 if (decode_for_pst_p)
6905 {
6906 int file_index;
6907
6908 /* Now that we're done scanning the Line Header Program, we can
6909 create the psymtab of each included file. */
6910 for (file_index = 0; file_index < lh->num_file_names; file_index++)
6911 if (lh->file_names[file_index].included_p == 1)
6912 {
6913 const struct file_entry fe = lh->file_names [file_index];
6914 char *include_name = fe.name;
6915 char *dir_name = NULL;
6916 char *pst_filename = pst->filename;
6917
6918 if (fe.dir_index)
6919 dir_name = lh->include_dirs[fe.dir_index - 1];
6920
6921 if (!IS_ABSOLUTE_PATH (include_name) && dir_name != NULL)
6922 {
6923 include_name = concat (dir_name, SLASH_STRING,
6924 include_name, (char *)NULL);
6925 make_cleanup (xfree, include_name);
6926 }
6927
6928 if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
6929 {
6930 pst_filename = concat (pst->dirname, SLASH_STRING,
6931 pst_filename, (char *)NULL);
6932 make_cleanup (xfree, pst_filename);
6933 }
6934
6935 if (strcmp (include_name, pst_filename) != 0)
6936 dwarf2_create_include_psymtab (include_name, pst, objfile);
6937 }
6938 }
6939 else
6940 {
6941 /* Make sure a symtab is created for every file, even files
6942 which contain only variables (i.e. no code with associated
6943 line numbers). */
6944
6945 int i;
6946 struct file_entry *fe;
6947
6948 for (i = 0; i < lh->num_file_names; i++)
6949 {
6950 char *dir = NULL;
6951 fe = &lh->file_names[i];
6952 if (fe->dir_index)
6953 dir = lh->include_dirs[fe->dir_index - 1];
6954 dwarf2_start_subfile (fe->name, dir, comp_dir);
6955
6956 /* Skip the main file; we don't need it, and it must be
6957 allocated last, so that it will show up before the
6958 non-primary symtabs in the objfile's symtab list. */
6959 if (current_subfile == first_subfile)
6960 continue;
6961
6962 if (current_subfile->symtab == NULL)
6963 current_subfile->symtab = allocate_symtab (current_subfile->name,
6964 cu->objfile);
6965 fe->symtab = current_subfile->symtab;
6966 }
6967 }
6968 }
6969
6970 /* Start a subfile for DWARF. FILENAME is the name of the file and
6971 DIRNAME the name of the source directory which contains FILENAME
6972 or NULL if not known. COMP_DIR is the compilation directory for the
6973 linetable's compilation unit or NULL if not known.
6974 This routine tries to keep line numbers from identical absolute and
6975 relative file names in a common subfile.
6976
6977 Using the `list' example from the GDB testsuite, which resides in
6978 /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
6979 of /srcdir/list0.c yields the following debugging information for list0.c:
6980
6981 DW_AT_name: /srcdir/list0.c
6982 DW_AT_comp_dir: /compdir
6983 files.files[0].name: list0.h
6984 files.files[0].dir: /srcdir
6985 files.files[1].name: list0.c
6986 files.files[1].dir: /srcdir
6987
6988 The line number information for list0.c has to end up in a single
6989 subfile, so that `break /srcdir/list0.c:1' works as expected.
6990 start_subfile will ensure that this happens provided that we pass the
6991 concatenation of files.files[1].dir and files.files[1].name as the
6992 subfile's name. */
6993
6994 static void
6995 dwarf2_start_subfile (char *filename, char *dirname, char *comp_dir)
6996 {
6997 char *fullname;
6998
6999 /* While reading the DIEs, we call start_symtab(DW_AT_name, DW_AT_comp_dir).
7000 `start_symtab' will always pass the contents of DW_AT_comp_dir as
7001 second argument to start_subfile. To be consistent, we do the
7002 same here. In order not to lose the line information directory,
7003 we concatenate it to the filename when it makes sense.
7004 Note that the Dwarf3 standard says (speaking of filenames in line
7005 information): ``The directory index is ignored for file names
7006 that represent full path names''. Thus ignoring dirname in the
7007 `else' branch below isn't an issue. */
7008
7009 if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
7010 fullname = concat (dirname, SLASH_STRING, filename, (char *)NULL);
7011 else
7012 fullname = filename;
7013
7014 start_subfile (fullname, comp_dir);
7015
7016 if (fullname != filename)
7017 xfree (fullname);
7018 }
7019
7020 static void
7021 var_decode_location (struct attribute *attr, struct symbol *sym,
7022 struct dwarf2_cu *cu)
7023 {
7024 struct objfile *objfile = cu->objfile;
7025 struct comp_unit_head *cu_header = &cu->header;
7026
7027 /* NOTE drow/2003-01-30: There used to be a comment and some special
7028 code here to turn a symbol with DW_AT_external and a
7029 SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol. This was
7030 necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
7031 with some versions of binutils) where shared libraries could have
7032 relocations against symbols in their debug information - the
7033 minimal symbol would have the right address, but the debug info
7034 would not. It's no longer necessary, because we will explicitly
7035 apply relocations when we read in the debug information now. */
7036
7037 /* A DW_AT_location attribute with no contents indicates that a
7038 variable has been optimized away. */
7039 if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
7040 {
7041 SYMBOL_CLASS (sym) = LOC_OPTIMIZED_OUT;
7042 return;
7043 }
7044
7045 /* Handle one degenerate form of location expression specially, to
7046 preserve GDB's previous behavior when section offsets are
7047 specified. If this is just a DW_OP_addr then mark this symbol
7048 as LOC_STATIC. */
7049
7050 if (attr_form_is_block (attr)
7051 && DW_BLOCK (attr)->size == 1 + cu_header->addr_size
7052 && DW_BLOCK (attr)->data[0] == DW_OP_addr)
7053 {
7054 unsigned int dummy;
7055
7056 SYMBOL_VALUE_ADDRESS (sym) =
7057 read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
7058 fixup_symbol_section (sym, objfile);
7059 SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
7060 SYMBOL_SECTION (sym));
7061 SYMBOL_CLASS (sym) = LOC_STATIC;
7062 return;
7063 }
7064
7065 /* NOTE drow/2002-01-30: It might be worthwhile to have a static
7066 expression evaluator, and use LOC_COMPUTED only when necessary
7067 (i.e. when the value of a register or memory location is
7068 referenced, or a thread-local block, etc.). Then again, it might
7069 not be worthwhile. I'm assuming that it isn't unless performance
7070 or memory numbers show me otherwise. */
7071
7072 dwarf2_symbol_mark_computed (attr, sym, cu);
7073 SYMBOL_CLASS (sym) = LOC_COMPUTED;
7074 }
7075
7076 /* Given a pointer to a DWARF information entry, figure out if we need
7077 to make a symbol table entry for it, and if so, create a new entry
7078 and return a pointer to it.
7079 If TYPE is NULL, determine symbol type from the die, otherwise
7080 used the passed type. */
7081
7082 static struct symbol *
7083 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
7084 {
7085 struct objfile *objfile = cu->objfile;
7086 struct symbol *sym = NULL;
7087 char *name;
7088 struct attribute *attr = NULL;
7089 struct attribute *attr2 = NULL;
7090 CORE_ADDR baseaddr;
7091
7092 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
7093
7094 if (die->tag != DW_TAG_namespace)
7095 name = dwarf2_linkage_name (die, cu);
7096 else
7097 name = TYPE_NAME (type);
7098
7099 if (name)
7100 {
7101 sym = (struct symbol *) obstack_alloc (&objfile->objfile_obstack,
7102 sizeof (struct symbol));
7103 OBJSTAT (objfile, n_syms++);
7104 memset (sym, 0, sizeof (struct symbol));
7105
7106 /* Cache this symbol's name and the name's demangled form (if any). */
7107 SYMBOL_LANGUAGE (sym) = cu->language;
7108 SYMBOL_SET_NAMES (sym, name, strlen (name), objfile);
7109
7110 /* Default assumptions.
7111 Use the passed type or decode it from the die. */
7112 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
7113 SYMBOL_CLASS (sym) = LOC_OPTIMIZED_OUT;
7114 if (type != NULL)
7115 SYMBOL_TYPE (sym) = type;
7116 else
7117 SYMBOL_TYPE (sym) = die_type (die, cu);
7118 attr = dwarf2_attr (die, DW_AT_decl_line, cu);
7119 if (attr)
7120 {
7121 SYMBOL_LINE (sym) = DW_UNSND (attr);
7122 }
7123
7124 attr = dwarf2_attr (die, DW_AT_decl_file, cu);
7125 if (attr)
7126 {
7127 int file_index = DW_UNSND (attr);
7128 if (cu->line_header == NULL
7129 || file_index > cu->line_header->num_file_names)
7130 complaint (&symfile_complaints,
7131 _("file index out of range"));
7132 else if (file_index > 0)
7133 {
7134 struct file_entry *fe;
7135 fe = &cu->line_header->file_names[file_index - 1];
7136 SYMBOL_SYMTAB (sym) = fe->symtab;
7137 }
7138 }
7139
7140 switch (die->tag)
7141 {
7142 case DW_TAG_label:
7143 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
7144 if (attr)
7145 {
7146 SYMBOL_VALUE_ADDRESS (sym) = DW_ADDR (attr) + baseaddr;
7147 }
7148 SYMBOL_CLASS (sym) = LOC_LABEL;
7149 break;
7150 case DW_TAG_subprogram:
7151 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
7152 finish_block. */
7153 SYMBOL_CLASS (sym) = LOC_BLOCK;
7154 attr2 = dwarf2_attr (die, DW_AT_external, cu);
7155 if (attr2 && (DW_UNSND (attr2) != 0))
7156 {
7157 add_symbol_to_list (sym, &global_symbols);
7158 }
7159 else
7160 {
7161 add_symbol_to_list (sym, cu->list_in_scope);
7162 }
7163 break;
7164 case DW_TAG_variable:
7165 /* Compilation with minimal debug info may result in variables
7166 with missing type entries. Change the misleading `void' type
7167 to something sensible. */
7168 if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
7169 SYMBOL_TYPE (sym)
7170 = builtin_type (current_gdbarch)->nodebug_data_symbol;
7171
7172 attr = dwarf2_attr (die, DW_AT_const_value, cu);
7173 if (attr)
7174 {
7175 dwarf2_const_value (attr, sym, cu);
7176 attr2 = dwarf2_attr (die, DW_AT_external, cu);
7177 if (attr2 && (DW_UNSND (attr2) != 0))
7178 add_symbol_to_list (sym, &global_symbols);
7179 else
7180 add_symbol_to_list (sym, cu->list_in_scope);
7181 break;
7182 }
7183 attr = dwarf2_attr (die, DW_AT_location, cu);
7184 if (attr)
7185 {
7186 var_decode_location (attr, sym, cu);
7187 attr2 = dwarf2_attr (die, DW_AT_external, cu);
7188 if (attr2 && (DW_UNSND (attr2) != 0))
7189 add_symbol_to_list (sym, &global_symbols);
7190 else
7191 add_symbol_to_list (sym, cu->list_in_scope);
7192 }
7193 else
7194 {
7195 /* We do not know the address of this symbol.
7196 If it is an external symbol and we have type information
7197 for it, enter the symbol as a LOC_UNRESOLVED symbol.
7198 The address of the variable will then be determined from
7199 the minimal symbol table whenever the variable is
7200 referenced. */
7201 attr2 = dwarf2_attr (die, DW_AT_external, cu);
7202 if (attr2 && (DW_UNSND (attr2) != 0)
7203 && dwarf2_attr (die, DW_AT_type, cu) != NULL)
7204 {
7205 SYMBOL_CLASS (sym) = LOC_UNRESOLVED;
7206 add_symbol_to_list (sym, &global_symbols);
7207 }
7208 }
7209 break;
7210 case DW_TAG_formal_parameter:
7211 attr = dwarf2_attr (die, DW_AT_location, cu);
7212 if (attr)
7213 {
7214 var_decode_location (attr, sym, cu);
7215 /* FIXME drow/2003-07-31: Is LOC_COMPUTED_ARG necessary? */
7216 if (SYMBOL_CLASS (sym) == LOC_COMPUTED)
7217 SYMBOL_CLASS (sym) = LOC_COMPUTED_ARG;
7218 }
7219 attr = dwarf2_attr (die, DW_AT_const_value, cu);
7220 if (attr)
7221 {
7222 dwarf2_const_value (attr, sym, cu);
7223 }
7224 add_symbol_to_list (sym, cu->list_in_scope);
7225 break;
7226 case DW_TAG_unspecified_parameters:
7227 /* From varargs functions; gdb doesn't seem to have any
7228 interest in this information, so just ignore it for now.
7229 (FIXME?) */
7230 break;
7231 case DW_TAG_class_type:
7232 case DW_TAG_structure_type:
7233 case DW_TAG_union_type:
7234 case DW_TAG_set_type:
7235 case DW_TAG_enumeration_type:
7236 SYMBOL_CLASS (sym) = LOC_TYPEDEF;
7237 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
7238
7239 /* Make sure that the symbol includes appropriate enclosing
7240 classes/namespaces in its name. These are calculated in
7241 read_structure_type, and the correct name is saved in
7242 the type. */
7243
7244 if (cu->language == language_cplus
7245 || cu->language == language_java)
7246 {
7247 struct type *type = SYMBOL_TYPE (sym);
7248
7249 if (TYPE_TAG_NAME (type) != NULL)
7250 {
7251 /* FIXME: carlton/2003-11-10: Should this use
7252 SYMBOL_SET_NAMES instead? (The same problem also
7253 arises further down in this function.) */
7254 /* The type's name is already allocated along with
7255 this objfile, so we don't need to duplicate it
7256 for the symbol. */
7257 SYMBOL_LINKAGE_NAME (sym) = TYPE_TAG_NAME (type);
7258 }
7259 }
7260
7261 {
7262 /* NOTE: carlton/2003-11-10: C++ and Java class symbols shouldn't
7263 really ever be static objects: otherwise, if you try
7264 to, say, break of a class's method and you're in a file
7265 which doesn't mention that class, it won't work unless
7266 the check for all static symbols in lookup_symbol_aux
7267 saves you. See the OtherFileClass tests in
7268 gdb.c++/namespace.exp. */
7269
7270 struct pending **list_to_add;
7271
7272 list_to_add = (cu->list_in_scope == &file_symbols
7273 && (cu->language == language_cplus
7274 || cu->language == language_java)
7275 ? &global_symbols : cu->list_in_scope);
7276
7277 add_symbol_to_list (sym, list_to_add);
7278
7279 /* The semantics of C++ state that "struct foo { ... }" also
7280 defines a typedef for "foo". A Java class declaration also
7281 defines a typedef for the class. Synthesize a typedef symbol
7282 so that "ptype foo" works as expected. */
7283 if (cu->language == language_cplus
7284 || cu->language == language_java
7285 || cu->language == language_ada)
7286 {
7287 struct symbol *typedef_sym = (struct symbol *)
7288 obstack_alloc (&objfile->objfile_obstack,
7289 sizeof (struct symbol));
7290 *typedef_sym = *sym;
7291 SYMBOL_DOMAIN (typedef_sym) = VAR_DOMAIN;
7292 /* The symbol's name is already allocated along with
7293 this objfile, so we don't need to duplicate it for
7294 the type. */
7295 if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
7296 TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
7297 add_symbol_to_list (typedef_sym, list_to_add);
7298 }
7299 }
7300 break;
7301 case DW_TAG_typedef:
7302 if (processing_has_namespace_info
7303 && processing_current_prefix[0] != '\0')
7304 {
7305 SYMBOL_LINKAGE_NAME (sym) = typename_concat (&objfile->objfile_obstack,
7306 processing_current_prefix,
7307 name, cu);
7308 }
7309 SYMBOL_CLASS (sym) = LOC_TYPEDEF;
7310 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
7311 add_symbol_to_list (sym, cu->list_in_scope);
7312 break;
7313 case DW_TAG_base_type:
7314 case DW_TAG_subrange_type:
7315 SYMBOL_CLASS (sym) = LOC_TYPEDEF;
7316 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
7317 add_symbol_to_list (sym, cu->list_in_scope);
7318 break;
7319 case DW_TAG_enumerator:
7320 if (processing_has_namespace_info
7321 && processing_current_prefix[0] != '\0')
7322 {
7323 SYMBOL_LINKAGE_NAME (sym) = typename_concat (&objfile->objfile_obstack,
7324 processing_current_prefix,
7325 name, cu);
7326 }
7327 attr = dwarf2_attr (die, DW_AT_const_value, cu);
7328 if (attr)
7329 {
7330 dwarf2_const_value (attr, sym, cu);
7331 }
7332 {
7333 /* NOTE: carlton/2003-11-10: See comment above in the
7334 DW_TAG_class_type, etc. block. */
7335
7336 struct pending **list_to_add;
7337
7338 list_to_add = (cu->list_in_scope == &file_symbols
7339 && (cu->language == language_cplus
7340 || cu->language == language_java)
7341 ? &global_symbols : cu->list_in_scope);
7342
7343 add_symbol_to_list (sym, list_to_add);
7344 }
7345 break;
7346 case DW_TAG_namespace:
7347 SYMBOL_CLASS (sym) = LOC_TYPEDEF;
7348 add_symbol_to_list (sym, &global_symbols);
7349 break;
7350 default:
7351 /* Not a tag we recognize. Hopefully we aren't processing
7352 trash data, but since we must specifically ignore things
7353 we don't recognize, there is nothing else we should do at
7354 this point. */
7355 complaint (&symfile_complaints, _("unsupported tag: '%s'"),
7356 dwarf_tag_name (die->tag));
7357 break;
7358 }
7359 }
7360 return (sym);
7361 }
7362
7363 /* Copy constant value from an attribute to a symbol. */
7364
7365 static void
7366 dwarf2_const_value (struct attribute *attr, struct symbol *sym,
7367 struct dwarf2_cu *cu)
7368 {
7369 struct objfile *objfile = cu->objfile;
7370 struct comp_unit_head *cu_header = &cu->header;
7371 struct dwarf_block *blk;
7372
7373 switch (attr->form)
7374 {
7375 case DW_FORM_addr:
7376 if (TYPE_LENGTH (SYMBOL_TYPE (sym)) != cu_header->addr_size)
7377 dwarf2_const_value_length_mismatch_complaint (DEPRECATED_SYMBOL_NAME (sym),
7378 cu_header->addr_size,
7379 TYPE_LENGTH (SYMBOL_TYPE
7380 (sym)));
7381 SYMBOL_VALUE_BYTES (sym) =
7382 obstack_alloc (&objfile->objfile_obstack, cu_header->addr_size);
7383 /* NOTE: cagney/2003-05-09: In-lined store_address call with
7384 it's body - store_unsigned_integer. */
7385 store_unsigned_integer (SYMBOL_VALUE_BYTES (sym), cu_header->addr_size,
7386 DW_ADDR (attr));
7387 SYMBOL_CLASS (sym) = LOC_CONST_BYTES;
7388 break;
7389 case DW_FORM_block1:
7390 case DW_FORM_block2:
7391 case DW_FORM_block4:
7392 case DW_FORM_block:
7393 blk = DW_BLOCK (attr);
7394 if (TYPE_LENGTH (SYMBOL_TYPE (sym)) != blk->size)
7395 dwarf2_const_value_length_mismatch_complaint (DEPRECATED_SYMBOL_NAME (sym),
7396 blk->size,
7397 TYPE_LENGTH (SYMBOL_TYPE
7398 (sym)));
7399 SYMBOL_VALUE_BYTES (sym) =
7400 obstack_alloc (&objfile->objfile_obstack, blk->size);
7401 memcpy (SYMBOL_VALUE_BYTES (sym), blk->data, blk->size);
7402 SYMBOL_CLASS (sym) = LOC_CONST_BYTES;
7403 break;
7404
7405 /* The DW_AT_const_value attributes are supposed to carry the
7406 symbol's value "represented as it would be on the target
7407 architecture." By the time we get here, it's already been
7408 converted to host endianness, so we just need to sign- or
7409 zero-extend it as appropriate. */
7410 case DW_FORM_data1:
7411 dwarf2_const_value_data (attr, sym, 8);
7412 break;
7413 case DW_FORM_data2:
7414 dwarf2_const_value_data (attr, sym, 16);
7415 break;
7416 case DW_FORM_data4:
7417 dwarf2_const_value_data (attr, sym, 32);
7418 break;
7419 case DW_FORM_data8:
7420 dwarf2_const_value_data (attr, sym, 64);
7421 break;
7422
7423 case DW_FORM_sdata:
7424 SYMBOL_VALUE (sym) = DW_SND (attr);
7425 SYMBOL_CLASS (sym) = LOC_CONST;
7426 break;
7427
7428 case DW_FORM_udata:
7429 SYMBOL_VALUE (sym) = DW_UNSND (attr);
7430 SYMBOL_CLASS (sym) = LOC_CONST;
7431 break;
7432
7433 default:
7434 complaint (&symfile_complaints,
7435 _("unsupported const value attribute form: '%s'"),
7436 dwarf_form_name (attr->form));
7437 SYMBOL_VALUE (sym) = 0;
7438 SYMBOL_CLASS (sym) = LOC_CONST;
7439 break;
7440 }
7441 }
7442
7443
7444 /* Given an attr with a DW_FORM_dataN value in host byte order, sign-
7445 or zero-extend it as appropriate for the symbol's type. */
7446 static void
7447 dwarf2_const_value_data (struct attribute *attr,
7448 struct symbol *sym,
7449 int bits)
7450 {
7451 LONGEST l = DW_UNSND (attr);
7452
7453 if (bits < sizeof (l) * 8)
7454 {
7455 if (TYPE_UNSIGNED (SYMBOL_TYPE (sym)))
7456 l &= ((LONGEST) 1 << bits) - 1;
7457 else
7458 l = (l << (sizeof (l) * 8 - bits)) >> (sizeof (l) * 8 - bits);
7459 }
7460
7461 SYMBOL_VALUE (sym) = l;
7462 SYMBOL_CLASS (sym) = LOC_CONST;
7463 }
7464
7465
7466 /* Return the type of the die in question using its DW_AT_type attribute. */
7467
7468 static struct type *
7469 die_type (struct die_info *die, struct dwarf2_cu *cu)
7470 {
7471 struct type *type;
7472 struct attribute *type_attr;
7473 struct die_info *type_die;
7474
7475 type_attr = dwarf2_attr (die, DW_AT_type, cu);
7476 if (!type_attr)
7477 {
7478 /* A missing DW_AT_type represents a void type. */
7479 return builtin_type (current_gdbarch)->builtin_void;
7480 }
7481 else
7482 type_die = follow_die_ref (die, type_attr, cu);
7483
7484 type = tag_type_to_type (type_die, cu);
7485 if (!type)
7486 {
7487 dump_die (type_die);
7488 error (_("Dwarf Error: Problem turning type die at offset into gdb type [in module %s]"),
7489 cu->objfile->name);
7490 }
7491 return type;
7492 }
7493
7494 /* Return the containing type of the die in question using its
7495 DW_AT_containing_type attribute. */
7496
7497 static struct type *
7498 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
7499 {
7500 struct type *type = NULL;
7501 struct attribute *type_attr;
7502 struct die_info *type_die = NULL;
7503
7504 type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
7505 if (type_attr)
7506 {
7507 type_die = follow_die_ref (die, type_attr, cu);
7508 type = tag_type_to_type (type_die, cu);
7509 }
7510 if (!type)
7511 {
7512 if (type_die)
7513 dump_die (type_die);
7514 error (_("Dwarf Error: Problem turning containing type into gdb type [in module %s]"),
7515 cu->objfile->name);
7516 }
7517 return type;
7518 }
7519
7520 static struct type *
7521 tag_type_to_type (struct die_info *die, struct dwarf2_cu *cu)
7522 {
7523 if (die->type)
7524 {
7525 return die->type;
7526 }
7527 else
7528 {
7529 read_type_die (die, cu);
7530 if (!die->type)
7531 {
7532 dump_die (die);
7533 error (_("Dwarf Error: Cannot find type of die [in module %s]"),
7534 cu->objfile->name);
7535 }
7536 return die->type;
7537 }
7538 }
7539
7540 static void
7541 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
7542 {
7543 char *prefix = determine_prefix (die, cu);
7544 const char *old_prefix = processing_current_prefix;
7545 struct cleanup *back_to = make_cleanup (xfree, prefix);
7546 processing_current_prefix = prefix;
7547
7548 switch (die->tag)
7549 {
7550 case DW_TAG_class_type:
7551 case DW_TAG_structure_type:
7552 case DW_TAG_union_type:
7553 read_structure_type (die, cu);
7554 break;
7555 case DW_TAG_enumeration_type:
7556 read_enumeration_type (die, cu);
7557 break;
7558 case DW_TAG_subprogram:
7559 case DW_TAG_subroutine_type:
7560 read_subroutine_type (die, cu);
7561 break;
7562 case DW_TAG_array_type:
7563 read_array_type (die, cu);
7564 break;
7565 case DW_TAG_set_type:
7566 read_set_type (die, cu);
7567 break;
7568 case DW_TAG_pointer_type:
7569 read_tag_pointer_type (die, cu);
7570 break;
7571 case DW_TAG_ptr_to_member_type:
7572 read_tag_ptr_to_member_type (die, cu);
7573 break;
7574 case DW_TAG_reference_type:
7575 read_tag_reference_type (die, cu);
7576 break;
7577 case DW_TAG_const_type:
7578 read_tag_const_type (die, cu);
7579 break;
7580 case DW_TAG_volatile_type:
7581 read_tag_volatile_type (die, cu);
7582 break;
7583 case DW_TAG_string_type:
7584 read_tag_string_type (die, cu);
7585 break;
7586 case DW_TAG_typedef:
7587 read_typedef (die, cu);
7588 break;
7589 case DW_TAG_subrange_type:
7590 read_subrange_type (die, cu);
7591 break;
7592 case DW_TAG_base_type:
7593 read_base_type (die, cu);
7594 break;
7595 case DW_TAG_unspecified_type:
7596 read_unspecified_type (die, cu);
7597 break;
7598 default:
7599 complaint (&symfile_complaints, _("unexpected tag in read_type_die: '%s'"),
7600 dwarf_tag_name (die->tag));
7601 break;
7602 }
7603
7604 processing_current_prefix = old_prefix;
7605 do_cleanups (back_to);
7606 }
7607
7608 /* Return the name of the namespace/class that DIE is defined within,
7609 or "" if we can't tell. The caller should xfree the result. */
7610
7611 /* NOTE: carlton/2004-01-23: See read_func_scope (and the comment
7612 therein) for an example of how to use this function to deal with
7613 DW_AT_specification. */
7614
7615 static char *
7616 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
7617 {
7618 struct die_info *parent;
7619
7620 if (cu->language != language_cplus
7621 && cu->language != language_java)
7622 return NULL;
7623
7624 parent = die->parent;
7625
7626 if (parent == NULL)
7627 {
7628 return xstrdup ("");
7629 }
7630 else
7631 {
7632 switch (parent->tag) {
7633 case DW_TAG_namespace:
7634 {
7635 /* FIXME: carlton/2004-03-05: Should I follow extension dies
7636 before doing this check? */
7637 if (parent->type != NULL && TYPE_TAG_NAME (parent->type) != NULL)
7638 {
7639 return xstrdup (TYPE_TAG_NAME (parent->type));
7640 }
7641 else
7642 {
7643 int dummy;
7644 char *parent_prefix = determine_prefix (parent, cu);
7645 char *retval = typename_concat (NULL, parent_prefix,
7646 namespace_name (parent, &dummy,
7647 cu),
7648 cu);
7649 xfree (parent_prefix);
7650 return retval;
7651 }
7652 }
7653 break;
7654 case DW_TAG_class_type:
7655 case DW_TAG_structure_type:
7656 {
7657 if (parent->type != NULL && TYPE_TAG_NAME (parent->type) != NULL)
7658 {
7659 return xstrdup (TYPE_TAG_NAME (parent->type));
7660 }
7661 else
7662 {
7663 const char *old_prefix = processing_current_prefix;
7664 char *new_prefix = determine_prefix (parent, cu);
7665 char *retval;
7666
7667 processing_current_prefix = new_prefix;
7668 retval = determine_class_name (parent, cu);
7669 processing_current_prefix = old_prefix;
7670
7671 xfree (new_prefix);
7672 return retval;
7673 }
7674 }
7675 default:
7676 return determine_prefix (parent, cu);
7677 }
7678 }
7679 }
7680
7681 /* Return a newly-allocated string formed by concatenating PREFIX and
7682 SUFFIX with appropriate separator. If PREFIX or SUFFIX is NULL or empty, then
7683 simply copy the SUFFIX or PREFIX, respectively. If OBS is non-null,
7684 perform an obconcat, otherwise allocate storage for the result. The CU argument
7685 is used to determine the language and hence, the appropriate separator. */
7686
7687 #define MAX_SEP_LEN 2 /* sizeof ("::") */
7688
7689 static char *
7690 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
7691 struct dwarf2_cu *cu)
7692 {
7693 char *sep;
7694
7695 if (suffix == NULL || suffix[0] == '\0' || prefix == NULL || prefix[0] == '\0')
7696 sep = "";
7697 else if (cu->language == language_java)
7698 sep = ".";
7699 else
7700 sep = "::";
7701
7702 if (obs == NULL)
7703 {
7704 char *retval = xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1);
7705 retval[0] = '\0';
7706
7707 if (prefix)
7708 {
7709 strcpy (retval, prefix);
7710 strcat (retval, sep);
7711 }
7712 if (suffix)
7713 strcat (retval, suffix);
7714
7715 return retval;
7716 }
7717 else
7718 {
7719 /* We have an obstack. */
7720 return obconcat (obs, prefix, sep, suffix);
7721 }
7722 }
7723
7724 #if 0
7725 struct die_info *
7726 copy_die (struct die_info *old_die)
7727 {
7728 struct die_info *new_die;
7729 int i, num_attrs;
7730
7731 new_die = (struct die_info *) xmalloc (sizeof (struct die_info));
7732 memset (new_die, 0, sizeof (struct die_info));
7733
7734 new_die->tag = old_die->tag;
7735 new_die->has_children = old_die->has_children;
7736 new_die->abbrev = old_die->abbrev;
7737 new_die->offset = old_die->offset;
7738 new_die->type = NULL;
7739
7740 num_attrs = old_die->num_attrs;
7741 new_die->num_attrs = num_attrs;
7742 new_die->attrs = (struct attribute *)
7743 xmalloc (num_attrs * sizeof (struct attribute));
7744
7745 for (i = 0; i < old_die->num_attrs; ++i)
7746 {
7747 new_die->attrs[i].name = old_die->attrs[i].name;
7748 new_die->attrs[i].form = old_die->attrs[i].form;
7749 new_die->attrs[i].u.addr = old_die->attrs[i].u.addr;
7750 }
7751
7752 new_die->next = NULL;
7753 return new_die;
7754 }
7755 #endif
7756
7757 /* Return sibling of die, NULL if no sibling. */
7758
7759 static struct die_info *
7760 sibling_die (struct die_info *die)
7761 {
7762 return die->sibling;
7763 }
7764
7765 /* Get linkage name of a die, return NULL if not found. */
7766
7767 static char *
7768 dwarf2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
7769 {
7770 struct attribute *attr;
7771
7772 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
7773 if (attr && DW_STRING (attr))
7774 return DW_STRING (attr);
7775 attr = dwarf2_attr (die, DW_AT_name, cu);
7776 if (attr && DW_STRING (attr))
7777 return DW_STRING (attr);
7778 return NULL;
7779 }
7780
7781 /* Get name of a die, return NULL if not found. */
7782
7783 static char *
7784 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
7785 {
7786 struct attribute *attr;
7787
7788 attr = dwarf2_attr (die, DW_AT_name, cu);
7789 if (attr && DW_STRING (attr))
7790 return DW_STRING (attr);
7791 return NULL;
7792 }
7793
7794 /* Return the die that this die in an extension of, or NULL if there
7795 is none. */
7796
7797 static struct die_info *
7798 dwarf2_extension (struct die_info *die, struct dwarf2_cu *cu)
7799 {
7800 struct attribute *attr;
7801
7802 attr = dwarf2_attr (die, DW_AT_extension, cu);
7803 if (attr == NULL)
7804 return NULL;
7805
7806 return follow_die_ref (die, attr, cu);
7807 }
7808
7809 /* Convert a DIE tag into its string name. */
7810
7811 static char *
7812 dwarf_tag_name (unsigned tag)
7813 {
7814 switch (tag)
7815 {
7816 case DW_TAG_padding:
7817 return "DW_TAG_padding";
7818 case DW_TAG_array_type:
7819 return "DW_TAG_array_type";
7820 case DW_TAG_class_type:
7821 return "DW_TAG_class_type";
7822 case DW_TAG_entry_point:
7823 return "DW_TAG_entry_point";
7824 case DW_TAG_enumeration_type:
7825 return "DW_TAG_enumeration_type";
7826 case DW_TAG_formal_parameter:
7827 return "DW_TAG_formal_parameter";
7828 case DW_TAG_imported_declaration:
7829 return "DW_TAG_imported_declaration";
7830 case DW_TAG_label:
7831 return "DW_TAG_label";
7832 case DW_TAG_lexical_block:
7833 return "DW_TAG_lexical_block";
7834 case DW_TAG_member:
7835 return "DW_TAG_member";
7836 case DW_TAG_pointer_type:
7837 return "DW_TAG_pointer_type";
7838 case DW_TAG_reference_type:
7839 return "DW_TAG_reference_type";
7840 case DW_TAG_compile_unit:
7841 return "DW_TAG_compile_unit";
7842 case DW_TAG_string_type:
7843 return "DW_TAG_string_type";
7844 case DW_TAG_structure_type:
7845 return "DW_TAG_structure_type";
7846 case DW_TAG_subroutine_type:
7847 return "DW_TAG_subroutine_type";
7848 case DW_TAG_typedef:
7849 return "DW_TAG_typedef";
7850 case DW_TAG_union_type:
7851 return "DW_TAG_union_type";
7852 case DW_TAG_unspecified_parameters:
7853 return "DW_TAG_unspecified_parameters";
7854 case DW_TAG_variant:
7855 return "DW_TAG_variant";
7856 case DW_TAG_common_block:
7857 return "DW_TAG_common_block";
7858 case DW_TAG_common_inclusion:
7859 return "DW_TAG_common_inclusion";
7860 case DW_TAG_inheritance:
7861 return "DW_TAG_inheritance";
7862 case DW_TAG_inlined_subroutine:
7863 return "DW_TAG_inlined_subroutine";
7864 case DW_TAG_module:
7865 return "DW_TAG_module";
7866 case DW_TAG_ptr_to_member_type:
7867 return "DW_TAG_ptr_to_member_type";
7868 case DW_TAG_set_type:
7869 return "DW_TAG_set_type";
7870 case DW_TAG_subrange_type:
7871 return "DW_TAG_subrange_type";
7872 case DW_TAG_with_stmt:
7873 return "DW_TAG_with_stmt";
7874 case DW_TAG_access_declaration:
7875 return "DW_TAG_access_declaration";
7876 case DW_TAG_base_type:
7877 return "DW_TAG_base_type";
7878 case DW_TAG_catch_block:
7879 return "DW_TAG_catch_block";
7880 case DW_TAG_const_type:
7881 return "DW_TAG_const_type";
7882 case DW_TAG_constant:
7883 return "DW_TAG_constant";
7884 case DW_TAG_enumerator:
7885 return "DW_TAG_enumerator";
7886 case DW_TAG_file_type:
7887 return "DW_TAG_file_type";
7888 case DW_TAG_friend:
7889 return "DW_TAG_friend";
7890 case DW_TAG_namelist:
7891 return "DW_TAG_namelist";
7892 case DW_TAG_namelist_item:
7893 return "DW_TAG_namelist_item";
7894 case DW_TAG_packed_type:
7895 return "DW_TAG_packed_type";
7896 case DW_TAG_subprogram:
7897 return "DW_TAG_subprogram";
7898 case DW_TAG_template_type_param:
7899 return "DW_TAG_template_type_param";
7900 case DW_TAG_template_value_param:
7901 return "DW_TAG_template_value_param";
7902 case DW_TAG_thrown_type:
7903 return "DW_TAG_thrown_type";
7904 case DW_TAG_try_block:
7905 return "DW_TAG_try_block";
7906 case DW_TAG_variant_part:
7907 return "DW_TAG_variant_part";
7908 case DW_TAG_variable:
7909 return "DW_TAG_variable";
7910 case DW_TAG_volatile_type:
7911 return "DW_TAG_volatile_type";
7912 case DW_TAG_dwarf_procedure:
7913 return "DW_TAG_dwarf_procedure";
7914 case DW_TAG_restrict_type:
7915 return "DW_TAG_restrict_type";
7916 case DW_TAG_interface_type:
7917 return "DW_TAG_interface_type";
7918 case DW_TAG_namespace:
7919 return "DW_TAG_namespace";
7920 case DW_TAG_imported_module:
7921 return "DW_TAG_imported_module";
7922 case DW_TAG_unspecified_type:
7923 return "DW_TAG_unspecified_type";
7924 case DW_TAG_partial_unit:
7925 return "DW_TAG_partial_unit";
7926 case DW_TAG_imported_unit:
7927 return "DW_TAG_imported_unit";
7928 case DW_TAG_condition:
7929 return "DW_TAG_condition";
7930 case DW_TAG_shared_type:
7931 return "DW_TAG_shared_type";
7932 case DW_TAG_MIPS_loop:
7933 return "DW_TAG_MIPS_loop";
7934 case DW_TAG_HP_array_descriptor:
7935 return "DW_TAG_HP_array_descriptor";
7936 case DW_TAG_format_label:
7937 return "DW_TAG_format_label";
7938 case DW_TAG_function_template:
7939 return "DW_TAG_function_template";
7940 case DW_TAG_class_template:
7941 return "DW_TAG_class_template";
7942 case DW_TAG_GNU_BINCL:
7943 return "DW_TAG_GNU_BINCL";
7944 case DW_TAG_GNU_EINCL:
7945 return "DW_TAG_GNU_EINCL";
7946 case DW_TAG_upc_shared_type:
7947 return "DW_TAG_upc_shared_type";
7948 case DW_TAG_upc_strict_type:
7949 return "DW_TAG_upc_strict_type";
7950 case DW_TAG_upc_relaxed_type:
7951 return "DW_TAG_upc_relaxed_type";
7952 case DW_TAG_PGI_kanji_type:
7953 return "DW_TAG_PGI_kanji_type";
7954 case DW_TAG_PGI_interface_block:
7955 return "DW_TAG_PGI_interface_block";
7956 default:
7957 return "DW_TAG_<unknown>";
7958 }
7959 }
7960
7961 /* Convert a DWARF attribute code into its string name. */
7962
7963 static char *
7964 dwarf_attr_name (unsigned attr)
7965 {
7966 switch (attr)
7967 {
7968 case DW_AT_sibling:
7969 return "DW_AT_sibling";
7970 case DW_AT_location:
7971 return "DW_AT_location";
7972 case DW_AT_name:
7973 return "DW_AT_name";
7974 case DW_AT_ordering:
7975 return "DW_AT_ordering";
7976 case DW_AT_subscr_data:
7977 return "DW_AT_subscr_data";
7978 case DW_AT_byte_size:
7979 return "DW_AT_byte_size";
7980 case DW_AT_bit_offset:
7981 return "DW_AT_bit_offset";
7982 case DW_AT_bit_size:
7983 return "DW_AT_bit_size";
7984 case DW_AT_element_list:
7985 return "DW_AT_element_list";
7986 case DW_AT_stmt_list:
7987 return "DW_AT_stmt_list";
7988 case DW_AT_low_pc:
7989 return "DW_AT_low_pc";
7990 case DW_AT_high_pc:
7991 return "DW_AT_high_pc";
7992 case DW_AT_language:
7993 return "DW_AT_language";
7994 case DW_AT_member:
7995 return "DW_AT_member";
7996 case DW_AT_discr:
7997 return "DW_AT_discr";
7998 case DW_AT_discr_value:
7999 return "DW_AT_discr_value";
8000 case DW_AT_visibility:
8001 return "DW_AT_visibility";
8002 case DW_AT_import:
8003 return "DW_AT_import";
8004 case DW_AT_string_length:
8005 return "DW_AT_string_length";
8006 case DW_AT_common_reference:
8007 return "DW_AT_common_reference";
8008 case DW_AT_comp_dir:
8009 return "DW_AT_comp_dir";
8010 case DW_AT_const_value:
8011 return "DW_AT_const_value";
8012 case DW_AT_containing_type:
8013 return "DW_AT_containing_type";
8014 case DW_AT_default_value:
8015 return "DW_AT_default_value";
8016 case DW_AT_inline:
8017 return "DW_AT_inline";
8018 case DW_AT_is_optional:
8019 return "DW_AT_is_optional";
8020 case DW_AT_lower_bound:
8021 return "DW_AT_lower_bound";
8022 case DW_AT_producer:
8023 return "DW_AT_producer";
8024 case DW_AT_prototyped:
8025 return "DW_AT_prototyped";
8026 case DW_AT_return_addr:
8027 return "DW_AT_return_addr";
8028 case DW_AT_start_scope:
8029 return "DW_AT_start_scope";
8030 case DW_AT_stride_size:
8031 return "DW_AT_stride_size";
8032 case DW_AT_upper_bound:
8033 return "DW_AT_upper_bound";
8034 case DW_AT_abstract_origin:
8035 return "DW_AT_abstract_origin";
8036 case DW_AT_accessibility:
8037 return "DW_AT_accessibility";
8038 case DW_AT_address_class:
8039 return "DW_AT_address_class";
8040 case DW_AT_artificial:
8041 return "DW_AT_artificial";
8042 case DW_AT_base_types:
8043 return "DW_AT_base_types";
8044 case DW_AT_calling_convention:
8045 return "DW_AT_calling_convention";
8046 case DW_AT_count:
8047 return "DW_AT_count";
8048 case DW_AT_data_member_location:
8049 return "DW_AT_data_member_location";
8050 case DW_AT_decl_column:
8051 return "DW_AT_decl_column";
8052 case DW_AT_decl_file:
8053 return "DW_AT_decl_file";
8054 case DW_AT_decl_line:
8055 return "DW_AT_decl_line";
8056 case DW_AT_declaration:
8057 return "DW_AT_declaration";
8058 case DW_AT_discr_list:
8059 return "DW_AT_discr_list";
8060 case DW_AT_encoding:
8061 return "DW_AT_encoding";
8062 case DW_AT_external:
8063 return "DW_AT_external";
8064 case DW_AT_frame_base:
8065 return "DW_AT_frame_base";
8066 case DW_AT_friend:
8067 return "DW_AT_friend";
8068 case DW_AT_identifier_case:
8069 return "DW_AT_identifier_case";
8070 case DW_AT_macro_info:
8071 return "DW_AT_macro_info";
8072 case DW_AT_namelist_items:
8073 return "DW_AT_namelist_items";
8074 case DW_AT_priority:
8075 return "DW_AT_priority";
8076 case DW_AT_segment:
8077 return "DW_AT_segment";
8078 case DW_AT_specification:
8079 return "DW_AT_specification";
8080 case DW_AT_static_link:
8081 return "DW_AT_static_link";
8082 case DW_AT_type:
8083 return "DW_AT_type";
8084 case DW_AT_use_location:
8085 return "DW_AT_use_location";
8086 case DW_AT_variable_parameter:
8087 return "DW_AT_variable_parameter";
8088 case DW_AT_virtuality:
8089 return "DW_AT_virtuality";
8090 case DW_AT_vtable_elem_location:
8091 return "DW_AT_vtable_elem_location";
8092 /* DWARF 3 values. */
8093 case DW_AT_allocated:
8094 return "DW_AT_allocated";
8095 case DW_AT_associated:
8096 return "DW_AT_associated";
8097 case DW_AT_data_location:
8098 return "DW_AT_data_location";
8099 case DW_AT_stride:
8100 return "DW_AT_stride";
8101 case DW_AT_entry_pc:
8102 return "DW_AT_entry_pc";
8103 case DW_AT_use_UTF8:
8104 return "DW_AT_use_UTF8";
8105 case DW_AT_extension:
8106 return "DW_AT_extension";
8107 case DW_AT_ranges:
8108 return "DW_AT_ranges";
8109 case DW_AT_trampoline:
8110 return "DW_AT_trampoline";
8111 case DW_AT_call_column:
8112 return "DW_AT_call_column";
8113 case DW_AT_call_file:
8114 return "DW_AT_call_file";
8115 case DW_AT_call_line:
8116 return "DW_AT_call_line";
8117 case DW_AT_description:
8118 return "DW_AT_description";
8119 case DW_AT_binary_scale:
8120 return "DW_AT_binary_scale";
8121 case DW_AT_decimal_scale:
8122 return "DW_AT_decimal_scale";
8123 case DW_AT_small:
8124 return "DW_AT_small";
8125 case DW_AT_decimal_sign:
8126 return "DW_AT_decimal_sign";
8127 case DW_AT_digit_count:
8128 return "DW_AT_digit_count";
8129 case DW_AT_picture_string:
8130 return "DW_AT_picture_string";
8131 case DW_AT_mutable:
8132 return "DW_AT_mutable";
8133 case DW_AT_threads_scaled:
8134 return "DW_AT_threads_scaled";
8135 case DW_AT_explicit:
8136 return "DW_AT_explicit";
8137 case DW_AT_object_pointer:
8138 return "DW_AT_object_pointer";
8139 case DW_AT_endianity:
8140 return "DW_AT_endianity";
8141 case DW_AT_elemental:
8142 return "DW_AT_elemental";
8143 case DW_AT_pure:
8144 return "DW_AT_pure";
8145 case DW_AT_recursive:
8146 return "DW_AT_recursive";
8147 #ifdef MIPS
8148 /* SGI/MIPS extensions. */
8149 case DW_AT_MIPS_fde:
8150 return "DW_AT_MIPS_fde";
8151 case DW_AT_MIPS_loop_begin:
8152 return "DW_AT_MIPS_loop_begin";
8153 case DW_AT_MIPS_tail_loop_begin:
8154 return "DW_AT_MIPS_tail_loop_begin";
8155 case DW_AT_MIPS_epilog_begin:
8156 return "DW_AT_MIPS_epilog_begin";
8157 case DW_AT_MIPS_loop_unroll_factor:
8158 return "DW_AT_MIPS_loop_unroll_factor";
8159 case DW_AT_MIPS_software_pipeline_depth:
8160 return "DW_AT_MIPS_software_pipeline_depth";
8161 case DW_AT_MIPS_linkage_name:
8162 return "DW_AT_MIPS_linkage_name";
8163 case DW_AT_MIPS_stride:
8164 return "DW_AT_MIPS_stride";
8165 case DW_AT_MIPS_abstract_name:
8166 return "DW_AT_MIPS_abstract_name";
8167 case DW_AT_MIPS_clone_origin:
8168 return "DW_AT_MIPS_clone_origin";
8169 case DW_AT_MIPS_has_inlines:
8170 return "DW_AT_MIPS_has_inlines";
8171 #endif
8172 /* HP extensions. */
8173 case DW_AT_HP_block_index:
8174 return "DW_AT_HP_block_index";
8175 case DW_AT_HP_unmodifiable:
8176 return "DW_AT_HP_unmodifiable";
8177 case DW_AT_HP_actuals_stmt_list:
8178 return "DW_AT_HP_actuals_stmt_list";
8179 case DW_AT_HP_proc_per_section:
8180 return "DW_AT_HP_proc_per_section";
8181 case DW_AT_HP_raw_data_ptr:
8182 return "DW_AT_HP_raw_data_ptr";
8183 case DW_AT_HP_pass_by_reference:
8184 return "DW_AT_HP_pass_by_reference";
8185 case DW_AT_HP_opt_level:
8186 return "DW_AT_HP_opt_level";
8187 case DW_AT_HP_prof_version_id:
8188 return "DW_AT_HP_prof_version_id";
8189 case DW_AT_HP_opt_flags:
8190 return "DW_AT_HP_opt_flags";
8191 case DW_AT_HP_cold_region_low_pc:
8192 return "DW_AT_HP_cold_region_low_pc";
8193 case DW_AT_HP_cold_region_high_pc:
8194 return "DW_AT_HP_cold_region_high_pc";
8195 case DW_AT_HP_all_variables_modifiable:
8196 return "DW_AT_HP_all_variables_modifiable";
8197 case DW_AT_HP_linkage_name:
8198 return "DW_AT_HP_linkage_name";
8199 case DW_AT_HP_prof_flags:
8200 return "DW_AT_HP_prof_flags";
8201 /* GNU extensions. */
8202 case DW_AT_sf_names:
8203 return "DW_AT_sf_names";
8204 case DW_AT_src_info:
8205 return "DW_AT_src_info";
8206 case DW_AT_mac_info:
8207 return "DW_AT_mac_info";
8208 case DW_AT_src_coords:
8209 return "DW_AT_src_coords";
8210 case DW_AT_body_begin:
8211 return "DW_AT_body_begin";
8212 case DW_AT_body_end:
8213 return "DW_AT_body_end";
8214 case DW_AT_GNU_vector:
8215 return "DW_AT_GNU_vector";
8216 /* VMS extensions. */
8217 case DW_AT_VMS_rtnbeg_pd_address:
8218 return "DW_AT_VMS_rtnbeg_pd_address";
8219 /* UPC extension. */
8220 case DW_AT_upc_threads_scaled:
8221 return "DW_AT_upc_threads_scaled";
8222 /* PGI (STMicroelectronics) extensions. */
8223 case DW_AT_PGI_lbase:
8224 return "DW_AT_PGI_lbase";
8225 case DW_AT_PGI_soffset:
8226 return "DW_AT_PGI_soffset";
8227 case DW_AT_PGI_lstride:
8228 return "DW_AT_PGI_lstride";
8229 default:
8230 return "DW_AT_<unknown>";
8231 }
8232 }
8233
8234 /* Convert a DWARF value form code into its string name. */
8235
8236 static char *
8237 dwarf_form_name (unsigned form)
8238 {
8239 switch (form)
8240 {
8241 case DW_FORM_addr:
8242 return "DW_FORM_addr";
8243 case DW_FORM_block2:
8244 return "DW_FORM_block2";
8245 case DW_FORM_block4:
8246 return "DW_FORM_block4";
8247 case DW_FORM_data2:
8248 return "DW_FORM_data2";
8249 case DW_FORM_data4:
8250 return "DW_FORM_data4";
8251 case DW_FORM_data8:
8252 return "DW_FORM_data8";
8253 case DW_FORM_string:
8254 return "DW_FORM_string";
8255 case DW_FORM_block:
8256 return "DW_FORM_block";
8257 case DW_FORM_block1:
8258 return "DW_FORM_block1";
8259 case DW_FORM_data1:
8260 return "DW_FORM_data1";
8261 case DW_FORM_flag:
8262 return "DW_FORM_flag";
8263 case DW_FORM_sdata:
8264 return "DW_FORM_sdata";
8265 case DW_FORM_strp:
8266 return "DW_FORM_strp";
8267 case DW_FORM_udata:
8268 return "DW_FORM_udata";
8269 case DW_FORM_ref_addr:
8270 return "DW_FORM_ref_addr";
8271 case DW_FORM_ref1:
8272 return "DW_FORM_ref1";
8273 case DW_FORM_ref2:
8274 return "DW_FORM_ref2";
8275 case DW_FORM_ref4:
8276 return "DW_FORM_ref4";
8277 case DW_FORM_ref8:
8278 return "DW_FORM_ref8";
8279 case DW_FORM_ref_udata:
8280 return "DW_FORM_ref_udata";
8281 case DW_FORM_indirect:
8282 return "DW_FORM_indirect";
8283 default:
8284 return "DW_FORM_<unknown>";
8285 }
8286 }
8287
8288 /* Convert a DWARF stack opcode into its string name. */
8289
8290 static char *
8291 dwarf_stack_op_name (unsigned op)
8292 {
8293 switch (op)
8294 {
8295 case DW_OP_addr:
8296 return "DW_OP_addr";
8297 case DW_OP_deref:
8298 return "DW_OP_deref";
8299 case DW_OP_const1u:
8300 return "DW_OP_const1u";
8301 case DW_OP_const1s:
8302 return "DW_OP_const1s";
8303 case DW_OP_const2u:
8304 return "DW_OP_const2u";
8305 case DW_OP_const2s:
8306 return "DW_OP_const2s";
8307 case DW_OP_const4u:
8308 return "DW_OP_const4u";
8309 case DW_OP_const4s:
8310 return "DW_OP_const4s";
8311 case DW_OP_const8u:
8312 return "DW_OP_const8u";
8313 case DW_OP_const8s:
8314 return "DW_OP_const8s";
8315 case DW_OP_constu:
8316 return "DW_OP_constu";
8317 case DW_OP_consts:
8318 return "DW_OP_consts";
8319 case DW_OP_dup:
8320 return "DW_OP_dup";
8321 case DW_OP_drop:
8322 return "DW_OP_drop";
8323 case DW_OP_over:
8324 return "DW_OP_over";
8325 case DW_OP_pick:
8326 return "DW_OP_pick";
8327 case DW_OP_swap:
8328 return "DW_OP_swap";
8329 case DW_OP_rot:
8330 return "DW_OP_rot";
8331 case DW_OP_xderef:
8332 return "DW_OP_xderef";
8333 case DW_OP_abs:
8334 return "DW_OP_abs";
8335 case DW_OP_and:
8336 return "DW_OP_and";
8337 case DW_OP_div:
8338 return "DW_OP_div";
8339 case DW_OP_minus:
8340 return "DW_OP_minus";
8341 case DW_OP_mod:
8342 return "DW_OP_mod";
8343 case DW_OP_mul:
8344 return "DW_OP_mul";
8345 case DW_OP_neg:
8346 return "DW_OP_neg";
8347 case DW_OP_not:
8348 return "DW_OP_not";
8349 case DW_OP_or:
8350 return "DW_OP_or";
8351 case DW_OP_plus:
8352 return "DW_OP_plus";
8353 case DW_OP_plus_uconst:
8354 return "DW_OP_plus_uconst";
8355 case DW_OP_shl:
8356 return "DW_OP_shl";
8357 case DW_OP_shr:
8358 return "DW_OP_shr";
8359 case DW_OP_shra:
8360 return "DW_OP_shra";
8361 case DW_OP_xor:
8362 return "DW_OP_xor";
8363 case DW_OP_bra:
8364 return "DW_OP_bra";
8365 case DW_OP_eq:
8366 return "DW_OP_eq";
8367 case DW_OP_ge:
8368 return "DW_OP_ge";
8369 case DW_OP_gt:
8370 return "DW_OP_gt";
8371 case DW_OP_le:
8372 return "DW_OP_le";
8373 case DW_OP_lt:
8374 return "DW_OP_lt";
8375 case DW_OP_ne:
8376 return "DW_OP_ne";
8377 case DW_OP_skip:
8378 return "DW_OP_skip";
8379 case DW_OP_lit0:
8380 return "DW_OP_lit0";
8381 case DW_OP_lit1:
8382 return "DW_OP_lit1";
8383 case DW_OP_lit2:
8384 return "DW_OP_lit2";
8385 case DW_OP_lit3:
8386 return "DW_OP_lit3";
8387 case DW_OP_lit4:
8388 return "DW_OP_lit4";
8389 case DW_OP_lit5:
8390 return "DW_OP_lit5";
8391 case DW_OP_lit6:
8392 return "DW_OP_lit6";
8393 case DW_OP_lit7:
8394 return "DW_OP_lit7";
8395 case DW_OP_lit8:
8396 return "DW_OP_lit8";
8397 case DW_OP_lit9:
8398 return "DW_OP_lit9";
8399 case DW_OP_lit10:
8400 return "DW_OP_lit10";
8401 case DW_OP_lit11:
8402 return "DW_OP_lit11";
8403 case DW_OP_lit12:
8404 return "DW_OP_lit12";
8405 case DW_OP_lit13:
8406 return "DW_OP_lit13";
8407 case DW_OP_lit14:
8408 return "DW_OP_lit14";
8409 case DW_OP_lit15:
8410 return "DW_OP_lit15";
8411 case DW_OP_lit16:
8412 return "DW_OP_lit16";
8413 case DW_OP_lit17:
8414 return "DW_OP_lit17";
8415 case DW_OP_lit18:
8416 return "DW_OP_lit18";
8417 case DW_OP_lit19:
8418 return "DW_OP_lit19";
8419 case DW_OP_lit20:
8420 return "DW_OP_lit20";
8421 case DW_OP_lit21:
8422 return "DW_OP_lit21";
8423 case DW_OP_lit22:
8424 return "DW_OP_lit22";
8425 case DW_OP_lit23:
8426 return "DW_OP_lit23";
8427 case DW_OP_lit24:
8428 return "DW_OP_lit24";
8429 case DW_OP_lit25:
8430 return "DW_OP_lit25";
8431 case DW_OP_lit26:
8432 return "DW_OP_lit26";
8433 case DW_OP_lit27:
8434 return "DW_OP_lit27";
8435 case DW_OP_lit28:
8436 return "DW_OP_lit28";
8437 case DW_OP_lit29:
8438 return "DW_OP_lit29";
8439 case DW_OP_lit30:
8440 return "DW_OP_lit30";
8441 case DW_OP_lit31:
8442 return "DW_OP_lit31";
8443 case DW_OP_reg0:
8444 return "DW_OP_reg0";
8445 case DW_OP_reg1:
8446 return "DW_OP_reg1";
8447 case DW_OP_reg2:
8448 return "DW_OP_reg2";
8449 case DW_OP_reg3:
8450 return "DW_OP_reg3";
8451 case DW_OP_reg4:
8452 return "DW_OP_reg4";
8453 case DW_OP_reg5:
8454 return "DW_OP_reg5";
8455 case DW_OP_reg6:
8456 return "DW_OP_reg6";
8457 case DW_OP_reg7:
8458 return "DW_OP_reg7";
8459 case DW_OP_reg8:
8460 return "DW_OP_reg8";
8461 case DW_OP_reg9:
8462 return "DW_OP_reg9";
8463 case DW_OP_reg10:
8464 return "DW_OP_reg10";
8465 case DW_OP_reg11:
8466 return "DW_OP_reg11";
8467 case DW_OP_reg12:
8468 return "DW_OP_reg12";
8469 case DW_OP_reg13:
8470 return "DW_OP_reg13";
8471 case DW_OP_reg14:
8472 return "DW_OP_reg14";
8473 case DW_OP_reg15:
8474 return "DW_OP_reg15";
8475 case DW_OP_reg16:
8476 return "DW_OP_reg16";
8477 case DW_OP_reg17:
8478 return "DW_OP_reg17";
8479 case DW_OP_reg18:
8480 return "DW_OP_reg18";
8481 case DW_OP_reg19:
8482 return "DW_OP_reg19";
8483 case DW_OP_reg20:
8484 return "DW_OP_reg20";
8485 case DW_OP_reg21:
8486 return "DW_OP_reg21";
8487 case DW_OP_reg22:
8488 return "DW_OP_reg22";
8489 case DW_OP_reg23:
8490 return "DW_OP_reg23";
8491 case DW_OP_reg24:
8492 return "DW_OP_reg24";
8493 case DW_OP_reg25:
8494 return "DW_OP_reg25";
8495 case DW_OP_reg26:
8496 return "DW_OP_reg26";
8497 case DW_OP_reg27:
8498 return "DW_OP_reg27";
8499 case DW_OP_reg28:
8500 return "DW_OP_reg28";
8501 case DW_OP_reg29:
8502 return "DW_OP_reg29";
8503 case DW_OP_reg30:
8504 return "DW_OP_reg30";
8505 case DW_OP_reg31:
8506 return "DW_OP_reg31";
8507 case DW_OP_breg0:
8508 return "DW_OP_breg0";
8509 case DW_OP_breg1:
8510 return "DW_OP_breg1";
8511 case DW_OP_breg2:
8512 return "DW_OP_breg2";
8513 case DW_OP_breg3:
8514 return "DW_OP_breg3";
8515 case DW_OP_breg4:
8516 return "DW_OP_breg4";
8517 case DW_OP_breg5:
8518 return "DW_OP_breg5";
8519 case DW_OP_breg6:
8520 return "DW_OP_breg6";
8521 case DW_OP_breg7:
8522 return "DW_OP_breg7";
8523 case DW_OP_breg8:
8524 return "DW_OP_breg8";
8525 case DW_OP_breg9:
8526 return "DW_OP_breg9";
8527 case DW_OP_breg10:
8528 return "DW_OP_breg10";
8529 case DW_OP_breg11:
8530 return "DW_OP_breg11";
8531 case DW_OP_breg12:
8532 return "DW_OP_breg12";
8533 case DW_OP_breg13:
8534 return "DW_OP_breg13";
8535 case DW_OP_breg14:
8536 return "DW_OP_breg14";
8537 case DW_OP_breg15:
8538 return "DW_OP_breg15";
8539 case DW_OP_breg16:
8540 return "DW_OP_breg16";
8541 case DW_OP_breg17:
8542 return "DW_OP_breg17";
8543 case DW_OP_breg18:
8544 return "DW_OP_breg18";
8545 case DW_OP_breg19:
8546 return "DW_OP_breg19";
8547 case DW_OP_breg20:
8548 return "DW_OP_breg20";
8549 case DW_OP_breg21:
8550 return "DW_OP_breg21";
8551 case DW_OP_breg22:
8552 return "DW_OP_breg22";
8553 case DW_OP_breg23:
8554 return "DW_OP_breg23";
8555 case DW_OP_breg24:
8556 return "DW_OP_breg24";
8557 case DW_OP_breg25:
8558 return "DW_OP_breg25";
8559 case DW_OP_breg26:
8560 return "DW_OP_breg26";
8561 case DW_OP_breg27:
8562 return "DW_OP_breg27";
8563 case DW_OP_breg28:
8564 return "DW_OP_breg28";
8565 case DW_OP_breg29:
8566 return "DW_OP_breg29";
8567 case DW_OP_breg30:
8568 return "DW_OP_breg30";
8569 case DW_OP_breg31:
8570 return "DW_OP_breg31";
8571 case DW_OP_regx:
8572 return "DW_OP_regx";
8573 case DW_OP_fbreg:
8574 return "DW_OP_fbreg";
8575 case DW_OP_bregx:
8576 return "DW_OP_bregx";
8577 case DW_OP_piece:
8578 return "DW_OP_piece";
8579 case DW_OP_deref_size:
8580 return "DW_OP_deref_size";
8581 case DW_OP_xderef_size:
8582 return "DW_OP_xderef_size";
8583 case DW_OP_nop:
8584 return "DW_OP_nop";
8585 /* DWARF 3 extensions. */
8586 case DW_OP_push_object_address:
8587 return "DW_OP_push_object_address";
8588 case DW_OP_call2:
8589 return "DW_OP_call2";
8590 case DW_OP_call4:
8591 return "DW_OP_call4";
8592 case DW_OP_call_ref:
8593 return "DW_OP_call_ref";
8594 /* GNU extensions. */
8595 case DW_OP_form_tls_address:
8596 return "DW_OP_form_tls_address";
8597 case DW_OP_call_frame_cfa:
8598 return "DW_OP_call_frame_cfa";
8599 case DW_OP_bit_piece:
8600 return "DW_OP_bit_piece";
8601 case DW_OP_GNU_push_tls_address:
8602 return "DW_OP_GNU_push_tls_address";
8603 case DW_OP_GNU_uninit:
8604 return "DW_OP_GNU_uninit";
8605 /* HP extensions. */
8606 case DW_OP_HP_is_value:
8607 return "DW_OP_HP_is_value";
8608 case DW_OP_HP_fltconst4:
8609 return "DW_OP_HP_fltconst4";
8610 case DW_OP_HP_fltconst8:
8611 return "DW_OP_HP_fltconst8";
8612 case DW_OP_HP_mod_range:
8613 return "DW_OP_HP_mod_range";
8614 case DW_OP_HP_unmod_range:
8615 return "DW_OP_HP_unmod_range";
8616 case DW_OP_HP_tls:
8617 return "DW_OP_HP_tls";
8618 default:
8619 return "OP_<unknown>";
8620 }
8621 }
8622
8623 static char *
8624 dwarf_bool_name (unsigned mybool)
8625 {
8626 if (mybool)
8627 return "TRUE";
8628 else
8629 return "FALSE";
8630 }
8631
8632 /* Convert a DWARF type code into its string name. */
8633
8634 static char *
8635 dwarf_type_encoding_name (unsigned enc)
8636 {
8637 switch (enc)
8638 {
8639 case DW_ATE_void:
8640 return "DW_ATE_void";
8641 case DW_ATE_address:
8642 return "DW_ATE_address";
8643 case DW_ATE_boolean:
8644 return "DW_ATE_boolean";
8645 case DW_ATE_complex_float:
8646 return "DW_ATE_complex_float";
8647 case DW_ATE_float:
8648 return "DW_ATE_float";
8649 case DW_ATE_signed:
8650 return "DW_ATE_signed";
8651 case DW_ATE_signed_char:
8652 return "DW_ATE_signed_char";
8653 case DW_ATE_unsigned:
8654 return "DW_ATE_unsigned";
8655 case DW_ATE_unsigned_char:
8656 return "DW_ATE_unsigned_char";
8657 /* DWARF 3. */
8658 case DW_ATE_imaginary_float:
8659 return "DW_ATE_imaginary_float";
8660 case DW_ATE_packed_decimal:
8661 return "DW_ATE_packed_decimal";
8662 case DW_ATE_numeric_string:
8663 return "DW_ATE_numeric_string";
8664 case DW_ATE_edited:
8665 return "DW_ATE_edited";
8666 case DW_ATE_signed_fixed:
8667 return "DW_ATE_signed_fixed";
8668 case DW_ATE_unsigned_fixed:
8669 return "DW_ATE_unsigned_fixed";
8670 case DW_ATE_decimal_float:
8671 return "DW_ATE_decimal_float";
8672 /* HP extensions. */
8673 case DW_ATE_HP_float80:
8674 return "DW_ATE_HP_float80";
8675 case DW_ATE_HP_complex_float80:
8676 return "DW_ATE_HP_complex_float80";
8677 case DW_ATE_HP_float128:
8678 return "DW_ATE_HP_float128";
8679 case DW_ATE_HP_complex_float128:
8680 return "DW_ATE_HP_complex_float128";
8681 case DW_ATE_HP_floathpintel:
8682 return "DW_ATE_HP_floathpintel";
8683 case DW_ATE_HP_imaginary_float80:
8684 return "DW_ATE_HP_imaginary_float80";
8685 case DW_ATE_HP_imaginary_float128:
8686 return "DW_ATE_HP_imaginary_float128";
8687 default:
8688 return "DW_ATE_<unknown>";
8689 }
8690 }
8691
8692 /* Convert a DWARF call frame info operation to its string name. */
8693
8694 #if 0
8695 static char *
8696 dwarf_cfi_name (unsigned cfi_opc)
8697 {
8698 switch (cfi_opc)
8699 {
8700 case DW_CFA_advance_loc:
8701 return "DW_CFA_advance_loc";
8702 case DW_CFA_offset:
8703 return "DW_CFA_offset";
8704 case DW_CFA_restore:
8705 return "DW_CFA_restore";
8706 case DW_CFA_nop:
8707 return "DW_CFA_nop";
8708 case DW_CFA_set_loc:
8709 return "DW_CFA_set_loc";
8710 case DW_CFA_advance_loc1:
8711 return "DW_CFA_advance_loc1";
8712 case DW_CFA_advance_loc2:
8713 return "DW_CFA_advance_loc2";
8714 case DW_CFA_advance_loc4:
8715 return "DW_CFA_advance_loc4";
8716 case DW_CFA_offset_extended:
8717 return "DW_CFA_offset_extended";
8718 case DW_CFA_restore_extended:
8719 return "DW_CFA_restore_extended";
8720 case DW_CFA_undefined:
8721 return "DW_CFA_undefined";
8722 case DW_CFA_same_value:
8723 return "DW_CFA_same_value";
8724 case DW_CFA_register:
8725 return "DW_CFA_register";
8726 case DW_CFA_remember_state:
8727 return "DW_CFA_remember_state";
8728 case DW_CFA_restore_state:
8729 return "DW_CFA_restore_state";
8730 case DW_CFA_def_cfa:
8731 return "DW_CFA_def_cfa";
8732 case DW_CFA_def_cfa_register:
8733 return "DW_CFA_def_cfa_register";
8734 case DW_CFA_def_cfa_offset:
8735 return "DW_CFA_def_cfa_offset";
8736 /* DWARF 3. */
8737 case DW_CFA_def_cfa_expression:
8738 return "DW_CFA_def_cfa_expression";
8739 case DW_CFA_expression:
8740 return "DW_CFA_expression";
8741 case DW_CFA_offset_extended_sf:
8742 return "DW_CFA_offset_extended_sf";
8743 case DW_CFA_def_cfa_sf:
8744 return "DW_CFA_def_cfa_sf";
8745 case DW_CFA_def_cfa_offset_sf:
8746 return "DW_CFA_def_cfa_offset_sf";
8747 case DW_CFA_val_offset:
8748 return "DW_CFA_val_offset";
8749 case DW_CFA_val_offset_sf:
8750 return "DW_CFA_val_offset_sf";
8751 case DW_CFA_val_expression:
8752 return "DW_CFA_val_expression";
8753 /* SGI/MIPS specific. */
8754 case DW_CFA_MIPS_advance_loc8:
8755 return "DW_CFA_MIPS_advance_loc8";
8756 /* GNU extensions. */
8757 case DW_CFA_GNU_window_save:
8758 return "DW_CFA_GNU_window_save";
8759 case DW_CFA_GNU_args_size:
8760 return "DW_CFA_GNU_args_size";
8761 case DW_CFA_GNU_negative_offset_extended:
8762 return "DW_CFA_GNU_negative_offset_extended";
8763 default:
8764 return "DW_CFA_<unknown>";
8765 }
8766 }
8767 #endif
8768
8769 static void
8770 dump_die (struct die_info *die)
8771 {
8772 unsigned int i;
8773
8774 fprintf_unfiltered (gdb_stderr, "Die: %s (abbrev = %d, offset = %d)\n",
8775 dwarf_tag_name (die->tag), die->abbrev, die->offset);
8776 fprintf_unfiltered (gdb_stderr, "\thas children: %s\n",
8777 dwarf_bool_name (die->child != NULL));
8778
8779 fprintf_unfiltered (gdb_stderr, "\tattributes:\n");
8780 for (i = 0; i < die->num_attrs; ++i)
8781 {
8782 fprintf_unfiltered (gdb_stderr, "\t\t%s (%s) ",
8783 dwarf_attr_name (die->attrs[i].name),
8784 dwarf_form_name (die->attrs[i].form));
8785 switch (die->attrs[i].form)
8786 {
8787 case DW_FORM_ref_addr:
8788 case DW_FORM_addr:
8789 fprintf_unfiltered (gdb_stderr, "address: ");
8790 deprecated_print_address_numeric (DW_ADDR (&die->attrs[i]), 1, gdb_stderr);
8791 break;
8792 case DW_FORM_block2:
8793 case DW_FORM_block4:
8794 case DW_FORM_block:
8795 case DW_FORM_block1:
8796 fprintf_unfiltered (gdb_stderr, "block: size %d", DW_BLOCK (&die->attrs[i])->size);
8797 break;
8798 case DW_FORM_ref1:
8799 case DW_FORM_ref2:
8800 case DW_FORM_ref4:
8801 fprintf_unfiltered (gdb_stderr, "constant ref: %ld (adjusted)",
8802 (long) (DW_ADDR (&die->attrs[i])));
8803 break;
8804 case DW_FORM_data1:
8805 case DW_FORM_data2:
8806 case DW_FORM_data4:
8807 case DW_FORM_data8:
8808 case DW_FORM_udata:
8809 case DW_FORM_sdata:
8810 fprintf_unfiltered (gdb_stderr, "constant: %ld", DW_UNSND (&die->attrs[i]));
8811 break;
8812 case DW_FORM_string:
8813 case DW_FORM_strp:
8814 fprintf_unfiltered (gdb_stderr, "string: \"%s\"",
8815 DW_STRING (&die->attrs[i])
8816 ? DW_STRING (&die->attrs[i]) : "");
8817 break;
8818 case DW_FORM_flag:
8819 if (DW_UNSND (&die->attrs[i]))
8820 fprintf_unfiltered (gdb_stderr, "flag: TRUE");
8821 else
8822 fprintf_unfiltered (gdb_stderr, "flag: FALSE");
8823 break;
8824 case DW_FORM_indirect:
8825 /* the reader will have reduced the indirect form to
8826 the "base form" so this form should not occur */
8827 fprintf_unfiltered (gdb_stderr, "unexpected attribute form: DW_FORM_indirect");
8828 break;
8829 default:
8830 fprintf_unfiltered (gdb_stderr, "unsupported attribute form: %d.",
8831 die->attrs[i].form);
8832 }
8833 fprintf_unfiltered (gdb_stderr, "\n");
8834 }
8835 }
8836
8837 static void
8838 dump_die_list (struct die_info *die)
8839 {
8840 while (die)
8841 {
8842 dump_die (die);
8843 if (die->child != NULL)
8844 dump_die_list (die->child);
8845 if (die->sibling != NULL)
8846 dump_die_list (die->sibling);
8847 }
8848 }
8849
8850 static void
8851 store_in_ref_table (unsigned int offset, struct die_info *die,
8852 struct dwarf2_cu *cu)
8853 {
8854 int h;
8855 struct die_info *old;
8856
8857 h = (offset % REF_HASH_SIZE);
8858 old = cu->die_ref_table[h];
8859 die->next_ref = old;
8860 cu->die_ref_table[h] = die;
8861 }
8862
8863 static unsigned int
8864 dwarf2_get_ref_die_offset (struct attribute *attr, struct dwarf2_cu *cu)
8865 {
8866 unsigned int result = 0;
8867
8868 switch (attr->form)
8869 {
8870 case DW_FORM_ref_addr:
8871 case DW_FORM_ref1:
8872 case DW_FORM_ref2:
8873 case DW_FORM_ref4:
8874 case DW_FORM_ref8:
8875 case DW_FORM_ref_udata:
8876 result = DW_ADDR (attr);
8877 break;
8878 default:
8879 complaint (&symfile_complaints,
8880 _("unsupported die ref attribute form: '%s'"),
8881 dwarf_form_name (attr->form));
8882 }
8883 return result;
8884 }
8885
8886 /* Return the constant value held by the given attribute. Return -1
8887 if the value held by the attribute is not constant. */
8888
8889 static int
8890 dwarf2_get_attr_constant_value (struct attribute *attr, int default_value)
8891 {
8892 if (attr->form == DW_FORM_sdata)
8893 return DW_SND (attr);
8894 else if (attr->form == DW_FORM_udata
8895 || attr->form == DW_FORM_data1
8896 || attr->form == DW_FORM_data2
8897 || attr->form == DW_FORM_data4
8898 || attr->form == DW_FORM_data8)
8899 return DW_UNSND (attr);
8900 else
8901 {
8902 complaint (&symfile_complaints, _("Attribute value is not a constant (%s)"),
8903 dwarf_form_name (attr->form));
8904 return default_value;
8905 }
8906 }
8907
8908 static struct die_info *
8909 follow_die_ref (struct die_info *src_die, struct attribute *attr,
8910 struct dwarf2_cu *cu)
8911 {
8912 struct die_info *die;
8913 unsigned int offset;
8914 int h;
8915 struct die_info temp_die;
8916 struct dwarf2_cu *target_cu;
8917
8918 offset = dwarf2_get_ref_die_offset (attr, cu);
8919
8920 if (DW_ADDR (attr) < cu->header.offset
8921 || DW_ADDR (attr) >= cu->header.offset + cu->header.length)
8922 {
8923 struct dwarf2_per_cu_data *per_cu;
8924 per_cu = dwarf2_find_containing_comp_unit (DW_ADDR (attr),
8925 cu->objfile);
8926 target_cu = per_cu->cu;
8927 }
8928 else
8929 target_cu = cu;
8930
8931 h = (offset % REF_HASH_SIZE);
8932 die = target_cu->die_ref_table[h];
8933 while (die)
8934 {
8935 if (die->offset == offset)
8936 return die;
8937 die = die->next_ref;
8938 }
8939
8940 error (_("Dwarf Error: Cannot find DIE at 0x%lx referenced from DIE "
8941 "at 0x%lx [in module %s]"),
8942 (long) src_die->offset, (long) offset, cu->objfile->name);
8943
8944 return NULL;
8945 }
8946
8947 /* Decode simple location descriptions.
8948 Given a pointer to a dwarf block that defines a location, compute
8949 the location and return the value.
8950
8951 NOTE drow/2003-11-18: This function is called in two situations
8952 now: for the address of static or global variables (partial symbols
8953 only) and for offsets into structures which are expected to be
8954 (more or less) constant. The partial symbol case should go away,
8955 and only the constant case should remain. That will let this
8956 function complain more accurately. A few special modes are allowed
8957 without complaint for global variables (for instance, global
8958 register values and thread-local values).
8959
8960 A location description containing no operations indicates that the
8961 object is optimized out. The return value is 0 for that case.
8962 FIXME drow/2003-11-16: No callers check for this case any more; soon all
8963 callers will only want a very basic result and this can become a
8964 complaint.
8965
8966 Note that stack[0] is unused except as a default error return.
8967 Note that stack overflow is not yet handled. */
8968
8969 static CORE_ADDR
8970 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
8971 {
8972 struct objfile *objfile = cu->objfile;
8973 struct comp_unit_head *cu_header = &cu->header;
8974 int i;
8975 int size = blk->size;
8976 gdb_byte *data = blk->data;
8977 CORE_ADDR stack[64];
8978 int stacki;
8979 unsigned int bytes_read, unsnd;
8980 gdb_byte op;
8981
8982 i = 0;
8983 stacki = 0;
8984 stack[stacki] = 0;
8985
8986 while (i < size)
8987 {
8988 op = data[i++];
8989 switch (op)
8990 {
8991 case DW_OP_lit0:
8992 case DW_OP_lit1:
8993 case DW_OP_lit2:
8994 case DW_OP_lit3:
8995 case DW_OP_lit4:
8996 case DW_OP_lit5:
8997 case DW_OP_lit6:
8998 case DW_OP_lit7:
8999 case DW_OP_lit8:
9000 case DW_OP_lit9:
9001 case DW_OP_lit10:
9002 case DW_OP_lit11:
9003 case DW_OP_lit12:
9004 case DW_OP_lit13:
9005 case DW_OP_lit14:
9006 case DW_OP_lit15:
9007 case DW_OP_lit16:
9008 case DW_OP_lit17:
9009 case DW_OP_lit18:
9010 case DW_OP_lit19:
9011 case DW_OP_lit20:
9012 case DW_OP_lit21:
9013 case DW_OP_lit22:
9014 case DW_OP_lit23:
9015 case DW_OP_lit24:
9016 case DW_OP_lit25:
9017 case DW_OP_lit26:
9018 case DW_OP_lit27:
9019 case DW_OP_lit28:
9020 case DW_OP_lit29:
9021 case DW_OP_lit30:
9022 case DW_OP_lit31:
9023 stack[++stacki] = op - DW_OP_lit0;
9024 break;
9025
9026 case DW_OP_reg0:
9027 case DW_OP_reg1:
9028 case DW_OP_reg2:
9029 case DW_OP_reg3:
9030 case DW_OP_reg4:
9031 case DW_OP_reg5:
9032 case DW_OP_reg6:
9033 case DW_OP_reg7:
9034 case DW_OP_reg8:
9035 case DW_OP_reg9:
9036 case DW_OP_reg10:
9037 case DW_OP_reg11:
9038 case DW_OP_reg12:
9039 case DW_OP_reg13:
9040 case DW_OP_reg14:
9041 case DW_OP_reg15:
9042 case DW_OP_reg16:
9043 case DW_OP_reg17:
9044 case DW_OP_reg18:
9045 case DW_OP_reg19:
9046 case DW_OP_reg20:
9047 case DW_OP_reg21:
9048 case DW_OP_reg22:
9049 case DW_OP_reg23:
9050 case DW_OP_reg24:
9051 case DW_OP_reg25:
9052 case DW_OP_reg26:
9053 case DW_OP_reg27:
9054 case DW_OP_reg28:
9055 case DW_OP_reg29:
9056 case DW_OP_reg30:
9057 case DW_OP_reg31:
9058 stack[++stacki] = op - DW_OP_reg0;
9059 if (i < size)
9060 dwarf2_complex_location_expr_complaint ();
9061 break;
9062
9063 case DW_OP_regx:
9064 unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
9065 i += bytes_read;
9066 stack[++stacki] = unsnd;
9067 if (i < size)
9068 dwarf2_complex_location_expr_complaint ();
9069 break;
9070
9071 case DW_OP_addr:
9072 stack[++stacki] = read_address (objfile->obfd, &data[i],
9073 cu, &bytes_read);
9074 i += bytes_read;
9075 break;
9076
9077 case DW_OP_const1u:
9078 stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
9079 i += 1;
9080 break;
9081
9082 case DW_OP_const1s:
9083 stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
9084 i += 1;
9085 break;
9086
9087 case DW_OP_const2u:
9088 stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
9089 i += 2;
9090 break;
9091
9092 case DW_OP_const2s:
9093 stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
9094 i += 2;
9095 break;
9096
9097 case DW_OP_const4u:
9098 stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
9099 i += 4;
9100 break;
9101
9102 case DW_OP_const4s:
9103 stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
9104 i += 4;
9105 break;
9106
9107 case DW_OP_constu:
9108 stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
9109 &bytes_read);
9110 i += bytes_read;
9111 break;
9112
9113 case DW_OP_consts:
9114 stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
9115 i += bytes_read;
9116 break;
9117
9118 case DW_OP_dup:
9119 stack[stacki + 1] = stack[stacki];
9120 stacki++;
9121 break;
9122
9123 case DW_OP_plus:
9124 stack[stacki - 1] += stack[stacki];
9125 stacki--;
9126 break;
9127
9128 case DW_OP_plus_uconst:
9129 stack[stacki] += read_unsigned_leb128 (NULL, (data + i), &bytes_read);
9130 i += bytes_read;
9131 break;
9132
9133 case DW_OP_minus:
9134 stack[stacki - 1] -= stack[stacki];
9135 stacki--;
9136 break;
9137
9138 case DW_OP_deref:
9139 /* If we're not the last op, then we definitely can't encode
9140 this using GDB's address_class enum. This is valid for partial
9141 global symbols, although the variable's address will be bogus
9142 in the psymtab. */
9143 if (i < size)
9144 dwarf2_complex_location_expr_complaint ();
9145 break;
9146
9147 case DW_OP_GNU_push_tls_address:
9148 /* The top of the stack has the offset from the beginning
9149 of the thread control block at which the variable is located. */
9150 /* Nothing should follow this operator, so the top of stack would
9151 be returned. */
9152 /* This is valid for partial global symbols, but the variable's
9153 address will be bogus in the psymtab. */
9154 if (i < size)
9155 dwarf2_complex_location_expr_complaint ();
9156 break;
9157
9158 case DW_OP_GNU_uninit:
9159 break;
9160
9161 default:
9162 complaint (&symfile_complaints, _("unsupported stack op: '%s'"),
9163 dwarf_stack_op_name (op));
9164 return (stack[stacki]);
9165 }
9166 }
9167 return (stack[stacki]);
9168 }
9169
9170 /* memory allocation interface */
9171
9172 static struct dwarf_block *
9173 dwarf_alloc_block (struct dwarf2_cu *cu)
9174 {
9175 struct dwarf_block *blk;
9176
9177 blk = (struct dwarf_block *)
9178 obstack_alloc (&cu->comp_unit_obstack, sizeof (struct dwarf_block));
9179 return (blk);
9180 }
9181
9182 static struct abbrev_info *
9183 dwarf_alloc_abbrev (struct dwarf2_cu *cu)
9184 {
9185 struct abbrev_info *abbrev;
9186
9187 abbrev = (struct abbrev_info *)
9188 obstack_alloc (&cu->abbrev_obstack, sizeof (struct abbrev_info));
9189 memset (abbrev, 0, sizeof (struct abbrev_info));
9190 return (abbrev);
9191 }
9192
9193 static struct die_info *
9194 dwarf_alloc_die (void)
9195 {
9196 struct die_info *die;
9197
9198 die = (struct die_info *) xmalloc (sizeof (struct die_info));
9199 memset (die, 0, sizeof (struct die_info));
9200 return (die);
9201 }
9202
9203 \f
9204 /* Macro support. */
9205
9206
9207 /* Return the full name of file number I in *LH's file name table.
9208 Use COMP_DIR as the name of the current directory of the
9209 compilation. The result is allocated using xmalloc; the caller is
9210 responsible for freeing it. */
9211 static char *
9212 file_full_name (int file, struct line_header *lh, const char *comp_dir)
9213 {
9214 /* Is the file number a valid index into the line header's file name
9215 table? Remember that file numbers start with one, not zero. */
9216 if (1 <= file && file <= lh->num_file_names)
9217 {
9218 struct file_entry *fe = &lh->file_names[file - 1];
9219
9220 if (IS_ABSOLUTE_PATH (fe->name))
9221 return xstrdup (fe->name);
9222 else
9223 {
9224 const char *dir;
9225 int dir_len;
9226 char *full_name;
9227
9228 if (fe->dir_index)
9229 dir = lh->include_dirs[fe->dir_index - 1];
9230 else
9231 dir = comp_dir;
9232
9233 if (dir)
9234 {
9235 dir_len = strlen (dir);
9236 full_name = xmalloc (dir_len + 1 + strlen (fe->name) + 1);
9237 strcpy (full_name, dir);
9238 full_name[dir_len] = '/';
9239 strcpy (full_name + dir_len + 1, fe->name);
9240 return full_name;
9241 }
9242 else
9243 return xstrdup (fe->name);
9244 }
9245 }
9246 else
9247 {
9248 /* The compiler produced a bogus file number. We can at least
9249 record the macro definitions made in the file, even if we
9250 won't be able to find the file by name. */
9251 char fake_name[80];
9252 sprintf (fake_name, "<bad macro file number %d>", file);
9253
9254 complaint (&symfile_complaints,
9255 _("bad file number in macro information (%d)"),
9256 file);
9257
9258 return xstrdup (fake_name);
9259 }
9260 }
9261
9262
9263 static struct macro_source_file *
9264 macro_start_file (int file, int line,
9265 struct macro_source_file *current_file,
9266 const char *comp_dir,
9267 struct line_header *lh, struct objfile *objfile)
9268 {
9269 /* The full name of this source file. */
9270 char *full_name = file_full_name (file, lh, comp_dir);
9271
9272 /* We don't create a macro table for this compilation unit
9273 at all until we actually get a filename. */
9274 if (! pending_macros)
9275 pending_macros = new_macro_table (&objfile->objfile_obstack,
9276 objfile->macro_cache);
9277
9278 if (! current_file)
9279 /* If we have no current file, then this must be the start_file
9280 directive for the compilation unit's main source file. */
9281 current_file = macro_set_main (pending_macros, full_name);
9282 else
9283 current_file = macro_include (current_file, line, full_name);
9284
9285 xfree (full_name);
9286
9287 return current_file;
9288 }
9289
9290
9291 /* Copy the LEN characters at BUF to a xmalloc'ed block of memory,
9292 followed by a null byte. */
9293 static char *
9294 copy_string (const char *buf, int len)
9295 {
9296 char *s = xmalloc (len + 1);
9297 memcpy (s, buf, len);
9298 s[len] = '\0';
9299
9300 return s;
9301 }
9302
9303
9304 static const char *
9305 consume_improper_spaces (const char *p, const char *body)
9306 {
9307 if (*p == ' ')
9308 {
9309 complaint (&symfile_complaints,
9310 _("macro definition contains spaces in formal argument list:\n`%s'"),
9311 body);
9312
9313 while (*p == ' ')
9314 p++;
9315 }
9316
9317 return p;
9318 }
9319
9320
9321 static void
9322 parse_macro_definition (struct macro_source_file *file, int line,
9323 const char *body)
9324 {
9325 const char *p;
9326
9327 /* The body string takes one of two forms. For object-like macro
9328 definitions, it should be:
9329
9330 <macro name> " " <definition>
9331
9332 For function-like macro definitions, it should be:
9333
9334 <macro name> "() " <definition>
9335 or
9336 <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
9337
9338 Spaces may appear only where explicitly indicated, and in the
9339 <definition>.
9340
9341 The Dwarf 2 spec says that an object-like macro's name is always
9342 followed by a space, but versions of GCC around March 2002 omit
9343 the space when the macro's definition is the empty string.
9344
9345 The Dwarf 2 spec says that there should be no spaces between the
9346 formal arguments in a function-like macro's formal argument list,
9347 but versions of GCC around March 2002 include spaces after the
9348 commas. */
9349
9350
9351 /* Find the extent of the macro name. The macro name is terminated
9352 by either a space or null character (for an object-like macro) or
9353 an opening paren (for a function-like macro). */
9354 for (p = body; *p; p++)
9355 if (*p == ' ' || *p == '(')
9356 break;
9357
9358 if (*p == ' ' || *p == '\0')
9359 {
9360 /* It's an object-like macro. */
9361 int name_len = p - body;
9362 char *name = copy_string (body, name_len);
9363 const char *replacement;
9364
9365 if (*p == ' ')
9366 replacement = body + name_len + 1;
9367 else
9368 {
9369 dwarf2_macro_malformed_definition_complaint (body);
9370 replacement = body + name_len;
9371 }
9372
9373 macro_define_object (file, line, name, replacement);
9374
9375 xfree (name);
9376 }
9377 else if (*p == '(')
9378 {
9379 /* It's a function-like macro. */
9380 char *name = copy_string (body, p - body);
9381 int argc = 0;
9382 int argv_size = 1;
9383 char **argv = xmalloc (argv_size * sizeof (*argv));
9384
9385 p++;
9386
9387 p = consume_improper_spaces (p, body);
9388
9389 /* Parse the formal argument list. */
9390 while (*p && *p != ')')
9391 {
9392 /* Find the extent of the current argument name. */
9393 const char *arg_start = p;
9394
9395 while (*p && *p != ',' && *p != ')' && *p != ' ')
9396 p++;
9397
9398 if (! *p || p == arg_start)
9399 dwarf2_macro_malformed_definition_complaint (body);
9400 else
9401 {
9402 /* Make sure argv has room for the new argument. */
9403 if (argc >= argv_size)
9404 {
9405 argv_size *= 2;
9406 argv = xrealloc (argv, argv_size * sizeof (*argv));
9407 }
9408
9409 argv[argc++] = copy_string (arg_start, p - arg_start);
9410 }
9411
9412 p = consume_improper_spaces (p, body);
9413
9414 /* Consume the comma, if present. */
9415 if (*p == ',')
9416 {
9417 p++;
9418
9419 p = consume_improper_spaces (p, body);
9420 }
9421 }
9422
9423 if (*p == ')')
9424 {
9425 p++;
9426
9427 if (*p == ' ')
9428 /* Perfectly formed definition, no complaints. */
9429 macro_define_function (file, line, name,
9430 argc, (const char **) argv,
9431 p + 1);
9432 else if (*p == '\0')
9433 {
9434 /* Complain, but do define it. */
9435 dwarf2_macro_malformed_definition_complaint (body);
9436 macro_define_function (file, line, name,
9437 argc, (const char **) argv,
9438 p);
9439 }
9440 else
9441 /* Just complain. */
9442 dwarf2_macro_malformed_definition_complaint (body);
9443 }
9444 else
9445 /* Just complain. */
9446 dwarf2_macro_malformed_definition_complaint (body);
9447
9448 xfree (name);
9449 {
9450 int i;
9451
9452 for (i = 0; i < argc; i++)
9453 xfree (argv[i]);
9454 }
9455 xfree (argv);
9456 }
9457 else
9458 dwarf2_macro_malformed_definition_complaint (body);
9459 }
9460
9461
9462 static void
9463 dwarf_decode_macros (struct line_header *lh, unsigned int offset,
9464 char *comp_dir, bfd *abfd,
9465 struct dwarf2_cu *cu)
9466 {
9467 gdb_byte *mac_ptr, *mac_end;
9468 struct macro_source_file *current_file = 0;
9469
9470 if (dwarf2_per_objfile->macinfo_buffer == NULL)
9471 {
9472 complaint (&symfile_complaints, _("missing .debug_macinfo section"));
9473 return;
9474 }
9475
9476 mac_ptr = dwarf2_per_objfile->macinfo_buffer + offset;
9477 mac_end = dwarf2_per_objfile->macinfo_buffer
9478 + dwarf2_per_objfile->macinfo_size;
9479
9480 for (;;)
9481 {
9482 enum dwarf_macinfo_record_type macinfo_type;
9483
9484 /* Do we at least have room for a macinfo type byte? */
9485 if (mac_ptr >= mac_end)
9486 {
9487 dwarf2_macros_too_long_complaint ();
9488 return;
9489 }
9490
9491 macinfo_type = read_1_byte (abfd, mac_ptr);
9492 mac_ptr++;
9493
9494 switch (macinfo_type)
9495 {
9496 /* A zero macinfo type indicates the end of the macro
9497 information. */
9498 case 0:
9499 return;
9500
9501 case DW_MACINFO_define:
9502 case DW_MACINFO_undef:
9503 {
9504 unsigned int bytes_read;
9505 int line;
9506 char *body;
9507
9508 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
9509 mac_ptr += bytes_read;
9510 body = read_string (abfd, mac_ptr, &bytes_read);
9511 mac_ptr += bytes_read;
9512
9513 if (! current_file)
9514 complaint (&symfile_complaints,
9515 _("debug info gives macro %s outside of any file: %s"),
9516 macinfo_type ==
9517 DW_MACINFO_define ? "definition" : macinfo_type ==
9518 DW_MACINFO_undef ? "undefinition" :
9519 "something-or-other", body);
9520 else
9521 {
9522 if (macinfo_type == DW_MACINFO_define)
9523 parse_macro_definition (current_file, line, body);
9524 else if (macinfo_type == DW_MACINFO_undef)
9525 macro_undef (current_file, line, body);
9526 }
9527 }
9528 break;
9529
9530 case DW_MACINFO_start_file:
9531 {
9532 unsigned int bytes_read;
9533 int line, file;
9534
9535 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
9536 mac_ptr += bytes_read;
9537 file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
9538 mac_ptr += bytes_read;
9539
9540 current_file = macro_start_file (file, line,
9541 current_file, comp_dir,
9542 lh, cu->objfile);
9543 }
9544 break;
9545
9546 case DW_MACINFO_end_file:
9547 if (! current_file)
9548 complaint (&symfile_complaints,
9549 _("macro debug info has an unmatched `close_file' directive"));
9550 else
9551 {
9552 current_file = current_file->included_by;
9553 if (! current_file)
9554 {
9555 enum dwarf_macinfo_record_type next_type;
9556
9557 /* GCC circa March 2002 doesn't produce the zero
9558 type byte marking the end of the compilation
9559 unit. Complain if it's not there, but exit no
9560 matter what. */
9561
9562 /* Do we at least have room for a macinfo type byte? */
9563 if (mac_ptr >= mac_end)
9564 {
9565 dwarf2_macros_too_long_complaint ();
9566 return;
9567 }
9568
9569 /* We don't increment mac_ptr here, so this is just
9570 a look-ahead. */
9571 next_type = read_1_byte (abfd, mac_ptr);
9572 if (next_type != 0)
9573 complaint (&symfile_complaints,
9574 _("no terminating 0-type entry for macros in `.debug_macinfo' section"));
9575
9576 return;
9577 }
9578 }
9579 break;
9580
9581 case DW_MACINFO_vendor_ext:
9582 {
9583 unsigned int bytes_read;
9584 int constant;
9585 char *string;
9586
9587 constant = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
9588 mac_ptr += bytes_read;
9589 string = read_string (abfd, mac_ptr, &bytes_read);
9590 mac_ptr += bytes_read;
9591
9592 /* We don't recognize any vendor extensions. */
9593 }
9594 break;
9595 }
9596 }
9597 }
9598
9599 /* Check if the attribute's form is a DW_FORM_block*
9600 if so return true else false. */
9601 static int
9602 attr_form_is_block (struct attribute *attr)
9603 {
9604 return (attr == NULL ? 0 :
9605 attr->form == DW_FORM_block1
9606 || attr->form == DW_FORM_block2
9607 || attr->form == DW_FORM_block4
9608 || attr->form == DW_FORM_block);
9609 }
9610
9611 static void
9612 dwarf2_symbol_mark_computed (struct attribute *attr, struct symbol *sym,
9613 struct dwarf2_cu *cu)
9614 {
9615 struct objfile *objfile = cu->objfile;
9616
9617 /* Save the master objfile, so that we can report and look up the
9618 correct file containing this variable. */
9619 if (objfile->separate_debug_objfile_backlink)
9620 objfile = objfile->separate_debug_objfile_backlink;
9621
9622 if ((attr->form == DW_FORM_data4 || attr->form == DW_FORM_data8)
9623 /* ".debug_loc" may not exist at all, or the offset may be outside
9624 the section. If so, fall through to the complaint in the
9625 other branch. */
9626 && DW_UNSND (attr) < dwarf2_per_objfile->loc_size)
9627 {
9628 struct dwarf2_loclist_baton *baton;
9629
9630 baton = obstack_alloc (&cu->objfile->objfile_obstack,
9631 sizeof (struct dwarf2_loclist_baton));
9632 baton->objfile = objfile;
9633
9634 /* We don't know how long the location list is, but make sure we
9635 don't run off the edge of the section. */
9636 baton->size = dwarf2_per_objfile->loc_size - DW_UNSND (attr);
9637 baton->data = dwarf2_per_objfile->loc_buffer + DW_UNSND (attr);
9638 baton->base_address = cu->header.base_address;
9639 if (cu->header.base_known == 0)
9640 complaint (&symfile_complaints,
9641 _("Location list used without specifying the CU base address."));
9642
9643 SYMBOL_OPS (sym) = &dwarf2_loclist_funcs;
9644 SYMBOL_LOCATION_BATON (sym) = baton;
9645 }
9646 else
9647 {
9648 struct dwarf2_locexpr_baton *baton;
9649
9650 baton = obstack_alloc (&cu->objfile->objfile_obstack,
9651 sizeof (struct dwarf2_locexpr_baton));
9652 baton->objfile = objfile;
9653
9654 if (attr_form_is_block (attr))
9655 {
9656 /* Note that we're just copying the block's data pointer
9657 here, not the actual data. We're still pointing into the
9658 info_buffer for SYM's objfile; right now we never release
9659 that buffer, but when we do clean up properly this may
9660 need to change. */
9661 baton->size = DW_BLOCK (attr)->size;
9662 baton->data = DW_BLOCK (attr)->data;
9663 }
9664 else
9665 {
9666 dwarf2_invalid_attrib_class_complaint ("location description",
9667 SYMBOL_NATURAL_NAME (sym));
9668 baton->size = 0;
9669 baton->data = NULL;
9670 }
9671
9672 SYMBOL_OPS (sym) = &dwarf2_locexpr_funcs;
9673 SYMBOL_LOCATION_BATON (sym) = baton;
9674 }
9675 }
9676
9677 /* Locate the compilation unit from CU's objfile which contains the
9678 DIE at OFFSET. Raises an error on failure. */
9679
9680 static struct dwarf2_per_cu_data *
9681 dwarf2_find_containing_comp_unit (unsigned long offset,
9682 struct objfile *objfile)
9683 {
9684 struct dwarf2_per_cu_data *this_cu;
9685 int low, high;
9686
9687 low = 0;
9688 high = dwarf2_per_objfile->n_comp_units - 1;
9689 while (high > low)
9690 {
9691 int mid = low + (high - low) / 2;
9692 if (dwarf2_per_objfile->all_comp_units[mid]->offset >= offset)
9693 high = mid;
9694 else
9695 low = mid + 1;
9696 }
9697 gdb_assert (low == high);
9698 if (dwarf2_per_objfile->all_comp_units[low]->offset > offset)
9699 {
9700 if (low == 0)
9701 error (_("Dwarf Error: could not find partial DIE containing "
9702 "offset 0x%lx [in module %s]"),
9703 (long) offset, bfd_get_filename (objfile->obfd));
9704
9705 gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->offset <= offset);
9706 return dwarf2_per_objfile->all_comp_units[low-1];
9707 }
9708 else
9709 {
9710 this_cu = dwarf2_per_objfile->all_comp_units[low];
9711 if (low == dwarf2_per_objfile->n_comp_units - 1
9712 && offset >= this_cu->offset + this_cu->length)
9713 error (_("invalid dwarf2 offset %ld"), offset);
9714 gdb_assert (offset < this_cu->offset + this_cu->length);
9715 return this_cu;
9716 }
9717 }
9718
9719 /* Locate the compilation unit from OBJFILE which is located at exactly
9720 OFFSET. Raises an error on failure. */
9721
9722 static struct dwarf2_per_cu_data *
9723 dwarf2_find_comp_unit (unsigned long offset, struct objfile *objfile)
9724 {
9725 struct dwarf2_per_cu_data *this_cu;
9726 this_cu = dwarf2_find_containing_comp_unit (offset, objfile);
9727 if (this_cu->offset != offset)
9728 error (_("no compilation unit with offset %ld."), offset);
9729 return this_cu;
9730 }
9731
9732 /* Release one cached compilation unit, CU. We unlink it from the tree
9733 of compilation units, but we don't remove it from the read_in_chain;
9734 the caller is responsible for that. */
9735
9736 static void
9737 free_one_comp_unit (void *data)
9738 {
9739 struct dwarf2_cu *cu = data;
9740
9741 if (cu->per_cu != NULL)
9742 cu->per_cu->cu = NULL;
9743 cu->per_cu = NULL;
9744
9745 obstack_free (&cu->comp_unit_obstack, NULL);
9746 if (cu->dies)
9747 free_die_list (cu->dies);
9748
9749 xfree (cu);
9750 }
9751
9752 /* This cleanup function is passed the address of a dwarf2_cu on the stack
9753 when we're finished with it. We can't free the pointer itself, but be
9754 sure to unlink it from the cache. Also release any associated storage
9755 and perform cache maintenance.
9756
9757 Only used during partial symbol parsing. */
9758
9759 static void
9760 free_stack_comp_unit (void *data)
9761 {
9762 struct dwarf2_cu *cu = data;
9763
9764 obstack_free (&cu->comp_unit_obstack, NULL);
9765 cu->partial_dies = NULL;
9766
9767 if (cu->per_cu != NULL)
9768 {
9769 /* This compilation unit is on the stack in our caller, so we
9770 should not xfree it. Just unlink it. */
9771 cu->per_cu->cu = NULL;
9772 cu->per_cu = NULL;
9773
9774 /* If we had a per-cu pointer, then we may have other compilation
9775 units loaded, so age them now. */
9776 age_cached_comp_units ();
9777 }
9778 }
9779
9780 /* Free all cached compilation units. */
9781
9782 static void
9783 free_cached_comp_units (void *data)
9784 {
9785 struct dwarf2_per_cu_data *per_cu, **last_chain;
9786
9787 per_cu = dwarf2_per_objfile->read_in_chain;
9788 last_chain = &dwarf2_per_objfile->read_in_chain;
9789 while (per_cu != NULL)
9790 {
9791 struct dwarf2_per_cu_data *next_cu;
9792
9793 next_cu = per_cu->cu->read_in_chain;
9794
9795 free_one_comp_unit (per_cu->cu);
9796 *last_chain = next_cu;
9797
9798 per_cu = next_cu;
9799 }
9800 }
9801
9802 /* Increase the age counter on each cached compilation unit, and free
9803 any that are too old. */
9804
9805 static void
9806 age_cached_comp_units (void)
9807 {
9808 struct dwarf2_per_cu_data *per_cu, **last_chain;
9809
9810 dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
9811 per_cu = dwarf2_per_objfile->read_in_chain;
9812 while (per_cu != NULL)
9813 {
9814 per_cu->cu->last_used ++;
9815 if (per_cu->cu->last_used <= dwarf2_max_cache_age)
9816 dwarf2_mark (per_cu->cu);
9817 per_cu = per_cu->cu->read_in_chain;
9818 }
9819
9820 per_cu = dwarf2_per_objfile->read_in_chain;
9821 last_chain = &dwarf2_per_objfile->read_in_chain;
9822 while (per_cu != NULL)
9823 {
9824 struct dwarf2_per_cu_data *next_cu;
9825
9826 next_cu = per_cu->cu->read_in_chain;
9827
9828 if (!per_cu->cu->mark)
9829 {
9830 free_one_comp_unit (per_cu->cu);
9831 *last_chain = next_cu;
9832 }
9833 else
9834 last_chain = &per_cu->cu->read_in_chain;
9835
9836 per_cu = next_cu;
9837 }
9838 }
9839
9840 /* Remove a single compilation unit from the cache. */
9841
9842 static void
9843 free_one_cached_comp_unit (void *target_cu)
9844 {
9845 struct dwarf2_per_cu_data *per_cu, **last_chain;
9846
9847 per_cu = dwarf2_per_objfile->read_in_chain;
9848 last_chain = &dwarf2_per_objfile->read_in_chain;
9849 while (per_cu != NULL)
9850 {
9851 struct dwarf2_per_cu_data *next_cu;
9852
9853 next_cu = per_cu->cu->read_in_chain;
9854
9855 if (per_cu->cu == target_cu)
9856 {
9857 free_one_comp_unit (per_cu->cu);
9858 *last_chain = next_cu;
9859 break;
9860 }
9861 else
9862 last_chain = &per_cu->cu->read_in_chain;
9863
9864 per_cu = next_cu;
9865 }
9866 }
9867
9868 /* Release all extra memory associated with OBJFILE. */
9869
9870 void
9871 dwarf2_free_objfile (struct objfile *objfile)
9872 {
9873 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
9874
9875 if (dwarf2_per_objfile == NULL)
9876 return;
9877
9878 /* Cached DIE trees use xmalloc and the comp_unit_obstack. */
9879 free_cached_comp_units (NULL);
9880
9881 /* Everything else should be on the objfile obstack. */
9882 }
9883
9884 /* A pair of DIE offset and GDB type pointer. We store these
9885 in a hash table separate from the DIEs, and preserve them
9886 when the DIEs are flushed out of cache. */
9887
9888 struct dwarf2_offset_and_type
9889 {
9890 unsigned int offset;
9891 struct type *type;
9892 };
9893
9894 /* Hash function for a dwarf2_offset_and_type. */
9895
9896 static hashval_t
9897 offset_and_type_hash (const void *item)
9898 {
9899 const struct dwarf2_offset_and_type *ofs = item;
9900 return ofs->offset;
9901 }
9902
9903 /* Equality function for a dwarf2_offset_and_type. */
9904
9905 static int
9906 offset_and_type_eq (const void *item_lhs, const void *item_rhs)
9907 {
9908 const struct dwarf2_offset_and_type *ofs_lhs = item_lhs;
9909 const struct dwarf2_offset_and_type *ofs_rhs = item_rhs;
9910 return ofs_lhs->offset == ofs_rhs->offset;
9911 }
9912
9913 /* Set the type associated with DIE to TYPE. Save it in CU's hash
9914 table if necessary. */
9915
9916 static void
9917 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
9918 {
9919 struct dwarf2_offset_and_type **slot, ofs;
9920
9921 die->type = type;
9922
9923 if (cu->per_cu == NULL)
9924 return;
9925
9926 if (cu->per_cu->type_hash == NULL)
9927 cu->per_cu->type_hash
9928 = htab_create_alloc_ex (cu->header.length / 24,
9929 offset_and_type_hash,
9930 offset_and_type_eq,
9931 NULL,
9932 &cu->objfile->objfile_obstack,
9933 hashtab_obstack_allocate,
9934 dummy_obstack_deallocate);
9935
9936 ofs.offset = die->offset;
9937 ofs.type = type;
9938 slot = (struct dwarf2_offset_and_type **)
9939 htab_find_slot_with_hash (cu->per_cu->type_hash, &ofs, ofs.offset, INSERT);
9940 *slot = obstack_alloc (&cu->objfile->objfile_obstack, sizeof (**slot));
9941 **slot = ofs;
9942 }
9943
9944 /* Find the type for DIE in TYPE_HASH, or return NULL if DIE does not
9945 have a saved type. */
9946
9947 static struct type *
9948 get_die_type (struct die_info *die, htab_t type_hash)
9949 {
9950 struct dwarf2_offset_and_type *slot, ofs;
9951
9952 ofs.offset = die->offset;
9953 slot = htab_find_with_hash (type_hash, &ofs, ofs.offset);
9954 if (slot)
9955 return slot->type;
9956 else
9957 return NULL;
9958 }
9959
9960 /* Restore the types of the DIE tree starting at START_DIE from the hash
9961 table saved in CU. */
9962
9963 static void
9964 reset_die_and_siblings_types (struct die_info *start_die, struct dwarf2_cu *cu)
9965 {
9966 struct die_info *die;
9967
9968 if (cu->per_cu->type_hash == NULL)
9969 return;
9970
9971 for (die = start_die; die != NULL; die = die->sibling)
9972 {
9973 die->type = get_die_type (die, cu->per_cu->type_hash);
9974 if (die->child != NULL)
9975 reset_die_and_siblings_types (die->child, cu);
9976 }
9977 }
9978
9979 /* Set the mark field in CU and in every other compilation unit in the
9980 cache that we must keep because we are keeping CU. */
9981
9982 /* Add a dependence relationship from CU to REF_PER_CU. */
9983
9984 static void
9985 dwarf2_add_dependence (struct dwarf2_cu *cu,
9986 struct dwarf2_per_cu_data *ref_per_cu)
9987 {
9988 void **slot;
9989
9990 if (cu->dependencies == NULL)
9991 cu->dependencies
9992 = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
9993 NULL, &cu->comp_unit_obstack,
9994 hashtab_obstack_allocate,
9995 dummy_obstack_deallocate);
9996
9997 slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
9998 if (*slot == NULL)
9999 *slot = ref_per_cu;
10000 }
10001
10002 /* Set the mark field in CU and in every other compilation unit in the
10003 cache that we must keep because we are keeping CU. */
10004
10005 static int
10006 dwarf2_mark_helper (void **slot, void *data)
10007 {
10008 struct dwarf2_per_cu_data *per_cu;
10009
10010 per_cu = (struct dwarf2_per_cu_data *) *slot;
10011 if (per_cu->cu->mark)
10012 return 1;
10013 per_cu->cu->mark = 1;
10014
10015 if (per_cu->cu->dependencies != NULL)
10016 htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
10017
10018 return 1;
10019 }
10020
10021 static void
10022 dwarf2_mark (struct dwarf2_cu *cu)
10023 {
10024 if (cu->mark)
10025 return;
10026 cu->mark = 1;
10027 if (cu->dependencies != NULL)
10028 htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
10029 }
10030
10031 static void
10032 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
10033 {
10034 while (per_cu)
10035 {
10036 per_cu->cu->mark = 0;
10037 per_cu = per_cu->cu->read_in_chain;
10038 }
10039 }
10040
10041 /* Trivial hash function for partial_die_info: the hash value of a DIE
10042 is its offset in .debug_info for this objfile. */
10043
10044 static hashval_t
10045 partial_die_hash (const void *item)
10046 {
10047 const struct partial_die_info *part_die = item;
10048 return part_die->offset;
10049 }
10050
10051 /* Trivial comparison function for partial_die_info structures: two DIEs
10052 are equal if they have the same offset. */
10053
10054 static int
10055 partial_die_eq (const void *item_lhs, const void *item_rhs)
10056 {
10057 const struct partial_die_info *part_die_lhs = item_lhs;
10058 const struct partial_die_info *part_die_rhs = item_rhs;
10059 return part_die_lhs->offset == part_die_rhs->offset;
10060 }
10061
10062 static struct cmd_list_element *set_dwarf2_cmdlist;
10063 static struct cmd_list_element *show_dwarf2_cmdlist;
10064
10065 static void
10066 set_dwarf2_cmd (char *args, int from_tty)
10067 {
10068 help_list (set_dwarf2_cmdlist, "maintenance set dwarf2 ", -1, gdb_stdout);
10069 }
10070
10071 static void
10072 show_dwarf2_cmd (char *args, int from_tty)
10073 {
10074 cmd_show_list (show_dwarf2_cmdlist, from_tty, "");
10075 }
10076
10077 void _initialize_dwarf2_read (void);
10078
10079 void
10080 _initialize_dwarf2_read (void)
10081 {
10082 dwarf2_objfile_data_key = register_objfile_data ();
10083
10084 add_prefix_cmd ("dwarf2", class_maintenance, set_dwarf2_cmd, _("\
10085 Set DWARF 2 specific variables.\n\
10086 Configure DWARF 2 variables such as the cache size"),
10087 &set_dwarf2_cmdlist, "maintenance set dwarf2 ",
10088 0/*allow-unknown*/, &maintenance_set_cmdlist);
10089
10090 add_prefix_cmd ("dwarf2", class_maintenance, show_dwarf2_cmd, _("\
10091 Show DWARF 2 specific variables\n\
10092 Show DWARF 2 variables such as the cache size"),
10093 &show_dwarf2_cmdlist, "maintenance show dwarf2 ",
10094 0/*allow-unknown*/, &maintenance_show_cmdlist);
10095
10096 add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
10097 &dwarf2_max_cache_age, _("\
10098 Set the upper bound on the age of cached dwarf2 compilation units."), _("\
10099 Show the upper bound on the age of cached dwarf2 compilation units."), _("\
10100 A higher limit means that cached compilation units will be stored\n\
10101 in memory longer, and more total memory will be used. Zero disables\n\
10102 caching, which can slow down startup."),
10103 NULL,
10104 show_dwarf2_max_cache_age,
10105 &set_dwarf2_cmdlist,
10106 &show_dwarf2_cmdlist);
10107 }
This page took 0.243156 seconds and 4 git commands to generate.