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