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