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