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