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