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