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