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