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