1 /* DWARF 2 debugging format support for GDB.
2 Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
4 Free Software Foundation, Inc.
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
13 This file is part of GDB.
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.
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.
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. */
35 #include "elf/dwarf2.h"
38 #include "expression.h"
39 #include "filenames.h" /* for DOSish file names */
42 #include "complaints.h"
44 #include "dwarf2expr.h"
45 #include "dwarf2loc.h"
46 #include "cp-support.h"
50 #include "gdb_string.h"
51 #include "gdb_assert.h"
52 #include <sys/types.h>
54 /* A note on memory usage for this file.
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.
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). */
68 #ifndef DWARF2_REG_TO_REGNUM
69 #define DWARF2_REG_TO_REGNUM(REG) (REG)
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
78 unsigned int length
; /* length of the .debug_info
80 unsigned short version
; /* version number -- 2 for DWARF
82 unsigned int abbrev_offset
; /* offset into .debug_abbrev section */
83 unsigned char addr_size
; /* byte size of an address -- 4 */
86 #define _ACTUAL_COMP_UNIT_HEADER_SIZE 11
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
94 unsigned int length
; /* length of the .debug_pubnames
96 unsigned char version
; /* version number -- 2 for DWARF
98 unsigned int info_offset
; /* offset into .debug_info section */
99 unsigned int info_size
; /* byte size of .debug_info section
103 #define _ACTUAL_PUBNAMES_HEADER_SIZE 13
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
110 unsigned int length
; /* byte len of the .debug_aranges
112 unsigned short version
; /* version number -- 2 for DWARF
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 */
119 #define _ACTUAL_ARANGES_HEADER_SIZE 12
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
126 unsigned int total_length
; /* byte length of the statement
128 unsigned short version
; /* version number -- 2 for DWARF
130 unsigned int prologue_length
; /* # bytes between prologue &
132 unsigned char minimum_instruction_length
; /* byte size of
134 unsigned char default_is_stmt
; /* initial value of is_stmt
137 unsigned char line_range
;
138 unsigned char opcode_base
; /* number assigned to first special
140 unsigned char *standard_opcode_lengths
;
144 static const struct objfile_data
*dwarf2_objfile_data_key
;
146 struct dwarf2_per_objfile
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
;
161 /* Loaded data from the sections. */
166 char *macinfo_buffer
;
171 static struct dwarf2_per_objfile
*dwarf2_per_objfile
;
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
;
185 /* names of the debugging sections */
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"
199 /* local data types */
201 /* We hold several abbreviation tables in memory at the same time. */
202 #ifndef ABBREV_HASH_SIZE
203 #define ABBREV_HASH_SIZE 121
206 /* The data in a compilation unit header, after target2host
207 translation, looks like this. */
208 struct comp_unit_head
210 unsigned long length
;
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
219 /* Offset to the first byte of this compilation unit header in the
220 * .debug_info section, for resolving relative reference dies. */
224 /* Pointer to this compilation unit header in the .debug_info
229 /* Pointer to the first die of this compilatio unit. This will
230 * be the first byte following the compilation unit header. */
234 /* Pointer to the next compilation unit header in the program. */
236 struct comp_unit_head
*next
;
238 /* Base address of this compilation unit. */
240 CORE_ADDR base_address
;
242 /* Non-zero if base_address has been set. */
247 /* Internal state when decoding a particular compilation unit. */
250 /* The objfile containing this compilation unit. */
251 struct objfile
*objfile
;
253 /* The header of the compilation unit.
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
;
259 struct function_range
*first_fn
, *last_fn
, *cached_fn
;
261 /* The language we are debugging. */
262 enum language language
;
263 const struct language_defn
*language_defn
;
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.
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
;
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 */
287 /* DWARF abbreviation table associated with this compilation unit. */
288 struct abbrev_info
**dwarf2_abbrevs
;
290 /* Storage for the abbrev table. */
291 struct obstack abbrev_obstack
;
293 /* Hash table holding all the loaded partial DIEs. */
296 /* Storage for things with the same lifetime as this read-in compilation
297 unit, including partial DIEs. */
298 struct obstack comp_unit_obstack
;
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;
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. */
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
;
318 unsigned char line_range
;
319 unsigned char opcode_base
;
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
;
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
331 unsigned int num_include_dirs
, include_dirs_size
;
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
;
341 unsigned int dir_index
;
342 unsigned int mod_time
;
344 int included_p
; /* Non-zero if referenced by the Line Number Program. */
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
;
352 /* When we construct a partial symbol table entry we only
353 need this much information. */
354 struct partial_die_info
356 /* Offset of this DIE. */
359 /* DWARF-2 tag for this DIE. */
360 ENUM_BITFIELD(dwarf_tag
) tag
: 16;
362 /* Language code associated with this DIE. This is only used
363 for the compilation unit DIE. */
364 unsigned int language
: 8;
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;
375 /* Flag set if the SCOPE field of this structure has been
377 unsigned int scope_set
: 1;
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
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. */
390 /* The location description associated with this DIE, if any. */
391 struct dwarf_block
*locdesc
;
393 /* If HAS_PC_INFO, the PC range associated with this DIE. */
397 /* Pointer into the info_buffer pointing at the target of
398 DW_AT_sibling, if any. */
401 /* If HAS_SPECIFICATION, the offset of the DIE referred to by
402 DW_AT_specification (or DW_AT_abstract_origin or
404 unsigned int spec_offset
;
406 /* If HAS_STMT_LIST, the offset of the Line Number Information data. */
407 unsigned int line_offset
;
409 /* Pointers to this DIE's parent, first child, and next sibling,
411 struct partial_die_info
*die_parent
, *die_child
, *die_sibling
;
414 /* This data structure holds the information of an abbrev. */
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 */
427 enum dwarf_attribute name
;
428 enum dwarf_form form
;
431 /* This data structure holds a complete die structure. */
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 */
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
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. */
450 struct type
*type
; /* Cached type information */
453 /* Attributes have a name and a value */
456 enum dwarf_attribute name
;
457 enum dwarf_form form
;
461 struct dwarf_block
*blk
;
469 struct function_range
472 CORE_ADDR lowpc
, highpc
;
474 struct function_range
*next
;
477 /* Get at parts of an attribute structure */
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)
485 /* Blocks are a bunch of untyped bytes. */
492 #ifndef ATTR_ALLOC_CHUNK
493 #define ATTR_ALLOC_CHUNK 4
496 /* A hash table of die offsets for following references. */
497 #ifndef REF_HASH_SIZE
498 #define REF_HASH_SIZE 1021
501 static struct die_info
*die_ref_table
[REF_HASH_SIZE
];
503 /* Allocate fields for structs, unions and enums in this size. */
504 #ifndef DW_FIELD_ALLOC_CHUNK
505 #define DW_FIELD_ALLOC_CHUNK 4
508 /* A zeroed version of a partial die for initialization purposes. */
509 static struct partial_die_info zeroed_partial_die
;
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. */
516 static int isreg
; /* Object lives in register.
517 decode_locdesc's return value is
518 the register number. */
520 /* We put a pointer to this structure in the read_symtab_private field
525 /* Offset in .debug_info for this compilation unit. */
527 unsigned long dwarf_info_offset
;
530 #define PST_PRIVATE(p) ((struct dwarf2_pinfo *)(p)->read_symtab_private)
531 #define DWARF_INFO_OFFSET(p) (PST_PRIVATE(p)->dwarf_info_offset)
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
536 static int bits_per_byte
= 8;
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. */
543 /* List of data member and baseclasses fields. */
546 struct nextfield
*next
;
553 /* Number of fields. */
556 /* Number of baseclasses. */
559 /* Set if the accesibility of one of the fields is not public. */
560 int non_public_fields
;
562 /* Member function fields array, entries are allocated in the order they
563 are encountered in the object file. */
566 struct nextfnfield
*next
;
567 struct fn_field fnfield
;
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. */
578 struct nextfnfield
*head
;
582 /* Number of entries in the fnfieldlists array. */
586 /* Various complaints about symbol reading that don't abort the process */
589 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
591 complaint (&symfile_complaints
,
592 "statement list doesn't fit in .debug_line section");
596 dwarf2_complex_location_expr_complaint (void)
598 complaint (&symfile_complaints
, "location expression too complex");
602 dwarf2_const_value_length_mismatch_complaint (const char *arg1
, int arg2
,
605 complaint (&symfile_complaints
,
606 "const value length mismatch for '%s', got %d, expected %d", arg1
,
611 dwarf2_macros_too_long_complaint (void)
613 complaint (&symfile_complaints
,
614 "macro info runs off end of `.debug_macinfo' section");
618 dwarf2_macro_malformed_definition_complaint (const char *arg1
)
620 complaint (&symfile_complaints
,
621 "macro debug info contains a malformed macro definition:\n`%s'",
626 dwarf2_invalid_attrib_class_complaint (const char *arg1
, const char *arg2
)
628 complaint (&symfile_complaints
,
629 "invalid attribute class or form for '%s' in '%s'", arg1
, arg2
);
632 /* local function prototypes */
634 static void dwarf2_locate_sections (bfd
*, asection
*, void *);
637 static void dwarf2_build_psymtabs_easy (struct objfile
*, int);
640 static void dwarf2_create_include_psymtab (char *, struct partial_symtab
*,
643 static void dwarf2_build_include_psymtabs (struct dwarf2_cu
*,
644 struct partial_die_info
*,
645 struct partial_symtab
*);
647 static void dwarf2_build_psymtabs_hard (struct objfile
*, int);
649 static void scan_partial_symbols (struct partial_die_info
*,
650 CORE_ADDR
*, CORE_ADDR
*,
653 static void add_partial_symbol (struct partial_die_info
*,
656 static int pdi_needs_namespace (enum dwarf_tag tag
);
658 static void add_partial_namespace (struct partial_die_info
*pdi
,
659 CORE_ADDR
*lowpc
, CORE_ADDR
*highpc
,
660 struct dwarf2_cu
*cu
);
662 static void add_partial_enumeration (struct partial_die_info
*enum_pdi
,
663 struct dwarf2_cu
*cu
);
665 static char *locate_pdi_sibling (struct partial_die_info
*orig_pdi
,
668 struct dwarf2_cu
*cu
);
670 static void dwarf2_psymtab_to_symtab (struct partial_symtab
*);
672 static void psymtab_to_symtab_1 (struct partial_symtab
*);
674 char *dwarf2_read_section (struct objfile
*, asection
*);
676 static void dwarf2_read_abbrevs (bfd
*abfd
, struct dwarf2_cu
*cu
);
678 static void dwarf2_free_abbrev_table (void *);
680 static struct abbrev_info
*peek_die_abbrev (char *, int *, struct dwarf2_cu
*);
682 static struct abbrev_info
*dwarf2_lookup_abbrev (unsigned int,
685 static struct partial_die_info
*load_partial_dies (bfd
*, char *, int,
688 static char *read_partial_die (struct partial_die_info
*,
689 struct abbrev_info
*abbrev
, unsigned int,
690 bfd
*, char *, struct dwarf2_cu
*);
692 static struct partial_die_info
*find_partial_die (unsigned long,
694 struct dwarf2_cu
**);
696 static void fixup_partial_die (struct partial_die_info
*,
699 static char *read_full_die (struct die_info
**, bfd
*, char *,
700 struct dwarf2_cu
*, int *);
702 static char *read_attribute (struct attribute
*, struct attr_abbrev
*,
703 bfd
*, char *, struct dwarf2_cu
*);
705 static char *read_attribute_value (struct attribute
*, unsigned,
706 bfd
*, char *, struct dwarf2_cu
*);
708 static unsigned int read_1_byte (bfd
*, char *);
710 static int read_1_signed_byte (bfd
*, char *);
712 static unsigned int read_2_bytes (bfd
*, char *);
714 static unsigned int read_4_bytes (bfd
*, char *);
716 static unsigned long read_8_bytes (bfd
*, char *);
718 static CORE_ADDR
read_address (bfd
*, char *ptr
, struct dwarf2_cu
*,
721 static LONGEST
read_initial_length (bfd
*, char *,
722 struct comp_unit_head
*, int *bytes_read
);
724 static LONGEST
read_offset (bfd
*, char *, const struct comp_unit_head
*,
727 static char *read_n_bytes (bfd
*, char *, unsigned int);
729 static char *read_string (bfd
*, char *, unsigned int *);
731 static char *read_indirect_string (bfd
*, char *, const struct comp_unit_head
*,
734 static unsigned long read_unsigned_leb128 (bfd
*, char *, unsigned int *);
736 static long read_signed_leb128 (bfd
*, char *, unsigned int *);
738 static char *skip_leb128 (bfd
*, char *);
740 static void set_cu_language (unsigned int, struct dwarf2_cu
*);
742 static struct attribute
*dwarf2_attr (struct die_info
*, unsigned int,
745 static int dwarf2_flag_true_p (struct die_info
*die
, unsigned name
,
746 struct dwarf2_cu
*cu
);
748 static int die_is_declaration (struct die_info
*, struct dwarf2_cu
*cu
);
750 static struct die_info
*die_specification (struct die_info
*die
,
753 static void free_line_header (struct line_header
*lh
);
755 static void add_file_name (struct line_header
*, char *, unsigned int,
756 unsigned int, unsigned int);
758 static struct line_header
*(dwarf_decode_line_header
759 (unsigned int offset
,
760 bfd
*abfd
, struct dwarf2_cu
*cu
));
762 static void dwarf_decode_lines (struct line_header
*, char *, bfd
*,
763 struct dwarf2_cu
*, struct partial_symtab
*);
765 static void dwarf2_start_subfile (char *, char *);
767 static struct symbol
*new_symbol (struct die_info
*, struct type
*,
770 static void dwarf2_const_value (struct attribute
*, struct symbol
*,
773 static void dwarf2_const_value_data (struct attribute
*attr
,
777 static struct type
*die_type (struct die_info
*, struct dwarf2_cu
*);
779 static struct type
*die_containing_type (struct die_info
*,
783 static struct type
*type_at_offset (unsigned int, struct objfile
*);
786 static struct type
*tag_type_to_type (struct die_info
*, struct dwarf2_cu
*);
788 static void read_type_die (struct die_info
*, struct dwarf2_cu
*);
790 static char *determine_prefix (struct die_info
*die
, struct dwarf2_cu
*);
792 static char *typename_concat (const char *prefix
, const char *suffix
);
794 static void read_typedef (struct die_info
*, struct dwarf2_cu
*);
796 static void read_base_type (struct die_info
*, struct dwarf2_cu
*);
798 static void read_subrange_type (struct die_info
*die
, struct dwarf2_cu
*cu
);
800 static void read_file_scope (struct die_info
*, struct dwarf2_cu
*);
802 static void read_func_scope (struct die_info
*, struct dwarf2_cu
*);
804 static void read_lexical_block_scope (struct die_info
*, struct dwarf2_cu
*);
806 static int dwarf2_get_pc_bounds (struct die_info
*,
807 CORE_ADDR
*, CORE_ADDR
*, struct dwarf2_cu
*);
809 static void get_scope_pc_bounds (struct die_info
*,
810 CORE_ADDR
*, CORE_ADDR
*,
813 static void dwarf2_add_field (struct field_info
*, struct die_info
*,
816 static void dwarf2_attach_fields_to_type (struct field_info
*,
817 struct type
*, struct dwarf2_cu
*);
819 static void dwarf2_add_member_fn (struct field_info
*,
820 struct die_info
*, struct type
*,
823 static void dwarf2_attach_fn_fields_to_type (struct field_info
*,
824 struct type
*, struct dwarf2_cu
*);
826 static void read_structure_type (struct die_info
*, struct dwarf2_cu
*);
828 static void process_structure_scope (struct die_info
*, struct dwarf2_cu
*);
830 static char *determine_class_name (struct die_info
*die
, struct dwarf2_cu
*cu
);
832 static void read_common_block (struct die_info
*, struct dwarf2_cu
*);
834 static void read_namespace (struct die_info
*die
, struct dwarf2_cu
*);
836 static const char *namespace_name (struct die_info
*die
,
837 int *is_anonymous
, struct dwarf2_cu
*);
839 static void read_enumeration_type (struct die_info
*, struct dwarf2_cu
*);
841 static void process_enumeration_scope (struct die_info
*, struct dwarf2_cu
*);
843 static struct type
*dwarf_base_type (int, int, struct dwarf2_cu
*);
845 static CORE_ADDR
decode_locdesc (struct dwarf_block
*, struct dwarf2_cu
*);
847 static void read_array_type (struct die_info
*, struct dwarf2_cu
*);
849 static void read_tag_pointer_type (struct die_info
*, struct dwarf2_cu
*);
851 static void read_tag_ptr_to_member_type (struct die_info
*,
854 static void read_tag_reference_type (struct die_info
*, struct dwarf2_cu
*);
856 static void read_tag_const_type (struct die_info
*, struct dwarf2_cu
*);
858 static void read_tag_volatile_type (struct die_info
*, struct dwarf2_cu
*);
860 static void read_tag_string_type (struct die_info
*, struct dwarf2_cu
*);
862 static void read_subroutine_type (struct die_info
*, struct dwarf2_cu
*);
864 static struct die_info
*read_comp_unit (char *, bfd
*, struct dwarf2_cu
*);
866 static struct die_info
*read_die_and_children (char *info_ptr
, bfd
*abfd
,
869 struct die_info
*parent
);
871 static struct die_info
*read_die_and_siblings (char *info_ptr
, bfd
*abfd
,
874 struct die_info
*parent
);
876 static void free_die_list (struct die_info
*);
878 static struct cleanup
*make_cleanup_free_die_list (struct die_info
*);
880 static void process_die (struct die_info
*, struct dwarf2_cu
*);
882 static char *dwarf2_linkage_name (struct die_info
*, struct dwarf2_cu
*);
884 static char *dwarf2_name (struct die_info
*die
, struct dwarf2_cu
*);
886 static struct die_info
*dwarf2_extension (struct die_info
*die
,
889 static char *dwarf_tag_name (unsigned int);
891 static char *dwarf_attr_name (unsigned int);
893 static char *dwarf_form_name (unsigned int);
895 static char *dwarf_stack_op_name (unsigned int);
897 static char *dwarf_bool_name (unsigned int);
899 static char *dwarf_type_encoding_name (unsigned int);
902 static char *dwarf_cfi_name (unsigned int);
904 struct die_info
*copy_die (struct die_info
*);
907 static struct die_info
*sibling_die (struct die_info
*);
909 static void dump_die (struct die_info
*);
911 static void dump_die_list (struct die_info
*);
913 static void store_in_ref_table (unsigned int, struct die_info
*);
915 static void dwarf2_empty_hash_tables (void);
917 static unsigned int dwarf2_get_ref_die_offset (struct attribute
*,
920 static int dwarf2_get_attr_constant_value (struct attribute
*, int);
922 static struct die_info
*follow_die_ref (unsigned int);
924 static struct type
*dwarf2_fundamental_type (struct objfile
*, int,
927 /* memory allocation interface */
929 static struct dwarf_block
*dwarf_alloc_block (struct dwarf2_cu
*);
931 static struct abbrev_info
*dwarf_alloc_abbrev (struct dwarf2_cu
*);
933 static struct die_info
*dwarf_alloc_die (void);
935 static void initialize_cu_func_list (struct dwarf2_cu
*);
937 static void add_to_cu_func_list (const char *, CORE_ADDR
, CORE_ADDR
,
940 static void dwarf_decode_macros (struct line_header
*, unsigned int,
941 char *, bfd
*, struct dwarf2_cu
*);
943 static int attr_form_is_block (struct attribute
*);
946 dwarf2_symbol_mark_computed (struct attribute
*attr
, struct symbol
*sym
,
947 struct dwarf2_cu
*cu
);
949 static char *skip_one_die (char *info_ptr
, struct abbrev_info
*abbrev
,
950 struct dwarf2_cu
*cu
);
952 static void free_stack_comp_unit (void *);
954 static void *hashtab_obstack_allocate (void *data
, size_t size
, size_t count
);
956 static void dummy_obstack_deallocate (void *object
, void *data
);
958 static hashval_t
partial_die_hash (const void *item
);
960 static int partial_die_eq (const void *item_lhs
, const void *item_rhs
);
962 /* Try to locate the sections we need for DWARF 2 debugging
963 information and return true if we have enough to do something. */
966 dwarf2_has_info (struct objfile
*objfile
)
968 struct dwarf2_per_objfile
*data
;
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
;
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;
986 bfd_map_over_sections (objfile
->obfd
, dwarf2_locate_sections
, NULL
);
987 return (dwarf_info_section
!= NULL
&& dwarf_abbrev_section
!= NULL
);
990 /* This function is mapped across the sections and remembers the
991 offset and size of each of the debugging sections we are interested
995 dwarf2_locate_sections (bfd
*ignore_abfd
, asection
*sectp
, void *ignore_ptr
)
997 if (strcmp (sectp
->name
, INFO_SECTION
) == 0)
999 dwarf2_per_objfile
->info_size
= bfd_get_section_size (sectp
);
1000 dwarf_info_section
= sectp
;
1002 else if (strcmp (sectp
->name
, ABBREV_SECTION
) == 0)
1004 dwarf2_per_objfile
->abbrev_size
= bfd_get_section_size (sectp
);
1005 dwarf_abbrev_section
= sectp
;
1007 else if (strcmp (sectp
->name
, LINE_SECTION
) == 0)
1009 dwarf2_per_objfile
->line_size
= bfd_get_section_size (sectp
);
1010 dwarf_line_section
= sectp
;
1012 else if (strcmp (sectp
->name
, PUBNAMES_SECTION
) == 0)
1014 dwarf2_per_objfile
->pubnames_size
= bfd_get_section_size (sectp
);
1015 dwarf_pubnames_section
= sectp
;
1017 else if (strcmp (sectp
->name
, ARANGES_SECTION
) == 0)
1019 dwarf2_per_objfile
->aranges_size
= bfd_get_section_size (sectp
);
1020 dwarf_aranges_section
= sectp
;
1022 else if (strcmp (sectp
->name
, LOC_SECTION
) == 0)
1024 dwarf2_per_objfile
->loc_size
= bfd_get_section_size (sectp
);
1025 dwarf_loc_section
= sectp
;
1027 else if (strcmp (sectp
->name
, MACINFO_SECTION
) == 0)
1029 dwarf2_per_objfile
->macinfo_size
= bfd_get_section_size (sectp
);
1030 dwarf_macinfo_section
= sectp
;
1032 else if (strcmp (sectp
->name
, STR_SECTION
) == 0)
1034 dwarf2_per_objfile
->str_size
= bfd_get_section_size (sectp
);
1035 dwarf_str_section
= sectp
;
1037 else if (strcmp (sectp
->name
, FRAME_SECTION
) == 0)
1039 dwarf2_per_objfile
->frame_size
= bfd_get_section_size (sectp
);
1040 dwarf_frame_section
= sectp
;
1042 else if (strcmp (sectp
->name
, EH_FRAME_SECTION
) == 0)
1044 flagword aflag
= bfd_get_section_flags (ignore_abfd
, sectp
);
1045 if (aflag
& SEC_HAS_CONTENTS
)
1047 dwarf2_per_objfile
->eh_frame_size
= bfd_get_section_size (sectp
);
1048 dwarf_eh_frame_section
= sectp
;
1051 else if (strcmp (sectp
->name
, RANGES_SECTION
) == 0)
1053 dwarf2_per_objfile
->ranges_size
= bfd_get_section_size (sectp
);
1054 dwarf_ranges_section
= sectp
;
1058 /* Build a partial symbol table. */
1061 dwarf2_build_psymtabs (struct objfile
*objfile
, int mainline
)
1063 /* We definitely need the .debug_info and .debug_abbrev sections */
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
);
1068 if (dwarf_line_section
)
1069 dwarf2_per_objfile
->line_buffer
= dwarf2_read_section (objfile
, dwarf_line_section
);
1071 dwarf2_per_objfile
->line_buffer
= NULL
;
1073 if (dwarf_str_section
)
1074 dwarf2_per_objfile
->str_buffer
= dwarf2_read_section (objfile
, dwarf_str_section
);
1076 dwarf2_per_objfile
->str_buffer
= NULL
;
1078 if (dwarf_macinfo_section
)
1079 dwarf2_per_objfile
->macinfo_buffer
= dwarf2_read_section (objfile
,
1080 dwarf_macinfo_section
);
1082 dwarf2_per_objfile
->macinfo_buffer
= NULL
;
1084 if (dwarf_ranges_section
)
1085 dwarf2_per_objfile
->ranges_buffer
= dwarf2_read_section (objfile
, dwarf_ranges_section
);
1087 dwarf2_per_objfile
->ranges_buffer
= NULL
;
1089 if (dwarf_loc_section
)
1090 dwarf2_per_objfile
->loc_buffer
= dwarf2_read_section (objfile
, dwarf_loc_section
);
1092 dwarf2_per_objfile
->loc_buffer
= NULL
;
1095 || (objfile
->global_psymbols
.size
== 0
1096 && objfile
->static_psymbols
.size
== 0))
1098 init_psymbol_list (objfile
, 1024);
1102 if (dwarf_aranges_offset
&& dwarf_pubnames_offset
)
1104 /* Things are significantly easier if we have .debug_aranges and
1105 .debug_pubnames sections */
1107 dwarf2_build_psymtabs_easy (objfile
, mainline
);
1111 /* only test this case for now */
1113 /* In this case we have to work a bit harder */
1114 dwarf2_build_psymtabs_hard (objfile
, mainline
);
1119 /* Build the partial symbol table from the information in the
1120 .debug_pubnames and .debug_aranges sections. */
1123 dwarf2_build_psymtabs_easy (struct objfile
*objfile
, int mainline
)
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
;
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
)
1135 struct comp_unit_head cu_header
;
1138 entry_length
= read_initial_length (abfd
, pubnames_ptr
, &cu_header
,
1140 pubnames_ptr
+= bytes_read
;
1141 version
= read_1_byte (abfd
, pubnames_ptr
);
1143 info_offset
= read_4_bytes (abfd
, pubnames_ptr
);
1145 info_size
= read_4_bytes (abfd
, pubnames_ptr
);
1149 aranges_buffer
= dwarf2_read_section (objfile
,
1150 dwarf_aranges_section
);
1155 /* Read in the comp unit header information from the debug_info at
1159 read_comp_unit_head (struct comp_unit_head
*cu_header
,
1160 char *info_ptr
, bfd
*abfd
)
1164 cu_header
->length
= read_initial_length (abfd
, info_ptr
, cu_header
,
1166 info_ptr
+= bytes_read
;
1167 cu_header
->version
= read_2_bytes (abfd
, info_ptr
);
1169 cu_header
->abbrev_offset
= read_offset (abfd
, info_ptr
, cu_header
,
1171 info_ptr
+= bytes_read
;
1172 cu_header
->addr_size
= read_1_byte (abfd
, info_ptr
);
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
;
1183 partial_read_comp_unit_head (struct comp_unit_head
*header
, char *info_ptr
,
1186 char *beg_of_comp_unit
= info_ptr
;
1188 info_ptr
= read_comp_unit_head (header
, info_ptr
, abfd
);
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
));
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
));
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
));
1213 /* Allocate a new partial symtab for file named NAME and mark this new
1214 partial symtab as being an include of PST. */
1217 dwarf2_create_include_psymtab (char *name
, struct partial_symtab
*pst
,
1218 struct objfile
*objfile
)
1220 struct partial_symtab
*subpst
= allocate_psymtab (name
, objfile
);
1222 subpst
->section_offsets
= pst
->section_offsets
;
1223 subpst
->textlow
= 0;
1224 subpst
->texthigh
= 0;
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;
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
;
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
;
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.
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. */
1257 dwarf2_build_include_psymtabs (struct dwarf2_cu
*cu
,
1258 struct partial_die_info
*pdi
,
1259 struct partial_symtab
*pst
)
1261 struct objfile
*objfile
= cu
->objfile
;
1262 bfd
*abfd
= objfile
->obfd
;
1263 struct line_header
*lh
;
1265 lh
= dwarf_decode_line_header (pdi
->line_offset
, abfd
, cu
);
1267 return; /* No linetable, so no includes. */
1269 dwarf_decode_lines (lh
, NULL
, abfd
, cu
, pst
);
1271 free_line_header (lh
);
1275 /* Build the partial symbol table by doing a quick pass through the
1276 .debug_info and .debug_abbrev sections. */
1279 dwarf2_build_psymtabs_hard (struct objfile
*objfile
, int mainline
)
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
;
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
;
1290 info_ptr
= dwarf2_per_objfile
->info_buffer
;
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.
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
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
))
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
;
1314 beg_of_comp_unit
= info_ptr
;
1316 memset (&cu
, 0, sizeof (cu
));
1318 obstack_init (&cu
.comp_unit_obstack
);
1320 back_to_inner
= make_cleanup (free_stack_comp_unit
, &cu
);
1322 cu
.objfile
= objfile
;
1323 info_ptr
= partial_read_comp_unit_head (&cu
.header
, info_ptr
, abfd
);
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
;
1330 cu
.list_in_scope
= &file_symbols
;
1332 cu
.partial_dies
= NULL
;
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
);
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
);
1343 /* Set the language we're debugging */
1344 set_cu_language (comp_unit_die
.language
, &cu
);
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
);
1353 if (comp_unit_die
.dirname
)
1354 pst
->dirname
= xstrdup (comp_unit_die
.dirname
);
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
));
1361 /* Store the function that reads in the rest of the symbol table */
1362 pst
->read_symtab
= dwarf2_psymtab_to_symtab
;
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
)
1369 struct partial_die_info
*first_die
;
1371 lowpc
= ((CORE_ADDR
) -1);
1372 highpc
= ((CORE_ADDR
) 0);
1374 first_die
= load_partial_dies (abfd
, info_ptr
, 1, &cu
);
1376 scan_partial_symbols (first_die
, &lowpc
, &highpc
, &cu
);
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))
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
)
1387 comp_unit_die
.lowpc
= lowpc
;
1388 comp_unit_die
.highpc
= highpc
;
1391 pst
->textlow
= comp_unit_die
.lowpc
+ baseaddr
;
1392 pst
->texthigh
= comp_unit_die
.highpc
+ baseaddr
;
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
);
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
);
1405 if (comp_unit_die
.has_stmt_list
)
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
);
1412 info_ptr
= beg_of_comp_unit
+ cu
.header
.length
1413 + cu
.header
.initial_length_size
;
1415 do_cleanups (back_to_inner
);
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
1424 scan_partial_symbols (struct partial_die_info
*first_die
, CORE_ADDR
*lowpc
,
1425 CORE_ADDR
*highpc
, struct dwarf2_cu
*cu
)
1427 struct objfile
*objfile
= cu
->objfile
;
1428 bfd
*abfd
= objfile
->obfd
;
1429 struct partial_die_info
*pdi
;
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. */
1439 fixup_partial_die (pdi
, cu
);
1441 /* Anonymous namespaces have no name but have interesting
1442 children, so we need to look at them. Ditto for anonymous
1445 if (pdi
->name
!= NULL
|| pdi
->tag
== DW_TAG_namespace
1446 || pdi
->tag
== DW_TAG_enumeration_type
)
1450 case DW_TAG_subprogram
:
1451 if (pdi
->has_pc_info
)
1453 if (pdi
->lowpc
< *lowpc
)
1455 *lowpc
= pdi
->lowpc
;
1457 if (pdi
->highpc
> *highpc
)
1459 *highpc
= pdi
->highpc
;
1461 if (!pdi
->is_declaration
)
1463 add_partial_symbol (pdi
, cu
);
1467 case DW_TAG_variable
:
1468 case DW_TAG_typedef
:
1469 case DW_TAG_union_type
:
1470 if (!pdi
->is_declaration
)
1472 add_partial_symbol (pdi
, cu
);
1475 case DW_TAG_class_type
:
1476 case DW_TAG_structure_type
:
1477 if (!pdi
->is_declaration
)
1479 add_partial_symbol (pdi
, cu
);
1482 case DW_TAG_enumeration_type
:
1483 if (!pdi
->is_declaration
)
1484 add_partial_enumeration (pdi
, cu
);
1486 case DW_TAG_base_type
:
1487 case DW_TAG_subrange_type
:
1488 /* File scope base type definitions are added to the partial
1490 add_partial_symbol (pdi
, cu
);
1492 case DW_TAG_namespace
:
1493 add_partial_namespace (pdi
, lowpc
, highpc
, cu
);
1500 /* If the die has a sibling, skip to the sibling. */
1502 pdi
= pdi
->die_sibling
;
1506 /* Functions used to compute the fully scoped name of a partial DIE.
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.
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
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. */
1530 partial_die_parent_scope (struct partial_die_info
*pdi
,
1531 struct dwarf2_cu
*cu
)
1533 char *grandparent_scope
;
1534 struct partial_die_info
*parent
, *real_pdi
;
1535 struct dwarf2_cu
*spec_cu
;
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. */
1542 while (real_pdi
->has_specification
)
1543 real_pdi
= find_partial_die (real_pdi
->spec_offset
, spec_cu
, &spec_cu
);
1545 parent
= real_pdi
->die_parent
;
1549 if (parent
->scope_set
)
1550 return parent
->scope
;
1552 fixup_partial_die (parent
, cu
);
1554 grandparent_scope
= partial_die_parent_scope (parent
, spec_cu
);
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
)
1561 if (grandparent_scope
== NULL
)
1562 parent
->scope
= parent
->name
;
1564 parent
->scope
= obconcat (&cu
->comp_unit_obstack
, grandparent_scope
,
1565 "::", parent
->name
);
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
;
1572 /* FIXME drow/2004-04-01: What should we be doing with
1573 function-local names? For partial symbols, we should probably be
1575 complaint (&symfile_complaints
,
1576 "unhandled containing DIE tag %d for DIE at %d",
1577 parent
->tag
, pdi
->offset
);
1578 parent
->scope
= grandparent_scope
;
1581 parent
->scope_set
= 1;
1582 return parent
->scope
;
1585 /* Return the fully scoped name associated with PDI, from compilation unit
1586 CU. The result will be allocated with malloc. */
1588 partial_die_full_name (struct partial_die_info
*pdi
,
1589 struct dwarf2_cu
*cu
)
1593 parent_scope
= partial_die_parent_scope (pdi
, cu
);
1594 if (parent_scope
== NULL
)
1597 return concat (parent_scope
, "::", pdi
->name
, NULL
);
1601 add_partial_symbol (struct partial_die_info
*pdi
, struct dwarf2_cu
*cu
)
1603 struct objfile
*objfile
= cu
->objfile
;
1606 const char *my_prefix
;
1607 const struct partial_symbol
*psym
= NULL
;
1609 int built_actual_name
= 0;
1611 baseaddr
= ANOFFSET (objfile
->section_offsets
, SECT_OFF_TEXT (objfile
));
1615 if (pdi_needs_namespace (pdi
->tag
))
1617 actual_name
= partial_die_full_name (pdi
, cu
);
1619 built_actual_name
= 1;
1622 if (actual_name
== NULL
)
1623 actual_name
= pdi
->name
;
1627 case DW_TAG_subprogram
:
1628 if (pdi
->is_external
)
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
);
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
);
1649 case DW_TAG_variable
:
1650 if (pdi
->is_external
)
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
1661 The address for the partial symbol table entry is not
1662 used by GDB, but it comes in handy for debugging partial symbol
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
,
1672 cu
->language
, objfile
);
1676 /* Static Variable. Skip symbols without location descriptors. */
1677 if (pdi
->locdesc
== NULL
)
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
,
1686 cu
->language
, objfile
);
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
);
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
);
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
1709 /* NOTE: carlton/2003-10-07: See comment in new_symbol about
1710 static vs. global. */
1711 if (pdi
->has_children
== 0)
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
);
1720 if (cu
->language
== language_cplus
)
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
);
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
);
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. */
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? */
1750 if (cu
->language
== language_cplus
1751 && cu
->has_namespace_info
== 0
1753 && SYMBOL_CPLUS_DEMANGLED_NAME (psym
) != NULL
)
1754 cp_check_possible_namespace_symbols (SYMBOL_CPLUS_DEMANGLED_NAME (psym
),
1757 if (built_actual_name
)
1758 xfree (actual_name
);
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. */
1766 pdi_needs_namespace (enum dwarf_tag tag
)
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
:
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. */
1788 add_partial_namespace (struct partial_die_info
*pdi
,
1789 CORE_ADDR
*lowpc
, CORE_ADDR
*highpc
,
1790 struct dwarf2_cu
*cu
)
1792 struct objfile
*objfile
= cu
->objfile
;
1794 /* Add a symbol for the namespace. */
1796 add_partial_symbol (pdi
, cu
);
1798 /* Now scan partial symbols in that namespace. */
1800 if (pdi
->has_children
)
1801 scan_partial_symbols (pdi
->die_child
, lowpc
, highpc
, cu
);
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. */
1809 guess_structure_name (struct partial_die_info
*struct_pdi
,
1810 struct dwarf2_cu
*cu
)
1812 if (cu
->language
== language_cplus
1813 && cu
->has_namespace_info
== 0
1814 && struct_pdi
->has_children
)
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). */
1822 struct partial_die_info
*child_pdi
= struct_pdi
->die_child
;
1823 struct partial_die_info
*real_pdi
;
1824 struct dwarf2_cu
*spec_cu
;
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. */
1830 real_pdi
= struct_pdi
;
1832 while (real_pdi
->has_specification
)
1833 real_pdi
= find_partial_die (real_pdi
->spec_offset
, spec_cu
, &spec_cu
);
1835 if (real_pdi
->die_parent
!= NULL
)
1838 while (child_pdi
!= NULL
)
1840 if (child_pdi
->tag
== DW_TAG_subprogram
)
1842 char *actual_class_name
1843 = language_class_name_from_physname (cu
->language_defn
,
1845 if (actual_class_name
!= NULL
)
1848 = obsavestring (actual_class_name
,
1849 strlen (actual_class_name
),
1850 &cu
->comp_unit_obstack
);
1851 xfree (actual_class_name
);
1856 child_pdi
= child_pdi
->die_sibling
;
1861 /* Read a partial die corresponding to an enumeration type. */
1864 add_partial_enumeration (struct partial_die_info
*enum_pdi
,
1865 struct dwarf2_cu
*cu
)
1867 struct objfile
*objfile
= cu
->objfile
;
1868 bfd
*abfd
= objfile
->obfd
;
1869 struct partial_die_info
*pdi
;
1871 if (enum_pdi
->name
!= NULL
)
1872 add_partial_symbol (enum_pdi
, cu
);
1874 pdi
= enum_pdi
->die_child
;
1877 if (pdi
->tag
!= DW_TAG_enumerator
|| pdi
->name
== NULL
)
1878 complaint (&symfile_complaints
, "malformed enumerator DIE ignored");
1880 add_partial_symbol (pdi
, cu
);
1881 pdi
= pdi
->die_sibling
;
1885 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit CU.
1886 Return the corresponding abbrev, or NULL if the number is zero (indicating
1887 an empty DIE). In either case *BYTES_READ will be set to the length of
1888 the initial number. */
1890 static struct abbrev_info
*
1891 peek_die_abbrev (char *info_ptr
, int *bytes_read
, struct dwarf2_cu
*cu
)
1893 bfd
*abfd
= cu
->objfile
->obfd
;
1894 unsigned int abbrev_number
;
1895 struct abbrev_info
*abbrev
;
1897 abbrev_number
= read_unsigned_leb128 (abfd
, info_ptr
, bytes_read
);
1899 if (abbrev_number
== 0)
1902 abbrev
= dwarf2_lookup_abbrev (abbrev_number
, cu
);
1905 error ("Dwarf Error: Could not find abbrev number %d [in module %s]", abbrev_number
,
1906 bfd_get_filename (abfd
));
1912 /* Scan the debug information for CU starting at INFO_PTR. Returns a
1913 pointer to the end of a series of DIEs, terminated by an empty
1914 DIE. Any children of the skipped DIEs will also be skipped. */
1917 skip_children (char *info_ptr
, struct dwarf2_cu
*cu
)
1919 struct abbrev_info
*abbrev
;
1920 unsigned int bytes_read
;
1924 abbrev
= peek_die_abbrev (info_ptr
, &bytes_read
, cu
);
1926 return info_ptr
+ bytes_read
;
1928 info_ptr
= skip_one_die (info_ptr
+ bytes_read
, abbrev
, cu
);
1932 /* Scan the debug information for CU starting at INFO_PTR. INFO_PTR
1933 should point just after the initial uleb128 of a DIE, and the
1934 abbrev corresponding to that skipped uleb128 should be passed in
1935 ABBREV. Returns a pointer to this DIE's sibling, skipping any
1939 skip_one_die (char *info_ptr
, struct abbrev_info
*abbrev
,
1940 struct dwarf2_cu
*cu
)
1942 unsigned int bytes_read
;
1943 struct attribute attr
;
1944 bfd
*abfd
= cu
->objfile
->obfd
;
1945 unsigned int form
, i
;
1947 for (i
= 0; i
< abbrev
->num_attrs
; i
++)
1949 /* The only abbrev we care about is DW_AT_sibling. */
1950 if (abbrev
->attrs
[i
].name
== DW_AT_sibling
)
1952 read_attribute (&attr
, &abbrev
->attrs
[i
],
1953 abfd
, info_ptr
, cu
);
1954 if (attr
.form
== DW_FORM_ref_addr
)
1955 complaint (&symfile_complaints
, "ignoring absolute DW_AT_sibling");
1957 return dwarf2_per_objfile
->info_buffer
1958 + dwarf2_get_ref_die_offset (&attr
, cu
);
1961 /* If it isn't DW_AT_sibling, skip this attribute. */
1962 form
= abbrev
->attrs
[i
].form
;
1967 case DW_FORM_ref_addr
:
1968 info_ptr
+= cu
->header
.addr_size
;
1987 case DW_FORM_string
:
1988 read_string (abfd
, info_ptr
, &bytes_read
);
1989 info_ptr
+= bytes_read
;
1992 info_ptr
+= cu
->header
.offset_size
;
1995 info_ptr
+= read_unsigned_leb128 (abfd
, info_ptr
, &bytes_read
);
1996 info_ptr
+= bytes_read
;
1998 case DW_FORM_block1
:
1999 info_ptr
+= 1 + read_1_byte (abfd
, info_ptr
);
2001 case DW_FORM_block2
:
2002 info_ptr
+= 2 + read_2_bytes (abfd
, info_ptr
);
2004 case DW_FORM_block4
:
2005 info_ptr
+= 4 + read_4_bytes (abfd
, info_ptr
);
2009 case DW_FORM_ref_udata
:
2010 info_ptr
= skip_leb128 (abfd
, info_ptr
);
2012 case DW_FORM_indirect
:
2013 form
= read_unsigned_leb128 (abfd
, info_ptr
, &bytes_read
);
2014 info_ptr
+= bytes_read
;
2015 /* We need to continue parsing from here, so just go back to
2017 goto skip_attribute
;
2020 error ("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]",
2021 dwarf_form_name (form
),
2022 bfd_get_filename (abfd
));
2026 if (abbrev
->has_children
)
2027 return skip_children (info_ptr
, cu
);
2032 /* Locate ORIG_PDI's sibling; INFO_PTR should point to the start of
2033 the next DIE after ORIG_PDI. */
2036 locate_pdi_sibling (struct partial_die_info
*orig_pdi
, char *info_ptr
,
2037 bfd
*abfd
, struct dwarf2_cu
*cu
)
2039 /* Do we know the sibling already? */
2041 if (orig_pdi
->sibling
)
2042 return orig_pdi
->sibling
;
2044 /* Are there any children to deal with? */
2046 if (!orig_pdi
->has_children
)
2049 /* Skip the children the long way. */
2051 return skip_children (info_ptr
, cu
);
2054 /* Expand this partial symbol table into a full symbol table. */
2057 dwarf2_psymtab_to_symtab (struct partial_symtab
*pst
)
2059 /* FIXME: This is barely more than a stub. */
2064 warning ("bug: psymtab for %s is already read in.", pst
->filename
);
2070 printf_filtered ("Reading in symbols for %s...", pst
->filename
);
2071 gdb_flush (gdb_stdout
);
2074 psymtab_to_symtab_1 (pst
);
2076 /* Finish up the debug error message. */
2078 printf_filtered ("done.\n");
2084 psymtab_to_symtab_1 (struct partial_symtab
*pst
)
2086 struct objfile
*objfile
= pst
->objfile
;
2087 bfd
*abfd
= objfile
->obfd
;
2088 struct dwarf2_cu cu
;
2089 struct die_info
*dies
;
2090 unsigned long offset
;
2091 CORE_ADDR lowpc
, highpc
;
2092 struct die_info
*child_die
;
2094 struct symtab
*symtab
;
2095 struct cleanup
*back_to
;
2096 struct attribute
*attr
;
2100 for (i
= 0; i
< pst
->number_of_dependencies
; i
++)
2101 if (!pst
->dependencies
[i
]->readin
)
2103 /* Inform about additional files that need to be read in. */
2106 fputs_filtered (" ", gdb_stdout
);
2108 fputs_filtered ("and ", gdb_stdout
);
2110 printf_filtered ("%s...", pst
->dependencies
[i
]->filename
);
2111 wrap_here (""); /* Flush output */
2112 gdb_flush (gdb_stdout
);
2114 psymtab_to_symtab_1 (pst
->dependencies
[i
]);
2117 if (pst
->read_symtab_private
== NULL
)
2119 /* It's an include file, no symbols to read for it.
2120 Everything is in the parent symtab. */
2125 dwarf2_per_objfile
= objfile_data (pst
->objfile
, dwarf2_objfile_data_key
);
2127 /* Set local variables from the partial symbol table info. */
2128 offset
= DWARF_INFO_OFFSET (pst
);
2130 info_ptr
= dwarf2_per_objfile
->info_buffer
+ offset
;
2131 baseaddr
= ANOFFSET (objfile
->section_offsets
, SECT_OFF_TEXT (objfile
));
2133 /* We're in the global namespace. */
2134 processing_current_prefix
= "";
2136 obstack_init (&cu
.comp_unit_obstack
);
2137 back_to
= make_cleanup (free_stack_comp_unit
, &cu
);
2140 make_cleanup (really_free_pendings
, NULL
);
2142 cu
.objfile
= objfile
;
2144 /* read in the comp_unit header */
2145 info_ptr
= read_comp_unit_head (&cu
.header
, info_ptr
, abfd
);
2147 /* Read the abbrevs for this compilation unit */
2148 dwarf2_read_abbrevs (abfd
, &cu
);
2149 make_cleanup (dwarf2_free_abbrev_table
, &cu
);
2151 cu
.header
.offset
= offset
;
2153 cu
.list_in_scope
= &file_symbols
;
2155 dies
= read_comp_unit (info_ptr
, abfd
, &cu
);
2157 make_cleanup_free_die_list (dies
);
2159 /* Find the base address of the compilation unit for range lists and
2160 location lists. It will normally be specified by DW_AT_low_pc.
2161 In DWARF-3 draft 4, the base address could be overridden by
2162 DW_AT_entry_pc. It's been removed, but GCC still uses this for
2163 compilation units with discontinuous ranges. */
2165 cu
.header
.base_known
= 0;
2166 cu
.header
.base_address
= 0;
2168 attr
= dwarf2_attr (dies
, DW_AT_entry_pc
, &cu
);
2171 cu
.header
.base_address
= DW_ADDR (attr
);
2172 cu
.header
.base_known
= 1;
2176 attr
= dwarf2_attr (dies
, DW_AT_low_pc
, &cu
);
2179 cu
.header
.base_address
= DW_ADDR (attr
);
2180 cu
.header
.base_known
= 1;
2184 /* Do line number decoding in read_file_scope () */
2185 process_die (dies
, &cu
);
2187 /* Some compilers don't define a DW_AT_high_pc attribute for the
2188 compilation unit. If the DW_AT_high_pc is missing, synthesize
2189 it, by scanning the DIE's below the compilation unit. */
2190 get_scope_pc_bounds (dies
, &lowpc
, &highpc
, &cu
);
2192 symtab
= end_symtab (highpc
+ baseaddr
, objfile
, SECT_OFF_TEXT (objfile
));
2194 /* Set symtab language to language from DW_AT_language.
2195 If the compilation is from a C file generated by language preprocessors,
2196 do not set the language if it was already deduced by start_subfile. */
2198 && !(cu
.language
== language_c
&& symtab
->language
!= language_c
))
2200 symtab
->language
= cu
.language
;
2202 pst
->symtab
= symtab
;
2205 do_cleanups (back_to
);
2208 /* Process a die and its children. */
2211 process_die (struct die_info
*die
, struct dwarf2_cu
*cu
)
2215 case DW_TAG_padding
:
2217 case DW_TAG_compile_unit
:
2218 read_file_scope (die
, cu
);
2220 case DW_TAG_subprogram
:
2221 read_subroutine_type (die
, cu
);
2222 read_func_scope (die
, cu
);
2224 case DW_TAG_inlined_subroutine
:
2225 /* FIXME: These are ignored for now.
2226 They could be used to set breakpoints on all inlined instances
2227 of a function and make GDB `next' properly over inlined functions. */
2229 case DW_TAG_lexical_block
:
2230 case DW_TAG_try_block
:
2231 case DW_TAG_catch_block
:
2232 read_lexical_block_scope (die
, cu
);
2234 case DW_TAG_class_type
:
2235 case DW_TAG_structure_type
:
2236 case DW_TAG_union_type
:
2237 read_structure_type (die
, cu
);
2238 process_structure_scope (die
, cu
);
2240 case DW_TAG_enumeration_type
:
2241 read_enumeration_type (die
, cu
);
2242 process_enumeration_scope (die
, cu
);
2245 /* FIXME drow/2004-03-14: These initialize die->type, but do not create
2246 a symbol or process any children. Therefore it doesn't do anything
2247 that won't be done on-demand by read_type_die. */
2248 case DW_TAG_subroutine_type
:
2249 read_subroutine_type (die
, cu
);
2251 case DW_TAG_array_type
:
2252 read_array_type (die
, cu
);
2254 case DW_TAG_pointer_type
:
2255 read_tag_pointer_type (die
, cu
);
2257 case DW_TAG_ptr_to_member_type
:
2258 read_tag_ptr_to_member_type (die
, cu
);
2260 case DW_TAG_reference_type
:
2261 read_tag_reference_type (die
, cu
);
2263 case DW_TAG_string_type
:
2264 read_tag_string_type (die
, cu
);
2268 case DW_TAG_base_type
:
2269 read_base_type (die
, cu
);
2270 /* Add a typedef symbol for the type definition, if it has a
2272 new_symbol (die
, die
->type
, cu
);
2274 case DW_TAG_subrange_type
:
2275 read_subrange_type (die
, cu
);
2276 /* Add a typedef symbol for the type definition, if it has a
2278 new_symbol (die
, die
->type
, cu
);
2280 case DW_TAG_common_block
:
2281 read_common_block (die
, cu
);
2283 case DW_TAG_common_inclusion
:
2285 case DW_TAG_namespace
:
2286 processing_has_namespace_info
= 1;
2287 read_namespace (die
, cu
);
2289 case DW_TAG_imported_declaration
:
2290 case DW_TAG_imported_module
:
2291 /* FIXME: carlton/2002-10-16: Eventually, we should use the
2292 information contained in these. DW_TAG_imported_declaration
2293 dies shouldn't have children; DW_TAG_imported_module dies
2294 shouldn't in the C++ case, but conceivably could in the
2295 Fortran case, so we'll have to replace this gdb_assert if
2296 Fortran compilers start generating that info. */
2297 processing_has_namespace_info
= 1;
2298 gdb_assert (die
->child
== NULL
);
2301 new_symbol (die
, NULL
, cu
);
2307 initialize_cu_func_list (struct dwarf2_cu
*cu
)
2309 cu
->first_fn
= cu
->last_fn
= cu
->cached_fn
= NULL
;
2313 read_file_scope (struct die_info
*die
, struct dwarf2_cu
*cu
)
2315 struct objfile
*objfile
= cu
->objfile
;
2316 struct comp_unit_head
*cu_header
= &cu
->header
;
2317 struct cleanup
*back_to
= make_cleanup (null_cleanup
, 0);
2318 CORE_ADDR lowpc
= ((CORE_ADDR
) -1);
2319 CORE_ADDR highpc
= ((CORE_ADDR
) 0);
2320 struct attribute
*attr
;
2321 char *name
= "<unknown>";
2322 char *comp_dir
= NULL
;
2323 struct die_info
*child_die
;
2324 bfd
*abfd
= objfile
->obfd
;
2325 struct line_header
*line_header
= 0;
2328 baseaddr
= ANOFFSET (objfile
->section_offsets
, SECT_OFF_TEXT (objfile
));
2330 get_scope_pc_bounds (die
, &lowpc
, &highpc
, cu
);
2332 /* If we didn't find a lowpc, set it to highpc to avoid complaints
2333 from finish_block. */
2334 if (lowpc
== ((CORE_ADDR
) -1))
2339 attr
= dwarf2_attr (die
, DW_AT_name
, cu
);
2342 name
= DW_STRING (attr
);
2344 attr
= dwarf2_attr (die
, DW_AT_comp_dir
, cu
);
2347 comp_dir
= DW_STRING (attr
);
2350 /* Irix 6.2 native cc prepends <machine>.: to the compilation
2351 directory, get rid of it. */
2352 char *cp
= strchr (comp_dir
, ':');
2354 if (cp
&& cp
!= comp_dir
&& cp
[-1] == '.' && cp
[1] == '/')
2359 attr
= dwarf2_attr (die
, DW_AT_language
, cu
);
2362 set_cu_language (DW_UNSND (attr
), cu
);
2365 /* We assume that we're processing GCC output. */
2366 processing_gcc_compilation
= 2;
2368 /* FIXME:Do something here. */
2369 if (dip
->at_producer
!= NULL
)
2371 handle_producer (dip
->at_producer
);
2375 /* The compilation unit may be in a different language or objfile,
2376 zero out all remembered fundamental types. */
2377 memset (cu
->ftypes
, 0, FT_NUM_MEMBERS
* sizeof (struct type
*));
2379 start_symtab (name
, comp_dir
, lowpc
);
2380 record_debugformat ("DWARF 2");
2382 initialize_cu_func_list (cu
);
2384 /* Process all dies in compilation unit. */
2385 if (die
->child
!= NULL
)
2387 child_die
= die
->child
;
2388 while (child_die
&& child_die
->tag
)
2390 process_die (child_die
, cu
);
2391 child_die
= sibling_die (child_die
);
2395 /* Decode line number information if present. */
2396 attr
= dwarf2_attr (die
, DW_AT_stmt_list
, cu
);
2399 unsigned int line_offset
= DW_UNSND (attr
);
2400 line_header
= dwarf_decode_line_header (line_offset
, abfd
, cu
);
2403 make_cleanup ((make_cleanup_ftype
*) free_line_header
,
2404 (void *) line_header
);
2405 dwarf_decode_lines (line_header
, comp_dir
, abfd
, cu
, NULL
);
2409 /* Decode macro information, if present. Dwarf 2 macro information
2410 refers to information in the line number info statement program
2411 header, so we can only read it if we've read the header
2413 attr
= dwarf2_attr (die
, DW_AT_macro_info
, cu
);
2414 if (attr
&& line_header
)
2416 unsigned int macro_offset
= DW_UNSND (attr
);
2417 dwarf_decode_macros (line_header
, macro_offset
,
2418 comp_dir
, abfd
, cu
);
2420 do_cleanups (back_to
);
2424 add_to_cu_func_list (const char *name
, CORE_ADDR lowpc
, CORE_ADDR highpc
,
2425 struct dwarf2_cu
*cu
)
2427 struct function_range
*thisfn
;
2429 thisfn
= (struct function_range
*)
2430 obstack_alloc (&cu
->comp_unit_obstack
, sizeof (struct function_range
));
2431 thisfn
->name
= name
;
2432 thisfn
->lowpc
= lowpc
;
2433 thisfn
->highpc
= highpc
;
2434 thisfn
->seen_line
= 0;
2435 thisfn
->next
= NULL
;
2437 if (cu
->last_fn
== NULL
)
2438 cu
->first_fn
= thisfn
;
2440 cu
->last_fn
->next
= thisfn
;
2442 cu
->last_fn
= thisfn
;
2446 read_func_scope (struct die_info
*die
, struct dwarf2_cu
*cu
)
2448 struct objfile
*objfile
= cu
->objfile
;
2449 struct context_stack
*new;
2452 struct die_info
*child_die
;
2453 struct attribute
*attr
;
2455 const char *previous_prefix
= processing_current_prefix
;
2456 struct cleanup
*back_to
= NULL
;
2459 baseaddr
= ANOFFSET (objfile
->section_offsets
, SECT_OFF_TEXT (objfile
));
2461 name
= dwarf2_linkage_name (die
, cu
);
2463 /* Ignore functions with missing or empty names and functions with
2464 missing or invalid low and high pc attributes. */
2465 if (name
== NULL
|| !dwarf2_get_pc_bounds (die
, &lowpc
, &highpc
, cu
))
2468 if (cu
->language
== language_cplus
)
2470 struct die_info
*spec_die
= die_specification (die
, cu
);
2472 /* NOTE: carlton/2004-01-23: We have to be careful in the
2473 presence of DW_AT_specification. For example, with GCC 3.4,
2478 // Definition of N::foo.
2482 then we'll have a tree of DIEs like this:
2484 1: DW_TAG_compile_unit
2485 2: DW_TAG_namespace // N
2486 3: DW_TAG_subprogram // declaration of N::foo
2487 4: DW_TAG_subprogram // definition of N::foo
2488 DW_AT_specification // refers to die #3
2490 Thus, when processing die #4, we have to pretend that we're
2491 in the context of its DW_AT_specification, namely the contex
2494 if (spec_die
!= NULL
)
2496 char *specification_prefix
= determine_prefix (spec_die
, cu
);
2497 processing_current_prefix
= specification_prefix
;
2498 back_to
= make_cleanup (xfree
, specification_prefix
);
2505 /* Record the function range for dwarf_decode_lines. */
2506 add_to_cu_func_list (name
, lowpc
, highpc
, cu
);
2508 new = push_context (0, lowpc
);
2509 new->name
= new_symbol (die
, die
->type
, cu
);
2511 /* If there is a location expression for DW_AT_frame_base, record
2513 attr
= dwarf2_attr (die
, DW_AT_frame_base
, cu
);
2515 /* FIXME: cagney/2004-01-26: The DW_AT_frame_base's location
2516 expression is being recorded directly in the function's symbol
2517 and not in a separate frame-base object. I guess this hack is
2518 to avoid adding some sort of frame-base adjunct/annex to the
2519 function's symbol :-(. The problem with doing this is that it
2520 results in a function symbol with a location expression that
2521 has nothing to do with the location of the function, ouch! The
2522 relationship should be: a function's symbol has-a frame base; a
2523 frame-base has-a location expression. */
2524 dwarf2_symbol_mark_computed (attr
, new->name
, cu
);
2526 cu
->list_in_scope
= &local_symbols
;
2528 if (die
->child
!= NULL
)
2530 child_die
= die
->child
;
2531 while (child_die
&& child_die
->tag
)
2533 process_die (child_die
, cu
);
2534 child_die
= sibling_die (child_die
);
2538 new = pop_context ();
2539 /* Make a block for the local symbols within. */
2540 finish_block (new->name
, &local_symbols
, new->old_blocks
,
2541 lowpc
, highpc
, objfile
);
2543 /* In C++, we can have functions nested inside functions (e.g., when
2544 a function declares a class that has methods). This means that
2545 when we finish processing a function scope, we may need to go
2546 back to building a containing block's symbol lists. */
2547 local_symbols
= new->locals
;
2548 param_symbols
= new->params
;
2550 /* If we've finished processing a top-level function, subsequent
2551 symbols go in the file symbol list. */
2552 if (outermost_context_p ())
2553 cu
->list_in_scope
= &file_symbols
;
2555 processing_current_prefix
= previous_prefix
;
2556 if (back_to
!= NULL
)
2557 do_cleanups (back_to
);
2560 /* Process all the DIES contained within a lexical block scope. Start
2561 a new scope, process the dies, and then close the scope. */
2564 read_lexical_block_scope (struct die_info
*die
, struct dwarf2_cu
*cu
)
2566 struct objfile
*objfile
= cu
->objfile
;
2567 struct context_stack
*new;
2568 CORE_ADDR lowpc
, highpc
;
2569 struct die_info
*child_die
;
2572 baseaddr
= ANOFFSET (objfile
->section_offsets
, SECT_OFF_TEXT (objfile
));
2574 /* Ignore blocks with missing or invalid low and high pc attributes. */
2575 /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
2576 as multiple lexical blocks? Handling children in a sane way would
2577 be nasty. Might be easier to properly extend generic blocks to
2579 if (!dwarf2_get_pc_bounds (die
, &lowpc
, &highpc
, cu
))
2584 push_context (0, lowpc
);
2585 if (die
->child
!= NULL
)
2587 child_die
= die
->child
;
2588 while (child_die
&& child_die
->tag
)
2590 process_die (child_die
, cu
);
2591 child_die
= sibling_die (child_die
);
2594 new = pop_context ();
2596 if (local_symbols
!= NULL
)
2598 finish_block (0, &local_symbols
, new->old_blocks
, new->start_addr
,
2601 local_symbols
= new->locals
;
2604 /* Get low and high pc attributes from a die. Return 1 if the attributes
2605 are present and valid, otherwise, return 0. Return -1 if the range is
2606 discontinuous, i.e. derived from DW_AT_ranges information. */
2608 dwarf2_get_pc_bounds (struct die_info
*die
, CORE_ADDR
*lowpc
,
2609 CORE_ADDR
*highpc
, struct dwarf2_cu
*cu
)
2611 struct objfile
*objfile
= cu
->objfile
;
2612 struct comp_unit_head
*cu_header
= &cu
->header
;
2613 struct attribute
*attr
;
2614 bfd
*obfd
= objfile
->obfd
;
2619 attr
= dwarf2_attr (die
, DW_AT_high_pc
, cu
);
2622 high
= DW_ADDR (attr
);
2623 attr
= dwarf2_attr (die
, DW_AT_low_pc
, cu
);
2625 low
= DW_ADDR (attr
);
2627 /* Found high w/o low attribute. */
2630 /* Found consecutive range of addresses. */
2635 attr
= dwarf2_attr (die
, DW_AT_ranges
, cu
);
2638 unsigned int addr_size
= cu_header
->addr_size
;
2639 CORE_ADDR mask
= ~(~(CORE_ADDR
)1 << (addr_size
* 8 - 1));
2640 /* Value of the DW_AT_ranges attribute is the offset in the
2641 .debug_ranges section. */
2642 unsigned int offset
= DW_UNSND (attr
);
2643 /* Base address selection entry. */
2651 found_base
= cu_header
->base_known
;
2652 base
= cu_header
->base_address
;
2654 if (offset
>= dwarf2_per_objfile
->ranges_size
)
2656 complaint (&symfile_complaints
,
2657 "Offset %d out of bounds for DW_AT_ranges attribute",
2661 buffer
= dwarf2_per_objfile
->ranges_buffer
+ offset
;
2663 /* Read in the largest possible address. */
2664 marker
= read_address (obfd
, buffer
, cu
, &dummy
);
2665 if ((marker
& mask
) == mask
)
2667 /* If we found the largest possible address, then
2668 read the base address. */
2669 base
= read_address (obfd
, buffer
+ addr_size
, cu
, &dummy
);
2670 buffer
+= 2 * addr_size
;
2671 offset
+= 2 * addr_size
;
2679 CORE_ADDR range_beginning
, range_end
;
2681 range_beginning
= read_address (obfd
, buffer
, cu
, &dummy
);
2682 buffer
+= addr_size
;
2683 range_end
= read_address (obfd
, buffer
, cu
, &dummy
);
2684 buffer
+= addr_size
;
2685 offset
+= 2 * addr_size
;
2687 /* An end of list marker is a pair of zero addresses. */
2688 if (range_beginning
== 0 && range_end
== 0)
2689 /* Found the end of list entry. */
2692 /* Each base address selection entry is a pair of 2 values.
2693 The first is the largest possible address, the second is
2694 the base address. Check for a base address here. */
2695 if ((range_beginning
& mask
) == mask
)
2697 /* If we found the largest possible address, then
2698 read the base address. */
2699 base
= read_address (obfd
, buffer
+ addr_size
, cu
, &dummy
);
2706 /* We have no valid base address for the ranges
2708 complaint (&symfile_complaints
,
2709 "Invalid .debug_ranges data (no base address)");
2713 range_beginning
+= base
;
2716 /* FIXME: This is recording everything as a low-high
2717 segment of consecutive addresses. We should have a
2718 data structure for discontiguous block ranges
2722 low
= range_beginning
;
2728 if (range_beginning
< low
)
2729 low
= range_beginning
;
2730 if (range_end
> high
)
2736 /* If the first entry is an end-of-list marker, the range
2737 describes an empty scope, i.e. no instructions. */
2747 /* When using the GNU linker, .gnu.linkonce. sections are used to
2748 eliminate duplicate copies of functions and vtables and such.
2749 The linker will arbitrarily choose one and discard the others.
2750 The AT_*_pc values for such functions refer to local labels in
2751 these sections. If the section from that file was discarded, the
2752 labels are not in the output, so the relocs get a value of 0.
2753 If this is a discarded function, mark the pc bounds as invalid,
2754 so that GDB will ignore it. */
2755 if (low
== 0 && (bfd_get_file_flags (obfd
) & HAS_RELOC
) == 0)
2763 /* Get the low and high pc's represented by the scope DIE, and store
2764 them in *LOWPC and *HIGHPC. If the correct values can't be
2765 determined, set *LOWPC to -1 and *HIGHPC to 0. */
2768 get_scope_pc_bounds (struct die_info
*die
,
2769 CORE_ADDR
*lowpc
, CORE_ADDR
*highpc
,
2770 struct dwarf2_cu
*cu
)
2772 CORE_ADDR best_low
= (CORE_ADDR
) -1;
2773 CORE_ADDR best_high
= (CORE_ADDR
) 0;
2774 CORE_ADDR current_low
, current_high
;
2776 if (dwarf2_get_pc_bounds (die
, ¤t_low
, ¤t_high
, cu
))
2778 best_low
= current_low
;
2779 best_high
= current_high
;
2783 struct die_info
*child
= die
->child
;
2785 while (child
&& child
->tag
)
2787 switch (child
->tag
) {
2788 case DW_TAG_subprogram
:
2789 if (dwarf2_get_pc_bounds (child
, ¤t_low
, ¤t_high
, cu
))
2791 best_low
= min (best_low
, current_low
);
2792 best_high
= max (best_high
, current_high
);
2795 case DW_TAG_namespace
:
2796 /* FIXME: carlton/2004-01-16: Should we do this for
2797 DW_TAG_class_type/DW_TAG_structure_type, too? I think
2798 that current GCC's always emit the DIEs corresponding
2799 to definitions of methods of classes as children of a
2800 DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
2801 the DIEs giving the declarations, which could be
2802 anywhere). But I don't see any reason why the
2803 standards says that they have to be there. */
2804 get_scope_pc_bounds (child
, ¤t_low
, ¤t_high
, cu
);
2806 if (current_low
!= ((CORE_ADDR
) -1))
2808 best_low
= min (best_low
, current_low
);
2809 best_high
= max (best_high
, current_high
);
2817 child
= sibling_die (child
);
2822 *highpc
= best_high
;
2825 /* Add an aggregate field to the field list. */
2828 dwarf2_add_field (struct field_info
*fip
, struct die_info
*die
,
2829 struct dwarf2_cu
*cu
)
2831 struct objfile
*objfile
= cu
->objfile
;
2832 struct nextfield
*new_field
;
2833 struct attribute
*attr
;
2835 char *fieldname
= "";
2837 /* Allocate a new field list entry and link it in. */
2838 new_field
= (struct nextfield
*) xmalloc (sizeof (struct nextfield
));
2839 make_cleanup (xfree
, new_field
);
2840 memset (new_field
, 0, sizeof (struct nextfield
));
2841 new_field
->next
= fip
->fields
;
2842 fip
->fields
= new_field
;
2845 /* Handle accessibility and virtuality of field.
2846 The default accessibility for members is public, the default
2847 accessibility for inheritance is private. */
2848 if (die
->tag
!= DW_TAG_inheritance
)
2849 new_field
->accessibility
= DW_ACCESS_public
;
2851 new_field
->accessibility
= DW_ACCESS_private
;
2852 new_field
->virtuality
= DW_VIRTUALITY_none
;
2854 attr
= dwarf2_attr (die
, DW_AT_accessibility
, cu
);
2856 new_field
->accessibility
= DW_UNSND (attr
);
2857 if (new_field
->accessibility
!= DW_ACCESS_public
)
2858 fip
->non_public_fields
= 1;
2859 attr
= dwarf2_attr (die
, DW_AT_virtuality
, cu
);
2861 new_field
->virtuality
= DW_UNSND (attr
);
2863 fp
= &new_field
->field
;
2865 if (die
->tag
== DW_TAG_member
&& ! die_is_declaration (die
, cu
))
2867 /* Data member other than a C++ static data member. */
2869 /* Get type of field. */
2870 fp
->type
= die_type (die
, cu
);
2872 FIELD_STATIC_KIND (*fp
) = 0;
2874 /* Get bit size of field (zero if none). */
2875 attr
= dwarf2_attr (die
, DW_AT_bit_size
, cu
);
2878 FIELD_BITSIZE (*fp
) = DW_UNSND (attr
);
2882 FIELD_BITSIZE (*fp
) = 0;
2885 /* Get bit offset of field. */
2886 attr
= dwarf2_attr (die
, DW_AT_data_member_location
, cu
);
2889 FIELD_BITPOS (*fp
) =
2890 decode_locdesc (DW_BLOCK (attr
), cu
) * bits_per_byte
;
2893 FIELD_BITPOS (*fp
) = 0;
2894 attr
= dwarf2_attr (die
, DW_AT_bit_offset
, cu
);
2897 if (BITS_BIG_ENDIAN
)
2899 /* For big endian bits, the DW_AT_bit_offset gives the
2900 additional bit offset from the MSB of the containing
2901 anonymous object to the MSB of the field. We don't
2902 have to do anything special since we don't need to
2903 know the size of the anonymous object. */
2904 FIELD_BITPOS (*fp
) += DW_UNSND (attr
);
2908 /* For little endian bits, compute the bit offset to the
2909 MSB of the anonymous object, subtract off the number of
2910 bits from the MSB of the field to the MSB of the
2911 object, and then subtract off the number of bits of
2912 the field itself. The result is the bit offset of
2913 the LSB of the field. */
2915 int bit_offset
= DW_UNSND (attr
);
2917 attr
= dwarf2_attr (die
, DW_AT_byte_size
, cu
);
2920 /* The size of the anonymous object containing
2921 the bit field is explicit, so use the
2922 indicated size (in bytes). */
2923 anonymous_size
= DW_UNSND (attr
);
2927 /* The size of the anonymous object containing
2928 the bit field must be inferred from the type
2929 attribute of the data member containing the
2931 anonymous_size
= TYPE_LENGTH (fp
->type
);
2933 FIELD_BITPOS (*fp
) += anonymous_size
* bits_per_byte
2934 - bit_offset
- FIELD_BITSIZE (*fp
);
2938 /* Get name of field. */
2939 attr
= dwarf2_attr (die
, DW_AT_name
, cu
);
2940 if (attr
&& DW_STRING (attr
))
2941 fieldname
= DW_STRING (attr
);
2943 /* The name is already allocated along with this objfile, so we don't
2944 need to duplicate it for the type. */
2945 fp
->name
= fieldname
;
2947 /* Change accessibility for artificial fields (e.g. virtual table
2948 pointer or virtual base class pointer) to private. */
2949 if (dwarf2_attr (die
, DW_AT_artificial
, cu
))
2951 new_field
->accessibility
= DW_ACCESS_private
;
2952 fip
->non_public_fields
= 1;
2955 else if (die
->tag
== DW_TAG_member
|| die
->tag
== DW_TAG_variable
)
2957 /* C++ static member. */
2959 /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
2960 is a declaration, but all versions of G++ as of this writing
2961 (so through at least 3.2.1) incorrectly generate
2962 DW_TAG_variable tags. */
2966 /* Get name of field. */
2967 attr
= dwarf2_attr (die
, DW_AT_name
, cu
);
2968 if (attr
&& DW_STRING (attr
))
2969 fieldname
= DW_STRING (attr
);
2973 /* Get physical name. */
2974 physname
= dwarf2_linkage_name (die
, cu
);
2976 /* The name is already allocated along with this objfile, so we don't
2977 need to duplicate it for the type. */
2978 SET_FIELD_PHYSNAME (*fp
, physname
? physname
: "");
2979 FIELD_TYPE (*fp
) = die_type (die
, cu
);
2980 FIELD_NAME (*fp
) = fieldname
;
2982 else if (die
->tag
== DW_TAG_inheritance
)
2984 /* C++ base class field. */
2985 attr
= dwarf2_attr (die
, DW_AT_data_member_location
, cu
);
2987 FIELD_BITPOS (*fp
) = (decode_locdesc (DW_BLOCK (attr
), cu
)
2989 FIELD_BITSIZE (*fp
) = 0;
2990 FIELD_STATIC_KIND (*fp
) = 0;
2991 FIELD_TYPE (*fp
) = die_type (die
, cu
);
2992 FIELD_NAME (*fp
) = type_name_no_tag (fp
->type
);
2993 fip
->nbaseclasses
++;
2997 /* Create the vector of fields, and attach it to the type. */
3000 dwarf2_attach_fields_to_type (struct field_info
*fip
, struct type
*type
,
3001 struct dwarf2_cu
*cu
)
3003 int nfields
= fip
->nfields
;
3005 /* Record the field count, allocate space for the array of fields,
3006 and create blank accessibility bitfields if necessary. */
3007 TYPE_NFIELDS (type
) = nfields
;
3008 TYPE_FIELDS (type
) = (struct field
*)
3009 TYPE_ALLOC (type
, sizeof (struct field
) * nfields
);
3010 memset (TYPE_FIELDS (type
), 0, sizeof (struct field
) * nfields
);
3012 if (fip
->non_public_fields
)
3014 ALLOCATE_CPLUS_STRUCT_TYPE (type
);
3016 TYPE_FIELD_PRIVATE_BITS (type
) =
3017 (B_TYPE
*) TYPE_ALLOC (type
, B_BYTES (nfields
));
3018 B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type
), nfields
);
3020 TYPE_FIELD_PROTECTED_BITS (type
) =
3021 (B_TYPE
*) TYPE_ALLOC (type
, B_BYTES (nfields
));
3022 B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type
), nfields
);
3024 TYPE_FIELD_IGNORE_BITS (type
) =
3025 (B_TYPE
*) TYPE_ALLOC (type
, B_BYTES (nfields
));
3026 B_CLRALL (TYPE_FIELD_IGNORE_BITS (type
), nfields
);
3029 /* If the type has baseclasses, allocate and clear a bit vector for
3030 TYPE_FIELD_VIRTUAL_BITS. */
3031 if (fip
->nbaseclasses
)
3033 int num_bytes
= B_BYTES (fip
->nbaseclasses
);
3036 ALLOCATE_CPLUS_STRUCT_TYPE (type
);
3037 pointer
= (char *) TYPE_ALLOC (type
, num_bytes
);
3038 TYPE_FIELD_VIRTUAL_BITS (type
) = (B_TYPE
*) pointer
;
3039 B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type
), fip
->nbaseclasses
);
3040 TYPE_N_BASECLASSES (type
) = fip
->nbaseclasses
;
3043 /* Copy the saved-up fields into the field vector. Start from the head
3044 of the list, adding to the tail of the field array, so that they end
3045 up in the same order in the array in which they were added to the list. */
3046 while (nfields
-- > 0)
3048 TYPE_FIELD (type
, nfields
) = fip
->fields
->field
;
3049 switch (fip
->fields
->accessibility
)
3051 case DW_ACCESS_private
:
3052 SET_TYPE_FIELD_PRIVATE (type
, nfields
);
3055 case DW_ACCESS_protected
:
3056 SET_TYPE_FIELD_PROTECTED (type
, nfields
);
3059 case DW_ACCESS_public
:
3063 /* Unknown accessibility. Complain and treat it as public. */
3065 complaint (&symfile_complaints
, "unsupported accessibility %d",
3066 fip
->fields
->accessibility
);
3070 if (nfields
< fip
->nbaseclasses
)
3072 switch (fip
->fields
->virtuality
)
3074 case DW_VIRTUALITY_virtual
:
3075 case DW_VIRTUALITY_pure_virtual
:
3076 SET_TYPE_FIELD_VIRTUAL (type
, nfields
);
3080 fip
->fields
= fip
->fields
->next
;
3084 /* Add a member function to the proper fieldlist. */
3087 dwarf2_add_member_fn (struct field_info
*fip
, struct die_info
*die
,
3088 struct type
*type
, struct dwarf2_cu
*cu
)
3090 struct objfile
*objfile
= cu
->objfile
;
3091 struct attribute
*attr
;
3092 struct fnfieldlist
*flp
;
3094 struct fn_field
*fnp
;
3097 struct nextfnfield
*new_fnfield
;
3099 /* Get name of member function. */
3100 attr
= dwarf2_attr (die
, DW_AT_name
, cu
);
3101 if (attr
&& DW_STRING (attr
))
3102 fieldname
= DW_STRING (attr
);
3106 /* Get the mangled name. */
3107 physname
= dwarf2_linkage_name (die
, cu
);
3109 /* Look up member function name in fieldlist. */
3110 for (i
= 0; i
< fip
->nfnfields
; i
++)
3112 if (strcmp (fip
->fnfieldlists
[i
].name
, fieldname
) == 0)
3116 /* Create new list element if necessary. */
3117 if (i
< fip
->nfnfields
)
3118 flp
= &fip
->fnfieldlists
[i
];
3121 if ((fip
->nfnfields
% DW_FIELD_ALLOC_CHUNK
) == 0)
3123 fip
->fnfieldlists
= (struct fnfieldlist
*)
3124 xrealloc (fip
->fnfieldlists
,
3125 (fip
->nfnfields
+ DW_FIELD_ALLOC_CHUNK
)
3126 * sizeof (struct fnfieldlist
));
3127 if (fip
->nfnfields
== 0)
3128 make_cleanup (free_current_contents
, &fip
->fnfieldlists
);
3130 flp
= &fip
->fnfieldlists
[fip
->nfnfields
];
3131 flp
->name
= fieldname
;
3137 /* Create a new member function field and chain it to the field list
3139 new_fnfield
= (struct nextfnfield
*) xmalloc (sizeof (struct nextfnfield
));
3140 make_cleanup (xfree
, new_fnfield
);
3141 memset (new_fnfield
, 0, sizeof (struct nextfnfield
));
3142 new_fnfield
->next
= flp
->head
;
3143 flp
->head
= new_fnfield
;
3146 /* Fill in the member function field info. */
3147 fnp
= &new_fnfield
->fnfield
;
3148 /* The name is already allocated along with this objfile, so we don't
3149 need to duplicate it for the type. */
3150 fnp
->physname
= physname
? physname
: "";
3151 fnp
->type
= alloc_type (objfile
);
3152 if (die
->type
&& TYPE_CODE (die
->type
) == TYPE_CODE_FUNC
)
3154 int nparams
= TYPE_NFIELDS (die
->type
);
3156 /* TYPE is the domain of this method, and DIE->TYPE is the type
3157 of the method itself (TYPE_CODE_METHOD). */
3158 smash_to_method_type (fnp
->type
, type
,
3159 TYPE_TARGET_TYPE (die
->type
),
3160 TYPE_FIELDS (die
->type
),
3161 TYPE_NFIELDS (die
->type
),
3162 TYPE_VARARGS (die
->type
));
3164 /* Handle static member functions.
3165 Dwarf2 has no clean way to discern C++ static and non-static
3166 member functions. G++ helps GDB by marking the first
3167 parameter for non-static member functions (which is the
3168 this pointer) as artificial. We obtain this information
3169 from read_subroutine_type via TYPE_FIELD_ARTIFICIAL. */
3170 if (nparams
== 0 || TYPE_FIELD_ARTIFICIAL (die
->type
, 0) == 0)
3171 fnp
->voffset
= VOFFSET_STATIC
;
3174 complaint (&symfile_complaints
, "member function type missing for '%s'",
3177 /* Get fcontext from DW_AT_containing_type if present. */
3178 if (dwarf2_attr (die
, DW_AT_containing_type
, cu
) != NULL
)
3179 fnp
->fcontext
= die_containing_type (die
, cu
);
3181 /* dwarf2 doesn't have stubbed physical names, so the setting of is_const
3182 and is_volatile is irrelevant, as it is needed by gdb_mangle_name only. */
3184 /* Get accessibility. */
3185 attr
= dwarf2_attr (die
, DW_AT_accessibility
, cu
);
3188 switch (DW_UNSND (attr
))
3190 case DW_ACCESS_private
:
3191 fnp
->is_private
= 1;
3193 case DW_ACCESS_protected
:
3194 fnp
->is_protected
= 1;
3199 /* Check for artificial methods. */
3200 attr
= dwarf2_attr (die
, DW_AT_artificial
, cu
);
3201 if (attr
&& DW_UNSND (attr
) != 0)
3202 fnp
->is_artificial
= 1;
3204 /* Get index in virtual function table if it is a virtual member function. */
3205 attr
= dwarf2_attr (die
, DW_AT_vtable_elem_location
, cu
);
3208 /* Support the .debug_loc offsets */
3209 if (attr_form_is_block (attr
))
3211 fnp
->voffset
= decode_locdesc (DW_BLOCK (attr
), cu
) + 2;
3213 else if (attr
->form
== DW_FORM_data4
|| attr
->form
== DW_FORM_data8
)
3215 dwarf2_complex_location_expr_complaint ();
3219 dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
3225 /* Create the vector of member function fields, and attach it to the type. */
3228 dwarf2_attach_fn_fields_to_type (struct field_info
*fip
, struct type
*type
,
3229 struct dwarf2_cu
*cu
)
3231 struct fnfieldlist
*flp
;
3232 int total_length
= 0;
3235 ALLOCATE_CPLUS_STRUCT_TYPE (type
);
3236 TYPE_FN_FIELDLISTS (type
) = (struct fn_fieldlist
*)
3237 TYPE_ALLOC (type
, sizeof (struct fn_fieldlist
) * fip
->nfnfields
);
3239 for (i
= 0, flp
= fip
->fnfieldlists
; i
< fip
->nfnfields
; i
++, flp
++)
3241 struct nextfnfield
*nfp
= flp
->head
;
3242 struct fn_fieldlist
*fn_flp
= &TYPE_FN_FIELDLIST (type
, i
);
3245 TYPE_FN_FIELDLIST_NAME (type
, i
) = flp
->name
;
3246 TYPE_FN_FIELDLIST_LENGTH (type
, i
) = flp
->length
;
3247 fn_flp
->fn_fields
= (struct fn_field
*)
3248 TYPE_ALLOC (type
, sizeof (struct fn_field
) * flp
->length
);
3249 for (k
= flp
->length
; (k
--, nfp
); nfp
= nfp
->next
)
3250 fn_flp
->fn_fields
[k
] = nfp
->fnfield
;
3252 total_length
+= flp
->length
;
3255 TYPE_NFN_FIELDS (type
) = fip
->nfnfields
;
3256 TYPE_NFN_FIELDS_TOTAL (type
) = total_length
;
3259 /* Called when we find the DIE that starts a structure or union scope
3260 (definition) to process all dies that define the members of the
3263 NOTE: we need to call struct_type regardless of whether or not the
3264 DIE has an at_name attribute, since it might be an anonymous
3265 structure or union. This gets the type entered into our set of
3268 However, if the structure is incomplete (an opaque struct/union)
3269 then suppress creating a symbol table entry for it since gdb only
3270 wants to find the one with the complete definition. Note that if
3271 it is complete, we just call new_symbol, which does it's own
3272 checking about whether the struct/union is anonymous or not (and
3273 suppresses creating a symbol table entry itself). */
3276 read_structure_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
3278 struct objfile
*objfile
= cu
->objfile
;
3280 struct attribute
*attr
;
3281 const char *previous_prefix
= processing_current_prefix
;
3282 struct cleanup
*back_to
= NULL
;
3287 type
= alloc_type (objfile
);
3289 INIT_CPLUS_SPECIFIC (type
);
3290 attr
= dwarf2_attr (die
, DW_AT_name
, cu
);
3291 if (attr
&& DW_STRING (attr
))
3293 if (cu
->language
== language_cplus
)
3295 char *new_prefix
= determine_class_name (die
, cu
);
3296 TYPE_TAG_NAME (type
) = obsavestring (new_prefix
,
3297 strlen (new_prefix
),
3298 &objfile
->objfile_obstack
);
3299 back_to
= make_cleanup (xfree
, new_prefix
);
3300 processing_current_prefix
= new_prefix
;
3304 /* The name is already allocated along with this objfile, so
3305 we don't need to duplicate it for the type. */
3306 TYPE_TAG_NAME (type
) = DW_STRING (attr
);
3310 if (die
->tag
== DW_TAG_structure_type
)
3312 TYPE_CODE (type
) = TYPE_CODE_STRUCT
;
3314 else if (die
->tag
== DW_TAG_union_type
)
3316 TYPE_CODE (type
) = TYPE_CODE_UNION
;
3320 /* FIXME: TYPE_CODE_CLASS is currently defined to TYPE_CODE_STRUCT
3322 TYPE_CODE (type
) = TYPE_CODE_CLASS
;
3325 attr
= dwarf2_attr (die
, DW_AT_byte_size
, cu
);
3328 TYPE_LENGTH (type
) = DW_UNSND (attr
);
3332 TYPE_LENGTH (type
) = 0;
3335 if (die_is_declaration (die
, cu
))
3336 TYPE_FLAGS (type
) |= TYPE_FLAG_STUB
;
3338 /* We need to add the type field to the die immediately so we don't
3339 infinitely recurse when dealing with pointers to the structure
3340 type within the structure itself. */
3343 if (die
->child
!= NULL
&& ! die_is_declaration (die
, cu
))
3345 struct field_info fi
;
3346 struct die_info
*child_die
;
3347 struct cleanup
*back_to
= make_cleanup (null_cleanup
, NULL
);
3349 memset (&fi
, 0, sizeof (struct field_info
));
3351 child_die
= die
->child
;
3353 while (child_die
&& child_die
->tag
)
3355 if (child_die
->tag
== DW_TAG_member
3356 || child_die
->tag
== DW_TAG_variable
)
3358 /* NOTE: carlton/2002-11-05: A C++ static data member
3359 should be a DW_TAG_member that is a declaration, but
3360 all versions of G++ as of this writing (so through at
3361 least 3.2.1) incorrectly generate DW_TAG_variable
3362 tags for them instead. */
3363 dwarf2_add_field (&fi
, child_die
, cu
);
3365 else if (child_die
->tag
== DW_TAG_subprogram
)
3367 /* C++ member function. */
3368 read_type_die (child_die
, cu
);
3369 dwarf2_add_member_fn (&fi
, child_die
, type
, cu
);
3371 else if (child_die
->tag
== DW_TAG_inheritance
)
3373 /* C++ base class field. */
3374 dwarf2_add_field (&fi
, child_die
, cu
);
3376 child_die
= sibling_die (child_die
);
3379 /* Attach fields and member functions to the type. */
3381 dwarf2_attach_fields_to_type (&fi
, type
, cu
);
3384 dwarf2_attach_fn_fields_to_type (&fi
, type
, cu
);
3386 /* Get the type which refers to the base class (possibly this
3387 class itself) which contains the vtable pointer for the current
3388 class from the DW_AT_containing_type attribute. */
3390 if (dwarf2_attr (die
, DW_AT_containing_type
, cu
) != NULL
)
3392 struct type
*t
= die_containing_type (die
, cu
);
3394 TYPE_VPTR_BASETYPE (type
) = t
;
3397 static const char vptr_name
[] =
3398 {'_', 'v', 'p', 't', 'r', '\0'};
3401 /* Our own class provides vtbl ptr. */
3402 for (i
= TYPE_NFIELDS (t
) - 1;
3403 i
>= TYPE_N_BASECLASSES (t
);
3406 char *fieldname
= TYPE_FIELD_NAME (t
, i
);
3408 if ((strncmp (fieldname
, vptr_name
,
3409 strlen (vptr_name
) - 1)
3411 && is_cplus_marker (fieldname
[strlen (vptr_name
)]))
3413 TYPE_VPTR_FIELDNO (type
) = i
;
3418 /* Complain if virtual function table field not found. */
3419 if (i
< TYPE_N_BASECLASSES (t
))
3420 complaint (&symfile_complaints
,
3421 "virtual function table pointer not found when defining class '%s'",
3422 TYPE_TAG_NAME (type
) ? TYPE_TAG_NAME (type
) :
3427 TYPE_VPTR_FIELDNO (type
) = TYPE_VPTR_FIELDNO (t
);
3432 do_cleanups (back_to
);
3435 processing_current_prefix
= previous_prefix
;
3436 if (back_to
!= NULL
)
3437 do_cleanups (back_to
);
3441 process_structure_scope (struct die_info
*die
, struct dwarf2_cu
*cu
)
3443 struct objfile
*objfile
= cu
->objfile
;
3444 const char *previous_prefix
= processing_current_prefix
;
3445 struct die_info
*child_die
= die
->child
;
3447 if (TYPE_TAG_NAME (die
->type
) != NULL
)
3448 processing_current_prefix
= TYPE_TAG_NAME (die
->type
);
3450 /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
3451 snapshots) has been known to create a die giving a declaration
3452 for a class that has, as a child, a die giving a definition for a
3453 nested class. So we have to process our children even if the
3454 current die is a declaration. Normally, of course, a declaration
3455 won't have any children at all. */
3457 while (child_die
!= NULL
&& child_die
->tag
)
3459 if (child_die
->tag
== DW_TAG_member
3460 || child_die
->tag
== DW_TAG_variable
3461 || child_die
->tag
== DW_TAG_inheritance
)
3466 process_die (child_die
, cu
);
3468 child_die
= sibling_die (child_die
);
3471 if (die
->child
!= NULL
&& ! die_is_declaration (die
, cu
))
3472 new_symbol (die
, die
->type
, cu
);
3474 processing_current_prefix
= previous_prefix
;
3477 /* Given a DW_AT_enumeration_type die, set its type. We do not
3478 complete the type's fields yet, or create any symbols. */
3481 read_enumeration_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
3483 struct objfile
*objfile
= cu
->objfile
;
3485 struct attribute
*attr
;
3490 type
= alloc_type (objfile
);
3492 TYPE_CODE (type
) = TYPE_CODE_ENUM
;
3493 attr
= dwarf2_attr (die
, DW_AT_name
, cu
);
3494 if (attr
&& DW_STRING (attr
))
3496 char *name
= DW_STRING (attr
);
3498 if (processing_has_namespace_info
)
3500 TYPE_TAG_NAME (type
) = obconcat (&objfile
->objfile_obstack
,
3501 processing_current_prefix
,
3502 processing_current_prefix
[0] == '\0'
3508 /* The name is already allocated along with this objfile, so
3509 we don't need to duplicate it for the type. */
3510 TYPE_TAG_NAME (type
) = name
;
3514 attr
= dwarf2_attr (die
, DW_AT_byte_size
, cu
);
3517 TYPE_LENGTH (type
) = DW_UNSND (attr
);
3521 TYPE_LENGTH (type
) = 0;
3527 /* Determine the name of the type represented by DIE, which should be
3528 a named C++ compound type. Return the name in question; the caller
3529 is responsible for xfree()'ing it. */
3532 determine_class_name (struct die_info
*die
, struct dwarf2_cu
*cu
)
3534 struct cleanup
*back_to
= NULL
;
3535 struct die_info
*spec_die
= die_specification (die
, cu
);
3536 char *new_prefix
= NULL
;
3538 /* If this is the definition of a class that is declared by another
3539 die, then processing_current_prefix may not be accurate; see
3540 read_func_scope for a similar example. */
3541 if (spec_die
!= NULL
)
3543 char *specification_prefix
= determine_prefix (spec_die
, cu
);
3544 processing_current_prefix
= specification_prefix
;
3545 back_to
= make_cleanup (xfree
, specification_prefix
);
3548 /* If we don't have namespace debug info, guess the name by trying
3549 to demangle the names of members, just like we did in
3550 guess_structure_name. */
3551 if (!processing_has_namespace_info
)
3553 struct die_info
*child
;
3555 for (child
= die
->child
;
3556 child
!= NULL
&& child
->tag
!= 0;
3557 child
= sibling_die (child
))
3559 if (child
->tag
== DW_TAG_subprogram
)
3562 = language_class_name_from_physname (cu
->language_defn
,
3566 if (new_prefix
!= NULL
)
3572 if (new_prefix
== NULL
)
3574 const char *name
= dwarf2_name (die
, cu
);
3575 new_prefix
= typename_concat (processing_current_prefix
,
3576 name
? name
: "<<anonymous>>");
3579 if (back_to
!= NULL
)
3580 do_cleanups (back_to
);
3585 /* Given a pointer to a die which begins an enumeration, process all
3586 the dies that define the members of the enumeration, and create the
3587 symbol for the enumeration type.
3589 NOTE: We reverse the order of the element list. */
3592 process_enumeration_scope (struct die_info
*die
, struct dwarf2_cu
*cu
)
3594 struct objfile
*objfile
= cu
->objfile
;
3595 struct die_info
*child_die
;
3596 struct field
*fields
;
3597 struct attribute
*attr
;
3600 int unsigned_enum
= 1;
3604 if (die
->child
!= NULL
)
3606 child_die
= die
->child
;
3607 while (child_die
&& child_die
->tag
)
3609 if (child_die
->tag
!= DW_TAG_enumerator
)
3611 process_die (child_die
, cu
);
3615 attr
= dwarf2_attr (child_die
, DW_AT_name
, cu
);
3618 sym
= new_symbol (child_die
, die
->type
, cu
);
3619 if (SYMBOL_VALUE (sym
) < 0)
3622 if ((num_fields
% DW_FIELD_ALLOC_CHUNK
) == 0)
3624 fields
= (struct field
*)
3626 (num_fields
+ DW_FIELD_ALLOC_CHUNK
)
3627 * sizeof (struct field
));
3630 FIELD_NAME (fields
[num_fields
]) = DEPRECATED_SYMBOL_NAME (sym
);
3631 FIELD_TYPE (fields
[num_fields
]) = NULL
;
3632 FIELD_BITPOS (fields
[num_fields
]) = SYMBOL_VALUE (sym
);
3633 FIELD_BITSIZE (fields
[num_fields
]) = 0;
3634 FIELD_STATIC_KIND (fields
[num_fields
]) = 0;
3640 child_die
= sibling_die (child_die
);
3645 TYPE_NFIELDS (die
->type
) = num_fields
;
3646 TYPE_FIELDS (die
->type
) = (struct field
*)
3647 TYPE_ALLOC (die
->type
, sizeof (struct field
) * num_fields
);
3648 memcpy (TYPE_FIELDS (die
->type
), fields
,
3649 sizeof (struct field
) * num_fields
);
3653 TYPE_FLAGS (die
->type
) |= TYPE_FLAG_UNSIGNED
;
3656 new_symbol (die
, die
->type
, cu
);
3659 /* Extract all information from a DW_TAG_array_type DIE and put it in
3660 the DIE's type field. For now, this only handles one dimensional
3664 read_array_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
3666 struct objfile
*objfile
= cu
->objfile
;
3667 struct die_info
*child_die
;
3668 struct type
*type
= NULL
;
3669 struct type
*element_type
, *range_type
, *index_type
;
3670 struct type
**range_types
= NULL
;
3671 struct attribute
*attr
;
3673 struct cleanup
*back_to
;
3675 /* Return if we've already decoded this type. */
3681 element_type
= die_type (die
, cu
);
3683 /* Irix 6.2 native cc creates array types without children for
3684 arrays with unspecified length. */
3685 if (die
->child
== NULL
)
3687 index_type
= dwarf2_fundamental_type (objfile
, FT_INTEGER
, cu
);
3688 range_type
= create_range_type (NULL
, index_type
, 0, -1);
3689 die
->type
= create_array_type (NULL
, element_type
, range_type
);
3693 back_to
= make_cleanup (null_cleanup
, NULL
);
3694 child_die
= die
->child
;
3695 while (child_die
&& child_die
->tag
)
3697 if (child_die
->tag
== DW_TAG_subrange_type
)
3699 read_subrange_type (child_die
, cu
);
3701 if (child_die
->type
!= NULL
)
3703 /* The range type was succesfully read. Save it for
3704 the array type creation. */
3705 if ((ndim
% DW_FIELD_ALLOC_CHUNK
) == 0)
3707 range_types
= (struct type
**)
3708 xrealloc (range_types
, (ndim
+ DW_FIELD_ALLOC_CHUNK
)
3709 * sizeof (struct type
*));
3711 make_cleanup (free_current_contents
, &range_types
);
3713 range_types
[ndim
++] = child_die
->type
;
3716 child_die
= sibling_die (child_die
);
3719 /* Dwarf2 dimensions are output from left to right, create the
3720 necessary array types in backwards order. */
3721 type
= element_type
;
3723 type
= create_array_type (NULL
, type
, range_types
[ndim
]);
3725 /* Understand Dwarf2 support for vector types (like they occur on
3726 the PowerPC w/ AltiVec). Gcc just adds another attribute to the
3727 array type. This is not part of the Dwarf2/3 standard yet, but a
3728 custom vendor extension. The main difference between a regular
3729 array and the vector variant is that vectors are passed by value
3731 attr
= dwarf2_attr (die
, DW_AT_GNU_vector
, cu
);
3733 TYPE_FLAGS (type
) |= TYPE_FLAG_VECTOR
;
3735 do_cleanups (back_to
);
3737 /* Install the type in the die. */
3741 /* First cut: install each common block member as a global variable. */
3744 read_common_block (struct die_info
*die
, struct dwarf2_cu
*cu
)
3746 struct die_info
*child_die
;
3747 struct attribute
*attr
;
3749 CORE_ADDR base
= (CORE_ADDR
) 0;
3751 attr
= dwarf2_attr (die
, DW_AT_location
, cu
);
3754 /* Support the .debug_loc offsets */
3755 if (attr_form_is_block (attr
))
3757 base
= decode_locdesc (DW_BLOCK (attr
), cu
);
3759 else if (attr
->form
== DW_FORM_data4
|| attr
->form
== DW_FORM_data8
)
3761 dwarf2_complex_location_expr_complaint ();
3765 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
3766 "common block member");
3769 if (die
->child
!= NULL
)
3771 child_die
= die
->child
;
3772 while (child_die
&& child_die
->tag
)
3774 sym
= new_symbol (child_die
, NULL
, cu
);
3775 attr
= dwarf2_attr (child_die
, DW_AT_data_member_location
, cu
);
3778 SYMBOL_VALUE_ADDRESS (sym
) =
3779 base
+ decode_locdesc (DW_BLOCK (attr
), cu
);
3780 add_symbol_to_list (sym
, &global_symbols
);
3782 child_die
= sibling_die (child_die
);
3787 /* Read a C++ namespace. */
3790 read_namespace (struct die_info
*die
, struct dwarf2_cu
*cu
)
3792 struct objfile
*objfile
= cu
->objfile
;
3793 const char *previous_prefix
= processing_current_prefix
;
3796 struct die_info
*current_die
;
3798 name
= namespace_name (die
, &is_anonymous
, cu
);
3800 /* Now build the name of the current namespace. */
3802 if (previous_prefix
[0] == '\0')
3804 processing_current_prefix
= name
;
3808 /* We need temp_name around because processing_current_prefix
3809 is a const char *. */
3810 char *temp_name
= alloca (strlen (previous_prefix
)
3811 + 2 + strlen(name
) + 1);
3812 strcpy (temp_name
, previous_prefix
);
3813 strcat (temp_name
, "::");
3814 strcat (temp_name
, name
);
3816 processing_current_prefix
= temp_name
;
3819 /* Add a symbol associated to this if we haven't seen the namespace
3820 before. Also, add a using directive if it's an anonymous
3823 if (dwarf2_extension (die
, cu
) == NULL
)
3827 /* FIXME: carlton/2003-06-27: Once GDB is more const-correct,
3828 this cast will hopefully become unnecessary. */
3829 type
= init_type (TYPE_CODE_NAMESPACE
, 0, 0,
3830 (char *) processing_current_prefix
,
3832 TYPE_TAG_NAME (type
) = TYPE_NAME (type
);
3834 new_symbol (die
, type
, cu
);
3838 cp_add_using_directive (processing_current_prefix
,
3839 strlen (previous_prefix
),
3840 strlen (processing_current_prefix
));
3843 if (die
->child
!= NULL
)
3845 struct die_info
*child_die
= die
->child
;
3847 while (child_die
&& child_die
->tag
)
3849 process_die (child_die
, cu
);
3850 child_die
= sibling_die (child_die
);
3854 processing_current_prefix
= previous_prefix
;
3857 /* Return the name of the namespace represented by DIE. Set
3858 *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
3862 namespace_name (struct die_info
*die
, int *is_anonymous
, struct dwarf2_cu
*cu
)
3864 struct die_info
*current_die
;
3865 const char *name
= NULL
;
3867 /* Loop through the extensions until we find a name. */
3869 for (current_die
= die
;
3870 current_die
!= NULL
;
3871 current_die
= dwarf2_extension (die
, cu
))
3873 name
= dwarf2_name (current_die
, cu
);
3878 /* Is it an anonymous namespace? */
3880 *is_anonymous
= (name
== NULL
);
3882 name
= "(anonymous namespace)";
3887 /* Extract all information from a DW_TAG_pointer_type DIE and add to
3888 the user defined type vector. */
3891 read_tag_pointer_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
3893 struct comp_unit_head
*cu_header
= &cu
->header
;
3895 struct attribute
*attr_byte_size
;
3896 struct attribute
*attr_address_class
;
3897 int byte_size
, addr_class
;
3904 type
= lookup_pointer_type (die_type (die
, cu
));
3906 attr_byte_size
= dwarf2_attr (die
, DW_AT_byte_size
, cu
);
3908 byte_size
= DW_UNSND (attr_byte_size
);
3910 byte_size
= cu_header
->addr_size
;
3912 attr_address_class
= dwarf2_attr (die
, DW_AT_address_class
, cu
);
3913 if (attr_address_class
)
3914 addr_class
= DW_UNSND (attr_address_class
);
3916 addr_class
= DW_ADDR_none
;
3918 /* If the pointer size or address class is different than the
3919 default, create a type variant marked as such and set the
3920 length accordingly. */
3921 if (TYPE_LENGTH (type
) != byte_size
|| addr_class
!= DW_ADDR_none
)
3923 if (ADDRESS_CLASS_TYPE_FLAGS_P ())
3927 type_flags
= ADDRESS_CLASS_TYPE_FLAGS (byte_size
, addr_class
);
3928 gdb_assert ((type_flags
& ~TYPE_FLAG_ADDRESS_CLASS_ALL
) == 0);
3929 type
= make_type_with_address_space (type
, type_flags
);
3931 else if (TYPE_LENGTH (type
) != byte_size
)
3933 complaint (&symfile_complaints
, "invalid pointer size %d", byte_size
);
3936 /* Should we also complain about unhandled address classes? */
3940 TYPE_LENGTH (type
) = byte_size
;
3944 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
3945 the user defined type vector. */
3948 read_tag_ptr_to_member_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
3950 struct objfile
*objfile
= cu
->objfile
;
3952 struct type
*to_type
;
3953 struct type
*domain
;
3960 type
= alloc_type (objfile
);
3961 to_type
= die_type (die
, cu
);
3962 domain
= die_containing_type (die
, cu
);
3963 smash_to_member_type (type
, domain
, to_type
);
3968 /* Extract all information from a DW_TAG_reference_type DIE and add to
3969 the user defined type vector. */
3972 read_tag_reference_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
3974 struct comp_unit_head
*cu_header
= &cu
->header
;
3976 struct attribute
*attr
;
3983 type
= lookup_reference_type (die_type (die
, cu
));
3984 attr
= dwarf2_attr (die
, DW_AT_byte_size
, cu
);
3987 TYPE_LENGTH (type
) = DW_UNSND (attr
);
3991 TYPE_LENGTH (type
) = cu_header
->addr_size
;
3997 read_tag_const_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
3999 struct type
*base_type
;
4006 base_type
= die_type (die
, cu
);
4007 die
->type
= make_cv_type (1, TYPE_VOLATILE (base_type
), base_type
, 0);
4011 read_tag_volatile_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
4013 struct type
*base_type
;
4020 base_type
= die_type (die
, cu
);
4021 die
->type
= make_cv_type (TYPE_CONST (base_type
), 1, base_type
, 0);
4024 /* Extract all information from a DW_TAG_string_type DIE and add to
4025 the user defined type vector. It isn't really a user defined type,
4026 but it behaves like one, with other DIE's using an AT_user_def_type
4027 attribute to reference it. */
4030 read_tag_string_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
4032 struct objfile
*objfile
= cu
->objfile
;
4033 struct type
*type
, *range_type
, *index_type
, *char_type
;
4034 struct attribute
*attr
;
4035 unsigned int length
;
4042 attr
= dwarf2_attr (die
, DW_AT_string_length
, cu
);
4045 length
= DW_UNSND (attr
);
4049 /* check for the DW_AT_byte_size attribute */
4050 attr
= dwarf2_attr (die
, DW_AT_byte_size
, cu
);
4053 length
= DW_UNSND (attr
);
4060 index_type
= dwarf2_fundamental_type (objfile
, FT_INTEGER
, cu
);
4061 range_type
= create_range_type (NULL
, index_type
, 1, length
);
4062 if (cu
->language
== language_fortran
)
4064 /* Need to create a unique string type for bounds
4066 type
= create_string_type (0, range_type
);
4070 char_type
= dwarf2_fundamental_type (objfile
, FT_CHAR
, cu
);
4071 type
= create_string_type (char_type
, range_type
);
4076 /* Handle DIES due to C code like:
4080 int (*funcp)(int a, long l);
4084 ('funcp' generates a DW_TAG_subroutine_type DIE)
4088 read_subroutine_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
4090 struct type
*type
; /* Type that this function returns */
4091 struct type
*ftype
; /* Function that returns above type */
4092 struct attribute
*attr
;
4094 /* Decode the type that this subroutine returns */
4099 type
= die_type (die
, cu
);
4100 ftype
= lookup_function_type (type
);
4102 /* All functions in C++ have prototypes. */
4103 attr
= dwarf2_attr (die
, DW_AT_prototyped
, cu
);
4104 if ((attr
&& (DW_UNSND (attr
) != 0))
4105 || cu
->language
== language_cplus
)
4106 TYPE_FLAGS (ftype
) |= TYPE_FLAG_PROTOTYPED
;
4108 if (die
->child
!= NULL
)
4110 struct die_info
*child_die
;
4114 /* Count the number of parameters.
4115 FIXME: GDB currently ignores vararg functions, but knows about
4116 vararg member functions. */
4117 child_die
= die
->child
;
4118 while (child_die
&& child_die
->tag
)
4120 if (child_die
->tag
== DW_TAG_formal_parameter
)
4122 else if (child_die
->tag
== DW_TAG_unspecified_parameters
)
4123 TYPE_FLAGS (ftype
) |= TYPE_FLAG_VARARGS
;
4124 child_die
= sibling_die (child_die
);
4127 /* Allocate storage for parameters and fill them in. */
4128 TYPE_NFIELDS (ftype
) = nparams
;
4129 TYPE_FIELDS (ftype
) = (struct field
*)
4130 TYPE_ALLOC (ftype
, nparams
* sizeof (struct field
));
4132 child_die
= die
->child
;
4133 while (child_die
&& child_die
->tag
)
4135 if (child_die
->tag
== DW_TAG_formal_parameter
)
4137 /* Dwarf2 has no clean way to discern C++ static and non-static
4138 member functions. G++ helps GDB by marking the first
4139 parameter for non-static member functions (which is the
4140 this pointer) as artificial. We pass this information
4141 to dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL. */
4142 attr
= dwarf2_attr (child_die
, DW_AT_artificial
, cu
);
4144 TYPE_FIELD_ARTIFICIAL (ftype
, iparams
) = DW_UNSND (attr
);
4146 TYPE_FIELD_ARTIFICIAL (ftype
, iparams
) = 0;
4147 TYPE_FIELD_TYPE (ftype
, iparams
) = die_type (child_die
, cu
);
4150 child_die
= sibling_die (child_die
);
4158 read_typedef (struct die_info
*die
, struct dwarf2_cu
*cu
)
4160 struct objfile
*objfile
= cu
->objfile
;
4161 struct attribute
*attr
;
4166 attr
= dwarf2_attr (die
, DW_AT_name
, cu
);
4167 if (attr
&& DW_STRING (attr
))
4169 name
= DW_STRING (attr
);
4171 die
->type
= init_type (TYPE_CODE_TYPEDEF
, 0, TYPE_FLAG_TARGET_STUB
, name
, objfile
);
4172 TYPE_TARGET_TYPE (die
->type
) = die_type (die
, cu
);
4176 /* Find a representation of a given base type and install
4177 it in the TYPE field of the die. */
4180 read_base_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
4182 struct objfile
*objfile
= cu
->objfile
;
4184 struct attribute
*attr
;
4185 int encoding
= 0, size
= 0;
4187 /* If we've already decoded this die, this is a no-op. */
4193 attr
= dwarf2_attr (die
, DW_AT_encoding
, cu
);
4196 encoding
= DW_UNSND (attr
);
4198 attr
= dwarf2_attr (die
, DW_AT_byte_size
, cu
);
4201 size
= DW_UNSND (attr
);
4203 attr
= dwarf2_attr (die
, DW_AT_name
, cu
);
4204 if (attr
&& DW_STRING (attr
))
4206 enum type_code code
= TYPE_CODE_INT
;
4211 case DW_ATE_address
:
4212 /* Turn DW_ATE_address into a void * pointer. */
4213 code
= TYPE_CODE_PTR
;
4214 type_flags
|= TYPE_FLAG_UNSIGNED
;
4216 case DW_ATE_boolean
:
4217 code
= TYPE_CODE_BOOL
;
4218 type_flags
|= TYPE_FLAG_UNSIGNED
;
4220 case DW_ATE_complex_float
:
4221 code
= TYPE_CODE_COMPLEX
;
4224 code
= TYPE_CODE_FLT
;
4227 case DW_ATE_signed_char
:
4229 case DW_ATE_unsigned
:
4230 case DW_ATE_unsigned_char
:
4231 type_flags
|= TYPE_FLAG_UNSIGNED
;
4234 complaint (&symfile_complaints
, "unsupported DW_AT_encoding: '%s'",
4235 dwarf_type_encoding_name (encoding
));
4238 type
= init_type (code
, size
, type_flags
, DW_STRING (attr
), objfile
);
4239 if (encoding
== DW_ATE_address
)
4240 TYPE_TARGET_TYPE (type
) = dwarf2_fundamental_type (objfile
, FT_VOID
,
4242 else if (encoding
== DW_ATE_complex_float
)
4245 TYPE_TARGET_TYPE (type
)
4246 = dwarf2_fundamental_type (objfile
, FT_EXT_PREC_FLOAT
, cu
);
4247 else if (size
== 16)
4248 TYPE_TARGET_TYPE (type
)
4249 = dwarf2_fundamental_type (objfile
, FT_DBL_PREC_FLOAT
, cu
);
4251 TYPE_TARGET_TYPE (type
)
4252 = dwarf2_fundamental_type (objfile
, FT_FLOAT
, cu
);
4257 type
= dwarf_base_type (encoding
, size
, cu
);
4262 /* Read the given DW_AT_subrange DIE. */
4265 read_subrange_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
4267 struct type
*base_type
;
4268 struct type
*range_type
;
4269 struct attribute
*attr
;
4273 /* If we have already decoded this die, then nothing more to do. */
4277 base_type
= die_type (die
, cu
);
4278 if (base_type
== NULL
)
4280 complaint (&symfile_complaints
,
4281 "DW_AT_type missing from DW_TAG_subrange_type");
4285 if (TYPE_CODE (base_type
) == TYPE_CODE_VOID
)
4286 base_type
= alloc_type (NULL
);
4288 if (cu
->language
== language_fortran
)
4290 /* FORTRAN implies a lower bound of 1, if not given. */
4294 attr
= dwarf2_attr (die
, DW_AT_lower_bound
, cu
);
4296 low
= dwarf2_get_attr_constant_value (attr
, 0);
4298 attr
= dwarf2_attr (die
, DW_AT_upper_bound
, cu
);
4301 if (attr
->form
== DW_FORM_block1
)
4303 /* GCC encodes arrays with unspecified or dynamic length
4304 with a DW_FORM_block1 attribute.
4305 FIXME: GDB does not yet know how to handle dynamic
4306 arrays properly, treat them as arrays with unspecified
4309 FIXME: jimb/2003-09-22: GDB does not really know
4310 how to handle arrays of unspecified length
4311 either; we just represent them as zero-length
4312 arrays. Choose an appropriate upper bound given
4313 the lower bound we've computed above. */
4317 high
= dwarf2_get_attr_constant_value (attr
, 1);
4320 range_type
= create_range_type (NULL
, base_type
, low
, high
);
4322 attr
= dwarf2_attr (die
, DW_AT_name
, cu
);
4323 if (attr
&& DW_STRING (attr
))
4324 TYPE_NAME (range_type
) = DW_STRING (attr
);
4326 attr
= dwarf2_attr (die
, DW_AT_byte_size
, cu
);
4328 TYPE_LENGTH (range_type
) = DW_UNSND (attr
);
4330 die
->type
= range_type
;
4334 /* Read a whole compilation unit into a linked list of dies. */
4336 static struct die_info
*
4337 read_comp_unit (char *info_ptr
, bfd
*abfd
, struct dwarf2_cu
*cu
)
4339 /* Reset die reference table; we are
4340 building new ones now. */
4341 dwarf2_empty_hash_tables ();
4343 return read_die_and_children (info_ptr
, abfd
, cu
, &info_ptr
, NULL
);
4346 /* Read a single die and all its descendents. Set the die's sibling
4347 field to NULL; set other fields in the die correctly, and set all
4348 of the descendents' fields correctly. Set *NEW_INFO_PTR to the
4349 location of the info_ptr after reading all of those dies. PARENT
4350 is the parent of the die in question. */
4352 static struct die_info
*
4353 read_die_and_children (char *info_ptr
, bfd
*abfd
,
4354 struct dwarf2_cu
*cu
,
4355 char **new_info_ptr
,
4356 struct die_info
*parent
)
4358 struct die_info
*die
;
4362 cur_ptr
= read_full_die (&die
, abfd
, info_ptr
, cu
, &has_children
);
4363 store_in_ref_table (die
->offset
, die
);
4367 die
->child
= read_die_and_siblings (cur_ptr
, abfd
, cu
,
4373 *new_info_ptr
= cur_ptr
;
4376 die
->sibling
= NULL
;
4377 die
->parent
= parent
;
4381 /* Read a die, all of its descendents, and all of its siblings; set
4382 all of the fields of all of the dies correctly. Arguments are as
4383 in read_die_and_children. */
4385 static struct die_info
*
4386 read_die_and_siblings (char *info_ptr
, bfd
*abfd
,
4387 struct dwarf2_cu
*cu
,
4388 char **new_info_ptr
,
4389 struct die_info
*parent
)
4391 struct die_info
*first_die
, *last_sibling
;
4395 first_die
= last_sibling
= NULL
;
4399 struct die_info
*die
4400 = read_die_and_children (cur_ptr
, abfd
, cu
, &cur_ptr
, parent
);
4408 last_sibling
->sibling
= die
;
4413 *new_info_ptr
= cur_ptr
;
4423 /* Free a linked list of dies. */
4426 free_die_list (struct die_info
*dies
)
4428 struct die_info
*die
, *next
;
4433 if (die
->child
!= NULL
)
4434 free_die_list (die
->child
);
4435 next
= die
->sibling
;
4443 do_free_die_list_cleanup (void *dies
)
4445 free_die_list (dies
);
4448 static struct cleanup
*
4449 make_cleanup_free_die_list (struct die_info
*dies
)
4451 return make_cleanup (do_free_die_list_cleanup
, dies
);
4455 /* Read the contents of the section at OFFSET and of size SIZE from the
4456 object file specified by OBJFILE into the objfile_obstack and return it. */
4459 dwarf2_read_section (struct objfile
*objfile
, asection
*sectp
)
4461 bfd
*abfd
= objfile
->obfd
;
4463 bfd_size_type size
= bfd_get_section_size (sectp
);
4468 buf
= (char *) obstack_alloc (&objfile
->objfile_obstack
, size
);
4470 = (char *) symfile_relocate_debug_section (abfd
, sectp
, (bfd_byte
*) buf
);
4474 if (bfd_seek (abfd
, sectp
->filepos
, SEEK_SET
) != 0
4475 || bfd_bread (buf
, size
, abfd
) != size
)
4476 error ("Dwarf Error: Can't read DWARF data from '%s'",
4477 bfd_get_filename (abfd
));
4482 /* In DWARF version 2, the description of the debugging information is
4483 stored in a separate .debug_abbrev section. Before we read any
4484 dies from a section we read in all abbreviations and install them
4485 in a hash table. This function also sets flags in CU describing
4486 the data found in the abbrev table. */
4489 dwarf2_read_abbrevs (bfd
*abfd
, struct dwarf2_cu
*cu
)
4491 struct comp_unit_head
*cu_header
= &cu
->header
;
4493 struct abbrev_info
*cur_abbrev
;
4494 unsigned int abbrev_number
, bytes_read
, abbrev_name
;
4495 unsigned int abbrev_form
, hash_number
;
4496 struct attr_abbrev
*cur_attrs
;
4497 unsigned int allocated_attrs
;
4499 /* Initialize dwarf2 abbrevs */
4500 obstack_init (&cu
->abbrev_obstack
);
4501 cu
->dwarf2_abbrevs
= obstack_alloc (&cu
->abbrev_obstack
,
4503 * sizeof (struct abbrev_info
*)));
4504 memset (cu
->dwarf2_abbrevs
, 0,
4505 ABBREV_HASH_SIZE
* sizeof (struct abbrev_info
*));
4507 abbrev_ptr
= dwarf2_per_objfile
->abbrev_buffer
+ cu_header
->abbrev_offset
;
4508 abbrev_number
= read_unsigned_leb128 (abfd
, abbrev_ptr
, &bytes_read
);
4509 abbrev_ptr
+= bytes_read
;
4511 allocated_attrs
= ATTR_ALLOC_CHUNK
;
4512 cur_attrs
= xmalloc (allocated_attrs
* sizeof (struct attr_abbrev
));
4514 /* loop until we reach an abbrev number of 0 */
4515 while (abbrev_number
)
4517 cur_abbrev
= dwarf_alloc_abbrev (cu
);
4519 /* read in abbrev header */
4520 cur_abbrev
->number
= abbrev_number
;
4521 cur_abbrev
->tag
= read_unsigned_leb128 (abfd
, abbrev_ptr
, &bytes_read
);
4522 abbrev_ptr
+= bytes_read
;
4523 cur_abbrev
->has_children
= read_1_byte (abfd
, abbrev_ptr
);
4526 if (cur_abbrev
->tag
== DW_TAG_namespace
)
4527 cu
->has_namespace_info
= 1;
4529 /* now read in declarations */
4530 abbrev_name
= read_unsigned_leb128 (abfd
, abbrev_ptr
, &bytes_read
);
4531 abbrev_ptr
+= bytes_read
;
4532 abbrev_form
= read_unsigned_leb128 (abfd
, abbrev_ptr
, &bytes_read
);
4533 abbrev_ptr
+= bytes_read
;
4536 if (cur_abbrev
->num_attrs
== allocated_attrs
)
4538 allocated_attrs
+= ATTR_ALLOC_CHUNK
;
4540 = xrealloc (cur_attrs
, (allocated_attrs
4541 * sizeof (struct attr_abbrev
)));
4543 cur_attrs
[cur_abbrev
->num_attrs
].name
= abbrev_name
;
4544 cur_attrs
[cur_abbrev
->num_attrs
++].form
= abbrev_form
;
4545 abbrev_name
= read_unsigned_leb128 (abfd
, abbrev_ptr
, &bytes_read
);
4546 abbrev_ptr
+= bytes_read
;
4547 abbrev_form
= read_unsigned_leb128 (abfd
, abbrev_ptr
, &bytes_read
);
4548 abbrev_ptr
+= bytes_read
;
4551 cur_abbrev
->attrs
= obstack_alloc (&cu
->abbrev_obstack
,
4552 (cur_abbrev
->num_attrs
4553 * sizeof (struct attr_abbrev
)));
4554 memcpy (cur_abbrev
->attrs
, cur_attrs
,
4555 cur_abbrev
->num_attrs
* sizeof (struct attr_abbrev
));
4557 hash_number
= abbrev_number
% ABBREV_HASH_SIZE
;
4558 cur_abbrev
->next
= cu
->dwarf2_abbrevs
[hash_number
];
4559 cu
->dwarf2_abbrevs
[hash_number
] = cur_abbrev
;
4561 /* Get next abbreviation.
4562 Under Irix6 the abbreviations for a compilation unit are not
4563 always properly terminated with an abbrev number of 0.
4564 Exit loop if we encounter an abbreviation which we have
4565 already read (which means we are about to read the abbreviations
4566 for the next compile unit) or if the end of the abbreviation
4567 table is reached. */
4568 if ((unsigned int) (abbrev_ptr
- dwarf2_per_objfile
->abbrev_buffer
)
4569 >= dwarf2_per_objfile
->abbrev_size
)
4571 abbrev_number
= read_unsigned_leb128 (abfd
, abbrev_ptr
, &bytes_read
);
4572 abbrev_ptr
+= bytes_read
;
4573 if (dwarf2_lookup_abbrev (abbrev_number
, cu
) != NULL
)
4580 /* Release the memory used by the abbrev table for a compilation unit. */
4583 dwarf2_free_abbrev_table (void *ptr_to_cu
)
4585 struct dwarf2_cu
*cu
= ptr_to_cu
;
4587 obstack_free (&cu
->abbrev_obstack
, NULL
);
4588 cu
->dwarf2_abbrevs
= NULL
;
4591 /* Lookup an abbrev_info structure in the abbrev hash table. */
4593 static struct abbrev_info
*
4594 dwarf2_lookup_abbrev (unsigned int number
, struct dwarf2_cu
*cu
)
4596 unsigned int hash_number
;
4597 struct abbrev_info
*abbrev
;
4599 hash_number
= number
% ABBREV_HASH_SIZE
;
4600 abbrev
= cu
->dwarf2_abbrevs
[hash_number
];
4604 if (abbrev
->number
== number
)
4607 abbrev
= abbrev
->next
;
4612 /* Returns nonzero if TAG represents a type that we might generate a partial
4616 is_type_tag_for_partial (int tag
)
4621 /* Some types that would be reasonable to generate partial symbols for,
4622 that we don't at present. */
4623 case DW_TAG_array_type
:
4624 case DW_TAG_file_type
:
4625 case DW_TAG_ptr_to_member_type
:
4626 case DW_TAG_set_type
:
4627 case DW_TAG_string_type
:
4628 case DW_TAG_subroutine_type
:
4630 case DW_TAG_base_type
:
4631 case DW_TAG_class_type
:
4632 case DW_TAG_enumeration_type
:
4633 case DW_TAG_structure_type
:
4634 case DW_TAG_subrange_type
:
4635 case DW_TAG_typedef
:
4636 case DW_TAG_union_type
:
4643 /* Load all DIEs that are interesting for partial symbols into memory. */
4645 static struct partial_die_info
*
4646 load_partial_dies (bfd
*abfd
, char *info_ptr
, int building_psymtab
,
4647 struct dwarf2_cu
*cu
)
4649 struct partial_die_info
*part_die
;
4650 struct partial_die_info
*parent_die
, *last_die
, *first_die
= NULL
;
4651 struct abbrev_info
*abbrev
;
4652 unsigned int bytes_read
;
4654 int nesting_level
= 1;
4660 = htab_create_alloc_ex (cu
->header
.length
/ 12,
4664 &cu
->comp_unit_obstack
,
4665 hashtab_obstack_allocate
,
4666 dummy_obstack_deallocate
);
4668 part_die
= obstack_alloc (&cu
->comp_unit_obstack
,
4669 sizeof (struct partial_die_info
));
4673 abbrev
= peek_die_abbrev (info_ptr
, &bytes_read
, cu
);
4675 /* A NULL abbrev means the end of a series of children. */
4678 if (--nesting_level
== 0)
4680 /* PART_DIE was probably the last thing allocated on the
4681 comp_unit_obstack, so we could call obstack_free
4682 here. We don't do that because the waste is small,
4683 and will be cleaned up when we're done with this
4684 compilation unit. This way, we're also more robust
4685 against other users of the comp_unit_obstack. */
4688 info_ptr
+= bytes_read
;
4689 last_die
= parent_die
;
4690 parent_die
= parent_die
->die_parent
;
4694 /* Check whether this DIE is interesting enough to save. */
4695 if (!is_type_tag_for_partial (abbrev
->tag
)
4696 && abbrev
->tag
!= DW_TAG_enumerator
4697 && abbrev
->tag
!= DW_TAG_subprogram
4698 && abbrev
->tag
!= DW_TAG_variable
4699 && abbrev
->tag
!= DW_TAG_namespace
)
4701 /* Otherwise we skip to the next sibling, if any. */
4702 info_ptr
= skip_one_die (info_ptr
+ bytes_read
, abbrev
, cu
);
4706 info_ptr
= read_partial_die (part_die
, abbrev
, bytes_read
,
4707 abfd
, info_ptr
, cu
);
4709 /* This two-pass algorithm for processing partial symbols has a
4710 high cost in cache pressure. Thus, handle some simple cases
4711 here which cover the majority of C partial symbols. DIEs
4712 which neither have specification tags in them, nor could have
4713 specification tags elsewhere pointing at them, can simply be
4714 processed and discarded.
4716 This segment is also optional; scan_partial_symbols and
4717 add_partial_symbol will handle these DIEs if we chain
4718 them in normally. When compilers which do not emit large
4719 quantities of duplicate debug information are more common,
4720 this code can probably be removed. */
4722 /* Any complete simple types at the top level (pretty much all
4723 of them, for a language without namespaces), can be processed
4725 if (parent_die
== NULL
4726 && part_die
->has_specification
== 0
4727 && part_die
->is_declaration
== 0
4728 && (part_die
->tag
== DW_TAG_typedef
4729 || part_die
->tag
== DW_TAG_base_type
4730 || part_die
->tag
== DW_TAG_subrange_type
))
4732 if (building_psymtab
&& part_die
->name
!= NULL
)
4733 add_psymbol_to_list (part_die
->name
, strlen (part_die
->name
),
4734 VAR_DOMAIN
, LOC_TYPEDEF
,
4735 &cu
->objfile
->static_psymbols
,
4736 0, (CORE_ADDR
) 0, cu
->language
, cu
->objfile
);
4737 info_ptr
= locate_pdi_sibling (part_die
, info_ptr
, abfd
, cu
);
4741 /* If we're at the second level, and we're an enumerator, and
4742 our parent has no specification (meaning possibly lives in a
4743 namespace elsewhere), then we can add the partial symbol now
4744 instead of queueing it. */
4745 if (part_die
->tag
== DW_TAG_enumerator
4746 && parent_die
!= NULL
4747 && parent_die
->die_parent
== NULL
4748 && parent_die
->tag
== DW_TAG_enumeration_type
4749 && parent_die
->has_specification
== 0)
4751 if (part_die
->name
== NULL
)
4752 complaint (&symfile_complaints
, "malformed enumerator DIE ignored");
4753 else if (building_psymtab
)
4754 add_psymbol_to_list (part_die
->name
, strlen (part_die
->name
),
4755 VAR_DOMAIN
, LOC_CONST
,
4756 cu
->language
== language_cplus
4757 ? &cu
->objfile
->global_psymbols
4758 : &cu
->objfile
->static_psymbols
,
4759 0, (CORE_ADDR
) 0, cu
->language
, cu
->objfile
);
4761 info_ptr
= locate_pdi_sibling (part_die
, info_ptr
, abfd
, cu
);
4765 /* We'll save this DIE so link it in. */
4766 part_die
->die_parent
= parent_die
;
4767 part_die
->die_sibling
= NULL
;
4768 part_die
->die_child
= NULL
;
4770 if (last_die
&& last_die
== parent_die
)
4771 last_die
->die_child
= part_die
;
4773 last_die
->die_sibling
= part_die
;
4775 last_die
= part_die
;
4777 if (first_die
== NULL
)
4778 first_die
= part_die
;
4780 /* Maybe add the DIE to the hash table. Not all DIEs that we
4781 find interesting need to be in the hash table, because we
4782 also have the parent/sibling/child chains; only those that we
4783 might refer to by offset later during partial symbol reading.
4785 For now this means things that might have be the target of a
4786 DW_AT_specification, DW_AT_abstract_origin, or
4787 DW_AT_extension. DW_AT_extension will refer only to
4788 namespaces; DW_AT_abstract_origin refers to functions (and
4789 many things under the function DIE, but we do not recurse
4790 into function DIEs during partial symbol reading) and
4791 possibly variables as well; DW_AT_specification refers to
4792 declarations. Declarations ought to have the DW_AT_declaration
4793 flag. It happens that GCC forgets to put it in sometimes, but
4794 only for functions, not for types.
4796 Adding more things than necessary to the hash table is harmless
4797 except for the performance cost. Adding too few will result in
4798 internal errors in find_partial_die. */
4800 if (abbrev
->tag
== DW_TAG_subprogram
4801 || abbrev
->tag
== DW_TAG_variable
4802 || abbrev
->tag
== DW_TAG_namespace
4803 || part_die
->is_declaration
)
4807 slot
= htab_find_slot_with_hash (cu
->partial_dies
, part_die
,
4808 part_die
->offset
, INSERT
);
4812 part_die
= obstack_alloc (&cu
->comp_unit_obstack
,
4813 sizeof (struct partial_die_info
));
4815 /* For some DIEs we want to follow their children (if any). For C
4816 we have no reason to follow the children of structures; for other
4817 languages we have to, both so that we can get at method physnames
4818 to infer fully qualified class names, and for DW_AT_specification. */
4819 if (last_die
->has_children
4820 && (last_die
->tag
== DW_TAG_namespace
4821 || last_die
->tag
== DW_TAG_enumeration_type
4822 || (cu
->language
!= language_c
4823 && (last_die
->tag
== DW_TAG_class_type
4824 || last_die
->tag
== DW_TAG_structure_type
4825 || last_die
->tag
== DW_TAG_union_type
))))
4828 parent_die
= last_die
;
4832 /* Otherwise we skip to the next sibling, if any. */
4833 info_ptr
= locate_pdi_sibling (last_die
, info_ptr
, abfd
, cu
);
4835 /* Back to the top, do it again. */
4839 /* Read a minimal amount of information into the minimal die structure. */
4842 read_partial_die (struct partial_die_info
*part_die
,
4843 struct abbrev_info
*abbrev
,
4844 unsigned int abbrev_len
, bfd
*abfd
,
4845 char *info_ptr
, struct dwarf2_cu
*cu
)
4847 unsigned int bytes_read
, i
;
4848 struct attribute attr
;
4849 int has_low_pc_attr
= 0;
4850 int has_high_pc_attr
= 0;
4852 memset (part_die
, 0, sizeof (struct partial_die_info
));
4854 part_die
->offset
= info_ptr
- dwarf2_per_objfile
->info_buffer
;
4856 info_ptr
+= abbrev_len
;
4861 part_die
->tag
= abbrev
->tag
;
4862 part_die
->has_children
= abbrev
->has_children
;
4864 for (i
= 0; i
< abbrev
->num_attrs
; ++i
)
4866 info_ptr
= read_attribute (&attr
, &abbrev
->attrs
[i
], abfd
, info_ptr
, cu
);
4868 /* Store the data if it is of an attribute we want to keep in a
4869 partial symbol table. */
4874 /* Prefer DW_AT_MIPS_linkage_name over DW_AT_name. */
4875 if (part_die
->name
== NULL
)
4876 part_die
->name
= DW_STRING (&attr
);
4878 case DW_AT_comp_dir
:
4879 if (part_die
->dirname
== NULL
)
4880 part_die
->dirname
= DW_STRING (&attr
);
4882 case DW_AT_MIPS_linkage_name
:
4883 part_die
->name
= DW_STRING (&attr
);
4886 has_low_pc_attr
= 1;
4887 part_die
->lowpc
= DW_ADDR (&attr
);
4890 has_high_pc_attr
= 1;
4891 part_die
->highpc
= DW_ADDR (&attr
);
4893 case DW_AT_location
:
4894 /* Support the .debug_loc offsets */
4895 if (attr_form_is_block (&attr
))
4897 part_die
->locdesc
= DW_BLOCK (&attr
);
4899 else if (attr
.form
== DW_FORM_data4
|| attr
.form
== DW_FORM_data8
)
4901 dwarf2_complex_location_expr_complaint ();
4905 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
4906 "partial symbol information");
4909 case DW_AT_language
:
4910 part_die
->language
= DW_UNSND (&attr
);
4912 case DW_AT_external
:
4913 part_die
->is_external
= DW_UNSND (&attr
);
4915 case DW_AT_declaration
:
4916 part_die
->is_declaration
= DW_UNSND (&attr
);
4919 part_die
->has_type
= 1;
4921 case DW_AT_abstract_origin
:
4922 case DW_AT_specification
:
4923 case DW_AT_extension
:
4924 part_die
->has_specification
= 1;
4925 part_die
->spec_offset
= dwarf2_get_ref_die_offset (&attr
, cu
);
4928 /* Ignore absolute siblings, they might point outside of
4929 the current compile unit. */
4930 if (attr
.form
== DW_FORM_ref_addr
)
4931 complaint (&symfile_complaints
, "ignoring absolute DW_AT_sibling");
4933 part_die
->sibling
= dwarf2_per_objfile
->info_buffer
4934 + dwarf2_get_ref_die_offset (&attr
, cu
);
4936 case DW_AT_stmt_list
:
4937 part_die
->has_stmt_list
= 1;
4938 part_die
->line_offset
= DW_UNSND (&attr
);
4945 /* When using the GNU linker, .gnu.linkonce. sections are used to
4946 eliminate duplicate copies of functions and vtables and such.
4947 The linker will arbitrarily choose one and discard the others.
4948 The AT_*_pc values for such functions refer to local labels in
4949 these sections. If the section from that file was discarded, the
4950 labels are not in the output, so the relocs get a value of 0.
4951 If this is a discarded function, mark the pc bounds as invalid,
4952 so that GDB will ignore it. */
4953 if (has_low_pc_attr
&& has_high_pc_attr
4954 && part_die
->lowpc
< part_die
->highpc
4955 && (part_die
->lowpc
!= 0
4956 || (bfd_get_file_flags (abfd
) & HAS_RELOC
)))
4957 part_die
->has_pc_info
= 1;
4961 /* Find a cached partial DIE at OFFSET in CU. */
4963 static struct partial_die_info
*
4964 find_partial_die_in_comp_unit (unsigned long offset
, struct dwarf2_cu
*cu
)
4966 struct partial_die_info
*lookup_die
= NULL
;
4967 struct partial_die_info part_die
;
4969 part_die
.offset
= offset
;
4970 lookup_die
= htab_find_with_hash (cu
->partial_dies
, &part_die
, offset
);
4972 if (lookup_die
== NULL
)
4973 internal_error (__FILE__
, __LINE__
,
4974 "could not find partial DIE in cache\n");
4979 /* Find a partial DIE at OFFSET, which may or may not be in CU. */
4981 static struct partial_die_info
*
4982 find_partial_die (unsigned long offset
, struct dwarf2_cu
*cu
,
4983 struct dwarf2_cu
**target_cu
)
4985 struct dwarf2_per_cu_data
*per_cu
;
4987 if (offset
>= cu
->header
.offset
4988 && offset
< cu
->header
.offset
+ cu
->header
.length
)
4991 return find_partial_die_in_comp_unit (offset
, cu
);
4994 internal_error (__FILE__
, __LINE__
,
4995 "unsupported inter-compilation-unit reference");
4998 /* Adjust PART_DIE before generating a symbol for it. This function
4999 may set the is_external flag or change the DIE's name. */
5002 fixup_partial_die (struct partial_die_info
*part_die
,
5003 struct dwarf2_cu
*cu
)
5005 /* If we found a reference attribute and the DIE has no name, try
5006 to find a name in the referred to DIE. */
5008 if (part_die
->name
== NULL
&& part_die
->has_specification
)
5010 struct partial_die_info
*spec_die
;
5011 struct dwarf2_cu
*spec_cu
;
5013 spec_die
= find_partial_die (part_die
->spec_offset
, cu
, &spec_cu
);
5015 fixup_partial_die (spec_die
, spec_cu
);
5019 part_die
->name
= spec_die
->name
;
5021 /* Copy DW_AT_external attribute if it is set. */
5022 if (spec_die
->is_external
)
5023 part_die
->is_external
= spec_die
->is_external
;
5027 /* Set default names for some unnamed DIEs. */
5028 if (part_die
->name
== NULL
&& (part_die
->tag
== DW_TAG_structure_type
5029 || part_die
->tag
== DW_TAG_class_type
))
5030 part_die
->name
= "(anonymous class)";
5032 if (part_die
->name
== NULL
&& part_die
->tag
== DW_TAG_namespace
)
5033 part_die
->name
= "(anonymous namespace)";
5035 if (part_die
->tag
== DW_TAG_structure_type
5036 || part_die
->tag
== DW_TAG_class_type
5037 || part_die
->tag
== DW_TAG_union_type
)
5038 guess_structure_name (part_die
, cu
);
5041 /* Read the die from the .debug_info section buffer. Set DIEP to
5042 point to a newly allocated die with its information, except for its
5043 child, sibling, and parent fields. Set HAS_CHILDREN to tell
5044 whether the die has children or not. */
5047 read_full_die (struct die_info
**diep
, bfd
*abfd
, char *info_ptr
,
5048 struct dwarf2_cu
*cu
, int *has_children
)
5050 unsigned int abbrev_number
, bytes_read
, i
, offset
;
5051 struct abbrev_info
*abbrev
;
5052 struct die_info
*die
;
5054 offset
= info_ptr
- dwarf2_per_objfile
->info_buffer
;
5055 abbrev_number
= read_unsigned_leb128 (abfd
, info_ptr
, &bytes_read
);
5056 info_ptr
+= bytes_read
;
5059 die
= dwarf_alloc_die ();
5061 die
->abbrev
= abbrev_number
;
5068 abbrev
= dwarf2_lookup_abbrev (abbrev_number
, cu
);
5071 error ("Dwarf Error: could not find abbrev number %d [in module %s]",
5073 bfd_get_filename (abfd
));
5075 die
= dwarf_alloc_die ();
5076 die
->offset
= offset
;
5077 die
->tag
= abbrev
->tag
;
5078 die
->abbrev
= abbrev_number
;
5081 die
->num_attrs
= abbrev
->num_attrs
;
5082 die
->attrs
= (struct attribute
*)
5083 xmalloc (die
->num_attrs
* sizeof (struct attribute
));
5085 for (i
= 0; i
< abbrev
->num_attrs
; ++i
)
5087 info_ptr
= read_attribute (&die
->attrs
[i
], &abbrev
->attrs
[i
],
5088 abfd
, info_ptr
, cu
);
5092 *has_children
= abbrev
->has_children
;
5096 /* Read an attribute value described by an attribute form. */
5099 read_attribute_value (struct attribute
*attr
, unsigned form
,
5100 bfd
*abfd
, char *info_ptr
,
5101 struct dwarf2_cu
*cu
)
5103 struct comp_unit_head
*cu_header
= &cu
->header
;
5104 unsigned int bytes_read
;
5105 struct dwarf_block
*blk
;
5111 case DW_FORM_ref_addr
:
5112 DW_ADDR (attr
) = read_address (abfd
, info_ptr
, cu
, &bytes_read
);
5113 info_ptr
+= bytes_read
;
5115 case DW_FORM_block2
:
5116 blk
= dwarf_alloc_block (cu
);
5117 blk
->size
= read_2_bytes (abfd
, info_ptr
);
5119 blk
->data
= read_n_bytes (abfd
, info_ptr
, blk
->size
);
5120 info_ptr
+= blk
->size
;
5121 DW_BLOCK (attr
) = blk
;
5123 case DW_FORM_block4
:
5124 blk
= dwarf_alloc_block (cu
);
5125 blk
->size
= read_4_bytes (abfd
, info_ptr
);
5127 blk
->data
= read_n_bytes (abfd
, info_ptr
, blk
->size
);
5128 info_ptr
+= blk
->size
;
5129 DW_BLOCK (attr
) = blk
;
5132 DW_UNSND (attr
) = read_2_bytes (abfd
, info_ptr
);
5136 DW_UNSND (attr
) = read_4_bytes (abfd
, info_ptr
);
5140 DW_UNSND (attr
) = read_8_bytes (abfd
, info_ptr
);
5143 case DW_FORM_string
:
5144 DW_STRING (attr
) = read_string (abfd
, info_ptr
, &bytes_read
);
5145 info_ptr
+= bytes_read
;
5148 DW_STRING (attr
) = read_indirect_string (abfd
, info_ptr
, cu_header
,
5150 info_ptr
+= bytes_read
;
5153 blk
= dwarf_alloc_block (cu
);
5154 blk
->size
= read_unsigned_leb128 (abfd
, info_ptr
, &bytes_read
);
5155 info_ptr
+= bytes_read
;
5156 blk
->data
= read_n_bytes (abfd
, info_ptr
, blk
->size
);
5157 info_ptr
+= blk
->size
;
5158 DW_BLOCK (attr
) = blk
;
5160 case DW_FORM_block1
:
5161 blk
= dwarf_alloc_block (cu
);
5162 blk
->size
= read_1_byte (abfd
, info_ptr
);
5164 blk
->data
= read_n_bytes (abfd
, info_ptr
, blk
->size
);
5165 info_ptr
+= blk
->size
;
5166 DW_BLOCK (attr
) = blk
;
5169 DW_UNSND (attr
) = read_1_byte (abfd
, info_ptr
);
5173 DW_UNSND (attr
) = read_1_byte (abfd
, info_ptr
);
5177 DW_SND (attr
) = read_signed_leb128 (abfd
, info_ptr
, &bytes_read
);
5178 info_ptr
+= bytes_read
;
5181 DW_UNSND (attr
) = read_unsigned_leb128 (abfd
, info_ptr
, &bytes_read
);
5182 info_ptr
+= bytes_read
;
5185 DW_UNSND (attr
) = read_1_byte (abfd
, info_ptr
);
5189 DW_UNSND (attr
) = read_2_bytes (abfd
, info_ptr
);
5193 DW_UNSND (attr
) = read_4_bytes (abfd
, info_ptr
);
5197 DW_UNSND (attr
) = read_8_bytes (abfd
, info_ptr
);
5200 case DW_FORM_ref_udata
:
5201 DW_UNSND (attr
) = read_unsigned_leb128 (abfd
, info_ptr
, &bytes_read
);
5202 info_ptr
+= bytes_read
;
5204 case DW_FORM_indirect
:
5205 form
= read_unsigned_leb128 (abfd
, info_ptr
, &bytes_read
);
5206 info_ptr
+= bytes_read
;
5207 info_ptr
= read_attribute_value (attr
, form
, abfd
, info_ptr
, cu
);
5210 error ("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]",
5211 dwarf_form_name (form
),
5212 bfd_get_filename (abfd
));
5217 /* Read an attribute described by an abbreviated attribute. */
5220 read_attribute (struct attribute
*attr
, struct attr_abbrev
*abbrev
,
5221 bfd
*abfd
, char *info_ptr
, struct dwarf2_cu
*cu
)
5223 attr
->name
= abbrev
->name
;
5224 return read_attribute_value (attr
, abbrev
->form
, abfd
, info_ptr
, cu
);
5227 /* read dwarf information from a buffer */
5230 read_1_byte (bfd
*abfd
, char *buf
)
5232 return bfd_get_8 (abfd
, (bfd_byte
*) buf
);
5236 read_1_signed_byte (bfd
*abfd
, char *buf
)
5238 return bfd_get_signed_8 (abfd
, (bfd_byte
*) buf
);
5242 read_2_bytes (bfd
*abfd
, char *buf
)
5244 return bfd_get_16 (abfd
, (bfd_byte
*) buf
);
5248 read_2_signed_bytes (bfd
*abfd
, char *buf
)
5250 return bfd_get_signed_16 (abfd
, (bfd_byte
*) buf
);
5254 read_4_bytes (bfd
*abfd
, char *buf
)
5256 return bfd_get_32 (abfd
, (bfd_byte
*) buf
);
5260 read_4_signed_bytes (bfd
*abfd
, char *buf
)
5262 return bfd_get_signed_32 (abfd
, (bfd_byte
*) buf
);
5265 static unsigned long
5266 read_8_bytes (bfd
*abfd
, char *buf
)
5268 return bfd_get_64 (abfd
, (bfd_byte
*) buf
);
5272 read_address (bfd
*abfd
, char *buf
, struct dwarf2_cu
*cu
, int *bytes_read
)
5274 struct comp_unit_head
*cu_header
= &cu
->header
;
5275 CORE_ADDR retval
= 0;
5277 if (cu_header
->signed_addr_p
)
5279 switch (cu_header
->addr_size
)
5282 retval
= bfd_get_signed_16 (abfd
, (bfd_byte
*) buf
);
5285 retval
= bfd_get_signed_32 (abfd
, (bfd_byte
*) buf
);
5288 retval
= bfd_get_signed_64 (abfd
, (bfd_byte
*) buf
);
5291 internal_error (__FILE__
, __LINE__
,
5292 "read_address: bad switch, signed [in module %s]",
5293 bfd_get_filename (abfd
));
5298 switch (cu_header
->addr_size
)
5301 retval
= bfd_get_16 (abfd
, (bfd_byte
*) buf
);
5304 retval
= bfd_get_32 (abfd
, (bfd_byte
*) buf
);
5307 retval
= bfd_get_64 (abfd
, (bfd_byte
*) buf
);
5310 internal_error (__FILE__
, __LINE__
,
5311 "read_address: bad switch, unsigned [in module %s]",
5312 bfd_get_filename (abfd
));
5316 *bytes_read
= cu_header
->addr_size
;
5320 /* Read the initial length from a section. The (draft) DWARF 3
5321 specification allows the initial length to take up either 4 bytes
5322 or 12 bytes. If the first 4 bytes are 0xffffffff, then the next 8
5323 bytes describe the length and all offsets will be 8 bytes in length
5326 An older, non-standard 64-bit format is also handled by this
5327 function. The older format in question stores the initial length
5328 as an 8-byte quantity without an escape value. Lengths greater
5329 than 2^32 aren't very common which means that the initial 4 bytes
5330 is almost always zero. Since a length value of zero doesn't make
5331 sense for the 32-bit format, this initial zero can be considered to
5332 be an escape value which indicates the presence of the older 64-bit
5333 format. As written, the code can't detect (old format) lengths
5334 greater than 4GB. If it becomes necessary to handle lengths somewhat
5335 larger than 4GB, we could allow other small values (such as the
5336 non-sensical values of 1, 2, and 3) to also be used as escape values
5337 indicating the presence of the old format.
5339 The value returned via bytes_read should be used to increment
5340 the relevant pointer after calling read_initial_length().
5342 As a side effect, this function sets the fields initial_length_size
5343 and offset_size in cu_header to the values appropriate for the
5344 length field. (The format of the initial length field determines
5345 the width of file offsets to be fetched later with fetch_offset().)
5347 [ Note: read_initial_length() and read_offset() are based on the
5348 document entitled "DWARF Debugging Information Format", revision
5349 3, draft 8, dated November 19, 2001. This document was obtained
5352 http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
5354 This document is only a draft and is subject to change. (So beware.)
5356 Details regarding the older, non-standard 64-bit format were
5357 determined empirically by examining 64-bit ELF files produced
5358 by the SGI toolchain on an IRIX 6.5 machine.
5360 - Kevin, July 16, 2002
5364 read_initial_length (bfd
*abfd
, char *buf
, struct comp_unit_head
*cu_header
,
5369 retval
= bfd_get_32 (abfd
, (bfd_byte
*) buf
);
5371 if (retval
== 0xffffffff)
5373 retval
= bfd_get_64 (abfd
, (bfd_byte
*) buf
+ 4);
5375 if (cu_header
!= NULL
)
5377 cu_header
->initial_length_size
= 12;
5378 cu_header
->offset_size
= 8;
5381 else if (retval
== 0)
5383 /* Handle (non-standard) 64-bit DWARF2 formats such as that used
5385 retval
= bfd_get_64 (abfd
, (bfd_byte
*) buf
);
5387 if (cu_header
!= NULL
)
5389 cu_header
->initial_length_size
= 8;
5390 cu_header
->offset_size
= 8;
5396 if (cu_header
!= NULL
)
5398 cu_header
->initial_length_size
= 4;
5399 cu_header
->offset_size
= 4;
5406 /* Read an offset from the data stream. The size of the offset is
5407 given by cu_header->offset_size. */
5410 read_offset (bfd
*abfd
, char *buf
, const struct comp_unit_head
*cu_header
,
5415 switch (cu_header
->offset_size
)
5418 retval
= bfd_get_32 (abfd
, (bfd_byte
*) buf
);
5422 retval
= bfd_get_64 (abfd
, (bfd_byte
*) buf
);
5426 internal_error (__FILE__
, __LINE__
,
5427 "read_offset: bad switch [in module %s]",
5428 bfd_get_filename (abfd
));
5435 read_n_bytes (bfd
*abfd
, char *buf
, unsigned int size
)
5437 /* If the size of a host char is 8 bits, we can return a pointer
5438 to the buffer, otherwise we have to copy the data to a buffer
5439 allocated on the temporary obstack. */
5440 gdb_assert (HOST_CHAR_BIT
== 8);
5445 read_string (bfd
*abfd
, char *buf
, unsigned int *bytes_read_ptr
)
5447 /* If the size of a host char is 8 bits, we can return a pointer
5448 to the string, otherwise we have to copy the string to a buffer
5449 allocated on the temporary obstack. */
5450 gdb_assert (HOST_CHAR_BIT
== 8);
5453 *bytes_read_ptr
= 1;
5456 *bytes_read_ptr
= strlen (buf
) + 1;
5461 read_indirect_string (bfd
*abfd
, char *buf
,
5462 const struct comp_unit_head
*cu_header
,
5463 unsigned int *bytes_read_ptr
)
5465 LONGEST str_offset
= read_offset (abfd
, buf
, cu_header
,
5466 (int *) bytes_read_ptr
);
5468 if (dwarf2_per_objfile
->str_buffer
== NULL
)
5470 error ("DW_FORM_strp used without .debug_str section [in module %s]",
5471 bfd_get_filename (abfd
));
5474 if (str_offset
>= dwarf2_per_objfile
->str_size
)
5476 error ("DW_FORM_strp pointing outside of .debug_str section [in module %s]",
5477 bfd_get_filename (abfd
));
5480 gdb_assert (HOST_CHAR_BIT
== 8);
5481 if (dwarf2_per_objfile
->str_buffer
[str_offset
] == '\0')
5483 return dwarf2_per_objfile
->str_buffer
+ str_offset
;
5486 static unsigned long
5487 read_unsigned_leb128 (bfd
*abfd
, char *buf
, unsigned int *bytes_read_ptr
)
5489 unsigned long result
;
5490 unsigned int num_read
;
5500 byte
= bfd_get_8 (abfd
, (bfd_byte
*) buf
);
5503 result
|= ((unsigned long)(byte
& 127) << shift
);
5504 if ((byte
& 128) == 0)
5510 *bytes_read_ptr
= num_read
;
5515 read_signed_leb128 (bfd
*abfd
, char *buf
, unsigned int *bytes_read_ptr
)
5518 int i
, shift
, size
, num_read
;
5528 byte
= bfd_get_8 (abfd
, (bfd_byte
*) buf
);
5531 result
|= ((long)(byte
& 127) << shift
);
5533 if ((byte
& 128) == 0)
5538 if ((shift
< size
) && (byte
& 0x40))
5540 result
|= -(1 << shift
);
5542 *bytes_read_ptr
= num_read
;
5546 /* Return a pointer to just past the end of an LEB128 number in BUF. */
5549 skip_leb128 (bfd
*abfd
, char *buf
)
5555 byte
= bfd_get_8 (abfd
, (bfd_byte
*) buf
);
5557 if ((byte
& 128) == 0)
5563 set_cu_language (unsigned int lang
, struct dwarf2_cu
*cu
)
5569 cu
->language
= language_c
;
5571 case DW_LANG_C_plus_plus
:
5572 cu
->language
= language_cplus
;
5574 case DW_LANG_Fortran77
:
5575 case DW_LANG_Fortran90
:
5576 case DW_LANG_Fortran95
:
5577 cu
->language
= language_fortran
;
5579 case DW_LANG_Mips_Assembler
:
5580 cu
->language
= language_asm
;
5583 cu
->language
= language_java
;
5587 case DW_LANG_Cobol74
:
5588 case DW_LANG_Cobol85
:
5589 case DW_LANG_Pascal83
:
5590 case DW_LANG_Modula2
:
5592 cu
->language
= language_minimal
;
5595 cu
->language_defn
= language_def (cu
->language
);
5598 /* Return the named attribute or NULL if not there. */
5600 static struct attribute
*
5601 dwarf2_attr (struct die_info
*die
, unsigned int name
, struct dwarf2_cu
*cu
)
5604 struct attribute
*spec
= NULL
;
5606 for (i
= 0; i
< die
->num_attrs
; ++i
)
5608 if (die
->attrs
[i
].name
== name
)
5610 return &die
->attrs
[i
];
5612 if (die
->attrs
[i
].name
== DW_AT_specification
5613 || die
->attrs
[i
].name
== DW_AT_abstract_origin
)
5614 spec
= &die
->attrs
[i
];
5618 struct die_info
*ref_die
=
5619 follow_die_ref (dwarf2_get_ref_die_offset (spec
, cu
));
5622 return dwarf2_attr (ref_die
, name
, cu
);
5628 /* Return non-zero iff the attribute NAME is defined for the given DIE,
5629 and holds a non-zero value. This function should only be used for
5630 DW_FORM_flag attributes. */
5633 dwarf2_flag_true_p (struct die_info
*die
, unsigned name
, struct dwarf2_cu
*cu
)
5635 struct attribute
*attr
= dwarf2_attr (die
, name
, cu
);
5637 return (attr
&& DW_UNSND (attr
));
5641 die_is_declaration (struct die_info
*die
, struct dwarf2_cu
*cu
)
5643 /* A DIE is a declaration if it has a DW_AT_declaration attribute
5644 which value is non-zero. However, we have to be careful with
5645 DIEs having a DW_AT_specification attribute, because dwarf2_attr()
5646 (via dwarf2_flag_true_p) follows this attribute. So we may
5647 end up accidently finding a declaration attribute that belongs
5648 to a different DIE referenced by the specification attribute,
5649 even though the given DIE does not have a declaration attribute. */
5650 return (dwarf2_flag_true_p (die
, DW_AT_declaration
, cu
)
5651 && dwarf2_attr (die
, DW_AT_specification
, cu
) == NULL
);
5654 /* Return the die giving the specification for DIE, if there is
5657 static struct die_info
*
5658 die_specification (struct die_info
*die
, struct dwarf2_cu
*cu
)
5660 struct attribute
*spec_attr
= dwarf2_attr (die
, DW_AT_specification
, cu
);
5662 if (spec_attr
== NULL
)
5665 return follow_die_ref (dwarf2_get_ref_die_offset (spec_attr
, cu
));
5668 /* Free the line_header structure *LH, and any arrays and strings it
5671 free_line_header (struct line_header
*lh
)
5673 if (lh
->standard_opcode_lengths
)
5674 xfree (lh
->standard_opcode_lengths
);
5676 /* Remember that all the lh->file_names[i].name pointers are
5677 pointers into debug_line_buffer, and don't need to be freed. */
5679 xfree (lh
->file_names
);
5681 /* Similarly for the include directory names. */
5682 if (lh
->include_dirs
)
5683 xfree (lh
->include_dirs
);
5689 /* Add an entry to LH's include directory table. */
5691 add_include_dir (struct line_header
*lh
, char *include_dir
)
5693 /* Grow the array if necessary. */
5694 if (lh
->include_dirs_size
== 0)
5696 lh
->include_dirs_size
= 1; /* for testing */
5697 lh
->include_dirs
= xmalloc (lh
->include_dirs_size
5698 * sizeof (*lh
->include_dirs
));
5700 else if (lh
->num_include_dirs
>= lh
->include_dirs_size
)
5702 lh
->include_dirs_size
*= 2;
5703 lh
->include_dirs
= xrealloc (lh
->include_dirs
,
5704 (lh
->include_dirs_size
5705 * sizeof (*lh
->include_dirs
)));
5708 lh
->include_dirs
[lh
->num_include_dirs
++] = include_dir
;
5712 /* Add an entry to LH's file name table. */
5714 add_file_name (struct line_header
*lh
,
5716 unsigned int dir_index
,
5717 unsigned int mod_time
,
5718 unsigned int length
)
5720 struct file_entry
*fe
;
5722 /* Grow the array if necessary. */
5723 if (lh
->file_names_size
== 0)
5725 lh
->file_names_size
= 1; /* for testing */
5726 lh
->file_names
= xmalloc (lh
->file_names_size
5727 * sizeof (*lh
->file_names
));
5729 else if (lh
->num_file_names
>= lh
->file_names_size
)
5731 lh
->file_names_size
*= 2;
5732 lh
->file_names
= xrealloc (lh
->file_names
,
5733 (lh
->file_names_size
5734 * sizeof (*lh
->file_names
)));
5737 fe
= &lh
->file_names
[lh
->num_file_names
++];
5739 fe
->dir_index
= dir_index
;
5740 fe
->mod_time
= mod_time
;
5741 fe
->length
= length
;
5746 /* Read the statement program header starting at OFFSET in
5747 .debug_line, according to the endianness of ABFD. Return a pointer
5748 to a struct line_header, allocated using xmalloc.
5750 NOTE: the strings in the include directory and file name tables of
5751 the returned object point into debug_line_buffer, and must not be
5753 static struct line_header
*
5754 dwarf_decode_line_header (unsigned int offset
, bfd
*abfd
,
5755 struct dwarf2_cu
*cu
)
5757 struct cleanup
*back_to
;
5758 struct line_header
*lh
;
5762 char *cur_dir
, *cur_file
;
5764 if (dwarf2_per_objfile
->line_buffer
== NULL
)
5766 complaint (&symfile_complaints
, "missing .debug_line section");
5770 /* Make sure that at least there's room for the total_length field. That
5771 could be 12 bytes long, but we're just going to fudge that. */
5772 if (offset
+ 4 >= dwarf2_per_objfile
->line_size
)
5774 dwarf2_statement_list_fits_in_line_number_section_complaint ();
5778 lh
= xmalloc (sizeof (*lh
));
5779 memset (lh
, 0, sizeof (*lh
));
5780 back_to
= make_cleanup ((make_cleanup_ftype
*) free_line_header
,
5783 line_ptr
= dwarf2_per_objfile
->line_buffer
+ offset
;
5785 /* read in the header */
5786 lh
->total_length
= read_initial_length (abfd
, line_ptr
, NULL
, &bytes_read
);
5787 line_ptr
+= bytes_read
;
5788 if (line_ptr
+ lh
->total_length
> (dwarf2_per_objfile
->line_buffer
5789 + dwarf2_per_objfile
->line_size
))
5791 dwarf2_statement_list_fits_in_line_number_section_complaint ();
5794 lh
->statement_program_end
= line_ptr
+ lh
->total_length
;
5795 lh
->version
= read_2_bytes (abfd
, line_ptr
);
5797 lh
->header_length
= read_offset (abfd
, line_ptr
, &cu
->header
, &bytes_read
);
5798 line_ptr
+= bytes_read
;
5799 lh
->minimum_instruction_length
= read_1_byte (abfd
, line_ptr
);
5801 lh
->default_is_stmt
= read_1_byte (abfd
, line_ptr
);
5803 lh
->line_base
= read_1_signed_byte (abfd
, line_ptr
);
5805 lh
->line_range
= read_1_byte (abfd
, line_ptr
);
5807 lh
->opcode_base
= read_1_byte (abfd
, line_ptr
);
5809 lh
->standard_opcode_lengths
5810 = (unsigned char *) xmalloc (lh
->opcode_base
* sizeof (unsigned char));
5812 lh
->standard_opcode_lengths
[0] = 1; /* This should never be used anyway. */
5813 for (i
= 1; i
< lh
->opcode_base
; ++i
)
5815 lh
->standard_opcode_lengths
[i
] = read_1_byte (abfd
, line_ptr
);
5819 /* Read directory table */
5820 while ((cur_dir
= read_string (abfd
, line_ptr
, &bytes_read
)) != NULL
)
5822 line_ptr
+= bytes_read
;
5823 add_include_dir (lh
, cur_dir
);
5825 line_ptr
+= bytes_read
;
5827 /* Read file name table */
5828 while ((cur_file
= read_string (abfd
, line_ptr
, &bytes_read
)) != NULL
)
5830 unsigned int dir_index
, mod_time
, length
;
5832 line_ptr
+= bytes_read
;
5833 dir_index
= read_unsigned_leb128 (abfd
, line_ptr
, &bytes_read
);
5834 line_ptr
+= bytes_read
;
5835 mod_time
= read_unsigned_leb128 (abfd
, line_ptr
, &bytes_read
);
5836 line_ptr
+= bytes_read
;
5837 length
= read_unsigned_leb128 (abfd
, line_ptr
, &bytes_read
);
5838 line_ptr
+= bytes_read
;
5840 add_file_name (lh
, cur_file
, dir_index
, mod_time
, length
);
5842 line_ptr
+= bytes_read
;
5843 lh
->statement_program_start
= line_ptr
;
5845 if (line_ptr
> (dwarf2_per_objfile
->line_buffer
5846 + dwarf2_per_objfile
->line_size
))
5847 complaint (&symfile_complaints
,
5848 "line number info header doesn't fit in `.debug_line' section");
5850 discard_cleanups (back_to
);
5854 /* This function exists to work around a bug in certain compilers
5855 (particularly GCC 2.95), in which the first line number marker of a
5856 function does not show up until after the prologue, right before
5857 the second line number marker. This function shifts ADDRESS down
5858 to the beginning of the function if necessary, and is called on
5859 addresses passed to record_line. */
5862 check_cu_functions (CORE_ADDR address
, struct dwarf2_cu
*cu
)
5864 struct function_range
*fn
;
5866 /* Find the function_range containing address. */
5871 cu
->cached_fn
= cu
->first_fn
;
5875 if (fn
->lowpc
<= address
&& fn
->highpc
> address
)
5881 while (fn
&& fn
!= cu
->cached_fn
)
5882 if (fn
->lowpc
<= address
&& fn
->highpc
> address
)
5892 if (address
!= fn
->lowpc
)
5893 complaint (&symfile_complaints
,
5894 "misplaced first line number at 0x%lx for '%s'",
5895 (unsigned long) address
, fn
->name
);
5900 /* Decode the Line Number Program (LNP) for the given line_header
5901 structure and CU. The actual information extracted and the type
5902 of structures created from the LNP depends on the value of PST.
5904 1. If PST is NULL, then this procedure uses the data from the program
5905 to create all necessary symbol tables, and their linetables.
5906 The compilation directory of the file is passed in COMP_DIR,
5907 and must not be NULL.
5909 2. If PST is not NULL, this procedure reads the program to determine
5910 the list of files included by the unit represented by PST, and
5911 builds all the associated partial symbol tables. In this case,
5912 the value of COMP_DIR is ignored, and can thus be NULL (the COMP_DIR
5913 is not used to compute the full name of the symtab, and therefore
5914 omitting it when building the partial symtab does not introduce
5915 the potential for inconsistency - a partial symtab and its associated
5916 symbtab having a different fullname -). */
5919 dwarf_decode_lines (struct line_header
*lh
, char *comp_dir
, bfd
*abfd
,
5920 struct dwarf2_cu
*cu
, struct partial_symtab
*pst
)
5924 unsigned int bytes_read
;
5925 unsigned char op_code
, extended_op
, adj_opcode
;
5927 struct objfile
*objfile
= cu
->objfile
;
5928 const int decode_for_pst_p
= (pst
!= NULL
);
5930 baseaddr
= ANOFFSET (objfile
->section_offsets
, SECT_OFF_TEXT (objfile
));
5932 line_ptr
= lh
->statement_program_start
;
5933 line_end
= lh
->statement_program_end
;
5935 /* Read the statement sequences until there's nothing left. */
5936 while (line_ptr
< line_end
)
5938 /* state machine registers */
5939 CORE_ADDR address
= 0;
5940 unsigned int file
= 1;
5941 unsigned int line
= 1;
5942 unsigned int column
= 0;
5943 int is_stmt
= lh
->default_is_stmt
;
5944 int basic_block
= 0;
5945 int end_sequence
= 0;
5947 if (!decode_for_pst_p
&& lh
->num_file_names
>= file
)
5949 /* Start a subfile for the current file of the state machine. */
5950 /* lh->include_dirs and lh->file_names are 0-based, but the
5951 directory and file name numbers in the statement program
5953 struct file_entry
*fe
= &lh
->file_names
[file
- 1];
5956 dir
= lh
->include_dirs
[fe
->dir_index
- 1];
5959 dwarf2_start_subfile (fe
->name
, dir
);
5962 /* Decode the table. */
5963 while (!end_sequence
)
5965 op_code
= read_1_byte (abfd
, line_ptr
);
5968 if (op_code
>= lh
->opcode_base
)
5969 { /* Special operand. */
5970 adj_opcode
= op_code
- lh
->opcode_base
;
5971 address
+= (adj_opcode
/ lh
->line_range
)
5972 * lh
->minimum_instruction_length
;
5973 line
+= lh
->line_base
+ (adj_opcode
% lh
->line_range
);
5974 if (!decode_for_pst_p
)
5976 /* append row to matrix using current values */
5977 record_line (current_subfile
, line
,
5978 check_cu_functions (address
, cu
));
5982 else switch (op_code
)
5984 case DW_LNS_extended_op
:
5985 read_unsigned_leb128 (abfd
, line_ptr
, &bytes_read
);
5986 line_ptr
+= bytes_read
;
5987 extended_op
= read_1_byte (abfd
, line_ptr
);
5989 switch (extended_op
)
5991 case DW_LNE_end_sequence
:
5993 if (!decode_for_pst_p
)
5994 record_line (current_subfile
, 0, address
);
5996 case DW_LNE_set_address
:
5997 address
= read_address (abfd
, line_ptr
, cu
, &bytes_read
);
5998 line_ptr
+= bytes_read
;
5999 address
+= baseaddr
;
6001 case DW_LNE_define_file
:
6004 unsigned int dir_index
, mod_time
, length
;
6006 cur_file
= read_string (abfd
, line_ptr
, &bytes_read
);
6007 line_ptr
+= bytes_read
;
6009 read_unsigned_leb128 (abfd
, line_ptr
, &bytes_read
);
6010 line_ptr
+= bytes_read
;
6012 read_unsigned_leb128 (abfd
, line_ptr
, &bytes_read
);
6013 line_ptr
+= bytes_read
;
6015 read_unsigned_leb128 (abfd
, line_ptr
, &bytes_read
);
6016 line_ptr
+= bytes_read
;
6017 add_file_name (lh
, cur_file
, dir_index
, mod_time
, length
);
6021 complaint (&symfile_complaints
,
6022 "mangled .debug_line section");
6027 if (!decode_for_pst_p
)
6028 record_line (current_subfile
, line
,
6029 check_cu_functions (address
, cu
));
6032 case DW_LNS_advance_pc
:
6033 address
+= lh
->minimum_instruction_length
6034 * read_unsigned_leb128 (abfd
, line_ptr
, &bytes_read
);
6035 line_ptr
+= bytes_read
;
6037 case DW_LNS_advance_line
:
6038 line
+= read_signed_leb128 (abfd
, line_ptr
, &bytes_read
);
6039 line_ptr
+= bytes_read
;
6041 case DW_LNS_set_file
:
6043 /* lh->include_dirs and lh->file_names are 0-based,
6044 but the directory and file name numbers in the
6045 statement program are 1-based. */
6046 struct file_entry
*fe
;
6048 file
= read_unsigned_leb128 (abfd
, line_ptr
, &bytes_read
);
6049 line_ptr
+= bytes_read
;
6050 fe
= &lh
->file_names
[file
- 1];
6053 dir
= lh
->include_dirs
[fe
->dir_index
- 1];
6056 if (!decode_for_pst_p
)
6057 dwarf2_start_subfile (fe
->name
, dir
);
6060 case DW_LNS_set_column
:
6061 column
= read_unsigned_leb128 (abfd
, line_ptr
, &bytes_read
);
6062 line_ptr
+= bytes_read
;
6064 case DW_LNS_negate_stmt
:
6065 is_stmt
= (!is_stmt
);
6067 case DW_LNS_set_basic_block
:
6070 /* Add to the address register of the state machine the
6071 address increment value corresponding to special opcode
6072 255. Ie, this value is scaled by the minimum instruction
6073 length since special opcode 255 would have scaled the
6075 case DW_LNS_const_add_pc
:
6076 address
+= (lh
->minimum_instruction_length
6077 * ((255 - lh
->opcode_base
) / lh
->line_range
));
6079 case DW_LNS_fixed_advance_pc
:
6080 address
+= read_2_bytes (abfd
, line_ptr
);
6084 { /* Unknown standard opcode, ignore it. */
6086 for (i
= 0; i
< lh
->standard_opcode_lengths
[op_code
]; i
++)
6088 (void) read_unsigned_leb128 (abfd
, line_ptr
, &bytes_read
);
6089 line_ptr
+= bytes_read
;
6096 if (decode_for_pst_p
)
6100 /* Now that we're done scanning the Line Header Program, we can
6101 create the psymtab of each included file. */
6102 for (file_index
= 0; file_index
< lh
->num_file_names
; file_index
++)
6103 if (lh
->file_names
[file_index
].included_p
== 1)
6105 char *include_name
= lh
->file_names
[file_index
].name
;
6107 if (strcmp (include_name
, pst
->filename
) != 0)
6108 dwarf2_create_include_psymtab (include_name
, pst
, objfile
);
6113 /* Start a subfile for DWARF. FILENAME is the name of the file and
6114 DIRNAME the name of the source directory which contains FILENAME
6115 or NULL if not known.
6116 This routine tries to keep line numbers from identical absolute and
6117 relative file names in a common subfile.
6119 Using the `list' example from the GDB testsuite, which resides in
6120 /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
6121 of /srcdir/list0.c yields the following debugging information for list0.c:
6123 DW_AT_name: /srcdir/list0.c
6124 DW_AT_comp_dir: /compdir
6125 files.files[0].name: list0.h
6126 files.files[0].dir: /srcdir
6127 files.files[1].name: list0.c
6128 files.files[1].dir: /srcdir
6130 The line number information for list0.c has to end up in a single
6131 subfile, so that `break /srcdir/list0.c:1' works as expected. */
6134 dwarf2_start_subfile (char *filename
, char *dirname
)
6136 /* If the filename isn't absolute, try to match an existing subfile
6137 with the full pathname. */
6139 if (!IS_ABSOLUTE_PATH (filename
) && dirname
!= NULL
)
6141 struct subfile
*subfile
;
6142 char *fullname
= concat (dirname
, "/", filename
, NULL
);
6144 for (subfile
= subfiles
; subfile
; subfile
= subfile
->next
)
6146 if (FILENAME_CMP (subfile
->name
, fullname
) == 0)
6148 current_subfile
= subfile
;
6155 start_subfile (filename
, dirname
);
6159 var_decode_location (struct attribute
*attr
, struct symbol
*sym
,
6160 struct dwarf2_cu
*cu
)
6162 struct objfile
*objfile
= cu
->objfile
;
6163 struct comp_unit_head
*cu_header
= &cu
->header
;
6165 /* NOTE drow/2003-01-30: There used to be a comment and some special
6166 code here to turn a symbol with DW_AT_external and a
6167 SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol. This was
6168 necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
6169 with some versions of binutils) where shared libraries could have
6170 relocations against symbols in their debug information - the
6171 minimal symbol would have the right address, but the debug info
6172 would not. It's no longer necessary, because we will explicitly
6173 apply relocations when we read in the debug information now. */
6175 /* A DW_AT_location attribute with no contents indicates that a
6176 variable has been optimized away. */
6177 if (attr_form_is_block (attr
) && DW_BLOCK (attr
)->size
== 0)
6179 SYMBOL_CLASS (sym
) = LOC_OPTIMIZED_OUT
;
6183 /* Handle one degenerate form of location expression specially, to
6184 preserve GDB's previous behavior when section offsets are
6185 specified. If this is just a DW_OP_addr then mark this symbol
6188 if (attr_form_is_block (attr
)
6189 && DW_BLOCK (attr
)->size
== 1 + cu_header
->addr_size
6190 && DW_BLOCK (attr
)->data
[0] == DW_OP_addr
)
6194 SYMBOL_VALUE_ADDRESS (sym
) =
6195 read_address (objfile
->obfd
, DW_BLOCK (attr
)->data
+ 1, cu
, &dummy
);
6196 fixup_symbol_section (sym
, objfile
);
6197 SYMBOL_VALUE_ADDRESS (sym
) += ANOFFSET (objfile
->section_offsets
,
6198 SYMBOL_SECTION (sym
));
6199 SYMBOL_CLASS (sym
) = LOC_STATIC
;
6203 /* NOTE drow/2002-01-30: It might be worthwhile to have a static
6204 expression evaluator, and use LOC_COMPUTED only when necessary
6205 (i.e. when the value of a register or memory location is
6206 referenced, or a thread-local block, etc.). Then again, it might
6207 not be worthwhile. I'm assuming that it isn't unless performance
6208 or memory numbers show me otherwise. */
6210 dwarf2_symbol_mark_computed (attr
, sym
, cu
);
6211 SYMBOL_CLASS (sym
) = LOC_COMPUTED
;
6214 /* Given a pointer to a DWARF information entry, figure out if we need
6215 to make a symbol table entry for it, and if so, create a new entry
6216 and return a pointer to it.
6217 If TYPE is NULL, determine symbol type from the die, otherwise
6218 used the passed type. */
6220 static struct symbol
*
6221 new_symbol (struct die_info
*die
, struct type
*type
, struct dwarf2_cu
*cu
)
6223 struct objfile
*objfile
= cu
->objfile
;
6224 struct symbol
*sym
= NULL
;
6226 struct attribute
*attr
= NULL
;
6227 struct attribute
*attr2
= NULL
;
6230 baseaddr
= ANOFFSET (objfile
->section_offsets
, SECT_OFF_TEXT (objfile
));
6232 if (die
->tag
!= DW_TAG_namespace
)
6233 name
= dwarf2_linkage_name (die
, cu
);
6235 name
= TYPE_NAME (type
);
6239 sym
= (struct symbol
*) obstack_alloc (&objfile
->objfile_obstack
,
6240 sizeof (struct symbol
));
6241 OBJSTAT (objfile
, n_syms
++);
6242 memset (sym
, 0, sizeof (struct symbol
));
6244 /* Cache this symbol's name and the name's demangled form (if any). */
6245 SYMBOL_LANGUAGE (sym
) = cu
->language
;
6246 SYMBOL_SET_NAMES (sym
, name
, strlen (name
), objfile
);
6248 /* Default assumptions.
6249 Use the passed type or decode it from the die. */
6250 SYMBOL_DOMAIN (sym
) = VAR_DOMAIN
;
6251 SYMBOL_CLASS (sym
) = LOC_STATIC
;
6253 SYMBOL_TYPE (sym
) = type
;
6255 SYMBOL_TYPE (sym
) = die_type (die
, cu
);
6256 attr
= dwarf2_attr (die
, DW_AT_decl_line
, cu
);
6259 SYMBOL_LINE (sym
) = DW_UNSND (attr
);
6264 attr
= dwarf2_attr (die
, DW_AT_low_pc
, cu
);
6267 SYMBOL_VALUE_ADDRESS (sym
) = DW_ADDR (attr
) + baseaddr
;
6269 SYMBOL_CLASS (sym
) = LOC_LABEL
;
6271 case DW_TAG_subprogram
:
6272 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
6274 SYMBOL_CLASS (sym
) = LOC_BLOCK
;
6275 attr2
= dwarf2_attr (die
, DW_AT_external
, cu
);
6276 if (attr2
&& (DW_UNSND (attr2
) != 0))
6278 add_symbol_to_list (sym
, &global_symbols
);
6282 add_symbol_to_list (sym
, cu
->list_in_scope
);
6285 case DW_TAG_variable
:
6286 /* Compilation with minimal debug info may result in variables
6287 with missing type entries. Change the misleading `void' type
6288 to something sensible. */
6289 if (TYPE_CODE (SYMBOL_TYPE (sym
)) == TYPE_CODE_VOID
)
6290 SYMBOL_TYPE (sym
) = init_type (TYPE_CODE_INT
,
6291 TARGET_INT_BIT
/ HOST_CHAR_BIT
, 0,
6292 "<variable, no debug info>",
6294 attr
= dwarf2_attr (die
, DW_AT_const_value
, cu
);
6297 dwarf2_const_value (attr
, sym
, cu
);
6298 attr2
= dwarf2_attr (die
, DW_AT_external
, cu
);
6299 if (attr2
&& (DW_UNSND (attr2
) != 0))
6300 add_symbol_to_list (sym
, &global_symbols
);
6302 add_symbol_to_list (sym
, cu
->list_in_scope
);
6305 attr
= dwarf2_attr (die
, DW_AT_location
, cu
);
6308 var_decode_location (attr
, sym
, cu
);
6309 attr2
= dwarf2_attr (die
, DW_AT_external
, cu
);
6310 if (attr2
&& (DW_UNSND (attr2
) != 0))
6311 add_symbol_to_list (sym
, &global_symbols
);
6313 add_symbol_to_list (sym
, cu
->list_in_scope
);
6317 /* We do not know the address of this symbol.
6318 If it is an external symbol and we have type information
6319 for it, enter the symbol as a LOC_UNRESOLVED symbol.
6320 The address of the variable will then be determined from
6321 the minimal symbol table whenever the variable is
6323 attr2
= dwarf2_attr (die
, DW_AT_external
, cu
);
6324 if (attr2
&& (DW_UNSND (attr2
) != 0)
6325 && dwarf2_attr (die
, DW_AT_type
, cu
) != NULL
)
6327 SYMBOL_CLASS (sym
) = LOC_UNRESOLVED
;
6328 add_symbol_to_list (sym
, &global_symbols
);
6332 case DW_TAG_formal_parameter
:
6333 attr
= dwarf2_attr (die
, DW_AT_location
, cu
);
6336 var_decode_location (attr
, sym
, cu
);
6337 /* FIXME drow/2003-07-31: Is LOC_COMPUTED_ARG necessary? */
6338 if (SYMBOL_CLASS (sym
) == LOC_COMPUTED
)
6339 SYMBOL_CLASS (sym
) = LOC_COMPUTED_ARG
;
6341 attr
= dwarf2_attr (die
, DW_AT_const_value
, cu
);
6344 dwarf2_const_value (attr
, sym
, cu
);
6346 add_symbol_to_list (sym
, cu
->list_in_scope
);
6348 case DW_TAG_unspecified_parameters
:
6349 /* From varargs functions; gdb doesn't seem to have any
6350 interest in this information, so just ignore it for now.
6353 case DW_TAG_class_type
:
6354 case DW_TAG_structure_type
:
6355 case DW_TAG_union_type
:
6356 case DW_TAG_enumeration_type
:
6357 SYMBOL_CLASS (sym
) = LOC_TYPEDEF
;
6358 SYMBOL_DOMAIN (sym
) = STRUCT_DOMAIN
;
6360 /* Make sure that the symbol includes appropriate enclosing
6361 classes/namespaces in its name. These are calculated in
6362 read_structure_type, and the correct name is saved in
6365 if (cu
->language
== language_cplus
)
6367 struct type
*type
= SYMBOL_TYPE (sym
);
6369 if (TYPE_TAG_NAME (type
) != NULL
)
6371 /* FIXME: carlton/2003-11-10: Should this use
6372 SYMBOL_SET_NAMES instead? (The same problem also
6373 arises further down in this function.) */
6374 /* The type's name is already allocated along with
6375 this objfile, so we don't need to duplicate it
6377 SYMBOL_LINKAGE_NAME (sym
) = TYPE_TAG_NAME (type
);
6382 /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
6383 really ever be static objects: otherwise, if you try
6384 to, say, break of a class's method and you're in a file
6385 which doesn't mention that class, it won't work unless
6386 the check for all static symbols in lookup_symbol_aux
6387 saves you. See the OtherFileClass tests in
6388 gdb.c++/namespace.exp. */
6390 struct pending
**list_to_add
;
6392 list_to_add
= (cu
->list_in_scope
== &file_symbols
6393 && cu
->language
== language_cplus
6394 ? &global_symbols
: cu
->list_in_scope
);
6396 add_symbol_to_list (sym
, list_to_add
);
6398 /* The semantics of C++ state that "struct foo { ... }" also
6399 defines a typedef for "foo". Synthesize a typedef symbol so
6400 that "ptype foo" works as expected. */
6401 if (cu
->language
== language_cplus
)
6403 struct symbol
*typedef_sym
= (struct symbol
*)
6404 obstack_alloc (&objfile
->objfile_obstack
,
6405 sizeof (struct symbol
));
6406 *typedef_sym
= *sym
;
6407 SYMBOL_DOMAIN (typedef_sym
) = VAR_DOMAIN
;
6408 /* The symbol's name is already allocated along with
6409 this objfile, so we don't need to duplicate it for
6411 if (TYPE_NAME (SYMBOL_TYPE (sym
)) == 0)
6412 TYPE_NAME (SYMBOL_TYPE (sym
)) = SYMBOL_NATURAL_NAME (sym
);
6413 add_symbol_to_list (typedef_sym
, list_to_add
);
6417 case DW_TAG_typedef
:
6418 if (processing_has_namespace_info
6419 && processing_current_prefix
[0] != '\0')
6421 SYMBOL_LINKAGE_NAME (sym
) = obconcat (&objfile
->objfile_obstack
,
6422 processing_current_prefix
,
6426 SYMBOL_CLASS (sym
) = LOC_TYPEDEF
;
6427 SYMBOL_DOMAIN (sym
) = VAR_DOMAIN
;
6428 add_symbol_to_list (sym
, cu
->list_in_scope
);
6430 case DW_TAG_base_type
:
6431 case DW_TAG_subrange_type
:
6432 SYMBOL_CLASS (sym
) = LOC_TYPEDEF
;
6433 SYMBOL_DOMAIN (sym
) = VAR_DOMAIN
;
6434 add_symbol_to_list (sym
, cu
->list_in_scope
);
6436 case DW_TAG_enumerator
:
6437 if (processing_has_namespace_info
6438 && processing_current_prefix
[0] != '\0')
6440 SYMBOL_LINKAGE_NAME (sym
) = obconcat (&objfile
->objfile_obstack
,
6441 processing_current_prefix
,
6445 attr
= dwarf2_attr (die
, DW_AT_const_value
, cu
);
6448 dwarf2_const_value (attr
, sym
, cu
);
6451 /* NOTE: carlton/2003-11-10: See comment above in the
6452 DW_TAG_class_type, etc. block. */
6454 struct pending
**list_to_add
;
6456 list_to_add
= (cu
->list_in_scope
== &file_symbols
6457 && cu
->language
== language_cplus
6458 ? &global_symbols
: cu
->list_in_scope
);
6460 add_symbol_to_list (sym
, list_to_add
);
6463 case DW_TAG_namespace
:
6464 SYMBOL_CLASS (sym
) = LOC_TYPEDEF
;
6465 add_symbol_to_list (sym
, &global_symbols
);
6468 /* Not a tag we recognize. Hopefully we aren't processing
6469 trash data, but since we must specifically ignore things
6470 we don't recognize, there is nothing else we should do at
6472 complaint (&symfile_complaints
, "unsupported tag: '%s'",
6473 dwarf_tag_name (die
->tag
));
6480 /* Copy constant value from an attribute to a symbol. */
6483 dwarf2_const_value (struct attribute
*attr
, struct symbol
*sym
,
6484 struct dwarf2_cu
*cu
)
6486 struct objfile
*objfile
= cu
->objfile
;
6487 struct comp_unit_head
*cu_header
= &cu
->header
;
6488 struct dwarf_block
*blk
;
6493 if (TYPE_LENGTH (SYMBOL_TYPE (sym
)) != cu_header
->addr_size
)
6494 dwarf2_const_value_length_mismatch_complaint (DEPRECATED_SYMBOL_NAME (sym
),
6495 cu_header
->addr_size
,
6496 TYPE_LENGTH (SYMBOL_TYPE
6498 SYMBOL_VALUE_BYTES (sym
) = (char *)
6499 obstack_alloc (&objfile
->objfile_obstack
, cu_header
->addr_size
);
6500 /* NOTE: cagney/2003-05-09: In-lined store_address call with
6501 it's body - store_unsigned_integer. */
6502 store_unsigned_integer (SYMBOL_VALUE_BYTES (sym
), cu_header
->addr_size
,
6504 SYMBOL_CLASS (sym
) = LOC_CONST_BYTES
;
6506 case DW_FORM_block1
:
6507 case DW_FORM_block2
:
6508 case DW_FORM_block4
:
6510 blk
= DW_BLOCK (attr
);
6511 if (TYPE_LENGTH (SYMBOL_TYPE (sym
)) != blk
->size
)
6512 dwarf2_const_value_length_mismatch_complaint (DEPRECATED_SYMBOL_NAME (sym
),
6514 TYPE_LENGTH (SYMBOL_TYPE
6516 SYMBOL_VALUE_BYTES (sym
) = (char *)
6517 obstack_alloc (&objfile
->objfile_obstack
, blk
->size
);
6518 memcpy (SYMBOL_VALUE_BYTES (sym
), blk
->data
, blk
->size
);
6519 SYMBOL_CLASS (sym
) = LOC_CONST_BYTES
;
6522 /* The DW_AT_const_value attributes are supposed to carry the
6523 symbol's value "represented as it would be on the target
6524 architecture." By the time we get here, it's already been
6525 converted to host endianness, so we just need to sign- or
6526 zero-extend it as appropriate. */
6528 dwarf2_const_value_data (attr
, sym
, 8);
6531 dwarf2_const_value_data (attr
, sym
, 16);
6534 dwarf2_const_value_data (attr
, sym
, 32);
6537 dwarf2_const_value_data (attr
, sym
, 64);
6541 SYMBOL_VALUE (sym
) = DW_SND (attr
);
6542 SYMBOL_CLASS (sym
) = LOC_CONST
;
6546 SYMBOL_VALUE (sym
) = DW_UNSND (attr
);
6547 SYMBOL_CLASS (sym
) = LOC_CONST
;
6551 complaint (&symfile_complaints
,
6552 "unsupported const value attribute form: '%s'",
6553 dwarf_form_name (attr
->form
));
6554 SYMBOL_VALUE (sym
) = 0;
6555 SYMBOL_CLASS (sym
) = LOC_CONST
;
6561 /* Given an attr with a DW_FORM_dataN value in host byte order, sign-
6562 or zero-extend it as appropriate for the symbol's type. */
6564 dwarf2_const_value_data (struct attribute
*attr
,
6568 LONGEST l
= DW_UNSND (attr
);
6570 if (bits
< sizeof (l
) * 8)
6572 if (TYPE_UNSIGNED (SYMBOL_TYPE (sym
)))
6573 l
&= ((LONGEST
) 1 << bits
) - 1;
6575 l
= (l
<< (sizeof (l
) * 8 - bits
)) >> (sizeof (l
) * 8 - bits
);
6578 SYMBOL_VALUE (sym
) = l
;
6579 SYMBOL_CLASS (sym
) = LOC_CONST
;
6583 /* Return the type of the die in question using its DW_AT_type attribute. */
6585 static struct type
*
6586 die_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
6589 struct attribute
*type_attr
;
6590 struct die_info
*type_die
;
6593 type_attr
= dwarf2_attr (die
, DW_AT_type
, cu
);
6596 /* A missing DW_AT_type represents a void type. */
6597 return dwarf2_fundamental_type (cu
->objfile
, FT_VOID
, cu
);
6601 ref
= dwarf2_get_ref_die_offset (type_attr
, cu
);
6602 type_die
= follow_die_ref (ref
);
6605 error ("Dwarf Error: Cannot find referent at offset %d [in module %s]",
6606 ref
, cu
->objfile
->name
);
6610 type
= tag_type_to_type (type_die
, cu
);
6613 dump_die (type_die
);
6614 error ("Dwarf Error: Problem turning type die at offset into gdb type [in module %s]",
6620 /* Return the containing type of the die in question using its
6621 DW_AT_containing_type attribute. */
6623 static struct type
*
6624 die_containing_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
6626 struct type
*type
= NULL
;
6627 struct attribute
*type_attr
;
6628 struct die_info
*type_die
= NULL
;
6631 type_attr
= dwarf2_attr (die
, DW_AT_containing_type
, cu
);
6634 ref
= dwarf2_get_ref_die_offset (type_attr
, cu
);
6635 type_die
= follow_die_ref (ref
);
6638 error ("Dwarf Error: Cannot find referent at offset %d [in module %s]", ref
,
6642 type
= tag_type_to_type (type_die
, cu
);
6647 dump_die (type_die
);
6648 error ("Dwarf Error: Problem turning containing type into gdb type [in module %s]",
6655 static struct type
*
6656 type_at_offset (unsigned int offset
, struct dwarf2_cu
*cu
)
6658 struct die_info
*die
;
6661 die
= follow_die_ref (offset
);
6664 error ("Dwarf Error: Cannot find type referent at offset %d.", offset
);
6667 type
= tag_type_to_type (die
, cu
);
6672 static struct type
*
6673 tag_type_to_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
6681 read_type_die (die
, cu
);
6685 error ("Dwarf Error: Cannot find type of die [in module %s]",
6693 read_type_die (struct die_info
*die
, struct dwarf2_cu
*cu
)
6695 char *prefix
= determine_prefix (die
, cu
);
6696 const char *old_prefix
= processing_current_prefix
;
6697 struct cleanup
*back_to
= make_cleanup (xfree
, prefix
);
6698 processing_current_prefix
= prefix
;
6702 case DW_TAG_class_type
:
6703 case DW_TAG_structure_type
:
6704 case DW_TAG_union_type
:
6705 read_structure_type (die
, cu
);
6707 case DW_TAG_enumeration_type
:
6708 read_enumeration_type (die
, cu
);
6710 case DW_TAG_subprogram
:
6711 case DW_TAG_subroutine_type
:
6712 read_subroutine_type (die
, cu
);
6714 case DW_TAG_array_type
:
6715 read_array_type (die
, cu
);
6717 case DW_TAG_pointer_type
:
6718 read_tag_pointer_type (die
, cu
);
6720 case DW_TAG_ptr_to_member_type
:
6721 read_tag_ptr_to_member_type (die
, cu
);
6723 case DW_TAG_reference_type
:
6724 read_tag_reference_type (die
, cu
);
6726 case DW_TAG_const_type
:
6727 read_tag_const_type (die
, cu
);
6729 case DW_TAG_volatile_type
:
6730 read_tag_volatile_type (die
, cu
);
6732 case DW_TAG_string_type
:
6733 read_tag_string_type (die
, cu
);
6735 case DW_TAG_typedef
:
6736 read_typedef (die
, cu
);
6738 case DW_TAG_subrange_type
:
6739 read_subrange_type (die
, cu
);
6741 case DW_TAG_base_type
:
6742 read_base_type (die
, cu
);
6745 complaint (&symfile_complaints
, "unexepected tag in read_type_die: '%s'",
6746 dwarf_tag_name (die
->tag
));
6750 processing_current_prefix
= old_prefix
;
6751 do_cleanups (back_to
);
6754 /* Return the name of the namespace/class that DIE is defined within,
6755 or "" if we can't tell. The caller should xfree the result. */
6757 /* NOTE: carlton/2004-01-23: See read_func_scope (and the comment
6758 therein) for an example of how to use this function to deal with
6759 DW_AT_specification. */
6762 determine_prefix (struct die_info
*die
, struct dwarf2_cu
*cu
)
6764 struct die_info
*parent
;
6766 if (cu
->language
!= language_cplus
)
6769 parent
= die
->parent
;
6773 return xstrdup ("");
6777 switch (parent
->tag
) {
6778 case DW_TAG_namespace
:
6780 /* FIXME: carlton/2004-03-05: Should I follow extension dies
6781 before doing this check? */
6782 if (parent
->type
!= NULL
&& TYPE_TAG_NAME (parent
->type
) != NULL
)
6784 return xstrdup (TYPE_TAG_NAME (parent
->type
));
6789 char *parent_prefix
= determine_prefix (parent
, cu
);
6790 char *retval
= typename_concat (parent_prefix
,
6791 namespace_name (parent
, &dummy
,
6793 xfree (parent_prefix
);
6798 case DW_TAG_class_type
:
6799 case DW_TAG_structure_type
:
6801 if (parent
->type
!= NULL
&& TYPE_TAG_NAME (parent
->type
) != NULL
)
6803 return xstrdup (TYPE_TAG_NAME (parent
->type
));
6807 const char *old_prefix
= processing_current_prefix
;
6808 char *new_prefix
= determine_prefix (parent
, cu
);
6811 processing_current_prefix
= new_prefix
;
6812 retval
= determine_class_name (parent
, cu
);
6813 processing_current_prefix
= old_prefix
;
6820 return determine_prefix (parent
, cu
);
6825 /* Return a newly-allocated string formed by concatenating PREFIX,
6826 "::", and SUFFIX, except that if PREFIX is NULL or the empty
6827 string, just return a copy of SUFFIX. */
6830 typename_concat (const char *prefix
, const char *suffix
)
6832 if (prefix
== NULL
|| prefix
[0] == '\0')
6833 return xstrdup (suffix
);
6836 char *retval
= xmalloc (strlen (prefix
) + 2 + strlen (suffix
) + 1);
6838 strcpy (retval
, prefix
);
6839 strcat (retval
, "::");
6840 strcat (retval
, suffix
);
6846 static struct type
*
6847 dwarf_base_type (int encoding
, int size
, struct dwarf2_cu
*cu
)
6849 struct objfile
*objfile
= cu
->objfile
;
6851 /* FIXME - this should not produce a new (struct type *)
6852 every time. It should cache base types. */
6856 case DW_ATE_address
:
6857 type
= dwarf2_fundamental_type (objfile
, FT_VOID
, cu
);
6859 case DW_ATE_boolean
:
6860 type
= dwarf2_fundamental_type (objfile
, FT_BOOLEAN
, cu
);
6862 case DW_ATE_complex_float
:
6865 type
= dwarf2_fundamental_type (objfile
, FT_DBL_PREC_COMPLEX
, cu
);
6869 type
= dwarf2_fundamental_type (objfile
, FT_COMPLEX
, cu
);
6875 type
= dwarf2_fundamental_type (objfile
, FT_DBL_PREC_FLOAT
, cu
);
6879 type
= dwarf2_fundamental_type (objfile
, FT_FLOAT
, cu
);
6886 type
= dwarf2_fundamental_type (objfile
, FT_SIGNED_CHAR
, cu
);
6889 type
= dwarf2_fundamental_type (objfile
, FT_SIGNED_SHORT
, cu
);
6893 type
= dwarf2_fundamental_type (objfile
, FT_SIGNED_INTEGER
, cu
);
6897 case DW_ATE_signed_char
:
6898 type
= dwarf2_fundamental_type (objfile
, FT_SIGNED_CHAR
, cu
);
6900 case DW_ATE_unsigned
:
6904 type
= dwarf2_fundamental_type (objfile
, FT_UNSIGNED_CHAR
, cu
);
6907 type
= dwarf2_fundamental_type (objfile
, FT_UNSIGNED_SHORT
, cu
);
6911 type
= dwarf2_fundamental_type (objfile
, FT_UNSIGNED_INTEGER
, cu
);
6915 case DW_ATE_unsigned_char
:
6916 type
= dwarf2_fundamental_type (objfile
, FT_UNSIGNED_CHAR
, cu
);
6919 type
= dwarf2_fundamental_type (objfile
, FT_SIGNED_INTEGER
, cu
);
6926 copy_die (struct die_info
*old_die
)
6928 struct die_info
*new_die
;
6931 new_die
= (struct die_info
*) xmalloc (sizeof (struct die_info
));
6932 memset (new_die
, 0, sizeof (struct die_info
));
6934 new_die
->tag
= old_die
->tag
;
6935 new_die
->has_children
= old_die
->has_children
;
6936 new_die
->abbrev
= old_die
->abbrev
;
6937 new_die
->offset
= old_die
->offset
;
6938 new_die
->type
= NULL
;
6940 num_attrs
= old_die
->num_attrs
;
6941 new_die
->num_attrs
= num_attrs
;
6942 new_die
->attrs
= (struct attribute
*)
6943 xmalloc (num_attrs
* sizeof (struct attribute
));
6945 for (i
= 0; i
< old_die
->num_attrs
; ++i
)
6947 new_die
->attrs
[i
].name
= old_die
->attrs
[i
].name
;
6948 new_die
->attrs
[i
].form
= old_die
->attrs
[i
].form
;
6949 new_die
->attrs
[i
].u
.addr
= old_die
->attrs
[i
].u
.addr
;
6952 new_die
->next
= NULL
;
6957 /* Return sibling of die, NULL if no sibling. */
6959 static struct die_info
*
6960 sibling_die (struct die_info
*die
)
6962 return die
->sibling
;
6965 /* Get linkage name of a die, return NULL if not found. */
6968 dwarf2_linkage_name (struct die_info
*die
, struct dwarf2_cu
*cu
)
6970 struct attribute
*attr
;
6972 attr
= dwarf2_attr (die
, DW_AT_MIPS_linkage_name
, cu
);
6973 if (attr
&& DW_STRING (attr
))
6974 return DW_STRING (attr
);
6975 attr
= dwarf2_attr (die
, DW_AT_name
, cu
);
6976 if (attr
&& DW_STRING (attr
))
6977 return DW_STRING (attr
);
6981 /* Get name of a die, return NULL if not found. */
6984 dwarf2_name (struct die_info
*die
, struct dwarf2_cu
*cu
)
6986 struct attribute
*attr
;
6988 attr
= dwarf2_attr (die
, DW_AT_name
, cu
);
6989 if (attr
&& DW_STRING (attr
))
6990 return DW_STRING (attr
);
6994 /* Return the die that this die in an extension of, or NULL if there
6997 static struct die_info
*
6998 dwarf2_extension (struct die_info
*die
, struct dwarf2_cu
*cu
)
7000 struct attribute
*attr
;
7001 struct die_info
*extension_die
;
7004 attr
= dwarf2_attr (die
, DW_AT_extension
, cu
);
7008 ref
= dwarf2_get_ref_die_offset (attr
, cu
);
7009 extension_die
= follow_die_ref (ref
);
7012 error ("Dwarf Error: Cannot find referent at offset %d.", ref
);
7015 return extension_die
;
7018 /* Convert a DIE tag into its string name. */
7021 dwarf_tag_name (unsigned tag
)
7025 case DW_TAG_padding
:
7026 return "DW_TAG_padding";
7027 case DW_TAG_array_type
:
7028 return "DW_TAG_array_type";
7029 case DW_TAG_class_type
:
7030 return "DW_TAG_class_type";
7031 case DW_TAG_entry_point
:
7032 return "DW_TAG_entry_point";
7033 case DW_TAG_enumeration_type
:
7034 return "DW_TAG_enumeration_type";
7035 case DW_TAG_formal_parameter
:
7036 return "DW_TAG_formal_parameter";
7037 case DW_TAG_imported_declaration
:
7038 return "DW_TAG_imported_declaration";
7040 return "DW_TAG_label";
7041 case DW_TAG_lexical_block
:
7042 return "DW_TAG_lexical_block";
7044 return "DW_TAG_member";
7045 case DW_TAG_pointer_type
:
7046 return "DW_TAG_pointer_type";
7047 case DW_TAG_reference_type
:
7048 return "DW_TAG_reference_type";
7049 case DW_TAG_compile_unit
:
7050 return "DW_TAG_compile_unit";
7051 case DW_TAG_string_type
:
7052 return "DW_TAG_string_type";
7053 case DW_TAG_structure_type
:
7054 return "DW_TAG_structure_type";
7055 case DW_TAG_subroutine_type
:
7056 return "DW_TAG_subroutine_type";
7057 case DW_TAG_typedef
:
7058 return "DW_TAG_typedef";
7059 case DW_TAG_union_type
:
7060 return "DW_TAG_union_type";
7061 case DW_TAG_unspecified_parameters
:
7062 return "DW_TAG_unspecified_parameters";
7063 case DW_TAG_variant
:
7064 return "DW_TAG_variant";
7065 case DW_TAG_common_block
:
7066 return "DW_TAG_common_block";
7067 case DW_TAG_common_inclusion
:
7068 return "DW_TAG_common_inclusion";
7069 case DW_TAG_inheritance
:
7070 return "DW_TAG_inheritance";
7071 case DW_TAG_inlined_subroutine
:
7072 return "DW_TAG_inlined_subroutine";
7074 return "DW_TAG_module";
7075 case DW_TAG_ptr_to_member_type
:
7076 return "DW_TAG_ptr_to_member_type";
7077 case DW_TAG_set_type
:
7078 return "DW_TAG_set_type";
7079 case DW_TAG_subrange_type
:
7080 return "DW_TAG_subrange_type";
7081 case DW_TAG_with_stmt
:
7082 return "DW_TAG_with_stmt";
7083 case DW_TAG_access_declaration
:
7084 return "DW_TAG_access_declaration";
7085 case DW_TAG_base_type
:
7086 return "DW_TAG_base_type";
7087 case DW_TAG_catch_block
:
7088 return "DW_TAG_catch_block";
7089 case DW_TAG_const_type
:
7090 return "DW_TAG_const_type";
7091 case DW_TAG_constant
:
7092 return "DW_TAG_constant";
7093 case DW_TAG_enumerator
:
7094 return "DW_TAG_enumerator";
7095 case DW_TAG_file_type
:
7096 return "DW_TAG_file_type";
7098 return "DW_TAG_friend";
7099 case DW_TAG_namelist
:
7100 return "DW_TAG_namelist";
7101 case DW_TAG_namelist_item
:
7102 return "DW_TAG_namelist_item";
7103 case DW_TAG_packed_type
:
7104 return "DW_TAG_packed_type";
7105 case DW_TAG_subprogram
:
7106 return "DW_TAG_subprogram";
7107 case DW_TAG_template_type_param
:
7108 return "DW_TAG_template_type_param";
7109 case DW_TAG_template_value_param
:
7110 return "DW_TAG_template_value_param";
7111 case DW_TAG_thrown_type
:
7112 return "DW_TAG_thrown_type";
7113 case DW_TAG_try_block
:
7114 return "DW_TAG_try_block";
7115 case DW_TAG_variant_part
:
7116 return "DW_TAG_variant_part";
7117 case DW_TAG_variable
:
7118 return "DW_TAG_variable";
7119 case DW_TAG_volatile_type
:
7120 return "DW_TAG_volatile_type";
7121 case DW_TAG_dwarf_procedure
:
7122 return "DW_TAG_dwarf_procedure";
7123 case DW_TAG_restrict_type
:
7124 return "DW_TAG_restrict_type";
7125 case DW_TAG_interface_type
:
7126 return "DW_TAG_interface_type";
7127 case DW_TAG_namespace
:
7128 return "DW_TAG_namespace";
7129 case DW_TAG_imported_module
:
7130 return "DW_TAG_imported_module";
7131 case DW_TAG_unspecified_type
:
7132 return "DW_TAG_unspecified_type";
7133 case DW_TAG_partial_unit
:
7134 return "DW_TAG_partial_unit";
7135 case DW_TAG_imported_unit
:
7136 return "DW_TAG_imported_unit";
7137 case DW_TAG_MIPS_loop
:
7138 return "DW_TAG_MIPS_loop";
7139 case DW_TAG_format_label
:
7140 return "DW_TAG_format_label";
7141 case DW_TAG_function_template
:
7142 return "DW_TAG_function_template";
7143 case DW_TAG_class_template
:
7144 return "DW_TAG_class_template";
7146 return "DW_TAG_<unknown>";
7150 /* Convert a DWARF attribute code into its string name. */
7153 dwarf_attr_name (unsigned attr
)
7158 return "DW_AT_sibling";
7159 case DW_AT_location
:
7160 return "DW_AT_location";
7162 return "DW_AT_name";
7163 case DW_AT_ordering
:
7164 return "DW_AT_ordering";
7165 case DW_AT_subscr_data
:
7166 return "DW_AT_subscr_data";
7167 case DW_AT_byte_size
:
7168 return "DW_AT_byte_size";
7169 case DW_AT_bit_offset
:
7170 return "DW_AT_bit_offset";
7171 case DW_AT_bit_size
:
7172 return "DW_AT_bit_size";
7173 case DW_AT_element_list
:
7174 return "DW_AT_element_list";
7175 case DW_AT_stmt_list
:
7176 return "DW_AT_stmt_list";
7178 return "DW_AT_low_pc";
7180 return "DW_AT_high_pc";
7181 case DW_AT_language
:
7182 return "DW_AT_language";
7184 return "DW_AT_member";
7186 return "DW_AT_discr";
7187 case DW_AT_discr_value
:
7188 return "DW_AT_discr_value";
7189 case DW_AT_visibility
:
7190 return "DW_AT_visibility";
7192 return "DW_AT_import";
7193 case DW_AT_string_length
:
7194 return "DW_AT_string_length";
7195 case DW_AT_common_reference
:
7196 return "DW_AT_common_reference";
7197 case DW_AT_comp_dir
:
7198 return "DW_AT_comp_dir";
7199 case DW_AT_const_value
:
7200 return "DW_AT_const_value";
7201 case DW_AT_containing_type
:
7202 return "DW_AT_containing_type";
7203 case DW_AT_default_value
:
7204 return "DW_AT_default_value";
7206 return "DW_AT_inline";
7207 case DW_AT_is_optional
:
7208 return "DW_AT_is_optional";
7209 case DW_AT_lower_bound
:
7210 return "DW_AT_lower_bound";
7211 case DW_AT_producer
:
7212 return "DW_AT_producer";
7213 case DW_AT_prototyped
:
7214 return "DW_AT_prototyped";
7215 case DW_AT_return_addr
:
7216 return "DW_AT_return_addr";
7217 case DW_AT_start_scope
:
7218 return "DW_AT_start_scope";
7219 case DW_AT_stride_size
:
7220 return "DW_AT_stride_size";
7221 case DW_AT_upper_bound
:
7222 return "DW_AT_upper_bound";
7223 case DW_AT_abstract_origin
:
7224 return "DW_AT_abstract_origin";
7225 case DW_AT_accessibility
:
7226 return "DW_AT_accessibility";
7227 case DW_AT_address_class
:
7228 return "DW_AT_address_class";
7229 case DW_AT_artificial
:
7230 return "DW_AT_artificial";
7231 case DW_AT_base_types
:
7232 return "DW_AT_base_types";
7233 case DW_AT_calling_convention
:
7234 return "DW_AT_calling_convention";
7236 return "DW_AT_count";
7237 case DW_AT_data_member_location
:
7238 return "DW_AT_data_member_location";
7239 case DW_AT_decl_column
:
7240 return "DW_AT_decl_column";
7241 case DW_AT_decl_file
:
7242 return "DW_AT_decl_file";
7243 case DW_AT_decl_line
:
7244 return "DW_AT_decl_line";
7245 case DW_AT_declaration
:
7246 return "DW_AT_declaration";
7247 case DW_AT_discr_list
:
7248 return "DW_AT_discr_list";
7249 case DW_AT_encoding
:
7250 return "DW_AT_encoding";
7251 case DW_AT_external
:
7252 return "DW_AT_external";
7253 case DW_AT_frame_base
:
7254 return "DW_AT_frame_base";
7256 return "DW_AT_friend";
7257 case DW_AT_identifier_case
:
7258 return "DW_AT_identifier_case";
7259 case DW_AT_macro_info
:
7260 return "DW_AT_macro_info";
7261 case DW_AT_namelist_items
:
7262 return "DW_AT_namelist_items";
7263 case DW_AT_priority
:
7264 return "DW_AT_priority";
7266 return "DW_AT_segment";
7267 case DW_AT_specification
:
7268 return "DW_AT_specification";
7269 case DW_AT_static_link
:
7270 return "DW_AT_static_link";
7272 return "DW_AT_type";
7273 case DW_AT_use_location
:
7274 return "DW_AT_use_location";
7275 case DW_AT_variable_parameter
:
7276 return "DW_AT_variable_parameter";
7277 case DW_AT_virtuality
:
7278 return "DW_AT_virtuality";
7279 case DW_AT_vtable_elem_location
:
7280 return "DW_AT_vtable_elem_location";
7281 case DW_AT_allocated
:
7282 return "DW_AT_allocated";
7283 case DW_AT_associated
:
7284 return "DW_AT_associated";
7285 case DW_AT_data_location
:
7286 return "DW_AT_data_location";
7288 return "DW_AT_stride";
7289 case DW_AT_entry_pc
:
7290 return "DW_AT_entry_pc";
7291 case DW_AT_use_UTF8
:
7292 return "DW_AT_use_UTF8";
7293 case DW_AT_extension
:
7294 return "DW_AT_extension";
7296 return "DW_AT_ranges";
7297 case DW_AT_trampoline
:
7298 return "DW_AT_trampoline";
7299 case DW_AT_call_column
:
7300 return "DW_AT_call_column";
7301 case DW_AT_call_file
:
7302 return "DW_AT_call_file";
7303 case DW_AT_call_line
:
7304 return "DW_AT_call_line";
7306 case DW_AT_MIPS_fde
:
7307 return "DW_AT_MIPS_fde";
7308 case DW_AT_MIPS_loop_begin
:
7309 return "DW_AT_MIPS_loop_begin";
7310 case DW_AT_MIPS_tail_loop_begin
:
7311 return "DW_AT_MIPS_tail_loop_begin";
7312 case DW_AT_MIPS_epilog_begin
:
7313 return "DW_AT_MIPS_epilog_begin";
7314 case DW_AT_MIPS_loop_unroll_factor
:
7315 return "DW_AT_MIPS_loop_unroll_factor";
7316 case DW_AT_MIPS_software_pipeline_depth
:
7317 return "DW_AT_MIPS_software_pipeline_depth";
7319 case DW_AT_MIPS_linkage_name
:
7320 return "DW_AT_MIPS_linkage_name";
7322 case DW_AT_sf_names
:
7323 return "DW_AT_sf_names";
7324 case DW_AT_src_info
:
7325 return "DW_AT_src_info";
7326 case DW_AT_mac_info
:
7327 return "DW_AT_mac_info";
7328 case DW_AT_src_coords
:
7329 return "DW_AT_src_coords";
7330 case DW_AT_body_begin
:
7331 return "DW_AT_body_begin";
7332 case DW_AT_body_end
:
7333 return "DW_AT_body_end";
7334 case DW_AT_GNU_vector
:
7335 return "DW_AT_GNU_vector";
7337 return "DW_AT_<unknown>";
7341 /* Convert a DWARF value form code into its string name. */
7344 dwarf_form_name (unsigned form
)
7349 return "DW_FORM_addr";
7350 case DW_FORM_block2
:
7351 return "DW_FORM_block2";
7352 case DW_FORM_block4
:
7353 return "DW_FORM_block4";
7355 return "DW_FORM_data2";
7357 return "DW_FORM_data4";
7359 return "DW_FORM_data8";
7360 case DW_FORM_string
:
7361 return "DW_FORM_string";
7363 return "DW_FORM_block";
7364 case DW_FORM_block1
:
7365 return "DW_FORM_block1";
7367 return "DW_FORM_data1";
7369 return "DW_FORM_flag";
7371 return "DW_FORM_sdata";
7373 return "DW_FORM_strp";
7375 return "DW_FORM_udata";
7376 case DW_FORM_ref_addr
:
7377 return "DW_FORM_ref_addr";
7379 return "DW_FORM_ref1";
7381 return "DW_FORM_ref2";
7383 return "DW_FORM_ref4";
7385 return "DW_FORM_ref8";
7386 case DW_FORM_ref_udata
:
7387 return "DW_FORM_ref_udata";
7388 case DW_FORM_indirect
:
7389 return "DW_FORM_indirect";
7391 return "DW_FORM_<unknown>";
7395 /* Convert a DWARF stack opcode into its string name. */
7398 dwarf_stack_op_name (unsigned op
)
7403 return "DW_OP_addr";
7405 return "DW_OP_deref";
7407 return "DW_OP_const1u";
7409 return "DW_OP_const1s";
7411 return "DW_OP_const2u";
7413 return "DW_OP_const2s";
7415 return "DW_OP_const4u";
7417 return "DW_OP_const4s";
7419 return "DW_OP_const8u";
7421 return "DW_OP_const8s";
7423 return "DW_OP_constu";
7425 return "DW_OP_consts";
7429 return "DW_OP_drop";
7431 return "DW_OP_over";
7433 return "DW_OP_pick";
7435 return "DW_OP_swap";
7439 return "DW_OP_xderef";
7447 return "DW_OP_minus";
7459 return "DW_OP_plus";
7460 case DW_OP_plus_uconst
:
7461 return "DW_OP_plus_uconst";
7467 return "DW_OP_shra";
7485 return "DW_OP_skip";
7487 return "DW_OP_lit0";
7489 return "DW_OP_lit1";
7491 return "DW_OP_lit2";
7493 return "DW_OP_lit3";
7495 return "DW_OP_lit4";
7497 return "DW_OP_lit5";
7499 return "DW_OP_lit6";
7501 return "DW_OP_lit7";
7503 return "DW_OP_lit8";
7505 return "DW_OP_lit9";
7507 return "DW_OP_lit10";
7509 return "DW_OP_lit11";
7511 return "DW_OP_lit12";
7513 return "DW_OP_lit13";
7515 return "DW_OP_lit14";
7517 return "DW_OP_lit15";
7519 return "DW_OP_lit16";
7521 return "DW_OP_lit17";
7523 return "DW_OP_lit18";
7525 return "DW_OP_lit19";
7527 return "DW_OP_lit20";
7529 return "DW_OP_lit21";
7531 return "DW_OP_lit22";
7533 return "DW_OP_lit23";
7535 return "DW_OP_lit24";
7537 return "DW_OP_lit25";
7539 return "DW_OP_lit26";
7541 return "DW_OP_lit27";
7543 return "DW_OP_lit28";
7545 return "DW_OP_lit29";
7547 return "DW_OP_lit30";
7549 return "DW_OP_lit31";
7551 return "DW_OP_reg0";
7553 return "DW_OP_reg1";
7555 return "DW_OP_reg2";
7557 return "DW_OP_reg3";
7559 return "DW_OP_reg4";
7561 return "DW_OP_reg5";
7563 return "DW_OP_reg6";
7565 return "DW_OP_reg7";
7567 return "DW_OP_reg8";
7569 return "DW_OP_reg9";
7571 return "DW_OP_reg10";
7573 return "DW_OP_reg11";
7575 return "DW_OP_reg12";
7577 return "DW_OP_reg13";
7579 return "DW_OP_reg14";
7581 return "DW_OP_reg15";
7583 return "DW_OP_reg16";
7585 return "DW_OP_reg17";
7587 return "DW_OP_reg18";
7589 return "DW_OP_reg19";
7591 return "DW_OP_reg20";
7593 return "DW_OP_reg21";
7595 return "DW_OP_reg22";
7597 return "DW_OP_reg23";
7599 return "DW_OP_reg24";
7601 return "DW_OP_reg25";
7603 return "DW_OP_reg26";
7605 return "DW_OP_reg27";
7607 return "DW_OP_reg28";
7609 return "DW_OP_reg29";
7611 return "DW_OP_reg30";
7613 return "DW_OP_reg31";
7615 return "DW_OP_breg0";
7617 return "DW_OP_breg1";
7619 return "DW_OP_breg2";
7621 return "DW_OP_breg3";
7623 return "DW_OP_breg4";
7625 return "DW_OP_breg5";
7627 return "DW_OP_breg6";
7629 return "DW_OP_breg7";
7631 return "DW_OP_breg8";
7633 return "DW_OP_breg9";
7635 return "DW_OP_breg10";
7637 return "DW_OP_breg11";
7639 return "DW_OP_breg12";
7641 return "DW_OP_breg13";
7643 return "DW_OP_breg14";
7645 return "DW_OP_breg15";
7647 return "DW_OP_breg16";
7649 return "DW_OP_breg17";
7651 return "DW_OP_breg18";
7653 return "DW_OP_breg19";
7655 return "DW_OP_breg20";
7657 return "DW_OP_breg21";
7659 return "DW_OP_breg22";
7661 return "DW_OP_breg23";
7663 return "DW_OP_breg24";
7665 return "DW_OP_breg25";
7667 return "DW_OP_breg26";
7669 return "DW_OP_breg27";
7671 return "DW_OP_breg28";
7673 return "DW_OP_breg29";
7675 return "DW_OP_breg30";
7677 return "DW_OP_breg31";
7679 return "DW_OP_regx";
7681 return "DW_OP_fbreg";
7683 return "DW_OP_bregx";
7685 return "DW_OP_piece";
7686 case DW_OP_deref_size
:
7687 return "DW_OP_deref_size";
7688 case DW_OP_xderef_size
:
7689 return "DW_OP_xderef_size";
7692 /* DWARF 3 extensions. */
7693 case DW_OP_push_object_address
:
7694 return "DW_OP_push_object_address";
7696 return "DW_OP_call2";
7698 return "DW_OP_call4";
7699 case DW_OP_call_ref
:
7700 return "DW_OP_call_ref";
7701 /* GNU extensions. */
7702 case DW_OP_GNU_push_tls_address
:
7703 return "DW_OP_GNU_push_tls_address";
7705 return "OP_<unknown>";
7710 dwarf_bool_name (unsigned mybool
)
7718 /* Convert a DWARF type code into its string name. */
7721 dwarf_type_encoding_name (unsigned enc
)
7725 case DW_ATE_address
:
7726 return "DW_ATE_address";
7727 case DW_ATE_boolean
:
7728 return "DW_ATE_boolean";
7729 case DW_ATE_complex_float
:
7730 return "DW_ATE_complex_float";
7732 return "DW_ATE_float";
7734 return "DW_ATE_signed";
7735 case DW_ATE_signed_char
:
7736 return "DW_ATE_signed_char";
7737 case DW_ATE_unsigned
:
7738 return "DW_ATE_unsigned";
7739 case DW_ATE_unsigned_char
:
7740 return "DW_ATE_unsigned_char";
7741 case DW_ATE_imaginary_float
:
7742 return "DW_ATE_imaginary_float";
7744 return "DW_ATE_<unknown>";
7748 /* Convert a DWARF call frame info operation to its string name. */
7752 dwarf_cfi_name (unsigned cfi_opc
)
7756 case DW_CFA_advance_loc
:
7757 return "DW_CFA_advance_loc";
7759 return "DW_CFA_offset";
7760 case DW_CFA_restore
:
7761 return "DW_CFA_restore";
7763 return "DW_CFA_nop";
7764 case DW_CFA_set_loc
:
7765 return "DW_CFA_set_loc";
7766 case DW_CFA_advance_loc1
:
7767 return "DW_CFA_advance_loc1";
7768 case DW_CFA_advance_loc2
:
7769 return "DW_CFA_advance_loc2";
7770 case DW_CFA_advance_loc4
:
7771 return "DW_CFA_advance_loc4";
7772 case DW_CFA_offset_extended
:
7773 return "DW_CFA_offset_extended";
7774 case DW_CFA_restore_extended
:
7775 return "DW_CFA_restore_extended";
7776 case DW_CFA_undefined
:
7777 return "DW_CFA_undefined";
7778 case DW_CFA_same_value
:
7779 return "DW_CFA_same_value";
7780 case DW_CFA_register
:
7781 return "DW_CFA_register";
7782 case DW_CFA_remember_state
:
7783 return "DW_CFA_remember_state";
7784 case DW_CFA_restore_state
:
7785 return "DW_CFA_restore_state";
7786 case DW_CFA_def_cfa
:
7787 return "DW_CFA_def_cfa";
7788 case DW_CFA_def_cfa_register
:
7789 return "DW_CFA_def_cfa_register";
7790 case DW_CFA_def_cfa_offset
:
7791 return "DW_CFA_def_cfa_offset";
7794 case DW_CFA_def_cfa_expression
:
7795 return "DW_CFA_def_cfa_expression";
7796 case DW_CFA_expression
:
7797 return "DW_CFA_expression";
7798 case DW_CFA_offset_extended_sf
:
7799 return "DW_CFA_offset_extended_sf";
7800 case DW_CFA_def_cfa_sf
:
7801 return "DW_CFA_def_cfa_sf";
7802 case DW_CFA_def_cfa_offset_sf
:
7803 return "DW_CFA_def_cfa_offset_sf";
7805 /* SGI/MIPS specific */
7806 case DW_CFA_MIPS_advance_loc8
:
7807 return "DW_CFA_MIPS_advance_loc8";
7809 /* GNU extensions */
7810 case DW_CFA_GNU_window_save
:
7811 return "DW_CFA_GNU_window_save";
7812 case DW_CFA_GNU_args_size
:
7813 return "DW_CFA_GNU_args_size";
7814 case DW_CFA_GNU_negative_offset_extended
:
7815 return "DW_CFA_GNU_negative_offset_extended";
7818 return "DW_CFA_<unknown>";
7824 dump_die (struct die_info
*die
)
7828 fprintf_unfiltered (gdb_stderr
, "Die: %s (abbrev = %d, offset = %d)\n",
7829 dwarf_tag_name (die
->tag
), die
->abbrev
, die
->offset
);
7830 fprintf_unfiltered (gdb_stderr
, "\thas children: %s\n",
7831 dwarf_bool_name (die
->child
!= NULL
));
7833 fprintf_unfiltered (gdb_stderr
, "\tattributes:\n");
7834 for (i
= 0; i
< die
->num_attrs
; ++i
)
7836 fprintf_unfiltered (gdb_stderr
, "\t\t%s (%s) ",
7837 dwarf_attr_name (die
->attrs
[i
].name
),
7838 dwarf_form_name (die
->attrs
[i
].form
));
7839 switch (die
->attrs
[i
].form
)
7841 case DW_FORM_ref_addr
:
7843 fprintf_unfiltered (gdb_stderr
, "address: ");
7844 print_address_numeric (DW_ADDR (&die
->attrs
[i
]), 1, gdb_stderr
);
7846 case DW_FORM_block2
:
7847 case DW_FORM_block4
:
7849 case DW_FORM_block1
:
7850 fprintf_unfiltered (gdb_stderr
, "block: size %d", DW_BLOCK (&die
->attrs
[i
])->size
);
7861 fprintf_unfiltered (gdb_stderr
, "constant: %ld", DW_UNSND (&die
->attrs
[i
]));
7863 case DW_FORM_string
:
7865 fprintf_unfiltered (gdb_stderr
, "string: \"%s\"",
7866 DW_STRING (&die
->attrs
[i
])
7867 ? DW_STRING (&die
->attrs
[i
]) : "");
7870 if (DW_UNSND (&die
->attrs
[i
]))
7871 fprintf_unfiltered (gdb_stderr
, "flag: TRUE");
7873 fprintf_unfiltered (gdb_stderr
, "flag: FALSE");
7875 case DW_FORM_indirect
:
7876 /* the reader will have reduced the indirect form to
7877 the "base form" so this form should not occur */
7878 fprintf_unfiltered (gdb_stderr
, "unexpected attribute form: DW_FORM_indirect");
7881 fprintf_unfiltered (gdb_stderr
, "unsupported attribute form: %d.",
7882 die
->attrs
[i
].form
);
7884 fprintf_unfiltered (gdb_stderr
, "\n");
7889 dump_die_list (struct die_info
*die
)
7894 if (die
->child
!= NULL
)
7895 dump_die_list (die
->child
);
7896 if (die
->sibling
!= NULL
)
7897 dump_die_list (die
->sibling
);
7902 store_in_ref_table (unsigned int offset
, struct die_info
*die
)
7905 struct die_info
*old
;
7907 h
= (offset
% REF_HASH_SIZE
);
7908 old
= die_ref_table
[h
];
7909 die
->next_ref
= old
;
7910 die_ref_table
[h
] = die
;
7915 dwarf2_empty_hash_tables (void)
7917 memset (die_ref_table
, 0, sizeof (die_ref_table
));
7921 dwarf2_get_ref_die_offset (struct attribute
*attr
, struct dwarf2_cu
*cu
)
7923 unsigned int result
= 0;
7927 case DW_FORM_ref_addr
:
7928 result
= DW_ADDR (attr
);
7934 case DW_FORM_ref_udata
:
7935 result
= cu
->header
.offset
+ DW_UNSND (attr
);
7938 complaint (&symfile_complaints
,
7939 "unsupported die ref attribute form: '%s'",
7940 dwarf_form_name (attr
->form
));
7945 /* Return the constant value held by the given attribute. Return -1
7946 if the value held by the attribute is not constant. */
7949 dwarf2_get_attr_constant_value (struct attribute
*attr
, int default_value
)
7951 if (attr
->form
== DW_FORM_sdata
)
7952 return DW_SND (attr
);
7953 else if (attr
->form
== DW_FORM_udata
7954 || attr
->form
== DW_FORM_data1
7955 || attr
->form
== DW_FORM_data2
7956 || attr
->form
== DW_FORM_data4
7957 || attr
->form
== DW_FORM_data8
)
7958 return DW_UNSND (attr
);
7961 complaint (&symfile_complaints
, "Attribute value is not a constant (%s)",
7962 dwarf_form_name (attr
->form
));
7963 return default_value
;
7967 static struct die_info
*
7968 follow_die_ref (unsigned int offset
)
7970 struct die_info
*die
;
7973 h
= (offset
% REF_HASH_SIZE
);
7974 die
= die_ref_table
[h
];
7977 if (die
->offset
== offset
)
7981 die
= die
->next_ref
;
7986 static struct type
*
7987 dwarf2_fundamental_type (struct objfile
*objfile
, int typeid,
7988 struct dwarf2_cu
*cu
)
7990 if (typeid < 0 || typeid >= FT_NUM_MEMBERS
)
7992 error ("Dwarf Error: internal error - invalid fundamental type id %d [in module %s]",
7993 typeid, objfile
->name
);
7996 /* Look for this particular type in the fundamental type vector. If
7997 one is not found, create and install one appropriate for the
7998 current language and the current target machine. */
8000 if (cu
->ftypes
[typeid] == NULL
)
8002 cu
->ftypes
[typeid] = cu
->language_defn
->la_fund_type (objfile
, typeid);
8005 return (cu
->ftypes
[typeid]);
8008 /* Decode simple location descriptions.
8009 Given a pointer to a dwarf block that defines a location, compute
8010 the location and return the value.
8012 NOTE drow/2003-11-18: This function is called in two situations
8013 now: for the address of static or global variables (partial symbols
8014 only) and for offsets into structures which are expected to be
8015 (more or less) constant. The partial symbol case should go away,
8016 and only the constant case should remain. That will let this
8017 function complain more accurately. A few special modes are allowed
8018 without complaint for global variables (for instance, global
8019 register values and thread-local values).
8021 A location description containing no operations indicates that the
8022 object is optimized out. The return value is 0 for that case.
8023 FIXME drow/2003-11-16: No callers check for this case any more; soon all
8024 callers will only want a very basic result and this can become a
8027 When the result is a register number, the global isreg flag is set,
8028 otherwise it is cleared.
8030 Note that stack[0] is unused except as a default error return.
8031 Note that stack overflow is not yet handled. */
8034 decode_locdesc (struct dwarf_block
*blk
, struct dwarf2_cu
*cu
)
8036 struct objfile
*objfile
= cu
->objfile
;
8037 struct comp_unit_head
*cu_header
= &cu
->header
;
8039 int size
= blk
->size
;
8040 char *data
= blk
->data
;
8041 CORE_ADDR stack
[64];
8043 unsigned int bytes_read
, unsnd
;
8088 stack
[++stacki
] = op
- DW_OP_lit0
;
8124 stack
[++stacki
] = op
- DW_OP_reg0
;
8126 dwarf2_complex_location_expr_complaint ();
8131 unsnd
= read_unsigned_leb128 (NULL
, (data
+ i
), &bytes_read
);
8133 stack
[++stacki
] = unsnd
;
8135 dwarf2_complex_location_expr_complaint ();
8139 stack
[++stacki
] = read_address (objfile
->obfd
, &data
[i
],
8145 stack
[++stacki
] = read_1_byte (objfile
->obfd
, &data
[i
]);
8150 stack
[++stacki
] = read_1_signed_byte (objfile
->obfd
, &data
[i
]);
8155 stack
[++stacki
] = read_2_bytes (objfile
->obfd
, &data
[i
]);
8160 stack
[++stacki
] = read_2_signed_bytes (objfile
->obfd
, &data
[i
]);
8165 stack
[++stacki
] = read_4_bytes (objfile
->obfd
, &data
[i
]);
8170 stack
[++stacki
] = read_4_signed_bytes (objfile
->obfd
, &data
[i
]);
8175 stack
[++stacki
] = read_unsigned_leb128 (NULL
, (data
+ i
),
8181 stack
[++stacki
] = read_signed_leb128 (NULL
, (data
+ i
), &bytes_read
);
8186 stack
[stacki
+ 1] = stack
[stacki
];
8191 stack
[stacki
- 1] += stack
[stacki
];
8195 case DW_OP_plus_uconst
:
8196 stack
[stacki
] += read_unsigned_leb128 (NULL
, (data
+ i
), &bytes_read
);
8201 stack
[stacki
- 1] -= stack
[stacki
];
8206 /* If we're not the last op, then we definitely can't encode
8207 this using GDB's address_class enum. This is valid for partial
8208 global symbols, although the variable's address will be bogus
8211 dwarf2_complex_location_expr_complaint ();
8214 case DW_OP_GNU_push_tls_address
:
8215 /* The top of the stack has the offset from the beginning
8216 of the thread control block at which the variable is located. */
8217 /* Nothing should follow this operator, so the top of stack would
8219 /* This is valid for partial global symbols, but the variable's
8220 address will be bogus in the psymtab. */
8222 dwarf2_complex_location_expr_complaint ();
8226 complaint (&symfile_complaints
, "unsupported stack op: '%s'",
8227 dwarf_stack_op_name (op
));
8228 return (stack
[stacki
]);
8231 return (stack
[stacki
]);
8234 /* memory allocation interface */
8236 static struct dwarf_block
*
8237 dwarf_alloc_block (struct dwarf2_cu
*cu
)
8239 struct dwarf_block
*blk
;
8241 blk
= (struct dwarf_block
*)
8242 obstack_alloc (&cu
->comp_unit_obstack
, sizeof (struct dwarf_block
));
8246 static struct abbrev_info
*
8247 dwarf_alloc_abbrev (struct dwarf2_cu
*cu
)
8249 struct abbrev_info
*abbrev
;
8251 abbrev
= (struct abbrev_info
*)
8252 obstack_alloc (&cu
->abbrev_obstack
, sizeof (struct abbrev_info
));
8253 memset (abbrev
, 0, sizeof (struct abbrev_info
));
8257 static struct die_info
*
8258 dwarf_alloc_die (void)
8260 struct die_info
*die
;
8262 die
= (struct die_info
*) xmalloc (sizeof (struct die_info
));
8263 memset (die
, 0, sizeof (struct die_info
));
8268 /* Macro support. */
8271 /* Return the full name of file number I in *LH's file name table.
8272 Use COMP_DIR as the name of the current directory of the
8273 compilation. The result is allocated using xmalloc; the caller is
8274 responsible for freeing it. */
8276 file_full_name (int file
, struct line_header
*lh
, const char *comp_dir
)
8278 struct file_entry
*fe
= &lh
->file_names
[file
- 1];
8280 if (IS_ABSOLUTE_PATH (fe
->name
))
8281 return xstrdup (fe
->name
);
8289 dir
= lh
->include_dirs
[fe
->dir_index
- 1];
8295 dir_len
= strlen (dir
);
8296 full_name
= xmalloc (dir_len
+ 1 + strlen (fe
->name
) + 1);
8297 strcpy (full_name
, dir
);
8298 full_name
[dir_len
] = '/';
8299 strcpy (full_name
+ dir_len
+ 1, fe
->name
);
8303 return xstrdup (fe
->name
);
8308 static struct macro_source_file
*
8309 macro_start_file (int file
, int line
,
8310 struct macro_source_file
*current_file
,
8311 const char *comp_dir
,
8312 struct line_header
*lh
, struct objfile
*objfile
)
8314 /* The full name of this source file. */
8315 char *full_name
= file_full_name (file
, lh
, comp_dir
);
8317 /* We don't create a macro table for this compilation unit
8318 at all until we actually get a filename. */
8319 if (! pending_macros
)
8320 pending_macros
= new_macro_table (&objfile
->objfile_obstack
,
8321 objfile
->macro_cache
);
8324 /* If we have no current file, then this must be the start_file
8325 directive for the compilation unit's main source file. */
8326 current_file
= macro_set_main (pending_macros
, full_name
);
8328 current_file
= macro_include (current_file
, line
, full_name
);
8332 return current_file
;
8336 /* Copy the LEN characters at BUF to a xmalloc'ed block of memory,
8337 followed by a null byte. */
8339 copy_string (const char *buf
, int len
)
8341 char *s
= xmalloc (len
+ 1);
8342 memcpy (s
, buf
, len
);
8350 consume_improper_spaces (const char *p
, const char *body
)
8354 complaint (&symfile_complaints
,
8355 "macro definition contains spaces in formal argument list:\n`%s'",
8367 parse_macro_definition (struct macro_source_file
*file
, int line
,
8372 /* The body string takes one of two forms. For object-like macro
8373 definitions, it should be:
8375 <macro name> " " <definition>
8377 For function-like macro definitions, it should be:
8379 <macro name> "() " <definition>
8381 <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
8383 Spaces may appear only where explicitly indicated, and in the
8386 The Dwarf 2 spec says that an object-like macro's name is always
8387 followed by a space, but versions of GCC around March 2002 omit
8388 the space when the macro's definition is the empty string.
8390 The Dwarf 2 spec says that there should be no spaces between the
8391 formal arguments in a function-like macro's formal argument list,
8392 but versions of GCC around March 2002 include spaces after the
8396 /* Find the extent of the macro name. The macro name is terminated
8397 by either a space or null character (for an object-like macro) or
8398 an opening paren (for a function-like macro). */
8399 for (p
= body
; *p
; p
++)
8400 if (*p
== ' ' || *p
== '(')
8403 if (*p
== ' ' || *p
== '\0')
8405 /* It's an object-like macro. */
8406 int name_len
= p
- body
;
8407 char *name
= copy_string (body
, name_len
);
8408 const char *replacement
;
8411 replacement
= body
+ name_len
+ 1;
8414 dwarf2_macro_malformed_definition_complaint (body
);
8415 replacement
= body
+ name_len
;
8418 macro_define_object (file
, line
, name
, replacement
);
8424 /* It's a function-like macro. */
8425 char *name
= copy_string (body
, p
- body
);
8428 char **argv
= xmalloc (argv_size
* sizeof (*argv
));
8432 p
= consume_improper_spaces (p
, body
);
8434 /* Parse the formal argument list. */
8435 while (*p
&& *p
!= ')')
8437 /* Find the extent of the current argument name. */
8438 const char *arg_start
= p
;
8440 while (*p
&& *p
!= ',' && *p
!= ')' && *p
!= ' ')
8443 if (! *p
|| p
== arg_start
)
8444 dwarf2_macro_malformed_definition_complaint (body
);
8447 /* Make sure argv has room for the new argument. */
8448 if (argc
>= argv_size
)
8451 argv
= xrealloc (argv
, argv_size
* sizeof (*argv
));
8454 argv
[argc
++] = copy_string (arg_start
, p
- arg_start
);
8457 p
= consume_improper_spaces (p
, body
);
8459 /* Consume the comma, if present. */
8464 p
= consume_improper_spaces (p
, body
);
8473 /* Perfectly formed definition, no complaints. */
8474 macro_define_function (file
, line
, name
,
8475 argc
, (const char **) argv
,
8477 else if (*p
== '\0')
8479 /* Complain, but do define it. */
8480 dwarf2_macro_malformed_definition_complaint (body
);
8481 macro_define_function (file
, line
, name
,
8482 argc
, (const char **) argv
,
8486 /* Just complain. */
8487 dwarf2_macro_malformed_definition_complaint (body
);
8490 /* Just complain. */
8491 dwarf2_macro_malformed_definition_complaint (body
);
8497 for (i
= 0; i
< argc
; i
++)
8503 dwarf2_macro_malformed_definition_complaint (body
);
8508 dwarf_decode_macros (struct line_header
*lh
, unsigned int offset
,
8509 char *comp_dir
, bfd
*abfd
,
8510 struct dwarf2_cu
*cu
)
8512 char *mac_ptr
, *mac_end
;
8513 struct macro_source_file
*current_file
= 0;
8515 if (dwarf2_per_objfile
->macinfo_buffer
== NULL
)
8517 complaint (&symfile_complaints
, "missing .debug_macinfo section");
8521 mac_ptr
= dwarf2_per_objfile
->macinfo_buffer
+ offset
;
8522 mac_end
= dwarf2_per_objfile
->macinfo_buffer
8523 + dwarf2_per_objfile
->macinfo_size
;
8527 enum dwarf_macinfo_record_type macinfo_type
;
8529 /* Do we at least have room for a macinfo type byte? */
8530 if (mac_ptr
>= mac_end
)
8532 dwarf2_macros_too_long_complaint ();
8536 macinfo_type
= read_1_byte (abfd
, mac_ptr
);
8539 switch (macinfo_type
)
8541 /* A zero macinfo type indicates the end of the macro
8546 case DW_MACINFO_define
:
8547 case DW_MACINFO_undef
:
8553 line
= read_unsigned_leb128 (abfd
, mac_ptr
, &bytes_read
);
8554 mac_ptr
+= bytes_read
;
8555 body
= read_string (abfd
, mac_ptr
, &bytes_read
);
8556 mac_ptr
+= bytes_read
;
8559 complaint (&symfile_complaints
,
8560 "debug info gives macro %s outside of any file: %s",
8562 DW_MACINFO_define
? "definition" : macinfo_type
==
8563 DW_MACINFO_undef
? "undefinition" :
8564 "something-or-other", body
);
8567 if (macinfo_type
== DW_MACINFO_define
)
8568 parse_macro_definition (current_file
, line
, body
);
8569 else if (macinfo_type
== DW_MACINFO_undef
)
8570 macro_undef (current_file
, line
, body
);
8575 case DW_MACINFO_start_file
:
8580 line
= read_unsigned_leb128 (abfd
, mac_ptr
, &bytes_read
);
8581 mac_ptr
+= bytes_read
;
8582 file
= read_unsigned_leb128 (abfd
, mac_ptr
, &bytes_read
);
8583 mac_ptr
+= bytes_read
;
8585 current_file
= macro_start_file (file
, line
,
8586 current_file
, comp_dir
,
8591 case DW_MACINFO_end_file
:
8593 complaint (&symfile_complaints
,
8594 "macro debug info has an unmatched `close_file' directive");
8597 current_file
= current_file
->included_by
;
8600 enum dwarf_macinfo_record_type next_type
;
8602 /* GCC circa March 2002 doesn't produce the zero
8603 type byte marking the end of the compilation
8604 unit. Complain if it's not there, but exit no
8607 /* Do we at least have room for a macinfo type byte? */
8608 if (mac_ptr
>= mac_end
)
8610 dwarf2_macros_too_long_complaint ();
8614 /* We don't increment mac_ptr here, so this is just
8616 next_type
= read_1_byte (abfd
, mac_ptr
);
8618 complaint (&symfile_complaints
,
8619 "no terminating 0-type entry for macros in `.debug_macinfo' section");
8626 case DW_MACINFO_vendor_ext
:
8632 constant
= read_unsigned_leb128 (abfd
, mac_ptr
, &bytes_read
);
8633 mac_ptr
+= bytes_read
;
8634 string
= read_string (abfd
, mac_ptr
, &bytes_read
);
8635 mac_ptr
+= bytes_read
;
8637 /* We don't recognize any vendor extensions. */
8644 /* Check if the attribute's form is a DW_FORM_block*
8645 if so return true else false. */
8647 attr_form_is_block (struct attribute
*attr
)
8649 return (attr
== NULL
? 0 :
8650 attr
->form
== DW_FORM_block1
8651 || attr
->form
== DW_FORM_block2
8652 || attr
->form
== DW_FORM_block4
8653 || attr
->form
== DW_FORM_block
);
8657 dwarf2_symbol_mark_computed (struct attribute
*attr
, struct symbol
*sym
,
8658 struct dwarf2_cu
*cu
)
8660 if (attr
->form
== DW_FORM_data4
|| attr
->form
== DW_FORM_data8
)
8662 struct dwarf2_loclist_baton
*baton
;
8664 baton
= obstack_alloc (&cu
->objfile
->objfile_obstack
,
8665 sizeof (struct dwarf2_loclist_baton
));
8666 baton
->objfile
= cu
->objfile
;
8668 /* We don't know how long the location list is, but make sure we
8669 don't run off the edge of the section. */
8670 baton
->size
= dwarf2_per_objfile
->loc_size
- DW_UNSND (attr
);
8671 baton
->data
= dwarf2_per_objfile
->loc_buffer
+ DW_UNSND (attr
);
8672 baton
->base_address
= cu
->header
.base_address
;
8673 if (cu
->header
.base_known
== 0)
8674 complaint (&symfile_complaints
,
8675 "Location list used without specifying the CU base address.");
8677 SYMBOL_OPS (sym
) = &dwarf2_loclist_funcs
;
8678 SYMBOL_LOCATION_BATON (sym
) = baton
;
8682 struct dwarf2_locexpr_baton
*baton
;
8684 baton
= obstack_alloc (&cu
->objfile
->objfile_obstack
,
8685 sizeof (struct dwarf2_locexpr_baton
));
8686 baton
->objfile
= cu
->objfile
;
8688 if (attr_form_is_block (attr
))
8690 /* Note that we're just copying the block's data pointer
8691 here, not the actual data. We're still pointing into the
8692 info_buffer for SYM's objfile; right now we never release
8693 that buffer, but when we do clean up properly this may
8695 baton
->size
= DW_BLOCK (attr
)->size
;
8696 baton
->data
= DW_BLOCK (attr
)->data
;
8700 dwarf2_invalid_attrib_class_complaint ("location description",
8701 SYMBOL_NATURAL_NAME (sym
));
8706 SYMBOL_OPS (sym
) = &dwarf2_locexpr_funcs
;
8707 SYMBOL_LOCATION_BATON (sym
) = baton
;
8711 /* This cleanup function is passed the address of a dwarf2_cu on the stack
8712 when we're finished with it. We can't free the pointer itself, but
8713 release any associated storage.
8715 Only used during partial symbol parsing. */
8718 free_stack_comp_unit (void *data
)
8720 struct dwarf2_cu
*cu
= data
;
8722 obstack_free (&cu
->comp_unit_obstack
, NULL
);
8723 cu
->partial_dies
= NULL
;
8726 /* Allocation function for the libiberty hash table which uses an
8730 hashtab_obstack_allocate (void *data
, size_t size
, size_t count
)
8732 unsigned int total
= size
* count
;
8733 void *ptr
= obstack_alloc ((struct obstack
*) data
, total
);
8734 memset (ptr
, 0, total
);
8738 /* Trivial deallocation function for the libiberty splay tree and hash
8739 table - don't deallocate anything. Rely on later deletion of the
8743 dummy_obstack_deallocate (void *object
, void *data
)
8748 /* Trivial hash function for partial_die_info: the hash value of a DIE
8749 is its offset in .debug_info for this objfile. */
8752 partial_die_hash (const void *item
)
8754 const struct partial_die_info
*part_die
= item
;
8755 return part_die
->offset
;
8758 /* Trivial comparison function for partial_die_info structures: two DIEs
8759 are equal if they have the same offset. */
8762 partial_die_eq (const void *item_lhs
, const void *item_rhs
)
8764 const struct partial_die_info
*part_die_lhs
= item_lhs
;
8765 const struct partial_die_info
*part_die_rhs
= item_rhs
;
8766 return part_die_lhs
->offset
== part_die_rhs
->offset
;
8769 void _initialize_dwarf2_read (void);
8772 _initialize_dwarf2_read (void)
8774 dwarf2_objfile_data_key
= register_objfile_data ();