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