1 /* DWARF 2 debugging format support for GDB.
3 Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
4 2004, 2005, 2006, 2007, 2008, 2009, 2010
5 Free Software Foundation, Inc.
7 Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
8 Inc. with support from Florida State University (under contract
9 with the Ada Joint Program Office), and Silicon Graphics, Inc.
10 Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
11 based on Fred Fish's (Cygnus Support) implementation of DWARF 1
14 This file is part of GDB.
16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU General Public License as published by
18 the Free Software Foundation; either version 3 of the License, or
19 (at your option) any later version.
21 This program is distributed in the hope that it will be useful,
22 but WITHOUT ANY WARRANTY; without even the implied warranty of
23 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 GNU General Public License for more details.
26 You should have received a copy of the GNU General Public License
27 along with this program. If not, see <http://www.gnu.org/licenses/>. */
37 #include "expression.h"
38 #include "filenames.h" /* for DOSish file names */
41 #include "complaints.h"
43 #include "dwarf2expr.h"
44 #include "dwarf2loc.h"
45 #include "cp-support.h"
51 #include "typeprint.h"
55 #include "gdb_string.h"
56 #include "gdb_assert.h"
57 #include <sys/types.h>
64 #define MAP_FAILED ((void *) -1)
69 /* .debug_info header for a compilation unit
70 Because of alignment constraints, this structure has padding and cannot
71 be mapped directly onto the beginning of the .debug_info section. */
72 typedef struct comp_unit_header
74 unsigned int length
; /* length of the .debug_info
76 unsigned short version
; /* version number -- 2 for DWARF
78 unsigned int abbrev_offset
; /* offset into .debug_abbrev section */
79 unsigned char addr_size
; /* byte size of an address -- 4 */
82 #define _ACTUAL_COMP_UNIT_HEADER_SIZE 11
85 /* .debug_pubnames header
86 Because of alignment constraints, this structure has padding and cannot
87 be mapped directly onto the beginning of the .debug_info section. */
88 typedef struct pubnames_header
90 unsigned int length
; /* length of the .debug_pubnames
92 unsigned char version
; /* version number -- 2 for DWARF
94 unsigned int info_offset
; /* offset into .debug_info section */
95 unsigned int info_size
; /* byte size of .debug_info section
99 #define _ACTUAL_PUBNAMES_HEADER_SIZE 13
101 /* .debug_pubnames header
102 Because of alignment constraints, this structure has padding and cannot
103 be mapped directly onto the beginning of the .debug_info section. */
104 typedef struct aranges_header
106 unsigned int length
; /* byte len of the .debug_aranges
108 unsigned short version
; /* version number -- 2 for DWARF
110 unsigned int info_offset
; /* offset into .debug_info section */
111 unsigned char addr_size
; /* byte size of an address */
112 unsigned char seg_size
; /* byte size of segment descriptor */
115 #define _ACTUAL_ARANGES_HEADER_SIZE 12
117 /* .debug_line statement program prologue
118 Because of alignment constraints, this structure has padding and cannot
119 be mapped directly onto the beginning of the .debug_info section. */
120 typedef struct statement_prologue
122 unsigned int total_length
; /* byte length of the statement
124 unsigned short version
; /* version number -- 2 for DWARF
126 unsigned int prologue_length
; /* # bytes between prologue &
128 unsigned char minimum_instruction_length
; /* byte size of
130 unsigned char default_is_stmt
; /* initial value of is_stmt
133 unsigned char line_range
;
134 unsigned char opcode_base
; /* number assigned to first special
136 unsigned char *standard_opcode_lengths
;
140 /* When non-zero, dump DIEs after they are read in. */
141 static int dwarf2_die_debug
= 0;
145 /* When set, the file that we're processing is known to have debugging
146 info for C++ namespaces. GCC 3.3.x did not produce this information,
147 but later versions do. */
149 static int processing_has_namespace_info
;
151 static const struct objfile_data
*dwarf2_objfile_data_key
;
153 struct dwarf2_section_info
161 struct dwarf2_per_objfile
163 struct dwarf2_section_info info
;
164 struct dwarf2_section_info abbrev
;
165 struct dwarf2_section_info line
;
166 struct dwarf2_section_info pubnames
;
167 struct dwarf2_section_info aranges
;
168 struct dwarf2_section_info loc
;
169 struct dwarf2_section_info macinfo
;
170 struct dwarf2_section_info str
;
171 struct dwarf2_section_info ranges
;
172 struct dwarf2_section_info types
;
173 struct dwarf2_section_info frame
;
174 struct dwarf2_section_info eh_frame
;
176 /* A list of all the compilation units. This is used to locate
177 the target compilation unit of a particular reference. */
178 struct dwarf2_per_cu_data
**all_comp_units
;
180 /* The number of compilation units in ALL_COMP_UNITS. */
183 /* A chain of compilation units that are currently read in, so that
184 they can be freed later. */
185 struct dwarf2_per_cu_data
*read_in_chain
;
187 /* A table mapping .debug_types signatures to its signatured_type entry.
188 This is NULL if the .debug_types section hasn't been read in yet. */
189 htab_t signatured_types
;
191 /* A flag indicating wether this objfile has a section loaded at a
193 int has_section_at_zero
;
196 static struct dwarf2_per_objfile
*dwarf2_per_objfile
;
198 /* names of the debugging sections */
200 /* Note that if the debugging section has been compressed, it might
201 have a name like .zdebug_info. */
203 #define INFO_SECTION "debug_info"
204 #define ABBREV_SECTION "debug_abbrev"
205 #define LINE_SECTION "debug_line"
206 #define PUBNAMES_SECTION "debug_pubnames"
207 #define ARANGES_SECTION "debug_aranges"
208 #define LOC_SECTION "debug_loc"
209 #define MACINFO_SECTION "debug_macinfo"
210 #define STR_SECTION "debug_str"
211 #define RANGES_SECTION "debug_ranges"
212 #define TYPES_SECTION "debug_types"
213 #define FRAME_SECTION "debug_frame"
214 #define EH_FRAME_SECTION "eh_frame"
216 /* local data types */
218 /* We hold several abbreviation tables in memory at the same time. */
219 #ifndef ABBREV_HASH_SIZE
220 #define ABBREV_HASH_SIZE 121
223 /* The data in a compilation unit header, after target2host
224 translation, looks like this. */
225 struct comp_unit_head
229 unsigned char addr_size
;
230 unsigned char signed_addr_p
;
231 unsigned int abbrev_offset
;
233 /* Size of file offsets; either 4 or 8. */
234 unsigned int offset_size
;
236 /* Size of the length field; either 4 or 12. */
237 unsigned int initial_length_size
;
239 /* Offset to the first byte of this compilation unit header in the
240 .debug_info section, for resolving relative reference dies. */
243 /* Offset to first die in this cu from the start of the cu.
244 This will be the first byte following the compilation unit header. */
245 unsigned int first_die_offset
;
248 /* Internal state when decoding a particular compilation unit. */
251 /* The objfile containing this compilation unit. */
252 struct objfile
*objfile
;
254 /* The header of the compilation unit. */
255 struct comp_unit_head header
;
257 /* Base address of this compilation unit. */
258 CORE_ADDR base_address
;
260 /* Non-zero if base_address has been set. */
263 struct function_range
*first_fn
, *last_fn
, *cached_fn
;
265 /* The language we are debugging. */
266 enum language language
;
267 const struct language_defn
*language_defn
;
269 const char *producer
;
271 /* The generic symbol table building routines have separate lists for
272 file scope symbols and all all other scopes (local scopes). So
273 we need to select the right one to pass to add_symbol_to_list().
274 We do it by keeping a pointer to the correct list in list_in_scope.
276 FIXME: The original dwarf code just treated the file scope as the
277 first local scope, and all other local scopes as nested local
278 scopes, and worked fine. Check to see if we really need to
279 distinguish these in buildsym.c. */
280 struct pending
**list_in_scope
;
282 /* DWARF abbreviation table associated with this compilation unit. */
283 struct abbrev_info
**dwarf2_abbrevs
;
285 /* Storage for the abbrev table. */
286 struct obstack abbrev_obstack
;
288 /* Hash table holding all the loaded partial DIEs. */
291 /* Storage for things with the same lifetime as this read-in compilation
292 unit, including partial DIEs. */
293 struct obstack comp_unit_obstack
;
295 /* When multiple dwarf2_cu structures are living in memory, this field
296 chains them all together, so that they can be released efficiently.
297 We will probably also want a generation counter so that most-recently-used
298 compilation units are cached... */
299 struct dwarf2_per_cu_data
*read_in_chain
;
301 /* Backchain to our per_cu entry if the tree has been built. */
302 struct dwarf2_per_cu_data
*per_cu
;
304 /* Pointer to the die -> type map. Although it is stored
305 permanently in per_cu, we copy it here to avoid double
309 /* How many compilation units ago was this CU last referenced? */
312 /* A hash table of die offsets for following references. */
315 /* Full DIEs if read in. */
316 struct die_info
*dies
;
318 /* A set of pointers to dwarf2_per_cu_data objects for compilation
319 units referenced by this one. Only set during full symbol processing;
320 partial symbol tables do not have dependencies. */
323 /* Header data from the line table, during full symbol processing. */
324 struct line_header
*line_header
;
326 /* Mark used when releasing cached dies. */
327 unsigned int mark
: 1;
329 /* This flag will be set if this compilation unit might include
330 inter-compilation-unit references. */
331 unsigned int has_form_ref_addr
: 1;
333 /* This flag will be set if this compilation unit includes any
334 DW_TAG_namespace DIEs. If we know that there are explicit
335 DIEs for namespaces, we don't need to try to infer them
336 from mangled names. */
337 unsigned int has_namespace_info
: 1;
340 /* Persistent data held for a compilation unit, even when not
341 processing it. We put a pointer to this structure in the
342 read_symtab_private field of the psymtab. If we encounter
343 inter-compilation-unit references, we also maintain a sorted
344 list of all compilation units. */
346 struct dwarf2_per_cu_data
348 /* The start offset and length of this compilation unit. 2**29-1
349 bytes should suffice to store the length of any compilation unit
350 - if it doesn't, GDB will fall over anyway.
351 NOTE: Unlike comp_unit_head.length, this length includes
352 initial_length_size. */
354 unsigned int length
: 29;
356 /* Flag indicating this compilation unit will be read in before
357 any of the current compilation units are processed. */
358 unsigned int queued
: 1;
360 /* This flag will be set if we need to load absolutely all DIEs
361 for this compilation unit, instead of just the ones we think
362 are interesting. It gets set if we look for a DIE in the
363 hash table and don't find it. */
364 unsigned int load_all_dies
: 1;
366 /* Non-zero if this CU is from .debug_types.
367 Otherwise it's from .debug_info. */
368 unsigned int from_debug_types
: 1;
370 /* Set iff currently read in. */
371 struct dwarf2_cu
*cu
;
373 /* If full symbols for this CU have been read in, then this field
374 holds a map of DIE offsets to types. It isn't always possible
375 to reconstruct this information later, so we have to preserve
379 /* The partial symbol table associated with this compilation unit,
380 or NULL for partial units (which do not have an associated
382 struct partial_symtab
*psymtab
;
385 /* Entry in the signatured_types hash table. */
387 struct signatured_type
391 /* Offset in .debug_types of the TU (type_unit) for this type. */
394 /* Offset in .debug_types of the type defined by this TU. */
395 unsigned int type_offset
;
397 /* The CU(/TU) of this type. */
398 struct dwarf2_per_cu_data per_cu
;
401 /* Struct used to pass misc. parameters to read_die_and_children, et. al.
402 which are used for both .debug_info and .debug_types dies.
403 All parameters here are unchanging for the life of the call.
404 This struct exists to abstract away the constant parameters of
407 struct die_reader_specs
409 /* The bfd of this objfile. */
412 /* The CU of the DIE we are parsing. */
413 struct dwarf2_cu
*cu
;
415 /* Pointer to start of section buffer.
416 This is either the start of .debug_info or .debug_types. */
417 const gdb_byte
*buffer
;
420 /* The line number information for a compilation unit (found in the
421 .debug_line section) begins with a "statement program header",
422 which contains the following information. */
425 unsigned int total_length
;
426 unsigned short version
;
427 unsigned int header_length
;
428 unsigned char minimum_instruction_length
;
429 unsigned char default_is_stmt
;
431 unsigned char line_range
;
432 unsigned char opcode_base
;
434 /* standard_opcode_lengths[i] is the number of operands for the
435 standard opcode whose value is i. This means that
436 standard_opcode_lengths[0] is unused, and the last meaningful
437 element is standard_opcode_lengths[opcode_base - 1]. */
438 unsigned char *standard_opcode_lengths
;
440 /* The include_directories table. NOTE! These strings are not
441 allocated with xmalloc; instead, they are pointers into
442 debug_line_buffer. If you try to free them, `free' will get
444 unsigned int num_include_dirs
, include_dirs_size
;
447 /* The file_names table. NOTE! These strings are not allocated
448 with xmalloc; instead, they are pointers into debug_line_buffer.
449 Don't try to free them directly. */
450 unsigned int num_file_names
, file_names_size
;
454 unsigned int dir_index
;
455 unsigned int mod_time
;
457 int included_p
; /* Non-zero if referenced by the Line Number Program. */
458 struct symtab
*symtab
; /* The associated symbol table, if any. */
461 /* The start and end of the statement program following this
462 header. These point into dwarf2_per_objfile->line_buffer. */
463 gdb_byte
*statement_program_start
, *statement_program_end
;
466 /* When we construct a partial symbol table entry we only
467 need this much information. */
468 struct partial_die_info
470 /* Offset of this DIE. */
473 /* DWARF-2 tag for this DIE. */
474 ENUM_BITFIELD(dwarf_tag
) tag
: 16;
476 /* Assorted flags describing the data found in this DIE. */
477 unsigned int has_children
: 1;
478 unsigned int is_external
: 1;
479 unsigned int is_declaration
: 1;
480 unsigned int has_type
: 1;
481 unsigned int has_specification
: 1;
482 unsigned int has_pc_info
: 1;
484 /* Flag set if the SCOPE field of this structure has been
486 unsigned int scope_set
: 1;
488 /* Flag set if the DIE has a byte_size attribute. */
489 unsigned int has_byte_size
: 1;
491 /* The name of this DIE. Normally the value of DW_AT_name, but
492 sometimes a default name for unnamed DIEs. */
495 /* The scope to prepend to our children. This is generally
496 allocated on the comp_unit_obstack, so will disappear
497 when this compilation unit leaves the cache. */
500 /* The location description associated with this DIE, if any. */
501 struct dwarf_block
*locdesc
;
503 /* If HAS_PC_INFO, the PC range associated with this DIE. */
507 /* Pointer into the info_buffer (or types_buffer) pointing at the target of
508 DW_AT_sibling, if any. */
511 /* If HAS_SPECIFICATION, the offset of the DIE referred to by
512 DW_AT_specification (or DW_AT_abstract_origin or
514 unsigned int spec_offset
;
516 /* Pointers to this DIE's parent, first child, and next sibling,
518 struct partial_die_info
*die_parent
, *die_child
, *die_sibling
;
521 /* This data structure holds the information of an abbrev. */
524 unsigned int number
; /* number identifying abbrev */
525 enum dwarf_tag tag
; /* dwarf tag */
526 unsigned short has_children
; /* boolean */
527 unsigned short num_attrs
; /* number of attributes */
528 struct attr_abbrev
*attrs
; /* an array of attribute descriptions */
529 struct abbrev_info
*next
; /* next in chain */
534 ENUM_BITFIELD(dwarf_attribute
) name
: 16;
535 ENUM_BITFIELD(dwarf_form
) form
: 16;
538 /* Attributes have a name and a value */
541 ENUM_BITFIELD(dwarf_attribute
) name
: 16;
542 ENUM_BITFIELD(dwarf_form
) form
: 15;
544 /* Has DW_STRING already been updated by dwarf2_canonicalize_name? This
545 field should be in u.str (existing only for DW_STRING) but it is kept
546 here for better struct attribute alignment. */
547 unsigned int string_is_canonical
: 1;
552 struct dwarf_block
*blk
;
556 struct signatured_type
*signatured_type
;
561 /* This data structure holds a complete die structure. */
564 /* DWARF-2 tag for this DIE. */
565 ENUM_BITFIELD(dwarf_tag
) tag
: 16;
567 /* Number of attributes */
568 unsigned short num_attrs
;
573 /* Offset in .debug_info or .debug_types section. */
576 /* The dies in a compilation unit form an n-ary tree. PARENT
577 points to this die's parent; CHILD points to the first child of
578 this node; and all the children of a given node are chained
579 together via their SIBLING fields, terminated by a die whose
581 struct die_info
*child
; /* Its first child, if any. */
582 struct die_info
*sibling
; /* Its next sibling, if any. */
583 struct die_info
*parent
; /* Its parent, if any. */
585 /* An array of attributes, with NUM_ATTRS elements. There may be
586 zero, but it's not common and zero-sized arrays are not
587 sufficiently portable C. */
588 struct attribute attrs
[1];
591 struct function_range
594 CORE_ADDR lowpc
, highpc
;
596 struct function_range
*next
;
599 /* Get at parts of an attribute structure */
601 #define DW_STRING(attr) ((attr)->u.str)
602 #define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
603 #define DW_UNSND(attr) ((attr)->u.unsnd)
604 #define DW_BLOCK(attr) ((attr)->u.blk)
605 #define DW_SND(attr) ((attr)->u.snd)
606 #define DW_ADDR(attr) ((attr)->u.addr)
607 #define DW_SIGNATURED_TYPE(attr) ((attr)->u.signatured_type)
609 /* Blocks are a bunch of untyped bytes. */
616 #ifndef ATTR_ALLOC_CHUNK
617 #define ATTR_ALLOC_CHUNK 4
620 /* Allocate fields for structs, unions and enums in this size. */
621 #ifndef DW_FIELD_ALLOC_CHUNK
622 #define DW_FIELD_ALLOC_CHUNK 4
625 /* A zeroed version of a partial die for initialization purposes. */
626 static struct partial_die_info zeroed_partial_die
;
628 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
629 but this would require a corresponding change in unpack_field_as_long
631 static int bits_per_byte
= 8;
633 /* The routines that read and process dies for a C struct or C++ class
634 pass lists of data member fields and lists of member function fields
635 in an instance of a field_info structure, as defined below. */
638 /* List of data member and baseclasses fields. */
641 struct nextfield
*next
;
646 *fields
, *baseclasses
;
648 /* Number of fields (including baseclasses). */
651 /* Number of baseclasses. */
654 /* Set if the accesibility of one of the fields is not public. */
655 int non_public_fields
;
657 /* Member function fields array, entries are allocated in the order they
658 are encountered in the object file. */
661 struct nextfnfield
*next
;
662 struct fn_field fnfield
;
666 /* Member function fieldlist array, contains name of possibly overloaded
667 member function, number of overloaded member functions and a pointer
668 to the head of the member function field chain. */
673 struct nextfnfield
*head
;
677 /* Number of entries in the fnfieldlists array. */
681 /* One item on the queue of compilation units to read in full symbols
683 struct dwarf2_queue_item
685 struct dwarf2_per_cu_data
*per_cu
;
686 struct dwarf2_queue_item
*next
;
689 /* The current queue. */
690 static struct dwarf2_queue_item
*dwarf2_queue
, *dwarf2_queue_tail
;
692 /* Loaded secondary compilation units are kept in memory until they
693 have not been referenced for the processing of this many
694 compilation units. Set this to zero to disable caching. Cache
695 sizes of up to at least twenty will improve startup time for
696 typical inter-CU-reference binaries, at an obvious memory cost. */
697 static int dwarf2_max_cache_age
= 5;
699 show_dwarf2_max_cache_age (struct ui_file
*file
, int from_tty
,
700 struct cmd_list_element
*c
, const char *value
)
702 fprintf_filtered (file
, _("\
703 The upper bound on the age of cached dwarf2 compilation units is %s.\n"),
708 /* Various complaints about symbol reading that don't abort the process */
711 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
713 complaint (&symfile_complaints
,
714 _("statement list doesn't fit in .debug_line section"));
718 dwarf2_debug_line_missing_file_complaint (void)
720 complaint (&symfile_complaints
,
721 _(".debug_line section has line data without a file"));
725 dwarf2_debug_line_missing_end_sequence_complaint (void)
727 complaint (&symfile_complaints
,
728 _(".debug_line section has line program sequence without an end"));
732 dwarf2_complex_location_expr_complaint (void)
734 complaint (&symfile_complaints
, _("location expression too complex"));
738 dwarf2_const_value_length_mismatch_complaint (const char *arg1
, int arg2
,
741 complaint (&symfile_complaints
,
742 _("const value length mismatch for '%s', got %d, expected %d"), arg1
,
747 dwarf2_macros_too_long_complaint (void)
749 complaint (&symfile_complaints
,
750 _("macro info runs off end of `.debug_macinfo' section"));
754 dwarf2_macro_malformed_definition_complaint (const char *arg1
)
756 complaint (&symfile_complaints
,
757 _("macro debug info contains a malformed macro definition:\n`%s'"),
762 dwarf2_invalid_attrib_class_complaint (const char *arg1
, const char *arg2
)
764 complaint (&symfile_complaints
,
765 _("invalid attribute class or form for '%s' in '%s'"), arg1
, arg2
);
768 /* local function prototypes */
770 static void dwarf2_locate_sections (bfd
*, asection
*, void *);
773 static void dwarf2_build_psymtabs_easy (struct objfile
*);
776 static void dwarf2_create_include_psymtab (char *, struct partial_symtab
*,
779 static void dwarf2_build_include_psymtabs (struct dwarf2_cu
*,
781 struct partial_symtab
*);
783 static void dwarf2_build_psymtabs_hard (struct objfile
*);
785 static void scan_partial_symbols (struct partial_die_info
*,
786 CORE_ADDR
*, CORE_ADDR
*,
787 int, struct dwarf2_cu
*);
789 static void add_partial_symbol (struct partial_die_info
*,
792 static void add_partial_namespace (struct partial_die_info
*pdi
,
793 CORE_ADDR
*lowpc
, CORE_ADDR
*highpc
,
794 int need_pc
, struct dwarf2_cu
*cu
);
796 static void add_partial_module (struct partial_die_info
*pdi
, CORE_ADDR
*lowpc
,
797 CORE_ADDR
*highpc
, int need_pc
,
798 struct dwarf2_cu
*cu
);
800 static void add_partial_enumeration (struct partial_die_info
*enum_pdi
,
801 struct dwarf2_cu
*cu
);
803 static void add_partial_subprogram (struct partial_die_info
*pdi
,
804 CORE_ADDR
*lowpc
, CORE_ADDR
*highpc
,
805 int need_pc
, struct dwarf2_cu
*cu
);
807 static gdb_byte
*locate_pdi_sibling (struct partial_die_info
*orig_pdi
,
808 gdb_byte
*buffer
, gdb_byte
*info_ptr
,
809 bfd
*abfd
, struct dwarf2_cu
*cu
);
811 static void dwarf2_psymtab_to_symtab (struct partial_symtab
*);
813 static void psymtab_to_symtab_1 (struct partial_symtab
*);
815 static void dwarf2_read_abbrevs (bfd
*abfd
, struct dwarf2_cu
*cu
);
817 static void dwarf2_free_abbrev_table (void *);
819 static struct abbrev_info
*peek_die_abbrev (gdb_byte
*, unsigned int *,
822 static struct abbrev_info
*dwarf2_lookup_abbrev (unsigned int,
825 static struct partial_die_info
*load_partial_dies (bfd
*,
826 gdb_byte
*, gdb_byte
*,
827 int, struct dwarf2_cu
*);
829 static gdb_byte
*read_partial_die (struct partial_die_info
*,
830 struct abbrev_info
*abbrev
,
832 gdb_byte
*, gdb_byte
*,
835 static struct partial_die_info
*find_partial_die (unsigned int,
838 static void fixup_partial_die (struct partial_die_info
*,
841 static gdb_byte
*read_attribute (struct attribute
*, struct attr_abbrev
*,
842 bfd
*, gdb_byte
*, struct dwarf2_cu
*);
844 static gdb_byte
*read_attribute_value (struct attribute
*, unsigned,
845 bfd
*, gdb_byte
*, struct dwarf2_cu
*);
847 static unsigned int read_1_byte (bfd
*, gdb_byte
*);
849 static int read_1_signed_byte (bfd
*, gdb_byte
*);
851 static unsigned int read_2_bytes (bfd
*, gdb_byte
*);
853 static unsigned int read_4_bytes (bfd
*, gdb_byte
*);
855 static ULONGEST
read_8_bytes (bfd
*, gdb_byte
*);
857 static CORE_ADDR
read_address (bfd
*, gdb_byte
*ptr
, struct dwarf2_cu
*,
860 static LONGEST
read_initial_length (bfd
*, gdb_byte
*, unsigned int *);
862 static LONGEST read_checked_initial_length_and_offset
863 (bfd
*, gdb_byte
*, const struct comp_unit_head
*,
864 unsigned int *, unsigned int *);
866 static LONGEST
read_offset (bfd
*, gdb_byte
*, const struct comp_unit_head
*,
869 static LONGEST
read_offset_1 (bfd
*, gdb_byte
*, unsigned int);
871 static gdb_byte
*read_n_bytes (bfd
*, gdb_byte
*, unsigned int);
873 static char *read_string (bfd
*, gdb_byte
*, unsigned int *);
875 static char *read_indirect_string (bfd
*, gdb_byte
*,
876 const struct comp_unit_head
*,
879 static unsigned long read_unsigned_leb128 (bfd
*, gdb_byte
*, unsigned int *);
881 static long read_signed_leb128 (bfd
*, gdb_byte
*, unsigned int *);
883 static gdb_byte
*skip_leb128 (bfd
*, gdb_byte
*);
885 static void set_cu_language (unsigned int, struct dwarf2_cu
*);
887 static struct attribute
*dwarf2_attr (struct die_info
*, unsigned int,
890 static struct attribute
*dwarf2_attr_no_follow (struct die_info
*,
894 static int dwarf2_flag_true_p (struct die_info
*die
, unsigned name
,
895 struct dwarf2_cu
*cu
);
897 static int die_is_declaration (struct die_info
*, struct dwarf2_cu
*cu
);
899 static struct die_info
*die_specification (struct die_info
*die
,
900 struct dwarf2_cu
**);
902 static void free_line_header (struct line_header
*lh
);
904 static void add_file_name (struct line_header
*, char *, unsigned int,
905 unsigned int, unsigned int);
907 static struct line_header
*(dwarf_decode_line_header
908 (unsigned int offset
,
909 bfd
*abfd
, struct dwarf2_cu
*cu
));
911 static void dwarf_decode_lines (struct line_header
*, char *, bfd
*,
912 struct dwarf2_cu
*, struct partial_symtab
*);
914 static void dwarf2_start_subfile (char *, char *, char *);
916 static struct symbol
*new_symbol (struct die_info
*, struct type
*,
919 static void dwarf2_const_value (struct attribute
*, struct symbol
*,
922 static void dwarf2_const_value_data (struct attribute
*attr
,
926 static struct type
*die_type (struct die_info
*, struct dwarf2_cu
*);
928 static int need_gnat_info (struct dwarf2_cu
*);
930 static struct type
*die_descriptive_type (struct die_info
*, struct dwarf2_cu
*);
932 static void set_descriptive_type (struct type
*, struct die_info
*,
935 static struct type
*die_containing_type (struct die_info
*,
938 static struct type
*tag_type_to_type (struct die_info
*, struct dwarf2_cu
*);
940 static struct type
*read_type_die (struct die_info
*, struct dwarf2_cu
*);
942 static char *determine_prefix (struct die_info
*die
, struct dwarf2_cu
*);
944 static char *typename_concat (struct obstack
*,
949 static void read_file_scope (struct die_info
*, struct dwarf2_cu
*);
951 static void read_type_unit_scope (struct die_info
*, struct dwarf2_cu
*);
953 static void read_func_scope (struct die_info
*, struct dwarf2_cu
*);
955 static void read_lexical_block_scope (struct die_info
*, struct dwarf2_cu
*);
957 static int dwarf2_ranges_read (unsigned, CORE_ADDR
*, CORE_ADDR
*,
958 struct dwarf2_cu
*, struct partial_symtab
*);
960 static int dwarf2_get_pc_bounds (struct die_info
*,
961 CORE_ADDR
*, CORE_ADDR
*, struct dwarf2_cu
*,
962 struct partial_symtab
*);
964 static void get_scope_pc_bounds (struct die_info
*,
965 CORE_ADDR
*, CORE_ADDR
*,
968 static void dwarf2_record_block_ranges (struct die_info
*, struct block
*,
969 CORE_ADDR
, struct dwarf2_cu
*);
971 static void dwarf2_add_field (struct field_info
*, struct die_info
*,
974 static void dwarf2_attach_fields_to_type (struct field_info
*,
975 struct type
*, struct dwarf2_cu
*);
977 static void dwarf2_add_member_fn (struct field_info
*,
978 struct die_info
*, struct type
*,
981 static void dwarf2_attach_fn_fields_to_type (struct field_info
*,
982 struct type
*, struct dwarf2_cu
*);
984 static void process_structure_scope (struct die_info
*, struct dwarf2_cu
*);
986 static void read_common_block (struct die_info
*, struct dwarf2_cu
*);
988 static void read_namespace (struct die_info
*die
, struct dwarf2_cu
*);
990 static void read_module (struct die_info
*die
, struct dwarf2_cu
*cu
);
992 static void read_import_statement (struct die_info
*die
, struct dwarf2_cu
*);
994 static const char *namespace_name (struct die_info
*die
,
995 int *is_anonymous
, struct dwarf2_cu
*);
997 static void process_enumeration_scope (struct die_info
*, struct dwarf2_cu
*);
999 static CORE_ADDR
decode_locdesc (struct dwarf_block
*, struct dwarf2_cu
*);
1001 static enum dwarf_array_dim_ordering
read_array_order (struct die_info
*,
1002 struct dwarf2_cu
*);
1004 static struct die_info
*read_comp_unit (gdb_byte
*, struct dwarf2_cu
*);
1006 static struct die_info
*read_die_and_children_1 (const struct die_reader_specs
*reader
,
1008 gdb_byte
**new_info_ptr
,
1009 struct die_info
*parent
);
1011 static struct die_info
*read_die_and_children (const struct die_reader_specs
*reader
,
1013 gdb_byte
**new_info_ptr
,
1014 struct die_info
*parent
);
1016 static struct die_info
*read_die_and_siblings (const struct die_reader_specs
*reader
,
1018 gdb_byte
**new_info_ptr
,
1019 struct die_info
*parent
);
1021 static gdb_byte
*read_full_die (const struct die_reader_specs
*reader
,
1022 struct die_info
**, gdb_byte
*,
1025 static void process_die (struct die_info
*, struct dwarf2_cu
*);
1027 static char *dwarf2_canonicalize_name (char *, struct dwarf2_cu
*,
1030 static char *dwarf2_name (struct die_info
*die
, struct dwarf2_cu
*);
1032 static struct die_info
*dwarf2_extension (struct die_info
*die
,
1033 struct dwarf2_cu
**);
1035 static char *dwarf_tag_name (unsigned int);
1037 static char *dwarf_attr_name (unsigned int);
1039 static char *dwarf_form_name (unsigned int);
1041 static char *dwarf_stack_op_name (unsigned int);
1043 static char *dwarf_bool_name (unsigned int);
1045 static char *dwarf_type_encoding_name (unsigned int);
1048 static char *dwarf_cfi_name (unsigned int);
1051 static struct die_info
*sibling_die (struct die_info
*);
1053 static void dump_die_shallow (struct ui_file
*, int indent
, struct die_info
*);
1055 static void dump_die_for_error (struct die_info
*);
1057 static void dump_die_1 (struct ui_file
*, int level
, int max_level
,
1060 /*static*/ void dump_die (struct die_info
*, int max_level
);
1062 static void store_in_ref_table (struct die_info
*,
1063 struct dwarf2_cu
*);
1065 static int is_ref_attr (struct attribute
*);
1067 static unsigned int dwarf2_get_ref_die_offset (struct attribute
*);
1069 static LONGEST
dwarf2_get_attr_constant_value (struct attribute
*, int);
1071 static struct die_info
*follow_die_ref_or_sig (struct die_info
*,
1073 struct dwarf2_cu
**);
1075 static struct die_info
*follow_die_ref (struct die_info
*,
1077 struct dwarf2_cu
**);
1079 static struct die_info
*follow_die_sig (struct die_info
*,
1081 struct dwarf2_cu
**);
1083 static void read_signatured_type_at_offset (struct objfile
*objfile
,
1084 unsigned int offset
);
1086 static void read_signatured_type (struct objfile
*,
1087 struct signatured_type
*type_sig
);
1089 /* memory allocation interface */
1091 static struct dwarf_block
*dwarf_alloc_block (struct dwarf2_cu
*);
1093 static struct abbrev_info
*dwarf_alloc_abbrev (struct dwarf2_cu
*);
1095 static struct die_info
*dwarf_alloc_die (struct dwarf2_cu
*, int);
1097 static void initialize_cu_func_list (struct dwarf2_cu
*);
1099 static void add_to_cu_func_list (const char *, CORE_ADDR
, CORE_ADDR
,
1100 struct dwarf2_cu
*);
1102 static void dwarf_decode_macros (struct line_header
*, unsigned int,
1103 char *, bfd
*, struct dwarf2_cu
*);
1105 static int attr_form_is_block (struct attribute
*);
1107 static int attr_form_is_section_offset (struct attribute
*);
1109 static int attr_form_is_constant (struct attribute
*);
1111 static void dwarf2_symbol_mark_computed (struct attribute
*attr
,
1113 struct dwarf2_cu
*cu
);
1115 static gdb_byte
*skip_one_die (gdb_byte
*buffer
, gdb_byte
*info_ptr
,
1116 struct abbrev_info
*abbrev
,
1117 struct dwarf2_cu
*cu
);
1119 static void free_stack_comp_unit (void *);
1121 static hashval_t
partial_die_hash (const void *item
);
1123 static int partial_die_eq (const void *item_lhs
, const void *item_rhs
);
1125 static struct dwarf2_per_cu_data
*dwarf2_find_containing_comp_unit
1126 (unsigned int offset
, struct objfile
*objfile
);
1128 static struct dwarf2_per_cu_data
*dwarf2_find_comp_unit
1129 (unsigned int offset
, struct objfile
*objfile
);
1131 static struct dwarf2_cu
*alloc_one_comp_unit (struct objfile
*objfile
);
1133 static void free_one_comp_unit (void *);
1135 static void free_cached_comp_units (void *);
1137 static void age_cached_comp_units (void);
1139 static void free_one_cached_comp_unit (void *);
1141 static struct type
*set_die_type (struct die_info
*, struct type
*,
1142 struct dwarf2_cu
*);
1144 static void create_all_comp_units (struct objfile
*);
1146 static void load_full_comp_unit (struct dwarf2_per_cu_data
*,
1149 static void process_full_comp_unit (struct dwarf2_per_cu_data
*);
1151 static void dwarf2_add_dependence (struct dwarf2_cu
*,
1152 struct dwarf2_per_cu_data
*);
1154 static void dwarf2_mark (struct dwarf2_cu
*);
1156 static void dwarf2_clear_marks (struct dwarf2_per_cu_data
*);
1158 static struct type
*get_die_type (struct die_info
*die
, struct dwarf2_cu
*cu
);
1160 /* Try to locate the sections we need for DWARF 2 debugging
1161 information and return true if we have enough to do something. */
1164 dwarf2_has_info (struct objfile
*objfile
)
1166 struct dwarf2_per_objfile
*data
;
1168 /* Initialize per-objfile state. */
1169 data
= obstack_alloc (&objfile
->objfile_obstack
, sizeof (*data
));
1170 memset (data
, 0, sizeof (*data
));
1171 set_objfile_data (objfile
, dwarf2_objfile_data_key
, data
);
1172 dwarf2_per_objfile
= data
;
1174 bfd_map_over_sections (objfile
->obfd
, dwarf2_locate_sections
, NULL
);
1175 return (data
->info
.asection
!= NULL
&& data
->abbrev
.asection
!= NULL
);
1178 /* When loading sections, we can either look for ".<name>", or for
1179 * ".z<name>", which indicates a compressed section. */
1182 section_is_p (const char *section_name
, const char *name
)
1184 return (section_name
[0] == '.'
1185 && (strcmp (section_name
+ 1, name
) == 0
1186 || (section_name
[1] == 'z'
1187 && strcmp (section_name
+ 2, name
) == 0)));
1190 /* This function is mapped across the sections and remembers the
1191 offset and size of each of the debugging sections we are interested
1195 dwarf2_locate_sections (bfd
*abfd
, asection
*sectp
, void *ignore_ptr
)
1197 if (section_is_p (sectp
->name
, INFO_SECTION
))
1199 dwarf2_per_objfile
->info
.asection
= sectp
;
1200 dwarf2_per_objfile
->info
.size
= bfd_get_section_size (sectp
);
1202 else if (section_is_p (sectp
->name
, ABBREV_SECTION
))
1204 dwarf2_per_objfile
->abbrev
.asection
= sectp
;
1205 dwarf2_per_objfile
->abbrev
.size
= bfd_get_section_size (sectp
);
1207 else if (section_is_p (sectp
->name
, LINE_SECTION
))
1209 dwarf2_per_objfile
->line
.asection
= sectp
;
1210 dwarf2_per_objfile
->line
.size
= bfd_get_section_size (sectp
);
1212 else if (section_is_p (sectp
->name
, PUBNAMES_SECTION
))
1214 dwarf2_per_objfile
->pubnames
.asection
= sectp
;
1215 dwarf2_per_objfile
->pubnames
.size
= bfd_get_section_size (sectp
);
1217 else if (section_is_p (sectp
->name
, ARANGES_SECTION
))
1219 dwarf2_per_objfile
->aranges
.asection
= sectp
;
1220 dwarf2_per_objfile
->aranges
.size
= bfd_get_section_size (sectp
);
1222 else if (section_is_p (sectp
->name
, LOC_SECTION
))
1224 dwarf2_per_objfile
->loc
.asection
= sectp
;
1225 dwarf2_per_objfile
->loc
.size
= bfd_get_section_size (sectp
);
1227 else if (section_is_p (sectp
->name
, MACINFO_SECTION
))
1229 dwarf2_per_objfile
->macinfo
.asection
= sectp
;
1230 dwarf2_per_objfile
->macinfo
.size
= bfd_get_section_size (sectp
);
1232 else if (section_is_p (sectp
->name
, STR_SECTION
))
1234 dwarf2_per_objfile
->str
.asection
= sectp
;
1235 dwarf2_per_objfile
->str
.size
= bfd_get_section_size (sectp
);
1237 else if (section_is_p (sectp
->name
, FRAME_SECTION
))
1239 dwarf2_per_objfile
->frame
.asection
= sectp
;
1240 dwarf2_per_objfile
->frame
.size
= bfd_get_section_size (sectp
);
1242 else if (section_is_p (sectp
->name
, EH_FRAME_SECTION
))
1244 flagword aflag
= bfd_get_section_flags (ignore_abfd
, sectp
);
1245 if (aflag
& SEC_HAS_CONTENTS
)
1247 dwarf2_per_objfile
->eh_frame
.asection
= sectp
;
1248 dwarf2_per_objfile
->eh_frame
.size
= bfd_get_section_size (sectp
);
1251 else if (section_is_p (sectp
->name
, RANGES_SECTION
))
1253 dwarf2_per_objfile
->ranges
.asection
= sectp
;
1254 dwarf2_per_objfile
->ranges
.size
= bfd_get_section_size (sectp
);
1256 else if (section_is_p (sectp
->name
, TYPES_SECTION
))
1258 dwarf2_per_objfile
->types
.asection
= sectp
;
1259 dwarf2_per_objfile
->types
.size
= bfd_get_section_size (sectp
);
1262 if ((bfd_get_section_flags (abfd
, sectp
) & SEC_LOAD
)
1263 && bfd_section_vma (abfd
, sectp
) == 0)
1264 dwarf2_per_objfile
->has_section_at_zero
= 1;
1267 /* Decompress a section that was compressed using zlib. Store the
1268 decompressed buffer, and its size, in OUTBUF and OUTSIZE. */
1271 zlib_decompress_section (struct objfile
*objfile
, asection
*sectp
,
1272 gdb_byte
**outbuf
, bfd_size_type
*outsize
)
1274 bfd
*abfd
= objfile
->obfd
;
1276 error (_("Support for zlib-compressed DWARF data (from '%s') "
1277 "is disabled in this copy of GDB"),
1278 bfd_get_filename (abfd
));
1280 bfd_size_type compressed_size
= bfd_get_section_size (sectp
);
1281 gdb_byte
*compressed_buffer
= xmalloc (compressed_size
);
1282 struct cleanup
*cleanup
= make_cleanup (xfree
, compressed_buffer
);
1283 bfd_size_type uncompressed_size
;
1284 gdb_byte
*uncompressed_buffer
;
1287 int header_size
= 12;
1289 if (bfd_seek (abfd
, sectp
->filepos
, SEEK_SET
) != 0
1290 || bfd_bread (compressed_buffer
, compressed_size
, abfd
) != compressed_size
)
1291 error (_("Dwarf Error: Can't read DWARF data from '%s'"),
1292 bfd_get_filename (abfd
));
1294 /* Read the zlib header. In this case, it should be "ZLIB" followed
1295 by the uncompressed section size, 8 bytes in big-endian order. */
1296 if (compressed_size
< header_size
1297 || strncmp (compressed_buffer
, "ZLIB", 4) != 0)
1298 error (_("Dwarf Error: Corrupt DWARF ZLIB header from '%s'"),
1299 bfd_get_filename (abfd
));
1300 uncompressed_size
= compressed_buffer
[4]; uncompressed_size
<<= 8;
1301 uncompressed_size
+= compressed_buffer
[5]; uncompressed_size
<<= 8;
1302 uncompressed_size
+= compressed_buffer
[6]; uncompressed_size
<<= 8;
1303 uncompressed_size
+= compressed_buffer
[7]; uncompressed_size
<<= 8;
1304 uncompressed_size
+= compressed_buffer
[8]; uncompressed_size
<<= 8;
1305 uncompressed_size
+= compressed_buffer
[9]; uncompressed_size
<<= 8;
1306 uncompressed_size
+= compressed_buffer
[10]; uncompressed_size
<<= 8;
1307 uncompressed_size
+= compressed_buffer
[11];
1309 /* It is possible the section consists of several compressed
1310 buffers concatenated together, so we uncompress in a loop. */
1314 strm
.avail_in
= compressed_size
- header_size
;
1315 strm
.next_in
= (Bytef
*) compressed_buffer
+ header_size
;
1316 strm
.avail_out
= uncompressed_size
;
1317 uncompressed_buffer
= obstack_alloc (&objfile
->objfile_obstack
,
1319 rc
= inflateInit (&strm
);
1320 while (strm
.avail_in
> 0)
1323 error (_("Dwarf Error: setting up DWARF uncompression in '%s': %d"),
1324 bfd_get_filename (abfd
), rc
);
1325 strm
.next_out
= ((Bytef
*) uncompressed_buffer
1326 + (uncompressed_size
- strm
.avail_out
));
1327 rc
= inflate (&strm
, Z_FINISH
);
1328 if (rc
!= Z_STREAM_END
)
1329 error (_("Dwarf Error: zlib error uncompressing from '%s': %d"),
1330 bfd_get_filename (abfd
), rc
);
1331 rc
= inflateReset (&strm
);
1333 rc
= inflateEnd (&strm
);
1335 || strm
.avail_out
!= 0)
1336 error (_("Dwarf Error: concluding DWARF uncompression in '%s': %d"),
1337 bfd_get_filename (abfd
), rc
);
1339 do_cleanups (cleanup
);
1340 *outbuf
= uncompressed_buffer
;
1341 *outsize
= uncompressed_size
;
1345 /* Read the contents of the section SECTP from object file specified by
1346 OBJFILE, store info about the section into INFO.
1347 If the section is compressed, uncompress it before returning. */
1350 dwarf2_read_section (struct objfile
*objfile
, struct dwarf2_section_info
*info
)
1352 bfd
*abfd
= objfile
->obfd
;
1353 asection
*sectp
= info
->asection
;
1354 gdb_byte
*buf
, *retbuf
;
1355 unsigned char header
[4];
1357 info
->buffer
= NULL
;
1358 info
->was_mmapped
= 0;
1360 if (info
->asection
== NULL
|| info
->size
== 0)
1363 /* Check if the file has a 4-byte header indicating compression. */
1364 if (info
->size
> sizeof (header
)
1365 && bfd_seek (abfd
, sectp
->filepos
, SEEK_SET
) == 0
1366 && bfd_bread (header
, sizeof (header
), abfd
) == sizeof (header
))
1368 /* Upon decompression, update the buffer and its size. */
1369 if (strncmp (header
, "ZLIB", sizeof (header
)) == 0)
1371 zlib_decompress_section (objfile
, sectp
, &info
->buffer
,
1379 pagesize
= getpagesize ();
1381 /* Only try to mmap sections which are large enough: we don't want to
1382 waste space due to fragmentation. Also, only try mmap for sections
1383 without relocations. */
1385 if (info
->size
> 4 * pagesize
&& (sectp
->flags
& SEC_RELOC
) == 0)
1387 off_t pg_offset
= sectp
->filepos
& ~(pagesize
- 1);
1388 size_t map_length
= info
->size
+ sectp
->filepos
- pg_offset
;
1389 caddr_t retbuf
= bfd_mmap (abfd
, 0, map_length
, PROT_READ
,
1390 MAP_PRIVATE
, pg_offset
);
1392 if (retbuf
!= MAP_FAILED
)
1394 info
->was_mmapped
= 1;
1395 info
->buffer
= retbuf
+ (sectp
->filepos
& (pagesize
- 1)) ;
1401 /* If we get here, we are a normal, not-compressed section. */
1403 = obstack_alloc (&objfile
->objfile_obstack
, info
->size
);
1405 /* When debugging .o files, we may need to apply relocations; see
1406 http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
1407 We never compress sections in .o files, so we only need to
1408 try this when the section is not compressed. */
1409 retbuf
= symfile_relocate_debug_section (objfile
, sectp
, buf
);
1412 info
->buffer
= retbuf
;
1416 if (bfd_seek (abfd
, sectp
->filepos
, SEEK_SET
) != 0
1417 || bfd_bread (buf
, info
->size
, abfd
) != info
->size
)
1418 error (_("Dwarf Error: Can't read DWARF data from '%s'"),
1419 bfd_get_filename (abfd
));
1422 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
1426 dwarf2_get_section_info (struct objfile
*objfile
, const char *section_name
,
1427 asection
**sectp
, gdb_byte
**bufp
,
1428 bfd_size_type
*sizep
)
1430 struct dwarf2_per_objfile
*data
1431 = objfile_data (objfile
, dwarf2_objfile_data_key
);
1432 struct dwarf2_section_info
*info
;
1433 if (section_is_p (section_name
, EH_FRAME_SECTION
))
1434 info
= &data
->eh_frame
;
1435 else if (section_is_p (section_name
, FRAME_SECTION
))
1436 info
= &data
->frame
;
1440 if (info
->asection
!= NULL
&& info
->size
!= 0 && info
->buffer
== NULL
)
1441 /* We haven't read this section in yet. Do it now. */
1442 dwarf2_read_section (objfile
, info
);
1444 *sectp
= info
->asection
;
1445 *bufp
= info
->buffer
;
1446 *sizep
= info
->size
;
1449 /* Build a partial symbol table. */
1452 dwarf2_build_psymtabs (struct objfile
*objfile
)
1454 dwarf2_read_section (objfile
, &dwarf2_per_objfile
->info
);
1455 dwarf2_read_section (objfile
, &dwarf2_per_objfile
->abbrev
);
1456 dwarf2_read_section (objfile
, &dwarf2_per_objfile
->line
);
1457 dwarf2_read_section (objfile
, &dwarf2_per_objfile
->str
);
1458 dwarf2_read_section (objfile
, &dwarf2_per_objfile
->macinfo
);
1459 dwarf2_read_section (objfile
, &dwarf2_per_objfile
->ranges
);
1460 dwarf2_read_section (objfile
, &dwarf2_per_objfile
->types
);
1461 dwarf2_read_section (objfile
, &dwarf2_per_objfile
->loc
);
1462 dwarf2_read_section (objfile
, &dwarf2_per_objfile
->eh_frame
);
1463 dwarf2_read_section (objfile
, &dwarf2_per_objfile
->frame
);
1465 if (objfile
->global_psymbols
.size
== 0 && objfile
->static_psymbols
.size
== 0)
1467 init_psymbol_list (objfile
, 1024);
1471 if (dwarf_aranges_offset
&& dwarf_pubnames_offset
)
1473 /* Things are significantly easier if we have .debug_aranges and
1474 .debug_pubnames sections */
1476 dwarf2_build_psymtabs_easy (objfile
);
1480 /* only test this case for now */
1482 /* In this case we have to work a bit harder */
1483 dwarf2_build_psymtabs_hard (objfile
);
1488 /* Build the partial symbol table from the information in the
1489 .debug_pubnames and .debug_aranges sections. */
1492 dwarf2_build_psymtabs_easy (struct objfile
*objfile
)
1494 bfd
*abfd
= objfile
->obfd
;
1495 char *aranges_buffer
, *pubnames_buffer
;
1496 char *aranges_ptr
, *pubnames_ptr
;
1497 unsigned int entry_length
, version
, info_offset
, info_size
;
1499 pubnames_buffer
= dwarf2_read_section (objfile
,
1500 dwarf_pubnames_section
);
1501 pubnames_ptr
= pubnames_buffer
;
1502 while ((pubnames_ptr
- pubnames_buffer
) < dwarf2_per_objfile
->pubnames
.size
)
1504 unsigned int bytes_read
;
1506 entry_length
= read_initial_length (abfd
, pubnames_ptr
, &bytes_read
);
1507 pubnames_ptr
+= bytes_read
;
1508 version
= read_1_byte (abfd
, pubnames_ptr
);
1510 info_offset
= read_4_bytes (abfd
, pubnames_ptr
);
1512 info_size
= read_4_bytes (abfd
, pubnames_ptr
);
1516 aranges_buffer
= dwarf2_read_section (objfile
,
1517 dwarf_aranges_section
);
1522 /* Return TRUE if OFFSET is within CU_HEADER. */
1525 offset_in_cu_p (const struct comp_unit_head
*cu_header
, unsigned int offset
)
1527 unsigned int bottom
= cu_header
->offset
;
1528 unsigned int top
= (cu_header
->offset
1530 + cu_header
->initial_length_size
);
1531 return (offset
>= bottom
&& offset
< top
);
1534 /* Read in the comp unit header information from the debug_info at info_ptr.
1535 NOTE: This leaves members offset, first_die_offset to be filled in
1539 read_comp_unit_head (struct comp_unit_head
*cu_header
,
1540 gdb_byte
*info_ptr
, bfd
*abfd
)
1543 unsigned int bytes_read
;
1545 cu_header
->length
= read_initial_length (abfd
, info_ptr
, &bytes_read
);
1546 cu_header
->initial_length_size
= bytes_read
;
1547 cu_header
->offset_size
= (bytes_read
== 4) ? 4 : 8;
1548 info_ptr
+= bytes_read
;
1549 cu_header
->version
= read_2_bytes (abfd
, info_ptr
);
1551 cu_header
->abbrev_offset
= read_offset (abfd
, info_ptr
, cu_header
,
1553 info_ptr
+= bytes_read
;
1554 cu_header
->addr_size
= read_1_byte (abfd
, info_ptr
);
1556 signed_addr
= bfd_get_sign_extend_vma (abfd
);
1557 if (signed_addr
< 0)
1558 internal_error (__FILE__
, __LINE__
,
1559 _("read_comp_unit_head: dwarf from non elf file"));
1560 cu_header
->signed_addr_p
= signed_addr
;
1566 partial_read_comp_unit_head (struct comp_unit_head
*header
, gdb_byte
*info_ptr
,
1567 gdb_byte
*buffer
, unsigned int buffer_size
,
1570 gdb_byte
*beg_of_comp_unit
= info_ptr
;
1572 info_ptr
= read_comp_unit_head (header
, info_ptr
, abfd
);
1574 if (header
->version
!= 2 && header
->version
!= 3)
1575 error (_("Dwarf Error: wrong version in compilation unit header "
1576 "(is %d, should be %d) [in module %s]"), header
->version
,
1577 2, bfd_get_filename (abfd
));
1579 if (header
->abbrev_offset
>= dwarf2_per_objfile
->abbrev
.size
)
1580 error (_("Dwarf Error: bad offset (0x%lx) in compilation unit header "
1581 "(offset 0x%lx + 6) [in module %s]"),
1582 (long) header
->abbrev_offset
,
1583 (long) (beg_of_comp_unit
- buffer
),
1584 bfd_get_filename (abfd
));
1586 if (beg_of_comp_unit
+ header
->length
+ header
->initial_length_size
1587 > buffer
+ buffer_size
)
1588 error (_("Dwarf Error: bad length (0x%lx) in compilation unit header "
1589 "(offset 0x%lx + 0) [in module %s]"),
1590 (long) header
->length
,
1591 (long) (beg_of_comp_unit
- buffer
),
1592 bfd_get_filename (abfd
));
1597 /* Read in the types comp unit header information from .debug_types entry at
1598 types_ptr. The result is a pointer to one past the end of the header. */
1601 read_type_comp_unit_head (struct comp_unit_head
*cu_header
,
1602 ULONGEST
*signature
,
1603 gdb_byte
*types_ptr
, bfd
*abfd
)
1605 unsigned int bytes_read
;
1606 gdb_byte
*initial_types_ptr
= types_ptr
;
1608 cu_header
->offset
= types_ptr
- dwarf2_per_objfile
->types
.buffer
;
1610 types_ptr
= read_comp_unit_head (cu_header
, types_ptr
, abfd
);
1612 *signature
= read_8_bytes (abfd
, types_ptr
);
1614 types_ptr
+= cu_header
->offset_size
;
1615 cu_header
->first_die_offset
= types_ptr
- initial_types_ptr
;
1620 /* Allocate a new partial symtab for file named NAME and mark this new
1621 partial symtab as being an include of PST. */
1624 dwarf2_create_include_psymtab (char *name
, struct partial_symtab
*pst
,
1625 struct objfile
*objfile
)
1627 struct partial_symtab
*subpst
= allocate_psymtab (name
, objfile
);
1629 subpst
->section_offsets
= pst
->section_offsets
;
1630 subpst
->textlow
= 0;
1631 subpst
->texthigh
= 0;
1633 subpst
->dependencies
= (struct partial_symtab
**)
1634 obstack_alloc (&objfile
->objfile_obstack
,
1635 sizeof (struct partial_symtab
*));
1636 subpst
->dependencies
[0] = pst
;
1637 subpst
->number_of_dependencies
= 1;
1639 subpst
->globals_offset
= 0;
1640 subpst
->n_global_syms
= 0;
1641 subpst
->statics_offset
= 0;
1642 subpst
->n_static_syms
= 0;
1643 subpst
->symtab
= NULL
;
1644 subpst
->read_symtab
= pst
->read_symtab
;
1647 /* No private part is necessary for include psymtabs. This property
1648 can be used to differentiate between such include psymtabs and
1649 the regular ones. */
1650 subpst
->read_symtab_private
= NULL
;
1653 /* Read the Line Number Program data and extract the list of files
1654 included by the source file represented by PST. Build an include
1655 partial symtab for each of these included files. */
1658 dwarf2_build_include_psymtabs (struct dwarf2_cu
*cu
,
1659 struct die_info
*die
,
1660 struct partial_symtab
*pst
)
1662 struct objfile
*objfile
= cu
->objfile
;
1663 bfd
*abfd
= objfile
->obfd
;
1664 struct line_header
*lh
= NULL
;
1665 struct attribute
*attr
;
1667 attr
= dwarf2_attr (die
, DW_AT_stmt_list
, cu
);
1670 unsigned int line_offset
= DW_UNSND (attr
);
1671 lh
= dwarf_decode_line_header (line_offset
, abfd
, cu
);
1674 return; /* No linetable, so no includes. */
1676 dwarf_decode_lines (lh
, NULL
, abfd
, cu
, pst
);
1678 free_line_header (lh
);
1682 hash_type_signature (const void *item
)
1684 const struct signatured_type
*type_sig
= item
;
1685 /* This drops the top 32 bits of the signature, but is ok for a hash. */
1686 return type_sig
->signature
;
1690 eq_type_signature (const void *item_lhs
, const void *item_rhs
)
1692 const struct signatured_type
*lhs
= item_lhs
;
1693 const struct signatured_type
*rhs
= item_rhs
;
1694 return lhs
->signature
== rhs
->signature
;
1697 /* Create the hash table of all entries in the .debug_types section.
1698 The result is zero if there is an error (e.g. missing .debug_types section),
1699 otherwise non-zero. */
1702 create_debug_types_hash_table (struct objfile
*objfile
)
1704 gdb_byte
*info_ptr
= dwarf2_per_objfile
->types
.buffer
;
1707 if (info_ptr
== NULL
)
1709 dwarf2_per_objfile
->signatured_types
= NULL
;
1713 types_htab
= htab_create_alloc_ex (41,
1714 hash_type_signature
,
1717 &objfile
->objfile_obstack
,
1718 hashtab_obstack_allocate
,
1719 dummy_obstack_deallocate
);
1721 if (dwarf2_die_debug
)
1722 fprintf_unfiltered (gdb_stdlog
, "Signatured types:\n");
1724 while (info_ptr
< dwarf2_per_objfile
->types
.buffer
+ dwarf2_per_objfile
->types
.size
)
1726 unsigned int offset
;
1727 unsigned int offset_size
;
1728 unsigned int type_offset
;
1729 unsigned int length
, initial_length_size
;
1730 unsigned short version
;
1732 struct signatured_type
*type_sig
;
1734 gdb_byte
*ptr
= info_ptr
;
1736 offset
= ptr
- dwarf2_per_objfile
->types
.buffer
;
1738 /* We need to read the type's signature in order to build the hash
1739 table, but we don't need to read anything else just yet. */
1741 /* Sanity check to ensure entire cu is present. */
1742 length
= read_initial_length (objfile
->obfd
, ptr
, &initial_length_size
);
1743 if (ptr
+ length
+ initial_length_size
1744 > dwarf2_per_objfile
->types
.buffer
+ dwarf2_per_objfile
->types
.size
)
1746 complaint (&symfile_complaints
,
1747 _("debug type entry runs off end of `.debug_types' section, ignored"));
1751 offset_size
= initial_length_size
== 4 ? 4 : 8;
1752 ptr
+= initial_length_size
;
1753 version
= bfd_get_16 (objfile
->obfd
, ptr
);
1755 ptr
+= offset_size
; /* abbrev offset */
1756 ptr
+= 1; /* address size */
1757 signature
= bfd_get_64 (objfile
->obfd
, ptr
);
1759 type_offset
= read_offset_1 (objfile
->obfd
, ptr
, offset_size
);
1761 type_sig
= obstack_alloc (&objfile
->objfile_obstack
, sizeof (*type_sig
));
1762 memset (type_sig
, 0, sizeof (*type_sig
));
1763 type_sig
->signature
= signature
;
1764 type_sig
->offset
= offset
;
1765 type_sig
->type_offset
= type_offset
;
1767 slot
= htab_find_slot (types_htab
, type_sig
, INSERT
);
1768 gdb_assert (slot
!= NULL
);
1771 if (dwarf2_die_debug
)
1772 fprintf_unfiltered (gdb_stdlog
, " offset 0x%x, signature 0x%s\n",
1773 offset
, phex (signature
, sizeof (signature
)));
1775 info_ptr
= info_ptr
+ initial_length_size
+ length
;
1778 dwarf2_per_objfile
->signatured_types
= types_htab
;
1783 /* Lookup a signature based type.
1784 Returns NULL if SIG is not present in the table. */
1786 static struct signatured_type
*
1787 lookup_signatured_type (struct objfile
*objfile
, ULONGEST sig
)
1789 struct signatured_type find_entry
, *entry
;
1791 if (dwarf2_per_objfile
->signatured_types
== NULL
)
1793 complaint (&symfile_complaints
,
1794 _("missing `.debug_types' section for DW_FORM_sig8 die"));
1798 find_entry
.signature
= sig
;
1799 entry
= htab_find (dwarf2_per_objfile
->signatured_types
, &find_entry
);
1803 /* Initialize a die_reader_specs struct from a dwarf2_cu struct. */
1806 init_cu_die_reader (struct die_reader_specs
*reader
,
1807 struct dwarf2_cu
*cu
)
1809 reader
->abfd
= cu
->objfile
->obfd
;
1811 if (cu
->per_cu
->from_debug_types
)
1812 reader
->buffer
= dwarf2_per_objfile
->types
.buffer
;
1814 reader
->buffer
= dwarf2_per_objfile
->info
.buffer
;
1817 /* Find the base address of the compilation unit for range lists and
1818 location lists. It will normally be specified by DW_AT_low_pc.
1819 In DWARF-3 draft 4, the base address could be overridden by
1820 DW_AT_entry_pc. It's been removed, but GCC still uses this for
1821 compilation units with discontinuous ranges. */
1824 dwarf2_find_base_address (struct die_info
*die
, struct dwarf2_cu
*cu
)
1826 struct attribute
*attr
;
1829 cu
->base_address
= 0;
1831 attr
= dwarf2_attr (die
, DW_AT_entry_pc
, cu
);
1834 cu
->base_address
= DW_ADDR (attr
);
1839 attr
= dwarf2_attr (die
, DW_AT_low_pc
, cu
);
1842 cu
->base_address
= DW_ADDR (attr
);
1848 /* Subroutine of process_type_comp_unit and dwarf2_build_psymtabs_hard
1849 to combine the common parts.
1850 Process a compilation unit for a psymtab.
1851 BUFFER is a pointer to the beginning of the dwarf section buffer,
1852 either .debug_info or debug_types.
1853 INFO_PTR is a pointer to the start of the CU.
1854 Returns a pointer to the next CU. */
1857 process_psymtab_comp_unit (struct objfile
*objfile
,
1858 struct dwarf2_per_cu_data
*this_cu
,
1859 gdb_byte
*buffer
, gdb_byte
*info_ptr
,
1860 unsigned int buffer_size
)
1862 bfd
*abfd
= objfile
->obfd
;
1863 gdb_byte
*beg_of_comp_unit
= info_ptr
;
1864 struct die_info
*comp_unit_die
;
1865 struct partial_symtab
*pst
;
1867 struct cleanup
*back_to_inner
;
1868 struct dwarf2_cu cu
;
1869 unsigned int bytes_read
;
1870 int has_children
, has_pc_info
;
1871 struct attribute
*attr
;
1873 CORE_ADDR best_lowpc
= 0, best_highpc
= 0;
1874 struct die_reader_specs reader_specs
;
1876 memset (&cu
, 0, sizeof (cu
));
1877 cu
.objfile
= objfile
;
1878 obstack_init (&cu
.comp_unit_obstack
);
1880 back_to_inner
= make_cleanup (free_stack_comp_unit
, &cu
);
1882 info_ptr
= partial_read_comp_unit_head (&cu
.header
, info_ptr
,
1883 buffer
, buffer_size
,
1886 /* Complete the cu_header. */
1887 cu
.header
.offset
= beg_of_comp_unit
- buffer
;
1888 cu
.header
.first_die_offset
= info_ptr
- beg_of_comp_unit
;
1890 cu
.list_in_scope
= &file_symbols
;
1892 /* If this compilation unit was already read in, free the
1893 cached copy in order to read it in again. This is
1894 necessary because we skipped some symbols when we first
1895 read in the compilation unit (see load_partial_dies).
1896 This problem could be avoided, but the benefit is
1898 if (this_cu
->cu
!= NULL
)
1899 free_one_cached_comp_unit (this_cu
->cu
);
1901 /* Note that this is a pointer to our stack frame, being
1902 added to a global data structure. It will be cleaned up
1903 in free_stack_comp_unit when we finish with this
1904 compilation unit. */
1906 cu
.per_cu
= this_cu
;
1908 /* Read the abbrevs for this compilation unit into a table. */
1909 dwarf2_read_abbrevs (abfd
, &cu
);
1910 make_cleanup (dwarf2_free_abbrev_table
, &cu
);
1912 /* Read the compilation unit die. */
1913 if (this_cu
->from_debug_types
)
1914 info_ptr
+= 8 /*signature*/ + cu
.header
.offset_size
;
1915 init_cu_die_reader (&reader_specs
, &cu
);
1916 info_ptr
= read_full_die (&reader_specs
, &comp_unit_die
, info_ptr
,
1919 if (this_cu
->from_debug_types
)
1921 /* offset,length haven't been set yet for type units. */
1922 this_cu
->offset
= cu
.header
.offset
;
1923 this_cu
->length
= cu
.header
.length
+ cu
.header
.initial_length_size
;
1925 else if (comp_unit_die
->tag
== DW_TAG_partial_unit
)
1927 info_ptr
= (beg_of_comp_unit
+ cu
.header
.length
1928 + cu
.header
.initial_length_size
);
1929 do_cleanups (back_to_inner
);
1933 /* Set the language we're debugging. */
1934 attr
= dwarf2_attr (comp_unit_die
, DW_AT_language
, &cu
);
1936 set_cu_language (DW_UNSND (attr
), &cu
);
1938 set_cu_language (language_minimal
, &cu
);
1940 /* Allocate a new partial symbol table structure. */
1941 attr
= dwarf2_attr (comp_unit_die
, DW_AT_name
, &cu
);
1942 pst
= start_psymtab_common (objfile
, objfile
->section_offsets
,
1943 (attr
!= NULL
) ? DW_STRING (attr
) : "",
1944 /* TEXTLOW and TEXTHIGH are set below. */
1946 objfile
->global_psymbols
.next
,
1947 objfile
->static_psymbols
.next
);
1949 attr
= dwarf2_attr (comp_unit_die
, DW_AT_comp_dir
, &cu
);
1951 pst
->dirname
= DW_STRING (attr
);
1953 pst
->read_symtab_private
= (char *) this_cu
;
1955 baseaddr
= ANOFFSET (objfile
->section_offsets
, SECT_OFF_TEXT (objfile
));
1957 /* Store the function that reads in the rest of the symbol table */
1958 pst
->read_symtab
= dwarf2_psymtab_to_symtab
;
1960 this_cu
->psymtab
= pst
;
1962 dwarf2_find_base_address (comp_unit_die
, &cu
);
1964 /* Possibly set the default values of LOWPC and HIGHPC from
1966 has_pc_info
= dwarf2_get_pc_bounds (comp_unit_die
, &best_lowpc
,
1967 &best_highpc
, &cu
, pst
);
1968 if (has_pc_info
== 1 && best_lowpc
< best_highpc
)
1969 /* Store the contiguous range if it is not empty; it can be empty for
1970 CUs with no code. */
1971 addrmap_set_empty (objfile
->psymtabs_addrmap
,
1972 best_lowpc
+ baseaddr
,
1973 best_highpc
+ baseaddr
- 1, pst
);
1975 /* Check if comp unit has_children.
1976 If so, read the rest of the partial symbols from this comp unit.
1977 If not, there's no more debug_info for this comp unit. */
1980 struct partial_die_info
*first_die
;
1981 CORE_ADDR lowpc
, highpc
;
1983 lowpc
= ((CORE_ADDR
) -1);
1984 highpc
= ((CORE_ADDR
) 0);
1986 first_die
= load_partial_dies (abfd
, buffer
, info_ptr
, 1, &cu
);
1988 scan_partial_symbols (first_die
, &lowpc
, &highpc
,
1989 ! has_pc_info
, &cu
);
1991 /* If we didn't find a lowpc, set it to highpc to avoid
1992 complaints from `maint check'. */
1993 if (lowpc
== ((CORE_ADDR
) -1))
1996 /* If the compilation unit didn't have an explicit address range,
1997 then use the information extracted from its child dies. */
2001 best_highpc
= highpc
;
2004 pst
->textlow
= best_lowpc
+ baseaddr
;
2005 pst
->texthigh
= best_highpc
+ baseaddr
;
2007 pst
->n_global_syms
= objfile
->global_psymbols
.next
-
2008 (objfile
->global_psymbols
.list
+ pst
->globals_offset
);
2009 pst
->n_static_syms
= objfile
->static_psymbols
.next
-
2010 (objfile
->static_psymbols
.list
+ pst
->statics_offset
);
2011 sort_pst_symbols (pst
);
2013 info_ptr
= (beg_of_comp_unit
+ cu
.header
.length
2014 + cu
.header
.initial_length_size
);
2016 if (this_cu
->from_debug_types
)
2018 /* It's not clear we want to do anything with stmt lists here.
2019 Waiting to see what gcc ultimately does. */
2023 /* Get the list of files included in the current compilation unit,
2024 and build a psymtab for each of them. */
2025 dwarf2_build_include_psymtabs (&cu
, comp_unit_die
, pst
);
2028 do_cleanups (back_to_inner
);
2033 /* Traversal function for htab_traverse_noresize.
2034 Process one .debug_types comp-unit. */
2037 process_type_comp_unit (void **slot
, void *info
)
2039 struct signatured_type
*entry
= (struct signatured_type
*) *slot
;
2040 struct objfile
*objfile
= (struct objfile
*) info
;
2041 struct dwarf2_per_cu_data
*this_cu
;
2043 this_cu
= &entry
->per_cu
;
2044 this_cu
->from_debug_types
= 1;
2046 process_psymtab_comp_unit (objfile
, this_cu
,
2047 dwarf2_per_objfile
->types
.buffer
,
2048 dwarf2_per_objfile
->types
.buffer
+ entry
->offset
,
2049 dwarf2_per_objfile
->types
.size
);
2054 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
2055 Build partial symbol tables for the .debug_types comp-units. */
2058 build_type_psymtabs (struct objfile
*objfile
)
2060 if (! create_debug_types_hash_table (objfile
))
2063 htab_traverse_noresize (dwarf2_per_objfile
->signatured_types
,
2064 process_type_comp_unit
, objfile
);
2067 /* Build the partial symbol table by doing a quick pass through the
2068 .debug_info and .debug_abbrev sections. */
2071 dwarf2_build_psymtabs_hard (struct objfile
*objfile
)
2073 /* Instead of reading this into a big buffer, we should probably use
2074 mmap() on architectures that support it. (FIXME) */
2075 bfd
*abfd
= objfile
->obfd
;
2077 struct cleanup
*back_to
;
2079 info_ptr
= dwarf2_per_objfile
->info
.buffer
;
2081 /* Any cached compilation units will be linked by the per-objfile
2082 read_in_chain. Make sure to free them when we're done. */
2083 back_to
= make_cleanup (free_cached_comp_units
, NULL
);
2085 build_type_psymtabs (objfile
);
2087 create_all_comp_units (objfile
);
2089 objfile
->psymtabs_addrmap
=
2090 addrmap_create_mutable (&objfile
->objfile_obstack
);
2092 /* Since the objects we're extracting from .debug_info vary in
2093 length, only the individual functions to extract them (like
2094 read_comp_unit_head and load_partial_die) can really know whether
2095 the buffer is large enough to hold another complete object.
2097 At the moment, they don't actually check that. If .debug_info
2098 holds just one extra byte after the last compilation unit's dies,
2099 then read_comp_unit_head will happily read off the end of the
2100 buffer. read_partial_die is similarly casual. Those functions
2103 For this loop condition, simply checking whether there's any data
2104 left at all should be sufficient. */
2106 while (info_ptr
< (dwarf2_per_objfile
->info
.buffer
2107 + dwarf2_per_objfile
->info
.size
))
2109 struct dwarf2_per_cu_data
*this_cu
;
2111 this_cu
= dwarf2_find_comp_unit (info_ptr
- dwarf2_per_objfile
->info
.buffer
,
2114 info_ptr
= process_psymtab_comp_unit (objfile
, this_cu
,
2115 dwarf2_per_objfile
->info
.buffer
,
2117 dwarf2_per_objfile
->info
.size
);
2120 objfile
->psymtabs_addrmap
= addrmap_create_fixed (objfile
->psymtabs_addrmap
,
2121 &objfile
->objfile_obstack
);
2123 do_cleanups (back_to
);
2126 /* Load the partial DIEs for a secondary CU into memory. */
2129 load_partial_comp_unit (struct dwarf2_per_cu_data
*this_cu
,
2130 struct objfile
*objfile
)
2132 bfd
*abfd
= objfile
->obfd
;
2133 gdb_byte
*info_ptr
, *beg_of_comp_unit
;
2134 struct die_info
*comp_unit_die
;
2135 struct dwarf2_cu
*cu
;
2136 unsigned int bytes_read
;
2137 struct cleanup
*back_to
;
2138 struct attribute
*attr
;
2140 struct die_reader_specs reader_specs
;
2142 gdb_assert (! this_cu
->from_debug_types
);
2144 info_ptr
= dwarf2_per_objfile
->info
.buffer
+ this_cu
->offset
;
2145 beg_of_comp_unit
= info_ptr
;
2147 cu
= alloc_one_comp_unit (objfile
);
2149 /* ??? Missing cleanup for CU? */
2151 /* Link this compilation unit into the compilation unit tree. */
2153 cu
->per_cu
= this_cu
;
2154 cu
->type_hash
= this_cu
->type_hash
;
2156 info_ptr
= partial_read_comp_unit_head (&cu
->header
, info_ptr
,
2157 dwarf2_per_objfile
->info
.buffer
,
2158 dwarf2_per_objfile
->info
.size
,
2161 /* Complete the cu_header. */
2162 cu
->header
.offset
= this_cu
->offset
;
2163 cu
->header
.first_die_offset
= info_ptr
- beg_of_comp_unit
;
2165 /* Read the abbrevs for this compilation unit into a table. */
2166 dwarf2_read_abbrevs (abfd
, cu
);
2167 back_to
= make_cleanup (dwarf2_free_abbrev_table
, cu
);
2169 /* Read the compilation unit die. */
2170 init_cu_die_reader (&reader_specs
, cu
);
2171 info_ptr
= read_full_die (&reader_specs
, &comp_unit_die
, info_ptr
,
2174 /* Set the language we're debugging. */
2175 attr
= dwarf2_attr (comp_unit_die
, DW_AT_language
, cu
);
2177 set_cu_language (DW_UNSND (attr
), cu
);
2179 set_cu_language (language_minimal
, cu
);
2181 /* Check if comp unit has_children.
2182 If so, read the rest of the partial symbols from this comp unit.
2183 If not, there's no more debug_info for this comp unit. */
2185 load_partial_dies (abfd
, dwarf2_per_objfile
->info
.buffer
, info_ptr
, 0, cu
);
2187 do_cleanups (back_to
);
2190 /* Create a list of all compilation units in OBJFILE. We do this only
2191 if an inter-comp-unit reference is found; presumably if there is one,
2192 there will be many, and one will occur early in the .debug_info section.
2193 So there's no point in building this list incrementally. */
2196 create_all_comp_units (struct objfile
*objfile
)
2200 struct dwarf2_per_cu_data
**all_comp_units
;
2201 gdb_byte
*info_ptr
= dwarf2_per_objfile
->info
.buffer
;
2205 all_comp_units
= xmalloc (n_allocated
2206 * sizeof (struct dwarf2_per_cu_data
*));
2208 while (info_ptr
< dwarf2_per_objfile
->info
.buffer
+ dwarf2_per_objfile
->info
.size
)
2210 unsigned int length
, initial_length_size
;
2211 gdb_byte
*beg_of_comp_unit
;
2212 struct dwarf2_per_cu_data
*this_cu
;
2213 unsigned int offset
;
2215 offset
= info_ptr
- dwarf2_per_objfile
->info
.buffer
;
2217 /* Read just enough information to find out where the next
2218 compilation unit is. */
2219 length
= read_initial_length (objfile
->obfd
, info_ptr
,
2220 &initial_length_size
);
2222 /* Save the compilation unit for later lookup. */
2223 this_cu
= obstack_alloc (&objfile
->objfile_obstack
,
2224 sizeof (struct dwarf2_per_cu_data
));
2225 memset (this_cu
, 0, sizeof (*this_cu
));
2226 this_cu
->offset
= offset
;
2227 this_cu
->length
= length
+ initial_length_size
;
2229 if (n_comp_units
== n_allocated
)
2232 all_comp_units
= xrealloc (all_comp_units
,
2234 * sizeof (struct dwarf2_per_cu_data
*));
2236 all_comp_units
[n_comp_units
++] = this_cu
;
2238 info_ptr
= info_ptr
+ this_cu
->length
;
2241 dwarf2_per_objfile
->all_comp_units
2242 = obstack_alloc (&objfile
->objfile_obstack
,
2243 n_comp_units
* sizeof (struct dwarf2_per_cu_data
*));
2244 memcpy (dwarf2_per_objfile
->all_comp_units
, all_comp_units
,
2245 n_comp_units
* sizeof (struct dwarf2_per_cu_data
*));
2246 xfree (all_comp_units
);
2247 dwarf2_per_objfile
->n_comp_units
= n_comp_units
;
2250 /* Process all loaded DIEs for compilation unit CU, starting at
2251 FIRST_DIE. The caller should pass NEED_PC == 1 if the compilation
2252 unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
2253 DW_AT_ranges). If NEED_PC is set, then this function will set
2254 *LOWPC and *HIGHPC to the lowest and highest PC values found in CU
2255 and record the covered ranges in the addrmap. */
2258 scan_partial_symbols (struct partial_die_info
*first_die
, CORE_ADDR
*lowpc
,
2259 CORE_ADDR
*highpc
, int need_pc
, struct dwarf2_cu
*cu
)
2261 struct objfile
*objfile
= cu
->objfile
;
2262 bfd
*abfd
= objfile
->obfd
;
2263 struct partial_die_info
*pdi
;
2265 /* Now, march along the PDI's, descending into ones which have
2266 interesting children but skipping the children of the other ones,
2267 until we reach the end of the compilation unit. */
2273 fixup_partial_die (pdi
, cu
);
2275 /* Anonymous namespaces have no name but have interesting
2276 children, so we need to look at them. Ditto for anonymous
2279 if (pdi
->name
!= NULL
|| pdi
->tag
== DW_TAG_namespace
2280 || pdi
->tag
== DW_TAG_enumeration_type
)
2284 case DW_TAG_subprogram
:
2285 add_partial_subprogram (pdi
, lowpc
, highpc
, need_pc
, cu
);
2287 case DW_TAG_variable
:
2288 case DW_TAG_typedef
:
2289 case DW_TAG_union_type
:
2290 if (!pdi
->is_declaration
)
2292 add_partial_symbol (pdi
, cu
);
2295 case DW_TAG_class_type
:
2296 case DW_TAG_interface_type
:
2297 case DW_TAG_structure_type
:
2298 if (!pdi
->is_declaration
)
2300 add_partial_symbol (pdi
, cu
);
2303 case DW_TAG_enumeration_type
:
2304 if (!pdi
->is_declaration
)
2305 add_partial_enumeration (pdi
, cu
);
2307 case DW_TAG_base_type
:
2308 case DW_TAG_subrange_type
:
2309 /* File scope base type definitions are added to the partial
2311 add_partial_symbol (pdi
, cu
);
2313 case DW_TAG_namespace
:
2314 add_partial_namespace (pdi
, lowpc
, highpc
, need_pc
, cu
);
2317 add_partial_module (pdi
, lowpc
, highpc
, need_pc
, cu
);
2324 /* If the die has a sibling, skip to the sibling. */
2326 pdi
= pdi
->die_sibling
;
2330 /* Functions used to compute the fully scoped name of a partial DIE.
2332 Normally, this is simple. For C++, the parent DIE's fully scoped
2333 name is concatenated with "::" and the partial DIE's name. For
2334 Java, the same thing occurs except that "." is used instead of "::".
2335 Enumerators are an exception; they use the scope of their parent
2336 enumeration type, i.e. the name of the enumeration type is not
2337 prepended to the enumerator.
2339 There are two complexities. One is DW_AT_specification; in this
2340 case "parent" means the parent of the target of the specification,
2341 instead of the direct parent of the DIE. The other is compilers
2342 which do not emit DW_TAG_namespace; in this case we try to guess
2343 the fully qualified name of structure types from their members'
2344 linkage names. This must be done using the DIE's children rather
2345 than the children of any DW_AT_specification target. We only need
2346 to do this for structures at the top level, i.e. if the target of
2347 any DW_AT_specification (if any; otherwise the DIE itself) does not
2350 /* Compute the scope prefix associated with PDI's parent, in
2351 compilation unit CU. The result will be allocated on CU's
2352 comp_unit_obstack, or a copy of the already allocated PDI->NAME
2353 field. NULL is returned if no prefix is necessary. */
2355 partial_die_parent_scope (struct partial_die_info
*pdi
,
2356 struct dwarf2_cu
*cu
)
2358 char *grandparent_scope
;
2359 struct partial_die_info
*parent
, *real_pdi
;
2361 /* We need to look at our parent DIE; if we have a DW_AT_specification,
2362 then this means the parent of the specification DIE. */
2365 while (real_pdi
->has_specification
)
2366 real_pdi
= find_partial_die (real_pdi
->spec_offset
, cu
);
2368 parent
= real_pdi
->die_parent
;
2372 if (parent
->scope_set
)
2373 return parent
->scope
;
2375 fixup_partial_die (parent
, cu
);
2377 grandparent_scope
= partial_die_parent_scope (parent
, cu
);
2379 if (parent
->tag
== DW_TAG_namespace
2380 || parent
->tag
== DW_TAG_structure_type
2381 || parent
->tag
== DW_TAG_class_type
2382 || parent
->tag
== DW_TAG_interface_type
2383 || parent
->tag
== DW_TAG_union_type
2384 || parent
->tag
== DW_TAG_enumeration_type
)
2386 if (grandparent_scope
== NULL
)
2387 parent
->scope
= parent
->name
;
2389 parent
->scope
= typename_concat (&cu
->comp_unit_obstack
, grandparent_scope
,
2392 else if (parent
->tag
== DW_TAG_enumerator
)
2393 /* Enumerators should not get the name of the enumeration as a prefix. */
2394 parent
->scope
= grandparent_scope
;
2397 /* FIXME drow/2004-04-01: What should we be doing with
2398 function-local names? For partial symbols, we should probably be
2400 complaint (&symfile_complaints
,
2401 _("unhandled containing DIE tag %d for DIE at %d"),
2402 parent
->tag
, pdi
->offset
);
2403 parent
->scope
= grandparent_scope
;
2406 parent
->scope_set
= 1;
2407 return parent
->scope
;
2410 /* Return the fully scoped name associated with PDI, from compilation unit
2411 CU. The result will be allocated with malloc. */
2413 partial_die_full_name (struct partial_die_info
*pdi
,
2414 struct dwarf2_cu
*cu
)
2418 parent_scope
= partial_die_parent_scope (pdi
, cu
);
2419 if (parent_scope
== NULL
)
2422 return typename_concat (NULL
, parent_scope
, pdi
->name
, cu
);
2426 add_partial_symbol (struct partial_die_info
*pdi
, struct dwarf2_cu
*cu
)
2428 struct objfile
*objfile
= cu
->objfile
;
2430 char *actual_name
= NULL
;
2431 const char *my_prefix
;
2432 const struct partial_symbol
*psym
= NULL
;
2434 int built_actual_name
= 0;
2436 baseaddr
= ANOFFSET (objfile
->section_offsets
, SECT_OFF_TEXT (objfile
));
2438 actual_name
= partial_die_full_name (pdi
, cu
);
2440 built_actual_name
= 1;
2442 if (actual_name
== NULL
)
2443 actual_name
= pdi
->name
;
2447 case DW_TAG_subprogram
:
2448 if (pdi
->is_external
|| cu
->language
== language_ada
)
2450 /* brobecker/2007-12-26: Normally, only "external" DIEs are part
2451 of the global scope. But in Ada, we want to be able to access
2452 nested procedures globally. So all Ada subprograms are stored
2453 in the global scope. */
2454 /*prim_record_minimal_symbol (actual_name, pdi->lowpc + baseaddr,
2455 mst_text, objfile); */
2456 psym
= add_psymbol_to_list (actual_name
, strlen (actual_name
),
2458 VAR_DOMAIN
, LOC_BLOCK
,
2459 &objfile
->global_psymbols
,
2460 0, pdi
->lowpc
+ baseaddr
,
2461 cu
->language
, objfile
);
2465 /*prim_record_minimal_symbol (actual_name, pdi->lowpc + baseaddr,
2466 mst_file_text, objfile); */
2467 psym
= add_psymbol_to_list (actual_name
, strlen (actual_name
),
2469 VAR_DOMAIN
, LOC_BLOCK
,
2470 &objfile
->static_psymbols
,
2471 0, pdi
->lowpc
+ baseaddr
,
2472 cu
->language
, objfile
);
2475 case DW_TAG_variable
:
2476 if (pdi
->is_external
)
2479 Don't enter into the minimal symbol tables as there is
2480 a minimal symbol table entry from the ELF symbols already.
2481 Enter into partial symbol table if it has a location
2482 descriptor or a type.
2483 If the location descriptor is missing, new_symbol will create
2484 a LOC_UNRESOLVED symbol, the address of the variable will then
2485 be determined from the minimal symbol table whenever the variable
2487 The address for the partial symbol table entry is not
2488 used by GDB, but it comes in handy for debugging partial symbol
2492 addr
= decode_locdesc (pdi
->locdesc
, cu
);
2493 if (pdi
->locdesc
|| pdi
->has_type
)
2494 psym
= add_psymbol_to_list (actual_name
, strlen (actual_name
),
2496 VAR_DOMAIN
, LOC_STATIC
,
2497 &objfile
->global_psymbols
,
2499 cu
->language
, objfile
);
2503 /* Static Variable. Skip symbols without location descriptors. */
2504 if (pdi
->locdesc
== NULL
)
2506 if (built_actual_name
)
2507 xfree (actual_name
);
2510 addr
= decode_locdesc (pdi
->locdesc
, cu
);
2511 /*prim_record_minimal_symbol (actual_name, addr + baseaddr,
2512 mst_file_data, objfile); */
2513 psym
= add_psymbol_to_list (actual_name
, strlen (actual_name
),
2515 VAR_DOMAIN
, LOC_STATIC
,
2516 &objfile
->static_psymbols
,
2518 cu
->language
, objfile
);
2521 case DW_TAG_typedef
:
2522 case DW_TAG_base_type
:
2523 case DW_TAG_subrange_type
:
2524 add_psymbol_to_list (actual_name
, strlen (actual_name
),
2526 VAR_DOMAIN
, LOC_TYPEDEF
,
2527 &objfile
->static_psymbols
,
2528 0, (CORE_ADDR
) 0, cu
->language
, objfile
);
2530 case DW_TAG_namespace
:
2531 add_psymbol_to_list (actual_name
, strlen (actual_name
),
2533 VAR_DOMAIN
, LOC_TYPEDEF
,
2534 &objfile
->global_psymbols
,
2535 0, (CORE_ADDR
) 0, cu
->language
, objfile
);
2537 case DW_TAG_class_type
:
2538 case DW_TAG_interface_type
:
2539 case DW_TAG_structure_type
:
2540 case DW_TAG_union_type
:
2541 case DW_TAG_enumeration_type
:
2542 /* Skip external references. The DWARF standard says in the section
2543 about "Structure, Union, and Class Type Entries": "An incomplete
2544 structure, union or class type is represented by a structure,
2545 union or class entry that does not have a byte size attribute
2546 and that has a DW_AT_declaration attribute." */
2547 if (!pdi
->has_byte_size
&& pdi
->is_declaration
)
2549 if (built_actual_name
)
2550 xfree (actual_name
);
2554 /* NOTE: carlton/2003-10-07: See comment in new_symbol about
2555 static vs. global. */
2556 add_psymbol_to_list (actual_name
, strlen (actual_name
),
2558 STRUCT_DOMAIN
, LOC_TYPEDEF
,
2559 (cu
->language
== language_cplus
2560 || cu
->language
== language_java
)
2561 ? &objfile
->global_psymbols
2562 : &objfile
->static_psymbols
,
2563 0, (CORE_ADDR
) 0, cu
->language
, objfile
);
2566 case DW_TAG_enumerator
:
2567 add_psymbol_to_list (actual_name
, strlen (actual_name
),
2569 VAR_DOMAIN
, LOC_CONST
,
2570 (cu
->language
== language_cplus
2571 || cu
->language
== language_java
)
2572 ? &objfile
->global_psymbols
2573 : &objfile
->static_psymbols
,
2574 0, (CORE_ADDR
) 0, cu
->language
, objfile
);
2580 if (built_actual_name
)
2581 xfree (actual_name
);
2584 /* Read a partial die corresponding to a namespace; also, add a symbol
2585 corresponding to that namespace to the symbol table. NAMESPACE is
2586 the name of the enclosing namespace. */
2589 add_partial_namespace (struct partial_die_info
*pdi
,
2590 CORE_ADDR
*lowpc
, CORE_ADDR
*highpc
,
2591 int need_pc
, struct dwarf2_cu
*cu
)
2593 struct objfile
*objfile
= cu
->objfile
;
2595 /* Add a symbol for the namespace. */
2597 add_partial_symbol (pdi
, cu
);
2599 /* Now scan partial symbols in that namespace. */
2601 if (pdi
->has_children
)
2602 scan_partial_symbols (pdi
->die_child
, lowpc
, highpc
, need_pc
, cu
);
2605 /* Read a partial die corresponding to a Fortran module. */
2608 add_partial_module (struct partial_die_info
*pdi
, CORE_ADDR
*lowpc
,
2609 CORE_ADDR
*highpc
, int need_pc
, struct dwarf2_cu
*cu
)
2611 /* Now scan partial symbols in that module.
2613 FIXME: Support the separate Fortran module namespaces. */
2615 if (pdi
->has_children
)
2616 scan_partial_symbols (pdi
->die_child
, lowpc
, highpc
, need_pc
, cu
);
2619 /* Read a partial die corresponding to a subprogram and create a partial
2620 symbol for that subprogram. When the CU language allows it, this
2621 routine also defines a partial symbol for each nested subprogram
2622 that this subprogram contains.
2624 DIE my also be a lexical block, in which case we simply search
2625 recursively for suprograms defined inside that lexical block.
2626 Again, this is only performed when the CU language allows this
2627 type of definitions. */
2630 add_partial_subprogram (struct partial_die_info
*pdi
,
2631 CORE_ADDR
*lowpc
, CORE_ADDR
*highpc
,
2632 int need_pc
, struct dwarf2_cu
*cu
)
2634 if (pdi
->tag
== DW_TAG_subprogram
)
2636 if (pdi
->has_pc_info
)
2638 if (pdi
->lowpc
< *lowpc
)
2639 *lowpc
= pdi
->lowpc
;
2640 if (pdi
->highpc
> *highpc
)
2641 *highpc
= pdi
->highpc
;
2645 struct objfile
*objfile
= cu
->objfile
;
2647 baseaddr
= ANOFFSET (objfile
->section_offsets
,
2648 SECT_OFF_TEXT (objfile
));
2649 addrmap_set_empty (objfile
->psymtabs_addrmap
,
2650 pdi
->lowpc
+ baseaddr
,
2651 pdi
->highpc
- 1 + baseaddr
,
2652 cu
->per_cu
->psymtab
);
2654 if (!pdi
->is_declaration
)
2655 add_partial_symbol (pdi
, cu
);
2659 if (! pdi
->has_children
)
2662 if (cu
->language
== language_ada
)
2664 pdi
= pdi
->die_child
;
2667 fixup_partial_die (pdi
, cu
);
2668 if (pdi
->tag
== DW_TAG_subprogram
2669 || pdi
->tag
== DW_TAG_lexical_block
)
2670 add_partial_subprogram (pdi
, lowpc
, highpc
, need_pc
, cu
);
2671 pdi
= pdi
->die_sibling
;
2676 /* See if we can figure out if the class lives in a namespace. We do
2677 this by looking for a member function; its demangled name will
2678 contain namespace info, if there is any. */
2681 guess_structure_name (struct partial_die_info
*struct_pdi
,
2682 struct dwarf2_cu
*cu
)
2684 if ((cu
->language
== language_cplus
2685 || cu
->language
== language_java
)
2686 && cu
->has_namespace_info
== 0
2687 && struct_pdi
->has_children
)
2689 /* NOTE: carlton/2003-10-07: Getting the info this way changes
2690 what template types look like, because the demangler
2691 frequently doesn't give the same name as the debug info. We
2692 could fix this by only using the demangled name to get the
2693 prefix (but see comment in read_structure_type). */
2695 struct partial_die_info
*real_pdi
;
2697 /* If this DIE (this DIE's specification, if any) has a parent, then
2698 we should not do this. We'll prepend the parent's fully qualified
2699 name when we create the partial symbol. */
2701 real_pdi
= struct_pdi
;
2702 while (real_pdi
->has_specification
)
2703 real_pdi
= find_partial_die (real_pdi
->spec_offset
, cu
);
2705 if (real_pdi
->die_parent
!= NULL
)
2710 /* Read a partial die corresponding to an enumeration type. */
2713 add_partial_enumeration (struct partial_die_info
*enum_pdi
,
2714 struct dwarf2_cu
*cu
)
2716 struct objfile
*objfile
= cu
->objfile
;
2717 bfd
*abfd
= objfile
->obfd
;
2718 struct partial_die_info
*pdi
;
2720 if (enum_pdi
->name
!= NULL
)
2721 add_partial_symbol (enum_pdi
, cu
);
2723 pdi
= enum_pdi
->die_child
;
2726 if (pdi
->tag
!= DW_TAG_enumerator
|| pdi
->name
== NULL
)
2727 complaint (&symfile_complaints
, _("malformed enumerator DIE ignored"));
2729 add_partial_symbol (pdi
, cu
);
2730 pdi
= pdi
->die_sibling
;
2734 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit CU.
2735 Return the corresponding abbrev, or NULL if the number is zero (indicating
2736 an empty DIE). In either case *BYTES_READ will be set to the length of
2737 the initial number. */
2739 static struct abbrev_info
*
2740 peek_die_abbrev (gdb_byte
*info_ptr
, unsigned int *bytes_read
,
2741 struct dwarf2_cu
*cu
)
2743 bfd
*abfd
= cu
->objfile
->obfd
;
2744 unsigned int abbrev_number
;
2745 struct abbrev_info
*abbrev
;
2747 abbrev_number
= read_unsigned_leb128 (abfd
, info_ptr
, bytes_read
);
2749 if (abbrev_number
== 0)
2752 abbrev
= dwarf2_lookup_abbrev (abbrev_number
, cu
);
2755 error (_("Dwarf Error: Could not find abbrev number %d [in module %s]"), abbrev_number
,
2756 bfd_get_filename (abfd
));
2762 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
2763 Returns a pointer to the end of a series of DIEs, terminated by an empty
2764 DIE. Any children of the skipped DIEs will also be skipped. */
2767 skip_children (gdb_byte
*buffer
, gdb_byte
*info_ptr
, struct dwarf2_cu
*cu
)
2769 struct abbrev_info
*abbrev
;
2770 unsigned int bytes_read
;
2774 abbrev
= peek_die_abbrev (info_ptr
, &bytes_read
, cu
);
2776 return info_ptr
+ bytes_read
;
2778 info_ptr
= skip_one_die (buffer
, info_ptr
+ bytes_read
, abbrev
, cu
);
2782 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
2783 INFO_PTR should point just after the initial uleb128 of a DIE, and the
2784 abbrev corresponding to that skipped uleb128 should be passed in
2785 ABBREV. Returns a pointer to this DIE's sibling, skipping any
2789 skip_one_die (gdb_byte
*buffer
, gdb_byte
*info_ptr
,
2790 struct abbrev_info
*abbrev
, struct dwarf2_cu
*cu
)
2792 unsigned int bytes_read
;
2793 struct attribute attr
;
2794 bfd
*abfd
= cu
->objfile
->obfd
;
2795 unsigned int form
, i
;
2797 for (i
= 0; i
< abbrev
->num_attrs
; i
++)
2799 /* The only abbrev we care about is DW_AT_sibling. */
2800 if (abbrev
->attrs
[i
].name
== DW_AT_sibling
)
2802 read_attribute (&attr
, &abbrev
->attrs
[i
],
2803 abfd
, info_ptr
, cu
);
2804 if (attr
.form
== DW_FORM_ref_addr
)
2805 complaint (&symfile_complaints
, _("ignoring absolute DW_AT_sibling"));
2807 return buffer
+ dwarf2_get_ref_die_offset (&attr
);
2810 /* If it isn't DW_AT_sibling, skip this attribute. */
2811 form
= abbrev
->attrs
[i
].form
;
2815 case DW_FORM_ref_addr
:
2816 /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
2817 and later it is offset sized. */
2818 if (cu
->header
.version
== 2)
2819 info_ptr
+= cu
->header
.addr_size
;
2821 info_ptr
+= cu
->header
.offset_size
;
2824 info_ptr
+= cu
->header
.addr_size
;
2844 case DW_FORM_string
:
2845 read_string (abfd
, info_ptr
, &bytes_read
);
2846 info_ptr
+= bytes_read
;
2849 info_ptr
+= cu
->header
.offset_size
;
2852 info_ptr
+= read_unsigned_leb128 (abfd
, info_ptr
, &bytes_read
);
2853 info_ptr
+= bytes_read
;
2855 case DW_FORM_block1
:
2856 info_ptr
+= 1 + read_1_byte (abfd
, info_ptr
);
2858 case DW_FORM_block2
:
2859 info_ptr
+= 2 + read_2_bytes (abfd
, info_ptr
);
2861 case DW_FORM_block4
:
2862 info_ptr
+= 4 + read_4_bytes (abfd
, info_ptr
);
2866 case DW_FORM_ref_udata
:
2867 info_ptr
= skip_leb128 (abfd
, info_ptr
);
2869 case DW_FORM_indirect
:
2870 form
= read_unsigned_leb128 (abfd
, info_ptr
, &bytes_read
);
2871 info_ptr
+= bytes_read
;
2872 /* We need to continue parsing from here, so just go back to
2874 goto skip_attribute
;
2877 error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
2878 dwarf_form_name (form
),
2879 bfd_get_filename (abfd
));
2883 if (abbrev
->has_children
)
2884 return skip_children (buffer
, info_ptr
, cu
);
2889 /* Locate ORIG_PDI's sibling.
2890 INFO_PTR should point to the start of the next DIE after ORIG_PDI
2894 locate_pdi_sibling (struct partial_die_info
*orig_pdi
,
2895 gdb_byte
*buffer
, gdb_byte
*info_ptr
,
2896 bfd
*abfd
, struct dwarf2_cu
*cu
)
2898 /* Do we know the sibling already? */
2900 if (orig_pdi
->sibling
)
2901 return orig_pdi
->sibling
;
2903 /* Are there any children to deal with? */
2905 if (!orig_pdi
->has_children
)
2908 /* Skip the children the long way. */
2910 return skip_children (buffer
, info_ptr
, cu
);
2913 /* Expand this partial symbol table into a full symbol table. */
2916 dwarf2_psymtab_to_symtab (struct partial_symtab
*pst
)
2918 /* FIXME: This is barely more than a stub. */
2923 warning (_("bug: psymtab for %s is already read in."), pst
->filename
);
2929 printf_filtered (_("Reading in symbols for %s..."), pst
->filename
);
2930 gdb_flush (gdb_stdout
);
2933 /* Restore our global data. */
2934 dwarf2_per_objfile
= objfile_data (pst
->objfile
,
2935 dwarf2_objfile_data_key
);
2937 /* If this psymtab is constructed from a debug-only objfile, the
2938 has_section_at_zero flag will not necessarily be correct. We
2939 can get the correct value for this flag by looking at the data
2940 associated with the (presumably stripped) associated objfile. */
2941 if (pst
->objfile
->separate_debug_objfile_backlink
)
2943 struct dwarf2_per_objfile
*dpo_backlink
2944 = objfile_data (pst
->objfile
->separate_debug_objfile_backlink
,
2945 dwarf2_objfile_data_key
);
2946 dwarf2_per_objfile
->has_section_at_zero
2947 = dpo_backlink
->has_section_at_zero
;
2950 psymtab_to_symtab_1 (pst
);
2952 /* Finish up the debug error message. */
2954 printf_filtered (_("done.\n"));
2959 /* Add PER_CU to the queue. */
2962 queue_comp_unit (struct dwarf2_per_cu_data
*per_cu
, struct objfile
*objfile
)
2964 struct dwarf2_queue_item
*item
;
2967 item
= xmalloc (sizeof (*item
));
2968 item
->per_cu
= per_cu
;
2971 if (dwarf2_queue
== NULL
)
2972 dwarf2_queue
= item
;
2974 dwarf2_queue_tail
->next
= item
;
2976 dwarf2_queue_tail
= item
;
2979 /* Process the queue. */
2982 process_queue (struct objfile
*objfile
)
2984 struct dwarf2_queue_item
*item
, *next_item
;
2986 /* The queue starts out with one item, but following a DIE reference
2987 may load a new CU, adding it to the end of the queue. */
2988 for (item
= dwarf2_queue
; item
!= NULL
; dwarf2_queue
= item
= next_item
)
2990 if (item
->per_cu
->psymtab
&& !item
->per_cu
->psymtab
->readin
)
2991 process_full_comp_unit (item
->per_cu
);
2993 item
->per_cu
->queued
= 0;
2994 next_item
= item
->next
;
2998 dwarf2_queue_tail
= NULL
;
3001 /* Free all allocated queue entries. This function only releases anything if
3002 an error was thrown; if the queue was processed then it would have been
3003 freed as we went along. */
3006 dwarf2_release_queue (void *dummy
)
3008 struct dwarf2_queue_item
*item
, *last
;
3010 item
= dwarf2_queue
;
3013 /* Anything still marked queued is likely to be in an
3014 inconsistent state, so discard it. */
3015 if (item
->per_cu
->queued
)
3017 if (item
->per_cu
->cu
!= NULL
)
3018 free_one_cached_comp_unit (item
->per_cu
->cu
);
3019 item
->per_cu
->queued
= 0;
3027 dwarf2_queue
= dwarf2_queue_tail
= NULL
;
3030 /* Read in full symbols for PST, and anything it depends on. */
3033 psymtab_to_symtab_1 (struct partial_symtab
*pst
)
3035 struct dwarf2_per_cu_data
*per_cu
;
3036 struct cleanup
*back_to
;
3039 for (i
= 0; i
< pst
->number_of_dependencies
; i
++)
3040 if (!pst
->dependencies
[i
]->readin
)
3042 /* Inform about additional files that need to be read in. */
3045 /* FIXME: i18n: Need to make this a single string. */
3046 fputs_filtered (" ", gdb_stdout
);
3048 fputs_filtered ("and ", gdb_stdout
);
3050 printf_filtered ("%s...", pst
->dependencies
[i
]->filename
);
3051 wrap_here (""); /* Flush output */
3052 gdb_flush (gdb_stdout
);
3054 psymtab_to_symtab_1 (pst
->dependencies
[i
]);
3057 per_cu
= (struct dwarf2_per_cu_data
*) pst
->read_symtab_private
;
3061 /* It's an include file, no symbols to read for it.
3062 Everything is in the parent symtab. */
3067 back_to
= make_cleanup (dwarf2_release_queue
, NULL
);
3069 queue_comp_unit (per_cu
, pst
->objfile
);
3071 if (per_cu
->from_debug_types
)
3072 read_signatured_type_at_offset (pst
->objfile
, per_cu
->offset
);
3074 load_full_comp_unit (per_cu
, pst
->objfile
);
3076 process_queue (pst
->objfile
);
3078 /* Age the cache, releasing compilation units that have not
3079 been used recently. */
3080 age_cached_comp_units ();
3082 do_cleanups (back_to
);
3085 /* Load the DIEs associated with PER_CU into memory. */
3088 load_full_comp_unit (struct dwarf2_per_cu_data
*per_cu
, struct objfile
*objfile
)
3090 bfd
*abfd
= objfile
->obfd
;
3091 struct dwarf2_cu
*cu
;
3092 unsigned int offset
;
3093 gdb_byte
*info_ptr
, *beg_of_comp_unit
;
3094 struct cleanup
*back_to
, *free_cu_cleanup
;
3095 struct attribute
*attr
;
3098 gdb_assert (! per_cu
->from_debug_types
);
3100 /* Set local variables from the partial symbol table info. */
3101 offset
= per_cu
->offset
;
3103 info_ptr
= dwarf2_per_objfile
->info
.buffer
+ offset
;
3104 beg_of_comp_unit
= info_ptr
;
3106 cu
= alloc_one_comp_unit (objfile
);
3108 /* If an error occurs while loading, release our storage. */
3109 free_cu_cleanup
= make_cleanup (free_one_comp_unit
, cu
);
3111 /* Read in the comp_unit header. */
3112 info_ptr
= read_comp_unit_head (&cu
->header
, info_ptr
, abfd
);
3114 /* Complete the cu_header. */
3115 cu
->header
.offset
= offset
;
3116 cu
->header
.first_die_offset
= info_ptr
- beg_of_comp_unit
;
3118 /* Read the abbrevs for this compilation unit. */
3119 dwarf2_read_abbrevs (abfd
, cu
);
3120 back_to
= make_cleanup (dwarf2_free_abbrev_table
, cu
);
3122 /* Link this compilation unit into the compilation unit tree. */
3124 cu
->per_cu
= per_cu
;
3125 cu
->type_hash
= per_cu
->type_hash
;
3127 cu
->dies
= read_comp_unit (info_ptr
, cu
);
3129 /* We try not to read any attributes in this function, because not
3130 all objfiles needed for references have been loaded yet, and symbol
3131 table processing isn't initialized. But we have to set the CU language,
3132 or we won't be able to build types correctly. */
3133 attr
= dwarf2_attr (cu
->dies
, DW_AT_language
, cu
);
3135 set_cu_language (DW_UNSND (attr
), cu
);
3137 set_cu_language (language_minimal
, cu
);
3139 /* Link this CU into read_in_chain. */
3140 per_cu
->cu
->read_in_chain
= dwarf2_per_objfile
->read_in_chain
;
3141 dwarf2_per_objfile
->read_in_chain
= per_cu
;
3143 do_cleanups (back_to
);
3145 /* We've successfully allocated this compilation unit. Let our caller
3146 clean it up when finished with it. */
3147 discard_cleanups (free_cu_cleanup
);
3150 /* Generate full symbol information for PST and CU, whose DIEs have
3151 already been loaded into memory. */
3154 process_full_comp_unit (struct dwarf2_per_cu_data
*per_cu
)
3156 struct partial_symtab
*pst
= per_cu
->psymtab
;
3157 struct dwarf2_cu
*cu
= per_cu
->cu
;
3158 struct objfile
*objfile
= pst
->objfile
;
3159 bfd
*abfd
= objfile
->obfd
;
3160 CORE_ADDR lowpc
, highpc
;
3161 struct symtab
*symtab
;
3162 struct cleanup
*back_to
;
3165 baseaddr
= ANOFFSET (objfile
->section_offsets
, SECT_OFF_TEXT (objfile
));
3168 back_to
= make_cleanup (really_free_pendings
, NULL
);
3170 cu
->list_in_scope
= &file_symbols
;
3172 dwarf2_find_base_address (cu
->dies
, cu
);
3174 /* Do line number decoding in read_file_scope () */
3175 process_die (cu
->dies
, cu
);
3177 /* Some compilers don't define a DW_AT_high_pc attribute for the
3178 compilation unit. If the DW_AT_high_pc is missing, synthesize
3179 it, by scanning the DIE's below the compilation unit. */
3180 get_scope_pc_bounds (cu
->dies
, &lowpc
, &highpc
, cu
);
3182 symtab
= end_symtab (highpc
+ baseaddr
, objfile
, SECT_OFF_TEXT (objfile
));
3184 /* Set symtab language to language from DW_AT_language.
3185 If the compilation is from a C file generated by language preprocessors,
3186 do not set the language if it was already deduced by start_subfile. */
3188 && !(cu
->language
== language_c
&& symtab
->language
!= language_c
))
3190 symtab
->language
= cu
->language
;
3192 pst
->symtab
= symtab
;
3195 do_cleanups (back_to
);
3198 /* Process a die and its children. */
3201 process_die (struct die_info
*die
, struct dwarf2_cu
*cu
)
3205 case DW_TAG_padding
:
3207 case DW_TAG_compile_unit
:
3208 read_file_scope (die
, cu
);
3210 case DW_TAG_type_unit
:
3211 read_type_unit_scope (die
, cu
);
3213 case DW_TAG_subprogram
:
3214 case DW_TAG_inlined_subroutine
:
3215 read_func_scope (die
, cu
);
3217 case DW_TAG_lexical_block
:
3218 case DW_TAG_try_block
:
3219 case DW_TAG_catch_block
:
3220 read_lexical_block_scope (die
, cu
);
3222 case DW_TAG_class_type
:
3223 case DW_TAG_interface_type
:
3224 case DW_TAG_structure_type
:
3225 case DW_TAG_union_type
:
3226 process_structure_scope (die
, cu
);
3228 case DW_TAG_enumeration_type
:
3229 process_enumeration_scope (die
, cu
);
3232 /* These dies have a type, but processing them does not create
3233 a symbol or recurse to process the children. Therefore we can
3234 read them on-demand through read_type_die. */
3235 case DW_TAG_subroutine_type
:
3236 case DW_TAG_set_type
:
3237 case DW_TAG_array_type
:
3238 case DW_TAG_pointer_type
:
3239 case DW_TAG_ptr_to_member_type
:
3240 case DW_TAG_reference_type
:
3241 case DW_TAG_string_type
:
3244 case DW_TAG_base_type
:
3245 case DW_TAG_subrange_type
:
3246 case DW_TAG_typedef
:
3247 /* Add a typedef symbol for the type definition, if it has a
3249 new_symbol (die
, read_type_die (die
, cu
), cu
);
3251 case DW_TAG_common_block
:
3252 read_common_block (die
, cu
);
3254 case DW_TAG_common_inclusion
:
3256 case DW_TAG_namespace
:
3257 processing_has_namespace_info
= 1;
3258 read_namespace (die
, cu
);
3261 read_module (die
, cu
);
3263 case DW_TAG_imported_declaration
:
3264 case DW_TAG_imported_module
:
3265 processing_has_namespace_info
= 1;
3266 if (die
->child
!= NULL
&& (die
->tag
== DW_TAG_imported_declaration
3267 || cu
->language
!= language_fortran
))
3268 complaint (&symfile_complaints
, _("Tag '%s' has unexpected children"),
3269 dwarf_tag_name (die
->tag
));
3270 read_import_statement (die
, cu
);
3273 new_symbol (die
, NULL
, cu
);
3278 /* A helper function for dwarf2_compute_name which determines whether DIE
3279 needs to have the name of the scope prepended to the name listed in the
3283 die_needs_namespace (struct die_info
*die
, struct dwarf2_cu
*cu
)
3287 case DW_TAG_namespace
:
3288 case DW_TAG_typedef
:
3289 case DW_TAG_class_type
:
3290 case DW_TAG_interface_type
:
3291 case DW_TAG_structure_type
:
3292 case DW_TAG_union_type
:
3293 case DW_TAG_enumeration_type
:
3294 case DW_TAG_enumerator
:
3295 case DW_TAG_subprogram
:
3299 case DW_TAG_variable
:
3300 /* We only need to prefix "globally" visible variables. These include
3301 any variable marked with DW_AT_external or any variable that
3302 lives in a namespace. [Variables in anonymous namespaces
3303 require prefixing, but they are not DW_AT_external.] */
3305 if (dwarf2_attr (die
, DW_AT_specification
, cu
))
3307 struct dwarf2_cu
*spec_cu
= cu
;
3308 return die_needs_namespace (die_specification (die
, &spec_cu
),
3312 if (dwarf2_attr (die
, DW_AT_external
, cu
)
3313 || die
->parent
->tag
== DW_TAG_namespace
)
3323 /* Compute the fully qualified name of DIE in CU. If PHYSNAME is nonzero,
3324 compute the physname for the object, which include a method's
3325 formal parameters (C++/Java) and return type (Java).
3327 For Ada, return the DIE's linkage name rather than the fully qualified
3328 name. PHYSNAME is ignored..
3330 The result is allocated on the objfile_obstack and canonicalized. */
3333 dwarf2_compute_name (char *name
, struct die_info
*die
, struct dwarf2_cu
*cu
,
3337 name
= dwarf2_name (die
, cu
);
3339 /* These are the only languages we know how to qualify names in. */
3341 && (cu
->language
== language_cplus
|| cu
->language
== language_java
))
3343 if (die_needs_namespace (die
, cu
))
3347 struct ui_file
*buf
;
3349 prefix
= determine_prefix (die
, cu
);
3350 buf
= mem_fileopen ();
3351 if (*prefix
!= '\0')
3353 char *prefixed_name
= typename_concat (NULL
, prefix
, name
, cu
);
3354 fputs_unfiltered (prefixed_name
, buf
);
3355 xfree (prefixed_name
);
3358 fputs_unfiltered (name
? name
: "", buf
);
3360 /* For Java and C++ methods, append formal parameter type
3361 information, if PHYSNAME. */
3363 if (physname
&& die
->tag
== DW_TAG_subprogram
3364 && (cu
->language
== language_cplus
3365 || cu
->language
== language_java
))
3367 struct type
*type
= read_type_die (die
, cu
);
3369 c_type_print_args (type
, buf
, 0, cu
->language
);
3371 if (cu
->language
== language_java
)
3373 /* For java, we must append the return type to method
3375 if (die
->tag
== DW_TAG_subprogram
)
3376 java_print_type (TYPE_TARGET_TYPE (type
), "", buf
,
3379 else if (cu
->language
== language_cplus
)
3381 if (TYPE_NFIELDS (type
) > 0
3382 && TYPE_FIELD_ARTIFICIAL (type
, 0)
3383 && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type
, 0))))
3384 fputs_unfiltered (" const", buf
);
3388 name
= ui_file_obsavestring (buf
, &cu
->objfile
->objfile_obstack
,
3390 ui_file_delete (buf
);
3392 if (cu
->language
== language_cplus
)
3395 = dwarf2_canonicalize_name (name
, cu
,
3396 &cu
->objfile
->objfile_obstack
);
3402 else if (cu
->language
== language_ada
)
3404 /* For Ada unit, we prefer the linkage name over the name, as
3405 the former contains the exported name, which the user expects
3406 to be able to reference. Ideally, we want the user to be able
3407 to reference this entity using either natural or linkage name,
3408 but we haven't started looking at this enhancement yet. */
3409 struct attribute
*attr
;
3411 attr
= dwarf2_attr (die
, DW_AT_MIPS_linkage_name
, cu
);
3412 if (attr
&& DW_STRING (attr
))
3413 name
= DW_STRING (attr
);
3419 /* Return the fully qualified name of DIE, based on its DW_AT_name.
3420 If scope qualifiers are appropriate they will be added. The result
3421 will be allocated on the objfile_obstack, or NULL if the DIE does
3422 not have a name. NAME may either be from a previous call to
3423 dwarf2_name or NULL.
3425 The output string will be canonicalized (if C++/Java). */
3428 dwarf2_full_name (char *name
, struct die_info
*die
, struct dwarf2_cu
*cu
)
3430 return dwarf2_compute_name (name
, die
, cu
, 0);
3433 /* Construct a physname for the given DIE in CU. NAME may either be
3434 from a previous call to dwarf2_name or NULL. The result will be
3435 allocated on the objfile_objstack or NULL if the DIE does not have a
3438 The output string will be canonicalized (if C++/Java). */
3441 dwarf2_physname (char *name
, struct die_info
*die
, struct dwarf2_cu
*cu
)
3443 return dwarf2_compute_name (name
, die
, cu
, 1);
3446 /* Read the import statement specified by the given die and record it. */
3449 read_import_statement (struct die_info
*die
, struct dwarf2_cu
*cu
)
3451 struct attribute
*import_attr
;
3452 struct die_info
*imported_die
;
3453 struct dwarf2_cu
*imported_cu
;
3454 const char *imported_name
;
3455 const char *imported_name_prefix
;
3458 const char *import_prefix
;
3459 char *canonical_name
;
3461 import_attr
= dwarf2_attr (die
, DW_AT_import
, cu
);
3462 if (import_attr
== NULL
)
3464 complaint (&symfile_complaints
, _("Tag '%s' has no DW_AT_import"),
3465 dwarf_tag_name (die
->tag
));
3470 imported_die
= follow_die_ref_or_sig (die
, import_attr
, &imported_cu
);
3471 imported_name
= dwarf2_name (imported_die
, imported_cu
);
3472 if (imported_name
== NULL
)
3474 /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
3476 The import in the following code:
3490 <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
3491 <52> DW_AT_decl_file : 1
3492 <53> DW_AT_decl_line : 6
3493 <54> DW_AT_import : <0x75>
3494 <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
3496 <5b> DW_AT_decl_file : 1
3497 <5c> DW_AT_decl_line : 2
3498 <5d> DW_AT_type : <0x6e>
3500 <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
3501 <76> DW_AT_byte_size : 4
3502 <77> DW_AT_encoding : 5 (signed)
3504 imports the wrong die ( 0x75 instead of 0x58 ).
3505 This case will be ignored until the gcc bug is fixed. */
3509 /* Figure out the local name after import. */
3510 import_alias
= dwarf2_name (die
, cu
);
3512 /* Figure out where the statement is being imported to. */
3513 import_prefix
= determine_prefix (die
, cu
);
3515 /* Figure out what the scope of the imported die is and prepend it
3516 to the name of the imported die. */
3517 imported_name_prefix
= determine_prefix (imported_die
, imported_cu
);
3519 if (strlen (imported_name_prefix
) > 0)
3521 canonical_name
= alloca (strlen (imported_name_prefix
)
3522 + 2 + strlen (imported_name
) + 1);
3523 strcpy (canonical_name
, imported_name_prefix
);
3524 strcat (canonical_name
, "::");
3525 strcat (canonical_name
, imported_name
);
3529 canonical_name
= alloca (strlen (imported_name
) + 1);
3530 strcpy (canonical_name
, imported_name
);
3533 using_directives
= cp_add_using (import_prefix
,
3540 initialize_cu_func_list (struct dwarf2_cu
*cu
)
3542 cu
->first_fn
= cu
->last_fn
= cu
->cached_fn
= NULL
;
3546 free_cu_line_header (void *arg
)
3548 struct dwarf2_cu
*cu
= arg
;
3550 free_line_header (cu
->line_header
);
3551 cu
->line_header
= NULL
;
3555 read_file_scope (struct die_info
*die
, struct dwarf2_cu
*cu
)
3557 struct objfile
*objfile
= cu
->objfile
;
3558 struct comp_unit_head
*cu_header
= &cu
->header
;
3559 struct cleanup
*back_to
= make_cleanup (null_cleanup
, 0);
3560 CORE_ADDR lowpc
= ((CORE_ADDR
) -1);
3561 CORE_ADDR highpc
= ((CORE_ADDR
) 0);
3562 struct attribute
*attr
;
3564 char *comp_dir
= NULL
;
3565 struct die_info
*child_die
;
3566 bfd
*abfd
= objfile
->obfd
;
3567 struct line_header
*line_header
= 0;
3570 baseaddr
= ANOFFSET (objfile
->section_offsets
, SECT_OFF_TEXT (objfile
));
3572 get_scope_pc_bounds (die
, &lowpc
, &highpc
, cu
);
3574 /* If we didn't find a lowpc, set it to highpc to avoid complaints
3575 from finish_block. */
3576 if (lowpc
== ((CORE_ADDR
) -1))
3581 /* Find the filename. Do not use dwarf2_name here, since the filename
3582 is not a source language identifier. */
3583 attr
= dwarf2_attr (die
, DW_AT_name
, cu
);
3586 name
= DW_STRING (attr
);
3589 attr
= dwarf2_attr (die
, DW_AT_comp_dir
, cu
);
3591 comp_dir
= DW_STRING (attr
);
3592 else if (name
!= NULL
&& IS_ABSOLUTE_PATH (name
))
3594 comp_dir
= ldirname (name
);
3595 if (comp_dir
!= NULL
)
3596 make_cleanup (xfree
, comp_dir
);
3598 if (comp_dir
!= NULL
)
3600 /* Irix 6.2 native cc prepends <machine>.: to the compilation
3601 directory, get rid of it. */
3602 char *cp
= strchr (comp_dir
, ':');
3604 if (cp
&& cp
!= comp_dir
&& cp
[-1] == '.' && cp
[1] == '/')
3611 attr
= dwarf2_attr (die
, DW_AT_language
, cu
);
3614 set_cu_language (DW_UNSND (attr
), cu
);
3617 attr
= dwarf2_attr (die
, DW_AT_producer
, cu
);
3619 cu
->producer
= DW_STRING (attr
);
3621 /* We assume that we're processing GCC output. */
3622 processing_gcc_compilation
= 2;
3624 processing_has_namespace_info
= 0;
3626 start_symtab (name
, comp_dir
, lowpc
);
3627 record_debugformat ("DWARF 2");
3628 record_producer (cu
->producer
);
3630 initialize_cu_func_list (cu
);
3632 /* Decode line number information if present. We do this before
3633 processing child DIEs, so that the line header table is available
3634 for DW_AT_decl_file. */
3635 attr
= dwarf2_attr (die
, DW_AT_stmt_list
, cu
);
3638 unsigned int line_offset
= DW_UNSND (attr
);
3639 line_header
= dwarf_decode_line_header (line_offset
, abfd
, cu
);
3642 cu
->line_header
= line_header
;
3643 make_cleanup (free_cu_line_header
, cu
);
3644 dwarf_decode_lines (line_header
, comp_dir
, abfd
, cu
, NULL
);
3648 /* Process all dies in compilation unit. */
3649 if (die
->child
!= NULL
)
3651 child_die
= die
->child
;
3652 while (child_die
&& child_die
->tag
)
3654 process_die (child_die
, cu
);
3655 child_die
= sibling_die (child_die
);
3659 /* Decode macro information, if present. Dwarf 2 macro information
3660 refers to information in the line number info statement program
3661 header, so we can only read it if we've read the header
3663 attr
= dwarf2_attr (die
, DW_AT_macro_info
, cu
);
3664 if (attr
&& line_header
)
3666 unsigned int macro_offset
= DW_UNSND (attr
);
3667 dwarf_decode_macros (line_header
, macro_offset
,
3668 comp_dir
, abfd
, cu
);
3670 do_cleanups (back_to
);
3673 /* For TUs we want to skip the first top level sibling if it's not the
3674 actual type being defined by this TU. In this case the first top
3675 level sibling is there to provide context only. */
3678 read_type_unit_scope (struct die_info
*die
, struct dwarf2_cu
*cu
)
3680 struct objfile
*objfile
= cu
->objfile
;
3681 struct cleanup
*back_to
= make_cleanup (null_cleanup
, 0);
3683 struct attribute
*attr
;
3685 char *comp_dir
= NULL
;
3686 struct die_info
*child_die
;
3687 bfd
*abfd
= objfile
->obfd
;
3688 struct line_header
*line_header
= 0;
3690 /* start_symtab needs a low pc, but we don't really have one.
3691 Do what read_file_scope would do in the absence of such info. */
3692 lowpc
= ANOFFSET (objfile
->section_offsets
, SECT_OFF_TEXT (objfile
));
3694 /* Find the filename. Do not use dwarf2_name here, since the filename
3695 is not a source language identifier. */
3696 attr
= dwarf2_attr (die
, DW_AT_name
, cu
);
3698 name
= DW_STRING (attr
);
3700 attr
= dwarf2_attr (die
, DW_AT_comp_dir
, cu
);
3702 comp_dir
= DW_STRING (attr
);
3703 else if (name
!= NULL
&& IS_ABSOLUTE_PATH (name
))
3705 comp_dir
= ldirname (name
);
3706 if (comp_dir
!= NULL
)
3707 make_cleanup (xfree
, comp_dir
);
3713 attr
= dwarf2_attr (die
, DW_AT_language
, cu
);
3715 set_cu_language (DW_UNSND (attr
), cu
);
3717 /* This isn't technically needed today. It is done for symmetry
3718 with read_file_scope. */
3719 attr
= dwarf2_attr (die
, DW_AT_producer
, cu
);
3721 cu
->producer
= DW_STRING (attr
);
3723 /* We assume that we're processing GCC output. */
3724 processing_gcc_compilation
= 2;
3726 processing_has_namespace_info
= 0;
3728 start_symtab (name
, comp_dir
, lowpc
);
3729 record_debugformat ("DWARF 2");
3730 record_producer (cu
->producer
);
3732 /* Process the dies in the type unit. */
3733 if (die
->child
== NULL
)
3735 dump_die_for_error (die
);
3736 error (_("Dwarf Error: Missing children for type unit [in module %s]"),
3737 bfd_get_filename (abfd
));
3740 child_die
= die
->child
;
3742 while (child_die
&& child_die
->tag
)
3744 process_die (child_die
, cu
);
3746 child_die
= sibling_die (child_die
);
3749 do_cleanups (back_to
);
3753 add_to_cu_func_list (const char *name
, CORE_ADDR lowpc
, CORE_ADDR highpc
,
3754 struct dwarf2_cu
*cu
)
3756 struct function_range
*thisfn
;
3758 thisfn
= (struct function_range
*)
3759 obstack_alloc (&cu
->comp_unit_obstack
, sizeof (struct function_range
));
3760 thisfn
->name
= name
;
3761 thisfn
->lowpc
= lowpc
;
3762 thisfn
->highpc
= highpc
;
3763 thisfn
->seen_line
= 0;
3764 thisfn
->next
= NULL
;
3766 if (cu
->last_fn
== NULL
)
3767 cu
->first_fn
= thisfn
;
3769 cu
->last_fn
->next
= thisfn
;
3771 cu
->last_fn
= thisfn
;
3774 /* qsort helper for inherit_abstract_dies. */
3777 unsigned_int_compar (const void *ap
, const void *bp
)
3779 unsigned int a
= *(unsigned int *) ap
;
3780 unsigned int b
= *(unsigned int *) bp
;
3782 return (a
> b
) - (b
> a
);
3785 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
3786 Inherit only the children of the DW_AT_abstract_origin DIE not being already
3787 referenced by DW_AT_abstract_origin from the children of the current DIE. */
3790 inherit_abstract_dies (struct die_info
*die
, struct dwarf2_cu
*cu
)
3792 struct die_info
*child_die
;
3793 unsigned die_children_count
;
3794 /* CU offsets which were referenced by children of the current DIE. */
3796 unsigned *offsets_end
, *offsetp
;
3797 /* Parent of DIE - referenced by DW_AT_abstract_origin. */
3798 struct die_info
*origin_die
;
3799 /* Iterator of the ORIGIN_DIE children. */
3800 struct die_info
*origin_child_die
;
3801 struct cleanup
*cleanups
;
3802 struct attribute
*attr
;
3804 attr
= dwarf2_attr (die
, DW_AT_abstract_origin
, cu
);
3808 origin_die
= follow_die_ref (die
, attr
, &cu
);
3809 if (die
->tag
!= origin_die
->tag
3810 && !(die
->tag
== DW_TAG_inlined_subroutine
3811 && origin_die
->tag
== DW_TAG_subprogram
))
3812 complaint (&symfile_complaints
,
3813 _("DIE 0x%x and its abstract origin 0x%x have different tags"),
3814 die
->offset
, origin_die
->offset
);
3816 child_die
= die
->child
;
3817 die_children_count
= 0;
3818 while (child_die
&& child_die
->tag
)
3820 child_die
= sibling_die (child_die
);
3821 die_children_count
++;
3823 offsets
= xmalloc (sizeof (*offsets
) * die_children_count
);
3824 cleanups
= make_cleanup (xfree
, offsets
);
3826 offsets_end
= offsets
;
3827 child_die
= die
->child
;
3828 while (child_die
&& child_die
->tag
)
3830 /* For each CHILD_DIE, find the corresponding child of
3831 ORIGIN_DIE. If there is more than one layer of
3832 DW_AT_abstract_origin, follow them all; there shouldn't be,
3833 but GCC versions at least through 4.4 generate this (GCC PR
3835 struct die_info
*child_origin_die
= child_die
;
3838 attr
= dwarf2_attr (child_origin_die
, DW_AT_abstract_origin
, cu
);
3841 child_origin_die
= follow_die_ref (child_origin_die
, attr
, &cu
);
3844 /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
3845 counterpart may exist. */
3846 if (child_origin_die
!= child_die
)
3848 if (child_die
->tag
!= child_origin_die
->tag
3849 && !(child_die
->tag
== DW_TAG_inlined_subroutine
3850 && child_origin_die
->tag
== DW_TAG_subprogram
))
3851 complaint (&symfile_complaints
,
3852 _("Child DIE 0x%x and its abstract origin 0x%x have "
3853 "different tags"), child_die
->offset
,
3854 child_origin_die
->offset
);
3855 if (child_origin_die
->parent
!= origin_die
)
3856 complaint (&symfile_complaints
,
3857 _("Child DIE 0x%x and its abstract origin 0x%x have "
3858 "different parents"), child_die
->offset
,
3859 child_origin_die
->offset
);
3861 *offsets_end
++ = child_origin_die
->offset
;
3863 child_die
= sibling_die (child_die
);
3865 qsort (offsets
, offsets_end
- offsets
, sizeof (*offsets
),
3866 unsigned_int_compar
);
3867 for (offsetp
= offsets
+ 1; offsetp
< offsets_end
; offsetp
++)
3868 if (offsetp
[-1] == *offsetp
)
3869 complaint (&symfile_complaints
, _("Multiple children of DIE 0x%x refer "
3870 "to DIE 0x%x as their abstract origin"),
3871 die
->offset
, *offsetp
);
3874 origin_child_die
= origin_die
->child
;
3875 while (origin_child_die
&& origin_child_die
->tag
)
3877 /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children? */
3878 while (offsetp
< offsets_end
&& *offsetp
< origin_child_die
->offset
)
3880 if (offsetp
>= offsets_end
|| *offsetp
> origin_child_die
->offset
)
3882 /* Found that ORIGIN_CHILD_DIE is really not referenced. */
3883 process_die (origin_child_die
, cu
);
3885 origin_child_die
= sibling_die (origin_child_die
);
3888 do_cleanups (cleanups
);
3892 read_func_scope (struct die_info
*die
, struct dwarf2_cu
*cu
)
3894 struct objfile
*objfile
= cu
->objfile
;
3895 struct context_stack
*new;
3898 struct die_info
*child_die
;
3899 struct attribute
*attr
, *call_line
, *call_file
;
3902 struct block
*block
;
3903 int inlined_func
= (die
->tag
== DW_TAG_inlined_subroutine
);
3907 /* If we do not have call site information, we can't show the
3908 caller of this inlined function. That's too confusing, so
3909 only use the scope for local variables. */
3910 call_line
= dwarf2_attr (die
, DW_AT_call_line
, cu
);
3911 call_file
= dwarf2_attr (die
, DW_AT_call_file
, cu
);
3912 if (call_line
== NULL
|| call_file
== NULL
)
3914 read_lexical_block_scope (die
, cu
);
3919 baseaddr
= ANOFFSET (objfile
->section_offsets
, SECT_OFF_TEXT (objfile
));
3921 name
= dwarf2_name (die
, cu
);
3923 /* Ignore functions with missing or empty names and functions with
3924 missing or invalid low and high pc attributes. */
3925 if (name
== NULL
|| !dwarf2_get_pc_bounds (die
, &lowpc
, &highpc
, cu
, NULL
))
3931 /* Record the function range for dwarf_decode_lines. */
3932 add_to_cu_func_list (name
, lowpc
, highpc
, cu
);
3934 new = push_context (0, lowpc
);
3935 new->name
= new_symbol (die
, read_type_die (die
, cu
), cu
);
3937 /* If there is a location expression for DW_AT_frame_base, record
3939 attr
= dwarf2_attr (die
, DW_AT_frame_base
, cu
);
3941 /* FIXME: cagney/2004-01-26: The DW_AT_frame_base's location
3942 expression is being recorded directly in the function's symbol
3943 and not in a separate frame-base object. I guess this hack is
3944 to avoid adding some sort of frame-base adjunct/annex to the
3945 function's symbol :-(. The problem with doing this is that it
3946 results in a function symbol with a location expression that
3947 has nothing to do with the location of the function, ouch! The
3948 relationship should be: a function's symbol has-a frame base; a
3949 frame-base has-a location expression. */
3950 dwarf2_symbol_mark_computed (attr
, new->name
, cu
);
3952 cu
->list_in_scope
= &local_symbols
;
3954 if (die
->child
!= NULL
)
3956 child_die
= die
->child
;
3957 while (child_die
&& child_die
->tag
)
3959 process_die (child_die
, cu
);
3960 child_die
= sibling_die (child_die
);
3964 inherit_abstract_dies (die
, cu
);
3966 new = pop_context ();
3967 /* Make a block for the local symbols within. */
3968 block
= finish_block (new->name
, &local_symbols
, new->old_blocks
,
3969 lowpc
, highpc
, objfile
);
3971 /* For C++, set the block's scope. */
3972 if (cu
->language
== language_cplus
)
3973 cp_set_block_scope (new->name
, block
, &objfile
->objfile_obstack
,
3974 determine_prefix (die
, cu
),
3975 processing_has_namespace_info
);
3977 /* If we have address ranges, record them. */
3978 dwarf2_record_block_ranges (die
, block
, baseaddr
, cu
);
3980 /* In C++, we can have functions nested inside functions (e.g., when
3981 a function declares a class that has methods). This means that
3982 when we finish processing a function scope, we may need to go
3983 back to building a containing block's symbol lists. */
3984 local_symbols
= new->locals
;
3985 param_symbols
= new->params
;
3986 using_directives
= new->using_directives
;
3988 /* If we've finished processing a top-level function, subsequent
3989 symbols go in the file symbol list. */
3990 if (outermost_context_p ())
3991 cu
->list_in_scope
= &file_symbols
;
3994 /* Process all the DIES contained within a lexical block scope. Start
3995 a new scope, process the dies, and then close the scope. */
3998 read_lexical_block_scope (struct die_info
*die
, struct dwarf2_cu
*cu
)
4000 struct objfile
*objfile
= cu
->objfile
;
4001 struct context_stack
*new;
4002 CORE_ADDR lowpc
, highpc
;
4003 struct die_info
*child_die
;
4006 baseaddr
= ANOFFSET (objfile
->section_offsets
, SECT_OFF_TEXT (objfile
));
4008 /* Ignore blocks with missing or invalid low and high pc attributes. */
4009 /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
4010 as multiple lexical blocks? Handling children in a sane way would
4011 be nasty. Might be easier to properly extend generic blocks to
4013 if (!dwarf2_get_pc_bounds (die
, &lowpc
, &highpc
, cu
, NULL
))
4018 push_context (0, lowpc
);
4019 if (die
->child
!= NULL
)
4021 child_die
= die
->child
;
4022 while (child_die
&& child_die
->tag
)
4024 process_die (child_die
, cu
);
4025 child_die
= sibling_die (child_die
);
4028 new = pop_context ();
4030 if (local_symbols
!= NULL
|| using_directives
!= NULL
)
4033 = finish_block (0, &local_symbols
, new->old_blocks
, new->start_addr
,
4036 /* Note that recording ranges after traversing children, as we
4037 do here, means that recording a parent's ranges entails
4038 walking across all its children's ranges as they appear in
4039 the address map, which is quadratic behavior.
4041 It would be nicer to record the parent's ranges before
4042 traversing its children, simply overriding whatever you find
4043 there. But since we don't even decide whether to create a
4044 block until after we've traversed its children, that's hard
4046 dwarf2_record_block_ranges (die
, block
, baseaddr
, cu
);
4048 local_symbols
= new->locals
;
4049 using_directives
= new->using_directives
;
4052 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
4053 Return 1 if the attributes are present and valid, otherwise, return 0.
4054 If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'. */
4057 dwarf2_ranges_read (unsigned offset
, CORE_ADDR
*low_return
,
4058 CORE_ADDR
*high_return
, struct dwarf2_cu
*cu
,
4059 struct partial_symtab
*ranges_pst
)
4061 struct objfile
*objfile
= cu
->objfile
;
4062 struct comp_unit_head
*cu_header
= &cu
->header
;
4063 bfd
*obfd
= objfile
->obfd
;
4064 unsigned int addr_size
= cu_header
->addr_size
;
4065 CORE_ADDR mask
= ~(~(CORE_ADDR
)1 << (addr_size
* 8 - 1));
4066 /* Base address selection entry. */
4077 found_base
= cu
->base_known
;
4078 base
= cu
->base_address
;
4080 if (offset
>= dwarf2_per_objfile
->ranges
.size
)
4082 complaint (&symfile_complaints
,
4083 _("Offset %d out of bounds for DW_AT_ranges attribute"),
4087 buffer
= dwarf2_per_objfile
->ranges
.buffer
+ offset
;
4089 /* Read in the largest possible address. */
4090 marker
= read_address (obfd
, buffer
, cu
, &dummy
);
4091 if ((marker
& mask
) == mask
)
4093 /* If we found the largest possible address, then
4094 read the base address. */
4095 base
= read_address (obfd
, buffer
+ addr_size
, cu
, &dummy
);
4096 buffer
+= 2 * addr_size
;
4097 offset
+= 2 * addr_size
;
4103 baseaddr
= ANOFFSET (objfile
->section_offsets
, SECT_OFF_TEXT (objfile
));
4107 CORE_ADDR range_beginning
, range_end
;
4109 range_beginning
= read_address (obfd
, buffer
, cu
, &dummy
);
4110 buffer
+= addr_size
;
4111 range_end
= read_address (obfd
, buffer
, cu
, &dummy
);
4112 buffer
+= addr_size
;
4113 offset
+= 2 * addr_size
;
4115 /* An end of list marker is a pair of zero addresses. */
4116 if (range_beginning
== 0 && range_end
== 0)
4117 /* Found the end of list entry. */
4120 /* Each base address selection entry is a pair of 2 values.
4121 The first is the largest possible address, the second is
4122 the base address. Check for a base address here. */
4123 if ((range_beginning
& mask
) == mask
)
4125 /* If we found the largest possible address, then
4126 read the base address. */
4127 base
= read_address (obfd
, buffer
+ addr_size
, cu
, &dummy
);
4134 /* We have no valid base address for the ranges
4136 complaint (&symfile_complaints
,
4137 _("Invalid .debug_ranges data (no base address)"));
4141 range_beginning
+= base
;
4144 if (ranges_pst
!= NULL
&& range_beginning
< range_end
)
4145 addrmap_set_empty (objfile
->psymtabs_addrmap
,
4146 range_beginning
+ baseaddr
, range_end
- 1 + baseaddr
,
4149 /* FIXME: This is recording everything as a low-high
4150 segment of consecutive addresses. We should have a
4151 data structure for discontiguous block ranges
4155 low
= range_beginning
;
4161 if (range_beginning
< low
)
4162 low
= range_beginning
;
4163 if (range_end
> high
)
4169 /* If the first entry is an end-of-list marker, the range
4170 describes an empty scope, i.e. no instructions. */
4176 *high_return
= high
;
4180 /* Get low and high pc attributes from a die. Return 1 if the attributes
4181 are present and valid, otherwise, return 0. Return -1 if the range is
4182 discontinuous, i.e. derived from DW_AT_ranges information. */
4184 dwarf2_get_pc_bounds (struct die_info
*die
, CORE_ADDR
*lowpc
,
4185 CORE_ADDR
*highpc
, struct dwarf2_cu
*cu
,
4186 struct partial_symtab
*pst
)
4188 struct attribute
*attr
;
4193 attr
= dwarf2_attr (die
, DW_AT_high_pc
, cu
);
4196 high
= DW_ADDR (attr
);
4197 attr
= dwarf2_attr (die
, DW_AT_low_pc
, cu
);
4199 low
= DW_ADDR (attr
);
4201 /* Found high w/o low attribute. */
4204 /* Found consecutive range of addresses. */
4209 attr
= dwarf2_attr (die
, DW_AT_ranges
, cu
);
4212 /* Value of the DW_AT_ranges attribute is the offset in the
4213 .debug_ranges section. */
4214 if (!dwarf2_ranges_read (DW_UNSND (attr
), &low
, &high
, cu
, pst
))
4216 /* Found discontinuous range of addresses. */
4224 /* When using the GNU linker, .gnu.linkonce. sections are used to
4225 eliminate duplicate copies of functions and vtables and such.
4226 The linker will arbitrarily choose one and discard the others.
4227 The AT_*_pc values for such functions refer to local labels in
4228 these sections. If the section from that file was discarded, the
4229 labels are not in the output, so the relocs get a value of 0.
4230 If this is a discarded function, mark the pc bounds as invalid,
4231 so that GDB will ignore it. */
4232 if (low
== 0 && !dwarf2_per_objfile
->has_section_at_zero
)
4240 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
4241 its low and high PC addresses. Do nothing if these addresses could not
4242 be determined. Otherwise, set LOWPC to the low address if it is smaller,
4243 and HIGHPC to the high address if greater than HIGHPC. */
4246 dwarf2_get_subprogram_pc_bounds (struct die_info
*die
,
4247 CORE_ADDR
*lowpc
, CORE_ADDR
*highpc
,
4248 struct dwarf2_cu
*cu
)
4250 CORE_ADDR low
, high
;
4251 struct die_info
*child
= die
->child
;
4253 if (dwarf2_get_pc_bounds (die
, &low
, &high
, cu
, NULL
))
4255 *lowpc
= min (*lowpc
, low
);
4256 *highpc
= max (*highpc
, high
);
4259 /* If the language does not allow nested subprograms (either inside
4260 subprograms or lexical blocks), we're done. */
4261 if (cu
->language
!= language_ada
)
4264 /* Check all the children of the given DIE. If it contains nested
4265 subprograms, then check their pc bounds. Likewise, we need to
4266 check lexical blocks as well, as they may also contain subprogram
4268 while (child
&& child
->tag
)
4270 if (child
->tag
== DW_TAG_subprogram
4271 || child
->tag
== DW_TAG_lexical_block
)
4272 dwarf2_get_subprogram_pc_bounds (child
, lowpc
, highpc
, cu
);
4273 child
= sibling_die (child
);
4277 /* Get the low and high pc's represented by the scope DIE, and store
4278 them in *LOWPC and *HIGHPC. If the correct values can't be
4279 determined, set *LOWPC to -1 and *HIGHPC to 0. */
4282 get_scope_pc_bounds (struct die_info
*die
,
4283 CORE_ADDR
*lowpc
, CORE_ADDR
*highpc
,
4284 struct dwarf2_cu
*cu
)
4286 CORE_ADDR best_low
= (CORE_ADDR
) -1;
4287 CORE_ADDR best_high
= (CORE_ADDR
) 0;
4288 CORE_ADDR current_low
, current_high
;
4290 if (dwarf2_get_pc_bounds (die
, ¤t_low
, ¤t_high
, cu
, NULL
))
4292 best_low
= current_low
;
4293 best_high
= current_high
;
4297 struct die_info
*child
= die
->child
;
4299 while (child
&& child
->tag
)
4301 switch (child
->tag
) {
4302 case DW_TAG_subprogram
:
4303 dwarf2_get_subprogram_pc_bounds (child
, &best_low
, &best_high
, cu
);
4305 case DW_TAG_namespace
:
4306 /* FIXME: carlton/2004-01-16: Should we do this for
4307 DW_TAG_class_type/DW_TAG_structure_type, too? I think
4308 that current GCC's always emit the DIEs corresponding
4309 to definitions of methods of classes as children of a
4310 DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
4311 the DIEs giving the declarations, which could be
4312 anywhere). But I don't see any reason why the
4313 standards says that they have to be there. */
4314 get_scope_pc_bounds (child
, ¤t_low
, ¤t_high
, cu
);
4316 if (current_low
!= ((CORE_ADDR
) -1))
4318 best_low
= min (best_low
, current_low
);
4319 best_high
= max (best_high
, current_high
);
4327 child
= sibling_die (child
);
4332 *highpc
= best_high
;
4335 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
4338 dwarf2_record_block_ranges (struct die_info
*die
, struct block
*block
,
4339 CORE_ADDR baseaddr
, struct dwarf2_cu
*cu
)
4341 struct attribute
*attr
;
4343 attr
= dwarf2_attr (die
, DW_AT_high_pc
, cu
);
4346 CORE_ADDR high
= DW_ADDR (attr
);
4347 attr
= dwarf2_attr (die
, DW_AT_low_pc
, cu
);
4350 CORE_ADDR low
= DW_ADDR (attr
);
4351 record_block_range (block
, baseaddr
+ low
, baseaddr
+ high
- 1);
4355 attr
= dwarf2_attr (die
, DW_AT_ranges
, cu
);
4358 bfd
*obfd
= cu
->objfile
->obfd
;
4360 /* The value of the DW_AT_ranges attribute is the offset of the
4361 address range list in the .debug_ranges section. */
4362 unsigned long offset
= DW_UNSND (attr
);
4363 gdb_byte
*buffer
= dwarf2_per_objfile
->ranges
.buffer
+ offset
;
4365 /* For some target architectures, but not others, the
4366 read_address function sign-extends the addresses it returns.
4367 To recognize base address selection entries, we need a
4369 unsigned int addr_size
= cu
->header
.addr_size
;
4370 CORE_ADDR base_select_mask
= ~(~(CORE_ADDR
)1 << (addr_size
* 8 - 1));
4372 /* The base address, to which the next pair is relative. Note
4373 that this 'base' is a DWARF concept: most entries in a range
4374 list are relative, to reduce the number of relocs against the
4375 debugging information. This is separate from this function's
4376 'baseaddr' argument, which GDB uses to relocate debugging
4377 information from a shared library based on the address at
4378 which the library was loaded. */
4379 CORE_ADDR base
= cu
->base_address
;
4380 int base_known
= cu
->base_known
;
4382 if (offset
>= dwarf2_per_objfile
->ranges
.size
)
4384 complaint (&symfile_complaints
,
4385 _("Offset %lu out of bounds for DW_AT_ranges attribute"),
4392 unsigned int bytes_read
;
4393 CORE_ADDR start
, end
;
4395 start
= read_address (obfd
, buffer
, cu
, &bytes_read
);
4396 buffer
+= bytes_read
;
4397 end
= read_address (obfd
, buffer
, cu
, &bytes_read
);
4398 buffer
+= bytes_read
;
4400 /* Did we find the end of the range list? */
4401 if (start
== 0 && end
== 0)
4404 /* Did we find a base address selection entry? */
4405 else if ((start
& base_select_mask
) == base_select_mask
)
4411 /* We found an ordinary address range. */
4416 complaint (&symfile_complaints
,
4417 _("Invalid .debug_ranges data (no base address)"));
4421 record_block_range (block
,
4422 baseaddr
+ base
+ start
,
4423 baseaddr
+ base
+ end
- 1);
4429 /* Add an aggregate field to the field list. */
4432 dwarf2_add_field (struct field_info
*fip
, struct die_info
*die
,
4433 struct dwarf2_cu
*cu
)
4435 struct objfile
*objfile
= cu
->objfile
;
4436 struct gdbarch
*gdbarch
= get_objfile_arch (objfile
);
4437 struct nextfield
*new_field
;
4438 struct attribute
*attr
;
4440 char *fieldname
= "";
4442 /* Allocate a new field list entry and link it in. */
4443 new_field
= (struct nextfield
*) xmalloc (sizeof (struct nextfield
));
4444 make_cleanup (xfree
, new_field
);
4445 memset (new_field
, 0, sizeof (struct nextfield
));
4447 if (die
->tag
== DW_TAG_inheritance
)
4449 new_field
->next
= fip
->baseclasses
;
4450 fip
->baseclasses
= new_field
;
4454 new_field
->next
= fip
->fields
;
4455 fip
->fields
= new_field
;
4459 /* Handle accessibility and virtuality of field.
4460 The default accessibility for members is public, the default
4461 accessibility for inheritance is private. */
4462 if (die
->tag
!= DW_TAG_inheritance
)
4463 new_field
->accessibility
= DW_ACCESS_public
;
4465 new_field
->accessibility
= DW_ACCESS_private
;
4466 new_field
->virtuality
= DW_VIRTUALITY_none
;
4468 attr
= dwarf2_attr (die
, DW_AT_accessibility
, cu
);
4470 new_field
->accessibility
= DW_UNSND (attr
);
4471 if (new_field
->accessibility
!= DW_ACCESS_public
)
4472 fip
->non_public_fields
= 1;
4473 attr
= dwarf2_attr (die
, DW_AT_virtuality
, cu
);
4475 new_field
->virtuality
= DW_UNSND (attr
);
4477 fp
= &new_field
->field
;
4479 if (die
->tag
== DW_TAG_member
&& ! die_is_declaration (die
, cu
))
4481 /* Data member other than a C++ static data member. */
4483 /* Get type of field. */
4484 fp
->type
= die_type (die
, cu
);
4486 SET_FIELD_BITPOS (*fp
, 0);
4488 /* Get bit size of field (zero if none). */
4489 attr
= dwarf2_attr (die
, DW_AT_bit_size
, cu
);
4492 FIELD_BITSIZE (*fp
) = DW_UNSND (attr
);
4496 FIELD_BITSIZE (*fp
) = 0;
4499 /* Get bit offset of field. */
4500 attr
= dwarf2_attr (die
, DW_AT_data_member_location
, cu
);
4503 int byte_offset
= 0;
4505 if (attr_form_is_section_offset (attr
))
4506 dwarf2_complex_location_expr_complaint ();
4507 else if (attr_form_is_constant (attr
))
4508 byte_offset
= dwarf2_get_attr_constant_value (attr
, 0);
4509 else if (attr_form_is_block (attr
))
4510 byte_offset
= decode_locdesc (DW_BLOCK (attr
), cu
);
4512 dwarf2_complex_location_expr_complaint ();
4514 SET_FIELD_BITPOS (*fp
, byte_offset
* bits_per_byte
);
4516 attr
= dwarf2_attr (die
, DW_AT_bit_offset
, cu
);
4519 if (gdbarch_bits_big_endian (gdbarch
))
4521 /* For big endian bits, the DW_AT_bit_offset gives the
4522 additional bit offset from the MSB of the containing
4523 anonymous object to the MSB of the field. We don't
4524 have to do anything special since we don't need to
4525 know the size of the anonymous object. */
4526 FIELD_BITPOS (*fp
) += DW_UNSND (attr
);
4530 /* For little endian bits, compute the bit offset to the
4531 MSB of the anonymous object, subtract off the number of
4532 bits from the MSB of the field to the MSB of the
4533 object, and then subtract off the number of bits of
4534 the field itself. The result is the bit offset of
4535 the LSB of the field. */
4537 int bit_offset
= DW_UNSND (attr
);
4539 attr
= dwarf2_attr (die
, DW_AT_byte_size
, cu
);
4542 /* The size of the anonymous object containing
4543 the bit field is explicit, so use the
4544 indicated size (in bytes). */
4545 anonymous_size
= DW_UNSND (attr
);
4549 /* The size of the anonymous object containing
4550 the bit field must be inferred from the type
4551 attribute of the data member containing the
4553 anonymous_size
= TYPE_LENGTH (fp
->type
);
4555 FIELD_BITPOS (*fp
) += anonymous_size
* bits_per_byte
4556 - bit_offset
- FIELD_BITSIZE (*fp
);
4560 /* Get name of field. */
4561 fieldname
= dwarf2_name (die
, cu
);
4562 if (fieldname
== NULL
)
4565 /* The name is already allocated along with this objfile, so we don't
4566 need to duplicate it for the type. */
4567 fp
->name
= fieldname
;
4569 /* Change accessibility for artificial fields (e.g. virtual table
4570 pointer or virtual base class pointer) to private. */
4571 if (dwarf2_attr (die
, DW_AT_artificial
, cu
))
4573 FIELD_ARTIFICIAL (*fp
) = 1;
4574 new_field
->accessibility
= DW_ACCESS_private
;
4575 fip
->non_public_fields
= 1;
4578 else if (die
->tag
== DW_TAG_member
|| die
->tag
== DW_TAG_variable
)
4580 /* C++ static member. */
4582 /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
4583 is a declaration, but all versions of G++ as of this writing
4584 (so through at least 3.2.1) incorrectly generate
4585 DW_TAG_variable tags. */
4589 /* Get name of field. */
4590 fieldname
= dwarf2_name (die
, cu
);
4591 if (fieldname
== NULL
)
4594 /* Get physical name. */
4595 physname
= (char *) dwarf2_physname (fieldname
, die
, cu
);
4597 /* The name is already allocated along with this objfile, so we don't
4598 need to duplicate it for the type. */
4599 SET_FIELD_PHYSNAME (*fp
, physname
? physname
: "");
4600 FIELD_TYPE (*fp
) = die_type (die
, cu
);
4601 FIELD_NAME (*fp
) = fieldname
;
4603 else if (die
->tag
== DW_TAG_inheritance
)
4605 /* C++ base class field. */
4606 attr
= dwarf2_attr (die
, DW_AT_data_member_location
, cu
);
4609 int byte_offset
= 0;
4611 if (attr_form_is_section_offset (attr
))
4612 dwarf2_complex_location_expr_complaint ();
4613 else if (attr_form_is_constant (attr
))
4614 byte_offset
= dwarf2_get_attr_constant_value (attr
, 0);
4615 else if (attr_form_is_block (attr
))
4616 byte_offset
= decode_locdesc (DW_BLOCK (attr
), cu
);
4618 dwarf2_complex_location_expr_complaint ();
4620 SET_FIELD_BITPOS (*fp
, byte_offset
* bits_per_byte
);
4622 FIELD_BITSIZE (*fp
) = 0;
4623 FIELD_TYPE (*fp
) = die_type (die
, cu
);
4624 FIELD_NAME (*fp
) = type_name_no_tag (fp
->type
);
4625 fip
->nbaseclasses
++;
4629 /* Create the vector of fields, and attach it to the type. */
4632 dwarf2_attach_fields_to_type (struct field_info
*fip
, struct type
*type
,
4633 struct dwarf2_cu
*cu
)
4635 int nfields
= fip
->nfields
;
4637 /* Record the field count, allocate space for the array of fields,
4638 and create blank accessibility bitfields if necessary. */
4639 TYPE_NFIELDS (type
) = nfields
;
4640 TYPE_FIELDS (type
) = (struct field
*)
4641 TYPE_ALLOC (type
, sizeof (struct field
) * nfields
);
4642 memset (TYPE_FIELDS (type
), 0, sizeof (struct field
) * nfields
);
4644 if (fip
->non_public_fields
&& cu
->language
!= language_ada
)
4646 ALLOCATE_CPLUS_STRUCT_TYPE (type
);
4648 TYPE_FIELD_PRIVATE_BITS (type
) =
4649 (B_TYPE
*) TYPE_ALLOC (type
, B_BYTES (nfields
));
4650 B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type
), nfields
);
4652 TYPE_FIELD_PROTECTED_BITS (type
) =
4653 (B_TYPE
*) TYPE_ALLOC (type
, B_BYTES (nfields
));
4654 B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type
), nfields
);
4656 TYPE_FIELD_IGNORE_BITS (type
) =
4657 (B_TYPE
*) TYPE_ALLOC (type
, B_BYTES (nfields
));
4658 B_CLRALL (TYPE_FIELD_IGNORE_BITS (type
), nfields
);
4661 /* If the type has baseclasses, allocate and clear a bit vector for
4662 TYPE_FIELD_VIRTUAL_BITS. */
4663 if (fip
->nbaseclasses
&& cu
->language
!= language_ada
)
4665 int num_bytes
= B_BYTES (fip
->nbaseclasses
);
4666 unsigned char *pointer
;
4668 ALLOCATE_CPLUS_STRUCT_TYPE (type
);
4669 pointer
= TYPE_ALLOC (type
, num_bytes
);
4670 TYPE_FIELD_VIRTUAL_BITS (type
) = pointer
;
4671 B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type
), fip
->nbaseclasses
);
4672 TYPE_N_BASECLASSES (type
) = fip
->nbaseclasses
;
4675 /* Copy the saved-up fields into the field vector. Start from the head
4676 of the list, adding to the tail of the field array, so that they end
4677 up in the same order in the array in which they were added to the list. */
4678 while (nfields
-- > 0)
4680 struct nextfield
*fieldp
;
4684 fieldp
= fip
->fields
;
4685 fip
->fields
= fieldp
->next
;
4689 fieldp
= fip
->baseclasses
;
4690 fip
->baseclasses
= fieldp
->next
;
4693 TYPE_FIELD (type
, nfields
) = fieldp
->field
;
4694 switch (fieldp
->accessibility
)
4696 case DW_ACCESS_private
:
4697 if (cu
->language
!= language_ada
)
4698 SET_TYPE_FIELD_PRIVATE (type
, nfields
);
4701 case DW_ACCESS_protected
:
4702 if (cu
->language
!= language_ada
)
4703 SET_TYPE_FIELD_PROTECTED (type
, nfields
);
4706 case DW_ACCESS_public
:
4710 /* Unknown accessibility. Complain and treat it as public. */
4712 complaint (&symfile_complaints
, _("unsupported accessibility %d"),
4713 fieldp
->accessibility
);
4717 if (nfields
< fip
->nbaseclasses
)
4719 switch (fieldp
->virtuality
)
4721 case DW_VIRTUALITY_virtual
:
4722 case DW_VIRTUALITY_pure_virtual
:
4723 if (cu
->language
== language_ada
)
4724 error ("unexpected virtuality in component of Ada type");
4725 SET_TYPE_FIELD_VIRTUAL (type
, nfields
);
4732 /* Add a member function to the proper fieldlist. */
4735 dwarf2_add_member_fn (struct field_info
*fip
, struct die_info
*die
,
4736 struct type
*type
, struct dwarf2_cu
*cu
)
4738 struct objfile
*objfile
= cu
->objfile
;
4739 struct attribute
*attr
;
4740 struct fnfieldlist
*flp
;
4742 struct fn_field
*fnp
;
4745 struct nextfnfield
*new_fnfield
;
4746 struct type
*this_type
;
4748 if (cu
->language
== language_ada
)
4749 error ("unexpected member function in Ada type");
4751 /* Get name of member function. */
4752 fieldname
= dwarf2_name (die
, cu
);
4753 if (fieldname
== NULL
)
4756 /* Get the mangled name. */
4757 physname
= (char *) dwarf2_physname (fieldname
, die
, cu
);
4759 /* Look up member function name in fieldlist. */
4760 for (i
= 0; i
< fip
->nfnfields
; i
++)
4762 if (strcmp (fip
->fnfieldlists
[i
].name
, fieldname
) == 0)
4766 /* Create new list element if necessary. */
4767 if (i
< fip
->nfnfields
)
4768 flp
= &fip
->fnfieldlists
[i
];
4771 if ((fip
->nfnfields
% DW_FIELD_ALLOC_CHUNK
) == 0)
4773 fip
->fnfieldlists
= (struct fnfieldlist
*)
4774 xrealloc (fip
->fnfieldlists
,
4775 (fip
->nfnfields
+ DW_FIELD_ALLOC_CHUNK
)
4776 * sizeof (struct fnfieldlist
));
4777 if (fip
->nfnfields
== 0)
4778 make_cleanup (free_current_contents
, &fip
->fnfieldlists
);
4780 flp
= &fip
->fnfieldlists
[fip
->nfnfields
];
4781 flp
->name
= fieldname
;
4787 /* Create a new member function field and chain it to the field list
4789 new_fnfield
= (struct nextfnfield
*) xmalloc (sizeof (struct nextfnfield
));
4790 make_cleanup (xfree
, new_fnfield
);
4791 memset (new_fnfield
, 0, sizeof (struct nextfnfield
));
4792 new_fnfield
->next
= flp
->head
;
4793 flp
->head
= new_fnfield
;
4796 /* Fill in the member function field info. */
4797 fnp
= &new_fnfield
->fnfield
;
4798 /* The name is already allocated along with this objfile, so we don't
4799 need to duplicate it for the type. */
4800 fnp
->physname
= physname
? physname
: "";
4801 fnp
->type
= alloc_type (objfile
);
4802 this_type
= read_type_die (die
, cu
);
4803 if (this_type
&& TYPE_CODE (this_type
) == TYPE_CODE_FUNC
)
4805 int nparams
= TYPE_NFIELDS (this_type
);
4807 /* TYPE is the domain of this method, and THIS_TYPE is the type
4808 of the method itself (TYPE_CODE_METHOD). */
4809 smash_to_method_type (fnp
->type
, type
,
4810 TYPE_TARGET_TYPE (this_type
),
4811 TYPE_FIELDS (this_type
),
4812 TYPE_NFIELDS (this_type
),
4813 TYPE_VARARGS (this_type
));
4815 /* Handle static member functions.
4816 Dwarf2 has no clean way to discern C++ static and non-static
4817 member functions. G++ helps GDB by marking the first
4818 parameter for non-static member functions (which is the
4819 this pointer) as artificial. We obtain this information
4820 from read_subroutine_type via TYPE_FIELD_ARTIFICIAL. */
4821 if (nparams
== 0 || TYPE_FIELD_ARTIFICIAL (this_type
, 0) == 0)
4822 fnp
->voffset
= VOFFSET_STATIC
;
4825 complaint (&symfile_complaints
, _("member function type missing for '%s'"),
4828 /* Get fcontext from DW_AT_containing_type if present. */
4829 if (dwarf2_attr (die
, DW_AT_containing_type
, cu
) != NULL
)
4830 fnp
->fcontext
= die_containing_type (die
, cu
);
4832 /* dwarf2 doesn't have stubbed physical names, so the setting of is_const
4833 and is_volatile is irrelevant, as it is needed by gdb_mangle_name only. */
4835 /* Get accessibility. */
4836 attr
= dwarf2_attr (die
, DW_AT_accessibility
, cu
);
4839 switch (DW_UNSND (attr
))
4841 case DW_ACCESS_private
:
4842 fnp
->is_private
= 1;
4844 case DW_ACCESS_protected
:
4845 fnp
->is_protected
= 1;
4850 /* Check for artificial methods. */
4851 attr
= dwarf2_attr (die
, DW_AT_artificial
, cu
);
4852 if (attr
&& DW_UNSND (attr
) != 0)
4853 fnp
->is_artificial
= 1;
4855 /* Get index in virtual function table if it is a virtual member
4856 function. For GCC, this is an offset in the appropriate
4857 virtual table, as specified by DW_AT_containing_type. For
4858 everyone else, it is an expression to be evaluated relative
4859 to the object address. */
4861 attr
= dwarf2_attr (die
, DW_AT_vtable_elem_location
, cu
);
4862 if (attr
&& fnp
->fcontext
)
4864 /* Support the .debug_loc offsets */
4865 if (attr_form_is_block (attr
))
4867 fnp
->voffset
= decode_locdesc (DW_BLOCK (attr
), cu
) + 2;
4869 else if (attr_form_is_section_offset (attr
))
4871 dwarf2_complex_location_expr_complaint ();
4875 dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
4881 /* We only support trivial expressions here. This hack will work
4882 for v3 classes, which always start with the vtable pointer. */
4883 if (attr_form_is_block (attr
) && DW_BLOCK (attr
)->size
> 0
4884 && DW_BLOCK (attr
)->data
[0] == DW_OP_deref
)
4886 struct dwarf_block blk
;
4887 blk
.size
= DW_BLOCK (attr
)->size
- 1;
4888 blk
.data
= DW_BLOCK (attr
)->data
+ 1;
4889 fnp
->voffset
= decode_locdesc (&blk
, cu
);
4890 if ((fnp
->voffset
% cu
->header
.addr_size
) != 0)
4891 dwarf2_complex_location_expr_complaint ();
4893 fnp
->voffset
/= cu
->header
.addr_size
;
4895 fnp
->fcontext
= TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type
, 0));
4898 dwarf2_complex_location_expr_complaint ();
4902 attr
= dwarf2_attr (die
, DW_AT_virtuality
, cu
);
4903 if (attr
&& DW_UNSND (attr
))
4905 /* GCC does this, as of 2008-08-25; PR debug/37237. */
4906 complaint (&symfile_complaints
,
4907 _("Member function \"%s\" (offset %d) is virtual but the vtable offset is not specified"),
4908 fieldname
, die
->offset
);
4909 TYPE_CPLUS_DYNAMIC (type
) = 1;
4914 /* Create the vector of member function fields, and attach it to the type. */
4917 dwarf2_attach_fn_fields_to_type (struct field_info
*fip
, struct type
*type
,
4918 struct dwarf2_cu
*cu
)
4920 struct fnfieldlist
*flp
;
4921 int total_length
= 0;
4924 if (cu
->language
== language_ada
)
4925 error ("unexpected member functions in Ada type");
4927 ALLOCATE_CPLUS_STRUCT_TYPE (type
);
4928 TYPE_FN_FIELDLISTS (type
) = (struct fn_fieldlist
*)
4929 TYPE_ALLOC (type
, sizeof (struct fn_fieldlist
) * fip
->nfnfields
);
4931 for (i
= 0, flp
= fip
->fnfieldlists
; i
< fip
->nfnfields
; i
++, flp
++)
4933 struct nextfnfield
*nfp
= flp
->head
;
4934 struct fn_fieldlist
*fn_flp
= &TYPE_FN_FIELDLIST (type
, i
);
4937 TYPE_FN_FIELDLIST_NAME (type
, i
) = flp
->name
;
4938 TYPE_FN_FIELDLIST_LENGTH (type
, i
) = flp
->length
;
4939 fn_flp
->fn_fields
= (struct fn_field
*)
4940 TYPE_ALLOC (type
, sizeof (struct fn_field
) * flp
->length
);
4941 for (k
= flp
->length
; (k
--, nfp
); nfp
= nfp
->next
)
4942 fn_flp
->fn_fields
[k
] = nfp
->fnfield
;
4944 total_length
+= flp
->length
;
4947 TYPE_NFN_FIELDS (type
) = fip
->nfnfields
;
4948 TYPE_NFN_FIELDS_TOTAL (type
) = total_length
;
4951 /* Returns non-zero if NAME is the name of a vtable member in CU's
4952 language, zero otherwise. */
4954 is_vtable_name (const char *name
, struct dwarf2_cu
*cu
)
4956 static const char vptr
[] = "_vptr";
4957 static const char vtable
[] = "vtable";
4959 /* Look for the C++ and Java forms of the vtable. */
4960 if ((cu
->language
== language_java
4961 && strncmp (name
, vtable
, sizeof (vtable
) - 1) == 0)
4962 || (strncmp (name
, vptr
, sizeof (vptr
) - 1) == 0
4963 && is_cplus_marker (name
[sizeof (vptr
) - 1])))
4969 /* GCC outputs unnamed structures that are really pointers to member
4970 functions, with the ABI-specified layout. If TYPE describes
4971 such a structure, smash it into a member function type.
4973 GCC shouldn't do this; it should just output pointer to member DIEs.
4974 This is GCC PR debug/28767. */
4977 quirk_gcc_member_function_pointer (struct type
*type
, struct objfile
*objfile
)
4979 struct type
*pfn_type
, *domain_type
, *new_type
;
4981 /* Check for a structure with no name and two children. */
4982 if (TYPE_CODE (type
) != TYPE_CODE_STRUCT
|| TYPE_NFIELDS (type
) != 2)
4985 /* Check for __pfn and __delta members. */
4986 if (TYPE_FIELD_NAME (type
, 0) == NULL
4987 || strcmp (TYPE_FIELD_NAME (type
, 0), "__pfn") != 0
4988 || TYPE_FIELD_NAME (type
, 1) == NULL
4989 || strcmp (TYPE_FIELD_NAME (type
, 1), "__delta") != 0)
4992 /* Find the type of the method. */
4993 pfn_type
= TYPE_FIELD_TYPE (type
, 0);
4994 if (pfn_type
== NULL
4995 || TYPE_CODE (pfn_type
) != TYPE_CODE_PTR
4996 || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type
)) != TYPE_CODE_FUNC
)
4999 /* Look for the "this" argument. */
5000 pfn_type
= TYPE_TARGET_TYPE (pfn_type
);
5001 if (TYPE_NFIELDS (pfn_type
) == 0
5002 /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
5003 || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type
, 0)) != TYPE_CODE_PTR
)
5006 domain_type
= TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type
, 0));
5007 new_type
= alloc_type (objfile
);
5008 smash_to_method_type (new_type
, domain_type
, TYPE_TARGET_TYPE (pfn_type
),
5009 TYPE_FIELDS (pfn_type
), TYPE_NFIELDS (pfn_type
),
5010 TYPE_VARARGS (pfn_type
));
5011 smash_to_methodptr_type (type
, new_type
);
5014 /* Called when we find the DIE that starts a structure or union scope
5015 (definition) to process all dies that define the members of the
5018 NOTE: we need to call struct_type regardless of whether or not the
5019 DIE has an at_name attribute, since it might be an anonymous
5020 structure or union. This gets the type entered into our set of
5023 However, if the structure is incomplete (an opaque struct/union)
5024 then suppress creating a symbol table entry for it since gdb only
5025 wants to find the one with the complete definition. Note that if
5026 it is complete, we just call new_symbol, which does it's own
5027 checking about whether the struct/union is anonymous or not (and
5028 suppresses creating a symbol table entry itself). */
5030 static struct type
*
5031 read_structure_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
5033 struct objfile
*objfile
= cu
->objfile
;
5035 struct attribute
*attr
;
5037 struct cleanup
*back_to
= make_cleanup (null_cleanup
, 0);
5039 /* If the definition of this type lives in .debug_types, read that type.
5040 Don't follow DW_AT_specification though, that will take us back up
5041 the chain and we want to go down. */
5042 attr
= dwarf2_attr_no_follow (die
, DW_AT_signature
, cu
);
5045 struct dwarf2_cu
*type_cu
= cu
;
5046 struct die_info
*type_die
= follow_die_ref_or_sig (die
, attr
, &type_cu
);
5047 /* We could just recurse on read_structure_type, but we need to call
5048 get_die_type to ensure only one type for this DIE is created.
5049 This is important, for example, because for c++ classes we need
5050 TYPE_NAME set which is only done by new_symbol. Blech. */
5051 type
= read_type_die (type_die
, type_cu
);
5052 return set_die_type (die
, type
, cu
);
5055 type
= alloc_type (objfile
);
5056 INIT_CPLUS_SPECIFIC (type
);
5058 name
= dwarf2_name (die
, cu
);
5061 if (cu
->language
== language_cplus
5062 || cu
->language
== language_java
)
5064 TYPE_TAG_NAME (type
) = (char *) dwarf2_full_name (name
, die
, cu
);
5065 if (die
->tag
== DW_TAG_structure_type
5066 || die
->tag
== DW_TAG_class_type
)
5067 TYPE_NAME (type
) = TYPE_TAG_NAME (type
);
5071 /* The name is already allocated along with this objfile, so
5072 we don't need to duplicate it for the type. */
5073 TYPE_TAG_NAME (type
) = (char *) name
;
5074 if (die
->tag
== DW_TAG_class_type
)
5075 TYPE_NAME (type
) = TYPE_TAG_NAME (type
);
5079 if (die
->tag
== DW_TAG_structure_type
)
5081 TYPE_CODE (type
) = TYPE_CODE_STRUCT
;
5083 else if (die
->tag
== DW_TAG_union_type
)
5085 TYPE_CODE (type
) = TYPE_CODE_UNION
;
5089 TYPE_CODE (type
) = TYPE_CODE_CLASS
;
5092 if (cu
->language
== language_cplus
&& die
->tag
== DW_TAG_class_type
)
5093 TYPE_DECLARED_CLASS (type
) = 1;
5095 attr
= dwarf2_attr (die
, DW_AT_byte_size
, cu
);
5098 TYPE_LENGTH (type
) = DW_UNSND (attr
);
5102 TYPE_LENGTH (type
) = 0;
5105 TYPE_STUB_SUPPORTED (type
) = 1;
5106 if (die_is_declaration (die
, cu
))
5107 TYPE_STUB (type
) = 1;
5109 set_descriptive_type (type
, die
, cu
);
5111 /* We need to add the type field to the die immediately so we don't
5112 infinitely recurse when dealing with pointers to the structure
5113 type within the structure itself. */
5114 set_die_type (die
, type
, cu
);
5116 if (die
->child
!= NULL
&& ! die_is_declaration (die
, cu
))
5118 struct field_info fi
;
5119 struct die_info
*child_die
;
5121 memset (&fi
, 0, sizeof (struct field_info
));
5123 child_die
= die
->child
;
5125 while (child_die
&& child_die
->tag
)
5127 if (child_die
->tag
== DW_TAG_member
5128 || child_die
->tag
== DW_TAG_variable
)
5130 /* NOTE: carlton/2002-11-05: A C++ static data member
5131 should be a DW_TAG_member that is a declaration, but
5132 all versions of G++ as of this writing (so through at
5133 least 3.2.1) incorrectly generate DW_TAG_variable
5134 tags for them instead. */
5135 dwarf2_add_field (&fi
, child_die
, cu
);
5137 else if (child_die
->tag
== DW_TAG_subprogram
)
5139 /* C++ member function. */
5140 dwarf2_add_member_fn (&fi
, child_die
, type
, cu
);
5142 else if (child_die
->tag
== DW_TAG_inheritance
)
5144 /* C++ base class field. */
5145 dwarf2_add_field (&fi
, child_die
, cu
);
5147 child_die
= sibling_die (child_die
);
5150 /* Attach fields and member functions to the type. */
5152 dwarf2_attach_fields_to_type (&fi
, type
, cu
);
5155 dwarf2_attach_fn_fields_to_type (&fi
, type
, cu
);
5157 /* Get the type which refers to the base class (possibly this
5158 class itself) which contains the vtable pointer for the current
5159 class from the DW_AT_containing_type attribute. This use of
5160 DW_AT_containing_type is a GNU extension. */
5162 if (dwarf2_attr (die
, DW_AT_containing_type
, cu
) != NULL
)
5164 struct type
*t
= die_containing_type (die
, cu
);
5166 TYPE_VPTR_BASETYPE (type
) = t
;
5171 /* Our own class provides vtbl ptr. */
5172 for (i
= TYPE_NFIELDS (t
) - 1;
5173 i
>= TYPE_N_BASECLASSES (t
);
5176 char *fieldname
= TYPE_FIELD_NAME (t
, i
);
5178 if (is_vtable_name (fieldname
, cu
))
5180 TYPE_VPTR_FIELDNO (type
) = i
;
5185 /* Complain if virtual function table field not found. */
5186 if (i
< TYPE_N_BASECLASSES (t
))
5187 complaint (&symfile_complaints
,
5188 _("virtual function table pointer not found when defining class '%s'"),
5189 TYPE_TAG_NAME (type
) ? TYPE_TAG_NAME (type
) :
5194 TYPE_VPTR_FIELDNO (type
) = TYPE_VPTR_FIELDNO (t
);
5197 else if (cu
->producer
5198 && strncmp (cu
->producer
,
5199 "IBM(R) XL C/C++ Advanced Edition", 32) == 0)
5201 /* The IBM XLC compiler does not provide direct indication
5202 of the containing type, but the vtable pointer is
5203 always named __vfp. */
5207 for (i
= TYPE_NFIELDS (type
) - 1;
5208 i
>= TYPE_N_BASECLASSES (type
);
5211 if (strcmp (TYPE_FIELD_NAME (type
, i
), "__vfp") == 0)
5213 TYPE_VPTR_FIELDNO (type
) = i
;
5214 TYPE_VPTR_BASETYPE (type
) = type
;
5222 quirk_gcc_member_function_pointer (type
, cu
->objfile
);
5224 do_cleanups (back_to
);
5229 process_structure_scope (struct die_info
*die
, struct dwarf2_cu
*cu
)
5231 struct objfile
*objfile
= cu
->objfile
;
5232 struct die_info
*child_die
= die
->child
;
5233 struct type
*this_type
;
5235 this_type
= get_die_type (die
, cu
);
5236 if (this_type
== NULL
)
5237 this_type
= read_structure_type (die
, cu
);
5239 /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
5240 snapshots) has been known to create a die giving a declaration
5241 for a class that has, as a child, a die giving a definition for a
5242 nested class. So we have to process our children even if the
5243 current die is a declaration. Normally, of course, a declaration
5244 won't have any children at all. */
5246 while (child_die
!= NULL
&& child_die
->tag
)
5248 if (child_die
->tag
== DW_TAG_member
5249 || child_die
->tag
== DW_TAG_variable
5250 || child_die
->tag
== DW_TAG_inheritance
)
5255 process_die (child_die
, cu
);
5257 child_die
= sibling_die (child_die
);
5260 /* Do not consider external references. According to the DWARF standard,
5261 these DIEs are identified by the fact that they have no byte_size
5262 attribute, and a declaration attribute. */
5263 if (dwarf2_attr (die
, DW_AT_byte_size
, cu
) != NULL
5264 || !die_is_declaration (die
, cu
))
5265 new_symbol (die
, this_type
, cu
);
5268 /* Given a DW_AT_enumeration_type die, set its type. We do not
5269 complete the type's fields yet, or create any symbols. */
5271 static struct type
*
5272 read_enumeration_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
5274 struct objfile
*objfile
= cu
->objfile
;
5276 struct attribute
*attr
;
5279 /* If the definition of this type lives in .debug_types, read that type.
5280 Don't follow DW_AT_specification though, that will take us back up
5281 the chain and we want to go down. */
5282 attr
= dwarf2_attr_no_follow (die
, DW_AT_signature
, cu
);
5285 struct dwarf2_cu
*type_cu
= cu
;
5286 struct die_info
*type_die
= follow_die_ref_or_sig (die
, attr
, &type_cu
);
5287 type
= read_type_die (type_die
, type_cu
);
5288 return set_die_type (die
, type
, cu
);
5291 type
= alloc_type (objfile
);
5293 TYPE_CODE (type
) = TYPE_CODE_ENUM
;
5294 name
= dwarf2_full_name (NULL
, die
, cu
);
5296 TYPE_TAG_NAME (type
) = (char *) name
;
5298 attr
= dwarf2_attr (die
, DW_AT_byte_size
, cu
);
5301 TYPE_LENGTH (type
) = DW_UNSND (attr
);
5305 TYPE_LENGTH (type
) = 0;
5308 /* The enumeration DIE can be incomplete. In Ada, any type can be
5309 declared as private in the package spec, and then defined only
5310 inside the package body. Such types are known as Taft Amendment
5311 Types. When another package uses such a type, an incomplete DIE
5312 may be generated by the compiler. */
5313 if (die_is_declaration (die
, cu
))
5314 TYPE_STUB (type
) = 1;
5316 return set_die_type (die
, type
, cu
);
5319 /* Given a pointer to a die which begins an enumeration, process all
5320 the dies that define the members of the enumeration, and create the
5321 symbol for the enumeration type.
5323 NOTE: We reverse the order of the element list. */
5326 process_enumeration_scope (struct die_info
*die
, struct dwarf2_cu
*cu
)
5328 struct objfile
*objfile
= cu
->objfile
;
5329 struct die_info
*child_die
;
5330 struct field
*fields
;
5333 int unsigned_enum
= 1;
5335 struct type
*this_type
;
5339 this_type
= get_die_type (die
, cu
);
5340 if (this_type
== NULL
)
5341 this_type
= read_enumeration_type (die
, cu
);
5342 if (die
->child
!= NULL
)
5344 child_die
= die
->child
;
5345 while (child_die
&& child_die
->tag
)
5347 if (child_die
->tag
!= DW_TAG_enumerator
)
5349 process_die (child_die
, cu
);
5353 name
= dwarf2_name (child_die
, cu
);
5356 sym
= new_symbol (child_die
, this_type
, cu
);
5357 if (SYMBOL_VALUE (sym
) < 0)
5360 if ((num_fields
% DW_FIELD_ALLOC_CHUNK
) == 0)
5362 fields
= (struct field
*)
5364 (num_fields
+ DW_FIELD_ALLOC_CHUNK
)
5365 * sizeof (struct field
));
5368 FIELD_NAME (fields
[num_fields
]) = SYMBOL_LINKAGE_NAME (sym
);
5369 FIELD_TYPE (fields
[num_fields
]) = NULL
;
5370 SET_FIELD_BITPOS (fields
[num_fields
], SYMBOL_VALUE (sym
));
5371 FIELD_BITSIZE (fields
[num_fields
]) = 0;
5377 child_die
= sibling_die (child_die
);
5382 TYPE_NFIELDS (this_type
) = num_fields
;
5383 TYPE_FIELDS (this_type
) = (struct field
*)
5384 TYPE_ALLOC (this_type
, sizeof (struct field
) * num_fields
);
5385 memcpy (TYPE_FIELDS (this_type
), fields
,
5386 sizeof (struct field
) * num_fields
);
5390 TYPE_UNSIGNED (this_type
) = 1;
5393 new_symbol (die
, this_type
, cu
);
5396 /* Extract all information from a DW_TAG_array_type DIE and put it in
5397 the DIE's type field. For now, this only handles one dimensional
5400 static struct type
*
5401 read_array_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
5403 struct objfile
*objfile
= cu
->objfile
;
5404 struct die_info
*child_die
;
5405 struct type
*type
= NULL
;
5406 struct type
*element_type
, *range_type
, *index_type
;
5407 struct type
**range_types
= NULL
;
5408 struct attribute
*attr
;
5410 struct cleanup
*back_to
;
5413 element_type
= die_type (die
, cu
);
5415 /* Irix 6.2 native cc creates array types without children for
5416 arrays with unspecified length. */
5417 if (die
->child
== NULL
)
5419 index_type
= objfile_type (objfile
)->builtin_int
;
5420 range_type
= create_range_type (NULL
, index_type
, 0, -1);
5421 type
= create_array_type (NULL
, element_type
, range_type
);
5422 return set_die_type (die
, type
, cu
);
5425 back_to
= make_cleanup (null_cleanup
, NULL
);
5426 child_die
= die
->child
;
5427 while (child_die
&& child_die
->tag
)
5429 if (child_die
->tag
== DW_TAG_subrange_type
)
5431 struct type
*child_type
= read_type_die (child_die
, cu
);
5432 if (child_type
!= NULL
)
5434 /* The range type was succesfully read. Save it for
5435 the array type creation. */
5436 if ((ndim
% DW_FIELD_ALLOC_CHUNK
) == 0)
5438 range_types
= (struct type
**)
5439 xrealloc (range_types
, (ndim
+ DW_FIELD_ALLOC_CHUNK
)
5440 * sizeof (struct type
*));
5442 make_cleanup (free_current_contents
, &range_types
);
5444 range_types
[ndim
++] = child_type
;
5447 child_die
= sibling_die (child_die
);
5450 /* Dwarf2 dimensions are output from left to right, create the
5451 necessary array types in backwards order. */
5453 type
= element_type
;
5455 if (read_array_order (die
, cu
) == DW_ORD_col_major
)
5459 type
= create_array_type (NULL
, type
, range_types
[i
++]);
5464 type
= create_array_type (NULL
, type
, range_types
[ndim
]);
5467 /* Understand Dwarf2 support for vector types (like they occur on
5468 the PowerPC w/ AltiVec). Gcc just adds another attribute to the
5469 array type. This is not part of the Dwarf2/3 standard yet, but a
5470 custom vendor extension. The main difference between a regular
5471 array and the vector variant is that vectors are passed by value
5473 attr
= dwarf2_attr (die
, DW_AT_GNU_vector
, cu
);
5475 make_vector_type (type
);
5477 name
= dwarf2_name (die
, cu
);
5479 TYPE_NAME (type
) = name
;
5481 set_descriptive_type (type
, die
, cu
);
5483 do_cleanups (back_to
);
5485 /* Install the type in the die. */
5486 return set_die_type (die
, type
, cu
);
5489 static enum dwarf_array_dim_ordering
5490 read_array_order (struct die_info
*die
, struct dwarf2_cu
*cu
)
5492 struct attribute
*attr
;
5494 attr
= dwarf2_attr (die
, DW_AT_ordering
, cu
);
5496 if (attr
) return DW_SND (attr
);
5499 GNU F77 is a special case, as at 08/2004 array type info is the
5500 opposite order to the dwarf2 specification, but data is still
5501 laid out as per normal fortran.
5503 FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
5507 if (cu
->language
== language_fortran
5508 && cu
->producer
&& strstr (cu
->producer
, "GNU F77"))
5510 return DW_ORD_row_major
;
5513 switch (cu
->language_defn
->la_array_ordering
)
5515 case array_column_major
:
5516 return DW_ORD_col_major
;
5517 case array_row_major
:
5519 return DW_ORD_row_major
;
5523 /* Extract all information from a DW_TAG_set_type DIE and put it in
5524 the DIE's type field. */
5526 static struct type
*
5527 read_set_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
5529 struct type
*set_type
= create_set_type (NULL
, die_type (die
, cu
));
5531 return set_die_type (die
, set_type
, cu
);
5534 /* First cut: install each common block member as a global variable. */
5537 read_common_block (struct die_info
*die
, struct dwarf2_cu
*cu
)
5539 struct die_info
*child_die
;
5540 struct attribute
*attr
;
5542 CORE_ADDR base
= (CORE_ADDR
) 0;
5544 attr
= dwarf2_attr (die
, DW_AT_location
, cu
);
5547 /* Support the .debug_loc offsets */
5548 if (attr_form_is_block (attr
))
5550 base
= decode_locdesc (DW_BLOCK (attr
), cu
);
5552 else if (attr_form_is_section_offset (attr
))
5554 dwarf2_complex_location_expr_complaint ();
5558 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
5559 "common block member");
5562 if (die
->child
!= NULL
)
5564 child_die
= die
->child
;
5565 while (child_die
&& child_die
->tag
)
5567 sym
= new_symbol (child_die
, NULL
, cu
);
5568 attr
= dwarf2_attr (child_die
, DW_AT_data_member_location
, cu
);
5571 CORE_ADDR byte_offset
= 0;
5573 if (attr_form_is_section_offset (attr
))
5574 dwarf2_complex_location_expr_complaint ();
5575 else if (attr_form_is_constant (attr
))
5576 byte_offset
= dwarf2_get_attr_constant_value (attr
, 0);
5577 else if (attr_form_is_block (attr
))
5578 byte_offset
= decode_locdesc (DW_BLOCK (attr
), cu
);
5580 dwarf2_complex_location_expr_complaint ();
5582 SYMBOL_VALUE_ADDRESS (sym
) = base
+ byte_offset
;
5583 add_symbol_to_list (sym
, &global_symbols
);
5585 child_die
= sibling_die (child_die
);
5590 /* Create a type for a C++ namespace. */
5592 static struct type
*
5593 read_namespace_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
5595 struct objfile
*objfile
= cu
->objfile
;
5596 const char *previous_prefix
, *name
;
5600 /* For extensions, reuse the type of the original namespace. */
5601 if (dwarf2_attr (die
, DW_AT_extension
, cu
) != NULL
)
5603 struct die_info
*ext_die
;
5604 struct dwarf2_cu
*ext_cu
= cu
;
5605 ext_die
= dwarf2_extension (die
, &ext_cu
);
5606 type
= read_type_die (ext_die
, ext_cu
);
5607 return set_die_type (die
, type
, cu
);
5610 name
= namespace_name (die
, &is_anonymous
, cu
);
5612 /* Now build the name of the current namespace. */
5614 previous_prefix
= determine_prefix (die
, cu
);
5615 if (previous_prefix
[0] != '\0')
5616 name
= typename_concat (&objfile
->objfile_obstack
,
5617 previous_prefix
, name
, cu
);
5619 /* Create the type. */
5620 type
= init_type (TYPE_CODE_NAMESPACE
, 0, 0, NULL
,
5622 TYPE_NAME (type
) = (char *) name
;
5623 TYPE_TAG_NAME (type
) = TYPE_NAME (type
);
5625 set_die_type (die
, type
, cu
);
5630 /* Read a C++ namespace. */
5633 read_namespace (struct die_info
*die
, struct dwarf2_cu
*cu
)
5635 struct objfile
*objfile
= cu
->objfile
;
5639 /* Add a symbol associated to this if we haven't seen the namespace
5640 before. Also, add a using directive if it's an anonymous
5643 if (dwarf2_attr (die
, DW_AT_extension
, cu
) == NULL
)
5647 type
= read_type_die (die
, cu
);
5648 new_symbol (die
, type
, cu
);
5650 name
= namespace_name (die
, &is_anonymous
, cu
);
5653 const char *previous_prefix
= determine_prefix (die
, cu
);
5654 cp_add_using_directive (previous_prefix
, TYPE_NAME (type
), NULL
);
5658 if (die
->child
!= NULL
)
5660 struct die_info
*child_die
= die
->child
;
5662 while (child_die
&& child_die
->tag
)
5664 process_die (child_die
, cu
);
5665 child_die
= sibling_die (child_die
);
5670 /* Read a Fortran module. */
5673 read_module (struct die_info
*die
, struct dwarf2_cu
*cu
)
5675 struct die_info
*child_die
= die
->child
;
5677 /* FIXME: Support the separate Fortran module namespaces. */
5679 while (child_die
&& child_die
->tag
)
5681 process_die (child_die
, cu
);
5682 child_die
= sibling_die (child_die
);
5686 /* Return the name of the namespace represented by DIE. Set
5687 *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
5691 namespace_name (struct die_info
*die
, int *is_anonymous
, struct dwarf2_cu
*cu
)
5693 struct die_info
*current_die
;
5694 const char *name
= NULL
;
5696 /* Loop through the extensions until we find a name. */
5698 for (current_die
= die
;
5699 current_die
!= NULL
;
5700 current_die
= dwarf2_extension (die
, &cu
))
5702 name
= dwarf2_name (current_die
, cu
);
5707 /* Is it an anonymous namespace? */
5709 *is_anonymous
= (name
== NULL
);
5711 name
= "(anonymous namespace)";
5716 /* Extract all information from a DW_TAG_pointer_type DIE and add to
5717 the user defined type vector. */
5719 static struct type
*
5720 read_tag_pointer_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
5722 struct gdbarch
*gdbarch
= get_objfile_arch (cu
->objfile
);
5723 struct comp_unit_head
*cu_header
= &cu
->header
;
5725 struct attribute
*attr_byte_size
;
5726 struct attribute
*attr_address_class
;
5727 int byte_size
, addr_class
;
5729 type
= lookup_pointer_type (die_type (die
, cu
));
5731 attr_byte_size
= dwarf2_attr (die
, DW_AT_byte_size
, cu
);
5733 byte_size
= DW_UNSND (attr_byte_size
);
5735 byte_size
= cu_header
->addr_size
;
5737 attr_address_class
= dwarf2_attr (die
, DW_AT_address_class
, cu
);
5738 if (attr_address_class
)
5739 addr_class
= DW_UNSND (attr_address_class
);
5741 addr_class
= DW_ADDR_none
;
5743 /* If the pointer size or address class is different than the
5744 default, create a type variant marked as such and set the
5745 length accordingly. */
5746 if (TYPE_LENGTH (type
) != byte_size
|| addr_class
!= DW_ADDR_none
)
5748 if (gdbarch_address_class_type_flags_p (gdbarch
))
5752 type_flags
= gdbarch_address_class_type_flags
5753 (gdbarch
, byte_size
, addr_class
);
5754 gdb_assert ((type_flags
& ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL
)
5756 type
= make_type_with_address_space (type
, type_flags
);
5758 else if (TYPE_LENGTH (type
) != byte_size
)
5760 complaint (&symfile_complaints
, _("invalid pointer size %d"), byte_size
);
5763 /* Should we also complain about unhandled address classes? */
5767 TYPE_LENGTH (type
) = byte_size
;
5768 return set_die_type (die
, type
, cu
);
5771 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
5772 the user defined type vector. */
5774 static struct type
*
5775 read_tag_ptr_to_member_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
5777 struct objfile
*objfile
= cu
->objfile
;
5779 struct type
*to_type
;
5780 struct type
*domain
;
5782 to_type
= die_type (die
, cu
);
5783 domain
= die_containing_type (die
, cu
);
5785 if (TYPE_CODE (check_typedef (to_type
)) == TYPE_CODE_METHOD
)
5786 type
= lookup_methodptr_type (to_type
);
5788 type
= lookup_memberptr_type (to_type
, domain
);
5790 return set_die_type (die
, type
, cu
);
5793 /* Extract all information from a DW_TAG_reference_type DIE and add to
5794 the user defined type vector. */
5796 static struct type
*
5797 read_tag_reference_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
5799 struct comp_unit_head
*cu_header
= &cu
->header
;
5801 struct attribute
*attr
;
5803 type
= lookup_reference_type (die_type (die
, cu
));
5804 attr
= dwarf2_attr (die
, DW_AT_byte_size
, cu
);
5807 TYPE_LENGTH (type
) = DW_UNSND (attr
);
5811 TYPE_LENGTH (type
) = cu_header
->addr_size
;
5813 return set_die_type (die
, type
, cu
);
5816 static struct type
*
5817 read_tag_const_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
5819 struct type
*base_type
, *cv_type
;
5821 base_type
= die_type (die
, cu
);
5822 cv_type
= make_cv_type (1, TYPE_VOLATILE (base_type
), base_type
, 0);
5823 return set_die_type (die
, cv_type
, cu
);
5826 static struct type
*
5827 read_tag_volatile_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
5829 struct type
*base_type
, *cv_type
;
5831 base_type
= die_type (die
, cu
);
5832 cv_type
= make_cv_type (TYPE_CONST (base_type
), 1, base_type
, 0);
5833 return set_die_type (die
, cv_type
, cu
);
5836 /* Extract all information from a DW_TAG_string_type DIE and add to
5837 the user defined type vector. It isn't really a user defined type,
5838 but it behaves like one, with other DIE's using an AT_user_def_type
5839 attribute to reference it. */
5841 static struct type
*
5842 read_tag_string_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
5844 struct objfile
*objfile
= cu
->objfile
;
5845 struct gdbarch
*gdbarch
= get_objfile_arch (objfile
);
5846 struct type
*type
, *range_type
, *index_type
, *char_type
;
5847 struct attribute
*attr
;
5848 unsigned int length
;
5850 attr
= dwarf2_attr (die
, DW_AT_string_length
, cu
);
5853 length
= DW_UNSND (attr
);
5857 /* check for the DW_AT_byte_size attribute */
5858 attr
= dwarf2_attr (die
, DW_AT_byte_size
, cu
);
5861 length
= DW_UNSND (attr
);
5869 index_type
= objfile_type (objfile
)->builtin_int
;
5870 range_type
= create_range_type (NULL
, index_type
, 1, length
);
5871 char_type
= language_string_char_type (cu
->language_defn
, gdbarch
);
5872 type
= create_string_type (NULL
, char_type
, range_type
);
5874 return set_die_type (die
, type
, cu
);
5877 /* Handle DIES due to C code like:
5881 int (*funcp)(int a, long l);
5885 ('funcp' generates a DW_TAG_subroutine_type DIE)
5888 static struct type
*
5889 read_subroutine_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
5891 struct type
*type
; /* Type that this function returns */
5892 struct type
*ftype
; /* Function that returns above type */
5893 struct attribute
*attr
;
5895 type
= die_type (die
, cu
);
5896 ftype
= lookup_function_type (type
);
5898 /* All functions in C++, Pascal and Java have prototypes. */
5899 attr
= dwarf2_attr (die
, DW_AT_prototyped
, cu
);
5900 if ((attr
&& (DW_UNSND (attr
) != 0))
5901 || cu
->language
== language_cplus
5902 || cu
->language
== language_java
5903 || cu
->language
== language_pascal
)
5904 TYPE_PROTOTYPED (ftype
) = 1;
5906 /* Store the calling convention in the type if it's available in
5907 the subroutine die. Otherwise set the calling convention to
5908 the default value DW_CC_normal. */
5909 attr
= dwarf2_attr (die
, DW_AT_calling_convention
, cu
);
5910 TYPE_CALLING_CONVENTION (ftype
) = attr
? DW_UNSND (attr
) : DW_CC_normal
;
5912 /* We need to add the subroutine type to the die immediately so
5913 we don't infinitely recurse when dealing with parameters
5914 declared as the same subroutine type. */
5915 set_die_type (die
, ftype
, cu
);
5917 if (die
->child
!= NULL
)
5919 struct die_info
*child_die
;
5923 /* Count the number of parameters.
5924 FIXME: GDB currently ignores vararg functions, but knows about
5925 vararg member functions. */
5926 child_die
= die
->child
;
5927 while (child_die
&& child_die
->tag
)
5929 if (child_die
->tag
== DW_TAG_formal_parameter
)
5931 else if (child_die
->tag
== DW_TAG_unspecified_parameters
)
5932 TYPE_VARARGS (ftype
) = 1;
5933 child_die
= sibling_die (child_die
);
5936 /* Allocate storage for parameters and fill them in. */
5937 TYPE_NFIELDS (ftype
) = nparams
;
5938 TYPE_FIELDS (ftype
) = (struct field
*)
5939 TYPE_ZALLOC (ftype
, nparams
* sizeof (struct field
));
5941 child_die
= die
->child
;
5942 while (child_die
&& child_die
->tag
)
5944 if (child_die
->tag
== DW_TAG_formal_parameter
)
5946 /* Dwarf2 has no clean way to discern C++ static and non-static
5947 member functions. G++ helps GDB by marking the first
5948 parameter for non-static member functions (which is the
5949 this pointer) as artificial. We pass this information
5950 to dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL. */
5951 attr
= dwarf2_attr (child_die
, DW_AT_artificial
, cu
);
5953 TYPE_FIELD_ARTIFICIAL (ftype
, iparams
) = DW_UNSND (attr
);
5955 TYPE_FIELD_ARTIFICIAL (ftype
, iparams
) = 0;
5956 TYPE_FIELD_TYPE (ftype
, iparams
) = die_type (child_die
, cu
);
5959 child_die
= sibling_die (child_die
);
5966 static struct type
*
5967 read_typedef (struct die_info
*die
, struct dwarf2_cu
*cu
)
5969 struct objfile
*objfile
= cu
->objfile
;
5970 struct attribute
*attr
;
5971 const char *name
= NULL
;
5972 struct type
*this_type
;
5974 name
= dwarf2_full_name (NULL
, die
, cu
);
5975 this_type
= init_type (TYPE_CODE_TYPEDEF
, 0,
5976 TYPE_FLAG_TARGET_STUB
, NULL
, objfile
);
5977 TYPE_NAME (this_type
) = (char *) name
;
5978 set_die_type (die
, this_type
, cu
);
5979 TYPE_TARGET_TYPE (this_type
) = die_type (die
, cu
);
5983 /* Find a representation of a given base type and install
5984 it in the TYPE field of the die. */
5986 static struct type
*
5987 read_base_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
5989 struct objfile
*objfile
= cu
->objfile
;
5991 struct attribute
*attr
;
5992 int encoding
= 0, size
= 0;
5994 enum type_code code
= TYPE_CODE_INT
;
5996 struct type
*target_type
= NULL
;
5998 attr
= dwarf2_attr (die
, DW_AT_encoding
, cu
);
6001 encoding
= DW_UNSND (attr
);
6003 attr
= dwarf2_attr (die
, DW_AT_byte_size
, cu
);
6006 size
= DW_UNSND (attr
);
6008 name
= dwarf2_name (die
, cu
);
6011 complaint (&symfile_complaints
,
6012 _("DW_AT_name missing from DW_TAG_base_type"));
6017 case DW_ATE_address
:
6018 /* Turn DW_ATE_address into a void * pointer. */
6019 code
= TYPE_CODE_PTR
;
6020 type_flags
|= TYPE_FLAG_UNSIGNED
;
6021 target_type
= init_type (TYPE_CODE_VOID
, 1, 0, NULL
, objfile
);
6023 case DW_ATE_boolean
:
6024 code
= TYPE_CODE_BOOL
;
6025 type_flags
|= TYPE_FLAG_UNSIGNED
;
6027 case DW_ATE_complex_float
:
6028 code
= TYPE_CODE_COMPLEX
;
6029 target_type
= init_type (TYPE_CODE_FLT
, size
/ 2, 0, NULL
, objfile
);
6031 case DW_ATE_decimal_float
:
6032 code
= TYPE_CODE_DECFLOAT
;
6035 code
= TYPE_CODE_FLT
;
6039 case DW_ATE_unsigned
:
6040 type_flags
|= TYPE_FLAG_UNSIGNED
;
6042 case DW_ATE_signed_char
:
6043 if (cu
->language
== language_ada
|| cu
->language
== language_m2
6044 || cu
->language
== language_pascal
)
6045 code
= TYPE_CODE_CHAR
;
6047 case DW_ATE_unsigned_char
:
6048 if (cu
->language
== language_ada
|| cu
->language
== language_m2
6049 || cu
->language
== language_pascal
)
6050 code
= TYPE_CODE_CHAR
;
6051 type_flags
|= TYPE_FLAG_UNSIGNED
;
6054 complaint (&symfile_complaints
, _("unsupported DW_AT_encoding: '%s'"),
6055 dwarf_type_encoding_name (encoding
));
6059 type
= init_type (code
, size
, type_flags
, NULL
, objfile
);
6060 TYPE_NAME (type
) = name
;
6061 TYPE_TARGET_TYPE (type
) = target_type
;
6063 if (name
&& strcmp (name
, "char") == 0)
6064 TYPE_NOSIGN (type
) = 1;
6066 return set_die_type (die
, type
, cu
);
6069 /* Read the given DW_AT_subrange DIE. */
6071 static struct type
*
6072 read_subrange_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
6074 struct gdbarch
*gdbarch
= get_objfile_arch (cu
->objfile
);
6075 struct type
*base_type
;
6076 struct type
*range_type
;
6077 struct attribute
*attr
;
6081 LONGEST negative_mask
;
6083 base_type
= die_type (die
, cu
);
6084 if (TYPE_CODE (base_type
) == TYPE_CODE_VOID
)
6086 complaint (&symfile_complaints
,
6087 _("DW_AT_type missing from DW_TAG_subrange_type"));
6089 = init_type (TYPE_CODE_INT
, gdbarch_addr_bit (gdbarch
) / 8,
6090 0, NULL
, cu
->objfile
);
6093 if (cu
->language
== language_fortran
)
6095 /* FORTRAN implies a lower bound of 1, if not given. */
6099 /* FIXME: For variable sized arrays either of these could be
6100 a variable rather than a constant value. We'll allow it,
6101 but we don't know how to handle it. */
6102 attr
= dwarf2_attr (die
, DW_AT_lower_bound
, cu
);
6104 low
= dwarf2_get_attr_constant_value (attr
, 0);
6106 attr
= dwarf2_attr (die
, DW_AT_upper_bound
, cu
);
6109 if (attr
->form
== DW_FORM_block1
)
6111 /* GCC encodes arrays with unspecified or dynamic length
6112 with a DW_FORM_block1 attribute.
6113 FIXME: GDB does not yet know how to handle dynamic
6114 arrays properly, treat them as arrays with unspecified
6117 FIXME: jimb/2003-09-22: GDB does not really know
6118 how to handle arrays of unspecified length
6119 either; we just represent them as zero-length
6120 arrays. Choose an appropriate upper bound given
6121 the lower bound we've computed above. */
6125 high
= dwarf2_get_attr_constant_value (attr
, 1);
6129 (LONGEST
) -1 << (TYPE_LENGTH (base_type
) * TARGET_CHAR_BIT
- 1);
6130 if (!TYPE_UNSIGNED (base_type
) && (low
& negative_mask
))
6131 low
|= negative_mask
;
6132 if (!TYPE_UNSIGNED (base_type
) && (high
& negative_mask
))
6133 high
|= negative_mask
;
6135 range_type
= create_range_type (NULL
, base_type
, low
, high
);
6137 name
= dwarf2_name (die
, cu
);
6139 TYPE_NAME (range_type
) = name
;
6141 attr
= dwarf2_attr (die
, DW_AT_byte_size
, cu
);
6143 TYPE_LENGTH (range_type
) = DW_UNSND (attr
);
6145 set_descriptive_type (range_type
, die
, cu
);
6147 return set_die_type (die
, range_type
, cu
);
6150 static struct type
*
6151 read_unspecified_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
6155 /* For now, we only support the C meaning of an unspecified type: void. */
6157 type
= init_type (TYPE_CODE_VOID
, 0, 0, NULL
, cu
->objfile
);
6158 TYPE_NAME (type
) = dwarf2_name (die
, cu
);
6160 return set_die_type (die
, type
, cu
);
6163 /* Trivial hash function for die_info: the hash value of a DIE
6164 is its offset in .debug_info for this objfile. */
6167 die_hash (const void *item
)
6169 const struct die_info
*die
= item
;
6173 /* Trivial comparison function for die_info structures: two DIEs
6174 are equal if they have the same offset. */
6177 die_eq (const void *item_lhs
, const void *item_rhs
)
6179 const struct die_info
*die_lhs
= item_lhs
;
6180 const struct die_info
*die_rhs
= item_rhs
;
6181 return die_lhs
->offset
== die_rhs
->offset
;
6184 /* Read a whole compilation unit into a linked list of dies. */
6186 static struct die_info
*
6187 read_comp_unit (gdb_byte
*info_ptr
, struct dwarf2_cu
*cu
)
6189 struct die_reader_specs reader_specs
;
6191 gdb_assert (cu
->die_hash
== NULL
);
6193 = htab_create_alloc_ex (cu
->header
.length
/ 12,
6197 &cu
->comp_unit_obstack
,
6198 hashtab_obstack_allocate
,
6199 dummy_obstack_deallocate
);
6201 init_cu_die_reader (&reader_specs
, cu
);
6203 return read_die_and_children (&reader_specs
, info_ptr
, &info_ptr
, NULL
);
6206 /* Main entry point for reading a DIE and all children.
6207 Read the DIE and dump it if requested. */
6209 static struct die_info
*
6210 read_die_and_children (const struct die_reader_specs
*reader
,
6212 gdb_byte
**new_info_ptr
,
6213 struct die_info
*parent
)
6215 struct die_info
*result
= read_die_and_children_1 (reader
, info_ptr
,
6216 new_info_ptr
, parent
);
6218 if (dwarf2_die_debug
)
6220 fprintf_unfiltered (gdb_stdlog
,
6221 "\nRead die from %s of %s:\n",
6222 reader
->buffer
== dwarf2_per_objfile
->info
.buffer
6224 : reader
->buffer
== dwarf2_per_objfile
->types
.buffer
6226 : "unknown section",
6227 reader
->abfd
->filename
);
6228 dump_die (result
, dwarf2_die_debug
);
6234 /* Read a single die and all its descendents. Set the die's sibling
6235 field to NULL; set other fields in the die correctly, and set all
6236 of the descendents' fields correctly. Set *NEW_INFO_PTR to the
6237 location of the info_ptr after reading all of those dies. PARENT
6238 is the parent of the die in question. */
6240 static struct die_info
*
6241 read_die_and_children_1 (const struct die_reader_specs
*reader
,
6243 gdb_byte
**new_info_ptr
,
6244 struct die_info
*parent
)
6246 struct die_info
*die
;
6250 cur_ptr
= read_full_die (reader
, &die
, info_ptr
, &has_children
);
6253 *new_info_ptr
= cur_ptr
;
6256 store_in_ref_table (die
, reader
->cu
);
6259 die
->child
= read_die_and_siblings (reader
, cur_ptr
, new_info_ptr
, die
);
6263 *new_info_ptr
= cur_ptr
;
6266 die
->sibling
= NULL
;
6267 die
->parent
= parent
;
6271 /* Read a die, all of its descendents, and all of its siblings; set
6272 all of the fields of all of the dies correctly. Arguments are as
6273 in read_die_and_children. */
6275 static struct die_info
*
6276 read_die_and_siblings (const struct die_reader_specs
*reader
,
6278 gdb_byte
**new_info_ptr
,
6279 struct die_info
*parent
)
6281 struct die_info
*first_die
, *last_sibling
;
6285 first_die
= last_sibling
= NULL
;
6289 struct die_info
*die
6290 = read_die_and_children_1 (reader
, cur_ptr
, &cur_ptr
, parent
);
6294 *new_info_ptr
= cur_ptr
;
6301 last_sibling
->sibling
= die
;
6307 /* Read the die from the .debug_info section buffer. Set DIEP to
6308 point to a newly allocated die with its information, except for its
6309 child, sibling, and parent fields. Set HAS_CHILDREN to tell
6310 whether the die has children or not. */
6313 read_full_die (const struct die_reader_specs
*reader
,
6314 struct die_info
**diep
, gdb_byte
*info_ptr
,
6317 unsigned int abbrev_number
, bytes_read
, i
, offset
;
6318 struct abbrev_info
*abbrev
;
6319 struct die_info
*die
;
6320 struct dwarf2_cu
*cu
= reader
->cu
;
6321 bfd
*abfd
= reader
->abfd
;
6323 offset
= info_ptr
- reader
->buffer
;
6324 abbrev_number
= read_unsigned_leb128 (abfd
, info_ptr
, &bytes_read
);
6325 info_ptr
+= bytes_read
;
6333 abbrev
= dwarf2_lookup_abbrev (abbrev_number
, cu
);
6335 error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
6337 bfd_get_filename (abfd
));
6339 die
= dwarf_alloc_die (cu
, abbrev
->num_attrs
);
6340 die
->offset
= offset
;
6341 die
->tag
= abbrev
->tag
;
6342 die
->abbrev
= abbrev_number
;
6344 die
->num_attrs
= abbrev
->num_attrs
;
6346 for (i
= 0; i
< abbrev
->num_attrs
; ++i
)
6347 info_ptr
= read_attribute (&die
->attrs
[i
], &abbrev
->attrs
[i
],
6348 abfd
, info_ptr
, cu
);
6351 *has_children
= abbrev
->has_children
;
6355 /* In DWARF version 2, the description of the debugging information is
6356 stored in a separate .debug_abbrev section. Before we read any
6357 dies from a section we read in all abbreviations and install them
6358 in a hash table. This function also sets flags in CU describing
6359 the data found in the abbrev table. */
6362 dwarf2_read_abbrevs (bfd
*abfd
, struct dwarf2_cu
*cu
)
6364 struct comp_unit_head
*cu_header
= &cu
->header
;
6365 gdb_byte
*abbrev_ptr
;
6366 struct abbrev_info
*cur_abbrev
;
6367 unsigned int abbrev_number
, bytes_read
, abbrev_name
;
6368 unsigned int abbrev_form
, hash_number
;
6369 struct attr_abbrev
*cur_attrs
;
6370 unsigned int allocated_attrs
;
6372 /* Initialize dwarf2 abbrevs */
6373 obstack_init (&cu
->abbrev_obstack
);
6374 cu
->dwarf2_abbrevs
= obstack_alloc (&cu
->abbrev_obstack
,
6376 * sizeof (struct abbrev_info
*)));
6377 memset (cu
->dwarf2_abbrevs
, 0,
6378 ABBREV_HASH_SIZE
* sizeof (struct abbrev_info
*));
6380 abbrev_ptr
= dwarf2_per_objfile
->abbrev
.buffer
+ cu_header
->abbrev_offset
;
6381 abbrev_number
= read_unsigned_leb128 (abfd
, abbrev_ptr
, &bytes_read
);
6382 abbrev_ptr
+= bytes_read
;
6384 allocated_attrs
= ATTR_ALLOC_CHUNK
;
6385 cur_attrs
= xmalloc (allocated_attrs
* sizeof (struct attr_abbrev
));
6387 /* loop until we reach an abbrev number of 0 */
6388 while (abbrev_number
)
6390 cur_abbrev
= dwarf_alloc_abbrev (cu
);
6392 /* read in abbrev header */
6393 cur_abbrev
->number
= abbrev_number
;
6394 cur_abbrev
->tag
= read_unsigned_leb128 (abfd
, abbrev_ptr
, &bytes_read
);
6395 abbrev_ptr
+= bytes_read
;
6396 cur_abbrev
->has_children
= read_1_byte (abfd
, abbrev_ptr
);
6399 if (cur_abbrev
->tag
== DW_TAG_namespace
)
6400 cu
->has_namespace_info
= 1;
6402 /* now read in declarations */
6403 abbrev_name
= read_unsigned_leb128 (abfd
, abbrev_ptr
, &bytes_read
);
6404 abbrev_ptr
+= bytes_read
;
6405 abbrev_form
= read_unsigned_leb128 (abfd
, abbrev_ptr
, &bytes_read
);
6406 abbrev_ptr
+= bytes_read
;
6409 if (cur_abbrev
->num_attrs
== allocated_attrs
)
6411 allocated_attrs
+= ATTR_ALLOC_CHUNK
;
6413 = xrealloc (cur_attrs
, (allocated_attrs
6414 * sizeof (struct attr_abbrev
)));
6417 /* Record whether this compilation unit might have
6418 inter-compilation-unit references. If we don't know what form
6419 this attribute will have, then it might potentially be a
6420 DW_FORM_ref_addr, so we conservatively expect inter-CU
6423 if (abbrev_form
== DW_FORM_ref_addr
6424 || abbrev_form
== DW_FORM_indirect
)
6425 cu
->has_form_ref_addr
= 1;
6427 cur_attrs
[cur_abbrev
->num_attrs
].name
= abbrev_name
;
6428 cur_attrs
[cur_abbrev
->num_attrs
++].form
= abbrev_form
;
6429 abbrev_name
= read_unsigned_leb128 (abfd
, abbrev_ptr
, &bytes_read
);
6430 abbrev_ptr
+= bytes_read
;
6431 abbrev_form
= read_unsigned_leb128 (abfd
, abbrev_ptr
, &bytes_read
);
6432 abbrev_ptr
+= bytes_read
;
6435 cur_abbrev
->attrs
= obstack_alloc (&cu
->abbrev_obstack
,
6436 (cur_abbrev
->num_attrs
6437 * sizeof (struct attr_abbrev
)));
6438 memcpy (cur_abbrev
->attrs
, cur_attrs
,
6439 cur_abbrev
->num_attrs
* sizeof (struct attr_abbrev
));
6441 hash_number
= abbrev_number
% ABBREV_HASH_SIZE
;
6442 cur_abbrev
->next
= cu
->dwarf2_abbrevs
[hash_number
];
6443 cu
->dwarf2_abbrevs
[hash_number
] = cur_abbrev
;
6445 /* Get next abbreviation.
6446 Under Irix6 the abbreviations for a compilation unit are not
6447 always properly terminated with an abbrev number of 0.
6448 Exit loop if we encounter an abbreviation which we have
6449 already read (which means we are about to read the abbreviations
6450 for the next compile unit) or if the end of the abbreviation
6451 table is reached. */
6452 if ((unsigned int) (abbrev_ptr
- dwarf2_per_objfile
->abbrev
.buffer
)
6453 >= dwarf2_per_objfile
->abbrev
.size
)
6455 abbrev_number
= read_unsigned_leb128 (abfd
, abbrev_ptr
, &bytes_read
);
6456 abbrev_ptr
+= bytes_read
;
6457 if (dwarf2_lookup_abbrev (abbrev_number
, cu
) != NULL
)
6464 /* Release the memory used by the abbrev table for a compilation unit. */
6467 dwarf2_free_abbrev_table (void *ptr_to_cu
)
6469 struct dwarf2_cu
*cu
= ptr_to_cu
;
6471 obstack_free (&cu
->abbrev_obstack
, NULL
);
6472 cu
->dwarf2_abbrevs
= NULL
;
6475 /* Lookup an abbrev_info structure in the abbrev hash table. */
6477 static struct abbrev_info
*
6478 dwarf2_lookup_abbrev (unsigned int number
, struct dwarf2_cu
*cu
)
6480 unsigned int hash_number
;
6481 struct abbrev_info
*abbrev
;
6483 hash_number
= number
% ABBREV_HASH_SIZE
;
6484 abbrev
= cu
->dwarf2_abbrevs
[hash_number
];
6488 if (abbrev
->number
== number
)
6491 abbrev
= abbrev
->next
;
6496 /* Returns nonzero if TAG represents a type that we might generate a partial
6500 is_type_tag_for_partial (int tag
)
6505 /* Some types that would be reasonable to generate partial symbols for,
6506 that we don't at present. */
6507 case DW_TAG_array_type
:
6508 case DW_TAG_file_type
:
6509 case DW_TAG_ptr_to_member_type
:
6510 case DW_TAG_set_type
:
6511 case DW_TAG_string_type
:
6512 case DW_TAG_subroutine_type
:
6514 case DW_TAG_base_type
:
6515 case DW_TAG_class_type
:
6516 case DW_TAG_interface_type
:
6517 case DW_TAG_enumeration_type
:
6518 case DW_TAG_structure_type
:
6519 case DW_TAG_subrange_type
:
6520 case DW_TAG_typedef
:
6521 case DW_TAG_union_type
:
6528 /* Load all DIEs that are interesting for partial symbols into memory. */
6530 static struct partial_die_info
*
6531 load_partial_dies (bfd
*abfd
, gdb_byte
*buffer
, gdb_byte
*info_ptr
,
6532 int building_psymtab
, struct dwarf2_cu
*cu
)
6534 struct partial_die_info
*part_die
;
6535 struct partial_die_info
*parent_die
, *last_die
, *first_die
= NULL
;
6536 struct abbrev_info
*abbrev
;
6537 unsigned int bytes_read
;
6538 unsigned int load_all
= 0;
6540 int nesting_level
= 1;
6545 if (cu
->per_cu
&& cu
->per_cu
->load_all_dies
)
6549 = htab_create_alloc_ex (cu
->header
.length
/ 12,
6553 &cu
->comp_unit_obstack
,
6554 hashtab_obstack_allocate
,
6555 dummy_obstack_deallocate
);
6557 part_die
= obstack_alloc (&cu
->comp_unit_obstack
,
6558 sizeof (struct partial_die_info
));
6562 abbrev
= peek_die_abbrev (info_ptr
, &bytes_read
, cu
);
6564 /* A NULL abbrev means the end of a series of children. */
6567 if (--nesting_level
== 0)
6569 /* PART_DIE was probably the last thing allocated on the
6570 comp_unit_obstack, so we could call obstack_free
6571 here. We don't do that because the waste is small,
6572 and will be cleaned up when we're done with this
6573 compilation unit. This way, we're also more robust
6574 against other users of the comp_unit_obstack. */
6577 info_ptr
+= bytes_read
;
6578 last_die
= parent_die
;
6579 parent_die
= parent_die
->die_parent
;
6583 /* Check whether this DIE is interesting enough to save. Normally
6584 we would not be interested in members here, but there may be
6585 later variables referencing them via DW_AT_specification (for
6588 && !is_type_tag_for_partial (abbrev
->tag
)
6589 && abbrev
->tag
!= DW_TAG_enumerator
6590 && abbrev
->tag
!= DW_TAG_subprogram
6591 && abbrev
->tag
!= DW_TAG_lexical_block
6592 && abbrev
->tag
!= DW_TAG_variable
6593 && abbrev
->tag
!= DW_TAG_namespace
6594 && abbrev
->tag
!= DW_TAG_member
)
6596 /* Otherwise we skip to the next sibling, if any. */
6597 info_ptr
= skip_one_die (buffer
, info_ptr
+ bytes_read
, abbrev
, cu
);
6601 info_ptr
= read_partial_die (part_die
, abbrev
, bytes_read
, abfd
,
6602 buffer
, info_ptr
, cu
);
6604 /* This two-pass algorithm for processing partial symbols has a
6605 high cost in cache pressure. Thus, handle some simple cases
6606 here which cover the majority of C partial symbols. DIEs
6607 which neither have specification tags in them, nor could have
6608 specification tags elsewhere pointing at them, can simply be
6609 processed and discarded.
6611 This segment is also optional; scan_partial_symbols and
6612 add_partial_symbol will handle these DIEs if we chain
6613 them in normally. When compilers which do not emit large
6614 quantities of duplicate debug information are more common,
6615 this code can probably be removed. */
6617 /* Any complete simple types at the top level (pretty much all
6618 of them, for a language without namespaces), can be processed
6620 if (parent_die
== NULL
6621 && part_die
->has_specification
== 0
6622 && part_die
->is_declaration
== 0
6623 && (part_die
->tag
== DW_TAG_typedef
6624 || part_die
->tag
== DW_TAG_base_type
6625 || part_die
->tag
== DW_TAG_subrange_type
))
6627 if (building_psymtab
&& part_die
->name
!= NULL
)
6628 add_psymbol_to_list (part_die
->name
, strlen (part_die
->name
), 0,
6629 VAR_DOMAIN
, LOC_TYPEDEF
,
6630 &cu
->objfile
->static_psymbols
,
6631 0, (CORE_ADDR
) 0, cu
->language
, cu
->objfile
);
6632 info_ptr
= locate_pdi_sibling (part_die
, buffer
, info_ptr
, abfd
, cu
);
6636 /* If we're at the second level, and we're an enumerator, and
6637 our parent has no specification (meaning possibly lives in a
6638 namespace elsewhere), then we can add the partial symbol now
6639 instead of queueing it. */
6640 if (part_die
->tag
== DW_TAG_enumerator
6641 && parent_die
!= NULL
6642 && parent_die
->die_parent
== NULL
6643 && parent_die
->tag
== DW_TAG_enumeration_type
6644 && parent_die
->has_specification
== 0)
6646 if (part_die
->name
== NULL
)
6647 complaint (&symfile_complaints
, _("malformed enumerator DIE ignored"));
6648 else if (building_psymtab
)
6649 add_psymbol_to_list (part_die
->name
, strlen (part_die
->name
), 0,
6650 VAR_DOMAIN
, LOC_CONST
,
6651 (cu
->language
== language_cplus
6652 || cu
->language
== language_java
)
6653 ? &cu
->objfile
->global_psymbols
6654 : &cu
->objfile
->static_psymbols
,
6655 0, (CORE_ADDR
) 0, cu
->language
, cu
->objfile
);
6657 info_ptr
= locate_pdi_sibling (part_die
, buffer
, info_ptr
, abfd
, cu
);
6661 /* We'll save this DIE so link it in. */
6662 part_die
->die_parent
= parent_die
;
6663 part_die
->die_sibling
= NULL
;
6664 part_die
->die_child
= NULL
;
6666 if (last_die
&& last_die
== parent_die
)
6667 last_die
->die_child
= part_die
;
6669 last_die
->die_sibling
= part_die
;
6671 last_die
= part_die
;
6673 if (first_die
== NULL
)
6674 first_die
= part_die
;
6676 /* Maybe add the DIE to the hash table. Not all DIEs that we
6677 find interesting need to be in the hash table, because we
6678 also have the parent/sibling/child chains; only those that we
6679 might refer to by offset later during partial symbol reading.
6681 For now this means things that might have be the target of a
6682 DW_AT_specification, DW_AT_abstract_origin, or
6683 DW_AT_extension. DW_AT_extension will refer only to
6684 namespaces; DW_AT_abstract_origin refers to functions (and
6685 many things under the function DIE, but we do not recurse
6686 into function DIEs during partial symbol reading) and
6687 possibly variables as well; DW_AT_specification refers to
6688 declarations. Declarations ought to have the DW_AT_declaration
6689 flag. It happens that GCC forgets to put it in sometimes, but
6690 only for functions, not for types.
6692 Adding more things than necessary to the hash table is harmless
6693 except for the performance cost. Adding too few will result in
6694 wasted time in find_partial_die, when we reread the compilation
6695 unit with load_all_dies set. */
6698 || abbrev
->tag
== DW_TAG_subprogram
6699 || abbrev
->tag
== DW_TAG_variable
6700 || abbrev
->tag
== DW_TAG_namespace
6701 || part_die
->is_declaration
)
6705 slot
= htab_find_slot_with_hash (cu
->partial_dies
, part_die
,
6706 part_die
->offset
, INSERT
);
6710 part_die
= obstack_alloc (&cu
->comp_unit_obstack
,
6711 sizeof (struct partial_die_info
));
6713 /* For some DIEs we want to follow their children (if any). For C
6714 we have no reason to follow the children of structures; for other
6715 languages we have to, both so that we can get at method physnames
6716 to infer fully qualified class names, and for DW_AT_specification.
6718 For Ada, we need to scan the children of subprograms and lexical
6719 blocks as well because Ada allows the definition of nested
6720 entities that could be interesting for the debugger, such as
6721 nested subprograms for instance. */
6722 if (last_die
->has_children
6724 || last_die
->tag
== DW_TAG_namespace
6725 || last_die
->tag
== DW_TAG_enumeration_type
6726 || (cu
->language
!= language_c
6727 && (last_die
->tag
== DW_TAG_class_type
6728 || last_die
->tag
== DW_TAG_interface_type
6729 || last_die
->tag
== DW_TAG_structure_type
6730 || last_die
->tag
== DW_TAG_union_type
))
6731 || (cu
->language
== language_ada
6732 && (last_die
->tag
== DW_TAG_subprogram
6733 || last_die
->tag
== DW_TAG_lexical_block
))))
6736 parent_die
= last_die
;
6740 /* Otherwise we skip to the next sibling, if any. */
6741 info_ptr
= locate_pdi_sibling (last_die
, buffer
, info_ptr
, abfd
, cu
);
6743 /* Back to the top, do it again. */
6747 /* Read a minimal amount of information into the minimal die structure. */
6750 read_partial_die (struct partial_die_info
*part_die
,
6751 struct abbrev_info
*abbrev
,
6752 unsigned int abbrev_len
, bfd
*abfd
,
6753 gdb_byte
*buffer
, gdb_byte
*info_ptr
,
6754 struct dwarf2_cu
*cu
)
6756 unsigned int bytes_read
, i
;
6757 struct attribute attr
;
6758 int has_low_pc_attr
= 0;
6759 int has_high_pc_attr
= 0;
6761 memset (part_die
, 0, sizeof (struct partial_die_info
));
6763 part_die
->offset
= info_ptr
- buffer
;
6765 info_ptr
+= abbrev_len
;
6770 part_die
->tag
= abbrev
->tag
;
6771 part_die
->has_children
= abbrev
->has_children
;
6773 for (i
= 0; i
< abbrev
->num_attrs
; ++i
)
6775 info_ptr
= read_attribute (&attr
, &abbrev
->attrs
[i
], abfd
, info_ptr
, cu
);
6777 /* Store the data if it is of an attribute we want to keep in a
6778 partial symbol table. */
6782 switch (part_die
->tag
)
6784 case DW_TAG_compile_unit
:
6785 case DW_TAG_type_unit
:
6786 /* Compilation units have a DW_AT_name that is a filename, not
6787 a source language identifier. */
6788 case DW_TAG_enumeration_type
:
6789 case DW_TAG_enumerator
:
6790 /* These tags always have simple identifiers already; no need
6791 to canonicalize them. */
6792 part_die
->name
= DW_STRING (&attr
);
6796 = dwarf2_canonicalize_name (DW_STRING (&attr
), cu
,
6797 &cu
->objfile
->objfile_obstack
);
6801 case DW_AT_MIPS_linkage_name
:
6802 if (cu
->language
== language_ada
)
6803 part_die
->name
= DW_STRING (&attr
);
6806 has_low_pc_attr
= 1;
6807 part_die
->lowpc
= DW_ADDR (&attr
);
6810 has_high_pc_attr
= 1;
6811 part_die
->highpc
= DW_ADDR (&attr
);
6813 case DW_AT_location
:
6814 /* Support the .debug_loc offsets */
6815 if (attr_form_is_block (&attr
))
6817 part_die
->locdesc
= DW_BLOCK (&attr
);
6819 else if (attr_form_is_section_offset (&attr
))
6821 dwarf2_complex_location_expr_complaint ();
6825 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
6826 "partial symbol information");
6829 case DW_AT_external
:
6830 part_die
->is_external
= DW_UNSND (&attr
);
6832 case DW_AT_declaration
:
6833 part_die
->is_declaration
= DW_UNSND (&attr
);
6836 part_die
->has_type
= 1;
6838 case DW_AT_abstract_origin
:
6839 case DW_AT_specification
:
6840 case DW_AT_extension
:
6841 part_die
->has_specification
= 1;
6842 part_die
->spec_offset
= dwarf2_get_ref_die_offset (&attr
);
6845 /* Ignore absolute siblings, they might point outside of
6846 the current compile unit. */
6847 if (attr
.form
== DW_FORM_ref_addr
)
6848 complaint (&symfile_complaints
, _("ignoring absolute DW_AT_sibling"));
6850 part_die
->sibling
= buffer
+ dwarf2_get_ref_die_offset (&attr
);
6852 case DW_AT_byte_size
:
6853 part_die
->has_byte_size
= 1;
6855 case DW_AT_calling_convention
:
6856 /* DWARF doesn't provide a way to identify a program's source-level
6857 entry point. DW_AT_calling_convention attributes are only meant
6858 to describe functions' calling conventions.
6860 However, because it's a necessary piece of information in
6861 Fortran, and because DW_CC_program is the only piece of debugging
6862 information whose definition refers to a 'main program' at all,
6863 several compilers have begun marking Fortran main programs with
6864 DW_CC_program --- even when those functions use the standard
6865 calling conventions.
6867 So until DWARF specifies a way to provide this information and
6868 compilers pick up the new representation, we'll support this
6870 if (DW_UNSND (&attr
) == DW_CC_program
6871 && cu
->language
== language_fortran
)
6872 set_main_name (part_die
->name
);
6879 /* When using the GNU linker, .gnu.linkonce. sections are used to
6880 eliminate duplicate copies of functions and vtables and such.
6881 The linker will arbitrarily choose one and discard the others.
6882 The AT_*_pc values for such functions refer to local labels in
6883 these sections. If the section from that file was discarded, the
6884 labels are not in the output, so the relocs get a value of 0.
6885 If this is a discarded function, mark the pc bounds as invalid,
6886 so that GDB will ignore it. */
6887 if (has_low_pc_attr
&& has_high_pc_attr
6888 && part_die
->lowpc
< part_die
->highpc
6889 && (part_die
->lowpc
!= 0
6890 || dwarf2_per_objfile
->has_section_at_zero
))
6891 part_die
->has_pc_info
= 1;
6896 /* Find a cached partial DIE at OFFSET in CU. */
6898 static struct partial_die_info
*
6899 find_partial_die_in_comp_unit (unsigned int offset
, struct dwarf2_cu
*cu
)
6901 struct partial_die_info
*lookup_die
= NULL
;
6902 struct partial_die_info part_die
;
6904 part_die
.offset
= offset
;
6905 lookup_die
= htab_find_with_hash (cu
->partial_dies
, &part_die
, offset
);
6910 /* Find a partial DIE at OFFSET, which may or may not be in CU,
6911 except in the case of .debug_types DIEs which do not reference
6912 outside their CU (they do however referencing other types via
6915 static struct partial_die_info
*
6916 find_partial_die (unsigned int offset
, struct dwarf2_cu
*cu
)
6918 struct dwarf2_per_cu_data
*per_cu
= NULL
;
6919 struct partial_die_info
*pd
= NULL
;
6921 if (cu
->per_cu
->from_debug_types
)
6923 pd
= find_partial_die_in_comp_unit (offset
, cu
);
6929 if (offset_in_cu_p (&cu
->header
, offset
))
6931 pd
= find_partial_die_in_comp_unit (offset
, cu
);
6936 per_cu
= dwarf2_find_containing_comp_unit (offset
, cu
->objfile
);
6938 if (per_cu
->cu
== NULL
)
6940 load_partial_comp_unit (per_cu
, cu
->objfile
);
6941 per_cu
->cu
->read_in_chain
= dwarf2_per_objfile
->read_in_chain
;
6942 dwarf2_per_objfile
->read_in_chain
= per_cu
;
6945 per_cu
->cu
->last_used
= 0;
6946 pd
= find_partial_die_in_comp_unit (offset
, per_cu
->cu
);
6948 if (pd
== NULL
&& per_cu
->load_all_dies
== 0)
6950 struct cleanup
*back_to
;
6951 struct partial_die_info comp_unit_die
;
6952 struct abbrev_info
*abbrev
;
6953 unsigned int bytes_read
;
6956 per_cu
->load_all_dies
= 1;
6958 /* Re-read the DIEs. */
6959 back_to
= make_cleanup (null_cleanup
, 0);
6960 if (per_cu
->cu
->dwarf2_abbrevs
== NULL
)
6962 dwarf2_read_abbrevs (per_cu
->cu
->objfile
->obfd
, per_cu
->cu
);
6963 make_cleanup (dwarf2_free_abbrev_table
, per_cu
->cu
);
6965 info_ptr
= (dwarf2_per_objfile
->info
.buffer
6966 + per_cu
->cu
->header
.offset
6967 + per_cu
->cu
->header
.first_die_offset
);
6968 abbrev
= peek_die_abbrev (info_ptr
, &bytes_read
, per_cu
->cu
);
6969 info_ptr
= read_partial_die (&comp_unit_die
, abbrev
, bytes_read
,
6970 per_cu
->cu
->objfile
->obfd
,
6971 dwarf2_per_objfile
->info
.buffer
, info_ptr
,
6973 if (comp_unit_die
.has_children
)
6974 load_partial_dies (per_cu
->cu
->objfile
->obfd
,
6975 dwarf2_per_objfile
->info
.buffer
, info_ptr
,
6977 do_cleanups (back_to
);
6979 pd
= find_partial_die_in_comp_unit (offset
, per_cu
->cu
);
6985 internal_error (__FILE__
, __LINE__
,
6986 _("could not find partial DIE 0x%x in cache [from module %s]\n"),
6987 offset
, bfd_get_filename (cu
->objfile
->obfd
));
6991 /* Adjust PART_DIE before generating a symbol for it. This function
6992 may set the is_external flag or change the DIE's name. */
6995 fixup_partial_die (struct partial_die_info
*part_die
,
6996 struct dwarf2_cu
*cu
)
6998 /* If we found a reference attribute and the DIE has no name, try
6999 to find a name in the referred to DIE. */
7001 if (part_die
->name
== NULL
&& part_die
->has_specification
)
7003 struct partial_die_info
*spec_die
;
7005 spec_die
= find_partial_die (part_die
->spec_offset
, cu
);
7007 fixup_partial_die (spec_die
, cu
);
7011 part_die
->name
= spec_die
->name
;
7013 /* Copy DW_AT_external attribute if it is set. */
7014 if (spec_die
->is_external
)
7015 part_die
->is_external
= spec_die
->is_external
;
7019 /* Set default names for some unnamed DIEs. */
7020 if (part_die
->name
== NULL
&& (part_die
->tag
== DW_TAG_structure_type
7021 || part_die
->tag
== DW_TAG_class_type
))
7022 part_die
->name
= "(anonymous class)";
7024 if (part_die
->name
== NULL
&& part_die
->tag
== DW_TAG_namespace
)
7025 part_die
->name
= "(anonymous namespace)";
7027 if (part_die
->tag
== DW_TAG_structure_type
7028 || part_die
->tag
== DW_TAG_class_type
7029 || part_die
->tag
== DW_TAG_union_type
)
7030 guess_structure_name (part_die
, cu
);
7033 /* Read an attribute value described by an attribute form. */
7036 read_attribute_value (struct attribute
*attr
, unsigned form
,
7037 bfd
*abfd
, gdb_byte
*info_ptr
,
7038 struct dwarf2_cu
*cu
)
7040 struct comp_unit_head
*cu_header
= &cu
->header
;
7041 unsigned int bytes_read
;
7042 struct dwarf_block
*blk
;
7047 case DW_FORM_ref_addr
:
7048 if (cu
->header
.version
== 2)
7049 DW_ADDR (attr
) = read_address (abfd
, info_ptr
, cu
, &bytes_read
);
7051 DW_ADDR (attr
) = read_offset (abfd
, info_ptr
, &cu
->header
, &bytes_read
);
7052 info_ptr
+= bytes_read
;
7055 DW_ADDR (attr
) = read_address (abfd
, info_ptr
, cu
, &bytes_read
);
7056 info_ptr
+= bytes_read
;
7058 case DW_FORM_block2
:
7059 blk
= dwarf_alloc_block (cu
);
7060 blk
->size
= read_2_bytes (abfd
, info_ptr
);
7062 blk
->data
= read_n_bytes (abfd
, info_ptr
, blk
->size
);
7063 info_ptr
+= blk
->size
;
7064 DW_BLOCK (attr
) = blk
;
7066 case DW_FORM_block4
:
7067 blk
= dwarf_alloc_block (cu
);
7068 blk
->size
= read_4_bytes (abfd
, info_ptr
);
7070 blk
->data
= read_n_bytes (abfd
, info_ptr
, blk
->size
);
7071 info_ptr
+= blk
->size
;
7072 DW_BLOCK (attr
) = blk
;
7075 DW_UNSND (attr
) = read_2_bytes (abfd
, info_ptr
);
7079 DW_UNSND (attr
) = read_4_bytes (abfd
, info_ptr
);
7083 DW_UNSND (attr
) = read_8_bytes (abfd
, info_ptr
);
7086 case DW_FORM_string
:
7087 DW_STRING (attr
) = read_string (abfd
, info_ptr
, &bytes_read
);
7088 DW_STRING_IS_CANONICAL (attr
) = 0;
7089 info_ptr
+= bytes_read
;
7092 DW_STRING (attr
) = read_indirect_string (abfd
, info_ptr
, cu_header
,
7094 DW_STRING_IS_CANONICAL (attr
) = 0;
7095 info_ptr
+= bytes_read
;
7098 blk
= dwarf_alloc_block (cu
);
7099 blk
->size
= read_unsigned_leb128 (abfd
, info_ptr
, &bytes_read
);
7100 info_ptr
+= bytes_read
;
7101 blk
->data
= read_n_bytes (abfd
, info_ptr
, blk
->size
);
7102 info_ptr
+= blk
->size
;
7103 DW_BLOCK (attr
) = blk
;
7105 case DW_FORM_block1
:
7106 blk
= dwarf_alloc_block (cu
);
7107 blk
->size
= read_1_byte (abfd
, info_ptr
);
7109 blk
->data
= read_n_bytes (abfd
, info_ptr
, blk
->size
);
7110 info_ptr
+= blk
->size
;
7111 DW_BLOCK (attr
) = blk
;
7114 DW_UNSND (attr
) = read_1_byte (abfd
, info_ptr
);
7118 DW_UNSND (attr
) = read_1_byte (abfd
, info_ptr
);
7122 DW_SND (attr
) = read_signed_leb128 (abfd
, info_ptr
, &bytes_read
);
7123 info_ptr
+= bytes_read
;
7126 DW_UNSND (attr
) = read_unsigned_leb128 (abfd
, info_ptr
, &bytes_read
);
7127 info_ptr
+= bytes_read
;
7130 DW_ADDR (attr
) = cu
->header
.offset
+ read_1_byte (abfd
, info_ptr
);
7134 DW_ADDR (attr
) = cu
->header
.offset
+ read_2_bytes (abfd
, info_ptr
);
7138 DW_ADDR (attr
) = cu
->header
.offset
+ read_4_bytes (abfd
, info_ptr
);
7142 DW_ADDR (attr
) = cu
->header
.offset
+ read_8_bytes (abfd
, info_ptr
);
7146 /* Convert the signature to something we can record in DW_UNSND
7148 NOTE: This is NULL if the type wasn't found. */
7149 DW_SIGNATURED_TYPE (attr
) =
7150 lookup_signatured_type (cu
->objfile
, read_8_bytes (abfd
, info_ptr
));
7153 case DW_FORM_ref_udata
:
7154 DW_ADDR (attr
) = (cu
->header
.offset
7155 + read_unsigned_leb128 (abfd
, info_ptr
, &bytes_read
));
7156 info_ptr
+= bytes_read
;
7158 case DW_FORM_indirect
:
7159 form
= read_unsigned_leb128 (abfd
, info_ptr
, &bytes_read
);
7160 info_ptr
+= bytes_read
;
7161 info_ptr
= read_attribute_value (attr
, form
, abfd
, info_ptr
, cu
);
7164 error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
7165 dwarf_form_name (form
),
7166 bfd_get_filename (abfd
));
7169 /* We have seen instances where the compiler tried to emit a byte
7170 size attribute of -1 which ended up being encoded as an unsigned
7171 0xffffffff. Although 0xffffffff is technically a valid size value,
7172 an object of this size seems pretty unlikely so we can relatively
7173 safely treat these cases as if the size attribute was invalid and
7174 treat them as zero by default. */
7175 if (attr
->name
== DW_AT_byte_size
7176 && form
== DW_FORM_data4
7177 && DW_UNSND (attr
) >= 0xffffffff)
7180 (&symfile_complaints
,
7181 _("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
7182 hex_string (DW_UNSND (attr
)));
7183 DW_UNSND (attr
) = 0;
7189 /* Read an attribute described by an abbreviated attribute. */
7192 read_attribute (struct attribute
*attr
, struct attr_abbrev
*abbrev
,
7193 bfd
*abfd
, gdb_byte
*info_ptr
, struct dwarf2_cu
*cu
)
7195 attr
->name
= abbrev
->name
;
7196 return read_attribute_value (attr
, abbrev
->form
, abfd
, info_ptr
, cu
);
7199 /* read dwarf information from a buffer */
7202 read_1_byte (bfd
*abfd
, gdb_byte
*buf
)
7204 return bfd_get_8 (abfd
, buf
);
7208 read_1_signed_byte (bfd
*abfd
, gdb_byte
*buf
)
7210 return bfd_get_signed_8 (abfd
, buf
);
7214 read_2_bytes (bfd
*abfd
, gdb_byte
*buf
)
7216 return bfd_get_16 (abfd
, buf
);
7220 read_2_signed_bytes (bfd
*abfd
, gdb_byte
*buf
)
7222 return bfd_get_signed_16 (abfd
, buf
);
7226 read_4_bytes (bfd
*abfd
, gdb_byte
*buf
)
7228 return bfd_get_32 (abfd
, buf
);
7232 read_4_signed_bytes (bfd
*abfd
, gdb_byte
*buf
)
7234 return bfd_get_signed_32 (abfd
, buf
);
7238 read_8_bytes (bfd
*abfd
, gdb_byte
*buf
)
7240 return bfd_get_64 (abfd
, buf
);
7244 read_address (bfd
*abfd
, gdb_byte
*buf
, struct dwarf2_cu
*cu
,
7245 unsigned int *bytes_read
)
7247 struct comp_unit_head
*cu_header
= &cu
->header
;
7248 CORE_ADDR retval
= 0;
7250 if (cu_header
->signed_addr_p
)
7252 switch (cu_header
->addr_size
)
7255 retval
= bfd_get_signed_16 (abfd
, buf
);
7258 retval
= bfd_get_signed_32 (abfd
, buf
);
7261 retval
= bfd_get_signed_64 (abfd
, buf
);
7264 internal_error (__FILE__
, __LINE__
,
7265 _("read_address: bad switch, signed [in module %s]"),
7266 bfd_get_filename (abfd
));
7271 switch (cu_header
->addr_size
)
7274 retval
= bfd_get_16 (abfd
, buf
);
7277 retval
= bfd_get_32 (abfd
, buf
);
7280 retval
= bfd_get_64 (abfd
, buf
);
7283 internal_error (__FILE__
, __LINE__
,
7284 _("read_address: bad switch, unsigned [in module %s]"),
7285 bfd_get_filename (abfd
));
7289 *bytes_read
= cu_header
->addr_size
;
7293 /* Read the initial length from a section. The (draft) DWARF 3
7294 specification allows the initial length to take up either 4 bytes
7295 or 12 bytes. If the first 4 bytes are 0xffffffff, then the next 8
7296 bytes describe the length and all offsets will be 8 bytes in length
7299 An older, non-standard 64-bit format is also handled by this
7300 function. The older format in question stores the initial length
7301 as an 8-byte quantity without an escape value. Lengths greater
7302 than 2^32 aren't very common which means that the initial 4 bytes
7303 is almost always zero. Since a length value of zero doesn't make
7304 sense for the 32-bit format, this initial zero can be considered to
7305 be an escape value which indicates the presence of the older 64-bit
7306 format. As written, the code can't detect (old format) lengths
7307 greater than 4GB. If it becomes necessary to handle lengths
7308 somewhat larger than 4GB, we could allow other small values (such
7309 as the non-sensical values of 1, 2, and 3) to also be used as
7310 escape values indicating the presence of the old format.
7312 The value returned via bytes_read should be used to increment the
7313 relevant pointer after calling read_initial_length().
7315 [ Note: read_initial_length() and read_offset() are based on the
7316 document entitled "DWARF Debugging Information Format", revision
7317 3, draft 8, dated November 19, 2001. This document was obtained
7320 http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
7322 This document is only a draft and is subject to change. (So beware.)
7324 Details regarding the older, non-standard 64-bit format were
7325 determined empirically by examining 64-bit ELF files produced by
7326 the SGI toolchain on an IRIX 6.5 machine.
7328 - Kevin, July 16, 2002
7332 read_initial_length (bfd
*abfd
, gdb_byte
*buf
, unsigned int *bytes_read
)
7334 LONGEST length
= bfd_get_32 (abfd
, buf
);
7336 if (length
== 0xffffffff)
7338 length
= bfd_get_64 (abfd
, buf
+ 4);
7341 else if (length
== 0)
7343 /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX. */
7344 length
= bfd_get_64 (abfd
, buf
);
7355 /* Cover function for read_initial_length.
7356 Returns the length of the object at BUF, and stores the size of the
7357 initial length in *BYTES_READ and stores the size that offsets will be in
7359 If the initial length size is not equivalent to that specified in
7360 CU_HEADER then issue a complaint.
7361 This is useful when reading non-comp-unit headers. */
7364 read_checked_initial_length_and_offset (bfd
*abfd
, gdb_byte
*buf
,
7365 const struct comp_unit_head
*cu_header
,
7366 unsigned int *bytes_read
,
7367 unsigned int *offset_size
)
7369 LONGEST length
= read_initial_length (abfd
, buf
, bytes_read
);
7371 gdb_assert (cu_header
->initial_length_size
== 4
7372 || cu_header
->initial_length_size
== 8
7373 || cu_header
->initial_length_size
== 12);
7375 if (cu_header
->initial_length_size
!= *bytes_read
)
7376 complaint (&symfile_complaints
,
7377 _("intermixed 32-bit and 64-bit DWARF sections"));
7379 *offset_size
= (*bytes_read
== 4) ? 4 : 8;
7383 /* Read an offset from the data stream. The size of the offset is
7384 given by cu_header->offset_size. */
7387 read_offset (bfd
*abfd
, gdb_byte
*buf
, const struct comp_unit_head
*cu_header
,
7388 unsigned int *bytes_read
)
7390 LONGEST offset
= read_offset_1 (abfd
, buf
, cu_header
->offset_size
);
7391 *bytes_read
= cu_header
->offset_size
;
7395 /* Read an offset from the data stream. */
7398 read_offset_1 (bfd
*abfd
, gdb_byte
*buf
, unsigned int offset_size
)
7402 switch (offset_size
)
7405 retval
= bfd_get_32 (abfd
, buf
);
7408 retval
= bfd_get_64 (abfd
, buf
);
7411 internal_error (__FILE__
, __LINE__
,
7412 _("read_offset_1: bad switch [in module %s]"),
7413 bfd_get_filename (abfd
));
7420 read_n_bytes (bfd
*abfd
, gdb_byte
*buf
, unsigned int size
)
7422 /* If the size of a host char is 8 bits, we can return a pointer
7423 to the buffer, otherwise we have to copy the data to a buffer
7424 allocated on the temporary obstack. */
7425 gdb_assert (HOST_CHAR_BIT
== 8);
7430 read_string (bfd
*abfd
, gdb_byte
*buf
, unsigned int *bytes_read_ptr
)
7432 /* If the size of a host char is 8 bits, we can return a pointer
7433 to the string, otherwise we have to copy the string to a buffer
7434 allocated on the temporary obstack. */
7435 gdb_assert (HOST_CHAR_BIT
== 8);
7438 *bytes_read_ptr
= 1;
7441 *bytes_read_ptr
= strlen ((char *) buf
) + 1;
7442 return (char *) buf
;
7446 read_indirect_string (bfd
*abfd
, gdb_byte
*buf
,
7447 const struct comp_unit_head
*cu_header
,
7448 unsigned int *bytes_read_ptr
)
7450 LONGEST str_offset
= read_offset (abfd
, buf
, cu_header
, bytes_read_ptr
);
7452 if (dwarf2_per_objfile
->str
.buffer
== NULL
)
7454 error (_("DW_FORM_strp used without .debug_str section [in module %s]"),
7455 bfd_get_filename (abfd
));
7458 if (str_offset
>= dwarf2_per_objfile
->str
.size
)
7460 error (_("DW_FORM_strp pointing outside of .debug_str section [in module %s]"),
7461 bfd_get_filename (abfd
));
7464 gdb_assert (HOST_CHAR_BIT
== 8);
7465 if (dwarf2_per_objfile
->str
.buffer
[str_offset
] == '\0')
7467 return (char *) (dwarf2_per_objfile
->str
.buffer
+ str_offset
);
7470 static unsigned long
7471 read_unsigned_leb128 (bfd
*abfd
, gdb_byte
*buf
, unsigned int *bytes_read_ptr
)
7473 unsigned long result
;
7474 unsigned int num_read
;
7484 byte
= bfd_get_8 (abfd
, buf
);
7487 result
|= ((unsigned long)(byte
& 127) << shift
);
7488 if ((byte
& 128) == 0)
7494 *bytes_read_ptr
= num_read
;
7499 read_signed_leb128 (bfd
*abfd
, gdb_byte
*buf
, unsigned int *bytes_read_ptr
)
7502 int i
, shift
, num_read
;
7511 byte
= bfd_get_8 (abfd
, buf
);
7514 result
|= ((long)(byte
& 127) << shift
);
7516 if ((byte
& 128) == 0)
7521 if ((shift
< 8 * sizeof (result
)) && (byte
& 0x40))
7522 result
|= -(((long)1) << shift
);
7523 *bytes_read_ptr
= num_read
;
7527 /* Return a pointer to just past the end of an LEB128 number in BUF. */
7530 skip_leb128 (bfd
*abfd
, gdb_byte
*buf
)
7536 byte
= bfd_get_8 (abfd
, buf
);
7538 if ((byte
& 128) == 0)
7544 set_cu_language (unsigned int lang
, struct dwarf2_cu
*cu
)
7551 cu
->language
= language_c
;
7553 case DW_LANG_C_plus_plus
:
7554 cu
->language
= language_cplus
;
7556 case DW_LANG_Fortran77
:
7557 case DW_LANG_Fortran90
:
7558 case DW_LANG_Fortran95
:
7559 cu
->language
= language_fortran
;
7561 case DW_LANG_Mips_Assembler
:
7562 cu
->language
= language_asm
;
7565 cu
->language
= language_java
;
7569 cu
->language
= language_ada
;
7571 case DW_LANG_Modula2
:
7572 cu
->language
= language_m2
;
7574 case DW_LANG_Pascal83
:
7575 cu
->language
= language_pascal
;
7578 cu
->language
= language_objc
;
7580 case DW_LANG_Cobol74
:
7581 case DW_LANG_Cobol85
:
7583 cu
->language
= language_minimal
;
7586 cu
->language_defn
= language_def (cu
->language
);
7589 /* Return the named attribute or NULL if not there. */
7591 static struct attribute
*
7592 dwarf2_attr (struct die_info
*die
, unsigned int name
, struct dwarf2_cu
*cu
)
7595 struct attribute
*spec
= NULL
;
7597 for (i
= 0; i
< die
->num_attrs
; ++i
)
7599 if (die
->attrs
[i
].name
== name
)
7600 return &die
->attrs
[i
];
7601 if (die
->attrs
[i
].name
== DW_AT_specification
7602 || die
->attrs
[i
].name
== DW_AT_abstract_origin
)
7603 spec
= &die
->attrs
[i
];
7608 die
= follow_die_ref (die
, spec
, &cu
);
7609 return dwarf2_attr (die
, name
, cu
);
7615 /* Return the named attribute or NULL if not there,
7616 but do not follow DW_AT_specification, etc.
7617 This is for use in contexts where we're reading .debug_types dies.
7618 Following DW_AT_specification, DW_AT_abstract_origin will take us
7619 back up the chain, and we want to go down. */
7621 static struct attribute
*
7622 dwarf2_attr_no_follow (struct die_info
*die
, unsigned int name
,
7623 struct dwarf2_cu
*cu
)
7627 for (i
= 0; i
< die
->num_attrs
; ++i
)
7628 if (die
->attrs
[i
].name
== name
)
7629 return &die
->attrs
[i
];
7634 /* Return non-zero iff the attribute NAME is defined for the given DIE,
7635 and holds a non-zero value. This function should only be used for
7636 DW_FORM_flag attributes. */
7639 dwarf2_flag_true_p (struct die_info
*die
, unsigned name
, struct dwarf2_cu
*cu
)
7641 struct attribute
*attr
= dwarf2_attr (die
, name
, cu
);
7643 return (attr
&& DW_UNSND (attr
));
7647 die_is_declaration (struct die_info
*die
, struct dwarf2_cu
*cu
)
7649 /* A DIE is a declaration if it has a DW_AT_declaration attribute
7650 which value is non-zero. However, we have to be careful with
7651 DIEs having a DW_AT_specification attribute, because dwarf2_attr()
7652 (via dwarf2_flag_true_p) follows this attribute. So we may
7653 end up accidently finding a declaration attribute that belongs
7654 to a different DIE referenced by the specification attribute,
7655 even though the given DIE does not have a declaration attribute. */
7656 return (dwarf2_flag_true_p (die
, DW_AT_declaration
, cu
)
7657 && dwarf2_attr (die
, DW_AT_specification
, cu
) == NULL
);
7660 /* Return the die giving the specification for DIE, if there is
7661 one. *SPEC_CU is the CU containing DIE on input, and the CU
7662 containing the return value on output. If there is no
7663 specification, but there is an abstract origin, that is
7666 static struct die_info
*
7667 die_specification (struct die_info
*die
, struct dwarf2_cu
**spec_cu
)
7669 struct attribute
*spec_attr
= dwarf2_attr (die
, DW_AT_specification
,
7672 if (spec_attr
== NULL
)
7673 spec_attr
= dwarf2_attr (die
, DW_AT_abstract_origin
, *spec_cu
);
7675 if (spec_attr
== NULL
)
7678 return follow_die_ref (die
, spec_attr
, spec_cu
);
7681 /* Free the line_header structure *LH, and any arrays and strings it
7684 free_line_header (struct line_header
*lh
)
7686 if (lh
->standard_opcode_lengths
)
7687 xfree (lh
->standard_opcode_lengths
);
7689 /* Remember that all the lh->file_names[i].name pointers are
7690 pointers into debug_line_buffer, and don't need to be freed. */
7692 xfree (lh
->file_names
);
7694 /* Similarly for the include directory names. */
7695 if (lh
->include_dirs
)
7696 xfree (lh
->include_dirs
);
7702 /* Add an entry to LH's include directory table. */
7704 add_include_dir (struct line_header
*lh
, char *include_dir
)
7706 /* Grow the array if necessary. */
7707 if (lh
->include_dirs_size
== 0)
7709 lh
->include_dirs_size
= 1; /* for testing */
7710 lh
->include_dirs
= xmalloc (lh
->include_dirs_size
7711 * sizeof (*lh
->include_dirs
));
7713 else if (lh
->num_include_dirs
>= lh
->include_dirs_size
)
7715 lh
->include_dirs_size
*= 2;
7716 lh
->include_dirs
= xrealloc (lh
->include_dirs
,
7717 (lh
->include_dirs_size
7718 * sizeof (*lh
->include_dirs
)));
7721 lh
->include_dirs
[lh
->num_include_dirs
++] = include_dir
;
7725 /* Add an entry to LH's file name table. */
7727 add_file_name (struct line_header
*lh
,
7729 unsigned int dir_index
,
7730 unsigned int mod_time
,
7731 unsigned int length
)
7733 struct file_entry
*fe
;
7735 /* Grow the array if necessary. */
7736 if (lh
->file_names_size
== 0)
7738 lh
->file_names_size
= 1; /* for testing */
7739 lh
->file_names
= xmalloc (lh
->file_names_size
7740 * sizeof (*lh
->file_names
));
7742 else if (lh
->num_file_names
>= lh
->file_names_size
)
7744 lh
->file_names_size
*= 2;
7745 lh
->file_names
= xrealloc (lh
->file_names
,
7746 (lh
->file_names_size
7747 * sizeof (*lh
->file_names
)));
7750 fe
= &lh
->file_names
[lh
->num_file_names
++];
7752 fe
->dir_index
= dir_index
;
7753 fe
->mod_time
= mod_time
;
7754 fe
->length
= length
;
7760 /* Read the statement program header starting at OFFSET in
7761 .debug_line, according to the endianness of ABFD. Return a pointer
7762 to a struct line_header, allocated using xmalloc.
7764 NOTE: the strings in the include directory and file name tables of
7765 the returned object point into debug_line_buffer, and must not be
7767 static struct line_header
*
7768 dwarf_decode_line_header (unsigned int offset
, bfd
*abfd
,
7769 struct dwarf2_cu
*cu
)
7771 struct cleanup
*back_to
;
7772 struct line_header
*lh
;
7774 unsigned int bytes_read
, offset_size
;
7776 char *cur_dir
, *cur_file
;
7778 if (dwarf2_per_objfile
->line
.buffer
== NULL
)
7780 complaint (&symfile_complaints
, _("missing .debug_line section"));
7784 /* Make sure that at least there's room for the total_length field.
7785 That could be 12 bytes long, but we're just going to fudge that. */
7786 if (offset
+ 4 >= dwarf2_per_objfile
->line
.size
)
7788 dwarf2_statement_list_fits_in_line_number_section_complaint ();
7792 lh
= xmalloc (sizeof (*lh
));
7793 memset (lh
, 0, sizeof (*lh
));
7794 back_to
= make_cleanup ((make_cleanup_ftype
*) free_line_header
,
7797 line_ptr
= dwarf2_per_objfile
->line
.buffer
+ offset
;
7799 /* Read in the header. */
7801 read_checked_initial_length_and_offset (abfd
, line_ptr
, &cu
->header
,
7802 &bytes_read
, &offset_size
);
7803 line_ptr
+= bytes_read
;
7804 if (line_ptr
+ lh
->total_length
> (dwarf2_per_objfile
->line
.buffer
7805 + dwarf2_per_objfile
->line
.size
))
7807 dwarf2_statement_list_fits_in_line_number_section_complaint ();
7810 lh
->statement_program_end
= line_ptr
+ lh
->total_length
;
7811 lh
->version
= read_2_bytes (abfd
, line_ptr
);
7813 lh
->header_length
= read_offset_1 (abfd
, line_ptr
, offset_size
);
7814 line_ptr
+= offset_size
;
7815 lh
->minimum_instruction_length
= read_1_byte (abfd
, line_ptr
);
7817 lh
->default_is_stmt
= read_1_byte (abfd
, line_ptr
);
7819 lh
->line_base
= read_1_signed_byte (abfd
, line_ptr
);
7821 lh
->line_range
= read_1_byte (abfd
, line_ptr
);
7823 lh
->opcode_base
= read_1_byte (abfd
, line_ptr
);
7825 lh
->standard_opcode_lengths
7826 = xmalloc (lh
->opcode_base
* sizeof (lh
->standard_opcode_lengths
[0]));
7828 lh
->standard_opcode_lengths
[0] = 1; /* This should never be used anyway. */
7829 for (i
= 1; i
< lh
->opcode_base
; ++i
)
7831 lh
->standard_opcode_lengths
[i
] = read_1_byte (abfd
, line_ptr
);
7835 /* Read directory table. */
7836 while ((cur_dir
= read_string (abfd
, line_ptr
, &bytes_read
)) != NULL
)
7838 line_ptr
+= bytes_read
;
7839 add_include_dir (lh
, cur_dir
);
7841 line_ptr
+= bytes_read
;
7843 /* Read file name table. */
7844 while ((cur_file
= read_string (abfd
, line_ptr
, &bytes_read
)) != NULL
)
7846 unsigned int dir_index
, mod_time
, length
;
7848 line_ptr
+= bytes_read
;
7849 dir_index
= read_unsigned_leb128 (abfd
, line_ptr
, &bytes_read
);
7850 line_ptr
+= bytes_read
;
7851 mod_time
= read_unsigned_leb128 (abfd
, line_ptr
, &bytes_read
);
7852 line_ptr
+= bytes_read
;
7853 length
= read_unsigned_leb128 (abfd
, line_ptr
, &bytes_read
);
7854 line_ptr
+= bytes_read
;
7856 add_file_name (lh
, cur_file
, dir_index
, mod_time
, length
);
7858 line_ptr
+= bytes_read
;
7859 lh
->statement_program_start
= line_ptr
;
7861 if (line_ptr
> (dwarf2_per_objfile
->line
.buffer
7862 + dwarf2_per_objfile
->line
.size
))
7863 complaint (&symfile_complaints
,
7864 _("line number info header doesn't fit in `.debug_line' section"));
7866 discard_cleanups (back_to
);
7870 /* This function exists to work around a bug in certain compilers
7871 (particularly GCC 2.95), in which the first line number marker of a
7872 function does not show up until after the prologue, right before
7873 the second line number marker. This function shifts ADDRESS down
7874 to the beginning of the function if necessary, and is called on
7875 addresses passed to record_line. */
7878 check_cu_functions (CORE_ADDR address
, struct dwarf2_cu
*cu
)
7880 struct function_range
*fn
;
7882 /* Find the function_range containing address. */
7887 cu
->cached_fn
= cu
->first_fn
;
7891 if (fn
->lowpc
<= address
&& fn
->highpc
> address
)
7897 while (fn
&& fn
!= cu
->cached_fn
)
7898 if (fn
->lowpc
<= address
&& fn
->highpc
> address
)
7908 if (address
!= fn
->lowpc
)
7909 complaint (&symfile_complaints
,
7910 _("misplaced first line number at 0x%lx for '%s'"),
7911 (unsigned long) address
, fn
->name
);
7916 /* Decode the Line Number Program (LNP) for the given line_header
7917 structure and CU. The actual information extracted and the type
7918 of structures created from the LNP depends on the value of PST.
7920 1. If PST is NULL, then this procedure uses the data from the program
7921 to create all necessary symbol tables, and their linetables.
7922 The compilation directory of the file is passed in COMP_DIR,
7923 and must not be NULL.
7925 2. If PST is not NULL, this procedure reads the program to determine
7926 the list of files included by the unit represented by PST, and
7927 builds all the associated partial symbol tables. In this case,
7928 the value of COMP_DIR is ignored, and can thus be NULL (the COMP_DIR
7929 is not used to compute the full name of the symtab, and therefore
7930 omitting it when building the partial symtab does not introduce
7931 the potential for inconsistency - a partial symtab and its associated
7932 symbtab having a different fullname -). */
7935 dwarf_decode_lines (struct line_header
*lh
, char *comp_dir
, bfd
*abfd
,
7936 struct dwarf2_cu
*cu
, struct partial_symtab
*pst
)
7938 gdb_byte
*line_ptr
, *extended_end
;
7940 unsigned int bytes_read
, extended_len
;
7941 unsigned char op_code
, extended_op
, adj_opcode
;
7943 struct objfile
*objfile
= cu
->objfile
;
7944 struct gdbarch
*gdbarch
= get_objfile_arch (objfile
);
7945 const int decode_for_pst_p
= (pst
!= NULL
);
7946 struct subfile
*last_subfile
= NULL
, *first_subfile
= current_subfile
;
7948 baseaddr
= ANOFFSET (objfile
->section_offsets
, SECT_OFF_TEXT (objfile
));
7950 line_ptr
= lh
->statement_program_start
;
7951 line_end
= lh
->statement_program_end
;
7953 /* Read the statement sequences until there's nothing left. */
7954 while (line_ptr
< line_end
)
7956 /* state machine registers */
7957 CORE_ADDR address
= 0;
7958 unsigned int file
= 1;
7959 unsigned int line
= 1;
7960 unsigned int column
= 0;
7961 int is_stmt
= lh
->default_is_stmt
;
7962 int basic_block
= 0;
7963 int end_sequence
= 0;
7966 if (!decode_for_pst_p
&& lh
->num_file_names
>= file
)
7968 /* Start a subfile for the current file of the state machine. */
7969 /* lh->include_dirs and lh->file_names are 0-based, but the
7970 directory and file name numbers in the statement program
7972 struct file_entry
*fe
= &lh
->file_names
[file
- 1];
7976 dir
= lh
->include_dirs
[fe
->dir_index
- 1];
7978 dwarf2_start_subfile (fe
->name
, dir
, comp_dir
);
7981 /* Decode the table. */
7982 while (!end_sequence
)
7984 op_code
= read_1_byte (abfd
, line_ptr
);
7986 if (line_ptr
> line_end
)
7988 dwarf2_debug_line_missing_end_sequence_complaint ();
7992 if (op_code
>= lh
->opcode_base
)
7994 /* Special operand. */
7995 adj_opcode
= op_code
- lh
->opcode_base
;
7996 address
+= (adj_opcode
/ lh
->line_range
)
7997 * lh
->minimum_instruction_length
;
7998 line
+= lh
->line_base
+ (adj_opcode
% lh
->line_range
);
7999 if (lh
->num_file_names
< file
|| file
== 0)
8000 dwarf2_debug_line_missing_file_complaint ();
8003 lh
->file_names
[file
- 1].included_p
= 1;
8004 if (!decode_for_pst_p
&& is_stmt
)
8006 if (last_subfile
!= current_subfile
)
8008 addr
= gdbarch_addr_bits_remove (gdbarch
, address
);
8010 record_line (last_subfile
, 0, addr
);
8011 last_subfile
= current_subfile
;
8013 /* Append row to matrix using current values. */
8014 addr
= check_cu_functions (address
, cu
);
8015 addr
= gdbarch_addr_bits_remove (gdbarch
, addr
);
8016 record_line (current_subfile
, line
, addr
);
8021 else switch (op_code
)
8023 case DW_LNS_extended_op
:
8024 extended_len
= read_unsigned_leb128 (abfd
, line_ptr
, &bytes_read
);
8025 line_ptr
+= bytes_read
;
8026 extended_end
= line_ptr
+ extended_len
;
8027 extended_op
= read_1_byte (abfd
, line_ptr
);
8029 switch (extended_op
)
8031 case DW_LNE_end_sequence
:
8034 case DW_LNE_set_address
:
8035 address
= read_address (abfd
, line_ptr
, cu
, &bytes_read
);
8036 line_ptr
+= bytes_read
;
8037 address
+= baseaddr
;
8039 case DW_LNE_define_file
:
8042 unsigned int dir_index
, mod_time
, length
;
8044 cur_file
= read_string (abfd
, line_ptr
, &bytes_read
);
8045 line_ptr
+= bytes_read
;
8047 read_unsigned_leb128 (abfd
, line_ptr
, &bytes_read
);
8048 line_ptr
+= bytes_read
;
8050 read_unsigned_leb128 (abfd
, line_ptr
, &bytes_read
);
8051 line_ptr
+= bytes_read
;
8053 read_unsigned_leb128 (abfd
, line_ptr
, &bytes_read
);
8054 line_ptr
+= bytes_read
;
8055 add_file_name (lh
, cur_file
, dir_index
, mod_time
, length
);
8058 case DW_LNE_set_discriminator
:
8059 /* The discriminator is not interesting to the debugger;
8061 line_ptr
= extended_end
;
8064 complaint (&symfile_complaints
,
8065 _("mangled .debug_line section"));
8068 /* Make sure that we parsed the extended op correctly. If e.g.
8069 we expected a different address size than the producer used,
8070 we may have read the wrong number of bytes. */
8071 if (line_ptr
!= extended_end
)
8073 complaint (&symfile_complaints
,
8074 _("mangled .debug_line section"));
8079 if (lh
->num_file_names
< file
|| file
== 0)
8080 dwarf2_debug_line_missing_file_complaint ();
8083 lh
->file_names
[file
- 1].included_p
= 1;
8084 if (!decode_for_pst_p
&& is_stmt
)
8086 if (last_subfile
!= current_subfile
)
8088 addr
= gdbarch_addr_bits_remove (gdbarch
, address
);
8090 record_line (last_subfile
, 0, addr
);
8091 last_subfile
= current_subfile
;
8093 addr
= check_cu_functions (address
, cu
);
8094 addr
= gdbarch_addr_bits_remove (gdbarch
, addr
);
8095 record_line (current_subfile
, line
, addr
);
8100 case DW_LNS_advance_pc
:
8101 address
+= lh
->minimum_instruction_length
8102 * read_unsigned_leb128 (abfd
, line_ptr
, &bytes_read
);
8103 line_ptr
+= bytes_read
;
8105 case DW_LNS_advance_line
:
8106 line
+= read_signed_leb128 (abfd
, line_ptr
, &bytes_read
);
8107 line_ptr
+= bytes_read
;
8109 case DW_LNS_set_file
:
8111 /* The arrays lh->include_dirs and lh->file_names are
8112 0-based, but the directory and file name numbers in
8113 the statement program are 1-based. */
8114 struct file_entry
*fe
;
8117 file
= read_unsigned_leb128 (abfd
, line_ptr
, &bytes_read
);
8118 line_ptr
+= bytes_read
;
8119 if (lh
->num_file_names
< file
|| file
== 0)
8120 dwarf2_debug_line_missing_file_complaint ();
8123 fe
= &lh
->file_names
[file
- 1];
8125 dir
= lh
->include_dirs
[fe
->dir_index
- 1];
8126 if (!decode_for_pst_p
)
8128 last_subfile
= current_subfile
;
8129 dwarf2_start_subfile (fe
->name
, dir
, comp_dir
);
8134 case DW_LNS_set_column
:
8135 column
= read_unsigned_leb128 (abfd
, line_ptr
, &bytes_read
);
8136 line_ptr
+= bytes_read
;
8138 case DW_LNS_negate_stmt
:
8139 is_stmt
= (!is_stmt
);
8141 case DW_LNS_set_basic_block
:
8144 /* Add to the address register of the state machine the
8145 address increment value corresponding to special opcode
8146 255. I.e., this value is scaled by the minimum
8147 instruction length since special opcode 255 would have
8148 scaled the the increment. */
8149 case DW_LNS_const_add_pc
:
8150 address
+= (lh
->minimum_instruction_length
8151 * ((255 - lh
->opcode_base
) / lh
->line_range
));
8153 case DW_LNS_fixed_advance_pc
:
8154 address
+= read_2_bytes (abfd
, line_ptr
);
8159 /* Unknown standard opcode, ignore it. */
8162 for (i
= 0; i
< lh
->standard_opcode_lengths
[op_code
]; i
++)
8164 (void) read_unsigned_leb128 (abfd
, line_ptr
, &bytes_read
);
8165 line_ptr
+= bytes_read
;
8170 if (lh
->num_file_names
< file
|| file
== 0)
8171 dwarf2_debug_line_missing_file_complaint ();
8174 lh
->file_names
[file
- 1].included_p
= 1;
8175 if (!decode_for_pst_p
)
8177 addr
= gdbarch_addr_bits_remove (gdbarch
, address
);
8178 record_line (current_subfile
, 0, addr
);
8183 if (decode_for_pst_p
)
8187 /* Now that we're done scanning the Line Header Program, we can
8188 create the psymtab of each included file. */
8189 for (file_index
= 0; file_index
< lh
->num_file_names
; file_index
++)
8190 if (lh
->file_names
[file_index
].included_p
== 1)
8192 const struct file_entry fe
= lh
->file_names
[file_index
];
8193 char *include_name
= fe
.name
;
8194 char *dir_name
= NULL
;
8195 char *pst_filename
= pst
->filename
;
8198 dir_name
= lh
->include_dirs
[fe
.dir_index
- 1];
8200 if (!IS_ABSOLUTE_PATH (include_name
) && dir_name
!= NULL
)
8202 include_name
= concat (dir_name
, SLASH_STRING
,
8203 include_name
, (char *)NULL
);
8204 make_cleanup (xfree
, include_name
);
8207 if (!IS_ABSOLUTE_PATH (pst_filename
) && pst
->dirname
!= NULL
)
8209 pst_filename
= concat (pst
->dirname
, SLASH_STRING
,
8210 pst_filename
, (char *)NULL
);
8211 make_cleanup (xfree
, pst_filename
);
8214 if (strcmp (include_name
, pst_filename
) != 0)
8215 dwarf2_create_include_psymtab (include_name
, pst
, objfile
);
8220 /* Make sure a symtab is created for every file, even files
8221 which contain only variables (i.e. no code with associated
8225 struct file_entry
*fe
;
8227 for (i
= 0; i
< lh
->num_file_names
; i
++)
8230 fe
= &lh
->file_names
[i
];
8232 dir
= lh
->include_dirs
[fe
->dir_index
- 1];
8233 dwarf2_start_subfile (fe
->name
, dir
, comp_dir
);
8235 /* Skip the main file; we don't need it, and it must be
8236 allocated last, so that it will show up before the
8237 non-primary symtabs in the objfile's symtab list. */
8238 if (current_subfile
== first_subfile
)
8241 if (current_subfile
->symtab
== NULL
)
8242 current_subfile
->symtab
= allocate_symtab (current_subfile
->name
,
8244 fe
->symtab
= current_subfile
->symtab
;
8249 /* Start a subfile for DWARF. FILENAME is the name of the file and
8250 DIRNAME the name of the source directory which contains FILENAME
8251 or NULL if not known. COMP_DIR is the compilation directory for the
8252 linetable's compilation unit or NULL if not known.
8253 This routine tries to keep line numbers from identical absolute and
8254 relative file names in a common subfile.
8256 Using the `list' example from the GDB testsuite, which resides in
8257 /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
8258 of /srcdir/list0.c yields the following debugging information for list0.c:
8260 DW_AT_name: /srcdir/list0.c
8261 DW_AT_comp_dir: /compdir
8262 files.files[0].name: list0.h
8263 files.files[0].dir: /srcdir
8264 files.files[1].name: list0.c
8265 files.files[1].dir: /srcdir
8267 The line number information for list0.c has to end up in a single
8268 subfile, so that `break /srcdir/list0.c:1' works as expected.
8269 start_subfile will ensure that this happens provided that we pass the
8270 concatenation of files.files[1].dir and files.files[1].name as the
8274 dwarf2_start_subfile (char *filename
, char *dirname
, char *comp_dir
)
8278 /* While reading the DIEs, we call start_symtab(DW_AT_name, DW_AT_comp_dir).
8279 `start_symtab' will always pass the contents of DW_AT_comp_dir as
8280 second argument to start_subfile. To be consistent, we do the
8281 same here. In order not to lose the line information directory,
8282 we concatenate it to the filename when it makes sense.
8283 Note that the Dwarf3 standard says (speaking of filenames in line
8284 information): ``The directory index is ignored for file names
8285 that represent full path names''. Thus ignoring dirname in the
8286 `else' branch below isn't an issue. */
8288 if (!IS_ABSOLUTE_PATH (filename
) && dirname
!= NULL
)
8289 fullname
= concat (dirname
, SLASH_STRING
, filename
, (char *)NULL
);
8291 fullname
= filename
;
8293 start_subfile (fullname
, comp_dir
);
8295 if (fullname
!= filename
)
8300 var_decode_location (struct attribute
*attr
, struct symbol
*sym
,
8301 struct dwarf2_cu
*cu
)
8303 struct objfile
*objfile
= cu
->objfile
;
8304 struct comp_unit_head
*cu_header
= &cu
->header
;
8306 /* NOTE drow/2003-01-30: There used to be a comment and some special
8307 code here to turn a symbol with DW_AT_external and a
8308 SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol. This was
8309 necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
8310 with some versions of binutils) where shared libraries could have
8311 relocations against symbols in their debug information - the
8312 minimal symbol would have the right address, but the debug info
8313 would not. It's no longer necessary, because we will explicitly
8314 apply relocations when we read in the debug information now. */
8316 /* A DW_AT_location attribute with no contents indicates that a
8317 variable has been optimized away. */
8318 if (attr_form_is_block (attr
) && DW_BLOCK (attr
)->size
== 0)
8320 SYMBOL_CLASS (sym
) = LOC_OPTIMIZED_OUT
;
8324 /* Handle one degenerate form of location expression specially, to
8325 preserve GDB's previous behavior when section offsets are
8326 specified. If this is just a DW_OP_addr then mark this symbol
8329 if (attr_form_is_block (attr
)
8330 && DW_BLOCK (attr
)->size
== 1 + cu_header
->addr_size
8331 && DW_BLOCK (attr
)->data
[0] == DW_OP_addr
)
8335 SYMBOL_VALUE_ADDRESS (sym
) =
8336 read_address (objfile
->obfd
, DW_BLOCK (attr
)->data
+ 1, cu
, &dummy
);
8337 SYMBOL_CLASS (sym
) = LOC_STATIC
;
8338 fixup_symbol_section (sym
, objfile
);
8339 SYMBOL_VALUE_ADDRESS (sym
) += ANOFFSET (objfile
->section_offsets
,
8340 SYMBOL_SECTION (sym
));
8344 /* NOTE drow/2002-01-30: It might be worthwhile to have a static
8345 expression evaluator, and use LOC_COMPUTED only when necessary
8346 (i.e. when the value of a register or memory location is
8347 referenced, or a thread-local block, etc.). Then again, it might
8348 not be worthwhile. I'm assuming that it isn't unless performance
8349 or memory numbers show me otherwise. */
8351 dwarf2_symbol_mark_computed (attr
, sym
, cu
);
8352 SYMBOL_CLASS (sym
) = LOC_COMPUTED
;
8355 /* Given a pointer to a DWARF information entry, figure out if we need
8356 to make a symbol table entry for it, and if so, create a new entry
8357 and return a pointer to it.
8358 If TYPE is NULL, determine symbol type from the die, otherwise
8359 used the passed type. */
8361 static struct symbol
*
8362 new_symbol (struct die_info
*die
, struct type
*type
, struct dwarf2_cu
*cu
)
8364 struct objfile
*objfile
= cu
->objfile
;
8365 struct symbol
*sym
= NULL
;
8367 struct attribute
*attr
= NULL
;
8368 struct attribute
*attr2
= NULL
;
8370 int inlined_func
= (die
->tag
== DW_TAG_inlined_subroutine
);
8372 baseaddr
= ANOFFSET (objfile
->section_offsets
, SECT_OFF_TEXT (objfile
));
8374 name
= dwarf2_name (die
, cu
);
8377 const char *linkagename
;
8379 sym
= (struct symbol
*) obstack_alloc (&objfile
->objfile_obstack
,
8380 sizeof (struct symbol
));
8381 OBJSTAT (objfile
, n_syms
++);
8382 memset (sym
, 0, sizeof (struct symbol
));
8384 /* Cache this symbol's name and the name's demangled form (if any). */
8385 SYMBOL_LANGUAGE (sym
) = cu
->language
;
8386 linkagename
= dwarf2_physname (name
, die
, cu
);
8387 SYMBOL_SET_NAMES (sym
, linkagename
, strlen (linkagename
), 0, objfile
);
8389 /* Default assumptions.
8390 Use the passed type or decode it from the die. */
8391 SYMBOL_DOMAIN (sym
) = VAR_DOMAIN
;
8392 SYMBOL_CLASS (sym
) = LOC_OPTIMIZED_OUT
;
8394 SYMBOL_TYPE (sym
) = type
;
8396 SYMBOL_TYPE (sym
) = die_type (die
, cu
);
8397 attr
= dwarf2_attr (die
,
8398 inlined_func
? DW_AT_call_line
: DW_AT_decl_line
,
8402 SYMBOL_LINE (sym
) = DW_UNSND (attr
);
8405 attr
= dwarf2_attr (die
,
8406 inlined_func
? DW_AT_call_file
: DW_AT_decl_file
,
8410 int file_index
= DW_UNSND (attr
);
8411 if (cu
->line_header
== NULL
8412 || file_index
> cu
->line_header
->num_file_names
)
8413 complaint (&symfile_complaints
,
8414 _("file index out of range"));
8415 else if (file_index
> 0)
8417 struct file_entry
*fe
;
8418 fe
= &cu
->line_header
->file_names
[file_index
- 1];
8419 SYMBOL_SYMTAB (sym
) = fe
->symtab
;
8426 attr
= dwarf2_attr (die
, DW_AT_low_pc
, cu
);
8429 SYMBOL_VALUE_ADDRESS (sym
) = DW_ADDR (attr
) + baseaddr
;
8431 SYMBOL_CLASS (sym
) = LOC_LABEL
;
8433 case DW_TAG_subprogram
:
8434 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
8436 SYMBOL_CLASS (sym
) = LOC_BLOCK
;
8437 attr2
= dwarf2_attr (die
, DW_AT_external
, cu
);
8438 if ((attr2
&& (DW_UNSND (attr2
) != 0))
8439 || cu
->language
== language_ada
)
8441 /* Subprograms marked external are stored as a global symbol.
8442 Ada subprograms, whether marked external or not, are always
8443 stored as a global symbol, because we want to be able to
8444 access them globally. For instance, we want to be able
8445 to break on a nested subprogram without having to
8446 specify the context. */
8447 add_symbol_to_list (sym
, &global_symbols
);
8451 add_symbol_to_list (sym
, cu
->list_in_scope
);
8454 case DW_TAG_inlined_subroutine
:
8455 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
8457 SYMBOL_CLASS (sym
) = LOC_BLOCK
;
8458 SYMBOL_INLINED (sym
) = 1;
8459 /* Do not add the symbol to any lists. It will be found via
8460 BLOCK_FUNCTION from the blockvector. */
8462 case DW_TAG_variable
:
8463 /* Compilation with minimal debug info may result in variables
8464 with missing type entries. Change the misleading `void' type
8465 to something sensible. */
8466 if (TYPE_CODE (SYMBOL_TYPE (sym
)) == TYPE_CODE_VOID
)
8468 = objfile_type (objfile
)->nodebug_data_symbol
;
8470 attr
= dwarf2_attr (die
, DW_AT_const_value
, cu
);
8473 dwarf2_const_value (attr
, sym
, cu
);
8474 attr2
= dwarf2_attr (die
, DW_AT_external
, cu
);
8475 if (attr2
&& (DW_UNSND (attr2
) != 0))
8476 add_symbol_to_list (sym
, &global_symbols
);
8478 add_symbol_to_list (sym
, cu
->list_in_scope
);
8481 attr
= dwarf2_attr (die
, DW_AT_location
, cu
);
8484 var_decode_location (attr
, sym
, cu
);
8485 attr2
= dwarf2_attr (die
, DW_AT_external
, cu
);
8486 if (attr2
&& (DW_UNSND (attr2
) != 0))
8487 add_symbol_to_list (sym
, &global_symbols
);
8489 add_symbol_to_list (sym
, cu
->list_in_scope
);
8493 /* We do not know the address of this symbol.
8494 If it is an external symbol and we have type information
8495 for it, enter the symbol as a LOC_UNRESOLVED symbol.
8496 The address of the variable will then be determined from
8497 the minimal symbol table whenever the variable is
8499 attr2
= dwarf2_attr (die
, DW_AT_external
, cu
);
8500 if (attr2
&& (DW_UNSND (attr2
) != 0)
8501 && dwarf2_attr (die
, DW_AT_type
, cu
) != NULL
)
8503 struct pending
**list_to_add
;
8505 /* A variable with DW_AT_external is never static, but it
8506 may be block-scoped. */
8507 list_to_add
= (cu
->list_in_scope
== &file_symbols
8508 ? &global_symbols
: cu
->list_in_scope
);
8510 SYMBOL_CLASS (sym
) = LOC_UNRESOLVED
;
8511 add_symbol_to_list (sym
, list_to_add
);
8513 else if (!die_is_declaration (die
, cu
))
8515 /* Use the default LOC_OPTIMIZED_OUT class. */
8516 gdb_assert (SYMBOL_CLASS (sym
) == LOC_OPTIMIZED_OUT
);
8517 add_symbol_to_list (sym
, cu
->list_in_scope
);
8521 case DW_TAG_formal_parameter
:
8522 /* If we are inside a function, mark this as an argument. If
8523 not, we might be looking at an argument to an inlined function
8524 when we do not have enough information to show inlined frames;
8525 pretend it's a local variable in that case so that the user can
8527 if (context_stack_depth
> 0
8528 && context_stack
[context_stack_depth
- 1].name
!= NULL
)
8529 SYMBOL_IS_ARGUMENT (sym
) = 1;
8530 attr
= dwarf2_attr (die
, DW_AT_location
, cu
);
8533 var_decode_location (attr
, sym
, cu
);
8535 attr
= dwarf2_attr (die
, DW_AT_const_value
, cu
);
8538 dwarf2_const_value (attr
, sym
, cu
);
8540 add_symbol_to_list (sym
, cu
->list_in_scope
);
8542 case DW_TAG_unspecified_parameters
:
8543 /* From varargs functions; gdb doesn't seem to have any
8544 interest in this information, so just ignore it for now.
8547 case DW_TAG_class_type
:
8548 case DW_TAG_interface_type
:
8549 case DW_TAG_structure_type
:
8550 case DW_TAG_union_type
:
8551 case DW_TAG_set_type
:
8552 case DW_TAG_enumeration_type
:
8553 SYMBOL_CLASS (sym
) = LOC_TYPEDEF
;
8554 SYMBOL_DOMAIN (sym
) = STRUCT_DOMAIN
;
8556 /* Make sure that the symbol includes appropriate enclosing
8557 classes/namespaces in its name. These are calculated in
8558 read_structure_type, and the correct name is saved in
8561 if (cu
->language
== language_cplus
8562 || cu
->language
== language_java
)
8564 struct type
*type
= SYMBOL_TYPE (sym
);
8566 if (TYPE_TAG_NAME (type
) != NULL
)
8568 /* FIXME: carlton/2003-11-10: Should this use
8569 SYMBOL_SET_NAMES instead? (The same problem also
8570 arises further down in this function.) */
8571 /* The type's name is already allocated along with
8572 this objfile, so we don't need to duplicate it
8574 SYMBOL_LINKAGE_NAME (sym
) = TYPE_TAG_NAME (type
);
8579 /* NOTE: carlton/2003-11-10: C++ and Java class symbols shouldn't
8580 really ever be static objects: otherwise, if you try
8581 to, say, break of a class's method and you're in a file
8582 which doesn't mention that class, it won't work unless
8583 the check for all static symbols in lookup_symbol_aux
8584 saves you. See the OtherFileClass tests in
8585 gdb.c++/namespace.exp. */
8587 struct pending
**list_to_add
;
8589 list_to_add
= (cu
->list_in_scope
== &file_symbols
8590 && (cu
->language
== language_cplus
8591 || cu
->language
== language_java
)
8592 ? &global_symbols
: cu
->list_in_scope
);
8594 add_symbol_to_list (sym
, list_to_add
);
8596 /* The semantics of C++ state that "struct foo { ... }" also
8597 defines a typedef for "foo". A Java class declaration also
8598 defines a typedef for the class. */
8599 if (cu
->language
== language_cplus
8600 || cu
->language
== language_java
8601 || cu
->language
== language_ada
)
8603 /* The symbol's name is already allocated along with
8604 this objfile, so we don't need to duplicate it for
8606 if (TYPE_NAME (SYMBOL_TYPE (sym
)) == 0)
8607 TYPE_NAME (SYMBOL_TYPE (sym
)) = SYMBOL_SEARCH_NAME (sym
);
8611 case DW_TAG_typedef
:
8612 SYMBOL_LINKAGE_NAME (sym
)
8613 = (char *) dwarf2_full_name (name
, die
, cu
);
8614 SYMBOL_CLASS (sym
) = LOC_TYPEDEF
;
8615 SYMBOL_DOMAIN (sym
) = VAR_DOMAIN
;
8616 add_symbol_to_list (sym
, cu
->list_in_scope
);
8618 case DW_TAG_base_type
:
8619 case DW_TAG_subrange_type
:
8620 SYMBOL_CLASS (sym
) = LOC_TYPEDEF
;
8621 SYMBOL_DOMAIN (sym
) = VAR_DOMAIN
;
8622 add_symbol_to_list (sym
, cu
->list_in_scope
);
8624 case DW_TAG_enumerator
:
8625 SYMBOL_LINKAGE_NAME (sym
)
8626 = (char *) dwarf2_full_name (name
, die
, cu
);
8627 attr
= dwarf2_attr (die
, DW_AT_const_value
, cu
);
8630 dwarf2_const_value (attr
, sym
, cu
);
8633 /* NOTE: carlton/2003-11-10: See comment above in the
8634 DW_TAG_class_type, etc. block. */
8636 struct pending
**list_to_add
;
8638 list_to_add
= (cu
->list_in_scope
== &file_symbols
8639 && (cu
->language
== language_cplus
8640 || cu
->language
== language_java
)
8641 ? &global_symbols
: cu
->list_in_scope
);
8643 add_symbol_to_list (sym
, list_to_add
);
8646 case DW_TAG_namespace
:
8647 SYMBOL_CLASS (sym
) = LOC_TYPEDEF
;
8648 add_symbol_to_list (sym
, &global_symbols
);
8651 /* Not a tag we recognize. Hopefully we aren't processing
8652 trash data, but since we must specifically ignore things
8653 we don't recognize, there is nothing else we should do at
8655 complaint (&symfile_complaints
, _("unsupported tag: '%s'"),
8656 dwarf_tag_name (die
->tag
));
8660 /* For the benefit of old versions of GCC, check for anonymous
8661 namespaces based on the demangled name. */
8662 if (!processing_has_namespace_info
8663 && cu
->language
== language_cplus
)
8664 cp_scan_for_anonymous_namespaces (sym
);
8669 /* Copy constant value from an attribute to a symbol. */
8672 dwarf2_const_value (struct attribute
*attr
, struct symbol
*sym
,
8673 struct dwarf2_cu
*cu
)
8675 struct objfile
*objfile
= cu
->objfile
;
8676 struct comp_unit_head
*cu_header
= &cu
->header
;
8677 enum bfd_endian byte_order
= bfd_big_endian (objfile
->obfd
) ?
8678 BFD_ENDIAN_BIG
: BFD_ENDIAN_LITTLE
;
8679 struct dwarf_block
*blk
;
8684 if (TYPE_LENGTH (SYMBOL_TYPE (sym
)) != cu_header
->addr_size
)
8685 dwarf2_const_value_length_mismatch_complaint (SYMBOL_PRINT_NAME (sym
),
8686 cu_header
->addr_size
,
8687 TYPE_LENGTH (SYMBOL_TYPE
8689 SYMBOL_VALUE_BYTES (sym
) =
8690 obstack_alloc (&objfile
->objfile_obstack
, cu_header
->addr_size
);
8691 /* NOTE: cagney/2003-05-09: In-lined store_address call with
8692 it's body - store_unsigned_integer. */
8693 store_unsigned_integer (SYMBOL_VALUE_BYTES (sym
), cu_header
->addr_size
,
8694 byte_order
, DW_ADDR (attr
));
8695 SYMBOL_CLASS (sym
) = LOC_CONST_BYTES
;
8697 case DW_FORM_string
:
8699 /* DW_STRING is already allocated on the obstack, point directly
8701 SYMBOL_VALUE_BYTES (sym
) = (gdb_byte
*) DW_STRING (attr
);
8702 SYMBOL_CLASS (sym
) = LOC_CONST_BYTES
;
8704 case DW_FORM_block1
:
8705 case DW_FORM_block2
:
8706 case DW_FORM_block4
:
8708 blk
= DW_BLOCK (attr
);
8709 if (TYPE_LENGTH (SYMBOL_TYPE (sym
)) != blk
->size
)
8710 dwarf2_const_value_length_mismatch_complaint (SYMBOL_PRINT_NAME (sym
),
8712 TYPE_LENGTH (SYMBOL_TYPE
8714 SYMBOL_VALUE_BYTES (sym
) =
8715 obstack_alloc (&objfile
->objfile_obstack
, blk
->size
);
8716 memcpy (SYMBOL_VALUE_BYTES (sym
), blk
->data
, blk
->size
);
8717 SYMBOL_CLASS (sym
) = LOC_CONST_BYTES
;
8720 /* The DW_AT_const_value attributes are supposed to carry the
8721 symbol's value "represented as it would be on the target
8722 architecture." By the time we get here, it's already been
8723 converted to host endianness, so we just need to sign- or
8724 zero-extend it as appropriate. */
8726 dwarf2_const_value_data (attr
, sym
, 8);
8729 dwarf2_const_value_data (attr
, sym
, 16);
8732 dwarf2_const_value_data (attr
, sym
, 32);
8735 dwarf2_const_value_data (attr
, sym
, 64);
8739 SYMBOL_VALUE (sym
) = DW_SND (attr
);
8740 SYMBOL_CLASS (sym
) = LOC_CONST
;
8744 SYMBOL_VALUE (sym
) = DW_UNSND (attr
);
8745 SYMBOL_CLASS (sym
) = LOC_CONST
;
8749 complaint (&symfile_complaints
,
8750 _("unsupported const value attribute form: '%s'"),
8751 dwarf_form_name (attr
->form
));
8752 SYMBOL_VALUE (sym
) = 0;
8753 SYMBOL_CLASS (sym
) = LOC_CONST
;
8759 /* Given an attr with a DW_FORM_dataN value in host byte order, sign-
8760 or zero-extend it as appropriate for the symbol's type. */
8762 dwarf2_const_value_data (struct attribute
*attr
,
8766 LONGEST l
= DW_UNSND (attr
);
8768 if (bits
< sizeof (l
) * 8)
8770 if (TYPE_UNSIGNED (SYMBOL_TYPE (sym
)))
8771 l
&= ((LONGEST
) 1 << bits
) - 1;
8773 l
= (l
<< (sizeof (l
) * 8 - bits
)) >> (sizeof (l
) * 8 - bits
);
8776 SYMBOL_VALUE (sym
) = l
;
8777 SYMBOL_CLASS (sym
) = LOC_CONST
;
8781 /* Return the type of the die in question using its DW_AT_type attribute. */
8783 static struct type
*
8784 die_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
8787 struct attribute
*type_attr
;
8788 struct die_info
*type_die
;
8790 type_attr
= dwarf2_attr (die
, DW_AT_type
, cu
);
8793 /* A missing DW_AT_type represents a void type. */
8794 return objfile_type (cu
->objfile
)->builtin_void
;
8797 type_die
= follow_die_ref_or_sig (die
, type_attr
, &cu
);
8799 type
= tag_type_to_type (type_die
, cu
);
8802 dump_die_for_error (type_die
);
8803 error (_("Dwarf Error: Problem turning type die at offset into gdb type [in module %s]"),
8809 /* True iff CU's producer generates GNAT Ada auxiliary information
8810 that allows to find parallel types through that information instead
8811 of having to do expensive parallel lookups by type name. */
8814 need_gnat_info (struct dwarf2_cu
*cu
)
8816 /* FIXME: brobecker/2010-10-12: As of now, only the AdaCore version
8817 of GNAT produces this auxiliary information, without any indication
8818 that it is produced. Part of enhancing the FSF version of GNAT
8819 to produce that information will be to put in place an indicator
8820 that we can use in order to determine whether the descriptive type
8821 info is available or not. One suggestion that has been made is
8822 to use a new attribute, attached to the CU die. For now, assume
8823 that the descriptive type info is not available. */
8828 /* Return the auxiliary type of the die in question using its
8829 DW_AT_GNAT_descriptive_type attribute. Returns NULL if the
8830 attribute is not present. */
8832 static struct type
*
8833 die_descriptive_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
8836 struct attribute
*type_attr
;
8837 struct die_info
*type_die
;
8839 type_attr
= dwarf2_attr (die
, DW_AT_GNAT_descriptive_type
, cu
);
8843 type_die
= follow_die_ref (die
, type_attr
, &cu
);
8844 type
= tag_type_to_type (type_die
, cu
);
8847 dump_die_for_error (type_die
);
8848 error (_("Dwarf Error: Problem turning type die at offset into gdb type [in module %s]"),
8854 /* If DIE has a descriptive_type attribute, then set the TYPE's
8855 descriptive type accordingly. */
8858 set_descriptive_type (struct type
*type
, struct die_info
*die
,
8859 struct dwarf2_cu
*cu
)
8861 struct type
*descriptive_type
= die_descriptive_type (die
, cu
);
8863 if (descriptive_type
)
8865 ALLOCATE_GNAT_AUX_TYPE (type
);
8866 TYPE_DESCRIPTIVE_TYPE (type
) = descriptive_type
;
8870 /* Return the containing type of the die in question using its
8871 DW_AT_containing_type attribute. */
8873 static struct type
*
8874 die_containing_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
8876 struct type
*type
= NULL
;
8877 struct attribute
*type_attr
;
8878 struct die_info
*type_die
= NULL
;
8880 type_attr
= dwarf2_attr (die
, DW_AT_containing_type
, cu
);
8883 type_die
= follow_die_ref_or_sig (die
, type_attr
, &cu
);
8884 type
= tag_type_to_type (type_die
, cu
);
8889 dump_die_for_error (type_die
);
8890 error (_("Dwarf Error: Problem turning containing type into gdb type [in module %s]"),
8896 static struct type
*
8897 tag_type_to_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
8899 struct type
*this_type
;
8901 this_type
= read_type_die (die
, cu
);
8904 dump_die_for_error (die
);
8905 error (_("Dwarf Error: Cannot find type of die [in module %s]"),
8911 static struct type
*
8912 read_type_die (struct die_info
*die
, struct dwarf2_cu
*cu
)
8914 struct type
*this_type
;
8916 this_type
= get_die_type (die
, cu
);
8922 case DW_TAG_class_type
:
8923 case DW_TAG_interface_type
:
8924 case DW_TAG_structure_type
:
8925 case DW_TAG_union_type
:
8926 this_type
= read_structure_type (die
, cu
);
8928 case DW_TAG_enumeration_type
:
8929 this_type
= read_enumeration_type (die
, cu
);
8931 case DW_TAG_subprogram
:
8932 case DW_TAG_subroutine_type
:
8933 case DW_TAG_inlined_subroutine
:
8934 this_type
= read_subroutine_type (die
, cu
);
8936 case DW_TAG_array_type
:
8937 this_type
= read_array_type (die
, cu
);
8939 case DW_TAG_set_type
:
8940 this_type
= read_set_type (die
, cu
);
8942 case DW_TAG_pointer_type
:
8943 this_type
= read_tag_pointer_type (die
, cu
);
8945 case DW_TAG_ptr_to_member_type
:
8946 this_type
= read_tag_ptr_to_member_type (die
, cu
);
8948 case DW_TAG_reference_type
:
8949 this_type
= read_tag_reference_type (die
, cu
);
8951 case DW_TAG_const_type
:
8952 this_type
= read_tag_const_type (die
, cu
);
8954 case DW_TAG_volatile_type
:
8955 this_type
= read_tag_volatile_type (die
, cu
);
8957 case DW_TAG_string_type
:
8958 this_type
= read_tag_string_type (die
, cu
);
8960 case DW_TAG_typedef
:
8961 this_type
= read_typedef (die
, cu
);
8963 case DW_TAG_subrange_type
:
8964 this_type
= read_subrange_type (die
, cu
);
8966 case DW_TAG_base_type
:
8967 this_type
= read_base_type (die
, cu
);
8969 case DW_TAG_unspecified_type
:
8970 this_type
= read_unspecified_type (die
, cu
);
8972 case DW_TAG_namespace
:
8973 this_type
= read_namespace_type (die
, cu
);
8976 complaint (&symfile_complaints
, _("unexpected tag in read_type_die: '%s'"),
8977 dwarf_tag_name (die
->tag
));
8984 /* Return the name of the namespace/class that DIE is defined within,
8985 or "" if we can't tell. The caller should not xfree the result.
8987 For example, if we're within the method foo() in the following
8997 then determine_prefix on foo's die will return "N::C". */
9000 determine_prefix (struct die_info
*die
, struct dwarf2_cu
*cu
)
9002 struct die_info
*parent
, *spec_die
;
9003 struct dwarf2_cu
*spec_cu
;
9004 struct type
*parent_type
;
9006 if (cu
->language
!= language_cplus
9007 && cu
->language
!= language_java
)
9010 /* We have to be careful in the presence of DW_AT_specification.
9011 For example, with GCC 3.4, given the code
9015 // Definition of N::foo.
9019 then we'll have a tree of DIEs like this:
9021 1: DW_TAG_compile_unit
9022 2: DW_TAG_namespace // N
9023 3: DW_TAG_subprogram // declaration of N::foo
9024 4: DW_TAG_subprogram // definition of N::foo
9025 DW_AT_specification // refers to die #3
9027 Thus, when processing die #4, we have to pretend that we're in
9028 the context of its DW_AT_specification, namely the contex of die
9031 spec_die
= die_specification (die
, &spec_cu
);
9032 if (spec_die
== NULL
)
9033 parent
= die
->parent
;
9036 parent
= spec_die
->parent
;
9043 switch (parent
->tag
)
9045 case DW_TAG_namespace
:
9046 parent_type
= read_type_die (parent
, cu
);
9047 /* We give a name to even anonymous namespaces. */
9048 return TYPE_TAG_NAME (parent_type
);
9049 case DW_TAG_class_type
:
9050 case DW_TAG_interface_type
:
9051 case DW_TAG_structure_type
:
9052 case DW_TAG_union_type
:
9053 parent_type
= read_type_die (parent
, cu
);
9054 if (TYPE_TAG_NAME (parent_type
) != NULL
)
9055 return TYPE_TAG_NAME (parent_type
);
9057 /* An anonymous structure is only allowed non-static data
9058 members; no typedefs, no member functions, et cetera.
9059 So it does not need a prefix. */
9062 return determine_prefix (parent
, cu
);
9066 /* Return a newly-allocated string formed by concatenating PREFIX and
9067 SUFFIX with appropriate separator. If PREFIX or SUFFIX is NULL or empty, then
9068 simply copy the SUFFIX or PREFIX, respectively. If OBS is non-null,
9069 perform an obconcat, otherwise allocate storage for the result. The CU argument
9070 is used to determine the language and hence, the appropriate separator. */
9072 #define MAX_SEP_LEN 2 /* sizeof ("::") */
9075 typename_concat (struct obstack
*obs
, const char *prefix
, const char *suffix
,
9076 struct dwarf2_cu
*cu
)
9080 if (suffix
== NULL
|| suffix
[0] == '\0' || prefix
== NULL
|| prefix
[0] == '\0')
9082 else if (cu
->language
== language_java
)
9094 char *retval
= xmalloc (strlen (prefix
) + MAX_SEP_LEN
+ strlen (suffix
) + 1);
9095 strcpy (retval
, prefix
);
9096 strcat (retval
, sep
);
9097 strcat (retval
, suffix
);
9102 /* We have an obstack. */
9103 return obconcat (obs
, prefix
, sep
, suffix
);
9107 /* Return sibling of die, NULL if no sibling. */
9109 static struct die_info
*
9110 sibling_die (struct die_info
*die
)
9112 return die
->sibling
;
9115 /* Get name of a die, return NULL if not found. */
9118 dwarf2_canonicalize_name (char *name
, struct dwarf2_cu
*cu
,
9119 struct obstack
*obstack
)
9121 if (name
&& cu
->language
== language_cplus
)
9123 char *canon_name
= cp_canonicalize_string (name
);
9125 if (canon_name
!= NULL
)
9127 if (strcmp (canon_name
, name
) != 0)
9128 name
= obsavestring (canon_name
, strlen (canon_name
),
9137 /* Get name of a die, return NULL if not found. */
9140 dwarf2_name (struct die_info
*die
, struct dwarf2_cu
*cu
)
9142 struct attribute
*attr
;
9144 attr
= dwarf2_attr (die
, DW_AT_name
, cu
);
9145 if (!attr
|| !DW_STRING (attr
))
9150 case DW_TAG_compile_unit
:
9151 /* Compilation units have a DW_AT_name that is a filename, not
9152 a source language identifier. */
9153 case DW_TAG_enumeration_type
:
9154 case DW_TAG_enumerator
:
9155 /* These tags always have simple identifiers already; no need
9156 to canonicalize them. */
9157 return DW_STRING (attr
);
9159 if (!DW_STRING_IS_CANONICAL (attr
))
9162 = dwarf2_canonicalize_name (DW_STRING (attr
), cu
,
9163 &cu
->objfile
->objfile_obstack
);
9164 DW_STRING_IS_CANONICAL (attr
) = 1;
9166 return DW_STRING (attr
);
9170 /* Return the die that this die in an extension of, or NULL if there
9171 is none. *EXT_CU is the CU containing DIE on input, and the CU
9172 containing the return value on output. */
9174 static struct die_info
*
9175 dwarf2_extension (struct die_info
*die
, struct dwarf2_cu
**ext_cu
)
9177 struct attribute
*attr
;
9179 attr
= dwarf2_attr (die
, DW_AT_extension
, *ext_cu
);
9183 return follow_die_ref (die
, attr
, ext_cu
);
9186 /* Convert a DIE tag into its string name. */
9189 dwarf_tag_name (unsigned tag
)
9193 case DW_TAG_padding
:
9194 return "DW_TAG_padding";
9195 case DW_TAG_array_type
:
9196 return "DW_TAG_array_type";
9197 case DW_TAG_class_type
:
9198 return "DW_TAG_class_type";
9199 case DW_TAG_entry_point
:
9200 return "DW_TAG_entry_point";
9201 case DW_TAG_enumeration_type
:
9202 return "DW_TAG_enumeration_type";
9203 case DW_TAG_formal_parameter
:
9204 return "DW_TAG_formal_parameter";
9205 case DW_TAG_imported_declaration
:
9206 return "DW_TAG_imported_declaration";
9208 return "DW_TAG_label";
9209 case DW_TAG_lexical_block
:
9210 return "DW_TAG_lexical_block";
9212 return "DW_TAG_member";
9213 case DW_TAG_pointer_type
:
9214 return "DW_TAG_pointer_type";
9215 case DW_TAG_reference_type
:
9216 return "DW_TAG_reference_type";
9217 case DW_TAG_compile_unit
:
9218 return "DW_TAG_compile_unit";
9219 case DW_TAG_string_type
:
9220 return "DW_TAG_string_type";
9221 case DW_TAG_structure_type
:
9222 return "DW_TAG_structure_type";
9223 case DW_TAG_subroutine_type
:
9224 return "DW_TAG_subroutine_type";
9225 case DW_TAG_typedef
:
9226 return "DW_TAG_typedef";
9227 case DW_TAG_union_type
:
9228 return "DW_TAG_union_type";
9229 case DW_TAG_unspecified_parameters
:
9230 return "DW_TAG_unspecified_parameters";
9231 case DW_TAG_variant
:
9232 return "DW_TAG_variant";
9233 case DW_TAG_common_block
:
9234 return "DW_TAG_common_block";
9235 case DW_TAG_common_inclusion
:
9236 return "DW_TAG_common_inclusion";
9237 case DW_TAG_inheritance
:
9238 return "DW_TAG_inheritance";
9239 case DW_TAG_inlined_subroutine
:
9240 return "DW_TAG_inlined_subroutine";
9242 return "DW_TAG_module";
9243 case DW_TAG_ptr_to_member_type
:
9244 return "DW_TAG_ptr_to_member_type";
9245 case DW_TAG_set_type
:
9246 return "DW_TAG_set_type";
9247 case DW_TAG_subrange_type
:
9248 return "DW_TAG_subrange_type";
9249 case DW_TAG_with_stmt
:
9250 return "DW_TAG_with_stmt";
9251 case DW_TAG_access_declaration
:
9252 return "DW_TAG_access_declaration";
9253 case DW_TAG_base_type
:
9254 return "DW_TAG_base_type";
9255 case DW_TAG_catch_block
:
9256 return "DW_TAG_catch_block";
9257 case DW_TAG_const_type
:
9258 return "DW_TAG_const_type";
9259 case DW_TAG_constant
:
9260 return "DW_TAG_constant";
9261 case DW_TAG_enumerator
:
9262 return "DW_TAG_enumerator";
9263 case DW_TAG_file_type
:
9264 return "DW_TAG_file_type";
9266 return "DW_TAG_friend";
9267 case DW_TAG_namelist
:
9268 return "DW_TAG_namelist";
9269 case DW_TAG_namelist_item
:
9270 return "DW_TAG_namelist_item";
9271 case DW_TAG_packed_type
:
9272 return "DW_TAG_packed_type";
9273 case DW_TAG_subprogram
:
9274 return "DW_TAG_subprogram";
9275 case DW_TAG_template_type_param
:
9276 return "DW_TAG_template_type_param";
9277 case DW_TAG_template_value_param
:
9278 return "DW_TAG_template_value_param";
9279 case DW_TAG_thrown_type
:
9280 return "DW_TAG_thrown_type";
9281 case DW_TAG_try_block
:
9282 return "DW_TAG_try_block";
9283 case DW_TAG_variant_part
:
9284 return "DW_TAG_variant_part";
9285 case DW_TAG_variable
:
9286 return "DW_TAG_variable";
9287 case DW_TAG_volatile_type
:
9288 return "DW_TAG_volatile_type";
9289 case DW_TAG_dwarf_procedure
:
9290 return "DW_TAG_dwarf_procedure";
9291 case DW_TAG_restrict_type
:
9292 return "DW_TAG_restrict_type";
9293 case DW_TAG_interface_type
:
9294 return "DW_TAG_interface_type";
9295 case DW_TAG_namespace
:
9296 return "DW_TAG_namespace";
9297 case DW_TAG_imported_module
:
9298 return "DW_TAG_imported_module";
9299 case DW_TAG_unspecified_type
:
9300 return "DW_TAG_unspecified_type";
9301 case DW_TAG_partial_unit
:
9302 return "DW_TAG_partial_unit";
9303 case DW_TAG_imported_unit
:
9304 return "DW_TAG_imported_unit";
9305 case DW_TAG_condition
:
9306 return "DW_TAG_condition";
9307 case DW_TAG_shared_type
:
9308 return "DW_TAG_shared_type";
9309 case DW_TAG_type_unit
:
9310 return "DW_TAG_type_unit";
9311 case DW_TAG_MIPS_loop
:
9312 return "DW_TAG_MIPS_loop";
9313 case DW_TAG_HP_array_descriptor
:
9314 return "DW_TAG_HP_array_descriptor";
9315 case DW_TAG_format_label
:
9316 return "DW_TAG_format_label";
9317 case DW_TAG_function_template
:
9318 return "DW_TAG_function_template";
9319 case DW_TAG_class_template
:
9320 return "DW_TAG_class_template";
9321 case DW_TAG_GNU_BINCL
:
9322 return "DW_TAG_GNU_BINCL";
9323 case DW_TAG_GNU_EINCL
:
9324 return "DW_TAG_GNU_EINCL";
9325 case DW_TAG_upc_shared_type
:
9326 return "DW_TAG_upc_shared_type";
9327 case DW_TAG_upc_strict_type
:
9328 return "DW_TAG_upc_strict_type";
9329 case DW_TAG_upc_relaxed_type
:
9330 return "DW_TAG_upc_relaxed_type";
9331 case DW_TAG_PGI_kanji_type
:
9332 return "DW_TAG_PGI_kanji_type";
9333 case DW_TAG_PGI_interface_block
:
9334 return "DW_TAG_PGI_interface_block";
9336 return "DW_TAG_<unknown>";
9340 /* Convert a DWARF attribute code into its string name. */
9343 dwarf_attr_name (unsigned attr
)
9348 return "DW_AT_sibling";
9349 case DW_AT_location
:
9350 return "DW_AT_location";
9352 return "DW_AT_name";
9353 case DW_AT_ordering
:
9354 return "DW_AT_ordering";
9355 case DW_AT_subscr_data
:
9356 return "DW_AT_subscr_data";
9357 case DW_AT_byte_size
:
9358 return "DW_AT_byte_size";
9359 case DW_AT_bit_offset
:
9360 return "DW_AT_bit_offset";
9361 case DW_AT_bit_size
:
9362 return "DW_AT_bit_size";
9363 case DW_AT_element_list
:
9364 return "DW_AT_element_list";
9365 case DW_AT_stmt_list
:
9366 return "DW_AT_stmt_list";
9368 return "DW_AT_low_pc";
9370 return "DW_AT_high_pc";
9371 case DW_AT_language
:
9372 return "DW_AT_language";
9374 return "DW_AT_member";
9376 return "DW_AT_discr";
9377 case DW_AT_discr_value
:
9378 return "DW_AT_discr_value";
9379 case DW_AT_visibility
:
9380 return "DW_AT_visibility";
9382 return "DW_AT_import";
9383 case DW_AT_string_length
:
9384 return "DW_AT_string_length";
9385 case DW_AT_common_reference
:
9386 return "DW_AT_common_reference";
9387 case DW_AT_comp_dir
:
9388 return "DW_AT_comp_dir";
9389 case DW_AT_const_value
:
9390 return "DW_AT_const_value";
9391 case DW_AT_containing_type
:
9392 return "DW_AT_containing_type";
9393 case DW_AT_default_value
:
9394 return "DW_AT_default_value";
9396 return "DW_AT_inline";
9397 case DW_AT_is_optional
:
9398 return "DW_AT_is_optional";
9399 case DW_AT_lower_bound
:
9400 return "DW_AT_lower_bound";
9401 case DW_AT_producer
:
9402 return "DW_AT_producer";
9403 case DW_AT_prototyped
:
9404 return "DW_AT_prototyped";
9405 case DW_AT_return_addr
:
9406 return "DW_AT_return_addr";
9407 case DW_AT_start_scope
:
9408 return "DW_AT_start_scope";
9409 case DW_AT_bit_stride
:
9410 return "DW_AT_bit_stride";
9411 case DW_AT_upper_bound
:
9412 return "DW_AT_upper_bound";
9413 case DW_AT_abstract_origin
:
9414 return "DW_AT_abstract_origin";
9415 case DW_AT_accessibility
:
9416 return "DW_AT_accessibility";
9417 case DW_AT_address_class
:
9418 return "DW_AT_address_class";
9419 case DW_AT_artificial
:
9420 return "DW_AT_artificial";
9421 case DW_AT_base_types
:
9422 return "DW_AT_base_types";
9423 case DW_AT_calling_convention
:
9424 return "DW_AT_calling_convention";
9426 return "DW_AT_count";
9427 case DW_AT_data_member_location
:
9428 return "DW_AT_data_member_location";
9429 case DW_AT_decl_column
:
9430 return "DW_AT_decl_column";
9431 case DW_AT_decl_file
:
9432 return "DW_AT_decl_file";
9433 case DW_AT_decl_line
:
9434 return "DW_AT_decl_line";
9435 case DW_AT_declaration
:
9436 return "DW_AT_declaration";
9437 case DW_AT_discr_list
:
9438 return "DW_AT_discr_list";
9439 case DW_AT_encoding
:
9440 return "DW_AT_encoding";
9441 case DW_AT_external
:
9442 return "DW_AT_external";
9443 case DW_AT_frame_base
:
9444 return "DW_AT_frame_base";
9446 return "DW_AT_friend";
9447 case DW_AT_identifier_case
:
9448 return "DW_AT_identifier_case";
9449 case DW_AT_macro_info
:
9450 return "DW_AT_macro_info";
9451 case DW_AT_namelist_items
:
9452 return "DW_AT_namelist_items";
9453 case DW_AT_priority
:
9454 return "DW_AT_priority";
9456 return "DW_AT_segment";
9457 case DW_AT_specification
:
9458 return "DW_AT_specification";
9459 case DW_AT_static_link
:
9460 return "DW_AT_static_link";
9462 return "DW_AT_type";
9463 case DW_AT_use_location
:
9464 return "DW_AT_use_location";
9465 case DW_AT_variable_parameter
:
9466 return "DW_AT_variable_parameter";
9467 case DW_AT_virtuality
:
9468 return "DW_AT_virtuality";
9469 case DW_AT_vtable_elem_location
:
9470 return "DW_AT_vtable_elem_location";
9471 /* DWARF 3 values. */
9472 case DW_AT_allocated
:
9473 return "DW_AT_allocated";
9474 case DW_AT_associated
:
9475 return "DW_AT_associated";
9476 case DW_AT_data_location
:
9477 return "DW_AT_data_location";
9478 case DW_AT_byte_stride
:
9479 return "DW_AT_byte_stride";
9480 case DW_AT_entry_pc
:
9481 return "DW_AT_entry_pc";
9482 case DW_AT_use_UTF8
:
9483 return "DW_AT_use_UTF8";
9484 case DW_AT_extension
:
9485 return "DW_AT_extension";
9487 return "DW_AT_ranges";
9488 case DW_AT_trampoline
:
9489 return "DW_AT_trampoline";
9490 case DW_AT_call_column
:
9491 return "DW_AT_call_column";
9492 case DW_AT_call_file
:
9493 return "DW_AT_call_file";
9494 case DW_AT_call_line
:
9495 return "DW_AT_call_line";
9496 case DW_AT_description
:
9497 return "DW_AT_description";
9498 case DW_AT_binary_scale
:
9499 return "DW_AT_binary_scale";
9500 case DW_AT_decimal_scale
:
9501 return "DW_AT_decimal_scale";
9503 return "DW_AT_small";
9504 case DW_AT_decimal_sign
:
9505 return "DW_AT_decimal_sign";
9506 case DW_AT_digit_count
:
9507 return "DW_AT_digit_count";
9508 case DW_AT_picture_string
:
9509 return "DW_AT_picture_string";
9511 return "DW_AT_mutable";
9512 case DW_AT_threads_scaled
:
9513 return "DW_AT_threads_scaled";
9514 case DW_AT_explicit
:
9515 return "DW_AT_explicit";
9516 case DW_AT_object_pointer
:
9517 return "DW_AT_object_pointer";
9518 case DW_AT_endianity
:
9519 return "DW_AT_endianity";
9520 case DW_AT_elemental
:
9521 return "DW_AT_elemental";
9523 return "DW_AT_pure";
9524 case DW_AT_recursive
:
9525 return "DW_AT_recursive";
9526 /* DWARF 4 values. */
9527 case DW_AT_signature
:
9528 return "DW_AT_signature";
9529 /* SGI/MIPS extensions. */
9530 #ifdef MIPS /* collides with DW_AT_HP_block_index */
9531 case DW_AT_MIPS_fde
:
9532 return "DW_AT_MIPS_fde";
9534 case DW_AT_MIPS_loop_begin
:
9535 return "DW_AT_MIPS_loop_begin";
9536 case DW_AT_MIPS_tail_loop_begin
:
9537 return "DW_AT_MIPS_tail_loop_begin";
9538 case DW_AT_MIPS_epilog_begin
:
9539 return "DW_AT_MIPS_epilog_begin";
9540 case DW_AT_MIPS_loop_unroll_factor
:
9541 return "DW_AT_MIPS_loop_unroll_factor";
9542 case DW_AT_MIPS_software_pipeline_depth
:
9543 return "DW_AT_MIPS_software_pipeline_depth";
9544 case DW_AT_MIPS_linkage_name
:
9545 return "DW_AT_MIPS_linkage_name";
9546 case DW_AT_MIPS_stride
:
9547 return "DW_AT_MIPS_stride";
9548 case DW_AT_MIPS_abstract_name
:
9549 return "DW_AT_MIPS_abstract_name";
9550 case DW_AT_MIPS_clone_origin
:
9551 return "DW_AT_MIPS_clone_origin";
9552 case DW_AT_MIPS_has_inlines
:
9553 return "DW_AT_MIPS_has_inlines";
9554 /* HP extensions. */
9555 #ifndef MIPS /* collides with DW_AT_MIPS_fde */
9556 case DW_AT_HP_block_index
:
9557 return "DW_AT_HP_block_index";
9559 case DW_AT_HP_unmodifiable
:
9560 return "DW_AT_HP_unmodifiable";
9561 case DW_AT_HP_actuals_stmt_list
:
9562 return "DW_AT_HP_actuals_stmt_list";
9563 case DW_AT_HP_proc_per_section
:
9564 return "DW_AT_HP_proc_per_section";
9565 case DW_AT_HP_raw_data_ptr
:
9566 return "DW_AT_HP_raw_data_ptr";
9567 case DW_AT_HP_pass_by_reference
:
9568 return "DW_AT_HP_pass_by_reference";
9569 case DW_AT_HP_opt_level
:
9570 return "DW_AT_HP_opt_level";
9571 case DW_AT_HP_prof_version_id
:
9572 return "DW_AT_HP_prof_version_id";
9573 case DW_AT_HP_opt_flags
:
9574 return "DW_AT_HP_opt_flags";
9575 case DW_AT_HP_cold_region_low_pc
:
9576 return "DW_AT_HP_cold_region_low_pc";
9577 case DW_AT_HP_cold_region_high_pc
:
9578 return "DW_AT_HP_cold_region_high_pc";
9579 case DW_AT_HP_all_variables_modifiable
:
9580 return "DW_AT_HP_all_variables_modifiable";
9581 case DW_AT_HP_linkage_name
:
9582 return "DW_AT_HP_linkage_name";
9583 case DW_AT_HP_prof_flags
:
9584 return "DW_AT_HP_prof_flags";
9585 /* GNU extensions. */
9586 case DW_AT_sf_names
:
9587 return "DW_AT_sf_names";
9588 case DW_AT_src_info
:
9589 return "DW_AT_src_info";
9590 case DW_AT_mac_info
:
9591 return "DW_AT_mac_info";
9592 case DW_AT_src_coords
:
9593 return "DW_AT_src_coords";
9594 case DW_AT_body_begin
:
9595 return "DW_AT_body_begin";
9596 case DW_AT_body_end
:
9597 return "DW_AT_body_end";
9598 case DW_AT_GNU_vector
:
9599 return "DW_AT_GNU_vector";
9600 /* VMS extensions. */
9601 case DW_AT_VMS_rtnbeg_pd_address
:
9602 return "DW_AT_VMS_rtnbeg_pd_address";
9603 /* UPC extension. */
9604 case DW_AT_upc_threads_scaled
:
9605 return "DW_AT_upc_threads_scaled";
9606 /* PGI (STMicroelectronics) extensions. */
9607 case DW_AT_PGI_lbase
:
9608 return "DW_AT_PGI_lbase";
9609 case DW_AT_PGI_soffset
:
9610 return "DW_AT_PGI_soffset";
9611 case DW_AT_PGI_lstride
:
9612 return "DW_AT_PGI_lstride";
9614 return "DW_AT_<unknown>";
9618 /* Convert a DWARF value form code into its string name. */
9621 dwarf_form_name (unsigned form
)
9626 return "DW_FORM_addr";
9627 case DW_FORM_block2
:
9628 return "DW_FORM_block2";
9629 case DW_FORM_block4
:
9630 return "DW_FORM_block4";
9632 return "DW_FORM_data2";
9634 return "DW_FORM_data4";
9636 return "DW_FORM_data8";
9637 case DW_FORM_string
:
9638 return "DW_FORM_string";
9640 return "DW_FORM_block";
9641 case DW_FORM_block1
:
9642 return "DW_FORM_block1";
9644 return "DW_FORM_data1";
9646 return "DW_FORM_flag";
9648 return "DW_FORM_sdata";
9650 return "DW_FORM_strp";
9652 return "DW_FORM_udata";
9653 case DW_FORM_ref_addr
:
9654 return "DW_FORM_ref_addr";
9656 return "DW_FORM_ref1";
9658 return "DW_FORM_ref2";
9660 return "DW_FORM_ref4";
9662 return "DW_FORM_ref8";
9663 case DW_FORM_ref_udata
:
9664 return "DW_FORM_ref_udata";
9665 case DW_FORM_indirect
:
9666 return "DW_FORM_indirect";
9667 case DW_FORM_sec_offset
:
9668 return "DW_FORM_sec_offset";
9669 case DW_FORM_exprloc
:
9670 return "DW_FORM_exprloc";
9671 case DW_FORM_flag_present
:
9672 return "DW_FORM_flag_present";
9674 return "DW_FORM_sig8";
9676 return "DW_FORM_<unknown>";
9680 /* Convert a DWARF stack opcode into its string name. */
9683 dwarf_stack_op_name (unsigned op
)
9688 return "DW_OP_addr";
9690 return "DW_OP_deref";
9692 return "DW_OP_const1u";
9694 return "DW_OP_const1s";
9696 return "DW_OP_const2u";
9698 return "DW_OP_const2s";
9700 return "DW_OP_const4u";
9702 return "DW_OP_const4s";
9704 return "DW_OP_const8u";
9706 return "DW_OP_const8s";
9708 return "DW_OP_constu";
9710 return "DW_OP_consts";
9714 return "DW_OP_drop";
9716 return "DW_OP_over";
9718 return "DW_OP_pick";
9720 return "DW_OP_swap";
9724 return "DW_OP_xderef";
9732 return "DW_OP_minus";
9744 return "DW_OP_plus";
9745 case DW_OP_plus_uconst
:
9746 return "DW_OP_plus_uconst";
9752 return "DW_OP_shra";
9770 return "DW_OP_skip";
9772 return "DW_OP_lit0";
9774 return "DW_OP_lit1";
9776 return "DW_OP_lit2";
9778 return "DW_OP_lit3";
9780 return "DW_OP_lit4";
9782 return "DW_OP_lit5";
9784 return "DW_OP_lit6";
9786 return "DW_OP_lit7";
9788 return "DW_OP_lit8";
9790 return "DW_OP_lit9";
9792 return "DW_OP_lit10";
9794 return "DW_OP_lit11";
9796 return "DW_OP_lit12";
9798 return "DW_OP_lit13";
9800 return "DW_OP_lit14";
9802 return "DW_OP_lit15";
9804 return "DW_OP_lit16";
9806 return "DW_OP_lit17";
9808 return "DW_OP_lit18";
9810 return "DW_OP_lit19";
9812 return "DW_OP_lit20";
9814 return "DW_OP_lit21";
9816 return "DW_OP_lit22";
9818 return "DW_OP_lit23";
9820 return "DW_OP_lit24";
9822 return "DW_OP_lit25";
9824 return "DW_OP_lit26";
9826 return "DW_OP_lit27";
9828 return "DW_OP_lit28";
9830 return "DW_OP_lit29";
9832 return "DW_OP_lit30";
9834 return "DW_OP_lit31";
9836 return "DW_OP_reg0";
9838 return "DW_OP_reg1";
9840 return "DW_OP_reg2";
9842 return "DW_OP_reg3";
9844 return "DW_OP_reg4";
9846 return "DW_OP_reg5";
9848 return "DW_OP_reg6";
9850 return "DW_OP_reg7";
9852 return "DW_OP_reg8";
9854 return "DW_OP_reg9";
9856 return "DW_OP_reg10";
9858 return "DW_OP_reg11";
9860 return "DW_OP_reg12";
9862 return "DW_OP_reg13";
9864 return "DW_OP_reg14";
9866 return "DW_OP_reg15";
9868 return "DW_OP_reg16";
9870 return "DW_OP_reg17";
9872 return "DW_OP_reg18";
9874 return "DW_OP_reg19";
9876 return "DW_OP_reg20";
9878 return "DW_OP_reg21";
9880 return "DW_OP_reg22";
9882 return "DW_OP_reg23";
9884 return "DW_OP_reg24";
9886 return "DW_OP_reg25";
9888 return "DW_OP_reg26";
9890 return "DW_OP_reg27";
9892 return "DW_OP_reg28";
9894 return "DW_OP_reg29";
9896 return "DW_OP_reg30";
9898 return "DW_OP_reg31";
9900 return "DW_OP_breg0";
9902 return "DW_OP_breg1";
9904 return "DW_OP_breg2";
9906 return "DW_OP_breg3";
9908 return "DW_OP_breg4";
9910 return "DW_OP_breg5";
9912 return "DW_OP_breg6";
9914 return "DW_OP_breg7";
9916 return "DW_OP_breg8";
9918 return "DW_OP_breg9";
9920 return "DW_OP_breg10";
9922 return "DW_OP_breg11";
9924 return "DW_OP_breg12";
9926 return "DW_OP_breg13";
9928 return "DW_OP_breg14";
9930 return "DW_OP_breg15";
9932 return "DW_OP_breg16";
9934 return "DW_OP_breg17";
9936 return "DW_OP_breg18";
9938 return "DW_OP_breg19";
9940 return "DW_OP_breg20";
9942 return "DW_OP_breg21";
9944 return "DW_OP_breg22";
9946 return "DW_OP_breg23";
9948 return "DW_OP_breg24";
9950 return "DW_OP_breg25";
9952 return "DW_OP_breg26";
9954 return "DW_OP_breg27";
9956 return "DW_OP_breg28";
9958 return "DW_OP_breg29";
9960 return "DW_OP_breg30";
9962 return "DW_OP_breg31";
9964 return "DW_OP_regx";
9966 return "DW_OP_fbreg";
9968 return "DW_OP_bregx";
9970 return "DW_OP_piece";
9971 case DW_OP_deref_size
:
9972 return "DW_OP_deref_size";
9973 case DW_OP_xderef_size
:
9974 return "DW_OP_xderef_size";
9977 /* DWARF 3 extensions. */
9978 case DW_OP_push_object_address
:
9979 return "DW_OP_push_object_address";
9981 return "DW_OP_call2";
9983 return "DW_OP_call4";
9984 case DW_OP_call_ref
:
9985 return "DW_OP_call_ref";
9986 /* GNU extensions. */
9987 case DW_OP_form_tls_address
:
9988 return "DW_OP_form_tls_address";
9989 case DW_OP_call_frame_cfa
:
9990 return "DW_OP_call_frame_cfa";
9991 case DW_OP_bit_piece
:
9992 return "DW_OP_bit_piece";
9993 case DW_OP_GNU_push_tls_address
:
9994 return "DW_OP_GNU_push_tls_address";
9995 case DW_OP_GNU_uninit
:
9996 return "DW_OP_GNU_uninit";
9997 /* HP extensions. */
9998 case DW_OP_HP_is_value
:
9999 return "DW_OP_HP_is_value";
10000 case DW_OP_HP_fltconst4
:
10001 return "DW_OP_HP_fltconst4";
10002 case DW_OP_HP_fltconst8
:
10003 return "DW_OP_HP_fltconst8";
10004 case DW_OP_HP_mod_range
:
10005 return "DW_OP_HP_mod_range";
10006 case DW_OP_HP_unmod_range
:
10007 return "DW_OP_HP_unmod_range";
10009 return "DW_OP_HP_tls";
10011 return "OP_<unknown>";
10016 dwarf_bool_name (unsigned mybool
)
10024 /* Convert a DWARF type code into its string name. */
10027 dwarf_type_encoding_name (unsigned enc
)
10032 return "DW_ATE_void";
10033 case DW_ATE_address
:
10034 return "DW_ATE_address";
10035 case DW_ATE_boolean
:
10036 return "DW_ATE_boolean";
10037 case DW_ATE_complex_float
:
10038 return "DW_ATE_complex_float";
10040 return "DW_ATE_float";
10041 case DW_ATE_signed
:
10042 return "DW_ATE_signed";
10043 case DW_ATE_signed_char
:
10044 return "DW_ATE_signed_char";
10045 case DW_ATE_unsigned
:
10046 return "DW_ATE_unsigned";
10047 case DW_ATE_unsigned_char
:
10048 return "DW_ATE_unsigned_char";
10050 case DW_ATE_imaginary_float
:
10051 return "DW_ATE_imaginary_float";
10052 case DW_ATE_packed_decimal
:
10053 return "DW_ATE_packed_decimal";
10054 case DW_ATE_numeric_string
:
10055 return "DW_ATE_numeric_string";
10056 case DW_ATE_edited
:
10057 return "DW_ATE_edited";
10058 case DW_ATE_signed_fixed
:
10059 return "DW_ATE_signed_fixed";
10060 case DW_ATE_unsigned_fixed
:
10061 return "DW_ATE_unsigned_fixed";
10062 case DW_ATE_decimal_float
:
10063 return "DW_ATE_decimal_float";
10064 /* HP extensions. */
10065 case DW_ATE_HP_float80
:
10066 return "DW_ATE_HP_float80";
10067 case DW_ATE_HP_complex_float80
:
10068 return "DW_ATE_HP_complex_float80";
10069 case DW_ATE_HP_float128
:
10070 return "DW_ATE_HP_float128";
10071 case DW_ATE_HP_complex_float128
:
10072 return "DW_ATE_HP_complex_float128";
10073 case DW_ATE_HP_floathpintel
:
10074 return "DW_ATE_HP_floathpintel";
10075 case DW_ATE_HP_imaginary_float80
:
10076 return "DW_ATE_HP_imaginary_float80";
10077 case DW_ATE_HP_imaginary_float128
:
10078 return "DW_ATE_HP_imaginary_float128";
10080 return "DW_ATE_<unknown>";
10084 /* Convert a DWARF call frame info operation to its string name. */
10088 dwarf_cfi_name (unsigned cfi_opc
)
10092 case DW_CFA_advance_loc
:
10093 return "DW_CFA_advance_loc";
10094 case DW_CFA_offset
:
10095 return "DW_CFA_offset";
10096 case DW_CFA_restore
:
10097 return "DW_CFA_restore";
10099 return "DW_CFA_nop";
10100 case DW_CFA_set_loc
:
10101 return "DW_CFA_set_loc";
10102 case DW_CFA_advance_loc1
:
10103 return "DW_CFA_advance_loc1";
10104 case DW_CFA_advance_loc2
:
10105 return "DW_CFA_advance_loc2";
10106 case DW_CFA_advance_loc4
:
10107 return "DW_CFA_advance_loc4";
10108 case DW_CFA_offset_extended
:
10109 return "DW_CFA_offset_extended";
10110 case DW_CFA_restore_extended
:
10111 return "DW_CFA_restore_extended";
10112 case DW_CFA_undefined
:
10113 return "DW_CFA_undefined";
10114 case DW_CFA_same_value
:
10115 return "DW_CFA_same_value";
10116 case DW_CFA_register
:
10117 return "DW_CFA_register";
10118 case DW_CFA_remember_state
:
10119 return "DW_CFA_remember_state";
10120 case DW_CFA_restore_state
:
10121 return "DW_CFA_restore_state";
10122 case DW_CFA_def_cfa
:
10123 return "DW_CFA_def_cfa";
10124 case DW_CFA_def_cfa_register
:
10125 return "DW_CFA_def_cfa_register";
10126 case DW_CFA_def_cfa_offset
:
10127 return "DW_CFA_def_cfa_offset";
10129 case DW_CFA_def_cfa_expression
:
10130 return "DW_CFA_def_cfa_expression";
10131 case DW_CFA_expression
:
10132 return "DW_CFA_expression";
10133 case DW_CFA_offset_extended_sf
:
10134 return "DW_CFA_offset_extended_sf";
10135 case DW_CFA_def_cfa_sf
:
10136 return "DW_CFA_def_cfa_sf";
10137 case DW_CFA_def_cfa_offset_sf
:
10138 return "DW_CFA_def_cfa_offset_sf";
10139 case DW_CFA_val_offset
:
10140 return "DW_CFA_val_offset";
10141 case DW_CFA_val_offset_sf
:
10142 return "DW_CFA_val_offset_sf";
10143 case DW_CFA_val_expression
:
10144 return "DW_CFA_val_expression";
10145 /* SGI/MIPS specific. */
10146 case DW_CFA_MIPS_advance_loc8
:
10147 return "DW_CFA_MIPS_advance_loc8";
10148 /* GNU extensions. */
10149 case DW_CFA_GNU_window_save
:
10150 return "DW_CFA_GNU_window_save";
10151 case DW_CFA_GNU_args_size
:
10152 return "DW_CFA_GNU_args_size";
10153 case DW_CFA_GNU_negative_offset_extended
:
10154 return "DW_CFA_GNU_negative_offset_extended";
10156 return "DW_CFA_<unknown>";
10162 dump_die_shallow (struct ui_file
*f
, int indent
, struct die_info
*die
)
10166 print_spaces (indent
, f
);
10167 fprintf_unfiltered (f
, "Die: %s (abbrev %d, offset 0x%x)\n",
10168 dwarf_tag_name (die
->tag
), die
->abbrev
, die
->offset
);
10170 if (die
->parent
!= NULL
)
10172 print_spaces (indent
, f
);
10173 fprintf_unfiltered (f
, " parent at offset: 0x%x\n",
10174 die
->parent
->offset
);
10177 print_spaces (indent
, f
);
10178 fprintf_unfiltered (f
, " has children: %s\n",
10179 dwarf_bool_name (die
->child
!= NULL
));
10181 print_spaces (indent
, f
);
10182 fprintf_unfiltered (f
, " attributes:\n");
10184 for (i
= 0; i
< die
->num_attrs
; ++i
)
10186 print_spaces (indent
, f
);
10187 fprintf_unfiltered (f
, " %s (%s) ",
10188 dwarf_attr_name (die
->attrs
[i
].name
),
10189 dwarf_form_name (die
->attrs
[i
].form
));
10191 switch (die
->attrs
[i
].form
)
10193 case DW_FORM_ref_addr
:
10195 fprintf_unfiltered (f
, "address: ");
10196 fputs_filtered (hex_string (DW_ADDR (&die
->attrs
[i
])), f
);
10198 case DW_FORM_block2
:
10199 case DW_FORM_block4
:
10200 case DW_FORM_block
:
10201 case DW_FORM_block1
:
10202 fprintf_unfiltered (f
, "block: size %d", DW_BLOCK (&die
->attrs
[i
])->size
);
10207 fprintf_unfiltered (f
, "constant ref: 0x%lx (adjusted)",
10208 (long) (DW_ADDR (&die
->attrs
[i
])));
10210 case DW_FORM_data1
:
10211 case DW_FORM_data2
:
10212 case DW_FORM_data4
:
10213 case DW_FORM_data8
:
10214 case DW_FORM_udata
:
10215 case DW_FORM_sdata
:
10216 fprintf_unfiltered (f
, "constant: %s",
10217 pulongest (DW_UNSND (&die
->attrs
[i
])));
10220 if (DW_SIGNATURED_TYPE (&die
->attrs
[i
]) != NULL
)
10221 fprintf_unfiltered (f
, "signatured type, offset: 0x%x",
10222 DW_SIGNATURED_TYPE (&die
->attrs
[i
])->offset
);
10224 fprintf_unfiltered (f
, "signatured type, offset: unknown");
10226 case DW_FORM_string
:
10228 fprintf_unfiltered (f
, "string: \"%s\" (%s canonicalized)",
10229 DW_STRING (&die
->attrs
[i
])
10230 ? DW_STRING (&die
->attrs
[i
]) : "",
10231 DW_STRING_IS_CANONICAL (&die
->attrs
[i
]) ? "is" : "not");
10234 if (DW_UNSND (&die
->attrs
[i
]))
10235 fprintf_unfiltered (f
, "flag: TRUE");
10237 fprintf_unfiltered (f
, "flag: FALSE");
10239 case DW_FORM_indirect
:
10240 /* the reader will have reduced the indirect form to
10241 the "base form" so this form should not occur */
10242 fprintf_unfiltered (f
, "unexpected attribute form: DW_FORM_indirect");
10245 fprintf_unfiltered (f
, "unsupported attribute form: %d.",
10246 die
->attrs
[i
].form
);
10249 fprintf_unfiltered (f
, "\n");
10254 dump_die_for_error (struct die_info
*die
)
10256 dump_die_shallow (gdb_stderr
, 0, die
);
10260 dump_die_1 (struct ui_file
*f
, int level
, int max_level
, struct die_info
*die
)
10262 int indent
= level
* 4;
10264 gdb_assert (die
!= NULL
);
10266 if (level
>= max_level
)
10269 dump_die_shallow (f
, indent
, die
);
10271 if (die
->child
!= NULL
)
10273 print_spaces (indent
, f
);
10274 fprintf_unfiltered (f
, " Children:");
10275 if (level
+ 1 < max_level
)
10277 fprintf_unfiltered (f
, "\n");
10278 dump_die_1 (f
, level
+ 1, max_level
, die
->child
);
10282 fprintf_unfiltered (f
, " [not printed, max nesting level reached]\n");
10286 if (die
->sibling
!= NULL
&& level
> 0)
10288 dump_die_1 (f
, level
, max_level
, die
->sibling
);
10292 /* This is called from the pdie macro in gdbinit.in.
10293 It's not static so gcc will keep a copy callable from gdb. */
10296 dump_die (struct die_info
*die
, int max_level
)
10298 dump_die_1 (gdb_stdlog
, 0, max_level
, die
);
10302 store_in_ref_table (struct die_info
*die
, struct dwarf2_cu
*cu
)
10306 slot
= htab_find_slot_with_hash (cu
->die_hash
, die
, die
->offset
, INSERT
);
10312 is_ref_attr (struct attribute
*attr
)
10314 switch (attr
->form
)
10316 case DW_FORM_ref_addr
:
10321 case DW_FORM_ref_udata
:
10328 static unsigned int
10329 dwarf2_get_ref_die_offset (struct attribute
*attr
)
10331 if (is_ref_attr (attr
))
10332 return DW_ADDR (attr
);
10334 complaint (&symfile_complaints
,
10335 _("unsupported die ref attribute form: '%s'"),
10336 dwarf_form_name (attr
->form
));
10340 /* Return the constant value held by ATTR. Return DEFAULT_VALUE if
10341 * the value held by the attribute is not constant. */
10344 dwarf2_get_attr_constant_value (struct attribute
*attr
, int default_value
)
10346 if (attr
->form
== DW_FORM_sdata
)
10347 return DW_SND (attr
);
10348 else if (attr
->form
== DW_FORM_udata
10349 || attr
->form
== DW_FORM_data1
10350 || attr
->form
== DW_FORM_data2
10351 || attr
->form
== DW_FORM_data4
10352 || attr
->form
== DW_FORM_data8
)
10353 return DW_UNSND (attr
);
10356 complaint (&symfile_complaints
, _("Attribute value is not a constant (%s)"),
10357 dwarf_form_name (attr
->form
));
10358 return default_value
;
10362 /* THIS_CU has a reference to PER_CU. If necessary, load the new compilation
10363 unit and add it to our queue.
10364 The result is non-zero if PER_CU was queued, otherwise the result is zero
10365 meaning either PER_CU is already queued or it is already loaded. */
10368 maybe_queue_comp_unit (struct dwarf2_cu
*this_cu
,
10369 struct dwarf2_per_cu_data
*per_cu
)
10371 /* Mark the dependence relation so that we don't flush PER_CU
10373 dwarf2_add_dependence (this_cu
, per_cu
);
10375 /* If it's already on the queue, we have nothing to do. */
10376 if (per_cu
->queued
)
10379 /* If the compilation unit is already loaded, just mark it as
10381 if (per_cu
->cu
!= NULL
)
10383 per_cu
->cu
->last_used
= 0;
10387 /* Add it to the queue. */
10388 queue_comp_unit (per_cu
, this_cu
->objfile
);
10393 /* Follow reference or signature attribute ATTR of SRC_DIE.
10394 On entry *REF_CU is the CU of SRC_DIE.
10395 On exit *REF_CU is the CU of the result. */
10397 static struct die_info
*
10398 follow_die_ref_or_sig (struct die_info
*src_die
, struct attribute
*attr
,
10399 struct dwarf2_cu
**ref_cu
)
10401 struct die_info
*die
;
10403 if (is_ref_attr (attr
))
10404 die
= follow_die_ref (src_die
, attr
, ref_cu
);
10405 else if (attr
->form
== DW_FORM_sig8
)
10406 die
= follow_die_sig (src_die
, attr
, ref_cu
);
10409 dump_die_for_error (src_die
);
10410 error (_("Dwarf Error: Expected reference attribute [in module %s]"),
10411 (*ref_cu
)->objfile
->name
);
10417 /* Follow reference attribute ATTR of SRC_DIE.
10418 On entry *REF_CU is the CU of SRC_DIE.
10419 On exit *REF_CU is the CU of the result. */
10421 static struct die_info
*
10422 follow_die_ref (struct die_info
*src_die
, struct attribute
*attr
,
10423 struct dwarf2_cu
**ref_cu
)
10425 struct die_info
*die
;
10426 unsigned int offset
;
10427 struct die_info temp_die
;
10428 struct dwarf2_cu
*target_cu
, *cu
= *ref_cu
;
10430 gdb_assert (cu
->per_cu
!= NULL
);
10432 offset
= dwarf2_get_ref_die_offset (attr
);
10434 if (cu
->per_cu
->from_debug_types
)
10436 /* .debug_types CUs cannot reference anything outside their CU.
10437 If they need to, they have to reference a signatured type via
10439 if (! offset_in_cu_p (&cu
->header
, offset
))
10443 else if (! offset_in_cu_p (&cu
->header
, offset
))
10445 struct dwarf2_per_cu_data
*per_cu
;
10446 per_cu
= dwarf2_find_containing_comp_unit (offset
, cu
->objfile
);
10448 /* If necessary, add it to the queue and load its DIEs. */
10449 if (maybe_queue_comp_unit (cu
, per_cu
))
10450 load_full_comp_unit (per_cu
, cu
->objfile
);
10452 target_cu
= per_cu
->cu
;
10457 *ref_cu
= target_cu
;
10458 temp_die
.offset
= offset
;
10459 die
= htab_find_with_hash (target_cu
->die_hash
, &temp_die
, offset
);
10465 error (_("Dwarf Error: Cannot find DIE at 0x%x referenced from DIE "
10466 "at 0x%x [in module %s]"),
10467 offset
, src_die
->offset
, cu
->objfile
->name
);
10470 /* Follow the signature attribute ATTR in SRC_DIE.
10471 On entry *REF_CU is the CU of SRC_DIE.
10472 On exit *REF_CU is the CU of the result. */
10474 static struct die_info
*
10475 follow_die_sig (struct die_info
*src_die
, struct attribute
*attr
,
10476 struct dwarf2_cu
**ref_cu
)
10478 struct objfile
*objfile
= (*ref_cu
)->objfile
;
10479 struct die_info temp_die
;
10480 struct signatured_type
*sig_type
= DW_SIGNATURED_TYPE (attr
);
10481 struct dwarf2_cu
*sig_cu
;
10482 struct die_info
*die
;
10484 /* sig_type will be NULL if the signatured type is missing from
10486 if (sig_type
== NULL
)
10487 error (_("Dwarf Error: Cannot find signatured DIE referenced from DIE "
10488 "at 0x%x [in module %s]"),
10489 src_die
->offset
, objfile
->name
);
10491 /* If necessary, add it to the queue and load its DIEs. */
10493 if (maybe_queue_comp_unit (*ref_cu
, &sig_type
->per_cu
))
10494 read_signatured_type (objfile
, sig_type
);
10496 gdb_assert (sig_type
->per_cu
.cu
!= NULL
);
10498 sig_cu
= sig_type
->per_cu
.cu
;
10499 temp_die
.offset
= sig_cu
->header
.offset
+ sig_type
->type_offset
;
10500 die
= htab_find_with_hash (sig_cu
->die_hash
, &temp_die
, temp_die
.offset
);
10507 error (_("Dwarf Error: Cannot find signatured DIE at 0x%x referenced from DIE "
10508 "at 0x%x [in module %s]"),
10509 sig_type
->type_offset
, src_die
->offset
, objfile
->name
);
10512 /* Given an offset of a signatured type, return its signatured_type. */
10514 static struct signatured_type
*
10515 lookup_signatured_type_at_offset (struct objfile
*objfile
, unsigned int offset
)
10517 gdb_byte
*info_ptr
= dwarf2_per_objfile
->types
.buffer
+ offset
;
10518 unsigned int length
, initial_length_size
;
10519 unsigned int sig_offset
;
10520 struct signatured_type find_entry
, *type_sig
;
10522 length
= read_initial_length (objfile
->obfd
, info_ptr
, &initial_length_size
);
10523 sig_offset
= (initial_length_size
10525 + (initial_length_size
== 4 ? 4 : 8) /*debug_abbrev_offset*/
10526 + 1 /*address_size*/);
10527 find_entry
.signature
= bfd_get_64 (objfile
->obfd
, info_ptr
+ sig_offset
);
10528 type_sig
= htab_find (dwarf2_per_objfile
->signatured_types
, &find_entry
);
10530 /* This is only used to lookup previously recorded types.
10531 If we didn't find it, it's our bug. */
10532 gdb_assert (type_sig
!= NULL
);
10533 gdb_assert (offset
== type_sig
->offset
);
10538 /* Read in signatured type at OFFSET and build its CU and die(s). */
10541 read_signatured_type_at_offset (struct objfile
*objfile
,
10542 unsigned int offset
)
10544 struct signatured_type
*type_sig
;
10546 /* We have the section offset, but we need the signature to do the
10547 hash table lookup. */
10548 type_sig
= lookup_signatured_type_at_offset (objfile
, offset
);
10550 gdb_assert (type_sig
->per_cu
.cu
== NULL
);
10552 read_signatured_type (objfile
, type_sig
);
10554 gdb_assert (type_sig
->per_cu
.cu
!= NULL
);
10557 /* Read in a signatured type and build its CU and DIEs. */
10560 read_signatured_type (struct objfile
*objfile
,
10561 struct signatured_type
*type_sig
)
10563 gdb_byte
*types_ptr
= dwarf2_per_objfile
->types
.buffer
+ type_sig
->offset
;
10564 struct die_reader_specs reader_specs
;
10565 struct dwarf2_cu
*cu
;
10566 ULONGEST signature
;
10567 struct cleanup
*back_to
, *free_cu_cleanup
;
10568 struct attribute
*attr
;
10570 gdb_assert (type_sig
->per_cu
.cu
== NULL
);
10572 cu
= xmalloc (sizeof (struct dwarf2_cu
));
10573 memset (cu
, 0, sizeof (struct dwarf2_cu
));
10574 obstack_init (&cu
->comp_unit_obstack
);
10575 cu
->objfile
= objfile
;
10576 type_sig
->per_cu
.cu
= cu
;
10577 cu
->per_cu
= &type_sig
->per_cu
;
10579 /* If an error occurs while loading, release our storage. */
10580 free_cu_cleanup
= make_cleanup (free_one_comp_unit
, cu
);
10582 types_ptr
= read_type_comp_unit_head (&cu
->header
, &signature
,
10583 types_ptr
, objfile
->obfd
);
10584 gdb_assert (signature
== type_sig
->signature
);
10587 = htab_create_alloc_ex (cu
->header
.length
/ 12,
10591 &cu
->comp_unit_obstack
,
10592 hashtab_obstack_allocate
,
10593 dummy_obstack_deallocate
);
10595 dwarf2_read_abbrevs (cu
->objfile
->obfd
, cu
);
10596 back_to
= make_cleanup (dwarf2_free_abbrev_table
, cu
);
10598 init_cu_die_reader (&reader_specs
, cu
);
10600 cu
->dies
= read_die_and_children (&reader_specs
, types_ptr
, &types_ptr
,
10603 /* We try not to read any attributes in this function, because not
10604 all objfiles needed for references have been loaded yet, and symbol
10605 table processing isn't initialized. But we have to set the CU language,
10606 or we won't be able to build types correctly. */
10607 attr
= dwarf2_attr (cu
->dies
, DW_AT_language
, cu
);
10609 set_cu_language (DW_UNSND (attr
), cu
);
10611 set_cu_language (language_minimal
, cu
);
10613 do_cleanups (back_to
);
10615 /* We've successfully allocated this compilation unit. Let our caller
10616 clean it up when finished with it. */
10617 discard_cleanups (free_cu_cleanup
);
10619 type_sig
->per_cu
.cu
->read_in_chain
= dwarf2_per_objfile
->read_in_chain
;
10620 dwarf2_per_objfile
->read_in_chain
= &type_sig
->per_cu
;
10623 /* Decode simple location descriptions.
10624 Given a pointer to a dwarf block that defines a location, compute
10625 the location and return the value.
10627 NOTE drow/2003-11-18: This function is called in two situations
10628 now: for the address of static or global variables (partial symbols
10629 only) and for offsets into structures which are expected to be
10630 (more or less) constant. The partial symbol case should go away,
10631 and only the constant case should remain. That will let this
10632 function complain more accurately. A few special modes are allowed
10633 without complaint for global variables (for instance, global
10634 register values and thread-local values).
10636 A location description containing no operations indicates that the
10637 object is optimized out. The return value is 0 for that case.
10638 FIXME drow/2003-11-16: No callers check for this case any more; soon all
10639 callers will only want a very basic result and this can become a
10642 Note that stack[0] is unused except as a default error return.
10643 Note that stack overflow is not yet handled. */
10646 decode_locdesc (struct dwarf_block
*blk
, struct dwarf2_cu
*cu
)
10648 struct objfile
*objfile
= cu
->objfile
;
10649 struct comp_unit_head
*cu_header
= &cu
->header
;
10651 int size
= blk
->size
;
10652 gdb_byte
*data
= blk
->data
;
10653 CORE_ADDR stack
[64];
10655 unsigned int bytes_read
, unsnd
;
10699 stack
[++stacki
] = op
- DW_OP_lit0
;
10734 stack
[++stacki
] = op
- DW_OP_reg0
;
10736 dwarf2_complex_location_expr_complaint ();
10740 unsnd
= read_unsigned_leb128 (NULL
, (data
+ i
), &bytes_read
);
10742 stack
[++stacki
] = unsnd
;
10744 dwarf2_complex_location_expr_complaint ();
10748 stack
[++stacki
] = read_address (objfile
->obfd
, &data
[i
],
10753 case DW_OP_const1u
:
10754 stack
[++stacki
] = read_1_byte (objfile
->obfd
, &data
[i
]);
10758 case DW_OP_const1s
:
10759 stack
[++stacki
] = read_1_signed_byte (objfile
->obfd
, &data
[i
]);
10763 case DW_OP_const2u
:
10764 stack
[++stacki
] = read_2_bytes (objfile
->obfd
, &data
[i
]);
10768 case DW_OP_const2s
:
10769 stack
[++stacki
] = read_2_signed_bytes (objfile
->obfd
, &data
[i
]);
10773 case DW_OP_const4u
:
10774 stack
[++stacki
] = read_4_bytes (objfile
->obfd
, &data
[i
]);
10778 case DW_OP_const4s
:
10779 stack
[++stacki
] = read_4_signed_bytes (objfile
->obfd
, &data
[i
]);
10784 stack
[++stacki
] = read_unsigned_leb128 (NULL
, (data
+ i
),
10790 stack
[++stacki
] = read_signed_leb128 (NULL
, (data
+ i
), &bytes_read
);
10795 stack
[stacki
+ 1] = stack
[stacki
];
10800 stack
[stacki
- 1] += stack
[stacki
];
10804 case DW_OP_plus_uconst
:
10805 stack
[stacki
] += read_unsigned_leb128 (NULL
, (data
+ i
), &bytes_read
);
10810 stack
[stacki
- 1] -= stack
[stacki
];
10815 /* If we're not the last op, then we definitely can't encode
10816 this using GDB's address_class enum. This is valid for partial
10817 global symbols, although the variable's address will be bogus
10820 dwarf2_complex_location_expr_complaint ();
10823 case DW_OP_GNU_push_tls_address
:
10824 /* The top of the stack has the offset from the beginning
10825 of the thread control block at which the variable is located. */
10826 /* Nothing should follow this operator, so the top of stack would
10828 /* This is valid for partial global symbols, but the variable's
10829 address will be bogus in the psymtab. */
10831 dwarf2_complex_location_expr_complaint ();
10834 case DW_OP_GNU_uninit
:
10838 complaint (&symfile_complaints
, _("unsupported stack op: '%s'"),
10839 dwarf_stack_op_name (op
));
10840 return (stack
[stacki
]);
10843 return (stack
[stacki
]);
10846 /* memory allocation interface */
10848 static struct dwarf_block
*
10849 dwarf_alloc_block (struct dwarf2_cu
*cu
)
10851 struct dwarf_block
*blk
;
10853 blk
= (struct dwarf_block
*)
10854 obstack_alloc (&cu
->comp_unit_obstack
, sizeof (struct dwarf_block
));
10858 static struct abbrev_info
*
10859 dwarf_alloc_abbrev (struct dwarf2_cu
*cu
)
10861 struct abbrev_info
*abbrev
;
10863 abbrev
= (struct abbrev_info
*)
10864 obstack_alloc (&cu
->abbrev_obstack
, sizeof (struct abbrev_info
));
10865 memset (abbrev
, 0, sizeof (struct abbrev_info
));
10869 static struct die_info
*
10870 dwarf_alloc_die (struct dwarf2_cu
*cu
, int num_attrs
)
10872 struct die_info
*die
;
10873 size_t size
= sizeof (struct die_info
);
10876 size
+= (num_attrs
- 1) * sizeof (struct attribute
);
10878 die
= (struct die_info
*) obstack_alloc (&cu
->comp_unit_obstack
, size
);
10879 memset (die
, 0, sizeof (struct die_info
));
10884 /* Macro support. */
10887 /* Return the full name of file number I in *LH's file name table.
10888 Use COMP_DIR as the name of the current directory of the
10889 compilation. The result is allocated using xmalloc; the caller is
10890 responsible for freeing it. */
10892 file_full_name (int file
, struct line_header
*lh
, const char *comp_dir
)
10894 /* Is the file number a valid index into the line header's file name
10895 table? Remember that file numbers start with one, not zero. */
10896 if (1 <= file
&& file
<= lh
->num_file_names
)
10898 struct file_entry
*fe
= &lh
->file_names
[file
- 1];
10900 if (IS_ABSOLUTE_PATH (fe
->name
))
10901 return xstrdup (fe
->name
);
10909 dir
= lh
->include_dirs
[fe
->dir_index
- 1];
10915 dir_len
= strlen (dir
);
10916 full_name
= xmalloc (dir_len
+ 1 + strlen (fe
->name
) + 1);
10917 strcpy (full_name
, dir
);
10918 full_name
[dir_len
] = '/';
10919 strcpy (full_name
+ dir_len
+ 1, fe
->name
);
10923 return xstrdup (fe
->name
);
10928 /* The compiler produced a bogus file number. We can at least
10929 record the macro definitions made in the file, even if we
10930 won't be able to find the file by name. */
10931 char fake_name
[80];
10932 sprintf (fake_name
, "<bad macro file number %d>", file
);
10934 complaint (&symfile_complaints
,
10935 _("bad file number in macro information (%d)"),
10938 return xstrdup (fake_name
);
10943 static struct macro_source_file
*
10944 macro_start_file (int file
, int line
,
10945 struct macro_source_file
*current_file
,
10946 const char *comp_dir
,
10947 struct line_header
*lh
, struct objfile
*objfile
)
10949 /* The full name of this source file. */
10950 char *full_name
= file_full_name (file
, lh
, comp_dir
);
10952 /* We don't create a macro table for this compilation unit
10953 at all until we actually get a filename. */
10954 if (! pending_macros
)
10955 pending_macros
= new_macro_table (&objfile
->objfile_obstack
,
10956 objfile
->macro_cache
);
10958 if (! current_file
)
10959 /* If we have no current file, then this must be the start_file
10960 directive for the compilation unit's main source file. */
10961 current_file
= macro_set_main (pending_macros
, full_name
);
10963 current_file
= macro_include (current_file
, line
, full_name
);
10967 return current_file
;
10971 /* Copy the LEN characters at BUF to a xmalloc'ed block of memory,
10972 followed by a null byte. */
10974 copy_string (const char *buf
, int len
)
10976 char *s
= xmalloc (len
+ 1);
10977 memcpy (s
, buf
, len
);
10984 static const char *
10985 consume_improper_spaces (const char *p
, const char *body
)
10989 complaint (&symfile_complaints
,
10990 _("macro definition contains spaces in formal argument list:\n`%s'"),
11002 parse_macro_definition (struct macro_source_file
*file
, int line
,
11007 /* The body string takes one of two forms. For object-like macro
11008 definitions, it should be:
11010 <macro name> " " <definition>
11012 For function-like macro definitions, it should be:
11014 <macro name> "() " <definition>
11016 <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
11018 Spaces may appear only where explicitly indicated, and in the
11021 The Dwarf 2 spec says that an object-like macro's name is always
11022 followed by a space, but versions of GCC around March 2002 omit
11023 the space when the macro's definition is the empty string.
11025 The Dwarf 2 spec says that there should be no spaces between the
11026 formal arguments in a function-like macro's formal argument list,
11027 but versions of GCC around March 2002 include spaces after the
11031 /* Find the extent of the macro name. The macro name is terminated
11032 by either a space or null character (for an object-like macro) or
11033 an opening paren (for a function-like macro). */
11034 for (p
= body
; *p
; p
++)
11035 if (*p
== ' ' || *p
== '(')
11038 if (*p
== ' ' || *p
== '\0')
11040 /* It's an object-like macro. */
11041 int name_len
= p
- body
;
11042 char *name
= copy_string (body
, name_len
);
11043 const char *replacement
;
11046 replacement
= body
+ name_len
+ 1;
11049 dwarf2_macro_malformed_definition_complaint (body
);
11050 replacement
= body
+ name_len
;
11053 macro_define_object (file
, line
, name
, replacement
);
11057 else if (*p
== '(')
11059 /* It's a function-like macro. */
11060 char *name
= copy_string (body
, p
- body
);
11063 char **argv
= xmalloc (argv_size
* sizeof (*argv
));
11067 p
= consume_improper_spaces (p
, body
);
11069 /* Parse the formal argument list. */
11070 while (*p
&& *p
!= ')')
11072 /* Find the extent of the current argument name. */
11073 const char *arg_start
= p
;
11075 while (*p
&& *p
!= ',' && *p
!= ')' && *p
!= ' ')
11078 if (! *p
|| p
== arg_start
)
11079 dwarf2_macro_malformed_definition_complaint (body
);
11082 /* Make sure argv has room for the new argument. */
11083 if (argc
>= argv_size
)
11086 argv
= xrealloc (argv
, argv_size
* sizeof (*argv
));
11089 argv
[argc
++] = copy_string (arg_start
, p
- arg_start
);
11092 p
= consume_improper_spaces (p
, body
);
11094 /* Consume the comma, if present. */
11099 p
= consume_improper_spaces (p
, body
);
11108 /* Perfectly formed definition, no complaints. */
11109 macro_define_function (file
, line
, name
,
11110 argc
, (const char **) argv
,
11112 else if (*p
== '\0')
11114 /* Complain, but do define it. */
11115 dwarf2_macro_malformed_definition_complaint (body
);
11116 macro_define_function (file
, line
, name
,
11117 argc
, (const char **) argv
,
11121 /* Just complain. */
11122 dwarf2_macro_malformed_definition_complaint (body
);
11125 /* Just complain. */
11126 dwarf2_macro_malformed_definition_complaint (body
);
11132 for (i
= 0; i
< argc
; i
++)
11138 dwarf2_macro_malformed_definition_complaint (body
);
11143 dwarf_decode_macros (struct line_header
*lh
, unsigned int offset
,
11144 char *comp_dir
, bfd
*abfd
,
11145 struct dwarf2_cu
*cu
)
11147 gdb_byte
*mac_ptr
, *mac_end
;
11148 struct macro_source_file
*current_file
= 0;
11149 enum dwarf_macinfo_record_type macinfo_type
;
11150 int at_commandline
;
11152 if (dwarf2_per_objfile
->macinfo
.buffer
== NULL
)
11154 complaint (&symfile_complaints
, _("missing .debug_macinfo section"));
11158 /* First pass: Find the name of the base filename.
11159 This filename is needed in order to process all macros whose definition
11160 (or undefinition) comes from the command line. These macros are defined
11161 before the first DW_MACINFO_start_file entry, and yet still need to be
11162 associated to the base file.
11164 To determine the base file name, we scan the macro definitions until we
11165 reach the first DW_MACINFO_start_file entry. We then initialize
11166 CURRENT_FILE accordingly so that any macro definition found before the
11167 first DW_MACINFO_start_file can still be associated to the base file. */
11169 mac_ptr
= dwarf2_per_objfile
->macinfo
.buffer
+ offset
;
11170 mac_end
= dwarf2_per_objfile
->macinfo
.buffer
11171 + dwarf2_per_objfile
->macinfo
.size
;
11175 /* Do we at least have room for a macinfo type byte? */
11176 if (mac_ptr
>= mac_end
)
11178 /* Complaint is printed during the second pass as GDB will probably
11179 stop the first pass earlier upon finding DW_MACINFO_start_file. */
11183 macinfo_type
= read_1_byte (abfd
, mac_ptr
);
11186 switch (macinfo_type
)
11188 /* A zero macinfo type indicates the end of the macro
11193 case DW_MACINFO_define
:
11194 case DW_MACINFO_undef
:
11195 /* Only skip the data by MAC_PTR. */
11197 unsigned int bytes_read
;
11199 read_unsigned_leb128 (abfd
, mac_ptr
, &bytes_read
);
11200 mac_ptr
+= bytes_read
;
11201 read_string (abfd
, mac_ptr
, &bytes_read
);
11202 mac_ptr
+= bytes_read
;
11206 case DW_MACINFO_start_file
:
11208 unsigned int bytes_read
;
11211 line
= read_unsigned_leb128 (abfd
, mac_ptr
, &bytes_read
);
11212 mac_ptr
+= bytes_read
;
11213 file
= read_unsigned_leb128 (abfd
, mac_ptr
, &bytes_read
);
11214 mac_ptr
+= bytes_read
;
11216 current_file
= macro_start_file (file
, line
, current_file
, comp_dir
,
11221 case DW_MACINFO_end_file
:
11222 /* No data to skip by MAC_PTR. */
11225 case DW_MACINFO_vendor_ext
:
11226 /* Only skip the data by MAC_PTR. */
11228 unsigned int bytes_read
;
11230 read_unsigned_leb128 (abfd
, mac_ptr
, &bytes_read
);
11231 mac_ptr
+= bytes_read
;
11232 read_string (abfd
, mac_ptr
, &bytes_read
);
11233 mac_ptr
+= bytes_read
;
11240 } while (macinfo_type
!= 0 && current_file
== NULL
);
11242 /* Second pass: Process all entries.
11244 Use the AT_COMMAND_LINE flag to determine whether we are still processing
11245 command-line macro definitions/undefinitions. This flag is unset when we
11246 reach the first DW_MACINFO_start_file entry. */
11248 mac_ptr
= dwarf2_per_objfile
->macinfo
.buffer
+ offset
;
11250 /* Determines if GDB is still before first DW_MACINFO_start_file. If true
11251 GDB is still reading the definitions from command line. First
11252 DW_MACINFO_start_file will need to be ignored as it was already executed
11253 to create CURRENT_FILE for the main source holding also the command line
11254 definitions. On first met DW_MACINFO_start_file this flag is reset to
11255 normally execute all the remaining DW_MACINFO_start_file macinfos. */
11257 at_commandline
= 1;
11261 /* Do we at least have room for a macinfo type byte? */
11262 if (mac_ptr
>= mac_end
)
11264 dwarf2_macros_too_long_complaint ();
11268 macinfo_type
= read_1_byte (abfd
, mac_ptr
);
11271 switch (macinfo_type
)
11273 /* A zero macinfo type indicates the end of the macro
11278 case DW_MACINFO_define
:
11279 case DW_MACINFO_undef
:
11281 unsigned int bytes_read
;
11285 line
= read_unsigned_leb128 (abfd
, mac_ptr
, &bytes_read
);
11286 mac_ptr
+= bytes_read
;
11287 body
= read_string (abfd
, mac_ptr
, &bytes_read
);
11288 mac_ptr
+= bytes_read
;
11290 if (! current_file
)
11292 /* DWARF violation as no main source is present. */
11293 complaint (&symfile_complaints
,
11294 _("debug info with no main source gives macro %s "
11296 macinfo_type
== DW_MACINFO_define
?
11298 macinfo_type
== DW_MACINFO_undef
?
11299 _("undefinition") :
11300 _("something-or-other"), line
, body
);
11303 if ((line
== 0 && !at_commandline
) || (line
!= 0 && at_commandline
))
11304 complaint (&symfile_complaints
,
11305 _("debug info gives %s macro %s with %s line %d: %s"),
11306 at_commandline
? _("command-line") : _("in-file"),
11307 macinfo_type
== DW_MACINFO_define
?
11309 macinfo_type
== DW_MACINFO_undef
?
11310 _("undefinition") :
11311 _("something-or-other"),
11312 line
== 0 ? _("zero") : _("non-zero"), line
, body
);
11314 if (macinfo_type
== DW_MACINFO_define
)
11315 parse_macro_definition (current_file
, line
, body
);
11316 else if (macinfo_type
== DW_MACINFO_undef
)
11317 macro_undef (current_file
, line
, body
);
11321 case DW_MACINFO_start_file
:
11323 unsigned int bytes_read
;
11326 line
= read_unsigned_leb128 (abfd
, mac_ptr
, &bytes_read
);
11327 mac_ptr
+= bytes_read
;
11328 file
= read_unsigned_leb128 (abfd
, mac_ptr
, &bytes_read
);
11329 mac_ptr
+= bytes_read
;
11331 if ((line
== 0 && !at_commandline
) || (line
!= 0 && at_commandline
))
11332 complaint (&symfile_complaints
,
11333 _("debug info gives source %d included "
11334 "from %s at %s line %d"),
11335 file
, at_commandline
? _("command-line") : _("file"),
11336 line
== 0 ? _("zero") : _("non-zero"), line
);
11338 if (at_commandline
)
11340 /* This DW_MACINFO_start_file was executed in the pass one. */
11341 at_commandline
= 0;
11344 current_file
= macro_start_file (file
, line
,
11345 current_file
, comp_dir
,
11350 case DW_MACINFO_end_file
:
11351 if (! current_file
)
11352 complaint (&symfile_complaints
,
11353 _("macro debug info has an unmatched `close_file' directive"));
11356 current_file
= current_file
->included_by
;
11357 if (! current_file
)
11359 enum dwarf_macinfo_record_type next_type
;
11361 /* GCC circa March 2002 doesn't produce the zero
11362 type byte marking the end of the compilation
11363 unit. Complain if it's not there, but exit no
11366 /* Do we at least have room for a macinfo type byte? */
11367 if (mac_ptr
>= mac_end
)
11369 dwarf2_macros_too_long_complaint ();
11373 /* We don't increment mac_ptr here, so this is just
11375 next_type
= read_1_byte (abfd
, mac_ptr
);
11376 if (next_type
!= 0)
11377 complaint (&symfile_complaints
,
11378 _("no terminating 0-type entry for macros in `.debug_macinfo' section"));
11385 case DW_MACINFO_vendor_ext
:
11387 unsigned int bytes_read
;
11391 constant
= read_unsigned_leb128 (abfd
, mac_ptr
, &bytes_read
);
11392 mac_ptr
+= bytes_read
;
11393 string
= read_string (abfd
, mac_ptr
, &bytes_read
);
11394 mac_ptr
+= bytes_read
;
11396 /* We don't recognize any vendor extensions. */
11400 } while (macinfo_type
!= 0);
11403 /* Check if the attribute's form is a DW_FORM_block*
11404 if so return true else false. */
11406 attr_form_is_block (struct attribute
*attr
)
11408 return (attr
== NULL
? 0 :
11409 attr
->form
== DW_FORM_block1
11410 || attr
->form
== DW_FORM_block2
11411 || attr
->form
== DW_FORM_block4
11412 || attr
->form
== DW_FORM_block
);
11415 /* Return non-zero if ATTR's value is a section offset --- classes
11416 lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
11417 You may use DW_UNSND (attr) to retrieve such offsets.
11419 Section 7.5.4, "Attribute Encodings", explains that no attribute
11420 may have a value that belongs to more than one of these classes; it
11421 would be ambiguous if we did, because we use the same forms for all
11424 attr_form_is_section_offset (struct attribute
*attr
)
11426 return (attr
->form
== DW_FORM_data4
11427 || attr
->form
== DW_FORM_data8
);
11431 /* Return non-zero if ATTR's value falls in the 'constant' class, or
11432 zero otherwise. When this function returns true, you can apply
11433 dwarf2_get_attr_constant_value to it.
11435 However, note that for some attributes you must check
11436 attr_form_is_section_offset before using this test. DW_FORM_data4
11437 and DW_FORM_data8 are members of both the constant class, and of
11438 the classes that contain offsets into other debug sections
11439 (lineptr, loclistptr, macptr or rangelistptr). The DWARF spec says
11440 that, if an attribute's can be either a constant or one of the
11441 section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
11442 taken as section offsets, not constants. */
11444 attr_form_is_constant (struct attribute
*attr
)
11446 switch (attr
->form
)
11448 case DW_FORM_sdata
:
11449 case DW_FORM_udata
:
11450 case DW_FORM_data1
:
11451 case DW_FORM_data2
:
11452 case DW_FORM_data4
:
11453 case DW_FORM_data8
:
11461 dwarf2_symbol_mark_computed (struct attribute
*attr
, struct symbol
*sym
,
11462 struct dwarf2_cu
*cu
)
11464 if (attr_form_is_section_offset (attr
)
11465 /* ".debug_loc" may not exist at all, or the offset may be outside
11466 the section. If so, fall through to the complaint in the
11468 && DW_UNSND (attr
) < dwarf2_per_objfile
->loc
.size
)
11470 struct dwarf2_loclist_baton
*baton
;
11472 baton
= obstack_alloc (&cu
->objfile
->objfile_obstack
,
11473 sizeof (struct dwarf2_loclist_baton
));
11474 baton
->per_cu
= cu
->per_cu
;
11475 gdb_assert (baton
->per_cu
);
11477 /* We don't know how long the location list is, but make sure we
11478 don't run off the edge of the section. */
11479 baton
->size
= dwarf2_per_objfile
->loc
.size
- DW_UNSND (attr
);
11480 baton
->data
= dwarf2_per_objfile
->loc
.buffer
+ DW_UNSND (attr
);
11481 baton
->base_address
= cu
->base_address
;
11482 if (cu
->base_known
== 0)
11483 complaint (&symfile_complaints
,
11484 _("Location list used without specifying the CU base address."));
11486 SYMBOL_COMPUTED_OPS (sym
) = &dwarf2_loclist_funcs
;
11487 SYMBOL_LOCATION_BATON (sym
) = baton
;
11491 struct dwarf2_locexpr_baton
*baton
;
11493 baton
= obstack_alloc (&cu
->objfile
->objfile_obstack
,
11494 sizeof (struct dwarf2_locexpr_baton
));
11495 baton
->per_cu
= cu
->per_cu
;
11496 gdb_assert (baton
->per_cu
);
11498 if (attr_form_is_block (attr
))
11500 /* Note that we're just copying the block's data pointer
11501 here, not the actual data. We're still pointing into the
11502 info_buffer for SYM's objfile; right now we never release
11503 that buffer, but when we do clean up properly this may
11505 baton
->size
= DW_BLOCK (attr
)->size
;
11506 baton
->data
= DW_BLOCK (attr
)->data
;
11510 dwarf2_invalid_attrib_class_complaint ("location description",
11511 SYMBOL_NATURAL_NAME (sym
));
11513 baton
->data
= NULL
;
11516 SYMBOL_COMPUTED_OPS (sym
) = &dwarf2_locexpr_funcs
;
11517 SYMBOL_LOCATION_BATON (sym
) = baton
;
11521 /* Return the OBJFILE associated with the compilation unit CU. */
11524 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data
*per_cu
)
11526 struct objfile
*objfile
= per_cu
->psymtab
->objfile
;
11528 /* Return the master objfile, so that we can report and look up the
11529 correct file containing this variable. */
11530 if (objfile
->separate_debug_objfile_backlink
)
11531 objfile
= objfile
->separate_debug_objfile_backlink
;
11536 /* Return the address size given in the compilation unit header for CU. */
11539 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data
*per_cu
)
11542 return per_cu
->cu
->header
.addr_size
;
11545 /* If the CU is not currently read in, we re-read its header. */
11546 struct objfile
*objfile
= per_cu
->psymtab
->objfile
;
11547 struct dwarf2_per_objfile
*per_objfile
11548 = objfile_data (objfile
, dwarf2_objfile_data_key
);
11549 gdb_byte
*info_ptr
= per_objfile
->info
.buffer
+ per_cu
->offset
;
11551 struct comp_unit_head cu_header
;
11552 memset (&cu_header
, 0, sizeof cu_header
);
11553 read_comp_unit_head (&cu_header
, info_ptr
, objfile
->obfd
);
11554 return cu_header
.addr_size
;
11558 /* Locate the .debug_info compilation unit from CU's objfile which contains
11559 the DIE at OFFSET. Raises an error on failure. */
11561 static struct dwarf2_per_cu_data
*
11562 dwarf2_find_containing_comp_unit (unsigned int offset
,
11563 struct objfile
*objfile
)
11565 struct dwarf2_per_cu_data
*this_cu
;
11569 high
= dwarf2_per_objfile
->n_comp_units
- 1;
11572 int mid
= low
+ (high
- low
) / 2;
11573 if (dwarf2_per_objfile
->all_comp_units
[mid
]->offset
>= offset
)
11578 gdb_assert (low
== high
);
11579 if (dwarf2_per_objfile
->all_comp_units
[low
]->offset
> offset
)
11582 error (_("Dwarf Error: could not find partial DIE containing "
11583 "offset 0x%lx [in module %s]"),
11584 (long) offset
, bfd_get_filename (objfile
->obfd
));
11586 gdb_assert (dwarf2_per_objfile
->all_comp_units
[low
-1]->offset
<= offset
);
11587 return dwarf2_per_objfile
->all_comp_units
[low
-1];
11591 this_cu
= dwarf2_per_objfile
->all_comp_units
[low
];
11592 if (low
== dwarf2_per_objfile
->n_comp_units
- 1
11593 && offset
>= this_cu
->offset
+ this_cu
->length
)
11594 error (_("invalid dwarf2 offset %u"), offset
);
11595 gdb_assert (offset
< this_cu
->offset
+ this_cu
->length
);
11600 /* Locate the compilation unit from OBJFILE which is located at exactly
11601 OFFSET. Raises an error on failure. */
11603 static struct dwarf2_per_cu_data
*
11604 dwarf2_find_comp_unit (unsigned int offset
, struct objfile
*objfile
)
11606 struct dwarf2_per_cu_data
*this_cu
;
11607 this_cu
= dwarf2_find_containing_comp_unit (offset
, objfile
);
11608 if (this_cu
->offset
!= offset
)
11609 error (_("no compilation unit with offset %u."), offset
);
11613 /* Malloc space for a dwarf2_cu for OBJFILE and initialize it. */
11615 static struct dwarf2_cu
*
11616 alloc_one_comp_unit (struct objfile
*objfile
)
11618 struct dwarf2_cu
*cu
= xcalloc (1, sizeof (struct dwarf2_cu
));
11619 cu
->objfile
= objfile
;
11620 obstack_init (&cu
->comp_unit_obstack
);
11624 /* Release one cached compilation unit, CU. We unlink it from the tree
11625 of compilation units, but we don't remove it from the read_in_chain;
11626 the caller is responsible for that.
11627 NOTE: DATA is a void * because this function is also used as a
11628 cleanup routine. */
11631 free_one_comp_unit (void *data
)
11633 struct dwarf2_cu
*cu
= data
;
11635 if (cu
->per_cu
!= NULL
)
11636 cu
->per_cu
->cu
= NULL
;
11639 obstack_free (&cu
->comp_unit_obstack
, NULL
);
11644 /* This cleanup function is passed the address of a dwarf2_cu on the stack
11645 when we're finished with it. We can't free the pointer itself, but be
11646 sure to unlink it from the cache. Also release any associated storage
11647 and perform cache maintenance.
11649 Only used during partial symbol parsing. */
11652 free_stack_comp_unit (void *data
)
11654 struct dwarf2_cu
*cu
= data
;
11656 obstack_free (&cu
->comp_unit_obstack
, NULL
);
11657 cu
->partial_dies
= NULL
;
11659 if (cu
->per_cu
!= NULL
)
11661 /* This compilation unit is on the stack in our caller, so we
11662 should not xfree it. Just unlink it. */
11663 cu
->per_cu
->cu
= NULL
;
11666 /* If we had a per-cu pointer, then we may have other compilation
11667 units loaded, so age them now. */
11668 age_cached_comp_units ();
11672 /* Free all cached compilation units. */
11675 free_cached_comp_units (void *data
)
11677 struct dwarf2_per_cu_data
*per_cu
, **last_chain
;
11679 per_cu
= dwarf2_per_objfile
->read_in_chain
;
11680 last_chain
= &dwarf2_per_objfile
->read_in_chain
;
11681 while (per_cu
!= NULL
)
11683 struct dwarf2_per_cu_data
*next_cu
;
11685 next_cu
= per_cu
->cu
->read_in_chain
;
11687 free_one_comp_unit (per_cu
->cu
);
11688 *last_chain
= next_cu
;
11694 /* Increase the age counter on each cached compilation unit, and free
11695 any that are too old. */
11698 age_cached_comp_units (void)
11700 struct dwarf2_per_cu_data
*per_cu
, **last_chain
;
11702 dwarf2_clear_marks (dwarf2_per_objfile
->read_in_chain
);
11703 per_cu
= dwarf2_per_objfile
->read_in_chain
;
11704 while (per_cu
!= NULL
)
11706 per_cu
->cu
->last_used
++;
11707 if (per_cu
->cu
->last_used
<= dwarf2_max_cache_age
)
11708 dwarf2_mark (per_cu
->cu
);
11709 per_cu
= per_cu
->cu
->read_in_chain
;
11712 per_cu
= dwarf2_per_objfile
->read_in_chain
;
11713 last_chain
= &dwarf2_per_objfile
->read_in_chain
;
11714 while (per_cu
!= NULL
)
11716 struct dwarf2_per_cu_data
*next_cu
;
11718 next_cu
= per_cu
->cu
->read_in_chain
;
11720 if (!per_cu
->cu
->mark
)
11722 free_one_comp_unit (per_cu
->cu
);
11723 *last_chain
= next_cu
;
11726 last_chain
= &per_cu
->cu
->read_in_chain
;
11732 /* Remove a single compilation unit from the cache. */
11735 free_one_cached_comp_unit (void *target_cu
)
11737 struct dwarf2_per_cu_data
*per_cu
, **last_chain
;
11739 per_cu
= dwarf2_per_objfile
->read_in_chain
;
11740 last_chain
= &dwarf2_per_objfile
->read_in_chain
;
11741 while (per_cu
!= NULL
)
11743 struct dwarf2_per_cu_data
*next_cu
;
11745 next_cu
= per_cu
->cu
->read_in_chain
;
11747 if (per_cu
->cu
== target_cu
)
11749 free_one_comp_unit (per_cu
->cu
);
11750 *last_chain
= next_cu
;
11754 last_chain
= &per_cu
->cu
->read_in_chain
;
11760 /* Release all extra memory associated with OBJFILE. */
11763 dwarf2_free_objfile (struct objfile
*objfile
)
11765 dwarf2_per_objfile
= objfile_data (objfile
, dwarf2_objfile_data_key
);
11767 if (dwarf2_per_objfile
== NULL
)
11770 /* Cached DIE trees use xmalloc and the comp_unit_obstack. */
11771 free_cached_comp_units (NULL
);
11773 /* Everything else should be on the objfile obstack. */
11776 /* A pair of DIE offset and GDB type pointer. We store these
11777 in a hash table separate from the DIEs, and preserve them
11778 when the DIEs are flushed out of cache. */
11780 struct dwarf2_offset_and_type
11782 unsigned int offset
;
11786 /* Hash function for a dwarf2_offset_and_type. */
11789 offset_and_type_hash (const void *item
)
11791 const struct dwarf2_offset_and_type
*ofs
= item
;
11792 return ofs
->offset
;
11795 /* Equality function for a dwarf2_offset_and_type. */
11798 offset_and_type_eq (const void *item_lhs
, const void *item_rhs
)
11800 const struct dwarf2_offset_and_type
*ofs_lhs
= item_lhs
;
11801 const struct dwarf2_offset_and_type
*ofs_rhs
= item_rhs
;
11802 return ofs_lhs
->offset
== ofs_rhs
->offset
;
11805 /* Set the type associated with DIE to TYPE. Save it in CU's hash
11806 table if necessary. For convenience, return TYPE. */
11808 static struct type
*
11809 set_die_type (struct die_info
*die
, struct type
*type
, struct dwarf2_cu
*cu
)
11811 struct dwarf2_offset_and_type
**slot
, ofs
;
11813 /* For Ada types, make sure that the gnat-specific data is always
11814 initialized (if not already set). There are a few types where
11815 we should not be doing so, because the type-specific area is
11816 already used to hold some other piece of info (eg: TYPE_CODE_FLT
11817 where the type-specific area is used to store the floatformat).
11818 But this is not a problem, because the gnat-specific information
11819 is actually not needed for these types. */
11820 if (need_gnat_info (cu
)
11821 && TYPE_CODE (type
) != TYPE_CODE_FUNC
11822 && TYPE_CODE (type
) != TYPE_CODE_FLT
11823 && !HAVE_GNAT_AUX_INFO (type
))
11824 INIT_GNAT_SPECIFIC (type
);
11826 if (cu
->type_hash
== NULL
)
11828 gdb_assert (cu
->per_cu
!= NULL
);
11829 cu
->per_cu
->type_hash
11830 = htab_create_alloc_ex (cu
->header
.length
/ 24,
11831 offset_and_type_hash
,
11832 offset_and_type_eq
,
11834 &cu
->objfile
->objfile_obstack
,
11835 hashtab_obstack_allocate
,
11836 dummy_obstack_deallocate
);
11837 cu
->type_hash
= cu
->per_cu
->type_hash
;
11840 ofs
.offset
= die
->offset
;
11842 slot
= (struct dwarf2_offset_and_type
**)
11843 htab_find_slot_with_hash (cu
->type_hash
, &ofs
, ofs
.offset
, INSERT
);
11844 *slot
= obstack_alloc (&cu
->objfile
->objfile_obstack
, sizeof (**slot
));
11849 /* Find the type for DIE in CU's type_hash, or return NULL if DIE does
11850 not have a saved type. */
11852 static struct type
*
11853 get_die_type (struct die_info
*die
, struct dwarf2_cu
*cu
)
11855 struct dwarf2_offset_and_type
*slot
, ofs
;
11856 htab_t type_hash
= cu
->type_hash
;
11858 if (type_hash
== NULL
)
11861 ofs
.offset
= die
->offset
;
11862 slot
= htab_find_with_hash (type_hash
, &ofs
, ofs
.offset
);
11869 /* Add a dependence relationship from CU to REF_PER_CU. */
11872 dwarf2_add_dependence (struct dwarf2_cu
*cu
,
11873 struct dwarf2_per_cu_data
*ref_per_cu
)
11877 if (cu
->dependencies
== NULL
)
11879 = htab_create_alloc_ex (5, htab_hash_pointer
, htab_eq_pointer
,
11880 NULL
, &cu
->comp_unit_obstack
,
11881 hashtab_obstack_allocate
,
11882 dummy_obstack_deallocate
);
11884 slot
= htab_find_slot (cu
->dependencies
, ref_per_cu
, INSERT
);
11886 *slot
= ref_per_cu
;
11889 /* Subroutine of dwarf2_mark to pass to htab_traverse.
11890 Set the mark field in every compilation unit in the
11891 cache that we must keep because we are keeping CU. */
11894 dwarf2_mark_helper (void **slot
, void *data
)
11896 struct dwarf2_per_cu_data
*per_cu
;
11898 per_cu
= (struct dwarf2_per_cu_data
*) *slot
;
11899 if (per_cu
->cu
->mark
)
11901 per_cu
->cu
->mark
= 1;
11903 if (per_cu
->cu
->dependencies
!= NULL
)
11904 htab_traverse (per_cu
->cu
->dependencies
, dwarf2_mark_helper
, NULL
);
11909 /* Set the mark field in CU and in every other compilation unit in the
11910 cache that we must keep because we are keeping CU. */
11913 dwarf2_mark (struct dwarf2_cu
*cu
)
11918 if (cu
->dependencies
!= NULL
)
11919 htab_traverse (cu
->dependencies
, dwarf2_mark_helper
, NULL
);
11923 dwarf2_clear_marks (struct dwarf2_per_cu_data
*per_cu
)
11927 per_cu
->cu
->mark
= 0;
11928 per_cu
= per_cu
->cu
->read_in_chain
;
11932 /* Trivial hash function for partial_die_info: the hash value of a DIE
11933 is its offset in .debug_info for this objfile. */
11936 partial_die_hash (const void *item
)
11938 const struct partial_die_info
*part_die
= item
;
11939 return part_die
->offset
;
11942 /* Trivial comparison function for partial_die_info structures: two DIEs
11943 are equal if they have the same offset. */
11946 partial_die_eq (const void *item_lhs
, const void *item_rhs
)
11948 const struct partial_die_info
*part_die_lhs
= item_lhs
;
11949 const struct partial_die_info
*part_die_rhs
= item_rhs
;
11950 return part_die_lhs
->offset
== part_die_rhs
->offset
;
11953 static struct cmd_list_element
*set_dwarf2_cmdlist
;
11954 static struct cmd_list_element
*show_dwarf2_cmdlist
;
11957 set_dwarf2_cmd (char *args
, int from_tty
)
11959 help_list (set_dwarf2_cmdlist
, "maintenance set dwarf2 ", -1, gdb_stdout
);
11963 show_dwarf2_cmd (char *args
, int from_tty
)
11965 cmd_show_list (show_dwarf2_cmdlist
, from_tty
, "");
11968 /* If section described by INFO was mmapped, munmap it now. */
11971 munmap_section_buffer (struct dwarf2_section_info
*info
)
11973 if (info
->was_mmapped
)
11976 intptr_t begin
= (intptr_t) info
->buffer
;
11977 intptr_t map_begin
= begin
& ~(pagesize
- 1);
11978 size_t map_length
= info
->size
+ begin
- map_begin
;
11979 gdb_assert (munmap ((void *) map_begin
, map_length
) == 0);
11981 /* Without HAVE_MMAP, we should never be here to begin with. */
11987 /* munmap debug sections for OBJFILE, if necessary. */
11990 dwarf2_per_objfile_free (struct objfile
*objfile
, void *d
)
11992 struct dwarf2_per_objfile
*data
= d
;
11993 munmap_section_buffer (&data
->info
);
11994 munmap_section_buffer (&data
->abbrev
);
11995 munmap_section_buffer (&data
->line
);
11996 munmap_section_buffer (&data
->str
);
11997 munmap_section_buffer (&data
->macinfo
);
11998 munmap_section_buffer (&data
->ranges
);
11999 munmap_section_buffer (&data
->loc
);
12000 munmap_section_buffer (&data
->frame
);
12001 munmap_section_buffer (&data
->eh_frame
);
12004 void _initialize_dwarf2_read (void);
12007 _initialize_dwarf2_read (void)
12009 dwarf2_objfile_data_key
12010 = register_objfile_data_with_cleanup (NULL
, dwarf2_per_objfile_free
);
12012 add_prefix_cmd ("dwarf2", class_maintenance
, set_dwarf2_cmd
, _("\
12013 Set DWARF 2 specific variables.\n\
12014 Configure DWARF 2 variables such as the cache size"),
12015 &set_dwarf2_cmdlist
, "maintenance set dwarf2 ",
12016 0/*allow-unknown*/, &maintenance_set_cmdlist
);
12018 add_prefix_cmd ("dwarf2", class_maintenance
, show_dwarf2_cmd
, _("\
12019 Show DWARF 2 specific variables\n\
12020 Show DWARF 2 variables such as the cache size"),
12021 &show_dwarf2_cmdlist
, "maintenance show dwarf2 ",
12022 0/*allow-unknown*/, &maintenance_show_cmdlist
);
12024 add_setshow_zinteger_cmd ("max-cache-age", class_obscure
,
12025 &dwarf2_max_cache_age
, _("\
12026 Set the upper bound on the age of cached dwarf2 compilation units."), _("\
12027 Show the upper bound on the age of cached dwarf2 compilation units."), _("\
12028 A higher limit means that cached compilation units will be stored\n\
12029 in memory longer, and more total memory will be used. Zero disables\n\
12030 caching, which can slow down startup."),
12032 show_dwarf2_max_cache_age
,
12033 &set_dwarf2_cmdlist
,
12034 &show_dwarf2_cmdlist
);
12036 add_setshow_zinteger_cmd ("dwarf2-die", no_class
, &dwarf2_die_debug
, _("\
12037 Set debugging of the dwarf2 DIE reader."), _("\
12038 Show debugging of the dwarf2 DIE reader."), _("\
12039 When enabled (non-zero), DIEs are dumped after they are read in.\n\
12040 The value is the maximum depth to print."),
12043 &setdebuglist
, &showdebuglist
);