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