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