1 /* DWARF 2 debugging format support for GDB.
2 Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
3 Free Software Foundation, Inc.
6 Inc. with support from Florida State University (under contract
7 with the Ada Joint Program Office), and Silicon Graphics, Inc.
8 Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
9 based on Fred Fish's (Cygnus Support) implementation of DWARF 1
10 support in dwarfread.c
12 This file is part of GDB.
14 This program is free software; you can redistribute it and/or modify
15 it under the terms of the GNU General Public License as published by
16 the Free Software Foundation; either version 2 of the License, or (at
17 your option) any later version.
19 This program is distributed in the hope that it will be useful, but
20 WITHOUT ANY WARRANTY; without even the implied warranty of
21 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22 General Public License for more details.
24 You should have received a copy of the GNU General Public License
25 along with this program; if not, write to the Free Software
26 Foundation, Inc., 59 Temple Place - Suite 330,
27 Boston, MA 02111-1307, USA. */
35 #include "elf/dwarf2.h"
38 #include "expression.h"
39 #include "filenames.h" /* for DOSish file names */
43 #include "complaints.h"
46 #include "gdb_string.h"
47 #include "gdb_assert.h"
48 #include <sys/types.h>
50 #ifndef DWARF2_REG_TO_REGNUM
51 #define DWARF2_REG_TO_REGNUM(REG) (REG)
55 /* .debug_info header for a compilation unit
56 Because of alignment constraints, this structure has padding and cannot
57 be mapped directly onto the beginning of the .debug_info section. */
58 typedef struct comp_unit_header
60 unsigned int length; /* length of the .debug_info
62 unsigned short version; /* version number -- 2 for DWARF
64 unsigned int abbrev_offset; /* offset into .debug_abbrev section */
65 unsigned char addr_size; /* byte size of an address -- 4 */
68 #define _ACTUAL_COMP_UNIT_HEADER_SIZE 11
71 /* .debug_pubnames header
72 Because of alignment constraints, this structure has padding and cannot
73 be mapped directly onto the beginning of the .debug_info section. */
74 typedef struct pubnames_header
76 unsigned int length; /* length of the .debug_pubnames
78 unsigned char version; /* version number -- 2 for DWARF
80 unsigned int info_offset; /* offset into .debug_info section */
81 unsigned int info_size; /* byte size of .debug_info section
85 #define _ACTUAL_PUBNAMES_HEADER_SIZE 13
87 /* .debug_pubnames header
88 Because of alignment constraints, this structure has padding and cannot
89 be mapped directly onto the beginning of the .debug_info section. */
90 typedef struct aranges_header
92 unsigned int length; /* byte len of the .debug_aranges
94 unsigned short version; /* version number -- 2 for DWARF
96 unsigned int info_offset; /* offset into .debug_info section */
97 unsigned char addr_size; /* byte size of an address */
98 unsigned char seg_size; /* byte size of segment descriptor */
101 #define _ACTUAL_ARANGES_HEADER_SIZE 12
103 /* .debug_line statement program prologue
104 Because of alignment constraints, this structure has padding and cannot
105 be mapped directly onto the beginning of the .debug_info section. */
106 typedef struct statement_prologue
108 unsigned int total_length; /* byte length of the statement
110 unsigned short version; /* version number -- 2 for DWARF
112 unsigned int prologue_length; /* # bytes between prologue &
114 unsigned char minimum_instruction_length; /* byte size of
116 unsigned char default_is_stmt; /* initial value of is_stmt
119 unsigned char line_range;
120 unsigned char opcode_base; /* number assigned to first special
122 unsigned char *standard_opcode_lengths;
126 /* offsets and sizes of debugging sections */
128 static file_ptr dwarf_info_offset;
129 static file_ptr dwarf_abbrev_offset;
130 static file_ptr dwarf_line_offset;
131 static file_ptr dwarf_pubnames_offset;
132 static file_ptr dwarf_aranges_offset;
133 static file_ptr dwarf_loc_offset;
134 static file_ptr dwarf_macinfo_offset;
135 static file_ptr dwarf_str_offset;
136 file_ptr dwarf_frame_offset;
137 file_ptr dwarf_eh_frame_offset;
139 static unsigned int dwarf_info_size;
140 static unsigned int dwarf_abbrev_size;
141 static unsigned int dwarf_line_size;
142 static unsigned int dwarf_pubnames_size;
143 static unsigned int dwarf_aranges_size;
144 static unsigned int dwarf_loc_size;
145 static unsigned int dwarf_macinfo_size;
146 static unsigned int dwarf_str_size;
147 unsigned int dwarf_frame_size;
148 unsigned int dwarf_eh_frame_size;
150 /* names of the debugging sections */
152 #define INFO_SECTION ".debug_info"
153 #define ABBREV_SECTION ".debug_abbrev"
154 #define LINE_SECTION ".debug_line"
155 #define PUBNAMES_SECTION ".debug_pubnames"
156 #define ARANGES_SECTION ".debug_aranges"
157 #define LOC_SECTION ".debug_loc"
158 #define MACINFO_SECTION ".debug_macinfo"
159 #define STR_SECTION ".debug_str"
160 #define FRAME_SECTION ".debug_frame"
161 #define EH_FRAME_SECTION ".eh_frame"
163 /* local data types */
165 /* We hold several abbreviation tables in memory at the same time. */
166 #ifndef ABBREV_HASH_SIZE
167 #define ABBREV_HASH_SIZE 121
170 /* The data in a compilation unit header, after target2host
171 translation, looks like this. */
172 struct comp_unit_head
174 unsigned long length;
176 unsigned int abbrev_offset;
177 unsigned char addr_size;
178 unsigned char signed_addr_p;
179 unsigned int offset_size; /* size of file offsets; either 4 or 8 */
180 unsigned int initial_length_size; /* size of the length field; either
183 /* Offset to the first byte of this compilation unit header in the
184 * .debug_info section, for resolving relative reference dies. */
188 /* Pointer to this compilation unit header in the .debug_info
193 /* Pointer to the first die of this compilatio unit. This will
194 * be the first byte following the compilation unit header. */
198 /* Pointer to the next compilation unit header in the program. */
200 struct comp_unit_head *next;
202 /* DWARF abbreviation table associated with this compilation unit */
204 struct abbrev_info *dwarf2_abbrevs[ABBREV_HASH_SIZE];
207 /* The line number information for a compilation unit (found in the
208 .debug_line section) begins with a "statement program header",
209 which contains the following information. */
212 unsigned int total_length;
213 unsigned short version;
214 unsigned int header_length;
215 unsigned char minimum_instruction_length;
216 unsigned char default_is_stmt;
218 unsigned char line_range;
219 unsigned char opcode_base;
221 /* standard_opcode_lengths[i] is the number of operands for the
222 standard opcode whose value is i. This means that
223 standard_opcode_lengths[0] is unused, and the last meaningful
224 element is standard_opcode_lengths[opcode_base - 1]. */
225 unsigned char *standard_opcode_lengths;
227 /* The include_directories table. NOTE! These strings are not
228 allocated with xmalloc; instead, they are pointers into
229 debug_line_buffer. If you try to free them, `free' will get
231 unsigned int num_include_dirs, include_dirs_size;
234 /* The file_names table. NOTE! These strings are not allocated
235 with xmalloc; instead, they are pointers into debug_line_buffer.
236 Don't try to free them directly. */
237 unsigned int num_file_names, file_names_size;
241 unsigned int dir_index;
242 unsigned int mod_time;
246 /* The start and end of the statement program following this
247 header. These point into dwarf_line_buffer. */
248 char *statement_program_start, *statement_program_end;
251 /* When we construct a partial symbol table entry we only
252 need this much information. */
253 struct partial_die_info
256 unsigned char has_children;
257 unsigned char is_external;
258 unsigned char is_declaration;
259 unsigned char has_type;
266 struct dwarf_block *locdesc;
267 unsigned int language;
271 /* This data structure holds the information of an abbrev. */
274 unsigned int number; /* number identifying abbrev */
275 enum dwarf_tag tag; /* dwarf tag */
276 int has_children; /* boolean */
277 unsigned int num_attrs; /* number of attributes */
278 struct attr_abbrev *attrs; /* an array of attribute descriptions */
279 struct abbrev_info *next; /* next in chain */
284 enum dwarf_attribute name;
285 enum dwarf_form form;
288 /* This data structure holds a complete die structure. */
291 enum dwarf_tag tag; /* Tag indicating type of die */
292 unsigned short has_children; /* Does the die have children */
293 unsigned int abbrev; /* Abbrev number */
294 unsigned int offset; /* Offset in .debug_info section */
295 unsigned int num_attrs; /* Number of attributes */
296 struct attribute *attrs; /* An array of attributes */
297 struct die_info *next_ref; /* Next die in ref hash table */
298 struct die_info *next; /* Next die in linked list */
299 struct type *type; /* Cached type information */
302 /* Attributes have a name and a value */
305 enum dwarf_attribute name;
306 enum dwarf_form form;
310 struct dwarf_block *blk;
318 struct function_range
321 CORE_ADDR lowpc, highpc;
323 struct function_range *next;
326 static struct function_range *cu_first_fn, *cu_last_fn, *cu_cached_fn;
328 /* Get at parts of an attribute structure */
330 #define DW_STRING(attr) ((attr)->u.str)
331 #define DW_UNSND(attr) ((attr)->u.unsnd)
332 #define DW_BLOCK(attr) ((attr)->u.blk)
333 #define DW_SND(attr) ((attr)->u.snd)
334 #define DW_ADDR(attr) ((attr)->u.addr)
336 /* Blocks are a bunch of untyped bytes. */
343 #ifndef ATTR_ALLOC_CHUNK
344 #define ATTR_ALLOC_CHUNK 4
347 /* A hash table of die offsets for following references. */
348 #ifndef REF_HASH_SIZE
349 #define REF_HASH_SIZE 1021
352 static struct die_info *die_ref_table[REF_HASH_SIZE];
354 /* Obstack for allocating temporary storage used during symbol reading. */
355 static struct obstack dwarf2_tmp_obstack;
357 /* Offset to the first byte of the current compilation unit header,
358 for resolving relative reference dies. */
359 static unsigned int cu_header_offset;
361 /* Allocate fields for structs, unions and enums in this size. */
362 #ifndef DW_FIELD_ALLOC_CHUNK
363 #define DW_FIELD_ALLOC_CHUNK 4
366 /* The language we are debugging. */
367 static enum language cu_language;
368 static const struct language_defn *cu_language_defn;
370 /* Actually data from the sections. */
371 static char *dwarf_info_buffer;
372 static char *dwarf_abbrev_buffer;
373 static char *dwarf_line_buffer;
374 static char *dwarf_str_buffer;
375 static char *dwarf_macinfo_buffer;
377 /* A zeroed version of a partial die for initialization purposes. */
378 static struct partial_die_info zeroed_partial_die;
380 /* The generic symbol table building routines have separate lists for
381 file scope symbols and all all other scopes (local scopes). So
382 we need to select the right one to pass to add_symbol_to_list().
383 We do it by keeping a pointer to the correct list in list_in_scope.
385 FIXME: The original dwarf code just treated the file scope as the first
386 local scope, and all other local scopes as nested local scopes, and worked
387 fine. Check to see if we really need to distinguish these
389 static struct pending **list_in_scope = &file_symbols;
391 /* FIXME: decode_locdesc sets these variables to describe the location
392 to the caller. These ought to be a structure or something. If
393 none of the flags are set, the object lives at the address returned
394 by decode_locdesc. */
396 static int optimized_out; /* No ops in location in expression,
397 so object was optimized out. */
398 static int isreg; /* Object lives in register.
399 decode_locdesc's return value is
400 the register number. */
401 static int offreg; /* Object's address is the sum of the
402 register specified by basereg, plus
403 the offset returned. */
404 static int basereg; /* See `offreg'. */
405 static int isderef; /* Value described by flags above is
406 the address of a pointer to the object. */
407 static int islocal; /* Variable is at the returned offset
408 from the frame start, but there's
409 no identified frame pointer for
410 this function, so we can't say
411 which register it's relative to;
413 static int is_thread_local; /* Variable is at a constant offset in the
414 thread-local storage block for the
415 current thread and the dynamic linker
416 module containing this expression.
417 decode_locdesc returns the offset from
420 /* DW_AT_frame_base values for the current function.
421 frame_base_reg is -1 if DW_AT_frame_base is missing, otherwise it
422 contains the register number for the frame register.
423 frame_base_offset is the offset from the frame register to the
424 virtual stack frame. */
425 static int frame_base_reg;
426 static CORE_ADDR frame_base_offset;
428 /* This value is added to each symbol value. FIXME: Generalize to
429 the section_offsets structure used by dbxread (once this is done,
430 pass the appropriate section number to end_symtab). */
431 static CORE_ADDR baseaddr; /* Add to each symbol value */
433 /* We put a pointer to this structure in the read_symtab_private field
435 The complete dwarf information for an objfile is kept in the
436 psymbol_obstack, so that absolute die references can be handled.
437 Most of the information in this structure is related to an entire
438 object file and could be passed via the sym_private field of the objfile.
439 It is however conceivable that dwarf2 might not be the only type
440 of symbols read from an object file. */
444 /* Pointer to start of dwarf info buffer for the objfile. */
446 char *dwarf_info_buffer;
448 /* Offset in dwarf_info_buffer for this compilation unit. */
450 unsigned long dwarf_info_offset;
452 /* Pointer to start of dwarf abbreviation buffer for the objfile. */
454 char *dwarf_abbrev_buffer;
456 /* Size of dwarf abbreviation section for the objfile. */
458 unsigned int dwarf_abbrev_size;
460 /* Pointer to start of dwarf line buffer for the objfile. */
462 char *dwarf_line_buffer;
464 /* Size of dwarf_line_buffer, in bytes. */
466 unsigned int dwarf_line_size;
468 /* Pointer to start of dwarf string buffer for the objfile. */
470 char *dwarf_str_buffer;
472 /* Size of dwarf string section for the objfile. */
474 unsigned int dwarf_str_size;
476 /* Pointer to start of dwarf macro buffer for the objfile. */
478 char *dwarf_macinfo_buffer;
480 /* Size of dwarf macinfo section for the objfile. */
482 unsigned int dwarf_macinfo_size;
486 #define PST_PRIVATE(p) ((struct dwarf2_pinfo *)(p)->read_symtab_private)
487 #define DWARF_INFO_BUFFER(p) (PST_PRIVATE(p)->dwarf_info_buffer)
488 #define DWARF_INFO_OFFSET(p) (PST_PRIVATE(p)->dwarf_info_offset)
489 #define DWARF_ABBREV_BUFFER(p) (PST_PRIVATE(p)->dwarf_abbrev_buffer)
490 #define DWARF_ABBREV_SIZE(p) (PST_PRIVATE(p)->dwarf_abbrev_size)
491 #define DWARF_LINE_BUFFER(p) (PST_PRIVATE(p)->dwarf_line_buffer)
492 #define DWARF_LINE_SIZE(p) (PST_PRIVATE(p)->dwarf_line_size)
493 #define DWARF_STR_BUFFER(p) (PST_PRIVATE(p)->dwarf_str_buffer)
494 #define DWARF_STR_SIZE(p) (PST_PRIVATE(p)->dwarf_str_size)
495 #define DWARF_MACINFO_BUFFER(p) (PST_PRIVATE(p)->dwarf_macinfo_buffer)
496 #define DWARF_MACINFO_SIZE(p) (PST_PRIVATE(p)->dwarf_macinfo_size)
498 /* Maintain an array of referenced fundamental types for the current
499 compilation unit being read. For DWARF version 1, we have to construct
500 the fundamental types on the fly, since no information about the
501 fundamental types is supplied. Each such fundamental type is created by
502 calling a language dependent routine to create the type, and then a
503 pointer to that type is then placed in the array at the index specified
504 by it's FT_<TYPENAME> value. The array has a fixed size set by the
505 FT_NUM_MEMBERS compile time constant, which is the number of predefined
506 fundamental types gdb knows how to construct. */
507 static struct type *ftypes[FT_NUM_MEMBERS]; /* Fundamental types */
509 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
510 but this would require a corresponding change in unpack_field_as_long
512 static int bits_per_byte = 8;
514 /* The routines that read and process dies for a C struct or C++ class
515 pass lists of data member fields and lists of member function fields
516 in an instance of a field_info structure, as defined below. */
519 /* List of data member and baseclasses fields. */
522 struct nextfield *next;
529 /* Number of fields. */
532 /* Number of baseclasses. */
535 /* Set if the accesibility of one of the fields is not public. */
536 int non_public_fields;
538 /* Member function fields array, entries are allocated in the order they
539 are encountered in the object file. */
542 struct nextfnfield *next;
543 struct fn_field fnfield;
547 /* Member function fieldlist array, contains name of possibly overloaded
548 member function, number of overloaded member functions and a pointer
549 to the head of the member function field chain. */
554 struct nextfnfield *head;
558 /* Number of entries in the fnfieldlists array. */
562 /* Various complaints about symbol reading that don't abort the process */
565 dwarf2_non_const_array_bound_ignored_complaint (const char *arg1)
567 complaint (&symfile_complaints, "non-constant array bounds form '%s' ignored",
572 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
574 complaint (&symfile_complaints,
575 "statement list doesn't fit in .debug_line section");
579 dwarf2_complex_location_expr_complaint (void)
581 complaint (&symfile_complaints, "location expression too complex");
585 dwarf2_unsupported_at_frame_base_complaint (const char *arg1)
587 complaint (&symfile_complaints,
588 "unsupported DW_AT_frame_base for function '%s'", arg1);
592 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
595 complaint (&symfile_complaints,
596 "const value length mismatch for '%s', got %d, expected %d", arg1,
601 dwarf2_macros_too_long_complaint (void)
603 complaint (&symfile_complaints,
604 "macro info runs off end of `.debug_macinfo' section");
608 dwarf2_macro_malformed_definition_complaint (const char *arg1)
610 complaint (&symfile_complaints,
611 "macro debug info contains a malformed macro definition:\n`%s'",
616 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
618 complaint (&symfile_complaints,
619 "invalid attribute class or form for '%s' in '%s'", arg1, arg2);
622 /* local function prototypes */
624 static void dwarf2_locate_sections (bfd *, asection *, PTR);
627 static void dwarf2_build_psymtabs_easy (struct objfile *, int);
630 static void dwarf2_build_psymtabs_hard (struct objfile *, int);
632 static char *scan_partial_symbols (char *, struct objfile *,
633 CORE_ADDR *, CORE_ADDR *,
634 const struct comp_unit_head *);
636 static void add_partial_symbol (struct partial_die_info *, struct objfile *,
637 const struct comp_unit_head *);
639 static void dwarf2_psymtab_to_symtab (struct partial_symtab *);
641 static void psymtab_to_symtab_1 (struct partial_symtab *);
643 char *dwarf2_read_section (struct objfile *, file_ptr, unsigned int);
645 static void dwarf2_read_abbrevs (bfd *abfd, struct comp_unit_head *cu_header);
647 static void dwarf2_empty_abbrev_table (PTR);
649 static struct abbrev_info *dwarf2_lookup_abbrev (unsigned int,
650 const struct comp_unit_head *cu_header);
652 static char *read_partial_die (struct partial_die_info *,
654 const struct comp_unit_head *);
656 static char *read_full_die (struct die_info **, bfd *, char *,
657 const struct comp_unit_head *);
659 static char *read_attribute (struct attribute *, struct attr_abbrev *,
660 bfd *, char *, const struct comp_unit_head *);
662 static char *read_attribute_value (struct attribute *, unsigned,
663 bfd *, char *, const struct comp_unit_head *);
665 static unsigned int read_1_byte (bfd *, char *);
667 static int read_1_signed_byte (bfd *, char *);
669 static unsigned int read_2_bytes (bfd *, char *);
671 static unsigned int read_4_bytes (bfd *, char *);
673 static unsigned long read_8_bytes (bfd *, char *);
675 static CORE_ADDR read_address (bfd *, char *ptr, const struct comp_unit_head *,
678 static LONGEST read_initial_length (bfd *, char *,
679 struct comp_unit_head *, int *bytes_read);
681 static LONGEST read_offset (bfd *, char *, const struct comp_unit_head *,
684 static char *read_n_bytes (bfd *, char *, unsigned int);
686 static char *read_string (bfd *, char *, unsigned int *);
688 static char *read_indirect_string (bfd *, char *, const struct comp_unit_head *,
691 static unsigned long read_unsigned_leb128 (bfd *, char *, unsigned int *);
693 static long read_signed_leb128 (bfd *, char *, unsigned int *);
695 static void set_cu_language (unsigned int);
697 static struct attribute *dwarf_attr (struct die_info *, unsigned int);
699 static int die_is_declaration (struct die_info *);
701 static void free_line_header (struct line_header *lh);
703 static struct line_header *(dwarf_decode_line_header
704 (unsigned int offset,
706 const struct comp_unit_head *cu_header));
708 static void dwarf_decode_lines (struct line_header *, char *, bfd *,
709 const struct comp_unit_head *);
711 static void dwarf2_start_subfile (char *, char *);
713 static struct symbol *new_symbol (struct die_info *, struct type *,
714 struct objfile *, const struct comp_unit_head *);
716 static void dwarf2_const_value (struct attribute *, struct symbol *,
717 struct objfile *, const struct comp_unit_head *);
719 static void dwarf2_const_value_data (struct attribute *attr,
723 static struct type *die_type (struct die_info *, struct objfile *,
724 const struct comp_unit_head *);
726 static struct type *die_containing_type (struct die_info *, struct objfile *,
727 const struct comp_unit_head *);
730 static struct type *type_at_offset (unsigned int, struct objfile *);
733 static struct type *tag_type_to_type (struct die_info *, struct objfile *,
734 const struct comp_unit_head *);
736 static void read_type_die (struct die_info *, struct objfile *,
737 const struct comp_unit_head *);
739 static void read_typedef (struct die_info *, struct objfile *,
740 const struct comp_unit_head *);
742 static void read_base_type (struct die_info *, struct objfile *);
744 static void read_file_scope (struct die_info *, struct objfile *,
745 const struct comp_unit_head *);
747 static void read_func_scope (struct die_info *, struct objfile *,
748 const struct comp_unit_head *);
750 static void read_lexical_block_scope (struct die_info *, struct objfile *,
751 const struct comp_unit_head *);
753 static int dwarf2_get_pc_bounds (struct die_info *,
754 CORE_ADDR *, CORE_ADDR *, struct objfile *);
756 static void dwarf2_add_field (struct field_info *, struct die_info *,
757 struct objfile *, const struct comp_unit_head *);
759 static void dwarf2_attach_fields_to_type (struct field_info *,
760 struct type *, struct objfile *);
762 static void dwarf2_add_member_fn (struct field_info *,
763 struct die_info *, struct type *,
764 struct objfile *objfile,
765 const struct comp_unit_head *);
767 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
768 struct type *, struct objfile *);
770 static void read_structure_scope (struct die_info *, struct objfile *,
771 const struct comp_unit_head *);
773 static void read_common_block (struct die_info *, struct objfile *,
774 const struct comp_unit_head *);
776 static void read_namespace (struct die_info *die, struct objfile *objfile,
777 const struct comp_unit_head *cu_header);
779 static void read_enumeration (struct die_info *, struct objfile *,
780 const struct comp_unit_head *);
782 static struct type *dwarf_base_type (int, int, struct objfile *);
784 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct objfile *,
785 const struct comp_unit_head *);
787 static void read_array_type (struct die_info *, struct objfile *,
788 const struct comp_unit_head *);
790 static void read_tag_pointer_type (struct die_info *, struct objfile *,
791 const struct comp_unit_head *);
793 static void read_tag_ptr_to_member_type (struct die_info *, struct objfile *,
794 const struct comp_unit_head *);
796 static void read_tag_reference_type (struct die_info *, struct objfile *,
797 const struct comp_unit_head *);
799 static void read_tag_const_type (struct die_info *, struct objfile *,
800 const struct comp_unit_head *);
802 static void read_tag_volatile_type (struct die_info *, struct objfile *,
803 const struct comp_unit_head *);
805 static void read_tag_string_type (struct die_info *, struct objfile *);
807 static void read_subroutine_type (struct die_info *, struct objfile *,
808 const struct comp_unit_head *);
810 static struct die_info *read_comp_unit (char *, bfd *,
811 const struct comp_unit_head *);
813 static void free_die_list (struct die_info *);
815 static struct cleanup *make_cleanup_free_die_list (struct die_info *);
817 static void process_die (struct die_info *, struct objfile *,
818 const struct comp_unit_head *);
820 static char *dwarf2_linkage_name (struct die_info *);
822 static char *dwarf_tag_name (unsigned int);
824 static char *dwarf_attr_name (unsigned int);
826 static char *dwarf_form_name (unsigned int);
828 static char *dwarf_stack_op_name (unsigned int);
830 static char *dwarf_bool_name (unsigned int);
832 static char *dwarf_type_encoding_name (unsigned int);
835 static char *dwarf_cfi_name (unsigned int);
837 struct die_info *copy_die (struct die_info *);
840 static struct die_info *sibling_die (struct die_info *);
842 static void dump_die (struct die_info *);
844 static void dump_die_list (struct die_info *);
846 static void store_in_ref_table (unsigned int, struct die_info *);
848 static void dwarf2_empty_hash_tables (void);
850 static unsigned int dwarf2_get_ref_die_offset (struct attribute *);
852 static struct die_info *follow_die_ref (unsigned int);
854 static struct type *dwarf2_fundamental_type (struct objfile *, int);
856 /* memory allocation interface */
858 static void dwarf2_free_tmp_obstack (PTR);
860 static struct dwarf_block *dwarf_alloc_block (void);
862 static struct abbrev_info *dwarf_alloc_abbrev (void);
864 static struct die_info *dwarf_alloc_die (void);
866 static void initialize_cu_func_list (void);
868 static void add_to_cu_func_list (const char *, CORE_ADDR, CORE_ADDR);
870 static void dwarf_decode_macros (struct line_header *, unsigned int,
871 char *, bfd *, const struct comp_unit_head *,
874 static int attr_form_is_block (struct attribute *);
876 /* Try to locate the sections we need for DWARF 2 debugging
877 information and return true if we have enough to do something. */
880 dwarf2_has_info (bfd *abfd)
882 dwarf_info_offset = 0;
883 dwarf_abbrev_offset = 0;
884 dwarf_line_offset = 0;
885 dwarf_str_offset = 0;
886 dwarf_macinfo_offset = 0;
887 dwarf_frame_offset = 0;
888 dwarf_eh_frame_offset = 0;
889 bfd_map_over_sections (abfd, dwarf2_locate_sections, NULL);
890 if (dwarf_info_offset && dwarf_abbrev_offset)
900 /* This function is mapped across the sections and remembers the
901 offset and size of each of the debugging sections we are interested
905 dwarf2_locate_sections (bfd *ignore_abfd, asection *sectp, PTR ignore_ptr)
907 if (STREQ (sectp->name, INFO_SECTION))
909 dwarf_info_offset = sectp->filepos;
910 dwarf_info_size = bfd_get_section_size_before_reloc (sectp);
912 else if (STREQ (sectp->name, ABBREV_SECTION))
914 dwarf_abbrev_offset = sectp->filepos;
915 dwarf_abbrev_size = bfd_get_section_size_before_reloc (sectp);
917 else if (STREQ (sectp->name, LINE_SECTION))
919 dwarf_line_offset = sectp->filepos;
920 dwarf_line_size = bfd_get_section_size_before_reloc (sectp);
922 else if (STREQ (sectp->name, PUBNAMES_SECTION))
924 dwarf_pubnames_offset = sectp->filepos;
925 dwarf_pubnames_size = bfd_get_section_size_before_reloc (sectp);
927 else if (STREQ (sectp->name, ARANGES_SECTION))
929 dwarf_aranges_offset = sectp->filepos;
930 dwarf_aranges_size = bfd_get_section_size_before_reloc (sectp);
932 else if (STREQ (sectp->name, LOC_SECTION))
934 dwarf_loc_offset = sectp->filepos;
935 dwarf_loc_size = bfd_get_section_size_before_reloc (sectp);
937 else if (STREQ (sectp->name, MACINFO_SECTION))
939 dwarf_macinfo_offset = sectp->filepos;
940 dwarf_macinfo_size = bfd_get_section_size_before_reloc (sectp);
942 else if (STREQ (sectp->name, STR_SECTION))
944 dwarf_str_offset = sectp->filepos;
945 dwarf_str_size = bfd_get_section_size_before_reloc (sectp);
947 else if (STREQ (sectp->name, FRAME_SECTION))
949 dwarf_frame_offset = sectp->filepos;
950 dwarf_frame_size = bfd_get_section_size_before_reloc (sectp);
952 else if (STREQ (sectp->name, EH_FRAME_SECTION))
954 dwarf_eh_frame_offset = sectp->filepos;
955 dwarf_eh_frame_size = bfd_get_section_size_before_reloc (sectp);
959 /* Build a partial symbol table. */
962 dwarf2_build_psymtabs (struct objfile *objfile, int mainline)
965 /* We definitely need the .debug_info and .debug_abbrev sections */
967 dwarf_info_buffer = dwarf2_read_section (objfile,
970 dwarf_abbrev_buffer = dwarf2_read_section (objfile,
974 if (dwarf_line_offset)
975 dwarf_line_buffer = dwarf2_read_section (objfile,
979 dwarf_line_buffer = NULL;
981 if (dwarf_str_offset)
982 dwarf_str_buffer = dwarf2_read_section (objfile,
986 dwarf_str_buffer = NULL;
988 if (dwarf_macinfo_offset)
989 dwarf_macinfo_buffer = dwarf2_read_section (objfile,
990 dwarf_macinfo_offset,
993 dwarf_macinfo_buffer = NULL;
996 || (objfile->global_psymbols.size == 0
997 && objfile->static_psymbols.size == 0))
999 init_psymbol_list (objfile, 1024);
1003 if (dwarf_aranges_offset && dwarf_pubnames_offset)
1005 /* Things are significantly easier if we have .debug_aranges and
1006 .debug_pubnames sections */
1008 dwarf2_build_psymtabs_easy (objfile, mainline);
1012 /* only test this case for now */
1014 /* In this case we have to work a bit harder */
1015 dwarf2_build_psymtabs_hard (objfile, mainline);
1020 /* Build the partial symbol table from the information in the
1021 .debug_pubnames and .debug_aranges sections. */
1024 dwarf2_build_psymtabs_easy (struct objfile *objfile, int mainline)
1026 bfd *abfd = objfile->obfd;
1027 char *aranges_buffer, *pubnames_buffer;
1028 char *aranges_ptr, *pubnames_ptr;
1029 unsigned int entry_length, version, info_offset, info_size;
1031 pubnames_buffer = dwarf2_read_section (objfile,
1032 dwarf_pubnames_offset,
1033 dwarf_pubnames_size);
1034 pubnames_ptr = pubnames_buffer;
1035 while ((pubnames_ptr - pubnames_buffer) < dwarf_pubnames_size)
1037 struct comp_unit_head cu_header;
1040 entry_length = read_initial_length (abfd, pubnames_ptr, &cu_header,
1042 pubnames_ptr += bytes_read;
1043 version = read_1_byte (abfd, pubnames_ptr);
1045 info_offset = read_4_bytes (abfd, pubnames_ptr);
1047 info_size = read_4_bytes (abfd, pubnames_ptr);
1051 aranges_buffer = dwarf2_read_section (objfile,
1052 dwarf_aranges_offset,
1053 dwarf_aranges_size);
1058 /* Read in the comp unit header information from the debug_info at
1062 read_comp_unit_head (struct comp_unit_head *cu_header,
1063 char *info_ptr, bfd *abfd)
1067 cu_header->length = read_initial_length (abfd, info_ptr, cu_header,
1069 info_ptr += bytes_read;
1070 cu_header->version = read_2_bytes (abfd, info_ptr);
1072 cu_header->abbrev_offset = read_offset (abfd, info_ptr, cu_header,
1074 info_ptr += bytes_read;
1075 cu_header->addr_size = read_1_byte (abfd, info_ptr);
1077 signed_addr = bfd_get_sign_extend_vma (abfd);
1078 if (signed_addr < 0)
1079 internal_error (__FILE__, __LINE__,
1080 "read_comp_unit_head: dwarf from non elf file");
1081 cu_header->signed_addr_p = signed_addr;
1085 /* Build the partial symbol table by doing a quick pass through the
1086 .debug_info and .debug_abbrev sections. */
1089 dwarf2_build_psymtabs_hard (struct objfile *objfile, int mainline)
1091 /* Instead of reading this into a big buffer, we should probably use
1092 mmap() on architectures that support it. (FIXME) */
1093 bfd *abfd = objfile->obfd;
1094 char *info_ptr, *abbrev_ptr;
1095 char *beg_of_comp_unit;
1096 struct partial_die_info comp_unit_die;
1097 struct partial_symtab *pst;
1098 struct cleanup *back_to;
1099 CORE_ADDR lowpc, highpc;
1101 info_ptr = dwarf_info_buffer;
1102 abbrev_ptr = dwarf_abbrev_buffer;
1104 /* We use dwarf2_tmp_obstack for objects that don't need to survive
1105 the partial symbol scan, like attribute values.
1107 We could reduce our peak memory consumption during partial symbol
1108 table construction by freeing stuff from this obstack more often
1109 --- say, after processing each compilation unit, or each die ---
1110 but it turns out that this saves almost nothing. For an
1111 executable with 11Mb of Dwarf 2 data, I found about 64k allocated
1112 on dwarf2_tmp_obstack. Some investigation showed:
1114 1) 69% of the attributes used forms DW_FORM_addr, DW_FORM_data*,
1115 DW_FORM_flag, DW_FORM_[su]data, and DW_FORM_ref*. These are
1116 all fixed-length values not requiring dynamic allocation.
1118 2) 30% of the attributes used the form DW_FORM_string. For
1119 DW_FORM_string, read_attribute simply hands back a pointer to
1120 the null-terminated string in dwarf_info_buffer, so no dynamic
1121 allocation is needed there either.
1123 3) The remaining 1% of the attributes all used DW_FORM_block1.
1124 75% of those were DW_AT_frame_base location lists for
1125 functions; the rest were DW_AT_location attributes, probably
1126 for the global variables.
1128 Anyway, what this all means is that the memory the dwarf2
1129 reader uses as temporary space reading partial symbols is about
1130 0.5% as much as we use for dwarf_*_buffer. That's noise. */
1132 obstack_init (&dwarf2_tmp_obstack);
1133 back_to = make_cleanup (dwarf2_free_tmp_obstack, NULL);
1135 /* Since the objects we're extracting from dwarf_info_buffer vary in
1136 length, only the individual functions to extract them (like
1137 read_comp_unit_head and read_partial_die) can really know whether
1138 the buffer is large enough to hold another complete object.
1140 At the moment, they don't actually check that. If
1141 dwarf_info_buffer holds just one extra byte after the last
1142 compilation unit's dies, then read_comp_unit_head will happily
1143 read off the end of the buffer. read_partial_die is similarly
1144 casual. Those functions should be fixed.
1146 For this loop condition, simply checking whether there's any data
1147 left at all should be sufficient. */
1148 while (info_ptr < dwarf_info_buffer + dwarf_info_size)
1150 struct comp_unit_head cu_header;
1151 beg_of_comp_unit = info_ptr;
1152 info_ptr = read_comp_unit_head (&cu_header, info_ptr, abfd);
1154 if (cu_header.version != 2)
1156 error ("Dwarf Error: wrong version in compilation unit header.");
1159 if (cu_header.abbrev_offset >= dwarf_abbrev_size)
1161 error ("Dwarf Error: bad offset (0x%lx) in compilation unit header (offset 0x%lx + 6).",
1162 (long) cu_header.abbrev_offset,
1163 (long) (beg_of_comp_unit - dwarf_info_buffer));
1166 if (beg_of_comp_unit + cu_header.length + cu_header.initial_length_size
1167 > dwarf_info_buffer + dwarf_info_size)
1169 error ("Dwarf Error: bad length (0x%lx) in compilation unit header (offset 0x%lx + 0).",
1170 (long) cu_header.length,
1171 (long) (beg_of_comp_unit - dwarf_info_buffer));
1174 /* Complete the cu_header */
1175 cu_header.offset = beg_of_comp_unit - dwarf_info_buffer;
1176 cu_header.first_die_ptr = info_ptr;
1177 cu_header.cu_head_ptr = beg_of_comp_unit;
1179 /* Read the abbrevs for this compilation unit into a table */
1180 dwarf2_read_abbrevs (abfd, &cu_header);
1181 make_cleanup (dwarf2_empty_abbrev_table, cu_header.dwarf2_abbrevs);
1183 /* Read the compilation unit die */
1184 info_ptr = read_partial_die (&comp_unit_die, abfd, info_ptr,
1187 /* Set the language we're debugging */
1188 set_cu_language (comp_unit_die.language);
1190 /* Allocate a new partial symbol table structure */
1191 pst = start_psymtab_common (objfile, objfile->section_offsets,
1192 comp_unit_die.name ? comp_unit_die.name : "",
1193 comp_unit_die.lowpc,
1194 objfile->global_psymbols.next,
1195 objfile->static_psymbols.next);
1197 pst->read_symtab_private = (char *)
1198 obstack_alloc (&objfile->psymbol_obstack, sizeof (struct dwarf2_pinfo));
1199 cu_header_offset = beg_of_comp_unit - dwarf_info_buffer;
1200 DWARF_INFO_BUFFER (pst) = dwarf_info_buffer;
1201 DWARF_INFO_OFFSET (pst) = beg_of_comp_unit - dwarf_info_buffer;
1202 DWARF_ABBREV_BUFFER (pst) = dwarf_abbrev_buffer;
1203 DWARF_ABBREV_SIZE (pst) = dwarf_abbrev_size;
1204 DWARF_LINE_BUFFER (pst) = dwarf_line_buffer;
1205 DWARF_LINE_SIZE (pst) = dwarf_line_size;
1206 DWARF_STR_BUFFER (pst) = dwarf_str_buffer;
1207 DWARF_STR_SIZE (pst) = dwarf_str_size;
1208 DWARF_MACINFO_BUFFER (pst) = dwarf_macinfo_buffer;
1209 DWARF_MACINFO_SIZE (pst) = dwarf_macinfo_size;
1210 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
1212 /* Store the function that reads in the rest of the symbol table */
1213 pst->read_symtab = dwarf2_psymtab_to_symtab;
1215 /* Check if comp unit has_children.
1216 If so, read the rest of the partial symbols from this comp unit.
1217 If not, there's no more debug_info for this comp unit. */
1218 if (comp_unit_die.has_children)
1220 info_ptr = scan_partial_symbols (info_ptr, objfile, &lowpc, &highpc,
1223 /* If the compilation unit didn't have an explicit address range,
1224 then use the information extracted from its child dies. */
1225 if (! comp_unit_die.has_pc_info)
1227 comp_unit_die.lowpc = lowpc;
1228 comp_unit_die.highpc = highpc;
1231 pst->textlow = comp_unit_die.lowpc + baseaddr;
1232 pst->texthigh = comp_unit_die.highpc + baseaddr;
1234 pst->n_global_syms = objfile->global_psymbols.next -
1235 (objfile->global_psymbols.list + pst->globals_offset);
1236 pst->n_static_syms = objfile->static_psymbols.next -
1237 (objfile->static_psymbols.list + pst->statics_offset);
1238 sort_pst_symbols (pst);
1240 /* If there is already a psymtab or symtab for a file of this
1241 name, remove it. (If there is a symtab, more drastic things
1242 also happen.) This happens in VxWorks. */
1243 free_named_symtabs (pst->filename);
1245 info_ptr = beg_of_comp_unit + cu_header.length
1246 + cu_header.initial_length_size;
1248 do_cleanups (back_to);
1251 /* Read in all interesting dies to the end of the compilation unit. */
1254 scan_partial_symbols (char *info_ptr, struct objfile *objfile,
1255 CORE_ADDR *lowpc, CORE_ADDR *highpc,
1256 const struct comp_unit_head *cu_header)
1258 bfd *abfd = objfile->obfd;
1259 struct partial_die_info pdi;
1261 /* This function is called after we've read in the comp_unit_die in
1262 order to read its children. We start the nesting level at 1 since
1263 we have pushed 1 level down in order to read the comp unit's children.
1264 The comp unit itself is at level 0, so we stop reading when we pop
1265 back to that level. */
1267 int nesting_level = 1;
1269 /* We only want to read in symbols corresponding to variables or
1270 other similar objects that are global or static. Normally, these
1271 are all children of the DW_TAG_compile_unit die, so are all at
1272 level 1. But C++ namespaces give ries to DW_TAG_namespace dies
1273 whose children are global objects. So we keep track of what
1274 level we currently think of as referring to file scope; this
1275 should always equal 1 plus the number of namespaces that we are
1276 currently nested within. */
1278 int file_scope_level = 1;
1280 *lowpc = ((CORE_ADDR) -1);
1281 *highpc = ((CORE_ADDR) 0);
1283 while (nesting_level)
1285 info_ptr = read_partial_die (&pdi, abfd, info_ptr, cu_header);
1287 /* Anonymous namespaces have no name but are interesting. */
1289 if (pdi.name != NULL || pdi.tag == DW_TAG_namespace)
1293 case DW_TAG_subprogram:
1294 if (pdi.has_pc_info)
1296 if (pdi.lowpc < *lowpc)
1300 if (pdi.highpc > *highpc)
1302 *highpc = pdi.highpc;
1304 if ((pdi.is_external || nesting_level == file_scope_level)
1305 && !pdi.is_declaration)
1307 add_partial_symbol (&pdi, objfile, cu_header);
1311 case DW_TAG_variable:
1312 case DW_TAG_typedef:
1313 case DW_TAG_class_type:
1314 case DW_TAG_structure_type:
1315 case DW_TAG_union_type:
1316 case DW_TAG_enumeration_type:
1317 if ((pdi.is_external || nesting_level == file_scope_level)
1318 && !pdi.is_declaration)
1320 add_partial_symbol (&pdi, objfile, cu_header);
1323 case DW_TAG_enumerator:
1324 /* File scope enumerators are added to the partial
1325 symbol table. They're children of the enumeration
1326 type die, so they occur at a level one higher than we
1327 normally look for. */
1328 if (nesting_level == file_scope_level + 1)
1329 add_partial_symbol (&pdi, objfile, cu_header);
1331 case DW_TAG_base_type:
1332 /* File scope base type definitions are added to the partial
1334 if (nesting_level == file_scope_level)
1335 add_partial_symbol (&pdi, objfile, cu_header);
1337 case DW_TAG_namespace:
1338 /* FIXME: carlton/2002-10-16: we're not yet doing
1339 anything useful with this, but for now make sure that
1340 these tags at least don't cause us to miss any
1341 important symbols. */
1342 if (pdi.has_children)
1349 /* If the die has a sibling, skip to the sibling. Do not skip
1350 enumeration types, we want to record their enumerators. Do
1351 not skip namespaces, we want to record symbols inside
1354 && pdi.tag != DW_TAG_enumeration_type
1355 && pdi.tag != DW_TAG_namespace)
1357 info_ptr = pdi.sibling;
1359 else if (pdi.has_children)
1361 /* Die has children, but either the optional DW_AT_sibling
1362 attribute is missing or we want to look at them. */
1369 /* If this is the end of a DW_TAG_namespace entry, then
1370 decrease the file_scope_level, too. */
1371 if (nesting_level < file_scope_level)
1374 gdb_assert (nesting_level == file_scope_level);
1379 /* If we didn't find a lowpc, set it to highpc to avoid complaints
1380 from `maint check'. */
1381 if (*lowpc == ((CORE_ADDR) -1))
1387 add_partial_symbol (struct partial_die_info *pdi, struct objfile *objfile,
1388 const struct comp_unit_head *cu_header)
1394 case DW_TAG_subprogram:
1395 if (pdi->is_external)
1397 /*prim_record_minimal_symbol (pdi->name, pdi->lowpc + baseaddr,
1398 mst_text, objfile); */
1399 add_psymbol_to_list (pdi->name, strlen (pdi->name),
1400 VAR_NAMESPACE, LOC_BLOCK,
1401 &objfile->global_psymbols,
1402 0, pdi->lowpc + baseaddr, cu_language, objfile);
1406 /*prim_record_minimal_symbol (pdi->name, pdi->lowpc + baseaddr,
1407 mst_file_text, objfile); */
1408 add_psymbol_to_list (pdi->name, strlen (pdi->name),
1409 VAR_NAMESPACE, LOC_BLOCK,
1410 &objfile->static_psymbols,
1411 0, pdi->lowpc + baseaddr, cu_language, objfile);
1414 case DW_TAG_variable:
1415 if (pdi->is_external)
1418 Don't enter into the minimal symbol tables as there is
1419 a minimal symbol table entry from the ELF symbols already.
1420 Enter into partial symbol table if it has a location
1421 descriptor or a type.
1422 If the location descriptor is missing, new_symbol will create
1423 a LOC_UNRESOLVED symbol, the address of the variable will then
1424 be determined from the minimal symbol table whenever the variable
1426 The address for the partial symbol table entry is not
1427 used by GDB, but it comes in handy for debugging partial symbol
1431 addr = decode_locdesc (pdi->locdesc, objfile, cu_header);
1432 if (pdi->locdesc || pdi->has_type)
1433 add_psymbol_to_list (pdi->name, strlen (pdi->name),
1434 VAR_NAMESPACE, LOC_STATIC,
1435 &objfile->global_psymbols,
1436 0, addr + baseaddr, cu_language, objfile);
1440 /* Static Variable. Skip symbols without location descriptors. */
1441 if (pdi->locdesc == NULL)
1443 addr = decode_locdesc (pdi->locdesc, objfile, cu_header);
1444 /*prim_record_minimal_symbol (pdi->name, addr + baseaddr,
1445 mst_file_data, objfile); */
1446 add_psymbol_to_list (pdi->name, strlen (pdi->name),
1447 VAR_NAMESPACE, LOC_STATIC,
1448 &objfile->static_psymbols,
1449 0, addr + baseaddr, cu_language, objfile);
1452 case DW_TAG_typedef:
1453 case DW_TAG_base_type:
1454 add_psymbol_to_list (pdi->name, strlen (pdi->name),
1455 VAR_NAMESPACE, LOC_TYPEDEF,
1456 &objfile->static_psymbols,
1457 0, (CORE_ADDR) 0, cu_language, objfile);
1459 case DW_TAG_class_type:
1460 case DW_TAG_structure_type:
1461 case DW_TAG_union_type:
1462 case DW_TAG_enumeration_type:
1463 /* Skip aggregate types without children, these are external
1465 if (pdi->has_children == 0)
1467 add_psymbol_to_list (pdi->name, strlen (pdi->name),
1468 STRUCT_NAMESPACE, LOC_TYPEDEF,
1469 &objfile->static_psymbols,
1470 0, (CORE_ADDR) 0, cu_language, objfile);
1472 if (cu_language == language_cplus)
1474 /* For C++, these implicitly act as typedefs as well. */
1475 add_psymbol_to_list (pdi->name, strlen (pdi->name),
1476 VAR_NAMESPACE, LOC_TYPEDEF,
1477 &objfile->static_psymbols,
1478 0, (CORE_ADDR) 0, cu_language, objfile);
1481 case DW_TAG_enumerator:
1482 add_psymbol_to_list (pdi->name, strlen (pdi->name),
1483 VAR_NAMESPACE, LOC_CONST,
1484 &objfile->static_psymbols,
1485 0, (CORE_ADDR) 0, cu_language, objfile);
1492 /* Expand this partial symbol table into a full symbol table. */
1495 dwarf2_psymtab_to_symtab (struct partial_symtab *pst)
1497 /* FIXME: This is barely more than a stub. */
1502 warning ("bug: psymtab for %s is already read in.", pst->filename);
1508 printf_filtered ("Reading in symbols for %s...", pst->filename);
1509 gdb_flush (gdb_stdout);
1512 psymtab_to_symtab_1 (pst);
1514 /* Finish up the debug error message. */
1516 printf_filtered ("done.\n");
1522 psymtab_to_symtab_1 (struct partial_symtab *pst)
1524 struct objfile *objfile = pst->objfile;
1525 bfd *abfd = objfile->obfd;
1526 struct comp_unit_head cu_header;
1527 struct die_info *dies;
1528 unsigned long offset;
1529 CORE_ADDR lowpc, highpc;
1530 struct die_info *child_die;
1532 struct symtab *symtab;
1533 struct cleanup *back_to;
1535 /* Set local variables from the partial symbol table info. */
1536 offset = DWARF_INFO_OFFSET (pst);
1537 dwarf_info_buffer = DWARF_INFO_BUFFER (pst);
1538 dwarf_abbrev_buffer = DWARF_ABBREV_BUFFER (pst);
1539 dwarf_abbrev_size = DWARF_ABBREV_SIZE (pst);
1540 dwarf_line_buffer = DWARF_LINE_BUFFER (pst);
1541 dwarf_line_size = DWARF_LINE_SIZE (pst);
1542 dwarf_str_buffer = DWARF_STR_BUFFER (pst);
1543 dwarf_str_size = DWARF_STR_SIZE (pst);
1544 dwarf_macinfo_buffer = DWARF_MACINFO_BUFFER (pst);
1545 dwarf_macinfo_size = DWARF_MACINFO_SIZE (pst);
1546 baseaddr = ANOFFSET (pst->section_offsets, SECT_OFF_TEXT (objfile));
1547 cu_header_offset = offset;
1548 info_ptr = dwarf_info_buffer + offset;
1550 obstack_init (&dwarf2_tmp_obstack);
1551 back_to = make_cleanup (dwarf2_free_tmp_obstack, NULL);
1554 make_cleanup (really_free_pendings, NULL);
1556 /* read in the comp_unit header */
1557 info_ptr = read_comp_unit_head (&cu_header, info_ptr, abfd);
1559 /* Read the abbrevs for this compilation unit */
1560 dwarf2_read_abbrevs (abfd, &cu_header);
1561 make_cleanup (dwarf2_empty_abbrev_table, cu_header.dwarf2_abbrevs);
1563 dies = read_comp_unit (info_ptr, abfd, &cu_header);
1565 make_cleanup_free_die_list (dies);
1567 /* Do line number decoding in read_file_scope () */
1568 process_die (dies, objfile, &cu_header);
1570 if (!dwarf2_get_pc_bounds (dies, &lowpc, &highpc, objfile))
1572 /* Some compilers don't define a DW_AT_high_pc attribute for
1573 the compilation unit. If the DW_AT_high_pc is missing,
1574 synthesize it, by scanning the DIE's below the compilation unit. */
1576 if (dies->has_children)
1578 child_die = dies->next;
1579 while (child_die && child_die->tag)
1581 if (child_die->tag == DW_TAG_subprogram)
1583 CORE_ADDR low, high;
1585 if (dwarf2_get_pc_bounds (child_die, &low, &high, objfile))
1587 highpc = max (highpc, high);
1590 child_die = sibling_die (child_die);
1594 symtab = end_symtab (highpc + baseaddr, objfile, SECT_OFF_TEXT (objfile));
1596 /* Set symtab language to language from DW_AT_language.
1597 If the compilation is from a C file generated by language preprocessors,
1598 do not set the language if it was already deduced by start_subfile. */
1600 && !(cu_language == language_c && symtab->language != language_c))
1602 symtab->language = cu_language;
1604 pst->symtab = symtab;
1606 sort_symtab_syms (pst->symtab);
1608 do_cleanups (back_to);
1611 /* Process a die and its children. */
1614 process_die (struct die_info *die, struct objfile *objfile,
1615 const struct comp_unit_head *cu_header)
1619 case DW_TAG_padding:
1621 case DW_TAG_compile_unit:
1622 read_file_scope (die, objfile, cu_header);
1624 case DW_TAG_subprogram:
1625 read_subroutine_type (die, objfile, cu_header);
1626 read_func_scope (die, objfile, cu_header);
1628 case DW_TAG_inlined_subroutine:
1629 /* FIXME: These are ignored for now.
1630 They could be used to set breakpoints on all inlined instances
1631 of a function and make GDB `next' properly over inlined functions. */
1633 case DW_TAG_lexical_block:
1634 read_lexical_block_scope (die, objfile, cu_header);
1636 case DW_TAG_class_type:
1637 case DW_TAG_structure_type:
1638 case DW_TAG_union_type:
1639 read_structure_scope (die, objfile, cu_header);
1641 case DW_TAG_enumeration_type:
1642 read_enumeration (die, objfile, cu_header);
1644 case DW_TAG_subroutine_type:
1645 read_subroutine_type (die, objfile, cu_header);
1647 case DW_TAG_array_type:
1648 read_array_type (die, objfile, cu_header);
1650 case DW_TAG_pointer_type:
1651 read_tag_pointer_type (die, objfile, cu_header);
1653 case DW_TAG_ptr_to_member_type:
1654 read_tag_ptr_to_member_type (die, objfile, cu_header);
1656 case DW_TAG_reference_type:
1657 read_tag_reference_type (die, objfile, cu_header);
1659 case DW_TAG_string_type:
1660 read_tag_string_type (die, objfile);
1662 case DW_TAG_base_type:
1663 read_base_type (die, objfile);
1664 if (dwarf_attr (die, DW_AT_name))
1666 /* Add a typedef symbol for the base type definition. */
1667 new_symbol (die, die->type, objfile, cu_header);
1670 case DW_TAG_common_block:
1671 read_common_block (die, objfile, cu_header);
1673 case DW_TAG_common_inclusion:
1675 case DW_TAG_namespace:
1676 read_namespace (die, objfile, cu_header);
1678 case DW_TAG_imported_declaration:
1679 case DW_TAG_imported_module:
1680 /* FIXME: carlton/2002-10-16: Eventually, we should use the
1681 information contained in these. DW_TAG_imported_declaration
1682 dies shouldn't have children; DW_TAG_imported_module dies
1683 shouldn't in the C++ case, but conceivably could in the
1684 Fortran case, so we'll have to replace this gdb_assert if
1685 Fortran compilers start generating that info. */
1686 gdb_assert (!die->has_children);
1689 new_symbol (die, NULL, objfile, cu_header);
1695 initialize_cu_func_list (void)
1697 cu_first_fn = cu_last_fn = cu_cached_fn = NULL;
1701 read_file_scope (struct die_info *die, struct objfile *objfile,
1702 const struct comp_unit_head *cu_header)
1704 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
1705 CORE_ADDR lowpc = ((CORE_ADDR) -1);
1706 CORE_ADDR highpc = ((CORE_ADDR) 0);
1707 struct attribute *attr;
1708 char *name = "<unknown>";
1709 char *comp_dir = NULL;
1710 struct die_info *child_die;
1711 bfd *abfd = objfile->obfd;
1712 struct line_header *line_header = 0;
1714 if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, objfile))
1716 if (die->has_children)
1718 child_die = die->next;
1719 while (child_die && child_die->tag)
1721 if (child_die->tag == DW_TAG_subprogram)
1723 CORE_ADDR low, high;
1725 if (dwarf2_get_pc_bounds (child_die, &low, &high, objfile))
1727 lowpc = min (lowpc, low);
1728 highpc = max (highpc, high);
1731 child_die = sibling_die (child_die);
1736 /* If we didn't find a lowpc, set it to highpc to avoid complaints
1737 from finish_block. */
1738 if (lowpc == ((CORE_ADDR) -1))
1743 attr = dwarf_attr (die, DW_AT_name);
1746 name = DW_STRING (attr);
1748 attr = dwarf_attr (die, DW_AT_comp_dir);
1751 comp_dir = DW_STRING (attr);
1754 /* Irix 6.2 native cc prepends <machine>.: to the compilation
1755 directory, get rid of it. */
1756 char *cp = strchr (comp_dir, ':');
1758 if (cp && cp != comp_dir && cp[-1] == '.' && cp[1] == '/')
1763 if (objfile->ei.entry_point >= lowpc &&
1764 objfile->ei.entry_point < highpc)
1766 objfile->ei.entry_file_lowpc = lowpc;
1767 objfile->ei.entry_file_highpc = highpc;
1770 attr = dwarf_attr (die, DW_AT_language);
1773 set_cu_language (DW_UNSND (attr));
1776 /* We assume that we're processing GCC output. */
1777 processing_gcc_compilation = 2;
1779 /* FIXME:Do something here. */
1780 if (dip->at_producer != NULL)
1782 handle_producer (dip->at_producer);
1786 /* The compilation unit may be in a different language or objfile,
1787 zero out all remembered fundamental types. */
1788 memset (ftypes, 0, FT_NUM_MEMBERS * sizeof (struct type *));
1790 start_symtab (name, comp_dir, lowpc);
1791 record_debugformat ("DWARF 2");
1793 initialize_cu_func_list ();
1795 /* Process all dies in compilation unit. */
1796 if (die->has_children)
1798 child_die = die->next;
1799 while (child_die && child_die->tag)
1801 process_die (child_die, objfile, cu_header);
1802 child_die = sibling_die (child_die);
1806 /* Decode line number information if present. */
1807 attr = dwarf_attr (die, DW_AT_stmt_list);
1810 unsigned int line_offset = DW_UNSND (attr);
1811 line_header = dwarf_decode_line_header (line_offset,
1815 make_cleanup ((make_cleanup_ftype *) free_line_header,
1816 (void *) line_header);
1817 dwarf_decode_lines (line_header, comp_dir, abfd, cu_header);
1821 /* Decode macro information, if present. Dwarf 2 macro information
1822 refers to information in the line number info statement program
1823 header, so we can only read it if we've read the header
1825 attr = dwarf_attr (die, DW_AT_macro_info);
1826 if (attr && line_header)
1828 unsigned int macro_offset = DW_UNSND (attr);
1829 dwarf_decode_macros (line_header, macro_offset,
1830 comp_dir, abfd, cu_header, objfile);
1832 do_cleanups (back_to);
1836 add_to_cu_func_list (const char *name, CORE_ADDR lowpc, CORE_ADDR highpc)
1838 struct function_range *thisfn;
1840 thisfn = (struct function_range *)
1841 obstack_alloc (&dwarf2_tmp_obstack, sizeof (struct function_range));
1842 thisfn->name = name;
1843 thisfn->lowpc = lowpc;
1844 thisfn->highpc = highpc;
1845 thisfn->seen_line = 0;
1846 thisfn->next = NULL;
1848 if (cu_last_fn == NULL)
1849 cu_first_fn = thisfn;
1851 cu_last_fn->next = thisfn;
1853 cu_last_fn = thisfn;
1857 read_func_scope (struct die_info *die, struct objfile *objfile,
1858 const struct comp_unit_head *cu_header)
1860 register struct context_stack *new;
1863 struct die_info *child_die;
1864 struct attribute *attr;
1867 name = dwarf2_linkage_name (die);
1869 /* Ignore functions with missing or empty names and functions with
1870 missing or invalid low and high pc attributes. */
1871 if (name == NULL || !dwarf2_get_pc_bounds (die, &lowpc, &highpc, objfile))
1877 /* Record the function range for dwarf_decode_lines. */
1878 add_to_cu_func_list (name, lowpc, highpc);
1880 if (objfile->ei.entry_point >= lowpc &&
1881 objfile->ei.entry_point < highpc)
1883 objfile->ei.entry_func_lowpc = lowpc;
1884 objfile->ei.entry_func_highpc = highpc;
1887 /* Decode DW_AT_frame_base location descriptor if present, keep result
1888 for DW_OP_fbreg operands in decode_locdesc. */
1889 frame_base_reg = -1;
1890 frame_base_offset = 0;
1891 attr = dwarf_attr (die, DW_AT_frame_base);
1896 /* Support the .debug_loc offsets */
1897 if (attr_form_is_block (attr))
1899 addr = decode_locdesc (DW_BLOCK (attr), objfile, cu_header);
1901 else if (attr->form == DW_FORM_data4 || attr->form == DW_FORM_data8)
1903 dwarf2_complex_location_expr_complaint ();
1908 dwarf2_invalid_attrib_class_complaint ("DW_AT_frame_base", name);
1913 dwarf2_unsupported_at_frame_base_complaint (name);
1915 frame_base_reg = addr;
1918 frame_base_reg = basereg;
1919 frame_base_offset = addr;
1922 dwarf2_unsupported_at_frame_base_complaint (name);
1925 new = push_context (0, lowpc);
1926 new->name = new_symbol (die, die->type, objfile, cu_header);
1927 list_in_scope = &local_symbols;
1929 if (die->has_children)
1931 child_die = die->next;
1932 while (child_die && child_die->tag)
1934 process_die (child_die, objfile, cu_header);
1935 child_die = sibling_die (child_die);
1939 new = pop_context ();
1940 /* Make a block for the local symbols within. */
1941 finish_block (new->name, &local_symbols, new->old_blocks,
1942 lowpc, highpc, objfile);
1944 /* In C++, we can have functions nested inside functions (e.g., when
1945 a function declares a class that has methods). This means that
1946 when we finish processing a function scope, we may need to go
1947 back to building a containing block's symbol lists. */
1948 local_symbols = new->locals;
1949 param_symbols = new->params;
1951 /* If we've finished processing a top-level function, subsequent
1952 symbols go in the file symbol list. */
1953 if (outermost_context_p ())
1954 list_in_scope = &file_symbols;
1957 /* Process all the DIES contained within a lexical block scope. Start
1958 a new scope, process the dies, and then close the scope. */
1961 read_lexical_block_scope (struct die_info *die, struct objfile *objfile,
1962 const struct comp_unit_head *cu_header)
1964 register struct context_stack *new;
1965 CORE_ADDR lowpc, highpc;
1966 struct die_info *child_die;
1968 /* Ignore blocks with missing or invalid low and high pc attributes. */
1969 if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, objfile))
1974 push_context (0, lowpc);
1975 if (die->has_children)
1977 child_die = die->next;
1978 while (child_die && child_die->tag)
1980 process_die (child_die, objfile, cu_header);
1981 child_die = sibling_die (child_die);
1984 new = pop_context ();
1986 if (local_symbols != NULL)
1988 finish_block (0, &local_symbols, new->old_blocks, new->start_addr,
1991 local_symbols = new->locals;
1994 /* Get low and high pc attributes from a die.
1995 Return 1 if the attributes are present and valid, otherwise, return 0. */
1998 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc, CORE_ADDR *highpc,
1999 struct objfile *objfile)
2001 struct attribute *attr;
2005 attr = dwarf_attr (die, DW_AT_low_pc);
2007 low = DW_ADDR (attr);
2010 attr = dwarf_attr (die, DW_AT_high_pc);
2012 high = DW_ADDR (attr);
2019 /* When using the GNU linker, .gnu.linkonce. sections are used to
2020 eliminate duplicate copies of functions and vtables and such.
2021 The linker will arbitrarily choose one and discard the others.
2022 The AT_*_pc values for such functions refer to local labels in
2023 these sections. If the section from that file was discarded, the
2024 labels are not in the output, so the relocs get a value of 0.
2025 If this is a discarded function, mark the pc bounds as invalid,
2026 so that GDB will ignore it. */
2027 if (low == 0 && (bfd_get_file_flags (objfile->obfd) & HAS_RELOC) == 0)
2035 /* Add an aggregate field to the field list. */
2038 dwarf2_add_field (struct field_info *fip, struct die_info *die,
2039 struct objfile *objfile,
2040 const struct comp_unit_head *cu_header)
2042 struct nextfield *new_field;
2043 struct attribute *attr;
2045 char *fieldname = "";
2047 /* Allocate a new field list entry and link it in. */
2048 new_field = (struct nextfield *) xmalloc (sizeof (struct nextfield));
2049 make_cleanup (xfree, new_field);
2050 memset (new_field, 0, sizeof (struct nextfield));
2051 new_field->next = fip->fields;
2052 fip->fields = new_field;
2055 /* Handle accessibility and virtuality of field.
2056 The default accessibility for members is public, the default
2057 accessibility for inheritance is private. */
2058 if (die->tag != DW_TAG_inheritance)
2059 new_field->accessibility = DW_ACCESS_public;
2061 new_field->accessibility = DW_ACCESS_private;
2062 new_field->virtuality = DW_VIRTUALITY_none;
2064 attr = dwarf_attr (die, DW_AT_accessibility);
2066 new_field->accessibility = DW_UNSND (attr);
2067 if (new_field->accessibility != DW_ACCESS_public)
2068 fip->non_public_fields = 1;
2069 attr = dwarf_attr (die, DW_AT_virtuality);
2071 new_field->virtuality = DW_UNSND (attr);
2073 fp = &new_field->field;
2075 if (die->tag == DW_TAG_member && ! die_is_declaration (die))
2077 /* Data member other than a C++ static data member. */
2079 /* Get type of field. */
2080 fp->type = die_type (die, objfile, cu_header);
2082 FIELD_STATIC_KIND (*fp) = 0;
2084 /* Get bit size of field (zero if none). */
2085 attr = dwarf_attr (die, DW_AT_bit_size);
2088 FIELD_BITSIZE (*fp) = DW_UNSND (attr);
2092 FIELD_BITSIZE (*fp) = 0;
2095 /* Get bit offset of field. */
2096 attr = dwarf_attr (die, DW_AT_data_member_location);
2099 FIELD_BITPOS (*fp) =
2100 decode_locdesc (DW_BLOCK (attr), objfile, cu_header) * bits_per_byte;
2103 FIELD_BITPOS (*fp) = 0;
2104 attr = dwarf_attr (die, DW_AT_bit_offset);
2107 if (BITS_BIG_ENDIAN)
2109 /* For big endian bits, the DW_AT_bit_offset gives the
2110 additional bit offset from the MSB of the containing
2111 anonymous object to the MSB of the field. We don't
2112 have to do anything special since we don't need to
2113 know the size of the anonymous object. */
2114 FIELD_BITPOS (*fp) += DW_UNSND (attr);
2118 /* For little endian bits, compute the bit offset to the
2119 MSB of the anonymous object, subtract off the number of
2120 bits from the MSB of the field to the MSB of the
2121 object, and then subtract off the number of bits of
2122 the field itself. The result is the bit offset of
2123 the LSB of the field. */
2125 int bit_offset = DW_UNSND (attr);
2127 attr = dwarf_attr (die, DW_AT_byte_size);
2130 /* The size of the anonymous object containing
2131 the bit field is explicit, so use the
2132 indicated size (in bytes). */
2133 anonymous_size = DW_UNSND (attr);
2137 /* The size of the anonymous object containing
2138 the bit field must be inferred from the type
2139 attribute of the data member containing the
2141 anonymous_size = TYPE_LENGTH (fp->type);
2143 FIELD_BITPOS (*fp) += anonymous_size * bits_per_byte
2144 - bit_offset - FIELD_BITSIZE (*fp);
2148 /* Get name of field. */
2149 attr = dwarf_attr (die, DW_AT_name);
2150 if (attr && DW_STRING (attr))
2151 fieldname = DW_STRING (attr);
2152 fp->name = obsavestring (fieldname, strlen (fieldname),
2153 &objfile->type_obstack);
2155 /* Change accessibility for artificial fields (e.g. virtual table
2156 pointer or virtual base class pointer) to private. */
2157 if (dwarf_attr (die, DW_AT_artificial))
2159 new_field->accessibility = DW_ACCESS_private;
2160 fip->non_public_fields = 1;
2163 else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
2165 /* C++ static member. */
2167 /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
2168 is a declaration, but all versions of G++ as of this writing
2169 (so through at least 3.2.1) incorrectly generate
2170 DW_TAG_variable tags. */
2174 /* Get name of field. */
2175 attr = dwarf_attr (die, DW_AT_name);
2176 if (attr && DW_STRING (attr))
2177 fieldname = DW_STRING (attr);
2181 /* Get physical name. */
2182 physname = dwarf2_linkage_name (die);
2184 SET_FIELD_PHYSNAME (*fp, obsavestring (physname, strlen (physname),
2185 &objfile->type_obstack));
2186 FIELD_TYPE (*fp) = die_type (die, objfile, cu_header);
2187 FIELD_NAME (*fp) = obsavestring (fieldname, strlen (fieldname),
2188 &objfile->type_obstack);
2190 else if (die->tag == DW_TAG_inheritance)
2192 /* C++ base class field. */
2193 attr = dwarf_attr (die, DW_AT_data_member_location);
2195 FIELD_BITPOS (*fp) = (decode_locdesc (DW_BLOCK (attr), objfile, cu_header)
2197 FIELD_BITSIZE (*fp) = 0;
2198 FIELD_STATIC_KIND (*fp) = 0;
2199 FIELD_TYPE (*fp) = die_type (die, objfile, cu_header);
2200 FIELD_NAME (*fp) = type_name_no_tag (fp->type);
2201 fip->nbaseclasses++;
2205 /* Create the vector of fields, and attach it to the type. */
2208 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
2209 struct objfile *objfile)
2211 int nfields = fip->nfields;
2213 /* Record the field count, allocate space for the array of fields,
2214 and create blank accessibility bitfields if necessary. */
2215 TYPE_NFIELDS (type) = nfields;
2216 TYPE_FIELDS (type) = (struct field *)
2217 TYPE_ALLOC (type, sizeof (struct field) * nfields);
2218 memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
2220 if (fip->non_public_fields)
2222 ALLOCATE_CPLUS_STRUCT_TYPE (type);
2224 TYPE_FIELD_PRIVATE_BITS (type) =
2225 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
2226 B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
2228 TYPE_FIELD_PROTECTED_BITS (type) =
2229 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
2230 B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
2232 TYPE_FIELD_IGNORE_BITS (type) =
2233 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
2234 B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
2237 /* If the type has baseclasses, allocate and clear a bit vector for
2238 TYPE_FIELD_VIRTUAL_BITS. */
2239 if (fip->nbaseclasses)
2241 int num_bytes = B_BYTES (fip->nbaseclasses);
2244 ALLOCATE_CPLUS_STRUCT_TYPE (type);
2245 pointer = (char *) TYPE_ALLOC (type, num_bytes);
2246 TYPE_FIELD_VIRTUAL_BITS (type) = (B_TYPE *) pointer;
2247 B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->nbaseclasses);
2248 TYPE_N_BASECLASSES (type) = fip->nbaseclasses;
2251 /* Copy the saved-up fields into the field vector. Start from the head
2252 of the list, adding to the tail of the field array, so that they end
2253 up in the same order in the array in which they were added to the list. */
2254 while (nfields-- > 0)
2256 TYPE_FIELD (type, nfields) = fip->fields->field;
2257 switch (fip->fields->accessibility)
2259 case DW_ACCESS_private:
2260 SET_TYPE_FIELD_PRIVATE (type, nfields);
2263 case DW_ACCESS_protected:
2264 SET_TYPE_FIELD_PROTECTED (type, nfields);
2267 case DW_ACCESS_public:
2271 /* Unknown accessibility. Complain and treat it as public. */
2273 complaint (&symfile_complaints, "unsupported accessibility %d",
2274 fip->fields->accessibility);
2278 if (nfields < fip->nbaseclasses)
2280 switch (fip->fields->virtuality)
2282 case DW_VIRTUALITY_virtual:
2283 case DW_VIRTUALITY_pure_virtual:
2284 SET_TYPE_FIELD_VIRTUAL (type, nfields);
2288 fip->fields = fip->fields->next;
2292 /* Add a member function to the proper fieldlist. */
2295 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
2296 struct type *type, struct objfile *objfile,
2297 const struct comp_unit_head *cu_header)
2299 struct attribute *attr;
2300 struct fnfieldlist *flp;
2302 struct fn_field *fnp;
2305 struct nextfnfield *new_fnfield;
2307 /* Get name of member function. */
2308 attr = dwarf_attr (die, DW_AT_name);
2309 if (attr && DW_STRING (attr))
2310 fieldname = DW_STRING (attr);
2314 /* Get the mangled name. */
2315 physname = dwarf2_linkage_name (die);
2317 /* Look up member function name in fieldlist. */
2318 for (i = 0; i < fip->nfnfields; i++)
2320 if (STREQ (fip->fnfieldlists[i].name, fieldname))
2324 /* Create new list element if necessary. */
2325 if (i < fip->nfnfields)
2326 flp = &fip->fnfieldlists[i];
2329 if ((fip->nfnfields % DW_FIELD_ALLOC_CHUNK) == 0)
2331 fip->fnfieldlists = (struct fnfieldlist *)
2332 xrealloc (fip->fnfieldlists,
2333 (fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
2334 * sizeof (struct fnfieldlist));
2335 if (fip->nfnfields == 0)
2336 make_cleanup (free_current_contents, &fip->fnfieldlists);
2338 flp = &fip->fnfieldlists[fip->nfnfields];
2339 flp->name = fieldname;
2345 /* Create a new member function field and chain it to the field list
2347 new_fnfield = (struct nextfnfield *) xmalloc (sizeof (struct nextfnfield));
2348 make_cleanup (xfree, new_fnfield);
2349 memset (new_fnfield, 0, sizeof (struct nextfnfield));
2350 new_fnfield->next = flp->head;
2351 flp->head = new_fnfield;
2354 /* Fill in the member function field info. */
2355 fnp = &new_fnfield->fnfield;
2356 fnp->physname = obsavestring (physname, strlen (physname),
2357 &objfile->type_obstack);
2358 fnp->type = alloc_type (objfile);
2359 if (die->type && TYPE_CODE (die->type) == TYPE_CODE_FUNC)
2361 struct type *return_type = TYPE_TARGET_TYPE (die->type);
2362 int nparams = TYPE_NFIELDS (die->type);
2364 /* TYPE is the domain of this method, and DIE->TYPE is the type
2365 of the method itself (TYPE_CODE_METHOD). */
2366 smash_to_method_type (fnp->type, type,
2367 TYPE_TARGET_TYPE (die->type),
2368 TYPE_FIELDS (die->type),
2369 TYPE_NFIELDS (die->type),
2370 TYPE_VARARGS (die->type));
2372 /* Handle static member functions.
2373 Dwarf2 has no clean way to discern C++ static and non-static
2374 member functions. G++ helps GDB by marking the first
2375 parameter for non-static member functions (which is the
2376 this pointer) as artificial. We obtain this information
2377 from read_subroutine_type via TYPE_FIELD_ARTIFICIAL. */
2378 if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (die->type, 0) == 0)
2379 fnp->voffset = VOFFSET_STATIC;
2382 complaint (&symfile_complaints, "member function type missing for '%s'",
2385 /* Get fcontext from DW_AT_containing_type if present. */
2386 if (dwarf_attr (die, DW_AT_containing_type) != NULL)
2387 fnp->fcontext = die_containing_type (die, objfile, cu_header);
2389 /* dwarf2 doesn't have stubbed physical names, so the setting of is_const
2390 and is_volatile is irrelevant, as it is needed by gdb_mangle_name only. */
2392 /* Get accessibility. */
2393 attr = dwarf_attr (die, DW_AT_accessibility);
2396 switch (DW_UNSND (attr))
2398 case DW_ACCESS_private:
2399 fnp->is_private = 1;
2401 case DW_ACCESS_protected:
2402 fnp->is_protected = 1;
2407 /* Check for artificial methods. */
2408 attr = dwarf_attr (die, DW_AT_artificial);
2409 if (attr && DW_UNSND (attr) != 0)
2410 fnp->is_artificial = 1;
2412 /* Get index in virtual function table if it is a virtual member function. */
2413 attr = dwarf_attr (die, DW_AT_vtable_elem_location);
2416 /* Support the .debug_loc offsets */
2417 if (attr_form_is_block (attr))
2419 fnp->voffset = decode_locdesc (DW_BLOCK (attr), objfile, cu_header) + 2;
2421 else if (attr->form == DW_FORM_data4 || attr->form == DW_FORM_data8)
2423 dwarf2_complex_location_expr_complaint ();
2427 dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
2433 /* Create the vector of member function fields, and attach it to the type. */
2436 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
2437 struct objfile *objfile)
2439 struct fnfieldlist *flp;
2440 int total_length = 0;
2443 ALLOCATE_CPLUS_STRUCT_TYPE (type);
2444 TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
2445 TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields);
2447 for (i = 0, flp = fip->fnfieldlists; i < fip->nfnfields; i++, flp++)
2449 struct nextfnfield *nfp = flp->head;
2450 struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
2453 TYPE_FN_FIELDLIST_NAME (type, i) = flp->name;
2454 TYPE_FN_FIELDLIST_LENGTH (type, i) = flp->length;
2455 fn_flp->fn_fields = (struct fn_field *)
2456 TYPE_ALLOC (type, sizeof (struct fn_field) * flp->length);
2457 for (k = flp->length; (k--, nfp); nfp = nfp->next)
2458 fn_flp->fn_fields[k] = nfp->fnfield;
2460 total_length += flp->length;
2463 TYPE_NFN_FIELDS (type) = fip->nfnfields;
2464 TYPE_NFN_FIELDS_TOTAL (type) = total_length;
2467 /* Called when we find the DIE that starts a structure or union scope
2468 (definition) to process all dies that define the members of the
2471 NOTE: we need to call struct_type regardless of whether or not the
2472 DIE has an at_name attribute, since it might be an anonymous
2473 structure or union. This gets the type entered into our set of
2476 However, if the structure is incomplete (an opaque struct/union)
2477 then suppress creating a symbol table entry for it since gdb only
2478 wants to find the one with the complete definition. Note that if
2479 it is complete, we just call new_symbol, which does it's own
2480 checking about whether the struct/union is anonymous or not (and
2481 suppresses creating a symbol table entry itself). */
2484 read_structure_scope (struct die_info *die, struct objfile *objfile,
2485 const struct comp_unit_head *cu_header)
2488 struct attribute *attr;
2490 type = alloc_type (objfile);
2492 INIT_CPLUS_SPECIFIC (type);
2493 attr = dwarf_attr (die, DW_AT_name);
2494 if (attr && DW_STRING (attr))
2496 TYPE_TAG_NAME (type) = obsavestring (DW_STRING (attr),
2497 strlen (DW_STRING (attr)),
2498 &objfile->type_obstack);
2501 if (die->tag == DW_TAG_structure_type)
2503 TYPE_CODE (type) = TYPE_CODE_STRUCT;
2505 else if (die->tag == DW_TAG_union_type)
2507 TYPE_CODE (type) = TYPE_CODE_UNION;
2511 /* FIXME: TYPE_CODE_CLASS is currently defined to TYPE_CODE_STRUCT
2513 TYPE_CODE (type) = TYPE_CODE_CLASS;
2516 attr = dwarf_attr (die, DW_AT_byte_size);
2519 TYPE_LENGTH (type) = DW_UNSND (attr);
2523 TYPE_LENGTH (type) = 0;
2526 /* We need to add the type field to the die immediately so we don't
2527 infinitely recurse when dealing with pointers to the structure
2528 type within the structure itself. */
2531 if (die->has_children && ! die_is_declaration (die))
2533 struct field_info fi;
2534 struct die_info *child_die;
2535 struct cleanup *back_to = make_cleanup (null_cleanup, NULL);
2537 memset (&fi, 0, sizeof (struct field_info));
2539 child_die = die->next;
2541 while (child_die && child_die->tag)
2543 if (child_die->tag == DW_TAG_member
2544 || child_die->tag == DW_TAG_variable)
2546 /* NOTE: carlton/2002-11-05: A C++ static data member
2547 should be a DW_TAG_member that is a declaration, but
2548 all versions of G++ as of this writing (so through at
2549 least 3.2.1) incorrectly generate DW_TAG_variable
2550 tags for them instead. */
2551 dwarf2_add_field (&fi, child_die, objfile, cu_header);
2553 else if (child_die->tag == DW_TAG_subprogram)
2555 /* C++ member function. */
2556 process_die (child_die, objfile, cu_header);
2557 dwarf2_add_member_fn (&fi, child_die, type, objfile, cu_header);
2559 else if (child_die->tag == DW_TAG_inheritance)
2561 /* C++ base class field. */
2562 dwarf2_add_field (&fi, child_die, objfile, cu_header);
2566 process_die (child_die, objfile, cu_header);
2568 child_die = sibling_die (child_die);
2571 /* Attach fields and member functions to the type. */
2573 dwarf2_attach_fields_to_type (&fi, type, objfile);
2576 dwarf2_attach_fn_fields_to_type (&fi, type, objfile);
2578 /* Get the type which refers to the base class (possibly this
2579 class itself) which contains the vtable pointer for the current
2580 class from the DW_AT_containing_type attribute. */
2582 if (dwarf_attr (die, DW_AT_containing_type) != NULL)
2584 struct type *t = die_containing_type (die, objfile, cu_header);
2586 TYPE_VPTR_BASETYPE (type) = t;
2589 static const char vptr_name[] =
2590 {'_', 'v', 'p', 't', 'r', '\0'};
2593 /* Our own class provides vtbl ptr. */
2594 for (i = TYPE_NFIELDS (t) - 1;
2595 i >= TYPE_N_BASECLASSES (t);
2598 char *fieldname = TYPE_FIELD_NAME (t, i);
2600 if (STREQN (fieldname, vptr_name, strlen (vptr_name) - 1)
2601 && is_cplus_marker (fieldname[strlen (vptr_name)]))
2603 TYPE_VPTR_FIELDNO (type) = i;
2608 /* Complain if virtual function table field not found. */
2609 if (i < TYPE_N_BASECLASSES (t))
2610 complaint (&symfile_complaints,
2611 "virtual function table pointer not found when defining class '%s'",
2612 TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
2617 TYPE_VPTR_FIELDNO (type) = TYPE_VPTR_FIELDNO (t);
2622 new_symbol (die, type, objfile, cu_header);
2624 do_cleanups (back_to);
2628 /* No children, must be stub. */
2629 TYPE_FLAGS (type) |= TYPE_FLAG_STUB;
2633 /* Given a pointer to a die which begins an enumeration, process all
2634 the dies that define the members of the enumeration.
2636 This will be much nicer in draft 6 of the DWARF spec when our
2637 members will be dies instead squished into the DW_AT_element_list
2640 NOTE: We reverse the order of the element list. */
2643 read_enumeration (struct die_info *die, struct objfile *objfile,
2644 const struct comp_unit_head *cu_header)
2646 struct die_info *child_die;
2648 struct field *fields;
2649 struct attribute *attr;
2652 int unsigned_enum = 1;
2654 type = alloc_type (objfile);
2656 TYPE_CODE (type) = TYPE_CODE_ENUM;
2657 attr = dwarf_attr (die, DW_AT_name);
2658 if (attr && DW_STRING (attr))
2660 TYPE_TAG_NAME (type) = obsavestring (DW_STRING (attr),
2661 strlen (DW_STRING (attr)),
2662 &objfile->type_obstack);
2665 attr = dwarf_attr (die, DW_AT_byte_size);
2668 TYPE_LENGTH (type) = DW_UNSND (attr);
2672 TYPE_LENGTH (type) = 0;
2677 if (die->has_children)
2679 child_die = die->next;
2680 while (child_die && child_die->tag)
2682 if (child_die->tag != DW_TAG_enumerator)
2684 process_die (child_die, objfile, cu_header);
2688 attr = dwarf_attr (child_die, DW_AT_name);
2691 sym = new_symbol (child_die, type, objfile, cu_header);
2692 if (SYMBOL_VALUE (sym) < 0)
2695 if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
2697 fields = (struct field *)
2699 (num_fields + DW_FIELD_ALLOC_CHUNK)
2700 * sizeof (struct field));
2703 FIELD_NAME (fields[num_fields]) = SYMBOL_NAME (sym);
2704 FIELD_TYPE (fields[num_fields]) = NULL;
2705 FIELD_BITPOS (fields[num_fields]) = SYMBOL_VALUE (sym);
2706 FIELD_BITSIZE (fields[num_fields]) = 0;
2707 FIELD_STATIC_KIND (fields[num_fields]) = 0;
2713 child_die = sibling_die (child_die);
2718 TYPE_NFIELDS (type) = num_fields;
2719 TYPE_FIELDS (type) = (struct field *)
2720 TYPE_ALLOC (type, sizeof (struct field) * num_fields);
2721 memcpy (TYPE_FIELDS (type), fields,
2722 sizeof (struct field) * num_fields);
2726 TYPE_FLAGS (type) |= TYPE_FLAG_UNSIGNED;
2729 new_symbol (die, type, objfile, cu_header);
2732 /* Extract all information from a DW_TAG_array_type DIE and put it in
2733 the DIE's type field. For now, this only handles one dimensional
2737 read_array_type (struct die_info *die, struct objfile *objfile,
2738 const struct comp_unit_head *cu_header)
2740 struct die_info *child_die;
2741 struct type *type = NULL;
2742 struct type *element_type, *range_type, *index_type;
2743 struct type **range_types = NULL;
2744 struct attribute *attr;
2746 struct cleanup *back_to;
2748 /* Return if we've already decoded this type. */
2754 element_type = die_type (die, objfile, cu_header);
2756 /* Irix 6.2 native cc creates array types without children for
2757 arrays with unspecified length. */
2758 if (die->has_children == 0)
2760 index_type = dwarf2_fundamental_type (objfile, FT_INTEGER);
2761 range_type = create_range_type (NULL, index_type, 0, -1);
2762 die->type = create_array_type (NULL, element_type, range_type);
2766 back_to = make_cleanup (null_cleanup, NULL);
2767 child_die = die->next;
2768 while (child_die && child_die->tag)
2770 if (child_die->tag == DW_TAG_subrange_type)
2772 unsigned int low, high;
2774 /* Default bounds to an array with unspecified length. */
2777 if (cu_language == language_fortran)
2779 /* FORTRAN implies a lower bound of 1, if not given. */
2783 index_type = die_type (child_die, objfile, cu_header);
2784 attr = dwarf_attr (child_die, DW_AT_lower_bound);
2787 if (attr->form == DW_FORM_sdata)
2789 low = DW_SND (attr);
2791 else if (attr->form == DW_FORM_udata
2792 || attr->form == DW_FORM_data1
2793 || attr->form == DW_FORM_data2
2794 || attr->form == DW_FORM_data4
2795 || attr->form == DW_FORM_data8)
2797 low = DW_UNSND (attr);
2801 dwarf2_non_const_array_bound_ignored_complaint
2802 (dwarf_form_name (attr->form));
2804 die->type = lookup_pointer_type (element_type);
2811 attr = dwarf_attr (child_die, DW_AT_upper_bound);
2814 if (attr->form == DW_FORM_sdata)
2816 high = DW_SND (attr);
2818 else if (attr->form == DW_FORM_udata
2819 || attr->form == DW_FORM_data1
2820 || attr->form == DW_FORM_data2
2821 || attr->form == DW_FORM_data4
2822 || attr->form == DW_FORM_data8)
2824 high = DW_UNSND (attr);
2826 else if (attr->form == DW_FORM_block1)
2828 /* GCC encodes arrays with unspecified or dynamic length
2829 with a DW_FORM_block1 attribute.
2830 FIXME: GDB does not yet know how to handle dynamic
2831 arrays properly, treat them as arrays with unspecified
2837 dwarf2_non_const_array_bound_ignored_complaint
2838 (dwarf_form_name (attr->form));
2840 die->type = lookup_pointer_type (element_type);
2848 /* Create a range type and save it for array type creation. */
2849 if ((ndim % DW_FIELD_ALLOC_CHUNK) == 0)
2851 range_types = (struct type **)
2852 xrealloc (range_types, (ndim + DW_FIELD_ALLOC_CHUNK)
2853 * sizeof (struct type *));
2855 make_cleanup (free_current_contents, &range_types);
2857 range_types[ndim++] = create_range_type (NULL, index_type, low, high);
2859 child_die = sibling_die (child_die);
2862 /* Dwarf2 dimensions are output from left to right, create the
2863 necessary array types in backwards order. */
2864 type = element_type;
2866 type = create_array_type (NULL, type, range_types[ndim]);
2868 /* Understand Dwarf2 support for vector types (like they occur on
2869 the PowerPC w/ AltiVec). Gcc just adds another attribute to the
2870 array type. This is not part of the Dwarf2/3 standard yet, but a
2871 custom vendor extension. The main difference between a regular
2872 array and the vector variant is that vectors are passed by value
2874 attr = dwarf_attr (die, DW_AT_GNU_vector);
2876 TYPE_FLAGS (type) |= TYPE_FLAG_VECTOR;
2878 do_cleanups (back_to);
2880 /* Install the type in the die. */
2884 /* First cut: install each common block member as a global variable. */
2887 read_common_block (struct die_info *die, struct objfile *objfile,
2888 const struct comp_unit_head *cu_header)
2890 struct die_info *child_die;
2891 struct attribute *attr;
2893 CORE_ADDR base = (CORE_ADDR) 0;
2895 attr = dwarf_attr (die, DW_AT_location);
2898 /* Support the .debug_loc offsets */
2899 if (attr_form_is_block (attr))
2901 base = decode_locdesc (DW_BLOCK (attr), objfile, cu_header);
2903 else if (attr->form == DW_FORM_data4 || attr->form == DW_FORM_data8)
2905 dwarf2_complex_location_expr_complaint ();
2909 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
2910 "common block member");
2913 if (die->has_children)
2915 child_die = die->next;
2916 while (child_die && child_die->tag)
2918 sym = new_symbol (child_die, NULL, objfile, cu_header);
2919 attr = dwarf_attr (child_die, DW_AT_data_member_location);
2922 SYMBOL_VALUE_ADDRESS (sym) =
2923 base + decode_locdesc (DW_BLOCK (attr), objfile, cu_header);
2924 add_symbol_to_list (sym, &global_symbols);
2926 child_die = sibling_die (child_die);
2931 /* Read a C++ namespace. */
2933 /* FIXME: carlton/2002-10-16: For now, we don't actually do anything
2934 useful with the namespace data: we just process its children. */
2937 read_namespace (struct die_info *die, struct objfile *objfile,
2938 const struct comp_unit_head *cu_header)
2940 if (die->has_children)
2942 struct die_info *child_die = die->next;
2944 while (child_die && child_die->tag)
2946 process_die (child_die, objfile, cu_header);
2947 child_die = sibling_die (child_die);
2952 /* Extract all information from a DW_TAG_pointer_type DIE and add to
2953 the user defined type vector. */
2956 read_tag_pointer_type (struct die_info *die, struct objfile *objfile,
2957 const struct comp_unit_head *cu_header)
2960 struct attribute *attr_byte_size;
2961 struct attribute *attr_address_class;
2962 int byte_size, addr_class;
2969 type = lookup_pointer_type (die_type (die, objfile, cu_header));
2971 attr_byte_size = dwarf_attr (die, DW_AT_byte_size);
2973 byte_size = DW_UNSND (attr_byte_size);
2975 byte_size = cu_header->addr_size;
2977 attr_address_class = dwarf_attr (die, DW_AT_address_class);
2978 if (attr_address_class)
2979 addr_class = DW_UNSND (attr_address_class);
2981 addr_class = DW_ADDR_none;
2983 /* If the pointer size or address class is different than the
2984 default, create a type variant marked as such and set the
2985 length accordingly. */
2986 if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
2988 if (ADDRESS_CLASS_TYPE_FLAGS_P ())
2992 type_flags = ADDRESS_CLASS_TYPE_FLAGS (byte_size, addr_class);
2993 gdb_assert ((type_flags & ~TYPE_FLAG_ADDRESS_CLASS_ALL) == 0);
2994 type = make_type_with_address_space (type, type_flags);
2996 else if (TYPE_LENGTH (type) != byte_size)
2998 complaint (&symfile_complaints, "invalid pointer size %d", byte_size);
3001 /* Should we also complain about unhandled address classes? */
3005 TYPE_LENGTH (type) = byte_size;
3009 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
3010 the user defined type vector. */
3013 read_tag_ptr_to_member_type (struct die_info *die, struct objfile *objfile,
3014 const struct comp_unit_head *cu_header)
3017 struct type *to_type;
3018 struct type *domain;
3025 type = alloc_type (objfile);
3026 to_type = die_type (die, objfile, cu_header);
3027 domain = die_containing_type (die, objfile, cu_header);
3028 smash_to_member_type (type, domain, to_type);
3033 /* Extract all information from a DW_TAG_reference_type DIE and add to
3034 the user defined type vector. */
3037 read_tag_reference_type (struct die_info *die, struct objfile *objfile,
3038 const struct comp_unit_head *cu_header)
3041 struct attribute *attr;
3048 type = lookup_reference_type (die_type (die, objfile, cu_header));
3049 attr = dwarf_attr (die, DW_AT_byte_size);
3052 TYPE_LENGTH (type) = DW_UNSND (attr);
3056 TYPE_LENGTH (type) = cu_header->addr_size;
3062 read_tag_const_type (struct die_info *die, struct objfile *objfile,
3063 const struct comp_unit_head *cu_header)
3065 struct type *base_type;
3072 base_type = die_type (die, objfile, cu_header);
3073 die->type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
3077 read_tag_volatile_type (struct die_info *die, struct objfile *objfile,
3078 const struct comp_unit_head *cu_header)
3080 struct type *base_type;
3087 base_type = die_type (die, objfile, cu_header);
3088 die->type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
3091 /* Extract all information from a DW_TAG_string_type DIE and add to
3092 the user defined type vector. It isn't really a user defined type,
3093 but it behaves like one, with other DIE's using an AT_user_def_type
3094 attribute to reference it. */
3097 read_tag_string_type (struct die_info *die, struct objfile *objfile)
3099 struct type *type, *range_type, *index_type, *char_type;
3100 struct attribute *attr;
3101 unsigned int length;
3108 attr = dwarf_attr (die, DW_AT_string_length);
3111 length = DW_UNSND (attr);
3115 /* check for the DW_AT_byte_size attribute */
3116 attr = dwarf_attr (die, DW_AT_byte_size);
3119 length = DW_UNSND (attr);
3126 index_type = dwarf2_fundamental_type (objfile, FT_INTEGER);
3127 range_type = create_range_type (NULL, index_type, 1, length);
3128 if (cu_language == language_fortran)
3130 /* Need to create a unique string type for bounds
3132 type = create_string_type (0, range_type);
3136 char_type = dwarf2_fundamental_type (objfile, FT_CHAR);
3137 type = create_string_type (char_type, range_type);
3142 /* Handle DIES due to C code like:
3146 int (*funcp)(int a, long l);
3150 ('funcp' generates a DW_TAG_subroutine_type DIE)
3154 read_subroutine_type (struct die_info *die, struct objfile *objfile,
3155 const struct comp_unit_head *cu_header)
3157 struct type *type; /* Type that this function returns */
3158 struct type *ftype; /* Function that returns above type */
3159 struct attribute *attr;
3161 /* Decode the type that this subroutine returns */
3166 type = die_type (die, objfile, cu_header);
3167 ftype = lookup_function_type (type);
3169 /* All functions in C++ have prototypes. */
3170 attr = dwarf_attr (die, DW_AT_prototyped);
3171 if ((attr && (DW_UNSND (attr) != 0))
3172 || cu_language == language_cplus)
3173 TYPE_FLAGS (ftype) |= TYPE_FLAG_PROTOTYPED;
3175 if (die->has_children)
3177 struct die_info *child_die;
3181 /* Count the number of parameters.
3182 FIXME: GDB currently ignores vararg functions, but knows about
3183 vararg member functions. */
3184 child_die = die->next;
3185 while (child_die && child_die->tag)
3187 if (child_die->tag == DW_TAG_formal_parameter)
3189 else if (child_die->tag == DW_TAG_unspecified_parameters)
3190 TYPE_FLAGS (ftype) |= TYPE_FLAG_VARARGS;
3191 child_die = sibling_die (child_die);
3194 /* Allocate storage for parameters and fill them in. */
3195 TYPE_NFIELDS (ftype) = nparams;
3196 TYPE_FIELDS (ftype) = (struct field *)
3197 TYPE_ALLOC (ftype, nparams * sizeof (struct field));
3199 child_die = die->next;
3200 while (child_die && child_die->tag)
3202 if (child_die->tag == DW_TAG_formal_parameter)
3204 /* Dwarf2 has no clean way to discern C++ static and non-static
3205 member functions. G++ helps GDB by marking the first
3206 parameter for non-static member functions (which is the
3207 this pointer) as artificial. We pass this information
3208 to dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL. */
3209 attr = dwarf_attr (child_die, DW_AT_artificial);
3211 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
3213 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
3214 TYPE_FIELD_TYPE (ftype, iparams) = die_type (child_die, objfile,
3218 child_die = sibling_die (child_die);
3226 read_typedef (struct die_info *die, struct objfile *objfile,
3227 const struct comp_unit_head *cu_header)
3229 struct attribute *attr;
3234 attr = dwarf_attr (die, DW_AT_name);
3235 if (attr && DW_STRING (attr))
3237 name = DW_STRING (attr);
3239 die->type = init_type (TYPE_CODE_TYPEDEF, 0, TYPE_FLAG_TARGET_STUB, name, objfile);
3240 TYPE_TARGET_TYPE (die->type) = die_type (die, objfile, cu_header);
3244 /* Find a representation of a given base type and install
3245 it in the TYPE field of the die. */
3248 read_base_type (struct die_info *die, struct objfile *objfile)
3251 struct attribute *attr;
3252 int encoding = 0, size = 0;
3254 /* If we've already decoded this die, this is a no-op. */
3260 attr = dwarf_attr (die, DW_AT_encoding);
3263 encoding = DW_UNSND (attr);
3265 attr = dwarf_attr (die, DW_AT_byte_size);
3268 size = DW_UNSND (attr);
3270 attr = dwarf_attr (die, DW_AT_name);
3271 if (attr && DW_STRING (attr))
3273 enum type_code code = TYPE_CODE_INT;
3278 case DW_ATE_address:
3279 /* Turn DW_ATE_address into a void * pointer. */
3280 code = TYPE_CODE_PTR;
3281 type_flags |= TYPE_FLAG_UNSIGNED;
3283 case DW_ATE_boolean:
3284 code = TYPE_CODE_BOOL;
3285 type_flags |= TYPE_FLAG_UNSIGNED;
3287 case DW_ATE_complex_float:
3288 code = TYPE_CODE_COMPLEX;
3291 code = TYPE_CODE_FLT;
3294 case DW_ATE_signed_char:
3296 case DW_ATE_unsigned:
3297 case DW_ATE_unsigned_char:
3298 type_flags |= TYPE_FLAG_UNSIGNED;
3301 complaint (&symfile_complaints, "unsupported DW_AT_encoding: '%s'",
3302 dwarf_type_encoding_name (encoding));
3305 type = init_type (code, size, type_flags, DW_STRING (attr), objfile);
3306 if (encoding == DW_ATE_address)
3307 TYPE_TARGET_TYPE (type) = dwarf2_fundamental_type (objfile, FT_VOID);
3308 else if (encoding == DW_ATE_complex_float)
3311 TYPE_TARGET_TYPE (type)
3312 = dwarf2_fundamental_type (objfile, FT_EXT_PREC_FLOAT);
3313 else if (size == 16)
3314 TYPE_TARGET_TYPE (type)
3315 = dwarf2_fundamental_type (objfile, FT_DBL_PREC_FLOAT);
3317 TYPE_TARGET_TYPE (type)
3318 = dwarf2_fundamental_type (objfile, FT_FLOAT);
3323 type = dwarf_base_type (encoding, size, objfile);
3328 /* Read a whole compilation unit into a linked list of dies. */
3330 static struct die_info *
3331 read_comp_unit (char *info_ptr, bfd *abfd,
3332 const struct comp_unit_head *cu_header)
3334 struct die_info *first_die, *last_die, *die;
3338 /* Reset die reference table; we are
3339 building new ones now. */
3340 dwarf2_empty_hash_tables ();
3344 first_die = last_die = NULL;
3347 cur_ptr = read_full_die (&die, abfd, cur_ptr, cu_header);
3348 if (die->has_children)
3359 /* Enter die in reference hash table */
3360 store_in_ref_table (die->offset, die);
3364 first_die = last_die = die;
3368 last_die->next = die;
3372 while (nesting_level > 0);
3376 /* Free a linked list of dies. */
3379 free_die_list (struct die_info *dies)
3381 struct die_info *die, *next;
3394 do_free_die_list_cleanup (void *dies)
3396 free_die_list (dies);
3399 static struct cleanup *
3400 make_cleanup_free_die_list (struct die_info *dies)
3402 return make_cleanup (do_free_die_list_cleanup, dies);
3406 /* Read the contents of the section at OFFSET and of size SIZE from the
3407 object file specified by OBJFILE into the psymbol_obstack and return it. */
3410 dwarf2_read_section (struct objfile *objfile, file_ptr offset,
3413 bfd *abfd = objfile->obfd;
3419 buf = (char *) obstack_alloc (&objfile->psymbol_obstack, size);
3420 if ((bfd_seek (abfd, offset, SEEK_SET) != 0) ||
3421 (bfd_bread (buf, size, abfd) != size))
3424 error ("Dwarf Error: Can't read DWARF data from '%s'",
3425 bfd_get_filename (abfd));
3430 /* In DWARF version 2, the description of the debugging information is
3431 stored in a separate .debug_abbrev section. Before we read any
3432 dies from a section we read in all abbreviations and install them
3436 dwarf2_read_abbrevs (bfd *abfd, struct comp_unit_head *cu_header)
3439 struct abbrev_info *cur_abbrev;
3440 unsigned int abbrev_number, bytes_read, abbrev_name;
3441 unsigned int abbrev_form, hash_number;
3443 /* Initialize dwarf2 abbrevs */
3444 memset (cu_header->dwarf2_abbrevs, 0,
3445 ABBREV_HASH_SIZE*sizeof (struct abbrev_info *));
3447 abbrev_ptr = dwarf_abbrev_buffer + cu_header->abbrev_offset;
3448 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
3449 abbrev_ptr += bytes_read;
3451 /* loop until we reach an abbrev number of 0 */
3452 while (abbrev_number)
3454 cur_abbrev = dwarf_alloc_abbrev ();
3456 /* read in abbrev header */
3457 cur_abbrev->number = abbrev_number;
3458 cur_abbrev->tag = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
3459 abbrev_ptr += bytes_read;
3460 cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
3463 /* now read in declarations */
3464 abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
3465 abbrev_ptr += bytes_read;
3466 abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
3467 abbrev_ptr += bytes_read;
3470 if ((cur_abbrev->num_attrs % ATTR_ALLOC_CHUNK) == 0)
3472 cur_abbrev->attrs = (struct attr_abbrev *)
3473 xrealloc (cur_abbrev->attrs,
3474 (cur_abbrev->num_attrs + ATTR_ALLOC_CHUNK)
3475 * sizeof (struct attr_abbrev));
3477 cur_abbrev->attrs[cur_abbrev->num_attrs].name = abbrev_name;
3478 cur_abbrev->attrs[cur_abbrev->num_attrs++].form = abbrev_form;
3479 abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
3480 abbrev_ptr += bytes_read;
3481 abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
3482 abbrev_ptr += bytes_read;
3485 hash_number = abbrev_number % ABBREV_HASH_SIZE;
3486 cur_abbrev->next = cu_header->dwarf2_abbrevs[hash_number];
3487 cu_header->dwarf2_abbrevs[hash_number] = cur_abbrev;
3489 /* Get next abbreviation.
3490 Under Irix6 the abbreviations for a compilation unit are not
3491 always properly terminated with an abbrev number of 0.
3492 Exit loop if we encounter an abbreviation which we have
3493 already read (which means we are about to read the abbreviations
3494 for the next compile unit) or if the end of the abbreviation
3495 table is reached. */
3496 if ((unsigned int) (abbrev_ptr - dwarf_abbrev_buffer)
3497 >= dwarf_abbrev_size)
3499 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
3500 abbrev_ptr += bytes_read;
3501 if (dwarf2_lookup_abbrev (abbrev_number, cu_header) != NULL)
3506 /* Empty the abbrev table for a new compilation unit. */
3510 dwarf2_empty_abbrev_table (PTR ptr_to_abbrevs_table)
3513 struct abbrev_info *abbrev, *next;
3514 struct abbrev_info **abbrevs;
3516 abbrevs = (struct abbrev_info **)ptr_to_abbrevs_table;
3518 for (i = 0; i < ABBREV_HASH_SIZE; ++i)
3521 abbrev = abbrevs[i];
3524 next = abbrev->next;
3525 xfree (abbrev->attrs);
3533 /* Lookup an abbrev_info structure in the abbrev hash table. */
3535 static struct abbrev_info *
3536 dwarf2_lookup_abbrev (unsigned int number, const struct comp_unit_head *cu_header)
3538 unsigned int hash_number;
3539 struct abbrev_info *abbrev;
3541 hash_number = number % ABBREV_HASH_SIZE;
3542 abbrev = cu_header->dwarf2_abbrevs[hash_number];
3546 if (abbrev->number == number)
3549 abbrev = abbrev->next;
3554 /* Read a minimal amount of information into the minimal die structure. */
3557 read_partial_die (struct partial_die_info *part_die, bfd *abfd,
3558 char *info_ptr, const struct comp_unit_head *cu_header)
3560 unsigned int abbrev_number, bytes_read, i;
3561 struct abbrev_info *abbrev;
3562 struct attribute attr;
3563 struct attribute spec_attr;
3564 int found_spec_attr = 0;
3565 int has_low_pc_attr = 0;
3566 int has_high_pc_attr = 0;
3568 *part_die = zeroed_partial_die;
3569 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
3570 info_ptr += bytes_read;
3574 abbrev = dwarf2_lookup_abbrev (abbrev_number, cu_header);
3577 error ("Dwarf Error: Could not find abbrev number %d.", abbrev_number);
3579 part_die->offset = info_ptr - dwarf_info_buffer;
3580 part_die->tag = abbrev->tag;
3581 part_die->has_children = abbrev->has_children;
3582 part_die->abbrev = abbrev_number;
3584 for (i = 0; i < abbrev->num_attrs; ++i)
3586 info_ptr = read_attribute (&attr, &abbrev->attrs[i], abfd,
3587 info_ptr, cu_header);
3589 /* Store the data if it is of an attribute we want to keep in a
3590 partial symbol table. */
3595 /* Prefer DW_AT_MIPS_linkage_name over DW_AT_name. */
3596 if (part_die->name == NULL)
3597 part_die->name = DW_STRING (&attr);
3599 case DW_AT_MIPS_linkage_name:
3600 part_die->name = DW_STRING (&attr);
3603 has_low_pc_attr = 1;
3604 part_die->lowpc = DW_ADDR (&attr);
3607 has_high_pc_attr = 1;
3608 part_die->highpc = DW_ADDR (&attr);
3610 case DW_AT_location:
3611 /* Support the .debug_loc offsets */
3612 if (attr_form_is_block (&attr))
3614 part_die->locdesc = DW_BLOCK (&attr);
3616 else if (attr.form == DW_FORM_data4 || attr.form == DW_FORM_data8)
3618 dwarf2_complex_location_expr_complaint ();
3622 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
3623 "partial symbol information");
3626 case DW_AT_language:
3627 part_die->language = DW_UNSND (&attr);
3629 case DW_AT_external:
3630 part_die->is_external = DW_UNSND (&attr);
3632 case DW_AT_declaration:
3633 part_die->is_declaration = DW_UNSND (&attr);
3636 part_die->has_type = 1;
3638 case DW_AT_abstract_origin:
3639 case DW_AT_specification:
3640 found_spec_attr = 1;
3644 /* Ignore absolute siblings, they might point outside of
3645 the current compile unit. */
3646 if (attr.form == DW_FORM_ref_addr)
3647 complaint (&symfile_complaints, "ignoring absolute DW_AT_sibling");
3650 dwarf_info_buffer + dwarf2_get_ref_die_offset (&attr);
3657 /* If we found a reference attribute and the die has no name, try
3658 to find a name in the referred to die. */
3660 if (found_spec_attr && part_die->name == NULL)
3662 struct partial_die_info spec_die;
3666 spec_ptr = dwarf_info_buffer + dwarf2_get_ref_die_offset (&spec_attr);
3667 read_partial_die (&spec_die, abfd, spec_ptr, cu_header);
3670 part_die->name = spec_die.name;
3672 /* Copy DW_AT_external attribute if it is set. */
3673 if (spec_die.is_external)
3674 part_die->is_external = spec_die.is_external;
3678 /* When using the GNU linker, .gnu.linkonce. sections are used to
3679 eliminate duplicate copies of functions and vtables and such.
3680 The linker will arbitrarily choose one and discard the others.
3681 The AT_*_pc values for such functions refer to local labels in
3682 these sections. If the section from that file was discarded, the
3683 labels are not in the output, so the relocs get a value of 0.
3684 If this is a discarded function, mark the pc bounds as invalid,
3685 so that GDB will ignore it. */
3686 if (has_low_pc_attr && has_high_pc_attr
3687 && part_die->lowpc < part_die->highpc
3688 && (part_die->lowpc != 0
3689 || (bfd_get_file_flags (abfd) & HAS_RELOC)))
3690 part_die->has_pc_info = 1;
3694 /* Read the die from the .debug_info section buffer. And set diep to
3695 point to a newly allocated die with its information. */
3698 read_full_die (struct die_info **diep, bfd *abfd, char *info_ptr,
3699 const struct comp_unit_head *cu_header)
3701 unsigned int abbrev_number, bytes_read, i, offset;
3702 struct abbrev_info *abbrev;
3703 struct die_info *die;
3705 offset = info_ptr - dwarf_info_buffer;
3706 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
3707 info_ptr += bytes_read;
3710 die = dwarf_alloc_die ();
3712 die->abbrev = abbrev_number;
3718 abbrev = dwarf2_lookup_abbrev (abbrev_number, cu_header);
3721 error ("Dwarf Error: could not find abbrev number %d.", abbrev_number);
3723 die = dwarf_alloc_die ();
3724 die->offset = offset;
3725 die->tag = abbrev->tag;
3726 die->has_children = abbrev->has_children;
3727 die->abbrev = abbrev_number;
3730 die->num_attrs = abbrev->num_attrs;
3731 die->attrs = (struct attribute *)
3732 xmalloc (die->num_attrs * sizeof (struct attribute));
3734 for (i = 0; i < abbrev->num_attrs; ++i)
3736 info_ptr = read_attribute (&die->attrs[i], &abbrev->attrs[i],
3737 abfd, info_ptr, cu_header);
3744 /* Read an attribute value described by an attribute form. */
3747 read_attribute_value (struct attribute *attr, unsigned form,
3748 bfd *abfd, char *info_ptr,
3749 const struct comp_unit_head *cu_header)
3751 unsigned int bytes_read;
3752 struct dwarf_block *blk;
3758 case DW_FORM_ref_addr:
3759 DW_ADDR (attr) = read_address (abfd, info_ptr, cu_header, &bytes_read);
3760 info_ptr += bytes_read;
3762 case DW_FORM_block2:
3763 blk = dwarf_alloc_block ();
3764 blk->size = read_2_bytes (abfd, info_ptr);
3766 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
3767 info_ptr += blk->size;
3768 DW_BLOCK (attr) = blk;
3770 case DW_FORM_block4:
3771 blk = dwarf_alloc_block ();
3772 blk->size = read_4_bytes (abfd, info_ptr);
3774 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
3775 info_ptr += blk->size;
3776 DW_BLOCK (attr) = blk;
3779 DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
3783 DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
3787 DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
3790 case DW_FORM_string:
3791 DW_STRING (attr) = read_string (abfd, info_ptr, &bytes_read);
3792 info_ptr += bytes_read;
3795 DW_STRING (attr) = read_indirect_string (abfd, info_ptr, cu_header,
3797 info_ptr += bytes_read;
3800 blk = dwarf_alloc_block ();
3801 blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
3802 info_ptr += bytes_read;
3803 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
3804 info_ptr += blk->size;
3805 DW_BLOCK (attr) = blk;
3807 case DW_FORM_block1:
3808 blk = dwarf_alloc_block ();
3809 blk->size = read_1_byte (abfd, info_ptr);
3811 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
3812 info_ptr += blk->size;
3813 DW_BLOCK (attr) = blk;
3816 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
3820 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
3824 DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
3825 info_ptr += bytes_read;
3828 DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
3829 info_ptr += bytes_read;
3832 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
3836 DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
3840 DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
3844 DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
3847 case DW_FORM_ref_udata:
3848 DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
3849 info_ptr += bytes_read;
3851 case DW_FORM_indirect:
3852 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
3853 info_ptr += bytes_read;
3854 info_ptr = read_attribute_value (attr, form, abfd, info_ptr, cu_header);
3857 error ("Dwarf Error: Cannot handle %s in DWARF reader.",
3858 dwarf_form_name (form));
3863 /* Read an attribute described by an abbreviated attribute. */
3866 read_attribute (struct attribute *attr, struct attr_abbrev *abbrev,
3867 bfd *abfd, char *info_ptr,
3868 const struct comp_unit_head *cu_header)
3870 attr->name = abbrev->name;
3871 return read_attribute_value (attr, abbrev->form, abfd, info_ptr, cu_header);
3874 /* read dwarf information from a buffer */
3877 read_1_byte (bfd *abfd, char *buf)
3879 return bfd_get_8 (abfd, (bfd_byte *) buf);
3883 read_1_signed_byte (bfd *abfd, char *buf)
3885 return bfd_get_signed_8 (abfd, (bfd_byte *) buf);
3889 read_2_bytes (bfd *abfd, char *buf)
3891 return bfd_get_16 (abfd, (bfd_byte *) buf);
3895 read_2_signed_bytes (bfd *abfd, char *buf)
3897 return bfd_get_signed_16 (abfd, (bfd_byte *) buf);
3901 read_4_bytes (bfd *abfd, char *buf)
3903 return bfd_get_32 (abfd, (bfd_byte *) buf);
3907 read_4_signed_bytes (bfd *abfd, char *buf)
3909 return bfd_get_signed_32 (abfd, (bfd_byte *) buf);
3912 static unsigned long
3913 read_8_bytes (bfd *abfd, char *buf)
3915 return bfd_get_64 (abfd, (bfd_byte *) buf);
3919 read_address (bfd *abfd, char *buf, const struct comp_unit_head *cu_header,
3922 CORE_ADDR retval = 0;
3924 if (cu_header->signed_addr_p)
3926 switch (cu_header->addr_size)
3929 retval = bfd_get_signed_16 (abfd, (bfd_byte *) buf);
3932 retval = bfd_get_signed_32 (abfd, (bfd_byte *) buf);
3935 retval = bfd_get_signed_64 (abfd, (bfd_byte *) buf);
3938 internal_error (__FILE__, __LINE__,
3939 "read_address: bad switch, signed");
3944 switch (cu_header->addr_size)
3947 retval = bfd_get_16 (abfd, (bfd_byte *) buf);
3950 retval = bfd_get_32 (abfd, (bfd_byte *) buf);
3953 retval = bfd_get_64 (abfd, (bfd_byte *) buf);
3956 internal_error (__FILE__, __LINE__,
3957 "read_address: bad switch, unsigned");
3961 *bytes_read = cu_header->addr_size;
3965 /* Read the initial length from a section. The (draft) DWARF 3
3966 specification allows the initial length to take up either 4 bytes
3967 or 12 bytes. If the first 4 bytes are 0xffffffff, then the next 8
3968 bytes describe the length and all offsets will be 8 bytes in length
3971 An older, non-standard 64-bit format is also handled by this
3972 function. The older format in question stores the initial length
3973 as an 8-byte quantity without an escape value. Lengths greater
3974 than 2^32 aren't very common which means that the initial 4 bytes
3975 is almost always zero. Since a length value of zero doesn't make
3976 sense for the 32-bit format, this initial zero can be considered to
3977 be an escape value which indicates the presence of the older 64-bit
3978 format. As written, the code can't detect (old format) lengths
3979 greater than 4GB. If it becomes necessary to handle lengths somewhat
3980 larger than 4GB, we could allow other small values (such as the
3981 non-sensical values of 1, 2, and 3) to also be used as escape values
3982 indicating the presence of the old format.
3984 The value returned via bytes_read should be used to increment
3985 the relevant pointer after calling read_initial_length().
3987 As a side effect, this function sets the fields initial_length_size
3988 and offset_size in cu_header to the values appropriate for the
3989 length field. (The format of the initial length field determines
3990 the width of file offsets to be fetched later with fetch_offset().)
3992 [ Note: read_initial_length() and read_offset() are based on the
3993 document entitled "DWARF Debugging Information Format", revision
3994 3, draft 8, dated November 19, 2001. This document was obtained
3997 http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
3999 This document is only a draft and is subject to change. (So beware.)
4001 Details regarding the older, non-standard 64-bit format were
4002 determined empirically by examining 64-bit ELF files produced
4003 by the SGI toolchain on an IRIX 6.5 machine.
4005 - Kevin, July 16, 2002
4009 read_initial_length (bfd *abfd, char *buf, struct comp_unit_head *cu_header,
4014 retval = bfd_get_32 (abfd, (bfd_byte *) buf);
4016 if (retval == 0xffffffff)
4018 retval = bfd_get_64 (abfd, (bfd_byte *) buf + 4);
4020 if (cu_header != NULL)
4022 cu_header->initial_length_size = 12;
4023 cu_header->offset_size = 8;
4026 else if (retval == 0)
4028 /* Handle (non-standard) 64-bit DWARF2 formats such as that used
4030 retval = bfd_get_64 (abfd, (bfd_byte *) buf);
4032 if (cu_header != NULL)
4034 cu_header->initial_length_size = 8;
4035 cu_header->offset_size = 8;
4041 if (cu_header != NULL)
4043 cu_header->initial_length_size = 4;
4044 cu_header->offset_size = 4;
4051 /* Read an offset from the data stream. The size of the offset is
4052 given by cu_header->offset_size. */
4055 read_offset (bfd *abfd, char *buf, const struct comp_unit_head *cu_header,
4060 switch (cu_header->offset_size)
4063 retval = bfd_get_32 (abfd, (bfd_byte *) buf);
4067 retval = bfd_get_64 (abfd, (bfd_byte *) buf);
4071 internal_error (__FILE__, __LINE__,
4072 "read_offset: bad switch");
4079 read_n_bytes (bfd *abfd, char *buf, unsigned int size)
4081 /* If the size of a host char is 8 bits, we can return a pointer
4082 to the buffer, otherwise we have to copy the data to a buffer
4083 allocated on the temporary obstack. */
4084 gdb_assert (HOST_CHAR_BIT == 8);
4089 read_string (bfd *abfd, char *buf, unsigned int *bytes_read_ptr)
4091 /* If the size of a host char is 8 bits, we can return a pointer
4092 to the string, otherwise we have to copy the string to a buffer
4093 allocated on the temporary obstack. */
4094 gdb_assert (HOST_CHAR_BIT == 8);
4097 *bytes_read_ptr = 1;
4100 *bytes_read_ptr = strlen (buf) + 1;
4105 read_indirect_string (bfd *abfd, char *buf,
4106 const struct comp_unit_head *cu_header,
4107 unsigned int *bytes_read_ptr)
4109 LONGEST str_offset = read_offset (abfd, buf, cu_header,
4110 (int *) bytes_read_ptr);
4112 if (dwarf_str_buffer == NULL)
4114 error ("DW_FORM_strp used without .debug_str section");
4117 if (str_offset >= dwarf_str_size)
4119 error ("DW_FORM_strp pointing outside of .debug_str section");
4122 gdb_assert (HOST_CHAR_BIT == 8);
4123 if (dwarf_str_buffer[str_offset] == '\0')
4125 return dwarf_str_buffer + str_offset;
4128 static unsigned long
4129 read_unsigned_leb128 (bfd *abfd, char *buf, unsigned int *bytes_read_ptr)
4131 unsigned long result;
4132 unsigned int num_read;
4142 byte = bfd_get_8 (abfd, (bfd_byte *) buf);
4145 result |= ((unsigned long)(byte & 127) << shift);
4146 if ((byte & 128) == 0)
4152 *bytes_read_ptr = num_read;
4157 read_signed_leb128 (bfd *abfd, char *buf, unsigned int *bytes_read_ptr)
4160 int i, shift, size, num_read;
4170 byte = bfd_get_8 (abfd, (bfd_byte *) buf);
4173 result |= ((long)(byte & 127) << shift);
4175 if ((byte & 128) == 0)
4180 if ((shift < size) && (byte & 0x40))
4182 result |= -(1 << shift);
4184 *bytes_read_ptr = num_read;
4189 set_cu_language (unsigned int lang)
4195 cu_language = language_c;
4197 case DW_LANG_C_plus_plus:
4198 cu_language = language_cplus;
4200 case DW_LANG_Fortran77:
4201 case DW_LANG_Fortran90:
4202 case DW_LANG_Fortran95:
4203 cu_language = language_fortran;
4205 case DW_LANG_Mips_Assembler:
4206 cu_language = language_asm;
4209 cu_language = language_java;
4213 case DW_LANG_Cobol74:
4214 case DW_LANG_Cobol85:
4215 case DW_LANG_Pascal83:
4216 case DW_LANG_Modula2:
4218 cu_language = language_unknown;
4221 cu_language_defn = language_def (cu_language);
4224 /* Return the named attribute or NULL if not there. */
4226 static struct attribute *
4227 dwarf_attr (struct die_info *die, unsigned int name)
4230 struct attribute *spec = NULL;
4232 for (i = 0; i < die->num_attrs; ++i)
4234 if (die->attrs[i].name == name)
4236 return &die->attrs[i];
4238 if (die->attrs[i].name == DW_AT_specification
4239 || die->attrs[i].name == DW_AT_abstract_origin)
4240 spec = &die->attrs[i];
4244 struct die_info *ref_die =
4245 follow_die_ref (dwarf2_get_ref_die_offset (spec));
4248 return dwarf_attr (ref_die, name);
4255 die_is_declaration (struct die_info *die)
4257 return (dwarf_attr (die, DW_AT_declaration)
4258 && ! dwarf_attr (die, DW_AT_specification));
4262 /* Free the line_header structure *LH, and any arrays and strings it
4265 free_line_header (struct line_header *lh)
4267 if (lh->standard_opcode_lengths)
4268 xfree (lh->standard_opcode_lengths);
4270 /* Remember that all the lh->file_names[i].name pointers are
4271 pointers into debug_line_buffer, and don't need to be freed. */
4273 xfree (lh->file_names);
4275 /* Similarly for the include directory names. */
4276 if (lh->include_dirs)
4277 xfree (lh->include_dirs);
4283 /* Add an entry to LH's include directory table. */
4285 add_include_dir (struct line_header *lh, char *include_dir)
4287 /* Grow the array if necessary. */
4288 if (lh->include_dirs_size == 0)
4290 lh->include_dirs_size = 1; /* for testing */
4291 lh->include_dirs = xmalloc (lh->include_dirs_size
4292 * sizeof (*lh->include_dirs));
4294 else if (lh->num_include_dirs >= lh->include_dirs_size)
4296 lh->include_dirs_size *= 2;
4297 lh->include_dirs = xrealloc (lh->include_dirs,
4298 (lh->include_dirs_size
4299 * sizeof (*lh->include_dirs)));
4302 lh->include_dirs[lh->num_include_dirs++] = include_dir;
4306 /* Add an entry to LH's file name table. */
4308 add_file_name (struct line_header *lh,
4310 unsigned int dir_index,
4311 unsigned int mod_time,
4312 unsigned int length)
4314 struct file_entry *fe;
4316 /* Grow the array if necessary. */
4317 if (lh->file_names_size == 0)
4319 lh->file_names_size = 1; /* for testing */
4320 lh->file_names = xmalloc (lh->file_names_size
4321 * sizeof (*lh->file_names));
4323 else if (lh->num_file_names >= lh->file_names_size)
4325 lh->file_names_size *= 2;
4326 lh->file_names = xrealloc (lh->file_names,
4327 (lh->file_names_size
4328 * sizeof (*lh->file_names)));
4331 fe = &lh->file_names[lh->num_file_names++];
4333 fe->dir_index = dir_index;
4334 fe->mod_time = mod_time;
4335 fe->length = length;
4339 /* Read the statement program header starting at OFFSET in
4340 dwarf_line_buffer, according to the endianness of ABFD. Return a
4341 pointer to a struct line_header, allocated using xmalloc.
4343 NOTE: the strings in the include directory and file name tables of
4344 the returned object point into debug_line_buffer, and must not be
4346 static struct line_header *
4347 dwarf_decode_line_header (unsigned int offset, bfd *abfd,
4348 const struct comp_unit_head *cu_header)
4350 struct cleanup *back_to;
4351 struct line_header *lh;
4355 char *cur_dir, *cur_file;
4357 if (dwarf_line_buffer == NULL)
4359 complaint (&symfile_complaints, "missing .debug_line section");
4363 /* Make sure that at least there's room for the total_length field. That
4364 could be 12 bytes long, but we're just going to fudge that. */
4365 if (offset + 4 >= dwarf_line_size)
4367 dwarf2_statement_list_fits_in_line_number_section_complaint ();
4371 lh = xmalloc (sizeof (*lh));
4372 memset (lh, 0, sizeof (*lh));
4373 back_to = make_cleanup ((make_cleanup_ftype *) free_line_header,
4376 line_ptr = dwarf_line_buffer + offset;
4378 /* read in the header */
4379 lh->total_length = read_initial_length (abfd, line_ptr, NULL, &bytes_read);
4380 line_ptr += bytes_read;
4381 if (line_ptr + lh->total_length > dwarf_line_buffer + dwarf_line_size)
4383 dwarf2_statement_list_fits_in_line_number_section_complaint ();
4386 lh->statement_program_end = line_ptr + lh->total_length;
4387 lh->version = read_2_bytes (abfd, line_ptr);
4389 lh->header_length = read_offset (abfd, line_ptr, cu_header, &bytes_read);
4390 line_ptr += bytes_read;
4391 lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
4393 lh->default_is_stmt = read_1_byte (abfd, line_ptr);
4395 lh->line_base = read_1_signed_byte (abfd, line_ptr);
4397 lh->line_range = read_1_byte (abfd, line_ptr);
4399 lh->opcode_base = read_1_byte (abfd, line_ptr);
4401 lh->standard_opcode_lengths
4402 = (unsigned char *) xmalloc (lh->opcode_base * sizeof (unsigned char));
4404 lh->standard_opcode_lengths[0] = 1; /* This should never be used anyway. */
4405 for (i = 1; i < lh->opcode_base; ++i)
4407 lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
4411 /* Read directory table */
4412 while ((cur_dir = read_string (abfd, line_ptr, &bytes_read)) != NULL)
4414 line_ptr += bytes_read;
4415 add_include_dir (lh, cur_dir);
4417 line_ptr += bytes_read;
4419 /* Read file name table */
4420 while ((cur_file = read_string (abfd, line_ptr, &bytes_read)) != NULL)
4422 unsigned int dir_index, mod_time, length;
4424 line_ptr += bytes_read;
4425 dir_index = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
4426 line_ptr += bytes_read;
4427 mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
4428 line_ptr += bytes_read;
4429 length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
4430 line_ptr += bytes_read;
4432 add_file_name (lh, cur_file, dir_index, mod_time, length);
4434 line_ptr += bytes_read;
4435 lh->statement_program_start = line_ptr;
4437 if (line_ptr > dwarf_line_buffer + dwarf_line_size)
4438 complaint (&symfile_complaints,
4439 "line number info header doesn't fit in `.debug_line' section");
4441 discard_cleanups (back_to);
4445 /* This function exists to work around a bug in certain compilers
4446 (particularly GCC 2.95), in which the first line number marker of a
4447 function does not show up until after the prologue, right before
4448 the second line number marker. This function shifts ADDRESS down
4449 to the beginning of the function if necessary, and is called on
4450 addresses passed to record_line. */
4453 check_cu_functions (CORE_ADDR address)
4455 struct function_range *fn;
4457 /* Find the function_range containing address. */
4462 cu_cached_fn = cu_first_fn;
4466 if (fn->lowpc <= address && fn->highpc > address)
4472 while (fn && fn != cu_cached_fn)
4473 if (fn->lowpc <= address && fn->highpc > address)
4483 if (address != fn->lowpc)
4484 complaint (&symfile_complaints,
4485 "misplaced first line number at 0x%lx for '%s'",
4486 (unsigned long) address, fn->name);
4491 /* Decode the line number information for the compilation unit whose
4492 line number info is at OFFSET in the .debug_line section.
4493 The compilation directory of the file is passed in COMP_DIR. */
4496 dwarf_decode_lines (struct line_header *lh, char *comp_dir, bfd *abfd,
4497 const struct comp_unit_head *cu_header)
4501 unsigned int i, bytes_read;
4503 unsigned char op_code, extended_op, adj_opcode;
4505 line_ptr = lh->statement_program_start;
4506 line_end = lh->statement_program_end;
4508 /* Read the statement sequences until there's nothing left. */
4509 while (line_ptr < line_end)
4511 /* state machine registers */
4512 CORE_ADDR address = 0;
4513 unsigned int file = 1;
4514 unsigned int line = 1;
4515 unsigned int column = 0;
4516 int is_stmt = lh->default_is_stmt;
4517 int basic_block = 0;
4518 int end_sequence = 0;
4520 /* Start a subfile for the current file of the state machine. */
4521 if (lh->num_file_names >= file)
4523 /* lh->include_dirs and lh->file_names are 0-based, but the
4524 directory and file name numbers in the statement program
4526 struct file_entry *fe = &lh->file_names[file - 1];
4529 dir = lh->include_dirs[fe->dir_index - 1];
4532 dwarf2_start_subfile (fe->name, dir);
4535 /* Decode the table. */
4536 while (!end_sequence)
4538 op_code = read_1_byte (abfd, line_ptr);
4541 if (op_code >= lh->opcode_base)
4542 { /* Special operand. */
4543 adj_opcode = op_code - lh->opcode_base;
4544 address += (adj_opcode / lh->line_range)
4545 * lh->minimum_instruction_length;
4546 line += lh->line_base + (adj_opcode % lh->line_range);
4547 /* append row to matrix using current values */
4548 address = check_cu_functions (address);
4549 record_line (current_subfile, line, address);
4552 else switch (op_code)
4554 case DW_LNS_extended_op:
4555 line_ptr += 1; /* ignore length */
4556 extended_op = read_1_byte (abfd, line_ptr);
4558 switch (extended_op)
4560 case DW_LNE_end_sequence:
4562 record_line (current_subfile, 0, address);
4564 case DW_LNE_set_address:
4565 address = read_address (abfd, line_ptr, cu_header, &bytes_read);
4566 line_ptr += bytes_read;
4567 address += baseaddr;
4569 case DW_LNE_define_file:
4572 unsigned int dir_index, mod_time, length;
4574 cur_file = read_string (abfd, line_ptr, &bytes_read);
4575 line_ptr += bytes_read;
4577 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
4578 line_ptr += bytes_read;
4580 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
4581 line_ptr += bytes_read;
4583 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
4584 line_ptr += bytes_read;
4585 add_file_name (lh, cur_file, dir_index, mod_time, length);
4589 complaint (&symfile_complaints,
4590 "mangled .debug_line section");
4595 address = check_cu_functions (address);
4596 record_line (current_subfile, line, address);
4599 case DW_LNS_advance_pc:
4600 address += lh->minimum_instruction_length
4601 * read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
4602 line_ptr += bytes_read;
4604 case DW_LNS_advance_line:
4605 line += read_signed_leb128 (abfd, line_ptr, &bytes_read);
4606 line_ptr += bytes_read;
4608 case DW_LNS_set_file:
4610 /* lh->include_dirs and lh->file_names are 0-based,
4611 but the directory and file name numbers in the
4612 statement program are 1-based. */
4613 struct file_entry *fe;
4615 file = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
4616 line_ptr += bytes_read;
4617 fe = &lh->file_names[file - 1];
4619 dir = lh->include_dirs[fe->dir_index - 1];
4622 dwarf2_start_subfile (fe->name, dir);
4625 case DW_LNS_set_column:
4626 column = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
4627 line_ptr += bytes_read;
4629 case DW_LNS_negate_stmt:
4630 is_stmt = (!is_stmt);
4632 case DW_LNS_set_basic_block:
4635 /* Add to the address register of the state machine the
4636 address increment value corresponding to special opcode
4637 255. Ie, this value is scaled by the minimum instruction
4638 length since special opcode 255 would have scaled the
4640 case DW_LNS_const_add_pc:
4641 address += (lh->minimum_instruction_length
4642 * ((255 - lh->opcode_base) / lh->line_range));
4644 case DW_LNS_fixed_advance_pc:
4645 address += read_2_bytes (abfd, line_ptr);
4649 { /* Unknown standard opcode, ignore it. */
4651 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
4653 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
4654 line_ptr += bytes_read;
4662 /* Start a subfile for DWARF. FILENAME is the name of the file and
4663 DIRNAME the name of the source directory which contains FILENAME
4664 or NULL if not known.
4665 This routine tries to keep line numbers from identical absolute and
4666 relative file names in a common subfile.
4668 Using the `list' example from the GDB testsuite, which resides in
4669 /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
4670 of /srcdir/list0.c yields the following debugging information for list0.c:
4672 DW_AT_name: /srcdir/list0.c
4673 DW_AT_comp_dir: /compdir
4674 files.files[0].name: list0.h
4675 files.files[0].dir: /srcdir
4676 files.files[1].name: list0.c
4677 files.files[1].dir: /srcdir
4679 The line number information for list0.c has to end up in a single
4680 subfile, so that `break /srcdir/list0.c:1' works as expected. */
4683 dwarf2_start_subfile (char *filename, char *dirname)
4685 /* If the filename isn't absolute, try to match an existing subfile
4686 with the full pathname. */
4688 if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
4690 struct subfile *subfile;
4691 char *fullname = concat (dirname, "/", filename, NULL);
4693 for (subfile = subfiles; subfile; subfile = subfile->next)
4695 if (FILENAME_CMP (subfile->name, fullname) == 0)
4697 current_subfile = subfile;
4704 start_subfile (filename, dirname);
4707 /* Given a pointer to a DWARF information entry, figure out if we need
4708 to make a symbol table entry for it, and if so, create a new entry
4709 and return a pointer to it.
4710 If TYPE is NULL, determine symbol type from the die, otherwise
4711 used the passed type. */
4713 static struct symbol *
4714 new_symbol (struct die_info *die, struct type *type, struct objfile *objfile,
4715 const struct comp_unit_head *cu_header)
4717 struct symbol *sym = NULL;
4719 struct attribute *attr = NULL;
4720 struct attribute *attr2 = NULL;
4723 name = dwarf2_linkage_name (die);
4726 sym = (struct symbol *) obstack_alloc (&objfile->symbol_obstack,
4727 sizeof (struct symbol));
4728 OBJSTAT (objfile, n_syms++);
4729 memset (sym, 0, sizeof (struct symbol));
4730 SYMBOL_NAME (sym) = obsavestring (name, strlen (name),
4731 &objfile->symbol_obstack);
4733 /* Default assumptions.
4734 Use the passed type or decode it from the die. */
4735 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
4736 SYMBOL_CLASS (sym) = LOC_STATIC;
4738 SYMBOL_TYPE (sym) = type;
4740 SYMBOL_TYPE (sym) = die_type (die, objfile, cu_header);
4741 attr = dwarf_attr (die, DW_AT_decl_line);
4744 SYMBOL_LINE (sym) = DW_UNSND (attr);
4747 /* If this symbol is from a C++ compilation, then attempt to
4748 cache the demangled form for future reference. This is a
4749 typical time versus space tradeoff, that was decided in favor
4750 of time because it sped up C++ symbol lookups by a factor of
4753 SYMBOL_LANGUAGE (sym) = cu_language;
4754 SYMBOL_INIT_DEMANGLED_NAME (sym, &objfile->symbol_obstack);
4758 attr = dwarf_attr (die, DW_AT_low_pc);
4761 SYMBOL_VALUE_ADDRESS (sym) = DW_ADDR (attr) + baseaddr;
4763 SYMBOL_CLASS (sym) = LOC_LABEL;
4765 case DW_TAG_subprogram:
4766 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
4768 SYMBOL_CLASS (sym) = LOC_BLOCK;
4769 attr2 = dwarf_attr (die, DW_AT_external);
4770 if (attr2 && (DW_UNSND (attr2) != 0))
4772 add_symbol_to_list (sym, &global_symbols);
4776 add_symbol_to_list (sym, list_in_scope);
4779 case DW_TAG_variable:
4780 /* Compilation with minimal debug info may result in variables
4781 with missing type entries. Change the misleading `void' type
4782 to something sensible. */
4783 if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
4784 SYMBOL_TYPE (sym) = init_type (TYPE_CODE_INT,
4785 TARGET_INT_BIT / HOST_CHAR_BIT, 0,
4786 "<variable, no debug info>",
4788 attr = dwarf_attr (die, DW_AT_const_value);
4791 dwarf2_const_value (attr, sym, objfile, cu_header);
4792 attr2 = dwarf_attr (die, DW_AT_external);
4793 if (attr2 && (DW_UNSND (attr2) != 0))
4794 add_symbol_to_list (sym, &global_symbols);
4796 add_symbol_to_list (sym, list_in_scope);
4799 attr = dwarf_attr (die, DW_AT_location);
4802 attr2 = dwarf_attr (die, DW_AT_external);
4803 if (attr2 && (DW_UNSND (attr2) != 0))
4805 /* Support the .debug_loc offsets */
4806 if (attr_form_is_block (attr))
4808 SYMBOL_VALUE_ADDRESS (sym) =
4809 decode_locdesc (DW_BLOCK (attr), objfile, cu_header);
4811 else if (attr->form == DW_FORM_data4
4812 || attr->form == DW_FORM_data8)
4814 dwarf2_complex_location_expr_complaint ();
4818 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
4819 "external variable");
4821 add_symbol_to_list (sym, &global_symbols);
4822 if (is_thread_local)
4824 /* SYMBOL_VALUE_ADDRESS contains at this point the
4825 offset of the variable within the thread local
4827 SYMBOL_CLASS (sym) = LOC_THREAD_LOCAL_STATIC;
4828 SYMBOL_OBJFILE (sym) = objfile;
4831 /* In shared libraries the address of the variable
4832 in the location descriptor might still be relocatable,
4833 so its value could be zero.
4834 Enter the symbol as a LOC_UNRESOLVED symbol, if its
4835 value is zero, the address of the variable will then
4836 be determined from the minimal symbol table whenever
4837 the variable is referenced. */
4838 else if (SYMBOL_VALUE_ADDRESS (sym))
4840 fixup_symbol_section (sym, objfile);
4841 SYMBOL_VALUE_ADDRESS (sym) +=
4842 ANOFFSET (objfile->section_offsets,
4843 SYMBOL_SECTION (sym));
4844 SYMBOL_CLASS (sym) = LOC_STATIC;
4847 SYMBOL_CLASS (sym) = LOC_UNRESOLVED;
4851 /* Support the .debug_loc offsets */
4852 if (attr_form_is_block (attr))
4854 SYMBOL_VALUE (sym) = addr =
4855 decode_locdesc (DW_BLOCK (attr), objfile, cu_header);
4857 else if (attr->form == DW_FORM_data4
4858 || attr->form == DW_FORM_data8)
4860 dwarf2_complex_location_expr_complaint ();
4864 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
4865 "external variable");
4868 add_symbol_to_list (sym, list_in_scope);
4871 SYMBOL_CLASS (sym) = LOC_OPTIMIZED_OUT;
4875 SYMBOL_CLASS (sym) = LOC_REGISTER;
4876 SYMBOL_VALUE (sym) =
4877 DWARF2_REG_TO_REGNUM (SYMBOL_VALUE (sym));
4881 SYMBOL_CLASS (sym) = LOC_BASEREG;
4882 SYMBOL_BASEREG (sym) = DWARF2_REG_TO_REGNUM (basereg);
4886 SYMBOL_CLASS (sym) = LOC_LOCAL;
4888 else if (is_thread_local)
4890 SYMBOL_CLASS (sym) = LOC_THREAD_LOCAL_STATIC;
4891 SYMBOL_OBJFILE (sym) = objfile;
4895 fixup_symbol_section (sym, objfile);
4896 SYMBOL_VALUE_ADDRESS (sym) =
4897 addr + ANOFFSET (objfile->section_offsets,
4898 SYMBOL_SECTION (sym));
4899 SYMBOL_CLASS (sym) = LOC_STATIC;
4905 /* We do not know the address of this symbol.
4906 If it is an external symbol and we have type information
4907 for it, enter the symbol as a LOC_UNRESOLVED symbol.
4908 The address of the variable will then be determined from
4909 the minimal symbol table whenever the variable is
4911 attr2 = dwarf_attr (die, DW_AT_external);
4912 if (attr2 && (DW_UNSND (attr2) != 0)
4913 && dwarf_attr (die, DW_AT_type) != NULL)
4915 SYMBOL_CLASS (sym) = LOC_UNRESOLVED;
4916 add_symbol_to_list (sym, &global_symbols);
4920 case DW_TAG_formal_parameter:
4921 attr = dwarf_attr (die, DW_AT_location);
4924 SYMBOL_VALUE (sym) =
4925 decode_locdesc (DW_BLOCK (attr), objfile, cu_header);
4928 SYMBOL_CLASS (sym) = LOC_REGPARM;
4929 SYMBOL_VALUE (sym) =
4930 DWARF2_REG_TO_REGNUM (SYMBOL_VALUE (sym));
4936 if (basereg != frame_base_reg)
4937 dwarf2_complex_location_expr_complaint ();
4938 SYMBOL_CLASS (sym) = LOC_REF_ARG;
4942 SYMBOL_CLASS (sym) = LOC_BASEREG_ARG;
4943 SYMBOL_BASEREG (sym) = DWARF2_REG_TO_REGNUM (basereg);
4948 SYMBOL_CLASS (sym) = LOC_ARG;
4951 attr = dwarf_attr (die, DW_AT_const_value);
4954 dwarf2_const_value (attr, sym, objfile, cu_header);
4956 add_symbol_to_list (sym, list_in_scope);
4958 case DW_TAG_unspecified_parameters:
4959 /* From varargs functions; gdb doesn't seem to have any
4960 interest in this information, so just ignore it for now.
4963 case DW_TAG_class_type:
4964 case DW_TAG_structure_type:
4965 case DW_TAG_union_type:
4966 case DW_TAG_enumeration_type:
4967 SYMBOL_CLASS (sym) = LOC_TYPEDEF;
4968 SYMBOL_NAMESPACE (sym) = STRUCT_NAMESPACE;
4969 add_symbol_to_list (sym, list_in_scope);
4971 /* The semantics of C++ state that "struct foo { ... }" also
4972 defines a typedef for "foo". Synthesize a typedef symbol so
4973 that "ptype foo" works as expected. */
4974 if (cu_language == language_cplus)
4976 struct symbol *typedef_sym = (struct symbol *)
4977 obstack_alloc (&objfile->symbol_obstack,
4978 sizeof (struct symbol));
4979 *typedef_sym = *sym;
4980 SYMBOL_NAMESPACE (typedef_sym) = VAR_NAMESPACE;
4981 if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
4982 TYPE_NAME (SYMBOL_TYPE (sym)) =
4983 obsavestring (SYMBOL_NAME (sym),
4984 strlen (SYMBOL_NAME (sym)),
4985 &objfile->type_obstack);
4986 add_symbol_to_list (typedef_sym, list_in_scope);
4989 case DW_TAG_typedef:
4990 case DW_TAG_base_type:
4991 SYMBOL_CLASS (sym) = LOC_TYPEDEF;
4992 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
4993 add_symbol_to_list (sym, list_in_scope);
4995 case DW_TAG_enumerator:
4996 attr = dwarf_attr (die, DW_AT_const_value);
4999 dwarf2_const_value (attr, sym, objfile, cu_header);
5001 add_symbol_to_list (sym, list_in_scope);
5004 /* Not a tag we recognize. Hopefully we aren't processing
5005 trash data, but since we must specifically ignore things
5006 we don't recognize, there is nothing else we should do at
5008 complaint (&symfile_complaints, "unsupported tag: '%s'",
5009 dwarf_tag_name (die->tag));
5016 /* Copy constant value from an attribute to a symbol. */
5019 dwarf2_const_value (struct attribute *attr, struct symbol *sym,
5020 struct objfile *objfile,
5021 const struct comp_unit_head *cu_header)
5023 struct dwarf_block *blk;
5028 if (TYPE_LENGTH (SYMBOL_TYPE (sym)) != cu_header->addr_size)
5029 dwarf2_const_value_length_mismatch_complaint (SYMBOL_NAME (sym),
5030 cu_header->addr_size,
5031 TYPE_LENGTH (SYMBOL_TYPE
5033 SYMBOL_VALUE_BYTES (sym) = (char *)
5034 obstack_alloc (&objfile->symbol_obstack, cu_header->addr_size);
5035 store_address (SYMBOL_VALUE_BYTES (sym), cu_header->addr_size,
5037 SYMBOL_CLASS (sym) = LOC_CONST_BYTES;
5039 case DW_FORM_block1:
5040 case DW_FORM_block2:
5041 case DW_FORM_block4:
5043 blk = DW_BLOCK (attr);
5044 if (TYPE_LENGTH (SYMBOL_TYPE (sym)) != blk->size)
5045 dwarf2_const_value_length_mismatch_complaint (SYMBOL_NAME (sym),
5047 TYPE_LENGTH (SYMBOL_TYPE
5049 SYMBOL_VALUE_BYTES (sym) = (char *)
5050 obstack_alloc (&objfile->symbol_obstack, blk->size);
5051 memcpy (SYMBOL_VALUE_BYTES (sym), blk->data, blk->size);
5052 SYMBOL_CLASS (sym) = LOC_CONST_BYTES;
5055 /* The DW_AT_const_value attributes are supposed to carry the
5056 symbol's value "represented as it would be on the target
5057 architecture." By the time we get here, it's already been
5058 converted to host endianness, so we just need to sign- or
5059 zero-extend it as appropriate. */
5061 dwarf2_const_value_data (attr, sym, 8);
5064 dwarf2_const_value_data (attr, sym, 16);
5067 dwarf2_const_value_data (attr, sym, 32);
5070 dwarf2_const_value_data (attr, sym, 64);
5074 SYMBOL_VALUE (sym) = DW_SND (attr);
5075 SYMBOL_CLASS (sym) = LOC_CONST;
5079 SYMBOL_VALUE (sym) = DW_UNSND (attr);
5080 SYMBOL_CLASS (sym) = LOC_CONST;
5084 complaint (&symfile_complaints,
5085 "unsupported const value attribute form: '%s'",
5086 dwarf_form_name (attr->form));
5087 SYMBOL_VALUE (sym) = 0;
5088 SYMBOL_CLASS (sym) = LOC_CONST;
5094 /* Given an attr with a DW_FORM_dataN value in host byte order, sign-
5095 or zero-extend it as appropriate for the symbol's type. */
5097 dwarf2_const_value_data (struct attribute *attr,
5101 LONGEST l = DW_UNSND (attr);
5103 if (bits < sizeof (l) * 8)
5105 if (TYPE_UNSIGNED (SYMBOL_TYPE (sym)))
5106 l &= ((LONGEST) 1 << bits) - 1;
5108 l = (l << (sizeof (l) * 8 - bits)) >> (sizeof (l) * 8 - bits);
5111 SYMBOL_VALUE (sym) = l;
5112 SYMBOL_CLASS (sym) = LOC_CONST;
5116 /* Return the type of the die in question using its DW_AT_type attribute. */
5118 static struct type *
5119 die_type (struct die_info *die, struct objfile *objfile,
5120 const struct comp_unit_head *cu_header)
5123 struct attribute *type_attr;
5124 struct die_info *type_die;
5127 type_attr = dwarf_attr (die, DW_AT_type);
5130 /* A missing DW_AT_type represents a void type. */
5131 return dwarf2_fundamental_type (objfile, FT_VOID);
5135 ref = dwarf2_get_ref_die_offset (type_attr);
5136 type_die = follow_die_ref (ref);
5139 error ("Dwarf Error: Cannot find referent at offset %d.", ref);
5143 type = tag_type_to_type (type_die, objfile, cu_header);
5146 dump_die (type_die);
5147 error ("Dwarf Error: Problem turning type die at offset into gdb type.");
5152 /* Return the containing type of the die in question using its
5153 DW_AT_containing_type attribute. */
5155 static struct type *
5156 die_containing_type (struct die_info *die, struct objfile *objfile,
5157 const struct comp_unit_head *cu_header)
5159 struct type *type = NULL;
5160 struct attribute *type_attr;
5161 struct die_info *type_die = NULL;
5164 type_attr = dwarf_attr (die, DW_AT_containing_type);
5167 ref = dwarf2_get_ref_die_offset (type_attr);
5168 type_die = follow_die_ref (ref);
5171 error ("Dwarf Error: Cannot find referent at offset %d.", ref);
5174 type = tag_type_to_type (type_die, objfile, cu_header);
5179 dump_die (type_die);
5180 error ("Dwarf Error: Problem turning containing type into gdb type.");
5186 static struct type *
5187 type_at_offset (unsigned int offset, struct objfile *objfile)
5189 struct die_info *die;
5192 die = follow_die_ref (offset);
5195 error ("Dwarf Error: Cannot find type referent at offset %d.", offset);
5198 type = tag_type_to_type (die, objfile);
5203 static struct type *
5204 tag_type_to_type (struct die_info *die, struct objfile *objfile,
5205 const struct comp_unit_head *cu_header)
5213 read_type_die (die, objfile, cu_header);
5217 error ("Dwarf Error: Cannot find type of die.");
5224 read_type_die (struct die_info *die, struct objfile *objfile,
5225 const struct comp_unit_head *cu_header)
5229 case DW_TAG_class_type:
5230 case DW_TAG_structure_type:
5231 case DW_TAG_union_type:
5232 read_structure_scope (die, objfile, cu_header);
5234 case DW_TAG_enumeration_type:
5235 read_enumeration (die, objfile, cu_header);
5237 case DW_TAG_subprogram:
5238 case DW_TAG_subroutine_type:
5239 read_subroutine_type (die, objfile, cu_header);
5241 case DW_TAG_array_type:
5242 read_array_type (die, objfile, cu_header);
5244 case DW_TAG_pointer_type:
5245 read_tag_pointer_type (die, objfile, cu_header);
5247 case DW_TAG_ptr_to_member_type:
5248 read_tag_ptr_to_member_type (die, objfile, cu_header);
5250 case DW_TAG_reference_type:
5251 read_tag_reference_type (die, objfile, cu_header);
5253 case DW_TAG_const_type:
5254 read_tag_const_type (die, objfile, cu_header);
5256 case DW_TAG_volatile_type:
5257 read_tag_volatile_type (die, objfile, cu_header);
5259 case DW_TAG_string_type:
5260 read_tag_string_type (die, objfile);
5262 case DW_TAG_typedef:
5263 read_typedef (die, objfile, cu_header);
5265 case DW_TAG_base_type:
5266 read_base_type (die, objfile);
5269 complaint (&symfile_complaints, "unexepected tag in read_type_die: '%s'",
5270 dwarf_tag_name (die->tag));
5275 static struct type *
5276 dwarf_base_type (int encoding, int size, struct objfile *objfile)
5278 /* FIXME - this should not produce a new (struct type *)
5279 every time. It should cache base types. */
5283 case DW_ATE_address:
5284 type = dwarf2_fundamental_type (objfile, FT_VOID);
5286 case DW_ATE_boolean:
5287 type = dwarf2_fundamental_type (objfile, FT_BOOLEAN);
5289 case DW_ATE_complex_float:
5292 type = dwarf2_fundamental_type (objfile, FT_DBL_PREC_COMPLEX);
5296 type = dwarf2_fundamental_type (objfile, FT_COMPLEX);
5302 type = dwarf2_fundamental_type (objfile, FT_DBL_PREC_FLOAT);
5306 type = dwarf2_fundamental_type (objfile, FT_FLOAT);
5313 type = dwarf2_fundamental_type (objfile, FT_SIGNED_CHAR);
5316 type = dwarf2_fundamental_type (objfile, FT_SIGNED_SHORT);
5320 type = dwarf2_fundamental_type (objfile, FT_SIGNED_INTEGER);
5324 case DW_ATE_signed_char:
5325 type = dwarf2_fundamental_type (objfile, FT_SIGNED_CHAR);
5327 case DW_ATE_unsigned:
5331 type = dwarf2_fundamental_type (objfile, FT_UNSIGNED_CHAR);
5334 type = dwarf2_fundamental_type (objfile, FT_UNSIGNED_SHORT);
5338 type = dwarf2_fundamental_type (objfile, FT_UNSIGNED_INTEGER);
5342 case DW_ATE_unsigned_char:
5343 type = dwarf2_fundamental_type (objfile, FT_UNSIGNED_CHAR);
5346 type = dwarf2_fundamental_type (objfile, FT_SIGNED_INTEGER);
5353 copy_die (struct die_info *old_die)
5355 struct die_info *new_die;
5358 new_die = (struct die_info *) xmalloc (sizeof (struct die_info));
5359 memset (new_die, 0, sizeof (struct die_info));
5361 new_die->tag = old_die->tag;
5362 new_die->has_children = old_die->has_children;
5363 new_die->abbrev = old_die->abbrev;
5364 new_die->offset = old_die->offset;
5365 new_die->type = NULL;
5367 num_attrs = old_die->num_attrs;
5368 new_die->num_attrs = num_attrs;
5369 new_die->attrs = (struct attribute *)
5370 xmalloc (num_attrs * sizeof (struct attribute));
5372 for (i = 0; i < old_die->num_attrs; ++i)
5374 new_die->attrs[i].name = old_die->attrs[i].name;
5375 new_die->attrs[i].form = old_die->attrs[i].form;
5376 new_die->attrs[i].u.addr = old_die->attrs[i].u.addr;
5379 new_die->next = NULL;
5384 /* Return sibling of die, NULL if no sibling. */
5386 static struct die_info *
5387 sibling_die (struct die_info *die)
5389 int nesting_level = 0;
5391 if (!die->has_children)
5393 if (die->next && (die->next->tag == 0))
5406 if (die->has_children)
5416 while (nesting_level);
5417 if (die && (die->tag == 0))
5428 /* Get linkage name of a die, return NULL if not found. */
5431 dwarf2_linkage_name (struct die_info *die)
5433 struct attribute *attr;
5435 attr = dwarf_attr (die, DW_AT_MIPS_linkage_name);
5436 if (attr && DW_STRING (attr))
5437 return DW_STRING (attr);
5438 attr = dwarf_attr (die, DW_AT_name);
5439 if (attr && DW_STRING (attr))
5440 return DW_STRING (attr);
5444 /* Convert a DIE tag into its string name. */
5447 dwarf_tag_name (register unsigned tag)
5451 case DW_TAG_padding:
5452 return "DW_TAG_padding";
5453 case DW_TAG_array_type:
5454 return "DW_TAG_array_type";
5455 case DW_TAG_class_type:
5456 return "DW_TAG_class_type";
5457 case DW_TAG_entry_point:
5458 return "DW_TAG_entry_point";
5459 case DW_TAG_enumeration_type:
5460 return "DW_TAG_enumeration_type";
5461 case DW_TAG_formal_parameter:
5462 return "DW_TAG_formal_parameter";
5463 case DW_TAG_imported_declaration:
5464 return "DW_TAG_imported_declaration";
5466 return "DW_TAG_label";
5467 case DW_TAG_lexical_block:
5468 return "DW_TAG_lexical_block";
5470 return "DW_TAG_member";
5471 case DW_TAG_pointer_type:
5472 return "DW_TAG_pointer_type";
5473 case DW_TAG_reference_type:
5474 return "DW_TAG_reference_type";
5475 case DW_TAG_compile_unit:
5476 return "DW_TAG_compile_unit";
5477 case DW_TAG_string_type:
5478 return "DW_TAG_string_type";
5479 case DW_TAG_structure_type:
5480 return "DW_TAG_structure_type";
5481 case DW_TAG_subroutine_type:
5482 return "DW_TAG_subroutine_type";
5483 case DW_TAG_typedef:
5484 return "DW_TAG_typedef";
5485 case DW_TAG_union_type:
5486 return "DW_TAG_union_type";
5487 case DW_TAG_unspecified_parameters:
5488 return "DW_TAG_unspecified_parameters";
5489 case DW_TAG_variant:
5490 return "DW_TAG_variant";
5491 case DW_TAG_common_block:
5492 return "DW_TAG_common_block";
5493 case DW_TAG_common_inclusion:
5494 return "DW_TAG_common_inclusion";
5495 case DW_TAG_inheritance:
5496 return "DW_TAG_inheritance";
5497 case DW_TAG_inlined_subroutine:
5498 return "DW_TAG_inlined_subroutine";
5500 return "DW_TAG_module";
5501 case DW_TAG_ptr_to_member_type:
5502 return "DW_TAG_ptr_to_member_type";
5503 case DW_TAG_set_type:
5504 return "DW_TAG_set_type";
5505 case DW_TAG_subrange_type:
5506 return "DW_TAG_subrange_type";
5507 case DW_TAG_with_stmt:
5508 return "DW_TAG_with_stmt";
5509 case DW_TAG_access_declaration:
5510 return "DW_TAG_access_declaration";
5511 case DW_TAG_base_type:
5512 return "DW_TAG_base_type";
5513 case DW_TAG_catch_block:
5514 return "DW_TAG_catch_block";
5515 case DW_TAG_const_type:
5516 return "DW_TAG_const_type";
5517 case DW_TAG_constant:
5518 return "DW_TAG_constant";
5519 case DW_TAG_enumerator:
5520 return "DW_TAG_enumerator";
5521 case DW_TAG_file_type:
5522 return "DW_TAG_file_type";
5524 return "DW_TAG_friend";
5525 case DW_TAG_namelist:
5526 return "DW_TAG_namelist";
5527 case DW_TAG_namelist_item:
5528 return "DW_TAG_namelist_item";
5529 case DW_TAG_packed_type:
5530 return "DW_TAG_packed_type";
5531 case DW_TAG_subprogram:
5532 return "DW_TAG_subprogram";
5533 case DW_TAG_template_type_param:
5534 return "DW_TAG_template_type_param";
5535 case DW_TAG_template_value_param:
5536 return "DW_TAG_template_value_param";
5537 case DW_TAG_thrown_type:
5538 return "DW_TAG_thrown_type";
5539 case DW_TAG_try_block:
5540 return "DW_TAG_try_block";
5541 case DW_TAG_variant_part:
5542 return "DW_TAG_variant_part";
5543 case DW_TAG_variable:
5544 return "DW_TAG_variable";
5545 case DW_TAG_volatile_type:
5546 return "DW_TAG_volatile_type";
5547 case DW_TAG_dwarf_procedure:
5548 return "DW_TAG_dwarf_procedure";
5549 case DW_TAG_restrict_type:
5550 return "DW_TAG_restrict_type";
5551 case DW_TAG_interface_type:
5552 return "DW_TAG_interface_type";
5553 case DW_TAG_namespace:
5554 return "DW_TAG_namespace";
5555 case DW_TAG_imported_module:
5556 return "DW_TAG_imported_module";
5557 case DW_TAG_unspecified_type:
5558 return "DW_TAG_unspecified_type";
5559 case DW_TAG_partial_unit:
5560 return "DW_TAG_partial_unit";
5561 case DW_TAG_imported_unit:
5562 return "DW_TAG_imported_unit";
5563 case DW_TAG_MIPS_loop:
5564 return "DW_TAG_MIPS_loop";
5565 case DW_TAG_format_label:
5566 return "DW_TAG_format_label";
5567 case DW_TAG_function_template:
5568 return "DW_TAG_function_template";
5569 case DW_TAG_class_template:
5570 return "DW_TAG_class_template";
5572 return "DW_TAG_<unknown>";
5576 /* Convert a DWARF attribute code into its string name. */
5579 dwarf_attr_name (register unsigned attr)
5584 return "DW_AT_sibling";
5585 case DW_AT_location:
5586 return "DW_AT_location";
5588 return "DW_AT_name";
5589 case DW_AT_ordering:
5590 return "DW_AT_ordering";
5591 case DW_AT_subscr_data:
5592 return "DW_AT_subscr_data";
5593 case DW_AT_byte_size:
5594 return "DW_AT_byte_size";
5595 case DW_AT_bit_offset:
5596 return "DW_AT_bit_offset";
5597 case DW_AT_bit_size:
5598 return "DW_AT_bit_size";
5599 case DW_AT_element_list:
5600 return "DW_AT_element_list";
5601 case DW_AT_stmt_list:
5602 return "DW_AT_stmt_list";
5604 return "DW_AT_low_pc";
5606 return "DW_AT_high_pc";
5607 case DW_AT_language:
5608 return "DW_AT_language";
5610 return "DW_AT_member";
5612 return "DW_AT_discr";
5613 case DW_AT_discr_value:
5614 return "DW_AT_discr_value";
5615 case DW_AT_visibility:
5616 return "DW_AT_visibility";
5618 return "DW_AT_import";
5619 case DW_AT_string_length:
5620 return "DW_AT_string_length";
5621 case DW_AT_common_reference:
5622 return "DW_AT_common_reference";
5623 case DW_AT_comp_dir:
5624 return "DW_AT_comp_dir";
5625 case DW_AT_const_value:
5626 return "DW_AT_const_value";
5627 case DW_AT_containing_type:
5628 return "DW_AT_containing_type";
5629 case DW_AT_default_value:
5630 return "DW_AT_default_value";
5632 return "DW_AT_inline";
5633 case DW_AT_is_optional:
5634 return "DW_AT_is_optional";
5635 case DW_AT_lower_bound:
5636 return "DW_AT_lower_bound";
5637 case DW_AT_producer:
5638 return "DW_AT_producer";
5639 case DW_AT_prototyped:
5640 return "DW_AT_prototyped";
5641 case DW_AT_return_addr:
5642 return "DW_AT_return_addr";
5643 case DW_AT_start_scope:
5644 return "DW_AT_start_scope";
5645 case DW_AT_stride_size:
5646 return "DW_AT_stride_size";
5647 case DW_AT_upper_bound:
5648 return "DW_AT_upper_bound";
5649 case DW_AT_abstract_origin:
5650 return "DW_AT_abstract_origin";
5651 case DW_AT_accessibility:
5652 return "DW_AT_accessibility";
5653 case DW_AT_address_class:
5654 return "DW_AT_address_class";
5655 case DW_AT_artificial:
5656 return "DW_AT_artificial";
5657 case DW_AT_base_types:
5658 return "DW_AT_base_types";
5659 case DW_AT_calling_convention:
5660 return "DW_AT_calling_convention";
5662 return "DW_AT_count";
5663 case DW_AT_data_member_location:
5664 return "DW_AT_data_member_location";
5665 case DW_AT_decl_column:
5666 return "DW_AT_decl_column";
5667 case DW_AT_decl_file:
5668 return "DW_AT_decl_file";
5669 case DW_AT_decl_line:
5670 return "DW_AT_decl_line";
5671 case DW_AT_declaration:
5672 return "DW_AT_declaration";
5673 case DW_AT_discr_list:
5674 return "DW_AT_discr_list";
5675 case DW_AT_encoding:
5676 return "DW_AT_encoding";
5677 case DW_AT_external:
5678 return "DW_AT_external";
5679 case DW_AT_frame_base:
5680 return "DW_AT_frame_base";
5682 return "DW_AT_friend";
5683 case DW_AT_identifier_case:
5684 return "DW_AT_identifier_case";
5685 case DW_AT_macro_info:
5686 return "DW_AT_macro_info";
5687 case DW_AT_namelist_items:
5688 return "DW_AT_namelist_items";
5689 case DW_AT_priority:
5690 return "DW_AT_priority";
5692 return "DW_AT_segment";
5693 case DW_AT_specification:
5694 return "DW_AT_specification";
5695 case DW_AT_static_link:
5696 return "DW_AT_static_link";
5698 return "DW_AT_type";
5699 case DW_AT_use_location:
5700 return "DW_AT_use_location";
5701 case DW_AT_variable_parameter:
5702 return "DW_AT_variable_parameter";
5703 case DW_AT_virtuality:
5704 return "DW_AT_virtuality";
5705 case DW_AT_vtable_elem_location:
5706 return "DW_AT_vtable_elem_location";
5707 case DW_AT_allocated:
5708 return "DW_AT_allocated";
5709 case DW_AT_associated:
5710 return "DW_AT_associated";
5711 case DW_AT_data_location:
5712 return "DW_AT_data_location";
5714 return "DW_AT_stride";
5715 case DW_AT_entry_pc:
5716 return "DW_AT_entry_pc";
5717 case DW_AT_use_UTF8:
5718 return "DW_AT_use_UTF8";
5719 case DW_AT_extension:
5720 return "DW_AT_extension";
5722 return "DW_AT_ranges";
5723 case DW_AT_trampoline:
5724 return "DW_AT_trampoline";
5725 case DW_AT_call_column:
5726 return "DW_AT_call_column";
5727 case DW_AT_call_file:
5728 return "DW_AT_call_file";
5729 case DW_AT_call_line:
5730 return "DW_AT_call_line";
5732 case DW_AT_MIPS_fde:
5733 return "DW_AT_MIPS_fde";
5734 case DW_AT_MIPS_loop_begin:
5735 return "DW_AT_MIPS_loop_begin";
5736 case DW_AT_MIPS_tail_loop_begin:
5737 return "DW_AT_MIPS_tail_loop_begin";
5738 case DW_AT_MIPS_epilog_begin:
5739 return "DW_AT_MIPS_epilog_begin";
5740 case DW_AT_MIPS_loop_unroll_factor:
5741 return "DW_AT_MIPS_loop_unroll_factor";
5742 case DW_AT_MIPS_software_pipeline_depth:
5743 return "DW_AT_MIPS_software_pipeline_depth";
5744 case DW_AT_MIPS_linkage_name:
5745 return "DW_AT_MIPS_linkage_name";
5748 case DW_AT_sf_names:
5749 return "DW_AT_sf_names";
5750 case DW_AT_src_info:
5751 return "DW_AT_src_info";
5752 case DW_AT_mac_info:
5753 return "DW_AT_mac_info";
5754 case DW_AT_src_coords:
5755 return "DW_AT_src_coords";
5756 case DW_AT_body_begin:
5757 return "DW_AT_body_begin";
5758 case DW_AT_body_end:
5759 return "DW_AT_body_end";
5760 case DW_AT_GNU_vector:
5761 return "DW_AT_GNU_vector";
5763 return "DW_AT_<unknown>";
5767 /* Convert a DWARF value form code into its string name. */
5770 dwarf_form_name (register unsigned form)
5775 return "DW_FORM_addr";
5776 case DW_FORM_block2:
5777 return "DW_FORM_block2";
5778 case DW_FORM_block4:
5779 return "DW_FORM_block4";
5781 return "DW_FORM_data2";
5783 return "DW_FORM_data4";
5785 return "DW_FORM_data8";
5786 case DW_FORM_string:
5787 return "DW_FORM_string";
5789 return "DW_FORM_block";
5790 case DW_FORM_block1:
5791 return "DW_FORM_block1";
5793 return "DW_FORM_data1";
5795 return "DW_FORM_flag";
5797 return "DW_FORM_sdata";
5799 return "DW_FORM_strp";
5801 return "DW_FORM_udata";
5802 case DW_FORM_ref_addr:
5803 return "DW_FORM_ref_addr";
5805 return "DW_FORM_ref1";
5807 return "DW_FORM_ref2";
5809 return "DW_FORM_ref4";
5811 return "DW_FORM_ref8";
5812 case DW_FORM_ref_udata:
5813 return "DW_FORM_ref_udata";
5814 case DW_FORM_indirect:
5815 return "DW_FORM_indirect";
5817 return "DW_FORM_<unknown>";
5821 /* Convert a DWARF stack opcode into its string name. */
5824 dwarf_stack_op_name (register unsigned op)
5829 return "DW_OP_addr";
5831 return "DW_OP_deref";
5833 return "DW_OP_const1u";
5835 return "DW_OP_const1s";
5837 return "DW_OP_const2u";
5839 return "DW_OP_const2s";
5841 return "DW_OP_const4u";
5843 return "DW_OP_const4s";
5845 return "DW_OP_const8u";
5847 return "DW_OP_const8s";
5849 return "DW_OP_constu";
5851 return "DW_OP_consts";
5855 return "DW_OP_drop";
5857 return "DW_OP_over";
5859 return "DW_OP_pick";
5861 return "DW_OP_swap";
5865 return "DW_OP_xderef";
5873 return "DW_OP_minus";
5885 return "DW_OP_plus";
5886 case DW_OP_plus_uconst:
5887 return "DW_OP_plus_uconst";
5893 return "DW_OP_shra";
5911 return "DW_OP_skip";
5913 return "DW_OP_lit0";
5915 return "DW_OP_lit1";
5917 return "DW_OP_lit2";
5919 return "DW_OP_lit3";
5921 return "DW_OP_lit4";
5923 return "DW_OP_lit5";
5925 return "DW_OP_lit6";
5927 return "DW_OP_lit7";
5929 return "DW_OP_lit8";
5931 return "DW_OP_lit9";
5933 return "DW_OP_lit10";
5935 return "DW_OP_lit11";
5937 return "DW_OP_lit12";
5939 return "DW_OP_lit13";
5941 return "DW_OP_lit14";
5943 return "DW_OP_lit15";
5945 return "DW_OP_lit16";
5947 return "DW_OP_lit17";
5949 return "DW_OP_lit18";
5951 return "DW_OP_lit19";
5953 return "DW_OP_lit20";
5955 return "DW_OP_lit21";
5957 return "DW_OP_lit22";
5959 return "DW_OP_lit23";
5961 return "DW_OP_lit24";
5963 return "DW_OP_lit25";
5965 return "DW_OP_lit26";
5967 return "DW_OP_lit27";
5969 return "DW_OP_lit28";
5971 return "DW_OP_lit29";
5973 return "DW_OP_lit30";
5975 return "DW_OP_lit31";
5977 return "DW_OP_reg0";
5979 return "DW_OP_reg1";
5981 return "DW_OP_reg2";
5983 return "DW_OP_reg3";
5985 return "DW_OP_reg4";
5987 return "DW_OP_reg5";
5989 return "DW_OP_reg6";
5991 return "DW_OP_reg7";
5993 return "DW_OP_reg8";
5995 return "DW_OP_reg9";
5997 return "DW_OP_reg10";
5999 return "DW_OP_reg11";
6001 return "DW_OP_reg12";
6003 return "DW_OP_reg13";
6005 return "DW_OP_reg14";
6007 return "DW_OP_reg15";
6009 return "DW_OP_reg16";
6011 return "DW_OP_reg17";
6013 return "DW_OP_reg18";
6015 return "DW_OP_reg19";
6017 return "DW_OP_reg20";
6019 return "DW_OP_reg21";
6021 return "DW_OP_reg22";
6023 return "DW_OP_reg23";
6025 return "DW_OP_reg24";
6027 return "DW_OP_reg25";
6029 return "DW_OP_reg26";
6031 return "DW_OP_reg27";
6033 return "DW_OP_reg28";
6035 return "DW_OP_reg29";
6037 return "DW_OP_reg30";
6039 return "DW_OP_reg31";
6041 return "DW_OP_breg0";
6043 return "DW_OP_breg1";
6045 return "DW_OP_breg2";
6047 return "DW_OP_breg3";
6049 return "DW_OP_breg4";
6051 return "DW_OP_breg5";
6053 return "DW_OP_breg6";
6055 return "DW_OP_breg7";
6057 return "DW_OP_breg8";
6059 return "DW_OP_breg9";
6061 return "DW_OP_breg10";
6063 return "DW_OP_breg11";
6065 return "DW_OP_breg12";
6067 return "DW_OP_breg13";
6069 return "DW_OP_breg14";
6071 return "DW_OP_breg15";
6073 return "DW_OP_breg16";
6075 return "DW_OP_breg17";
6077 return "DW_OP_breg18";
6079 return "DW_OP_breg19";
6081 return "DW_OP_breg20";
6083 return "DW_OP_breg21";
6085 return "DW_OP_breg22";
6087 return "DW_OP_breg23";
6089 return "DW_OP_breg24";
6091 return "DW_OP_breg25";
6093 return "DW_OP_breg26";
6095 return "DW_OP_breg27";
6097 return "DW_OP_breg28";
6099 return "DW_OP_breg29";
6101 return "DW_OP_breg30";
6103 return "DW_OP_breg31";
6105 return "DW_OP_regx";
6107 return "DW_OP_fbreg";
6109 return "DW_OP_bregx";
6111 return "DW_OP_piece";
6112 case DW_OP_deref_size:
6113 return "DW_OP_deref_size";
6114 case DW_OP_xderef_size:
6115 return "DW_OP_xderef_size";
6118 /* DWARF 3 extensions. */
6119 case DW_OP_push_object_address:
6120 return "DW_OP_push_object_address";
6122 return "DW_OP_call2";
6124 return "DW_OP_call4";
6125 case DW_OP_call_ref:
6126 return "DW_OP_call_ref";
6127 /* GNU extensions. */
6128 case DW_OP_GNU_push_tls_address:
6129 return "DW_OP_GNU_push_tls_address";
6131 return "OP_<unknown>";
6136 dwarf_bool_name (unsigned mybool)
6144 /* Convert a DWARF type code into its string name. */
6147 dwarf_type_encoding_name (register unsigned enc)
6151 case DW_ATE_address:
6152 return "DW_ATE_address";
6153 case DW_ATE_boolean:
6154 return "DW_ATE_boolean";
6155 case DW_ATE_complex_float:
6156 return "DW_ATE_complex_float";
6158 return "DW_ATE_float";
6160 return "DW_ATE_signed";
6161 case DW_ATE_signed_char:
6162 return "DW_ATE_signed_char";
6163 case DW_ATE_unsigned:
6164 return "DW_ATE_unsigned";
6165 case DW_ATE_unsigned_char:
6166 return "DW_ATE_unsigned_char";
6167 case DW_ATE_imaginary_float:
6168 return "DW_ATE_imaginary_float";
6170 return "DW_ATE_<unknown>";
6174 /* Convert a DWARF call frame info operation to its string name. */
6178 dwarf_cfi_name (register unsigned cfi_opc)
6182 case DW_CFA_advance_loc:
6183 return "DW_CFA_advance_loc";
6185 return "DW_CFA_offset";
6186 case DW_CFA_restore:
6187 return "DW_CFA_restore";
6189 return "DW_CFA_nop";
6190 case DW_CFA_set_loc:
6191 return "DW_CFA_set_loc";
6192 case DW_CFA_advance_loc1:
6193 return "DW_CFA_advance_loc1";
6194 case DW_CFA_advance_loc2:
6195 return "DW_CFA_advance_loc2";
6196 case DW_CFA_advance_loc4:
6197 return "DW_CFA_advance_loc4";
6198 case DW_CFA_offset_extended:
6199 return "DW_CFA_offset_extended";
6200 case DW_CFA_restore_extended:
6201 return "DW_CFA_restore_extended";
6202 case DW_CFA_undefined:
6203 return "DW_CFA_undefined";
6204 case DW_CFA_same_value:
6205 return "DW_CFA_same_value";
6206 case DW_CFA_register:
6207 return "DW_CFA_register";
6208 case DW_CFA_remember_state:
6209 return "DW_CFA_remember_state";
6210 case DW_CFA_restore_state:
6211 return "DW_CFA_restore_state";
6212 case DW_CFA_def_cfa:
6213 return "DW_CFA_def_cfa";
6214 case DW_CFA_def_cfa_register:
6215 return "DW_CFA_def_cfa_register";
6216 case DW_CFA_def_cfa_offset:
6217 return "DW_CFA_def_cfa_offset";
6220 case DW_CFA_def_cfa_expression:
6221 return "DW_CFA_def_cfa_expression";
6222 case DW_CFA_expression:
6223 return "DW_CFA_expression";
6224 case DW_CFA_offset_extended_sf:
6225 return "DW_CFA_offset_extended_sf";
6226 case DW_CFA_def_cfa_sf:
6227 return "DW_CFA_def_cfa_sf";
6228 case DW_CFA_def_cfa_offset_sf:
6229 return "DW_CFA_def_cfa_offset_sf";
6231 /* SGI/MIPS specific */
6232 case DW_CFA_MIPS_advance_loc8:
6233 return "DW_CFA_MIPS_advance_loc8";
6235 /* GNU extensions */
6236 case DW_CFA_GNU_window_save:
6237 return "DW_CFA_GNU_window_save";
6238 case DW_CFA_GNU_args_size:
6239 return "DW_CFA_GNU_args_size";
6240 case DW_CFA_GNU_negative_offset_extended:
6241 return "DW_CFA_GNU_negative_offset_extended";
6244 return "DW_CFA_<unknown>";
6250 dump_die (struct die_info *die)
6254 fprintf_unfiltered (gdb_stderr, "Die: %s (abbrev = %d, offset = %d)\n",
6255 dwarf_tag_name (die->tag), die->abbrev, die->offset);
6256 fprintf_unfiltered (gdb_stderr, "\thas children: %s\n",
6257 dwarf_bool_name (die->has_children));
6259 fprintf_unfiltered (gdb_stderr, "\tattributes:\n");
6260 for (i = 0; i < die->num_attrs; ++i)
6262 fprintf_unfiltered (gdb_stderr, "\t\t%s (%s) ",
6263 dwarf_attr_name (die->attrs[i].name),
6264 dwarf_form_name (die->attrs[i].form));
6265 switch (die->attrs[i].form)
6267 case DW_FORM_ref_addr:
6269 fprintf_unfiltered (gdb_stderr, "address: ");
6270 print_address_numeric (DW_ADDR (&die->attrs[i]), 1, gdb_stderr);
6272 case DW_FORM_block2:
6273 case DW_FORM_block4:
6275 case DW_FORM_block1:
6276 fprintf_unfiltered (gdb_stderr, "block: size %d", DW_BLOCK (&die->attrs[i])->size);
6287 fprintf_unfiltered (gdb_stderr, "constant: %ld", DW_UNSND (&die->attrs[i]));
6289 case DW_FORM_string:
6291 fprintf_unfiltered (gdb_stderr, "string: \"%s\"",
6292 DW_STRING (&die->attrs[i])
6293 ? DW_STRING (&die->attrs[i]) : "");
6296 if (DW_UNSND (&die->attrs[i]))
6297 fprintf_unfiltered (gdb_stderr, "flag: TRUE");
6299 fprintf_unfiltered (gdb_stderr, "flag: FALSE");
6301 case DW_FORM_indirect:
6302 /* the reader will have reduced the indirect form to
6303 the "base form" so this form should not occur */
6304 fprintf_unfiltered (gdb_stderr, "unexpected attribute form: DW_FORM_indirect");
6307 fprintf_unfiltered (gdb_stderr, "unsupported attribute form: %d.",
6308 die->attrs[i].form);
6310 fprintf_unfiltered (gdb_stderr, "\n");
6315 dump_die_list (struct die_info *die)
6325 store_in_ref_table (unsigned int offset, struct die_info *die)
6328 struct die_info *old;
6330 h = (offset % REF_HASH_SIZE);
6331 old = die_ref_table[h];
6332 die->next_ref = old;
6333 die_ref_table[h] = die;
6338 dwarf2_empty_hash_tables (void)
6340 memset (die_ref_table, 0, sizeof (die_ref_table));
6344 dwarf2_get_ref_die_offset (struct attribute *attr)
6346 unsigned int result = 0;
6350 case DW_FORM_ref_addr:
6351 result = DW_ADDR (attr);
6357 case DW_FORM_ref_udata:
6358 result = cu_header_offset + DW_UNSND (attr);
6361 complaint (&symfile_complaints,
6362 "unsupported die ref attribute form: '%s'",
6363 dwarf_form_name (attr->form));
6368 static struct die_info *
6369 follow_die_ref (unsigned int offset)
6371 struct die_info *die;
6374 h = (offset % REF_HASH_SIZE);
6375 die = die_ref_table[h];
6378 if (die->offset == offset)
6382 die = die->next_ref;
6387 static struct type *
6388 dwarf2_fundamental_type (struct objfile *objfile, int typeid)
6390 if (typeid < 0 || typeid >= FT_NUM_MEMBERS)
6392 error ("Dwarf Error: internal error - invalid fundamental type id %d.",
6396 /* Look for this particular type in the fundamental type vector. If
6397 one is not found, create and install one appropriate for the
6398 current language and the current target machine. */
6400 if (ftypes[typeid] == NULL)
6402 ftypes[typeid] = cu_language_defn->la_fund_type (objfile, typeid);
6405 return (ftypes[typeid]);
6408 /* Decode simple location descriptions.
6409 Given a pointer to a dwarf block that defines a location, compute
6410 the location and return the value.
6412 FIXME: This is a kludge until we figure out a better
6413 way to handle the location descriptions.
6414 Gdb's design does not mesh well with the DWARF2 notion of a location
6415 computing interpreter, which is a shame because the flexibility goes unused.
6416 FIXME: Implement more operations as necessary.
6418 A location description containing no operations indicates that the
6419 object is optimized out. The global optimized_out flag is set for
6420 those, the return value is meaningless.
6422 When the result is a register number, the global isreg flag is set,
6423 otherwise it is cleared.
6425 When the result is a base register offset, the global offreg flag is set
6426 and the register number is returned in basereg, otherwise it is cleared.
6428 When the DW_OP_fbreg operation is encountered without a corresponding
6429 DW_AT_frame_base attribute, the global islocal flag is set.
6430 Hopefully the machine dependent code knows how to set up a virtual
6431 frame pointer for the local references.
6433 Note that stack[0] is unused except as a default error return.
6434 Note that stack overflow is not yet handled. */
6437 decode_locdesc (struct dwarf_block *blk, struct objfile *objfile,
6438 const struct comp_unit_head *cu_header)
6441 int size = blk->size;
6442 char *data = blk->data;
6443 CORE_ADDR stack[64];
6445 unsigned int bytes_read, unsnd;
6455 is_thread_local = 0;
6496 stack[++stacki] = op - DW_OP_lit0;
6532 stack[++stacki] = op - DW_OP_reg0;
6537 unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
6539 stack[++stacki] = unsnd;
6575 basereg = op - DW_OP_breg0;
6576 stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
6582 basereg = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
6584 stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
6589 stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
6591 if (frame_base_reg >= 0)
6594 basereg = frame_base_reg;
6595 stack[stacki] += frame_base_offset;
6599 complaint (&symfile_complaints,
6600 "DW_AT_frame_base missing for DW_OP_fbreg");
6606 stack[++stacki] = read_address (objfile->obfd, &data[i],
6607 cu_header, &bytes_read);
6612 stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
6617 stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
6622 stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
6627 stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
6632 stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
6637 stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
6642 stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
6648 stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
6653 stack[stacki + 1] = stack[stacki];
6658 stack[stacki - 1] += stack[stacki];
6662 case DW_OP_plus_uconst:
6663 stack[stacki] += read_unsigned_leb128 (NULL, (data + i), &bytes_read);
6668 stack[stacki - 1] -= stack[stacki];
6674 /* If we're not the last op, then we definitely can't encode
6675 this using GDB's address_class enum. */
6677 dwarf2_complex_location_expr_complaint ();
6680 case DW_OP_GNU_push_tls_address:
6681 is_thread_local = 1;
6682 /* The top of the stack has the offset from the beginning
6683 of the thread control block at which the variable is located. */
6684 /* Nothing should follow this operator, so the top of stack would
6687 dwarf2_complex_location_expr_complaint ();
6691 complaint (&symfile_complaints, "unsupported stack op: '%s'",
6692 dwarf_stack_op_name (op));
6693 return (stack[stacki]);
6696 return (stack[stacki]);
6699 /* memory allocation interface */
6703 dwarf2_free_tmp_obstack (PTR ignore)
6705 obstack_free (&dwarf2_tmp_obstack, NULL);
6708 static struct dwarf_block *
6709 dwarf_alloc_block (void)
6711 struct dwarf_block *blk;
6713 blk = (struct dwarf_block *)
6714 obstack_alloc (&dwarf2_tmp_obstack, sizeof (struct dwarf_block));
6718 static struct abbrev_info *
6719 dwarf_alloc_abbrev (void)
6721 struct abbrev_info *abbrev;
6723 abbrev = (struct abbrev_info *) xmalloc (sizeof (struct abbrev_info));
6724 memset (abbrev, 0, sizeof (struct abbrev_info));
6728 static struct die_info *
6729 dwarf_alloc_die (void)
6731 struct die_info *die;
6733 die = (struct die_info *) xmalloc (sizeof (struct die_info));
6734 memset (die, 0, sizeof (struct die_info));
6739 /* Macro support. */
6742 /* Return the full name of file number I in *LH's file name table.
6743 Use COMP_DIR as the name of the current directory of the
6744 compilation. The result is allocated using xmalloc; the caller is
6745 responsible for freeing it. */
6747 file_full_name (int file, struct line_header *lh, const char *comp_dir)
6749 struct file_entry *fe = &lh->file_names[file - 1];
6751 if (IS_ABSOLUTE_PATH (fe->name))
6752 return xstrdup (fe->name);
6760 dir = lh->include_dirs[fe->dir_index - 1];
6766 dir_len = strlen (dir);
6767 full_name = xmalloc (dir_len + 1 + strlen (fe->name) + 1);
6768 strcpy (full_name, dir);
6769 full_name[dir_len] = '/';
6770 strcpy (full_name + dir_len + 1, fe->name);
6774 return xstrdup (fe->name);
6779 static struct macro_source_file *
6780 macro_start_file (int file, int line,
6781 struct macro_source_file *current_file,
6782 const char *comp_dir,
6783 struct line_header *lh, struct objfile *objfile)
6785 /* The full name of this source file. */
6786 char *full_name = file_full_name (file, lh, comp_dir);
6788 /* We don't create a macro table for this compilation unit
6789 at all until we actually get a filename. */
6790 if (! pending_macros)
6791 pending_macros = new_macro_table (&objfile->symbol_obstack,
6792 objfile->macro_cache);
6795 /* If we have no current file, then this must be the start_file
6796 directive for the compilation unit's main source file. */
6797 current_file = macro_set_main (pending_macros, full_name);
6799 current_file = macro_include (current_file, line, full_name);
6803 return current_file;
6807 /* Copy the LEN characters at BUF to a xmalloc'ed block of memory,
6808 followed by a null byte. */
6810 copy_string (const char *buf, int len)
6812 char *s = xmalloc (len + 1);
6813 memcpy (s, buf, len);
6821 consume_improper_spaces (const char *p, const char *body)
6825 complaint (&symfile_complaints,
6826 "macro definition contains spaces in formal argument list:\n`%s'",
6838 parse_macro_definition (struct macro_source_file *file, int line,
6843 /* The body string takes one of two forms. For object-like macro
6844 definitions, it should be:
6846 <macro name> " " <definition>
6848 For function-like macro definitions, it should be:
6850 <macro name> "() " <definition>
6852 <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
6854 Spaces may appear only where explicitly indicated, and in the
6857 The Dwarf 2 spec says that an object-like macro's name is always
6858 followed by a space, but versions of GCC around March 2002 omit
6859 the space when the macro's definition is the empty string.
6861 The Dwarf 2 spec says that there should be no spaces between the
6862 formal arguments in a function-like macro's formal argument list,
6863 but versions of GCC around March 2002 include spaces after the
6867 /* Find the extent of the macro name. The macro name is terminated
6868 by either a space or null character (for an object-like macro) or
6869 an opening paren (for a function-like macro). */
6870 for (p = body; *p; p++)
6871 if (*p == ' ' || *p == '(')
6874 if (*p == ' ' || *p == '\0')
6876 /* It's an object-like macro. */
6877 int name_len = p - body;
6878 char *name = copy_string (body, name_len);
6879 const char *replacement;
6882 replacement = body + name_len + 1;
6885 dwarf2_macro_malformed_definition_complaint (body);
6886 replacement = body + name_len;
6889 macro_define_object (file, line, name, replacement);
6895 /* It's a function-like macro. */
6896 char *name = copy_string (body, p - body);
6899 char **argv = xmalloc (argv_size * sizeof (*argv));
6903 p = consume_improper_spaces (p, body);
6905 /* Parse the formal argument list. */
6906 while (*p && *p != ')')
6908 /* Find the extent of the current argument name. */
6909 const char *arg_start = p;
6911 while (*p && *p != ',' && *p != ')' && *p != ' ')
6914 if (! *p || p == arg_start)
6915 dwarf2_macro_malformed_definition_complaint (body);
6918 /* Make sure argv has room for the new argument. */
6919 if (argc >= argv_size)
6922 argv = xrealloc (argv, argv_size * sizeof (*argv));
6925 argv[argc++] = copy_string (arg_start, p - arg_start);
6928 p = consume_improper_spaces (p, body);
6930 /* Consume the comma, if present. */
6935 p = consume_improper_spaces (p, body);
6944 /* Perfectly formed definition, no complaints. */
6945 macro_define_function (file, line, name,
6946 argc, (const char **) argv,
6948 else if (*p == '\0')
6950 /* Complain, but do define it. */
6951 dwarf2_macro_malformed_definition_complaint (body);
6952 macro_define_function (file, line, name,
6953 argc, (const char **) argv,
6957 /* Just complain. */
6958 dwarf2_macro_malformed_definition_complaint (body);
6961 /* Just complain. */
6962 dwarf2_macro_malformed_definition_complaint (body);
6968 for (i = 0; i < argc; i++)
6974 dwarf2_macro_malformed_definition_complaint (body);
6979 dwarf_decode_macros (struct line_header *lh, unsigned int offset,
6980 char *comp_dir, bfd *abfd,
6981 const struct comp_unit_head *cu_header,
6982 struct objfile *objfile)
6984 char *mac_ptr, *mac_end;
6985 struct macro_source_file *current_file = 0;
6987 if (dwarf_macinfo_buffer == NULL)
6989 complaint (&symfile_complaints, "missing .debug_macinfo section");
6993 mac_ptr = dwarf_macinfo_buffer + offset;
6994 mac_end = dwarf_macinfo_buffer + dwarf_macinfo_size;
6998 enum dwarf_macinfo_record_type macinfo_type;
7000 /* Do we at least have room for a macinfo type byte? */
7001 if (mac_ptr >= mac_end)
7003 dwarf2_macros_too_long_complaint ();
7007 macinfo_type = read_1_byte (abfd, mac_ptr);
7010 switch (macinfo_type)
7012 /* A zero macinfo type indicates the end of the macro
7017 case DW_MACINFO_define:
7018 case DW_MACINFO_undef:
7024 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
7025 mac_ptr += bytes_read;
7026 body = read_string (abfd, mac_ptr, &bytes_read);
7027 mac_ptr += bytes_read;
7030 complaint (&symfile_complaints,
7031 "debug info gives macro %s outside of any file: %s",
7033 DW_MACINFO_define ? "definition" : macinfo_type ==
7034 DW_MACINFO_undef ? "undefinition" :
7035 "something-or-other", body);
7038 if (macinfo_type == DW_MACINFO_define)
7039 parse_macro_definition (current_file, line, body);
7040 else if (macinfo_type == DW_MACINFO_undef)
7041 macro_undef (current_file, line, body);
7046 case DW_MACINFO_start_file:
7051 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
7052 mac_ptr += bytes_read;
7053 file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
7054 mac_ptr += bytes_read;
7056 current_file = macro_start_file (file, line,
7057 current_file, comp_dir,
7062 case DW_MACINFO_end_file:
7064 complaint (&symfile_complaints,
7065 "macro debug info has an unmatched `close_file' directive");
7068 current_file = current_file->included_by;
7071 enum dwarf_macinfo_record_type next_type;
7073 /* GCC circa March 2002 doesn't produce the zero
7074 type byte marking the end of the compilation
7075 unit. Complain if it's not there, but exit no
7078 /* Do we at least have room for a macinfo type byte? */
7079 if (mac_ptr >= mac_end)
7081 dwarf2_macros_too_long_complaint ();
7085 /* We don't increment mac_ptr here, so this is just
7087 next_type = read_1_byte (abfd, mac_ptr);
7089 complaint (&symfile_complaints,
7090 "no terminating 0-type entry for macros in `.debug_macinfo' section");
7097 case DW_MACINFO_vendor_ext:
7103 constant = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
7104 mac_ptr += bytes_read;
7105 string = read_string (abfd, mac_ptr, &bytes_read);
7106 mac_ptr += bytes_read;
7108 /* We don't recognize any vendor extensions. */
7115 /* Check if the attribute's form is a DW_FORM_block*
7116 if so return true else false. */
7118 attr_form_is_block (struct attribute *attr)
7120 return (attr == NULL ? 0 :
7121 attr->form == DW_FORM_block1
7122 || attr->form == DW_FORM_block2
7123 || attr->form == DW_FORM_block4
7124 || attr->form == DW_FORM_block);