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