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