* dwarf2read.c (dwarf2_add_field): Correctly scale all byte
[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           int byte_offset;
3482
3483           if (attr_form_is_section_offset (attr))
3484             {
3485               dwarf2_complex_location_expr_complaint ();
3486               byte_offset = 0;
3487             }
3488           else if (attr_form_is_constant (attr))
3489             byte_offset = dwarf2_get_attr_constant_value (attr, 0);
3490           else
3491             byte_offset = decode_locdesc (DW_BLOCK (attr), cu);
3492
3493           FIELD_BITPOS (*fp) = byte_offset * bits_per_byte;
3494         }
3495       else
3496         FIELD_BITPOS (*fp) = 0;
3497       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
3498       if (attr)
3499         {
3500           if (BITS_BIG_ENDIAN)
3501             {
3502               /* For big endian bits, the DW_AT_bit_offset gives the
3503                  additional bit offset from the MSB of the containing
3504                  anonymous object to the MSB of the field.  We don't
3505                  have to do anything special since we don't need to
3506                  know the size of the anonymous object.  */
3507               FIELD_BITPOS (*fp) += DW_UNSND (attr);
3508             }
3509           else
3510             {
3511               /* For little endian bits, compute the bit offset to the
3512                  MSB of the anonymous object, subtract off the number of
3513                  bits from the MSB of the field to the MSB of the
3514                  object, and then subtract off the number of bits of
3515                  the field itself.  The result is the bit offset of
3516                  the LSB of the field.  */
3517               int anonymous_size;
3518               int bit_offset = DW_UNSND (attr);
3519
3520               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
3521               if (attr)
3522                 {
3523                   /* The size of the anonymous object containing
3524                      the bit field is explicit, so use the
3525                      indicated size (in bytes).  */
3526                   anonymous_size = DW_UNSND (attr);
3527                 }
3528               else
3529                 {
3530                   /* The size of the anonymous object containing
3531                      the bit field must be inferred from the type
3532                      attribute of the data member containing the
3533                      bit field.  */
3534                   anonymous_size = TYPE_LENGTH (fp->type);
3535                 }
3536               FIELD_BITPOS (*fp) += anonymous_size * bits_per_byte
3537                 - bit_offset - FIELD_BITSIZE (*fp);
3538             }
3539         }
3540
3541       /* Get name of field.  */
3542       fieldname = dwarf2_name (die, cu);
3543       if (fieldname == NULL)
3544         fieldname = "";
3545
3546       /* The name is already allocated along with this objfile, so we don't
3547          need to duplicate it for the type.  */
3548       fp->name = fieldname;
3549
3550       /* Change accessibility for artificial fields (e.g. virtual table
3551          pointer or virtual base class pointer) to private.  */
3552       if (dwarf2_attr (die, DW_AT_artificial, cu))
3553         {
3554           new_field->accessibility = DW_ACCESS_private;
3555           fip->non_public_fields = 1;
3556         }
3557     }
3558   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
3559     {
3560       /* C++ static member.  */
3561
3562       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
3563          is a declaration, but all versions of G++ as of this writing
3564          (so through at least 3.2.1) incorrectly generate
3565          DW_TAG_variable tags.  */
3566       
3567       char *physname;
3568
3569       /* Get name of field.  */
3570       fieldname = dwarf2_name (die, cu);
3571       if (fieldname == NULL)
3572         return;
3573
3574       /* Get physical name.  */
3575       physname = dwarf2_linkage_name (die, cu);
3576
3577       /* The name is already allocated along with this objfile, so we don't
3578          need to duplicate it for the type.  */
3579       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
3580       FIELD_TYPE (*fp) = die_type (die, cu);
3581       FIELD_NAME (*fp) = fieldname;
3582     }
3583   else if (die->tag == DW_TAG_inheritance)
3584     {
3585       /* C++ base class field.  */
3586       attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
3587       if (attr)
3588         FIELD_BITPOS (*fp) = (decode_locdesc (DW_BLOCK (attr), cu)
3589                               * bits_per_byte);
3590       FIELD_BITSIZE (*fp) = 0;
3591       FIELD_STATIC_KIND (*fp) = 0;
3592       FIELD_TYPE (*fp) = die_type (die, cu);
3593       FIELD_NAME (*fp) = type_name_no_tag (fp->type);
3594       fip->nbaseclasses++;
3595     }
3596 }
3597
3598 /* Create the vector of fields, and attach it to the type.  */
3599
3600 static void
3601 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
3602                               struct dwarf2_cu *cu)
3603 {
3604   int nfields = fip->nfields;
3605
3606   /* Record the field count, allocate space for the array of fields,
3607      and create blank accessibility bitfields if necessary.  */
3608   TYPE_NFIELDS (type) = nfields;
3609   TYPE_FIELDS (type) = (struct field *)
3610     TYPE_ALLOC (type, sizeof (struct field) * nfields);
3611   memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
3612
3613   if (fip->non_public_fields)
3614     {
3615       ALLOCATE_CPLUS_STRUCT_TYPE (type);
3616
3617       TYPE_FIELD_PRIVATE_BITS (type) =
3618         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
3619       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
3620
3621       TYPE_FIELD_PROTECTED_BITS (type) =
3622         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
3623       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
3624
3625       TYPE_FIELD_IGNORE_BITS (type) =
3626         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
3627       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
3628     }
3629
3630   /* If the type has baseclasses, allocate and clear a bit vector for
3631      TYPE_FIELD_VIRTUAL_BITS.  */
3632   if (fip->nbaseclasses)
3633     {
3634       int num_bytes = B_BYTES (fip->nbaseclasses);
3635       unsigned char *pointer;
3636
3637       ALLOCATE_CPLUS_STRUCT_TYPE (type);
3638       pointer = TYPE_ALLOC (type, num_bytes);
3639       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
3640       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->nbaseclasses);
3641       TYPE_N_BASECLASSES (type) = fip->nbaseclasses;
3642     }
3643
3644   /* Copy the saved-up fields into the field vector.  Start from the head
3645      of the list, adding to the tail of the field array, so that they end
3646      up in the same order in the array in which they were added to the list.  */
3647   while (nfields-- > 0)
3648     {
3649       TYPE_FIELD (type, nfields) = fip->fields->field;
3650       switch (fip->fields->accessibility)
3651         {
3652         case DW_ACCESS_private:
3653           SET_TYPE_FIELD_PRIVATE (type, nfields);
3654           break;
3655
3656         case DW_ACCESS_protected:
3657           SET_TYPE_FIELD_PROTECTED (type, nfields);
3658           break;
3659
3660         case DW_ACCESS_public:
3661           break;
3662
3663         default:
3664           /* Unknown accessibility.  Complain and treat it as public.  */
3665           {
3666             complaint (&symfile_complaints, _("unsupported accessibility %d"),
3667                        fip->fields->accessibility);
3668           }
3669           break;
3670         }
3671       if (nfields < fip->nbaseclasses)
3672         {
3673           switch (fip->fields->virtuality)
3674             {
3675             case DW_VIRTUALITY_virtual:
3676             case DW_VIRTUALITY_pure_virtual:
3677               SET_TYPE_FIELD_VIRTUAL (type, nfields);
3678               break;
3679             }
3680         }
3681       fip->fields = fip->fields->next;
3682     }
3683 }
3684
3685 /* Add a member function to the proper fieldlist.  */
3686
3687 static void
3688 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
3689                       struct type *type, struct dwarf2_cu *cu)
3690 {
3691   struct objfile *objfile = cu->objfile;
3692   struct attribute *attr;
3693   struct fnfieldlist *flp;
3694   int i;
3695   struct fn_field *fnp;
3696   char *fieldname;
3697   char *physname;
3698   struct nextfnfield *new_fnfield;
3699
3700   /* Get name of member function.  */
3701   fieldname = dwarf2_name (die, cu);
3702   if (fieldname == NULL)
3703     return;
3704
3705   /* Get the mangled name.  */
3706   physname = dwarf2_linkage_name (die, cu);
3707
3708   /* Look up member function name in fieldlist.  */
3709   for (i = 0; i < fip->nfnfields; i++)
3710     {
3711       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
3712         break;
3713     }
3714
3715   /* Create new list element if necessary.  */
3716   if (i < fip->nfnfields)
3717     flp = &fip->fnfieldlists[i];
3718   else
3719     {
3720       if ((fip->nfnfields % DW_FIELD_ALLOC_CHUNK) == 0)
3721         {
3722           fip->fnfieldlists = (struct fnfieldlist *)
3723             xrealloc (fip->fnfieldlists,
3724                       (fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
3725                       * sizeof (struct fnfieldlist));
3726           if (fip->nfnfields == 0)
3727             make_cleanup (free_current_contents, &fip->fnfieldlists);
3728         }
3729       flp = &fip->fnfieldlists[fip->nfnfields];
3730       flp->name = fieldname;
3731       flp->length = 0;
3732       flp->head = NULL;
3733       fip->nfnfields++;
3734     }
3735
3736   /* Create a new member function field and chain it to the field list
3737      entry. */
3738   new_fnfield = (struct nextfnfield *) xmalloc (sizeof (struct nextfnfield));
3739   make_cleanup (xfree, new_fnfield);
3740   memset (new_fnfield, 0, sizeof (struct nextfnfield));
3741   new_fnfield->next = flp->head;
3742   flp->head = new_fnfield;
3743   flp->length++;
3744
3745   /* Fill in the member function field info.  */
3746   fnp = &new_fnfield->fnfield;
3747   /* The name is already allocated along with this objfile, so we don't
3748      need to duplicate it for the type.  */
3749   fnp->physname = physname ? physname : "";
3750   fnp->type = alloc_type (objfile);
3751   if (die->type && TYPE_CODE (die->type) == TYPE_CODE_FUNC)
3752     {
3753       int nparams = TYPE_NFIELDS (die->type);
3754
3755       /* TYPE is the domain of this method, and DIE->TYPE is the type
3756            of the method itself (TYPE_CODE_METHOD).  */
3757       smash_to_method_type (fnp->type, type,
3758                             TYPE_TARGET_TYPE (die->type),
3759                             TYPE_FIELDS (die->type),
3760                             TYPE_NFIELDS (die->type),
3761                             TYPE_VARARGS (die->type));
3762
3763       /* Handle static member functions.
3764          Dwarf2 has no clean way to discern C++ static and non-static
3765          member functions. G++ helps GDB by marking the first
3766          parameter for non-static member functions (which is the
3767          this pointer) as artificial. We obtain this information
3768          from read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
3769       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (die->type, 0) == 0)
3770         fnp->voffset = VOFFSET_STATIC;
3771     }
3772   else
3773     complaint (&symfile_complaints, _("member function type missing for '%s'"),
3774                physname);
3775
3776   /* Get fcontext from DW_AT_containing_type if present.  */
3777   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
3778     fnp->fcontext = die_containing_type (die, cu);
3779
3780   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const
3781      and is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
3782
3783   /* Get accessibility.  */
3784   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
3785   if (attr)
3786     {
3787       switch (DW_UNSND (attr))
3788         {
3789         case DW_ACCESS_private:
3790           fnp->is_private = 1;
3791           break;
3792         case DW_ACCESS_protected:
3793           fnp->is_protected = 1;
3794           break;
3795         }
3796     }
3797
3798   /* Check for artificial methods.  */
3799   attr = dwarf2_attr (die, DW_AT_artificial, cu);
3800   if (attr && DW_UNSND (attr) != 0)
3801     fnp->is_artificial = 1;
3802
3803   /* Get index in virtual function table if it is a virtual member function.  */
3804   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
3805   if (attr)
3806     {
3807       /* Support the .debug_loc offsets */
3808       if (attr_form_is_block (attr))
3809         {
3810           fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
3811         }
3812       else if (attr_form_is_section_offset (attr))
3813         {
3814           dwarf2_complex_location_expr_complaint ();
3815         }
3816       else
3817         {
3818           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
3819                                                  fieldname);
3820         }
3821    }
3822 }
3823
3824 /* Create the vector of member function fields, and attach it to the type.  */
3825
3826 static void
3827 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
3828                                  struct dwarf2_cu *cu)
3829 {
3830   struct fnfieldlist *flp;
3831   int total_length = 0;
3832   int i;
3833
3834   ALLOCATE_CPLUS_STRUCT_TYPE (type);
3835   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
3836     TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields);
3837
3838   for (i = 0, flp = fip->fnfieldlists; i < fip->nfnfields; i++, flp++)
3839     {
3840       struct nextfnfield *nfp = flp->head;
3841       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
3842       int k;
3843
3844       TYPE_FN_FIELDLIST_NAME (type, i) = flp->name;
3845       TYPE_FN_FIELDLIST_LENGTH (type, i) = flp->length;
3846       fn_flp->fn_fields = (struct fn_field *)
3847         TYPE_ALLOC (type, sizeof (struct fn_field) * flp->length);
3848       for (k = flp->length; (k--, nfp); nfp = nfp->next)
3849         fn_flp->fn_fields[k] = nfp->fnfield;
3850
3851       total_length += flp->length;
3852     }
3853
3854   TYPE_NFN_FIELDS (type) = fip->nfnfields;
3855   TYPE_NFN_FIELDS_TOTAL (type) = total_length;
3856 }
3857
3858 /* Returns non-zero if NAME is the name of a vtable member in CU's
3859    language, zero otherwise.  */
3860 static int
3861 is_vtable_name (const char *name, struct dwarf2_cu *cu)
3862 {
3863   static const char vptr[] = "_vptr";
3864   static const char vtable[] = "vtable";
3865
3866   /* Look for the C++ and Java forms of the vtable.  */
3867   if ((cu->language == language_java
3868        && strncmp (name, vtable, sizeof (vtable) - 1) == 0)
3869        || (strncmp (name, vptr, sizeof (vptr) - 1) == 0
3870        && is_cplus_marker (name[sizeof (vptr) - 1])))
3871     return 1;
3872
3873   return 0;
3874 }
3875
3876 /* GCC outputs unnamed structures that are really pointers to member
3877    functions, with the ABI-specified layout.  If DIE (from CU) describes
3878    such a structure, set its type, and return nonzero.  Otherwise return
3879    zero.
3880
3881    GCC shouldn't do this; it should just output pointer to member DIEs.
3882    This is GCC PR debug/28767.  */
3883
3884 static int
3885 quirk_gcc_member_function_pointer (struct die_info *die, struct dwarf2_cu *cu)
3886 {
3887   struct objfile *objfile = cu->objfile;
3888   struct type *type;
3889   struct die_info *pfn_die, *delta_die;
3890   struct attribute *pfn_name, *delta_name;
3891   struct type *pfn_type, *domain_type;
3892
3893   /* Check for a structure with no name and two children.  */
3894   if (die->tag != DW_TAG_structure_type
3895       || dwarf2_attr (die, DW_AT_name, cu) != NULL
3896       || die->child == NULL
3897       || die->child->sibling == NULL
3898       || (die->child->sibling->sibling != NULL
3899           && die->child->sibling->sibling->tag != DW_TAG_padding))
3900     return 0;
3901
3902   /* Check for __pfn and __delta members.  */
3903   pfn_die = die->child;
3904   pfn_name = dwarf2_attr (pfn_die, DW_AT_name, cu);
3905   if (pfn_die->tag != DW_TAG_member
3906       || pfn_name == NULL
3907       || DW_STRING (pfn_name) == NULL
3908       || strcmp ("__pfn", DW_STRING (pfn_name)) != 0)
3909     return 0;
3910
3911   delta_die = pfn_die->sibling;
3912   delta_name = dwarf2_attr (delta_die, DW_AT_name, cu);
3913   if (delta_die->tag != DW_TAG_member
3914       || delta_name == NULL
3915       || DW_STRING (delta_name) == NULL
3916       || strcmp ("__delta", DW_STRING (delta_name)) != 0)
3917     return 0;
3918
3919   /* Find the type of the method.  */
3920   pfn_type = die_type (pfn_die, cu);
3921   if (pfn_type == NULL
3922       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
3923       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
3924     return 0;
3925
3926   /* Look for the "this" argument.  */
3927   pfn_type = TYPE_TARGET_TYPE (pfn_type);
3928   if (TYPE_NFIELDS (pfn_type) == 0
3929       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
3930     return 0;
3931
3932   domain_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
3933   type = alloc_type (objfile);
3934   smash_to_method_type (type, domain_type, TYPE_TARGET_TYPE (pfn_type),
3935                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
3936                         TYPE_VARARGS (pfn_type));
3937   type = lookup_methodptr_type (type);
3938   set_die_type (die, type, cu);
3939
3940   return 1;
3941 }
3942
3943 /* Called when we find the DIE that starts a structure or union scope
3944    (definition) to process all dies that define the members of the
3945    structure or union.
3946
3947    NOTE: we need to call struct_type regardless of whether or not the
3948    DIE has an at_name attribute, since it might be an anonymous
3949    structure or union.  This gets the type entered into our set of
3950    user defined types.
3951
3952    However, if the structure is incomplete (an opaque struct/union)
3953    then suppress creating a symbol table entry for it since gdb only
3954    wants to find the one with the complete definition.  Note that if
3955    it is complete, we just call new_symbol, which does it's own
3956    checking about whether the struct/union is anonymous or not (and
3957    suppresses creating a symbol table entry itself).  */
3958
3959 static void
3960 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
3961 {
3962   struct objfile *objfile = cu->objfile;
3963   struct type *type;
3964   struct attribute *attr;
3965   const char *previous_prefix = processing_current_prefix;
3966   struct cleanup *back_to = NULL;
3967   char *name;
3968
3969   if (die->type)
3970     return;
3971
3972   if (quirk_gcc_member_function_pointer (die, cu))
3973     return;
3974
3975   type = alloc_type (objfile);
3976   INIT_CPLUS_SPECIFIC (type);
3977   name = dwarf2_name (die, cu);
3978   if (name != NULL)
3979     {
3980       if (cu->language == language_cplus
3981           || cu->language == language_java)
3982         {
3983           char *new_prefix = determine_class_name (die, cu);
3984           TYPE_TAG_NAME (type) = obsavestring (new_prefix,
3985                                                strlen (new_prefix),
3986                                                &objfile->objfile_obstack);
3987           back_to = make_cleanup (xfree, new_prefix);
3988           processing_current_prefix = new_prefix;
3989         }
3990       else
3991         {
3992           /* The name is already allocated along with this objfile, so
3993              we don't need to duplicate it for the type.  */
3994           TYPE_TAG_NAME (type) = name;
3995         }
3996     }
3997
3998   if (die->tag == DW_TAG_structure_type)
3999     {
4000       TYPE_CODE (type) = TYPE_CODE_STRUCT;
4001     }
4002   else if (die->tag == DW_TAG_union_type)
4003     {
4004       TYPE_CODE (type) = TYPE_CODE_UNION;
4005     }
4006   else
4007     {
4008       /* FIXME: TYPE_CODE_CLASS is currently defined to TYPE_CODE_STRUCT
4009          in gdbtypes.h.  */
4010       TYPE_CODE (type) = TYPE_CODE_CLASS;
4011     }
4012
4013   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
4014   if (attr)
4015     {
4016       TYPE_LENGTH (type) = DW_UNSND (attr);
4017     }
4018   else
4019     {
4020       TYPE_LENGTH (type) = 0;
4021     }
4022
4023   TYPE_FLAGS (type) |= TYPE_FLAG_STUB_SUPPORTED;
4024   if (die_is_declaration (die, cu))
4025     TYPE_FLAGS (type) |= TYPE_FLAG_STUB;
4026
4027   /* We need to add the type field to the die immediately so we don't
4028      infinitely recurse when dealing with pointers to the structure
4029      type within the structure itself. */
4030   set_die_type (die, type, cu);
4031
4032   if (die->child != NULL && ! die_is_declaration (die, cu))
4033     {
4034       struct field_info fi;
4035       struct die_info *child_die;
4036       struct cleanup *back_to = make_cleanup (null_cleanup, NULL);
4037
4038       memset (&fi, 0, sizeof (struct field_info));
4039
4040       child_die = die->child;
4041
4042       while (child_die && child_die->tag)
4043         {
4044           if (child_die->tag == DW_TAG_member
4045               || child_die->tag == DW_TAG_variable)
4046             {
4047               /* NOTE: carlton/2002-11-05: A C++ static data member
4048                  should be a DW_TAG_member that is a declaration, but
4049                  all versions of G++ as of this writing (so through at
4050                  least 3.2.1) incorrectly generate DW_TAG_variable
4051                  tags for them instead.  */
4052               dwarf2_add_field (&fi, child_die, cu);
4053             }
4054           else if (child_die->tag == DW_TAG_subprogram)
4055             {
4056               /* C++ member function. */
4057               read_type_die (child_die, cu);
4058               dwarf2_add_member_fn (&fi, child_die, type, cu);
4059             }
4060           else if (child_die->tag == DW_TAG_inheritance)
4061             {
4062               /* C++ base class field.  */
4063               dwarf2_add_field (&fi, child_die, cu);
4064             }
4065           child_die = sibling_die (child_die);
4066         }
4067
4068       /* Attach fields and member functions to the type.  */
4069       if (fi.nfields)
4070         dwarf2_attach_fields_to_type (&fi, type, cu);
4071       if (fi.nfnfields)
4072         {
4073           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
4074
4075           /* Get the type which refers to the base class (possibly this
4076              class itself) which contains the vtable pointer for the current
4077              class from the DW_AT_containing_type attribute.  */
4078
4079           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
4080             {
4081               struct type *t = die_containing_type (die, cu);
4082
4083               TYPE_VPTR_BASETYPE (type) = t;
4084               if (type == t)
4085                 {
4086                   int i;
4087
4088                   /* Our own class provides vtbl ptr.  */
4089                   for (i = TYPE_NFIELDS (t) - 1;
4090                        i >= TYPE_N_BASECLASSES (t);
4091                        --i)
4092                     {
4093                       char *fieldname = TYPE_FIELD_NAME (t, i);
4094
4095                       if (is_vtable_name (fieldname, cu))
4096                         {
4097                           TYPE_VPTR_FIELDNO (type) = i;
4098                           break;
4099                         }
4100                     }
4101
4102                   /* Complain if virtual function table field not found.  */
4103                   if (i < TYPE_N_BASECLASSES (t))
4104                     complaint (&symfile_complaints,
4105                                _("virtual function table pointer not found when defining class '%s'"),
4106                                TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
4107                                "");
4108                 }
4109               else
4110                 {
4111                   TYPE_VPTR_FIELDNO (type) = TYPE_VPTR_FIELDNO (t);
4112                 }
4113             }
4114           else if (cu->producer
4115                    && strncmp (cu->producer,
4116                                "IBM(R) XL C/C++ Advanced Edition", 32) == 0)
4117             {
4118               /* The IBM XLC compiler does not provide direct indication
4119                  of the containing type, but the vtable pointer is
4120                  always named __vfp.  */
4121
4122               int i;
4123
4124               for (i = TYPE_NFIELDS (type) - 1;
4125                    i >= TYPE_N_BASECLASSES (type);
4126                    --i)
4127                 {
4128                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
4129                     {
4130                       TYPE_VPTR_FIELDNO (type) = i;
4131                       TYPE_VPTR_BASETYPE (type) = type;
4132                       break;
4133                     }
4134                 }
4135             }
4136         }
4137
4138       do_cleanups (back_to);
4139     }
4140
4141   processing_current_prefix = previous_prefix;
4142   if (back_to != NULL)
4143     do_cleanups (back_to);
4144 }
4145
4146 static void
4147 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
4148 {
4149   struct objfile *objfile = cu->objfile;
4150   const char *previous_prefix = processing_current_prefix;
4151   struct die_info *child_die = die->child;
4152
4153   if (TYPE_TAG_NAME (die->type) != NULL)
4154     processing_current_prefix = TYPE_TAG_NAME (die->type);
4155
4156   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
4157      snapshots) has been known to create a die giving a declaration
4158      for a class that has, as a child, a die giving a definition for a
4159      nested class.  So we have to process our children even if the
4160      current die is a declaration.  Normally, of course, a declaration
4161      won't have any children at all.  */
4162
4163   while (child_die != NULL && child_die->tag)
4164     {
4165       if (child_die->tag == DW_TAG_member
4166           || child_die->tag == DW_TAG_variable
4167           || child_die->tag == DW_TAG_inheritance)
4168         {
4169           /* Do nothing.  */
4170         }
4171       else
4172         process_die (child_die, cu);
4173
4174       child_die = sibling_die (child_die);
4175     }
4176
4177   /* Do not consider external references.  According to the DWARF standard,
4178      these DIEs are identified by the fact that they have no byte_size
4179      attribute, and a declaration attribute.  */
4180   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
4181       || !die_is_declaration (die, cu))
4182     new_symbol (die, die->type, cu);
4183
4184   processing_current_prefix = previous_prefix;
4185 }
4186
4187 /* Given a DW_AT_enumeration_type die, set its type.  We do not
4188    complete the type's fields yet, or create any symbols.  */
4189
4190 static void
4191 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
4192 {
4193   struct objfile *objfile = cu->objfile;
4194   struct type *type;
4195   struct attribute *attr;
4196   char *name;
4197
4198   if (die->type)
4199     return;
4200
4201   type = alloc_type (objfile);
4202
4203   TYPE_CODE (type) = TYPE_CODE_ENUM;
4204   name = dwarf2_name (die, cu);
4205   if (name != NULL)
4206     {
4207       if (processing_has_namespace_info)
4208         {
4209           TYPE_TAG_NAME (type) = typename_concat (&objfile->objfile_obstack,
4210                                                   processing_current_prefix,
4211                                                   name, cu);
4212         }
4213       else
4214         {
4215           /* The name is already allocated along with this objfile, so
4216              we don't need to duplicate it for the type.  */
4217           TYPE_TAG_NAME (type) = name;
4218         }
4219     }
4220
4221   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
4222   if (attr)
4223     {
4224       TYPE_LENGTH (type) = DW_UNSND (attr);
4225     }
4226   else
4227     {
4228       TYPE_LENGTH (type) = 0;
4229     }
4230
4231   set_die_type (die, type, cu);
4232 }
4233
4234 /* Determine the name of the type represented by DIE, which should be
4235    a named C++ or Java compound type.  Return the name in question; the caller
4236    is responsible for xfree()'ing it.  */
4237
4238 static char *
4239 determine_class_name (struct die_info *die, struct dwarf2_cu *cu)
4240 {
4241   struct cleanup *back_to = NULL;
4242   struct die_info *spec_die = die_specification (die, cu);
4243   char *new_prefix = NULL;
4244
4245   /* If this is the definition of a class that is declared by another
4246      die, then processing_current_prefix may not be accurate; see
4247      read_func_scope for a similar example.  */
4248   if (spec_die != NULL)
4249     {
4250       char *specification_prefix = determine_prefix (spec_die, cu);
4251       processing_current_prefix = specification_prefix;
4252       back_to = make_cleanup (xfree, specification_prefix);
4253     }
4254
4255   /* If we don't have namespace debug info, guess the name by trying
4256      to demangle the names of members, just like we did in
4257      guess_structure_name.  */
4258   if (!processing_has_namespace_info)
4259     {
4260       struct die_info *child;
4261
4262       for (child = die->child;
4263            child != NULL && child->tag != 0;
4264            child = sibling_die (child))
4265         {
4266           if (child->tag == DW_TAG_subprogram)
4267             {
4268               new_prefix 
4269                 = language_class_name_from_physname (cu->language_defn,
4270                                                      dwarf2_linkage_name
4271                                                      (child, cu));
4272
4273               if (new_prefix != NULL)
4274                 break;
4275             }
4276         }
4277     }
4278
4279   if (new_prefix == NULL)
4280     {
4281       const char *name = dwarf2_name (die, cu);
4282       new_prefix = typename_concat (NULL, processing_current_prefix,
4283                                     name ? name : "<<anonymous>>", 
4284                                     cu);
4285     }
4286
4287   if (back_to != NULL)
4288     do_cleanups (back_to);
4289
4290   return new_prefix;
4291 }
4292
4293 /* Given a pointer to a die which begins an enumeration, process all
4294    the dies that define the members of the enumeration, and create the
4295    symbol for the enumeration type.
4296
4297    NOTE: We reverse the order of the element list.  */
4298
4299 static void
4300 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
4301 {
4302   struct objfile *objfile = cu->objfile;
4303   struct die_info *child_die;
4304   struct field *fields;
4305   struct symbol *sym;
4306   int num_fields;
4307   int unsigned_enum = 1;
4308   char *name;
4309
4310   num_fields = 0;
4311   fields = NULL;
4312   if (die->child != NULL)
4313     {
4314       child_die = die->child;
4315       while (child_die && child_die->tag)
4316         {
4317           if (child_die->tag != DW_TAG_enumerator)
4318             {
4319               process_die (child_die, cu);
4320             }
4321           else
4322             {
4323               name = dwarf2_name (child_die, cu);
4324               if (name)
4325                 {
4326                   sym = new_symbol (child_die, die->type, cu);
4327                   if (SYMBOL_VALUE (sym) < 0)
4328                     unsigned_enum = 0;
4329
4330                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
4331                     {
4332                       fields = (struct field *)
4333                         xrealloc (fields,
4334                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
4335                                   * sizeof (struct field));
4336                     }
4337
4338                   FIELD_NAME (fields[num_fields]) = DEPRECATED_SYMBOL_NAME (sym);
4339                   FIELD_TYPE (fields[num_fields]) = NULL;
4340                   FIELD_BITPOS (fields[num_fields]) = SYMBOL_VALUE (sym);
4341                   FIELD_BITSIZE (fields[num_fields]) = 0;
4342                   FIELD_STATIC_KIND (fields[num_fields]) = 0;
4343
4344                   num_fields++;
4345                 }
4346             }
4347
4348           child_die = sibling_die (child_die);
4349         }
4350
4351       if (num_fields)
4352         {
4353           TYPE_NFIELDS (die->type) = num_fields;
4354           TYPE_FIELDS (die->type) = (struct field *)
4355             TYPE_ALLOC (die->type, sizeof (struct field) * num_fields);
4356           memcpy (TYPE_FIELDS (die->type), fields,
4357                   sizeof (struct field) * num_fields);
4358           xfree (fields);
4359         }
4360       if (unsigned_enum)
4361         TYPE_FLAGS (die->type) |= TYPE_FLAG_UNSIGNED;
4362     }
4363
4364   new_symbol (die, die->type, cu);
4365 }
4366
4367 /* Extract all information from a DW_TAG_array_type DIE and put it in
4368    the DIE's type field.  For now, this only handles one dimensional
4369    arrays.  */
4370
4371 static void
4372 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
4373 {
4374   struct objfile *objfile = cu->objfile;
4375   struct die_info *child_die;
4376   struct type *type = NULL;
4377   struct type *element_type, *range_type, *index_type;
4378   struct type **range_types = NULL;
4379   struct attribute *attr;
4380   int ndim = 0;
4381   struct cleanup *back_to;
4382   char *name;
4383
4384   /* Return if we've already decoded this type. */
4385   if (die->type)
4386     {
4387       return;
4388     }
4389
4390   element_type = die_type (die, cu);
4391
4392   /* Irix 6.2 native cc creates array types without children for
4393      arrays with unspecified length.  */
4394   if (die->child == NULL)
4395     {
4396       index_type = builtin_type_int32;
4397       range_type = create_range_type (NULL, index_type, 0, -1);
4398       set_die_type (die, create_array_type (NULL, element_type, range_type),
4399                     cu);
4400       return;
4401     }
4402
4403   back_to = make_cleanup (null_cleanup, NULL);
4404   child_die = die->child;
4405   while (child_die && child_die->tag)
4406     {
4407       if (child_die->tag == DW_TAG_subrange_type)
4408         {
4409           read_subrange_type (child_die, cu);
4410
4411           if (child_die->type != NULL)
4412             {
4413               /* The range type was succesfully read. Save it for
4414                  the array type creation.  */
4415               if ((ndim % DW_FIELD_ALLOC_CHUNK) == 0)
4416                 {
4417                   range_types = (struct type **)
4418                     xrealloc (range_types, (ndim + DW_FIELD_ALLOC_CHUNK)
4419                               * sizeof (struct type *));
4420                   if (ndim == 0)
4421                     make_cleanup (free_current_contents, &range_types);
4422                 }
4423               range_types[ndim++] = child_die->type;
4424             }
4425         }
4426       child_die = sibling_die (child_die);
4427     }
4428
4429   /* Dwarf2 dimensions are output from left to right, create the
4430      necessary array types in backwards order.  */
4431
4432   type = element_type;
4433
4434   if (read_array_order (die, cu) == DW_ORD_col_major)
4435     {
4436       int i = 0;
4437       while (i < ndim)
4438         type = create_array_type (NULL, type, range_types[i++]);
4439     }
4440   else
4441     {
4442       while (ndim-- > 0)
4443         type = create_array_type (NULL, type, range_types[ndim]);
4444     }
4445
4446   /* Understand Dwarf2 support for vector types (like they occur on
4447      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
4448      array type.  This is not part of the Dwarf2/3 standard yet, but a
4449      custom vendor extension.  The main difference between a regular
4450      array and the vector variant is that vectors are passed by value
4451      to functions.  */
4452   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
4453   if (attr)
4454     make_vector_type (type);
4455
4456   name = dwarf2_name (die, cu);
4457   if (name)
4458     TYPE_NAME (type) = name;
4459   
4460   do_cleanups (back_to);
4461
4462   /* Install the type in the die. */
4463   set_die_type (die, type, cu);
4464 }
4465
4466 static enum dwarf_array_dim_ordering
4467 read_array_order (struct die_info *die, struct dwarf2_cu *cu) 
4468 {
4469   struct attribute *attr;
4470
4471   attr = dwarf2_attr (die, DW_AT_ordering, cu);
4472
4473   if (attr) return DW_SND (attr);
4474
4475   /*
4476     GNU F77 is a special case, as at 08/2004 array type info is the
4477     opposite order to the dwarf2 specification, but data is still 
4478     laid out as per normal fortran.
4479
4480     FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need 
4481     version checking.
4482   */
4483
4484   if (cu->language == language_fortran &&
4485       cu->producer && strstr (cu->producer, "GNU F77"))
4486     {
4487       return DW_ORD_row_major;
4488     }
4489
4490   switch (cu->language_defn->la_array_ordering) 
4491     {
4492     case array_column_major:
4493       return DW_ORD_col_major;
4494     case array_row_major:
4495     default:
4496       return DW_ORD_row_major;
4497     };
4498 }
4499
4500 /* Extract all information from a DW_TAG_set_type DIE and put it in
4501    the DIE's type field. */
4502
4503 static void
4504 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
4505 {
4506   if (die->type == NULL)
4507     die->type = create_set_type ((struct type *) NULL, die_type (die, cu));
4508 }
4509
4510 /* First cut: install each common block member as a global variable.  */
4511
4512 static void
4513 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
4514 {
4515   struct die_info *child_die;
4516   struct attribute *attr;
4517   struct symbol *sym;
4518   CORE_ADDR base = (CORE_ADDR) 0;
4519
4520   attr = dwarf2_attr (die, DW_AT_location, cu);
4521   if (attr)
4522     {
4523       /* Support the .debug_loc offsets */
4524       if (attr_form_is_block (attr))
4525         {
4526           base = decode_locdesc (DW_BLOCK (attr), cu);
4527         }
4528       else if (attr_form_is_section_offset (attr))
4529         {
4530           dwarf2_complex_location_expr_complaint ();
4531         }
4532       else
4533         {
4534           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
4535                                                  "common block member");
4536         }
4537     }
4538   if (die->child != NULL)
4539     {
4540       child_die = die->child;
4541       while (child_die && child_die->tag)
4542         {
4543           sym = new_symbol (child_die, NULL, cu);
4544           attr = dwarf2_attr (child_die, DW_AT_data_member_location, cu);
4545           if (attr)
4546             {
4547               SYMBOL_VALUE_ADDRESS (sym) =
4548                 base + decode_locdesc (DW_BLOCK (attr), cu);
4549               add_symbol_to_list (sym, &global_symbols);
4550             }
4551           child_die = sibling_die (child_die);
4552         }
4553     }
4554 }
4555
4556 /* Read a C++ namespace.  */
4557
4558 static void
4559 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
4560 {
4561   struct objfile *objfile = cu->objfile;
4562   const char *previous_prefix = processing_current_prefix;
4563   const char *name;
4564   int is_anonymous;
4565   struct die_info *current_die;
4566   struct cleanup *back_to = make_cleanup (null_cleanup, 0);
4567
4568   name = namespace_name (die, &is_anonymous, cu);
4569
4570   /* Now build the name of the current namespace.  */
4571
4572   if (previous_prefix[0] == '\0')
4573     {
4574       processing_current_prefix = name;
4575     }
4576   else
4577     {
4578       char *temp_name = typename_concat (NULL, previous_prefix, name, cu);
4579       make_cleanup (xfree, temp_name);
4580       processing_current_prefix = temp_name;
4581     }
4582
4583   /* Add a symbol associated to this if we haven't seen the namespace
4584      before.  Also, add a using directive if it's an anonymous
4585      namespace.  */
4586
4587   if (dwarf2_extension (die, cu) == NULL)
4588     {
4589       struct type *type;
4590
4591       /* FIXME: carlton/2003-06-27: Once GDB is more const-correct,
4592          this cast will hopefully become unnecessary.  */
4593       type = init_type (TYPE_CODE_NAMESPACE, 0, 0,
4594                         (char *) processing_current_prefix,
4595                         objfile);
4596       TYPE_TAG_NAME (type) = TYPE_NAME (type);
4597
4598       new_symbol (die, type, cu);
4599       set_die_type (die, type, cu);
4600
4601       if (is_anonymous)
4602         cp_add_using_directive (processing_current_prefix,
4603                                 strlen (previous_prefix),
4604                                 strlen (processing_current_prefix));
4605     }
4606
4607   if (die->child != NULL)
4608     {
4609       struct die_info *child_die = die->child;
4610       
4611       while (child_die && child_die->tag)
4612         {
4613           process_die (child_die, cu);
4614           child_die = sibling_die (child_die);
4615         }
4616     }
4617
4618   processing_current_prefix = previous_prefix;
4619   do_cleanups (back_to);
4620 }
4621
4622 /* Return the name of the namespace represented by DIE.  Set
4623    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
4624    namespace.  */
4625
4626 static const char *
4627 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
4628 {
4629   struct die_info *current_die;
4630   const char *name = NULL;
4631
4632   /* Loop through the extensions until we find a name.  */
4633
4634   for (current_die = die;
4635        current_die != NULL;
4636        current_die = dwarf2_extension (die, cu))
4637     {
4638       name = dwarf2_name (current_die, cu);
4639       if (name != NULL)
4640         break;
4641     }
4642
4643   /* Is it an anonymous namespace?  */
4644
4645   *is_anonymous = (name == NULL);
4646   if (*is_anonymous)
4647     name = "(anonymous namespace)";
4648
4649   return name;
4650 }
4651
4652 /* Extract all information from a DW_TAG_pointer_type DIE and add to
4653    the user defined type vector.  */
4654
4655 static void
4656 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
4657 {
4658   struct comp_unit_head *cu_header = &cu->header;
4659   struct type *type;
4660   struct attribute *attr_byte_size;
4661   struct attribute *attr_address_class;
4662   int byte_size, addr_class;
4663
4664   if (die->type)
4665     {
4666       return;
4667     }
4668
4669   type = lookup_pointer_type (die_type (die, cu));
4670
4671   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
4672   if (attr_byte_size)
4673     byte_size = DW_UNSND (attr_byte_size);
4674   else
4675     byte_size = cu_header->addr_size;
4676
4677   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
4678   if (attr_address_class)
4679     addr_class = DW_UNSND (attr_address_class);
4680   else
4681     addr_class = DW_ADDR_none;
4682
4683   /* If the pointer size or address class is different than the
4684      default, create a type variant marked as such and set the
4685      length accordingly.  */
4686   if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
4687     {
4688       if (gdbarch_address_class_type_flags_p (current_gdbarch))
4689         {
4690           int type_flags;
4691
4692           type_flags = gdbarch_address_class_type_flags
4693                          (current_gdbarch, byte_size, addr_class);
4694           gdb_assert ((type_flags & ~TYPE_FLAG_ADDRESS_CLASS_ALL) == 0);
4695           type = make_type_with_address_space (type, type_flags);
4696         }
4697       else if (TYPE_LENGTH (type) != byte_size)
4698         {
4699           complaint (&symfile_complaints, _("invalid pointer size %d"), byte_size);
4700         }
4701       else {
4702         /* Should we also complain about unhandled address classes?  */
4703       }
4704     }
4705
4706   TYPE_LENGTH (type) = byte_size;
4707   set_die_type (die, type, cu);
4708 }
4709
4710 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
4711    the user defined type vector.  */
4712
4713 static void
4714 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
4715 {
4716   struct objfile *objfile = cu->objfile;
4717   struct type *type;
4718   struct type *to_type;
4719   struct type *domain;
4720
4721   if (die->type)
4722     {
4723       return;
4724     }
4725
4726   to_type = die_type (die, cu);
4727   domain = die_containing_type (die, cu);
4728
4729   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
4730     type = lookup_methodptr_type (to_type);
4731   else
4732     type = lookup_memberptr_type (to_type, domain);
4733
4734   set_die_type (die, type, cu);
4735 }
4736
4737 /* Extract all information from a DW_TAG_reference_type DIE and add to
4738    the user defined type vector.  */
4739
4740 static void
4741 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu)
4742 {
4743   struct comp_unit_head *cu_header = &cu->header;
4744   struct type *type;
4745   struct attribute *attr;
4746
4747   if (die->type)
4748     {
4749       return;
4750     }
4751
4752   type = lookup_reference_type (die_type (die, cu));
4753   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
4754   if (attr)
4755     {
4756       TYPE_LENGTH (type) = DW_UNSND (attr);
4757     }
4758   else
4759     {
4760       TYPE_LENGTH (type) = cu_header->addr_size;
4761     }
4762   set_die_type (die, type, cu);
4763 }
4764
4765 static void
4766 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
4767 {
4768   struct type *base_type;
4769
4770   if (die->type)
4771     {
4772       return;
4773     }
4774
4775   base_type = die_type (die, cu);
4776   set_die_type (die, make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0),
4777                 cu);
4778 }
4779
4780 static void
4781 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
4782 {
4783   struct type *base_type;
4784
4785   if (die->type)
4786     {
4787       return;
4788     }
4789
4790   base_type = die_type (die, cu);
4791   set_die_type (die, make_cv_type (TYPE_CONST (base_type), 1, base_type, 0),
4792                 cu);
4793 }
4794
4795 /* Extract all information from a DW_TAG_string_type DIE and add to
4796    the user defined type vector.  It isn't really a user defined type,
4797    but it behaves like one, with other DIE's using an AT_user_def_type
4798    attribute to reference it.  */
4799
4800 static void
4801 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
4802 {
4803   struct objfile *objfile = cu->objfile;
4804   struct type *type, *range_type, *index_type, *char_type;
4805   struct attribute *attr;
4806   unsigned int length;
4807
4808   if (die->type)
4809     {
4810       return;
4811     }
4812
4813   attr = dwarf2_attr (die, DW_AT_string_length, cu);
4814   if (attr)
4815     {
4816       length = DW_UNSND (attr);
4817     }
4818   else
4819     {
4820       /* check for the DW_AT_byte_size attribute */
4821       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
4822       if (attr)
4823         {
4824           length = DW_UNSND (attr);
4825         }
4826       else
4827         {
4828           length = 1;
4829         }
4830     }
4831
4832   index_type = builtin_type_int32;
4833   range_type = create_range_type (NULL, index_type, 1, length);
4834   type = create_string_type (NULL, range_type);
4835
4836   set_die_type (die, type, cu);
4837 }
4838
4839 /* Handle DIES due to C code like:
4840
4841    struct foo
4842    {
4843    int (*funcp)(int a, long l);
4844    int b;
4845    };
4846
4847    ('funcp' generates a DW_TAG_subroutine_type DIE)
4848  */
4849
4850 static void
4851 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
4852 {
4853   struct type *type;            /* Type that this function returns */
4854   struct type *ftype;           /* Function that returns above type */
4855   struct attribute *attr;
4856
4857   /* Decode the type that this subroutine returns */
4858   if (die->type)
4859     {
4860       return;
4861     }
4862   type = die_type (die, cu);
4863   ftype = make_function_type (type, (struct type **) 0);
4864
4865   /* All functions in C++, Pascal and Java have prototypes.  */
4866   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
4867   if ((attr && (DW_UNSND (attr) != 0))
4868       || cu->language == language_cplus
4869       || cu->language == language_java
4870       || cu->language == language_pascal)
4871     TYPE_FLAGS (ftype) |= TYPE_FLAG_PROTOTYPED;
4872
4873   if (die->child != NULL)
4874     {
4875       struct die_info *child_die;
4876       int nparams = 0;
4877       int iparams = 0;
4878
4879       /* Count the number of parameters.
4880          FIXME: GDB currently ignores vararg functions, but knows about
4881          vararg member functions.  */
4882       child_die = die->child;
4883       while (child_die && child_die->tag)
4884         {
4885           if (child_die->tag == DW_TAG_formal_parameter)
4886             nparams++;
4887           else if (child_die->tag == DW_TAG_unspecified_parameters)
4888             TYPE_FLAGS (ftype) |= TYPE_FLAG_VARARGS;
4889           child_die = sibling_die (child_die);
4890         }
4891
4892       /* Allocate storage for parameters and fill them in.  */
4893       TYPE_NFIELDS (ftype) = nparams;
4894       TYPE_FIELDS (ftype) = (struct field *)
4895         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
4896
4897       child_die = die->child;
4898       while (child_die && child_die->tag)
4899         {
4900           if (child_die->tag == DW_TAG_formal_parameter)
4901             {
4902               /* Dwarf2 has no clean way to discern C++ static and non-static
4903                  member functions. G++ helps GDB by marking the first
4904                  parameter for non-static member functions (which is the
4905                  this pointer) as artificial. We pass this information
4906                  to dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.  */
4907               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
4908               if (attr)
4909                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
4910               else
4911                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
4912               TYPE_FIELD_TYPE (ftype, iparams) = die_type (child_die, cu);
4913               iparams++;
4914             }
4915           child_die = sibling_die (child_die);
4916         }
4917     }
4918
4919   set_die_type (die, ftype, cu);
4920 }
4921
4922 static void
4923 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
4924 {
4925   struct objfile *objfile = cu->objfile;
4926   struct attribute *attr;
4927   char *name = NULL;
4928
4929   if (!die->type)
4930     {
4931       name = dwarf2_name (die, cu);
4932       set_die_type (die, init_type (TYPE_CODE_TYPEDEF, 0,
4933                                     TYPE_FLAG_TARGET_STUB, name, objfile),
4934                     cu);
4935       TYPE_TARGET_TYPE (die->type) = die_type (die, cu);
4936     }
4937 }
4938
4939 /* Find a representation of a given base type and install
4940    it in the TYPE field of the die.  */
4941
4942 static void
4943 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
4944 {
4945   struct objfile *objfile = cu->objfile;
4946   struct type *type;
4947   struct attribute *attr;
4948   int encoding = 0, size = 0;
4949   char *name;
4950   enum type_code code = TYPE_CODE_INT;
4951   int type_flags = 0;
4952   struct type *target_type = NULL;
4953
4954   /* If we've already decoded this die, this is a no-op. */
4955   if (die->type)
4956     {
4957       return;
4958     }
4959
4960   attr = dwarf2_attr (die, DW_AT_encoding, cu);
4961   if (attr)
4962     {
4963       encoding = DW_UNSND (attr);
4964     }
4965   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
4966   if (attr)
4967     {
4968       size = DW_UNSND (attr);
4969     }
4970   name = dwarf2_name (die, cu);
4971   if (!name)
4972     {
4973       complaint (&symfile_complaints,
4974                  _("DW_AT_name missing from DW_TAG_base_type"));
4975     }
4976
4977   switch (encoding)
4978     {
4979       case DW_ATE_address:
4980         /* Turn DW_ATE_address into a void * pointer.  */
4981         code = TYPE_CODE_PTR;
4982         type_flags |= TYPE_FLAG_UNSIGNED;
4983         target_type = init_type (TYPE_CODE_VOID, 1, 0, NULL, objfile);
4984         break;
4985       case DW_ATE_boolean:
4986         code = TYPE_CODE_BOOL;
4987         type_flags |= TYPE_FLAG_UNSIGNED;
4988         break;
4989       case DW_ATE_complex_float:
4990         code = TYPE_CODE_COMPLEX;
4991         target_type = init_type (TYPE_CODE_FLT, size / 2, 0, NULL, objfile);
4992         break;
4993       case DW_ATE_decimal_float:
4994         code = TYPE_CODE_DECFLOAT;
4995         break;
4996       case DW_ATE_float:
4997         code = TYPE_CODE_FLT;
4998         break;
4999       case DW_ATE_signed:
5000         break;
5001       case DW_ATE_unsigned:
5002         type_flags |= TYPE_FLAG_UNSIGNED;
5003         break;
5004       case DW_ATE_signed_char:
5005         if (cu->language == language_m2)
5006           code = TYPE_CODE_CHAR;
5007         break;
5008       case DW_ATE_unsigned_char:
5009         if (cu->language == language_m2)
5010           code = TYPE_CODE_CHAR;
5011         type_flags |= TYPE_FLAG_UNSIGNED;
5012         break;
5013       default:
5014         complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"),
5015                    dwarf_type_encoding_name (encoding));
5016         break;
5017     }
5018
5019   type = init_type (code, size, type_flags, name, objfile);
5020   TYPE_TARGET_TYPE (type) = target_type;
5021
5022   set_die_type (die, type, cu);
5023 }
5024
5025 /* Read the given DW_AT_subrange DIE.  */
5026
5027 static void
5028 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
5029 {
5030   struct type *base_type;
5031   struct type *range_type;
5032   struct attribute *attr;
5033   int low = 0;
5034   int high = -1;
5035   char *name;
5036   
5037   /* If we have already decoded this die, then nothing more to do.  */
5038   if (die->type)
5039     return;
5040
5041   base_type = die_type (die, cu);
5042   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
5043     {
5044       complaint (&symfile_complaints,
5045                 _("DW_AT_type missing from DW_TAG_subrange_type"));
5046       base_type
5047         = init_type (TYPE_CODE_INT, gdbarch_addr_bit (current_gdbarch) / 8,
5048                      0, NULL, cu->objfile);
5049     }
5050
5051   if (cu->language == language_fortran)
5052     { 
5053       /* FORTRAN implies a lower bound of 1, if not given.  */
5054       low = 1;
5055     }
5056
5057   /* FIXME: For variable sized arrays either of these could be
5058      a variable rather than a constant value.  We'll allow it,
5059      but we don't know how to handle it.  */
5060   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
5061   if (attr)
5062     low = dwarf2_get_attr_constant_value (attr, 0);
5063
5064   attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
5065   if (attr)
5066     {       
5067       if (attr->form == DW_FORM_block1)
5068         {
5069           /* GCC encodes arrays with unspecified or dynamic length
5070              with a DW_FORM_block1 attribute.
5071              FIXME: GDB does not yet know how to handle dynamic
5072              arrays properly, treat them as arrays with unspecified
5073              length for now.
5074
5075              FIXME: jimb/2003-09-22: GDB does not really know
5076              how to handle arrays of unspecified length
5077              either; we just represent them as zero-length
5078              arrays.  Choose an appropriate upper bound given
5079              the lower bound we've computed above.  */
5080           high = low - 1;
5081         }
5082       else
5083         high = dwarf2_get_attr_constant_value (attr, 1);
5084     }
5085
5086   range_type = create_range_type (NULL, base_type, low, high);
5087
5088   name = dwarf2_name (die, cu);
5089   if (name)
5090     TYPE_NAME (range_type) = name;
5091   
5092   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
5093   if (attr)
5094     TYPE_LENGTH (range_type) = DW_UNSND (attr);
5095
5096   set_die_type (die, range_type, cu);
5097 }
5098   
5099 static void
5100 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
5101 {
5102   struct type *type;
5103
5104   if (die->type)
5105     return;
5106
5107   /* For now, we only support the C meaning of an unspecified type: void.  */
5108
5109   type = init_type (TYPE_CODE_VOID, 0, 0, dwarf2_name (die, cu),
5110                     cu->objfile);
5111
5112   set_die_type (die, type, cu);
5113 }
5114
5115 /* Read a whole compilation unit into a linked list of dies.  */
5116
5117 static struct die_info *
5118 read_comp_unit (gdb_byte *info_ptr, bfd *abfd, struct dwarf2_cu *cu)
5119 {
5120   return read_die_and_children (info_ptr, abfd, cu, &info_ptr, NULL);
5121 }
5122
5123 /* Read a single die and all its descendents.  Set the die's sibling
5124    field to NULL; set other fields in the die correctly, and set all
5125    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
5126    location of the info_ptr after reading all of those dies.  PARENT
5127    is the parent of the die in question.  */
5128
5129 static struct die_info *
5130 read_die_and_children (gdb_byte *info_ptr, bfd *abfd,
5131                        struct dwarf2_cu *cu,
5132                        gdb_byte **new_info_ptr,
5133                        struct die_info *parent)
5134 {
5135   struct die_info *die;
5136   gdb_byte *cur_ptr;
5137   int has_children;
5138
5139   cur_ptr = read_full_die (&die, abfd, info_ptr, cu, &has_children);
5140   store_in_ref_table (die->offset, die, cu);
5141
5142   if (has_children)
5143     {
5144       die->child = read_die_and_siblings (cur_ptr, abfd, cu,
5145                                           new_info_ptr, die);
5146     }
5147   else
5148     {
5149       die->child = NULL;
5150       *new_info_ptr = cur_ptr;
5151     }
5152
5153   die->sibling = NULL;
5154   die->parent = parent;
5155   return die;
5156 }
5157
5158 /* Read a die, all of its descendents, and all of its siblings; set
5159    all of the fields of all of the dies correctly.  Arguments are as
5160    in read_die_and_children.  */
5161
5162 static struct die_info *
5163 read_die_and_siblings (gdb_byte *info_ptr, bfd *abfd,
5164                        struct dwarf2_cu *cu,
5165                        gdb_byte **new_info_ptr,
5166                        struct die_info *parent)
5167 {
5168   struct die_info *first_die, *last_sibling;
5169   gdb_byte *cur_ptr;
5170
5171   cur_ptr = info_ptr;
5172   first_die = last_sibling = NULL;
5173
5174   while (1)
5175     {
5176       struct die_info *die
5177         = read_die_and_children (cur_ptr, abfd, cu, &cur_ptr, parent);
5178
5179       if (!first_die)
5180         {
5181           first_die = die;
5182         }
5183       else
5184         {
5185           last_sibling->sibling = die;
5186         }
5187
5188       if (die->tag == 0)
5189         {
5190           *new_info_ptr = cur_ptr;
5191           return first_die;
5192         }
5193       else
5194         {
5195           last_sibling = die;
5196         }
5197     }
5198 }
5199
5200 /* Free a linked list of dies.  */
5201
5202 static void
5203 free_die_list (struct die_info *dies)
5204 {
5205   struct die_info *die, *next;
5206
5207   die = dies;
5208   while (die)
5209     {
5210       if (die->child != NULL)
5211         free_die_list (die->child);
5212       next = die->sibling;
5213       xfree (die->attrs);
5214       xfree (die);
5215       die = next;
5216     }
5217 }
5218
5219 /* Read the contents of the section at OFFSET and of size SIZE from the
5220    object file specified by OBJFILE into the objfile_obstack and return it.  */
5221
5222 gdb_byte *
5223 dwarf2_read_section (struct objfile *objfile, asection *sectp)
5224 {
5225   bfd *abfd = objfile->obfd;
5226   gdb_byte *buf, *retbuf;
5227   bfd_size_type size = bfd_get_section_size (sectp);
5228
5229   if (size == 0)
5230     return NULL;
5231
5232   buf = obstack_alloc (&objfile->objfile_obstack, size);
5233   retbuf = symfile_relocate_debug_section (abfd, sectp, buf);
5234   if (retbuf != NULL)
5235     return retbuf;
5236
5237   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
5238       || bfd_bread (buf, size, abfd) != size)
5239     error (_("Dwarf Error: Can't read DWARF data from '%s'"),
5240            bfd_get_filename (abfd));
5241
5242   return buf;
5243 }
5244
5245 /* In DWARF version 2, the description of the debugging information is
5246    stored in a separate .debug_abbrev section.  Before we read any
5247    dies from a section we read in all abbreviations and install them
5248    in a hash table.  This function also sets flags in CU describing
5249    the data found in the abbrev table.  */
5250
5251 static void
5252 dwarf2_read_abbrevs (bfd *abfd, struct dwarf2_cu *cu)
5253 {
5254   struct comp_unit_head *cu_header = &cu->header;
5255   gdb_byte *abbrev_ptr;
5256   struct abbrev_info *cur_abbrev;
5257   unsigned int abbrev_number, bytes_read, abbrev_name;
5258   unsigned int abbrev_form, hash_number;
5259   struct attr_abbrev *cur_attrs;
5260   unsigned int allocated_attrs;
5261
5262   /* Initialize dwarf2 abbrevs */
5263   obstack_init (&cu->abbrev_obstack);
5264   cu->dwarf2_abbrevs = obstack_alloc (&cu->abbrev_obstack,
5265                                       (ABBREV_HASH_SIZE
5266                                        * sizeof (struct abbrev_info *)));
5267   memset (cu->dwarf2_abbrevs, 0,
5268           ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
5269
5270   abbrev_ptr = dwarf2_per_objfile->abbrev_buffer + cu_header->abbrev_offset;
5271   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
5272   abbrev_ptr += bytes_read;
5273
5274   allocated_attrs = ATTR_ALLOC_CHUNK;
5275   cur_attrs = xmalloc (allocated_attrs * sizeof (struct attr_abbrev));
5276   
5277   /* loop until we reach an abbrev number of 0 */
5278   while (abbrev_number)
5279     {
5280       cur_abbrev = dwarf_alloc_abbrev (cu);
5281
5282       /* read in abbrev header */
5283       cur_abbrev->number = abbrev_number;
5284       cur_abbrev->tag = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
5285       abbrev_ptr += bytes_read;
5286       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
5287       abbrev_ptr += 1;
5288
5289       if (cur_abbrev->tag == DW_TAG_namespace)
5290         cu->has_namespace_info = 1;
5291
5292       /* now read in declarations */
5293       abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
5294       abbrev_ptr += bytes_read;
5295       abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
5296       abbrev_ptr += bytes_read;
5297       while (abbrev_name)
5298         {
5299           if (cur_abbrev->num_attrs == allocated_attrs)
5300             {
5301               allocated_attrs += ATTR_ALLOC_CHUNK;
5302               cur_attrs
5303                 = xrealloc (cur_attrs, (allocated_attrs
5304                                         * sizeof (struct attr_abbrev)));
5305             }
5306
5307           /* Record whether this compilation unit might have
5308              inter-compilation-unit references.  If we don't know what form
5309              this attribute will have, then it might potentially be a
5310              DW_FORM_ref_addr, so we conservatively expect inter-CU
5311              references.  */
5312
5313           if (abbrev_form == DW_FORM_ref_addr
5314               || abbrev_form == DW_FORM_indirect)
5315             cu->has_form_ref_addr = 1;
5316
5317           cur_attrs[cur_abbrev->num_attrs].name = abbrev_name;
5318           cur_attrs[cur_abbrev->num_attrs++].form = abbrev_form;
5319           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
5320           abbrev_ptr += bytes_read;
5321           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
5322           abbrev_ptr += bytes_read;
5323         }
5324
5325       cur_abbrev->attrs = obstack_alloc (&cu->abbrev_obstack,
5326                                          (cur_abbrev->num_attrs
5327                                           * sizeof (struct attr_abbrev)));
5328       memcpy (cur_abbrev->attrs, cur_attrs,
5329               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
5330
5331       hash_number = abbrev_number % ABBREV_HASH_SIZE;
5332       cur_abbrev->next = cu->dwarf2_abbrevs[hash_number];
5333       cu->dwarf2_abbrevs[hash_number] = cur_abbrev;
5334
5335       /* Get next abbreviation.
5336          Under Irix6 the abbreviations for a compilation unit are not
5337          always properly terminated with an abbrev number of 0.
5338          Exit loop if we encounter an abbreviation which we have
5339          already read (which means we are about to read the abbreviations
5340          for the next compile unit) or if the end of the abbreviation
5341          table is reached.  */
5342       if ((unsigned int) (abbrev_ptr - dwarf2_per_objfile->abbrev_buffer)
5343           >= dwarf2_per_objfile->abbrev_size)
5344         break;
5345       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
5346       abbrev_ptr += bytes_read;
5347       if (dwarf2_lookup_abbrev (abbrev_number, cu) != NULL)
5348         break;
5349     }
5350
5351   xfree (cur_attrs);
5352 }
5353
5354 /* Release the memory used by the abbrev table for a compilation unit.  */
5355
5356 static void
5357 dwarf2_free_abbrev_table (void *ptr_to_cu)
5358 {
5359   struct dwarf2_cu *cu = ptr_to_cu;
5360
5361   obstack_free (&cu->abbrev_obstack, NULL);
5362   cu->dwarf2_abbrevs = NULL;
5363 }
5364
5365 /* Lookup an abbrev_info structure in the abbrev hash table.  */
5366
5367 static struct abbrev_info *
5368 dwarf2_lookup_abbrev (unsigned int number, struct dwarf2_cu *cu)
5369 {
5370   unsigned int hash_number;
5371   struct abbrev_info *abbrev;
5372
5373   hash_number = number % ABBREV_HASH_SIZE;
5374   abbrev = cu->dwarf2_abbrevs[hash_number];
5375
5376   while (abbrev)
5377     {
5378       if (abbrev->number == number)
5379         return abbrev;
5380       else
5381         abbrev = abbrev->next;
5382     }
5383   return NULL;
5384 }
5385
5386 /* Returns nonzero if TAG represents a type that we might generate a partial
5387    symbol for.  */
5388
5389 static int
5390 is_type_tag_for_partial (int tag)
5391 {
5392   switch (tag)
5393     {
5394 #if 0
5395     /* Some types that would be reasonable to generate partial symbols for,
5396        that we don't at present.  */
5397     case DW_TAG_array_type:
5398     case DW_TAG_file_type:
5399     case DW_TAG_ptr_to_member_type:
5400     case DW_TAG_set_type:
5401     case DW_TAG_string_type:
5402     case DW_TAG_subroutine_type:
5403 #endif
5404     case DW_TAG_base_type:
5405     case DW_TAG_class_type:
5406     case DW_TAG_enumeration_type:
5407     case DW_TAG_structure_type:
5408     case DW_TAG_subrange_type:
5409     case DW_TAG_typedef:
5410     case DW_TAG_union_type:
5411       return 1;
5412     default:
5413       return 0;
5414     }
5415 }
5416
5417 /* Load all DIEs that are interesting for partial symbols into memory.  */
5418
5419 static struct partial_die_info *
5420 load_partial_dies (bfd *abfd, gdb_byte *info_ptr, int building_psymtab,
5421                    struct dwarf2_cu *cu)
5422 {
5423   struct partial_die_info *part_die;
5424   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
5425   struct abbrev_info *abbrev;
5426   unsigned int bytes_read;
5427   unsigned int load_all = 0;
5428
5429   int nesting_level = 1;
5430
5431   parent_die = NULL;
5432   last_die = NULL;
5433
5434   if (cu->per_cu && cu->per_cu->load_all_dies)
5435     load_all = 1;
5436
5437   cu->partial_dies
5438     = htab_create_alloc_ex (cu->header.length / 12,
5439                             partial_die_hash,
5440                             partial_die_eq,
5441                             NULL,
5442                             &cu->comp_unit_obstack,
5443                             hashtab_obstack_allocate,
5444                             dummy_obstack_deallocate);
5445
5446   part_die = obstack_alloc (&cu->comp_unit_obstack,
5447                             sizeof (struct partial_die_info));
5448
5449   while (1)
5450     {
5451       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
5452
5453       /* A NULL abbrev means the end of a series of children.  */
5454       if (abbrev == NULL)
5455         {
5456           if (--nesting_level == 0)
5457             {
5458               /* PART_DIE was probably the last thing allocated on the
5459                  comp_unit_obstack, so we could call obstack_free
5460                  here.  We don't do that because the waste is small,
5461                  and will be cleaned up when we're done with this
5462                  compilation unit.  This way, we're also more robust
5463                  against other users of the comp_unit_obstack.  */
5464               return first_die;
5465             }
5466           info_ptr += bytes_read;
5467           last_die = parent_die;
5468           parent_die = parent_die->die_parent;
5469           continue;
5470         }
5471
5472       /* Check whether this DIE is interesting enough to save.  Normally
5473          we would not be interested in members here, but there may be
5474          later variables referencing them via DW_AT_specification (for
5475          static members).  */
5476       if (!load_all
5477           && !is_type_tag_for_partial (abbrev->tag)
5478           && abbrev->tag != DW_TAG_enumerator
5479           && abbrev->tag != DW_TAG_subprogram
5480           && abbrev->tag != DW_TAG_variable
5481           && abbrev->tag != DW_TAG_namespace
5482           && abbrev->tag != DW_TAG_member)
5483         {
5484           /* Otherwise we skip to the next sibling, if any.  */
5485           info_ptr = skip_one_die (info_ptr + bytes_read, abbrev, cu);
5486           continue;
5487         }
5488
5489       info_ptr = read_partial_die (part_die, abbrev, bytes_read,
5490                                    abfd, info_ptr, cu);
5491
5492       /* This two-pass algorithm for processing partial symbols has a
5493          high cost in cache pressure.  Thus, handle some simple cases
5494          here which cover the majority of C partial symbols.  DIEs
5495          which neither have specification tags in them, nor could have
5496          specification tags elsewhere pointing at them, can simply be
5497          processed and discarded.
5498
5499          This segment is also optional; scan_partial_symbols and
5500          add_partial_symbol will handle these DIEs if we chain
5501          them in normally.  When compilers which do not emit large
5502          quantities of duplicate debug information are more common,
5503          this code can probably be removed.  */
5504
5505       /* Any complete simple types at the top level (pretty much all
5506          of them, for a language without namespaces), can be processed
5507          directly.  */
5508       if (parent_die == NULL
5509           && part_die->has_specification == 0
5510           && part_die->is_declaration == 0
5511           && (part_die->tag == DW_TAG_typedef
5512               || part_die->tag == DW_TAG_base_type
5513               || part_die->tag == DW_TAG_subrange_type))
5514         {
5515           if (building_psymtab && part_die->name != NULL)
5516             add_psymbol_to_list (part_die->name, strlen (part_die->name),
5517                                  VAR_DOMAIN, LOC_TYPEDEF,
5518                                  &cu->objfile->static_psymbols,
5519                                  0, (CORE_ADDR) 0, cu->language, cu->objfile);
5520           info_ptr = locate_pdi_sibling (part_die, info_ptr, abfd, cu);
5521           continue;
5522         }
5523
5524       /* If we're at the second level, and we're an enumerator, and
5525          our parent has no specification (meaning possibly lives in a
5526          namespace elsewhere), then we can add the partial symbol now
5527          instead of queueing it.  */
5528       if (part_die->tag == DW_TAG_enumerator
5529           && parent_die != NULL
5530           && parent_die->die_parent == NULL
5531           && parent_die->tag == DW_TAG_enumeration_type
5532           && parent_die->has_specification == 0)
5533         {
5534           if (part_die->name == NULL)
5535             complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
5536           else if (building_psymtab)
5537             add_psymbol_to_list (part_die->name, strlen (part_die->name),
5538                                  VAR_DOMAIN, LOC_CONST,
5539                                  (cu->language == language_cplus
5540                                   || cu->language == language_java)
5541                                  ? &cu->objfile->global_psymbols
5542                                  : &cu->objfile->static_psymbols,
5543                                  0, (CORE_ADDR) 0, cu->language, cu->objfile);
5544
5545           info_ptr = locate_pdi_sibling (part_die, info_ptr, abfd, cu);
5546           continue;
5547         }
5548
5549       /* We'll save this DIE so link it in.  */
5550       part_die->die_parent = parent_die;
5551       part_die->die_sibling = NULL;
5552       part_die->die_child = NULL;
5553
5554       if (last_die && last_die == parent_die)
5555         last_die->die_child = part_die;
5556       else if (last_die)
5557         last_die->die_sibling = part_die;
5558
5559       last_die = part_die;
5560
5561       if (first_die == NULL)
5562         first_die = part_die;
5563
5564       /* Maybe add the DIE to the hash table.  Not all DIEs that we
5565          find interesting need to be in the hash table, because we
5566          also have the parent/sibling/child chains; only those that we
5567          might refer to by offset later during partial symbol reading.
5568
5569          For now this means things that might have be the target of a
5570          DW_AT_specification, DW_AT_abstract_origin, or
5571          DW_AT_extension.  DW_AT_extension will refer only to
5572          namespaces; DW_AT_abstract_origin refers to functions (and
5573          many things under the function DIE, but we do not recurse
5574          into function DIEs during partial symbol reading) and
5575          possibly variables as well; DW_AT_specification refers to
5576          declarations.  Declarations ought to have the DW_AT_declaration
5577          flag.  It happens that GCC forgets to put it in sometimes, but
5578          only for functions, not for types.
5579
5580          Adding more things than necessary to the hash table is harmless
5581          except for the performance cost.  Adding too few will result in
5582          wasted time in find_partial_die, when we reread the compilation
5583          unit with load_all_dies set.  */
5584
5585       if (load_all
5586           || abbrev->tag == DW_TAG_subprogram
5587           || abbrev->tag == DW_TAG_variable
5588           || abbrev->tag == DW_TAG_namespace
5589           || part_die->is_declaration)
5590         {
5591           void **slot;
5592
5593           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
5594                                            part_die->offset, INSERT);
5595           *slot = part_die;
5596         }
5597
5598       part_die = obstack_alloc (&cu->comp_unit_obstack,
5599                                 sizeof (struct partial_die_info));
5600
5601       /* For some DIEs we want to follow their children (if any).  For C
5602          we have no reason to follow the children of structures; for other
5603          languages we have to, both so that we can get at method physnames
5604          to infer fully qualified class names, and for DW_AT_specification.  */
5605       if (last_die->has_children
5606           && (load_all
5607               || last_die->tag == DW_TAG_namespace
5608               || last_die->tag == DW_TAG_enumeration_type
5609               || (cu->language != language_c
5610                   && (last_die->tag == DW_TAG_class_type
5611                       || last_die->tag == DW_TAG_structure_type
5612                       || last_die->tag == DW_TAG_union_type))))
5613         {
5614           nesting_level++;
5615           parent_die = last_die;
5616           continue;
5617         }
5618
5619       /* Otherwise we skip to the next sibling, if any.  */
5620       info_ptr = locate_pdi_sibling (last_die, info_ptr, abfd, cu);
5621
5622       /* Back to the top, do it again.  */
5623     }
5624 }
5625
5626 /* Read a minimal amount of information into the minimal die structure.  */
5627
5628 static gdb_byte *
5629 read_partial_die (struct partial_die_info *part_die,
5630                   struct abbrev_info *abbrev,
5631                   unsigned int abbrev_len, bfd *abfd,
5632                   gdb_byte *info_ptr, struct dwarf2_cu *cu)
5633 {
5634   unsigned int bytes_read, i;
5635   struct attribute attr;
5636   int has_low_pc_attr = 0;
5637   int has_high_pc_attr = 0;
5638
5639   memset (part_die, 0, sizeof (struct partial_die_info));
5640
5641   part_die->offset = info_ptr - dwarf2_per_objfile->info_buffer;
5642
5643   info_ptr += abbrev_len;
5644
5645   if (abbrev == NULL)
5646     return info_ptr;
5647
5648   part_die->tag = abbrev->tag;
5649   part_die->has_children = abbrev->has_children;
5650
5651   for (i = 0; i < abbrev->num_attrs; ++i)
5652     {
5653       info_ptr = read_attribute (&attr, &abbrev->attrs[i], abfd, info_ptr, cu);
5654
5655       /* Store the data if it is of an attribute we want to keep in a
5656          partial symbol table.  */
5657       switch (attr.name)
5658         {
5659         case DW_AT_name:
5660
5661           /* Prefer DW_AT_MIPS_linkage_name over DW_AT_name.  */
5662           if (part_die->name == NULL)
5663             part_die->name = DW_STRING (&attr);
5664           break;
5665         case DW_AT_comp_dir:
5666           if (part_die->dirname == NULL)
5667             part_die->dirname = DW_STRING (&attr);
5668           break;
5669         case DW_AT_MIPS_linkage_name:
5670           part_die->name = DW_STRING (&attr);
5671           break;
5672         case DW_AT_low_pc:
5673           has_low_pc_attr = 1;
5674           part_die->lowpc = DW_ADDR (&attr);
5675           break;
5676         case DW_AT_high_pc:
5677           has_high_pc_attr = 1;
5678           part_die->highpc = DW_ADDR (&attr);
5679           break;
5680         case DW_AT_ranges:
5681           if (dwarf2_ranges_read (DW_UNSND (&attr), &part_die->lowpc,
5682                                   &part_die->highpc, cu))
5683             has_low_pc_attr = has_high_pc_attr = 1;
5684           break;
5685         case DW_AT_location:
5686           /* Support the .debug_loc offsets */
5687           if (attr_form_is_block (&attr))
5688             {
5689                part_die->locdesc = DW_BLOCK (&attr);
5690             }
5691           else if (attr_form_is_section_offset (&attr))
5692             {
5693               dwarf2_complex_location_expr_complaint ();
5694             }
5695           else
5696             {
5697               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
5698                                                      "partial symbol information");
5699             }
5700           break;
5701         case DW_AT_language:
5702           part_die->language = DW_UNSND (&attr);
5703           break;
5704         case DW_AT_external:
5705           part_die->is_external = DW_UNSND (&attr);
5706           break;
5707         case DW_AT_declaration:
5708           part_die->is_declaration = DW_UNSND (&attr);
5709           break;
5710         case DW_AT_type:
5711           part_die->has_type = 1;
5712           break;
5713         case DW_AT_abstract_origin:
5714         case DW_AT_specification:
5715         case DW_AT_extension:
5716           part_die->has_specification = 1;
5717           part_die->spec_offset = dwarf2_get_ref_die_offset (&attr, cu);
5718           break;
5719         case DW_AT_sibling:
5720           /* Ignore absolute siblings, they might point outside of
5721              the current compile unit.  */
5722           if (attr.form == DW_FORM_ref_addr)
5723             complaint (&symfile_complaints, _("ignoring absolute DW_AT_sibling"));
5724           else
5725             part_die->sibling = dwarf2_per_objfile->info_buffer
5726               + dwarf2_get_ref_die_offset (&attr, cu);
5727           break;
5728         case DW_AT_stmt_list:
5729           part_die->has_stmt_list = 1;
5730           part_die->line_offset = DW_UNSND (&attr);
5731           break;
5732         case DW_AT_byte_size:
5733           part_die->has_byte_size = 1;
5734           break;
5735         case DW_AT_calling_convention:
5736           /* DWARF doesn't provide a way to identify a program's source-level
5737              entry point.  DW_AT_calling_convention attributes are only meant
5738              to describe functions' calling conventions.
5739
5740              However, because it's a necessary piece of information in
5741              Fortran, and because DW_CC_program is the only piece of debugging
5742              information whose definition refers to a 'main program' at all,
5743              several compilers have begun marking Fortran main programs with
5744              DW_CC_program --- even when those functions use the standard
5745              calling conventions.
5746
5747              So until DWARF specifies a way to provide this information and
5748              compilers pick up the new representation, we'll support this
5749              practice.  */
5750           if (DW_UNSND (&attr) == DW_CC_program
5751               && cu->language == language_fortran)
5752             set_main_name (part_die->name);
5753           break;
5754         default:
5755           break;
5756         }
5757     }
5758
5759   /* When using the GNU linker, .gnu.linkonce. sections are used to
5760      eliminate duplicate copies of functions and vtables and such.
5761      The linker will arbitrarily choose one and discard the others.
5762      The AT_*_pc values for such functions refer to local labels in
5763      these sections.  If the section from that file was discarded, the
5764      labels are not in the output, so the relocs get a value of 0.
5765      If this is a discarded function, mark the pc bounds as invalid,
5766      so that GDB will ignore it.  */
5767   if (has_low_pc_attr && has_high_pc_attr
5768       && part_die->lowpc < part_die->highpc
5769       && (part_die->lowpc != 0
5770           || dwarf2_per_objfile->has_section_at_zero))
5771     part_die->has_pc_info = 1;
5772   return info_ptr;
5773 }
5774
5775 /* Find a cached partial DIE at OFFSET in CU.  */
5776
5777 static struct partial_die_info *
5778 find_partial_die_in_comp_unit (unsigned long offset, struct dwarf2_cu *cu)
5779 {
5780   struct partial_die_info *lookup_die = NULL;
5781   struct partial_die_info part_die;
5782
5783   part_die.offset = offset;
5784   lookup_die = htab_find_with_hash (cu->partial_dies, &part_die, offset);
5785
5786   return lookup_die;
5787 }
5788
5789 /* Find a partial DIE at OFFSET, which may or may not be in CU.  */
5790
5791 static struct partial_die_info *
5792 find_partial_die (unsigned long offset, struct dwarf2_cu *cu)
5793 {
5794   struct dwarf2_per_cu_data *per_cu = NULL;
5795   struct partial_die_info *pd = NULL;
5796
5797   if (offset >= cu->header.offset
5798       && offset < cu->header.offset + cu->header.length)
5799     {
5800       pd = find_partial_die_in_comp_unit (offset, cu);
5801       if (pd != NULL)
5802         return pd;
5803     }
5804
5805   per_cu = dwarf2_find_containing_comp_unit (offset, cu->objfile);
5806
5807   if (per_cu->cu == NULL)
5808     {
5809       load_comp_unit (per_cu, cu->objfile);
5810       per_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5811       dwarf2_per_objfile->read_in_chain = per_cu;
5812     }
5813
5814   per_cu->cu->last_used = 0;
5815   pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
5816
5817   if (pd == NULL && per_cu->load_all_dies == 0)
5818     {
5819       struct cleanup *back_to;
5820       struct partial_die_info comp_unit_die;
5821       struct abbrev_info *abbrev;
5822       unsigned int bytes_read;
5823       char *info_ptr;
5824
5825       per_cu->load_all_dies = 1;
5826
5827       /* Re-read the DIEs.  */
5828       back_to = make_cleanup (null_cleanup, 0);
5829       if (per_cu->cu->dwarf2_abbrevs == NULL)
5830         {
5831           dwarf2_read_abbrevs (per_cu->cu->objfile->obfd, per_cu->cu);
5832           back_to = make_cleanup (dwarf2_free_abbrev_table, per_cu->cu);
5833         }
5834       info_ptr = per_cu->cu->header.first_die_ptr;
5835       abbrev = peek_die_abbrev (info_ptr, &bytes_read, per_cu->cu);
5836       info_ptr = read_partial_die (&comp_unit_die, abbrev, bytes_read,
5837                                    per_cu->cu->objfile->obfd, info_ptr,
5838                                    per_cu->cu);
5839       if (comp_unit_die.has_children)
5840         load_partial_dies (per_cu->cu->objfile->obfd, info_ptr, 0, per_cu->cu);
5841       do_cleanups (back_to);
5842
5843       pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
5844     }
5845
5846   if (pd == NULL)
5847     internal_error (__FILE__, __LINE__,
5848                     _("could not find partial DIE 0x%lx in cache [from module %s]\n"),
5849                     offset, bfd_get_filename (cu->objfile->obfd));
5850   return pd;
5851 }
5852
5853 /* Adjust PART_DIE before generating a symbol for it.  This function
5854    may set the is_external flag or change the DIE's name.  */
5855
5856 static void
5857 fixup_partial_die (struct partial_die_info *part_die,
5858                    struct dwarf2_cu *cu)
5859 {
5860   /* If we found a reference attribute and the DIE has no name, try
5861      to find a name in the referred to DIE.  */
5862
5863   if (part_die->name == NULL && part_die->has_specification)
5864     {
5865       struct partial_die_info *spec_die;
5866
5867       spec_die = find_partial_die (part_die->spec_offset, cu);
5868
5869       fixup_partial_die (spec_die, cu);
5870
5871       if (spec_die->name)
5872         {
5873           part_die->name = spec_die->name;
5874
5875           /* Copy DW_AT_external attribute if it is set.  */
5876           if (spec_die->is_external)
5877             part_die->is_external = spec_die->is_external;
5878         }
5879     }
5880
5881   /* Set default names for some unnamed DIEs.  */
5882   if (part_die->name == NULL && (part_die->tag == DW_TAG_structure_type
5883                                  || part_die->tag == DW_TAG_class_type))
5884     part_die->name = "(anonymous class)";
5885
5886   if (part_die->name == NULL && part_die->tag == DW_TAG_namespace)
5887     part_die->name = "(anonymous namespace)";
5888
5889   if (part_die->tag == DW_TAG_structure_type
5890       || part_die->tag == DW_TAG_class_type
5891       || part_die->tag == DW_TAG_union_type)
5892     guess_structure_name (part_die, cu);
5893 }
5894
5895 /* Read the die from the .debug_info section buffer.  Set DIEP to
5896    point to a newly allocated die with its information, except for its
5897    child, sibling, and parent fields.  Set HAS_CHILDREN to tell
5898    whether the die has children or not.  */
5899
5900 static gdb_byte *
5901 read_full_die (struct die_info **diep, bfd *abfd, gdb_byte *info_ptr,
5902                struct dwarf2_cu *cu, int *has_children)
5903 {
5904   unsigned int abbrev_number, bytes_read, i, offset;
5905   struct abbrev_info *abbrev;
5906   struct die_info *die;
5907
5908   offset = info_ptr - dwarf2_per_objfile->info_buffer;
5909   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
5910   info_ptr += bytes_read;
5911   if (!abbrev_number)
5912     {
5913       die = dwarf_alloc_die ();
5914       die->tag = 0;
5915       die->abbrev = abbrev_number;
5916       die->type = NULL;
5917       *diep = die;
5918       *has_children = 0;
5919       return info_ptr;
5920     }
5921
5922   abbrev = dwarf2_lookup_abbrev (abbrev_number, cu);
5923   if (!abbrev)
5924     {
5925       error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
5926              abbrev_number,
5927              bfd_get_filename (abfd));
5928     }
5929   die = dwarf_alloc_die ();
5930   die->offset = offset;
5931   die->tag = abbrev->tag;
5932   die->abbrev = abbrev_number;
5933   die->type = NULL;
5934
5935   die->num_attrs = abbrev->num_attrs;
5936   die->attrs = (struct attribute *)
5937     xmalloc (die->num_attrs * sizeof (struct attribute));
5938
5939   for (i = 0; i < abbrev->num_attrs; ++i)
5940     {
5941       info_ptr = read_attribute (&die->attrs[i], &abbrev->attrs[i],
5942                                  abfd, info_ptr, cu);
5943
5944       /* If this attribute is an absolute reference to a different
5945          compilation unit, make sure that compilation unit is loaded
5946          also.  */
5947       if (die->attrs[i].form == DW_FORM_ref_addr
5948           && (DW_ADDR (&die->attrs[i]) < cu->header.offset
5949               || (DW_ADDR (&die->attrs[i])
5950                   >= cu->header.offset + cu->header.length)))
5951         {
5952           struct dwarf2_per_cu_data *per_cu;
5953           per_cu = dwarf2_find_containing_comp_unit (DW_ADDR (&die->attrs[i]),
5954                                                      cu->objfile);
5955
5956           /* Mark the dependence relation so that we don't flush PER_CU
5957              too early.  */
5958           dwarf2_add_dependence (cu, per_cu);
5959
5960           /* If it's already on the queue, we have nothing to do.  */
5961           if (per_cu->queued)
5962             continue;
5963
5964           /* If the compilation unit is already loaded, just mark it as
5965              used.  */
5966           if (per_cu->cu != NULL)
5967             {
5968               per_cu->cu->last_used = 0;
5969               continue;
5970             }
5971
5972           /* Add it to the queue.  */
5973           queue_comp_unit (per_cu);
5974        }
5975     }
5976
5977   *diep = die;
5978   *has_children = abbrev->has_children;
5979   return info_ptr;
5980 }
5981
5982 /* Read an attribute value described by an attribute form.  */
5983
5984 static gdb_byte *
5985 read_attribute_value (struct attribute *attr, unsigned form,
5986                       bfd *abfd, gdb_byte *info_ptr,
5987                       struct dwarf2_cu *cu)
5988 {
5989   struct comp_unit_head *cu_header = &cu->header;
5990   unsigned int bytes_read;
5991   struct dwarf_block *blk;
5992
5993   attr->form = form;
5994   switch (form)
5995     {
5996     case DW_FORM_addr:
5997     case DW_FORM_ref_addr:
5998       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
5999       info_ptr += bytes_read;
6000       break;
6001     case DW_FORM_block2:
6002       blk = dwarf_alloc_block (cu);
6003       blk->size = read_2_bytes (abfd, info_ptr);
6004       info_ptr += 2;
6005       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
6006       info_ptr += blk->size;
6007       DW_BLOCK (attr) = blk;
6008       break;
6009     case DW_FORM_block4:
6010       blk = dwarf_alloc_block (cu);
6011       blk->size = read_4_bytes (abfd, info_ptr);
6012       info_ptr += 4;
6013       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
6014       info_ptr += blk->size;
6015       DW_BLOCK (attr) = blk;
6016       break;
6017     case DW_FORM_data2:
6018       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
6019       info_ptr += 2;
6020       break;
6021     case DW_FORM_data4:
6022       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
6023       info_ptr += 4;
6024       break;
6025     case DW_FORM_data8:
6026       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
6027       info_ptr += 8;
6028       break;
6029     case DW_FORM_string:
6030       DW_STRING (attr) = read_string (abfd, info_ptr, &bytes_read);
6031       info_ptr += bytes_read;
6032       break;
6033     case DW_FORM_strp:
6034       DW_STRING (attr) = read_indirect_string (abfd, info_ptr, cu_header,
6035                                                &bytes_read);
6036       info_ptr += bytes_read;
6037       break;
6038     case DW_FORM_block:
6039       blk = dwarf_alloc_block (cu);
6040       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
6041       info_ptr += bytes_read;
6042       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
6043       info_ptr += blk->size;
6044       DW_BLOCK (attr) = blk;
6045       break;
6046     case DW_FORM_block1:
6047       blk = dwarf_alloc_block (cu);
6048       blk->size = read_1_byte (abfd, info_ptr);
6049       info_ptr += 1;
6050       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
6051       info_ptr += blk->size;
6052       DW_BLOCK (attr) = blk;
6053       break;
6054     case DW_FORM_data1:
6055       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
6056       info_ptr += 1;
6057       break;
6058     case DW_FORM_flag:
6059       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
6060       info_ptr += 1;
6061       break;
6062     case DW_FORM_sdata:
6063       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
6064       info_ptr += bytes_read;
6065       break;
6066     case DW_FORM_udata:
6067       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
6068       info_ptr += bytes_read;
6069       break;
6070     case DW_FORM_ref1:
6071       DW_ADDR (attr) = cu->header.offset + read_1_byte (abfd, info_ptr);
6072       info_ptr += 1;
6073       break;
6074     case DW_FORM_ref2:
6075       DW_ADDR (attr) = cu->header.offset + read_2_bytes (abfd, info_ptr);
6076       info_ptr += 2;
6077       break;
6078     case DW_FORM_ref4:
6079       DW_ADDR (attr) = cu->header.offset + read_4_bytes (abfd, info_ptr);
6080       info_ptr += 4;
6081       break;
6082     case DW_FORM_ref8:
6083       DW_ADDR (attr) = cu->header.offset + read_8_bytes (abfd, info_ptr);
6084       info_ptr += 8;
6085       break;
6086     case DW_FORM_ref_udata:
6087       DW_ADDR (attr) = (cu->header.offset
6088                         + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
6089       info_ptr += bytes_read;
6090       break;
6091     case DW_FORM_indirect:
6092       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
6093       info_ptr += bytes_read;
6094       info_ptr = read_attribute_value (attr, form, abfd, info_ptr, cu);
6095       break;
6096     default:
6097       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
6098              dwarf_form_name (form),
6099              bfd_get_filename (abfd));
6100     }
6101   return info_ptr;
6102 }
6103
6104 /* Read an attribute described by an abbreviated attribute.  */
6105
6106 static gdb_byte *
6107 read_attribute (struct attribute *attr, struct attr_abbrev *abbrev,
6108                 bfd *abfd, gdb_byte *info_ptr, struct dwarf2_cu *cu)
6109 {
6110   attr->name = abbrev->name;
6111   return read_attribute_value (attr, abbrev->form, abfd, info_ptr, cu);
6112 }
6113
6114 /* read dwarf information from a buffer */
6115
6116 static unsigned int
6117 read_1_byte (bfd *abfd, gdb_byte *buf)
6118 {
6119   return bfd_get_8 (abfd, buf);
6120 }
6121
6122 static int
6123 read_1_signed_byte (bfd *abfd, gdb_byte *buf)
6124 {
6125   return bfd_get_signed_8 (abfd, buf);
6126 }
6127
6128 static unsigned int
6129 read_2_bytes (bfd *abfd, gdb_byte *buf)
6130 {
6131   return bfd_get_16 (abfd, buf);
6132 }
6133
6134 static int
6135 read_2_signed_bytes (bfd *abfd, gdb_byte *buf)
6136 {
6137   return bfd_get_signed_16 (abfd, buf);
6138 }
6139
6140 static unsigned int
6141 read_4_bytes (bfd *abfd, gdb_byte *buf)
6142 {
6143   return bfd_get_32 (abfd, buf);
6144 }
6145
6146 static int
6147 read_4_signed_bytes (bfd *abfd, gdb_byte *buf)
6148 {
6149   return bfd_get_signed_32 (abfd, buf);
6150 }
6151
6152 static unsigned long
6153 read_8_bytes (bfd *abfd, gdb_byte *buf)
6154 {
6155   return bfd_get_64 (abfd, buf);
6156 }
6157
6158 static CORE_ADDR
6159 read_address (bfd *abfd, gdb_byte *buf, struct dwarf2_cu *cu,
6160               unsigned int *bytes_read)
6161 {
6162   struct comp_unit_head *cu_header = &cu->header;
6163   CORE_ADDR retval = 0;
6164
6165   if (cu_header->signed_addr_p)
6166     {
6167       switch (cu_header->addr_size)
6168         {
6169         case 2:
6170           retval = bfd_get_signed_16 (abfd, buf);
6171           break;
6172         case 4:
6173           retval = bfd_get_signed_32 (abfd, buf);
6174           break;
6175         case 8:
6176           retval = bfd_get_signed_64 (abfd, buf);
6177           break;
6178         default:
6179           internal_error (__FILE__, __LINE__,
6180                           _("read_address: bad switch, signed [in module %s]"),
6181                           bfd_get_filename (abfd));
6182         }
6183     }
6184   else
6185     {
6186       switch (cu_header->addr_size)
6187         {
6188         case 2:
6189           retval = bfd_get_16 (abfd, buf);
6190           break;
6191         case 4:
6192           retval = bfd_get_32 (abfd, buf);
6193           break;
6194         case 8:
6195           retval = bfd_get_64 (abfd, buf);
6196           break;
6197         default:
6198           internal_error (__FILE__, __LINE__,
6199                           _("read_address: bad switch, unsigned [in module %s]"),
6200                           bfd_get_filename (abfd));
6201         }
6202     }
6203
6204   *bytes_read = cu_header->addr_size;
6205   return retval;
6206 }
6207
6208 /* Read the initial length from a section.  The (draft) DWARF 3
6209    specification allows the initial length to take up either 4 bytes
6210    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
6211    bytes describe the length and all offsets will be 8 bytes in length
6212    instead of 4.
6213
6214    An older, non-standard 64-bit format is also handled by this
6215    function.  The older format in question stores the initial length
6216    as an 8-byte quantity without an escape value.  Lengths greater
6217    than 2^32 aren't very common which means that the initial 4 bytes
6218    is almost always zero.  Since a length value of zero doesn't make
6219    sense for the 32-bit format, this initial zero can be considered to
6220    be an escape value which indicates the presence of the older 64-bit
6221    format.  As written, the code can't detect (old format) lengths
6222    greater than 4GB.  If it becomes necessary to handle lengths
6223    somewhat larger than 4GB, we could allow other small values (such
6224    as the non-sensical values of 1, 2, and 3) to also be used as
6225    escape values indicating the presence of the old format.
6226
6227    The value returned via bytes_read should be used to increment the
6228    relevant pointer after calling read_initial_length().
6229    
6230    As a side effect, this function sets the fields initial_length_size
6231    and offset_size in cu_header to the values appropriate for the
6232    length field.  (The format of the initial length field determines
6233    the width of file offsets to be fetched later with read_offset().)
6234    
6235    [ Note:  read_initial_length() and read_offset() are based on the
6236      document entitled "DWARF Debugging Information Format", revision
6237      3, draft 8, dated November 19, 2001.  This document was obtained
6238      from:
6239
6240         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
6241      
6242      This document is only a draft and is subject to change.  (So beware.)
6243
6244      Details regarding the older, non-standard 64-bit format were
6245      determined empirically by examining 64-bit ELF files produced by
6246      the SGI toolchain on an IRIX 6.5 machine.
6247
6248      - Kevin, July 16, 2002
6249    ] */
6250
6251 static LONGEST
6252 read_initial_length (bfd *abfd, gdb_byte *buf, struct comp_unit_head *cu_header,
6253                      unsigned int *bytes_read)
6254 {
6255   LONGEST length = bfd_get_32 (abfd, buf);
6256
6257   if (length == 0xffffffff)
6258     {
6259       length = bfd_get_64 (abfd, buf + 4);
6260       *bytes_read = 12;
6261     }
6262   else if (length == 0)
6263     {
6264       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
6265       length = bfd_get_64 (abfd, buf);
6266       *bytes_read = 8;
6267     }
6268   else
6269     {
6270       *bytes_read = 4;
6271     }
6272
6273   if (cu_header)
6274     {
6275       gdb_assert (cu_header->initial_length_size == 0
6276                   || cu_header->initial_length_size == 4
6277                   || cu_header->initial_length_size == 8
6278                   || cu_header->initial_length_size == 12);
6279
6280       if (cu_header->initial_length_size != 0
6281           && cu_header->initial_length_size != *bytes_read)
6282         complaint (&symfile_complaints,
6283                    _("intermixed 32-bit and 64-bit DWARF sections"));
6284
6285       cu_header->initial_length_size = *bytes_read;
6286       cu_header->offset_size = (*bytes_read == 4) ? 4 : 8;
6287     }
6288
6289   return length;
6290 }
6291
6292 /* Read an offset from the data stream.  The size of the offset is
6293    given by cu_header->offset_size.  */
6294
6295 static LONGEST
6296 read_offset (bfd *abfd, gdb_byte *buf, const struct comp_unit_head *cu_header,
6297              unsigned int *bytes_read)
6298 {
6299   LONGEST retval = 0;
6300
6301   switch (cu_header->offset_size)
6302     {
6303     case 4:
6304       retval = bfd_get_32 (abfd, buf);
6305       *bytes_read = 4;
6306       break;
6307     case 8:
6308       retval = bfd_get_64 (abfd, buf);
6309       *bytes_read = 8;
6310       break;
6311     default:
6312       internal_error (__FILE__, __LINE__,
6313                       _("read_offset: bad switch [in module %s]"),
6314                       bfd_get_filename (abfd));
6315     }
6316
6317   return retval;
6318 }
6319
6320 static gdb_byte *
6321 read_n_bytes (bfd *abfd, gdb_byte *buf, unsigned int size)
6322 {
6323   /* If the size of a host char is 8 bits, we can return a pointer
6324      to the buffer, otherwise we have to copy the data to a buffer
6325      allocated on the temporary obstack.  */
6326   gdb_assert (HOST_CHAR_BIT == 8);
6327   return buf;
6328 }
6329
6330 static char *
6331 read_string (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
6332 {
6333   /* If the size of a host char is 8 bits, we can return a pointer
6334      to the string, otherwise we have to copy the string to a buffer
6335      allocated on the temporary obstack.  */
6336   gdb_assert (HOST_CHAR_BIT == 8);
6337   if (*buf == '\0')
6338     {
6339       *bytes_read_ptr = 1;
6340       return NULL;
6341     }
6342   *bytes_read_ptr = strlen ((char *) buf) + 1;
6343   return (char *) buf;
6344 }
6345
6346 static char *
6347 read_indirect_string (bfd *abfd, gdb_byte *buf,
6348                       const struct comp_unit_head *cu_header,
6349                       unsigned int *bytes_read_ptr)
6350 {
6351   LONGEST str_offset = read_offset (abfd, buf, cu_header,
6352                                     bytes_read_ptr);
6353
6354   if (dwarf2_per_objfile->str_buffer == NULL)
6355     {
6356       error (_("DW_FORM_strp used without .debug_str section [in module %s]"),
6357                       bfd_get_filename (abfd));
6358       return NULL;
6359     }
6360   if (str_offset >= dwarf2_per_objfile->str_size)
6361     {
6362       error (_("DW_FORM_strp pointing outside of .debug_str section [in module %s]"),
6363                       bfd_get_filename (abfd));
6364       return NULL;
6365     }
6366   gdb_assert (HOST_CHAR_BIT == 8);
6367   if (dwarf2_per_objfile->str_buffer[str_offset] == '\0')
6368     return NULL;
6369   return (char *) (dwarf2_per_objfile->str_buffer + str_offset);
6370 }
6371
6372 static unsigned long
6373 read_unsigned_leb128 (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
6374 {
6375   unsigned long result;
6376   unsigned int num_read;
6377   int i, shift;
6378   unsigned char byte;
6379
6380   result = 0;
6381   shift = 0;
6382   num_read = 0;
6383   i = 0;
6384   while (1)
6385     {
6386       byte = bfd_get_8 (abfd, buf);
6387       buf++;
6388       num_read++;
6389       result |= ((unsigned long)(byte & 127) << shift);
6390       if ((byte & 128) == 0)
6391         {
6392           break;
6393         }
6394       shift += 7;
6395     }
6396   *bytes_read_ptr = num_read;
6397   return result;
6398 }
6399
6400 static long
6401 read_signed_leb128 (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
6402 {
6403   long result;
6404   int i, shift, num_read;
6405   unsigned char byte;
6406
6407   result = 0;
6408   shift = 0;
6409   num_read = 0;
6410   i = 0;
6411   while (1)
6412     {
6413       byte = bfd_get_8 (abfd, buf);
6414       buf++;
6415       num_read++;
6416       result |= ((long)(byte & 127) << shift);
6417       shift += 7;
6418       if ((byte & 128) == 0)
6419         {
6420           break;
6421         }
6422     }
6423   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
6424     result |= -(((long)1) << shift);
6425   *bytes_read_ptr = num_read;
6426   return result;
6427 }
6428
6429 /* Return a pointer to just past the end of an LEB128 number in BUF.  */
6430
6431 static gdb_byte *
6432 skip_leb128 (bfd *abfd, gdb_byte *buf)
6433 {
6434   int byte;
6435
6436   while (1)
6437     {
6438       byte = bfd_get_8 (abfd, buf);
6439       buf++;
6440       if ((byte & 128) == 0)
6441         return buf;
6442     }
6443 }
6444
6445 static void
6446 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
6447 {
6448   switch (lang)
6449     {
6450     case DW_LANG_C89:
6451     case DW_LANG_C:
6452       cu->language = language_c;
6453       break;
6454     case DW_LANG_C_plus_plus:
6455       cu->language = language_cplus;
6456       break;
6457     case DW_LANG_Fortran77:
6458     case DW_LANG_Fortran90:
6459     case DW_LANG_Fortran95:
6460       cu->language = language_fortran;
6461       break;
6462     case DW_LANG_Mips_Assembler:
6463       cu->language = language_asm;
6464       break;
6465     case DW_LANG_Java:
6466       cu->language = language_java;
6467       break;
6468     case DW_LANG_Ada83:
6469     case DW_LANG_Ada95:
6470       cu->language = language_ada;
6471       break;
6472     case DW_LANG_Modula2:
6473       cu->language = language_m2;
6474       break;
6475     case DW_LANG_Pascal83:
6476       cu->language = language_pascal;
6477       break;
6478     case DW_LANG_Cobol74:
6479     case DW_LANG_Cobol85:
6480     default:
6481       cu->language = language_minimal;
6482       break;
6483     }
6484   cu->language_defn = language_def (cu->language);
6485 }
6486
6487 /* Return the named attribute or NULL if not there.  */
6488
6489 static struct attribute *
6490 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
6491 {
6492   unsigned int i;
6493   struct attribute *spec = NULL;
6494
6495   for (i = 0; i < die->num_attrs; ++i)
6496     {
6497       if (die->attrs[i].name == name)
6498         return &die->attrs[i];
6499       if (die->attrs[i].name == DW_AT_specification
6500           || die->attrs[i].name == DW_AT_abstract_origin)
6501         spec = &die->attrs[i];
6502     }
6503
6504   if (spec)
6505     return dwarf2_attr (follow_die_ref (die, spec, cu), name, cu);
6506
6507   return NULL;
6508 }
6509
6510 /* Return non-zero iff the attribute NAME is defined for the given DIE,
6511    and holds a non-zero value.  This function should only be used for
6512    DW_FORM_flag attributes.  */
6513
6514 static int
6515 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
6516 {
6517   struct attribute *attr = dwarf2_attr (die, name, cu);
6518
6519   return (attr && DW_UNSND (attr));
6520 }
6521
6522 static int
6523 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
6524 {
6525   /* A DIE is a declaration if it has a DW_AT_declaration attribute
6526      which value is non-zero.  However, we have to be careful with
6527      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
6528      (via dwarf2_flag_true_p) follows this attribute.  So we may
6529      end up accidently finding a declaration attribute that belongs
6530      to a different DIE referenced by the specification attribute,
6531      even though the given DIE does not have a declaration attribute.  */
6532   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
6533           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
6534 }
6535
6536 /* Return the die giving the specification for DIE, if there is
6537    one.  */
6538
6539 static struct die_info *
6540 die_specification (struct die_info *die, struct dwarf2_cu *cu)
6541 {
6542   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification, cu);
6543
6544   if (spec_attr == NULL)
6545     return NULL;
6546   else
6547     return follow_die_ref (die, spec_attr, cu);
6548 }
6549
6550 /* Free the line_header structure *LH, and any arrays and strings it
6551    refers to.  */
6552 static void
6553 free_line_header (struct line_header *lh)
6554 {
6555   if (lh->standard_opcode_lengths)
6556     xfree (lh->standard_opcode_lengths);
6557
6558   /* Remember that all the lh->file_names[i].name pointers are
6559      pointers into debug_line_buffer, and don't need to be freed.  */
6560   if (lh->file_names)
6561     xfree (lh->file_names);
6562
6563   /* Similarly for the include directory names.  */
6564   if (lh->include_dirs)
6565     xfree (lh->include_dirs);
6566
6567   xfree (lh);
6568 }
6569
6570
6571 /* Add an entry to LH's include directory table.  */
6572 static void
6573 add_include_dir (struct line_header *lh, char *include_dir)
6574 {
6575   /* Grow the array if necessary.  */
6576   if (lh->include_dirs_size == 0)
6577     {
6578       lh->include_dirs_size = 1; /* for testing */
6579       lh->include_dirs = xmalloc (lh->include_dirs_size
6580                                   * sizeof (*lh->include_dirs));
6581     }
6582   else if (lh->num_include_dirs >= lh->include_dirs_size)
6583     {
6584       lh->include_dirs_size *= 2;
6585       lh->include_dirs = xrealloc (lh->include_dirs,
6586                                    (lh->include_dirs_size
6587                                     * sizeof (*lh->include_dirs)));
6588     }
6589
6590   lh->include_dirs[lh->num_include_dirs++] = include_dir;
6591 }
6592  
6593
6594 /* Add an entry to LH's file name table.  */
6595 static void
6596 add_file_name (struct line_header *lh,
6597                char *name,
6598                unsigned int dir_index,
6599                unsigned int mod_time,
6600                unsigned int length)
6601 {
6602   struct file_entry *fe;
6603
6604   /* Grow the array if necessary.  */
6605   if (lh->file_names_size == 0)
6606     {
6607       lh->file_names_size = 1; /* for testing */
6608       lh->file_names = xmalloc (lh->file_names_size
6609                                 * sizeof (*lh->file_names));
6610     }
6611   else if (lh->num_file_names >= lh->file_names_size)
6612     {
6613       lh->file_names_size *= 2;
6614       lh->file_names = xrealloc (lh->file_names,
6615                                  (lh->file_names_size
6616                                   * sizeof (*lh->file_names)));
6617     }
6618
6619   fe = &lh->file_names[lh->num_file_names++];
6620   fe->name = name;
6621   fe->dir_index = dir_index;
6622   fe->mod_time = mod_time;
6623   fe->length = length;
6624   fe->included_p = 0;
6625   fe->symtab = NULL;
6626 }
6627  
6628
6629 /* Read the statement program header starting at OFFSET in
6630    .debug_line, according to the endianness of ABFD.  Return a pointer
6631    to a struct line_header, allocated using xmalloc.
6632
6633    NOTE: the strings in the include directory and file name tables of
6634    the returned object point into debug_line_buffer, and must not be
6635    freed.  */
6636 static struct line_header *
6637 dwarf_decode_line_header (unsigned int offset, bfd *abfd,
6638                           struct dwarf2_cu *cu)
6639 {
6640   struct cleanup *back_to;
6641   struct line_header *lh;
6642   gdb_byte *line_ptr;
6643   unsigned int bytes_read;
6644   int i;
6645   char *cur_dir, *cur_file;
6646
6647   if (dwarf2_per_objfile->line_buffer == NULL)
6648     {
6649       complaint (&symfile_complaints, _("missing .debug_line section"));
6650       return 0;
6651     }
6652
6653   /* Make sure that at least there's room for the total_length field.
6654      That could be 12 bytes long, but we're just going to fudge that.  */
6655   if (offset + 4 >= dwarf2_per_objfile->line_size)
6656     {
6657       dwarf2_statement_list_fits_in_line_number_section_complaint ();
6658       return 0;
6659     }
6660
6661   lh = xmalloc (sizeof (*lh));
6662   memset (lh, 0, sizeof (*lh));
6663   back_to = make_cleanup ((make_cleanup_ftype *) free_line_header,
6664                           (void *) lh);
6665
6666   line_ptr = dwarf2_per_objfile->line_buffer + offset;
6667
6668   /* Read in the header.  */
6669   lh->total_length = 
6670     read_initial_length (abfd, line_ptr, &cu->header, &bytes_read);
6671   line_ptr += bytes_read;
6672   if (line_ptr + lh->total_length > (dwarf2_per_objfile->line_buffer
6673                                      + dwarf2_per_objfile->line_size))
6674     {
6675       dwarf2_statement_list_fits_in_line_number_section_complaint ();
6676       return 0;
6677     }
6678   lh->statement_program_end = line_ptr + lh->total_length;
6679   lh->version = read_2_bytes (abfd, line_ptr);
6680   line_ptr += 2;
6681   lh->header_length = read_offset (abfd, line_ptr, &cu->header, &bytes_read);
6682   line_ptr += bytes_read;
6683   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
6684   line_ptr += 1;
6685   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
6686   line_ptr += 1;
6687   lh->line_base = read_1_signed_byte (abfd, line_ptr);
6688   line_ptr += 1;
6689   lh->line_range = read_1_byte (abfd, line_ptr);
6690   line_ptr += 1;
6691   lh->opcode_base = read_1_byte (abfd, line_ptr);
6692   line_ptr += 1;
6693   lh->standard_opcode_lengths
6694     = xmalloc (lh->opcode_base * sizeof (lh->standard_opcode_lengths[0]));
6695
6696   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
6697   for (i = 1; i < lh->opcode_base; ++i)
6698     {
6699       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
6700       line_ptr += 1;
6701     }
6702
6703   /* Read directory table.  */
6704   while ((cur_dir = read_string (abfd, line_ptr, &bytes_read)) != NULL)
6705     {
6706       line_ptr += bytes_read;
6707       add_include_dir (lh, cur_dir);
6708     }
6709   line_ptr += bytes_read;
6710
6711   /* Read file name table.  */
6712   while ((cur_file = read_string (abfd, line_ptr, &bytes_read)) != NULL)
6713     {
6714       unsigned int dir_index, mod_time, length;
6715
6716       line_ptr += bytes_read;
6717       dir_index = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
6718       line_ptr += bytes_read;
6719       mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
6720       line_ptr += bytes_read;
6721       length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
6722       line_ptr += bytes_read;
6723
6724       add_file_name (lh, cur_file, dir_index, mod_time, length);
6725     }
6726   line_ptr += bytes_read;
6727   lh->statement_program_start = line_ptr; 
6728
6729   if (line_ptr > (dwarf2_per_objfile->line_buffer
6730                   + dwarf2_per_objfile->line_size))
6731     complaint (&symfile_complaints,
6732                _("line number info header doesn't fit in `.debug_line' section"));
6733
6734   discard_cleanups (back_to);
6735   return lh;
6736 }
6737
6738 /* This function exists to work around a bug in certain compilers
6739    (particularly GCC 2.95), in which the first line number marker of a
6740    function does not show up until after the prologue, right before
6741    the second line number marker.  This function shifts ADDRESS down
6742    to the beginning of the function if necessary, and is called on
6743    addresses passed to record_line.  */
6744
6745 static CORE_ADDR
6746 check_cu_functions (CORE_ADDR address, struct dwarf2_cu *cu)
6747 {
6748   struct function_range *fn;
6749
6750   /* Find the function_range containing address.  */
6751   if (!cu->first_fn)
6752     return address;
6753
6754   if (!cu->cached_fn)
6755     cu->cached_fn = cu->first_fn;
6756
6757   fn = cu->cached_fn;
6758   while (fn)
6759     if (fn->lowpc <= address && fn->highpc > address)
6760       goto found;
6761     else
6762       fn = fn->next;
6763
6764   fn = cu->first_fn;
6765   while (fn && fn != cu->cached_fn)
6766     if (fn->lowpc <= address && fn->highpc > address)
6767       goto found;
6768     else
6769       fn = fn->next;
6770
6771   return address;
6772
6773  found:
6774   if (fn->seen_line)
6775     return address;
6776   if (address != fn->lowpc)
6777     complaint (&symfile_complaints,
6778                _("misplaced first line number at 0x%lx for '%s'"),
6779                (unsigned long) address, fn->name);
6780   fn->seen_line = 1;
6781   return fn->lowpc;
6782 }
6783
6784 /* Decode the Line Number Program (LNP) for the given line_header
6785    structure and CU.  The actual information extracted and the type
6786    of structures created from the LNP depends on the value of PST.
6787
6788    1. If PST is NULL, then this procedure uses the data from the program
6789       to create all necessary symbol tables, and their linetables.
6790       The compilation directory of the file is passed in COMP_DIR,
6791       and must not be NULL.
6792    
6793    2. If PST is not NULL, this procedure reads the program to determine
6794       the list of files included by the unit represented by PST, and
6795       builds all the associated partial symbol tables.  In this case,
6796       the value of COMP_DIR is ignored, and can thus be NULL (the COMP_DIR
6797       is not used to compute the full name of the symtab, and therefore
6798       omitting it when building the partial symtab does not introduce
6799       the potential for inconsistency - a partial symtab and its associated
6800       symbtab having a different fullname -).  */
6801
6802 static void
6803 dwarf_decode_lines (struct line_header *lh, char *comp_dir, bfd *abfd,
6804                     struct dwarf2_cu *cu, struct partial_symtab *pst)
6805 {
6806   gdb_byte *line_ptr, *extended_end;
6807   gdb_byte *line_end;
6808   unsigned int bytes_read, extended_len;
6809   unsigned char op_code, extended_op, adj_opcode;
6810   CORE_ADDR baseaddr;
6811   struct objfile *objfile = cu->objfile;
6812   const int decode_for_pst_p = (pst != NULL);
6813   struct subfile *last_subfile = NULL, *first_subfile = current_subfile;
6814
6815   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
6816
6817   line_ptr = lh->statement_program_start;
6818   line_end = lh->statement_program_end;
6819
6820   /* Read the statement sequences until there's nothing left.  */
6821   while (line_ptr < line_end)
6822     {
6823       /* state machine registers  */
6824       CORE_ADDR address = 0;
6825       unsigned int file = 1;
6826       unsigned int line = 1;
6827       unsigned int column = 0;
6828       int is_stmt = lh->default_is_stmt;
6829       int basic_block = 0;
6830       int end_sequence = 0;
6831
6832       if (!decode_for_pst_p && lh->num_file_names >= file)
6833         {
6834           /* Start a subfile for the current file of the state machine.  */
6835           /* lh->include_dirs and lh->file_names are 0-based, but the
6836              directory and file name numbers in the statement program
6837              are 1-based.  */
6838           struct file_entry *fe = &lh->file_names[file - 1];
6839           char *dir = NULL;
6840
6841           if (fe->dir_index)
6842             dir = lh->include_dirs[fe->dir_index - 1];
6843
6844           dwarf2_start_subfile (fe->name, dir, comp_dir);
6845         }
6846
6847       /* Decode the table.  */
6848       while (!end_sequence)
6849         {
6850           op_code = read_1_byte (abfd, line_ptr);
6851           line_ptr += 1;
6852
6853           if (op_code >= lh->opcode_base)
6854             {           
6855               /* Special operand.  */
6856               adj_opcode = op_code - lh->opcode_base;
6857               address += (adj_opcode / lh->line_range)
6858                 * lh->minimum_instruction_length;
6859               line += lh->line_base + (adj_opcode % lh->line_range);
6860               if (lh->num_file_names < file)
6861                 dwarf2_debug_line_missing_file_complaint ();
6862               else
6863                 {
6864                   lh->file_names[file - 1].included_p = 1;
6865                   if (!decode_for_pst_p)
6866                     {
6867                       if (last_subfile != current_subfile)
6868                         {
6869                           if (last_subfile)
6870                             record_line (last_subfile, 0, address);
6871                           last_subfile = current_subfile;
6872                         }
6873                       /* Append row to matrix using current values.  */
6874                       record_line (current_subfile, line, 
6875                                    check_cu_functions (address, cu));
6876                     }
6877                 }
6878               basic_block = 1;
6879             }
6880           else switch (op_code)
6881             {
6882             case DW_LNS_extended_op:
6883               extended_len = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
6884               line_ptr += bytes_read;
6885               extended_end = line_ptr + extended_len;
6886               extended_op = read_1_byte (abfd, line_ptr);
6887               line_ptr += 1;
6888               switch (extended_op)
6889                 {
6890                 case DW_LNE_end_sequence:
6891                   end_sequence = 1;
6892
6893                   if (lh->num_file_names < file)
6894                     dwarf2_debug_line_missing_file_complaint ();
6895                   else
6896                     {
6897                       lh->file_names[file - 1].included_p = 1;
6898                       if (!decode_for_pst_p)
6899                         record_line (current_subfile, 0, address);
6900                     }
6901                   break;
6902                 case DW_LNE_set_address:
6903                   address = read_address (abfd, line_ptr, cu, &bytes_read);
6904                   line_ptr += bytes_read;
6905                   address += baseaddr;
6906                   break;
6907                 case DW_LNE_define_file:
6908                   {
6909                     char *cur_file;
6910                     unsigned int dir_index, mod_time, length;
6911                     
6912                     cur_file = read_string (abfd, line_ptr, &bytes_read);
6913                     line_ptr += bytes_read;
6914                     dir_index =
6915                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
6916                     line_ptr += bytes_read;
6917                     mod_time =
6918                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
6919                     line_ptr += bytes_read;
6920                     length =
6921                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
6922                     line_ptr += bytes_read;
6923                     add_file_name (lh, cur_file, dir_index, mod_time, length);
6924                   }
6925                   break;
6926                 default:
6927                   complaint (&symfile_complaints,
6928                              _("mangled .debug_line section"));
6929                   return;
6930                 }
6931               /* Make sure that we parsed the extended op correctly.  If e.g.
6932                  we expected a different address size than the producer used,
6933                  we may have read the wrong number of bytes.  */
6934               if (line_ptr != extended_end)
6935                 {
6936                   complaint (&symfile_complaints,
6937                              _("mangled .debug_line section"));
6938                   return;
6939                 }
6940               break;
6941             case DW_LNS_copy:
6942               if (lh->num_file_names < file)
6943                 dwarf2_debug_line_missing_file_complaint ();
6944               else
6945                 {
6946                   lh->file_names[file - 1].included_p = 1;
6947                   if (!decode_for_pst_p)
6948                     {
6949                       if (last_subfile != current_subfile)
6950                         {
6951                           if (last_subfile)
6952                             record_line (last_subfile, 0, address);
6953                           last_subfile = current_subfile;
6954                         }
6955                       record_line (current_subfile, line, 
6956                                    check_cu_functions (address, cu));
6957                     }
6958                 }
6959               basic_block = 0;
6960               break;
6961             case DW_LNS_advance_pc:
6962               address += lh->minimum_instruction_length
6963                 * read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
6964               line_ptr += bytes_read;
6965               break;
6966             case DW_LNS_advance_line:
6967               line += read_signed_leb128 (abfd, line_ptr, &bytes_read);
6968               line_ptr += bytes_read;
6969               break;
6970             case DW_LNS_set_file:
6971               {
6972                 /* The arrays lh->include_dirs and lh->file_names are
6973                    0-based, but the directory and file name numbers in
6974                    the statement program are 1-based.  */
6975                 struct file_entry *fe;
6976                 char *dir = NULL;
6977
6978                 file = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
6979                 line_ptr += bytes_read;
6980                 if (lh->num_file_names < file)
6981                   dwarf2_debug_line_missing_file_complaint ();
6982                 else
6983                   {
6984                     fe = &lh->file_names[file - 1];
6985                     if (fe->dir_index)
6986                       dir = lh->include_dirs[fe->dir_index - 1];
6987                     if (!decode_for_pst_p)
6988                       {
6989                         last_subfile = current_subfile;
6990                         dwarf2_start_subfile (fe->name, dir, comp_dir);
6991                       }
6992                   }
6993               }
6994               break;
6995             case DW_LNS_set_column:
6996               column = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
6997               line_ptr += bytes_read;
6998               break;
6999             case DW_LNS_negate_stmt:
7000               is_stmt = (!is_stmt);
7001               break;
7002             case DW_LNS_set_basic_block:
7003               basic_block = 1;
7004               break;
7005             /* Add to the address register of the state machine the
7006                address increment value corresponding to special opcode
7007                255.  I.e., this value is scaled by the minimum
7008                instruction length since special opcode 255 would have
7009                scaled the the increment.  */
7010             case DW_LNS_const_add_pc:
7011               address += (lh->minimum_instruction_length
7012                           * ((255 - lh->opcode_base) / lh->line_range));
7013               break;
7014             case DW_LNS_fixed_advance_pc:
7015               address += read_2_bytes (abfd, line_ptr);
7016               line_ptr += 2;
7017               break;
7018             default:
7019               {
7020                 /* Unknown standard opcode, ignore it.  */
7021                 int i;
7022
7023                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
7024                   {
7025                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
7026                     line_ptr += bytes_read;
7027                   }
7028               }
7029             }
7030         }
7031     }
7032
7033   if (decode_for_pst_p)
7034     {
7035       int file_index;
7036
7037       /* Now that we're done scanning the Line Header Program, we can
7038          create the psymtab of each included file.  */
7039       for (file_index = 0; file_index < lh->num_file_names; file_index++)
7040         if (lh->file_names[file_index].included_p == 1)
7041           {
7042             const struct file_entry fe = lh->file_names [file_index];
7043             char *include_name = fe.name;
7044             char *dir_name = NULL;
7045             char *pst_filename = pst->filename;
7046
7047             if (fe.dir_index)
7048               dir_name = lh->include_dirs[fe.dir_index - 1];
7049
7050             if (!IS_ABSOLUTE_PATH (include_name) && dir_name != NULL)
7051               {
7052                 include_name = concat (dir_name, SLASH_STRING,
7053                                        include_name, (char *)NULL);
7054                 make_cleanup (xfree, include_name);
7055               }
7056
7057             if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
7058               {
7059                 pst_filename = concat (pst->dirname, SLASH_STRING,
7060                                        pst_filename, (char *)NULL);
7061                 make_cleanup (xfree, pst_filename);
7062               }
7063
7064             if (strcmp (include_name, pst_filename) != 0)
7065               dwarf2_create_include_psymtab (include_name, pst, objfile);
7066           }
7067     }
7068   else
7069     {
7070       /* Make sure a symtab is created for every file, even files
7071          which contain only variables (i.e. no code with associated
7072          line numbers).  */
7073
7074       int i;
7075       struct file_entry *fe;
7076
7077       for (i = 0; i < lh->num_file_names; i++)
7078         {
7079           char *dir = NULL;
7080           fe = &lh->file_names[i];
7081           if (fe->dir_index)
7082             dir = lh->include_dirs[fe->dir_index - 1];
7083           dwarf2_start_subfile (fe->name, dir, comp_dir);
7084
7085           /* Skip the main file; we don't need it, and it must be
7086              allocated last, so that it will show up before the
7087              non-primary symtabs in the objfile's symtab list.  */
7088           if (current_subfile == first_subfile)
7089             continue;
7090
7091           if (current_subfile->symtab == NULL)
7092             current_subfile->symtab = allocate_symtab (current_subfile->name,
7093                                                        cu->objfile);
7094           fe->symtab = current_subfile->symtab;
7095         }
7096     }
7097 }
7098
7099 /* Start a subfile for DWARF.  FILENAME is the name of the file and
7100    DIRNAME the name of the source directory which contains FILENAME
7101    or NULL if not known.  COMP_DIR is the compilation directory for the
7102    linetable's compilation unit or NULL if not known.
7103    This routine tries to keep line numbers from identical absolute and
7104    relative file names in a common subfile.
7105
7106    Using the `list' example from the GDB testsuite, which resides in
7107    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
7108    of /srcdir/list0.c yields the following debugging information for list0.c:
7109
7110    DW_AT_name:          /srcdir/list0.c
7111    DW_AT_comp_dir:              /compdir
7112    files.files[0].name: list0.h
7113    files.files[0].dir:  /srcdir
7114    files.files[1].name: list0.c
7115    files.files[1].dir:  /srcdir
7116
7117    The line number information for list0.c has to end up in a single
7118    subfile, so that `break /srcdir/list0.c:1' works as expected.
7119    start_subfile will ensure that this happens provided that we pass the
7120    concatenation of files.files[1].dir and files.files[1].name as the
7121    subfile's name.  */
7122
7123 static void
7124 dwarf2_start_subfile (char *filename, char *dirname, char *comp_dir)
7125 {
7126   char *fullname;
7127
7128   /* While reading the DIEs, we call start_symtab(DW_AT_name, DW_AT_comp_dir).
7129      `start_symtab' will always pass the contents of DW_AT_comp_dir as
7130      second argument to start_subfile.  To be consistent, we do the
7131      same here.  In order not to lose the line information directory,
7132      we concatenate it to the filename when it makes sense.
7133      Note that the Dwarf3 standard says (speaking of filenames in line
7134      information): ``The directory index is ignored for file names
7135      that represent full path names''.  Thus ignoring dirname in the
7136      `else' branch below isn't an issue.  */
7137
7138   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
7139     fullname = concat (dirname, SLASH_STRING, filename, (char *)NULL);
7140   else
7141     fullname = filename;
7142
7143   start_subfile (fullname, comp_dir);
7144
7145   if (fullname != filename)
7146     xfree (fullname);
7147 }
7148
7149 static void
7150 var_decode_location (struct attribute *attr, struct symbol *sym,
7151                      struct dwarf2_cu *cu)
7152 {
7153   struct objfile *objfile = cu->objfile;
7154   struct comp_unit_head *cu_header = &cu->header;
7155
7156   /* NOTE drow/2003-01-30: There used to be a comment and some special
7157      code here to turn a symbol with DW_AT_external and a
7158      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
7159      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
7160      with some versions of binutils) where shared libraries could have
7161      relocations against symbols in their debug information - the
7162      minimal symbol would have the right address, but the debug info
7163      would not.  It's no longer necessary, because we will explicitly
7164      apply relocations when we read in the debug information now.  */
7165
7166   /* A DW_AT_location attribute with no contents indicates that a
7167      variable has been optimized away.  */
7168   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
7169     {
7170       SYMBOL_CLASS (sym) = LOC_OPTIMIZED_OUT;
7171       return;
7172     }
7173
7174   /* Handle one degenerate form of location expression specially, to
7175      preserve GDB's previous behavior when section offsets are
7176      specified.  If this is just a DW_OP_addr then mark this symbol
7177      as LOC_STATIC.  */
7178
7179   if (attr_form_is_block (attr)
7180       && DW_BLOCK (attr)->size == 1 + cu_header->addr_size
7181       && DW_BLOCK (attr)->data[0] == DW_OP_addr)
7182     {
7183       unsigned int dummy;
7184
7185       SYMBOL_VALUE_ADDRESS (sym) =
7186         read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
7187       fixup_symbol_section (sym, objfile);
7188       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
7189                                               SYMBOL_SECTION (sym));
7190       SYMBOL_CLASS (sym) = LOC_STATIC;
7191       return;
7192     }
7193
7194   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
7195      expression evaluator, and use LOC_COMPUTED only when necessary
7196      (i.e. when the value of a register or memory location is
7197      referenced, or a thread-local block, etc.).  Then again, it might
7198      not be worthwhile.  I'm assuming that it isn't unless performance
7199      or memory numbers show me otherwise.  */
7200
7201   dwarf2_symbol_mark_computed (attr, sym, cu);
7202   SYMBOL_CLASS (sym) = LOC_COMPUTED;
7203 }
7204
7205 /* Given a pointer to a DWARF information entry, figure out if we need
7206    to make a symbol table entry for it, and if so, create a new entry
7207    and return a pointer to it.
7208    If TYPE is NULL, determine symbol type from the die, otherwise
7209    used the passed type.  */
7210
7211 static struct symbol *
7212 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
7213 {
7214   struct objfile *objfile = cu->objfile;
7215   struct symbol *sym = NULL;
7216   char *name;
7217   struct attribute *attr = NULL;
7218   struct attribute *attr2 = NULL;
7219   CORE_ADDR baseaddr;
7220
7221   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
7222
7223   if (die->tag != DW_TAG_namespace)
7224     name = dwarf2_linkage_name (die, cu);
7225   else
7226     name = TYPE_NAME (type);
7227
7228   if (name)
7229     {
7230       sym = (struct symbol *) obstack_alloc (&objfile->objfile_obstack,
7231                                              sizeof (struct symbol));
7232       OBJSTAT (objfile, n_syms++);
7233       memset (sym, 0, sizeof (struct symbol));
7234
7235       /* Cache this symbol's name and the name's demangled form (if any).  */
7236       SYMBOL_LANGUAGE (sym) = cu->language;
7237       SYMBOL_SET_NAMES (sym, name, strlen (name), objfile);
7238
7239       /* Default assumptions.
7240          Use the passed type or decode it from the die.  */
7241       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
7242       SYMBOL_CLASS (sym) = LOC_OPTIMIZED_OUT;
7243       if (type != NULL)
7244         SYMBOL_TYPE (sym) = type;
7245       else
7246         SYMBOL_TYPE (sym) = die_type (die, cu);
7247       attr = dwarf2_attr (die, DW_AT_decl_line, cu);
7248       if (attr)
7249         {
7250           SYMBOL_LINE (sym) = DW_UNSND (attr);
7251         }
7252
7253       attr = dwarf2_attr (die, DW_AT_decl_file, cu);
7254       if (attr)
7255         {
7256           int file_index = DW_UNSND (attr);
7257           if (cu->line_header == NULL
7258               || file_index > cu->line_header->num_file_names)
7259             complaint (&symfile_complaints,
7260                        _("file index out of range"));
7261           else if (file_index > 0)
7262             {
7263               struct file_entry *fe;
7264               fe = &cu->line_header->file_names[file_index - 1];
7265               SYMBOL_SYMTAB (sym) = fe->symtab;
7266             }
7267         }
7268
7269       switch (die->tag)
7270         {
7271         case DW_TAG_label:
7272           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
7273           if (attr)
7274             {
7275               SYMBOL_VALUE_ADDRESS (sym) = DW_ADDR (attr) + baseaddr;
7276             }
7277           SYMBOL_CLASS (sym) = LOC_LABEL;
7278           break;
7279         case DW_TAG_subprogram:
7280           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
7281              finish_block.  */
7282           SYMBOL_CLASS (sym) = LOC_BLOCK;
7283           attr2 = dwarf2_attr (die, DW_AT_external, cu);
7284           if (attr2 && (DW_UNSND (attr2) != 0))
7285             {
7286               add_symbol_to_list (sym, &global_symbols);
7287             }
7288           else
7289             {
7290               add_symbol_to_list (sym, cu->list_in_scope);
7291             }
7292           break;
7293         case DW_TAG_variable:
7294           /* Compilation with minimal debug info may result in variables
7295              with missing type entries. Change the misleading `void' type
7296              to something sensible.  */
7297           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
7298             SYMBOL_TYPE (sym)
7299               = builtin_type (current_gdbarch)->nodebug_data_symbol;
7300
7301           attr = dwarf2_attr (die, DW_AT_const_value, cu);
7302           if (attr)
7303             {
7304               dwarf2_const_value (attr, sym, cu);
7305               attr2 = dwarf2_attr (die, DW_AT_external, cu);
7306               if (attr2 && (DW_UNSND (attr2) != 0))
7307                 add_symbol_to_list (sym, &global_symbols);
7308               else
7309                 add_symbol_to_list (sym, cu->list_in_scope);
7310               break;
7311             }
7312           attr = dwarf2_attr (die, DW_AT_location, cu);
7313           if (attr)
7314             {
7315               var_decode_location (attr, sym, cu);
7316               attr2 = dwarf2_attr (die, DW_AT_external, cu);
7317               if (attr2 && (DW_UNSND (attr2) != 0))
7318                 add_symbol_to_list (sym, &global_symbols);
7319               else
7320                 add_symbol_to_list (sym, cu->list_in_scope);
7321             }
7322           else
7323             {
7324               /* We do not know the address of this symbol.
7325                  If it is an external symbol and we have type information
7326                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
7327                  The address of the variable will then be determined from
7328                  the minimal symbol table whenever the variable is
7329                  referenced.  */
7330               attr2 = dwarf2_attr (die, DW_AT_external, cu);
7331               if (attr2 && (DW_UNSND (attr2) != 0)
7332                   && dwarf2_attr (die, DW_AT_type, cu) != NULL)
7333                 {
7334                   SYMBOL_CLASS (sym) = LOC_UNRESOLVED;
7335                   add_symbol_to_list (sym, &global_symbols);
7336                 }
7337             }
7338           break;
7339         case DW_TAG_formal_parameter:
7340           attr = dwarf2_attr (die, DW_AT_location, cu);
7341           if (attr)
7342             {
7343               var_decode_location (attr, sym, cu);
7344               /* FIXME drow/2003-07-31: Is LOC_COMPUTED_ARG necessary?  */
7345               if (SYMBOL_CLASS (sym) == LOC_COMPUTED)
7346                 SYMBOL_CLASS (sym) = LOC_COMPUTED_ARG;
7347             }
7348           attr = dwarf2_attr (die, DW_AT_const_value, cu);
7349           if (attr)
7350             {
7351               dwarf2_const_value (attr, sym, cu);
7352             }
7353           add_symbol_to_list (sym, cu->list_in_scope);
7354           break;
7355         case DW_TAG_unspecified_parameters:
7356           /* From varargs functions; gdb doesn't seem to have any
7357              interest in this information, so just ignore it for now.
7358              (FIXME?) */
7359           break;
7360         case DW_TAG_class_type:
7361         case DW_TAG_structure_type:
7362         case DW_TAG_union_type:
7363         case DW_TAG_set_type:
7364         case DW_TAG_enumeration_type:
7365           SYMBOL_CLASS (sym) = LOC_TYPEDEF;
7366           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
7367
7368           /* Make sure that the symbol includes appropriate enclosing
7369              classes/namespaces in its name.  These are calculated in
7370              read_structure_type, and the correct name is saved in
7371              the type.  */
7372
7373           if (cu->language == language_cplus
7374               || cu->language == language_java)
7375             {
7376               struct type *type = SYMBOL_TYPE (sym);
7377               
7378               if (TYPE_TAG_NAME (type) != NULL)
7379                 {
7380                   /* FIXME: carlton/2003-11-10: Should this use
7381                      SYMBOL_SET_NAMES instead?  (The same problem also
7382                      arises further down in this function.)  */
7383                   /* The type's name is already allocated along with
7384                      this objfile, so we don't need to duplicate it
7385                      for the symbol.  */
7386                   SYMBOL_LINKAGE_NAME (sym) = TYPE_TAG_NAME (type);
7387                 }
7388             }
7389
7390           {
7391             /* NOTE: carlton/2003-11-10: C++ and Java class symbols shouldn't
7392                really ever be static objects: otherwise, if you try
7393                to, say, break of a class's method and you're in a file
7394                which doesn't mention that class, it won't work unless
7395                the check for all static symbols in lookup_symbol_aux
7396                saves you.  See the OtherFileClass tests in
7397                gdb.c++/namespace.exp.  */
7398
7399             struct pending **list_to_add;
7400
7401             list_to_add = (cu->list_in_scope == &file_symbols
7402                            && (cu->language == language_cplus
7403                                || cu->language == language_java)
7404                            ? &global_symbols : cu->list_in_scope);
7405           
7406             add_symbol_to_list (sym, list_to_add);
7407
7408             /* The semantics of C++ state that "struct foo { ... }" also
7409                defines a typedef for "foo".  A Java class declaration also
7410                defines a typedef for the class.  Synthesize a typedef symbol
7411                so that "ptype foo" works as expected.  */
7412             if (cu->language == language_cplus
7413                 || cu->language == language_java
7414                 || cu->language == language_ada)
7415               {
7416                 struct symbol *typedef_sym = (struct symbol *)
7417                   obstack_alloc (&objfile->objfile_obstack,
7418                                  sizeof (struct symbol));
7419                 *typedef_sym = *sym;
7420                 SYMBOL_DOMAIN (typedef_sym) = VAR_DOMAIN;
7421                 /* The symbol's name is already allocated along with
7422                    this objfile, so we don't need to duplicate it for
7423                    the type.  */
7424                 if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
7425                   TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
7426                 add_symbol_to_list (typedef_sym, list_to_add);
7427               }
7428           }
7429           break;
7430         case DW_TAG_typedef:
7431           if (processing_has_namespace_info
7432               && processing_current_prefix[0] != '\0')
7433             {
7434               SYMBOL_LINKAGE_NAME (sym) = typename_concat (&objfile->objfile_obstack,
7435                                                            processing_current_prefix,
7436                                                            name, cu);
7437             }
7438           SYMBOL_CLASS (sym) = LOC_TYPEDEF;
7439           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
7440           add_symbol_to_list (sym, cu->list_in_scope);
7441           break;
7442         case DW_TAG_base_type:
7443         case DW_TAG_subrange_type:
7444           SYMBOL_CLASS (sym) = LOC_TYPEDEF;
7445           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
7446           add_symbol_to_list (sym, cu->list_in_scope);
7447           break;
7448         case DW_TAG_enumerator:
7449           if (processing_has_namespace_info
7450               && processing_current_prefix[0] != '\0')
7451             {
7452               SYMBOL_LINKAGE_NAME (sym) = typename_concat (&objfile->objfile_obstack,
7453                                                            processing_current_prefix,
7454                                                            name, cu);
7455             }
7456           attr = dwarf2_attr (die, DW_AT_const_value, cu);
7457           if (attr)
7458             {
7459               dwarf2_const_value (attr, sym, cu);
7460             }
7461           {
7462             /* NOTE: carlton/2003-11-10: See comment above in the
7463                DW_TAG_class_type, etc. block.  */
7464
7465             struct pending **list_to_add;
7466
7467             list_to_add = (cu->list_in_scope == &file_symbols
7468                            && (cu->language == language_cplus
7469                                || cu->language == language_java)
7470                            ? &global_symbols : cu->list_in_scope);
7471           
7472             add_symbol_to_list (sym, list_to_add);
7473           }
7474           break;
7475         case DW_TAG_namespace:
7476           SYMBOL_CLASS (sym) = LOC_TYPEDEF;
7477           add_symbol_to_list (sym, &global_symbols);
7478           break;
7479         default:
7480           /* Not a tag we recognize.  Hopefully we aren't processing
7481              trash data, but since we must specifically ignore things
7482              we don't recognize, there is nothing else we should do at
7483              this point. */
7484           complaint (&symfile_complaints, _("unsupported tag: '%s'"),
7485                      dwarf_tag_name (die->tag));
7486           break;
7487         }
7488     }
7489   return (sym);
7490 }
7491
7492 /* Copy constant value from an attribute to a symbol.  */
7493
7494 static void
7495 dwarf2_const_value (struct attribute *attr, struct symbol *sym,
7496                     struct dwarf2_cu *cu)
7497 {
7498   struct objfile *objfile = cu->objfile;
7499   struct comp_unit_head *cu_header = &cu->header;
7500   struct dwarf_block *blk;
7501
7502   switch (attr->form)
7503     {
7504     case DW_FORM_addr:
7505       if (TYPE_LENGTH (SYMBOL_TYPE (sym)) != cu_header->addr_size)
7506         dwarf2_const_value_length_mismatch_complaint (DEPRECATED_SYMBOL_NAME (sym),
7507                                                       cu_header->addr_size,
7508                                                       TYPE_LENGTH (SYMBOL_TYPE
7509                                                                    (sym)));
7510       SYMBOL_VALUE_BYTES (sym) = 
7511         obstack_alloc (&objfile->objfile_obstack, cu_header->addr_size);
7512       /* NOTE: cagney/2003-05-09: In-lined store_address call with
7513          it's body - store_unsigned_integer.  */
7514       store_unsigned_integer (SYMBOL_VALUE_BYTES (sym), cu_header->addr_size,
7515                               DW_ADDR (attr));
7516       SYMBOL_CLASS (sym) = LOC_CONST_BYTES;
7517       break;
7518     case DW_FORM_block1:
7519     case DW_FORM_block2:
7520     case DW_FORM_block4:
7521     case DW_FORM_block:
7522       blk = DW_BLOCK (attr);
7523       if (TYPE_LENGTH (SYMBOL_TYPE (sym)) != blk->size)
7524         dwarf2_const_value_length_mismatch_complaint (DEPRECATED_SYMBOL_NAME (sym),
7525                                                       blk->size,
7526                                                       TYPE_LENGTH (SYMBOL_TYPE
7527                                                                    (sym)));
7528       SYMBOL_VALUE_BYTES (sym) =
7529         obstack_alloc (&objfile->objfile_obstack, blk->size);
7530       memcpy (SYMBOL_VALUE_BYTES (sym), blk->data, blk->size);
7531       SYMBOL_CLASS (sym) = LOC_CONST_BYTES;
7532       break;
7533
7534       /* The DW_AT_const_value attributes are supposed to carry the
7535          symbol's value "represented as it would be on the target
7536          architecture."  By the time we get here, it's already been
7537          converted to host endianness, so we just need to sign- or
7538          zero-extend it as appropriate.  */
7539     case DW_FORM_data1:
7540       dwarf2_const_value_data (attr, sym, 8);
7541       break;
7542     case DW_FORM_data2:
7543       dwarf2_const_value_data (attr, sym, 16);
7544       break;
7545     case DW_FORM_data4:
7546       dwarf2_const_value_data (attr, sym, 32);
7547       break;
7548     case DW_FORM_data8:
7549       dwarf2_const_value_data (attr, sym, 64);
7550       break;
7551
7552     case DW_FORM_sdata:
7553       SYMBOL_VALUE (sym) = DW_SND (attr);
7554       SYMBOL_CLASS (sym) = LOC_CONST;
7555       break;
7556
7557     case DW_FORM_udata:
7558       SYMBOL_VALUE (sym) = DW_UNSND (attr);
7559       SYMBOL_CLASS (sym) = LOC_CONST;
7560       break;
7561
7562     default:
7563       complaint (&symfile_complaints,
7564                  _("unsupported const value attribute form: '%s'"),
7565                  dwarf_form_name (attr->form));
7566       SYMBOL_VALUE (sym) = 0;
7567       SYMBOL_CLASS (sym) = LOC_CONST;
7568       break;
7569     }
7570 }
7571
7572
7573 /* Given an attr with a DW_FORM_dataN value in host byte order, sign-
7574    or zero-extend it as appropriate for the symbol's type.  */
7575 static void
7576 dwarf2_const_value_data (struct attribute *attr,
7577                          struct symbol *sym,
7578                          int bits)
7579 {
7580   LONGEST l = DW_UNSND (attr);
7581
7582   if (bits < sizeof (l) * 8)
7583     {
7584       if (TYPE_UNSIGNED (SYMBOL_TYPE (sym)))
7585         l &= ((LONGEST) 1 << bits) - 1;
7586       else
7587         l = (l << (sizeof (l) * 8 - bits)) >> (sizeof (l) * 8 - bits);
7588     }
7589
7590   SYMBOL_VALUE (sym) = l;
7591   SYMBOL_CLASS (sym) = LOC_CONST;
7592 }
7593
7594
7595 /* Return the type of the die in question using its DW_AT_type attribute.  */
7596
7597 static struct type *
7598 die_type (struct die_info *die, struct dwarf2_cu *cu)
7599 {
7600   struct type *type;
7601   struct attribute *type_attr;
7602   struct die_info *type_die;
7603
7604   type_attr = dwarf2_attr (die, DW_AT_type, cu);
7605   if (!type_attr)
7606     {
7607       /* A missing DW_AT_type represents a void type.  */
7608       return builtin_type (current_gdbarch)->builtin_void;
7609     }
7610   else
7611     type_die = follow_die_ref (die, type_attr, cu);
7612
7613   type = tag_type_to_type (type_die, cu);
7614   if (!type)
7615     {
7616       dump_die (type_die);
7617       error (_("Dwarf Error: Problem turning type die at offset into gdb type [in module %s]"),
7618                       cu->objfile->name);
7619     }
7620   return type;
7621 }
7622
7623 /* Return the containing type of the die in question using its
7624    DW_AT_containing_type attribute.  */
7625
7626 static struct type *
7627 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
7628 {
7629   struct type *type = NULL;
7630   struct attribute *type_attr;
7631   struct die_info *type_die = NULL;
7632
7633   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
7634   if (type_attr)
7635     {
7636       type_die = follow_die_ref (die, type_attr, cu);
7637       type = tag_type_to_type (type_die, cu);
7638     }
7639   if (!type)
7640     {
7641       if (type_die)
7642         dump_die (type_die);
7643       error (_("Dwarf Error: Problem turning containing type into gdb type [in module %s]"), 
7644                       cu->objfile->name);
7645     }
7646   return type;
7647 }
7648
7649 static struct type *
7650 tag_type_to_type (struct die_info *die, struct dwarf2_cu *cu)
7651 {
7652   if (die->type)
7653     {
7654       return die->type;
7655     }
7656   else
7657     {
7658       read_type_die (die, cu);
7659       if (!die->type)
7660         {
7661           dump_die (die);
7662           error (_("Dwarf Error: Cannot find type of die [in module %s]"), 
7663                           cu->objfile->name);
7664         }
7665       return die->type;
7666     }
7667 }
7668
7669 static void
7670 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
7671 {
7672   char *prefix = determine_prefix (die, cu);
7673   const char *old_prefix = processing_current_prefix;
7674   struct cleanup *back_to = make_cleanup (xfree, prefix);
7675   processing_current_prefix = prefix;
7676   
7677   switch (die->tag)
7678     {
7679     case DW_TAG_class_type:
7680     case DW_TAG_structure_type:
7681     case DW_TAG_union_type:
7682       read_structure_type (die, cu);
7683       break;
7684     case DW_TAG_enumeration_type:
7685       read_enumeration_type (die, cu);
7686       break;
7687     case DW_TAG_subprogram:
7688     case DW_TAG_subroutine_type:
7689       read_subroutine_type (die, cu);
7690       break;
7691     case DW_TAG_array_type:
7692       read_array_type (die, cu);
7693       break;
7694     case DW_TAG_set_type:
7695       read_set_type (die, cu);
7696       break;
7697     case DW_TAG_pointer_type:
7698       read_tag_pointer_type (die, cu);
7699       break;
7700     case DW_TAG_ptr_to_member_type:
7701       read_tag_ptr_to_member_type (die, cu);
7702       break;
7703     case DW_TAG_reference_type:
7704       read_tag_reference_type (die, cu);
7705       break;
7706     case DW_TAG_const_type:
7707       read_tag_const_type (die, cu);
7708       break;
7709     case DW_TAG_volatile_type:
7710       read_tag_volatile_type (die, cu);
7711       break;
7712     case DW_TAG_string_type:
7713       read_tag_string_type (die, cu);
7714       break;
7715     case DW_TAG_typedef:
7716       read_typedef (die, cu);
7717       break;
7718     case DW_TAG_subrange_type:
7719       read_subrange_type (die, cu);
7720       break;
7721     case DW_TAG_base_type:
7722       read_base_type (die, cu);
7723       break;
7724     case DW_TAG_unspecified_type:
7725       read_unspecified_type (die, cu);
7726       break;
7727     default:
7728       complaint (&symfile_complaints, _("unexpected tag in read_type_die: '%s'"),
7729                  dwarf_tag_name (die->tag));
7730       break;
7731     }
7732
7733   processing_current_prefix = old_prefix;
7734   do_cleanups (back_to);
7735 }
7736
7737 /* Return the name of the namespace/class that DIE is defined within,
7738    or "" if we can't tell.  The caller should xfree the result.  */
7739
7740 /* NOTE: carlton/2004-01-23: See read_func_scope (and the comment
7741    therein) for an example of how to use this function to deal with
7742    DW_AT_specification.  */
7743
7744 static char *
7745 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
7746 {
7747   struct die_info *parent;
7748
7749   if (cu->language != language_cplus
7750       && cu->language != language_java)
7751     return NULL;
7752
7753   parent = die->parent;
7754
7755   if (parent == NULL)
7756     {
7757       return xstrdup ("");
7758     }
7759   else
7760     {
7761       switch (parent->tag) {
7762       case DW_TAG_namespace:
7763         {
7764           /* FIXME: carlton/2004-03-05: Should I follow extension dies
7765              before doing this check?  */
7766           if (parent->type != NULL && TYPE_TAG_NAME (parent->type) != NULL)
7767             {
7768               return xstrdup (TYPE_TAG_NAME (parent->type));
7769             }
7770           else
7771             {
7772               int dummy;
7773               char *parent_prefix = determine_prefix (parent, cu);
7774               char *retval = typename_concat (NULL, parent_prefix,
7775                                               namespace_name (parent, &dummy,
7776                                                               cu),
7777                                               cu);
7778               xfree (parent_prefix);
7779               return retval;
7780             }
7781         }
7782         break;
7783       case DW_TAG_class_type:
7784       case DW_TAG_structure_type:
7785         {
7786           if (parent->type != NULL && TYPE_TAG_NAME (parent->type) != NULL)
7787             {
7788               return xstrdup (TYPE_TAG_NAME (parent->type));
7789             }
7790           else
7791             {
7792               const char *old_prefix = processing_current_prefix;
7793               char *new_prefix = determine_prefix (parent, cu);
7794               char *retval;
7795
7796               processing_current_prefix = new_prefix;
7797               retval = determine_class_name (parent, cu);
7798               processing_current_prefix = old_prefix;
7799
7800               xfree (new_prefix);
7801               return retval;
7802             }
7803         }
7804       default:
7805         return determine_prefix (parent, cu);
7806       }
7807     }
7808 }
7809
7810 /* Return a newly-allocated string formed by concatenating PREFIX and
7811    SUFFIX with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
7812    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null,
7813    perform an obconcat, otherwise allocate storage for the result.  The CU argument
7814    is used to determine the language and hence, the appropriate separator.  */
7815
7816 #define MAX_SEP_LEN 2  /* sizeof ("::")  */
7817
7818 static char *
7819 typename_concat (struct obstack *obs, const char *prefix, const char *suffix, 
7820                  struct dwarf2_cu *cu)
7821 {
7822   char *sep;
7823
7824   if (suffix == NULL || suffix[0] == '\0' || prefix == NULL || prefix[0] == '\0')
7825     sep = "";
7826   else if (cu->language == language_java)
7827     sep = ".";
7828   else
7829     sep = "::";
7830
7831   if (obs == NULL)
7832     {
7833       char *retval = xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1);
7834       retval[0] = '\0';
7835       
7836       if (prefix)
7837         {
7838           strcpy (retval, prefix);
7839           strcat (retval, sep);
7840         }
7841       if (suffix)
7842         strcat (retval, suffix);
7843       
7844       return retval;
7845     }
7846   else
7847     {
7848       /* We have an obstack.  */
7849       return obconcat (obs, prefix, sep, suffix);
7850     }
7851 }
7852
7853 #if 0
7854 struct die_info *
7855 copy_die (struct die_info *old_die)
7856 {
7857   struct die_info *new_die;
7858   int i, num_attrs;
7859
7860   new_die = (struct die_info *) xmalloc (sizeof (struct die_info));
7861   memset (new_die, 0, sizeof (struct die_info));
7862
7863   new_die->tag = old_die->tag;
7864   new_die->has_children = old_die->has_children;
7865   new_die->abbrev = old_die->abbrev;
7866   new_die->offset = old_die->offset;
7867   new_die->type = NULL;
7868
7869   num_attrs = old_die->num_attrs;
7870   new_die->num_attrs = num_attrs;
7871   new_die->attrs = (struct attribute *)
7872     xmalloc (num_attrs * sizeof (struct attribute));
7873
7874   for (i = 0; i < old_die->num_attrs; ++i)
7875     {
7876       new_die->attrs[i].name = old_die->attrs[i].name;
7877       new_die->attrs[i].form = old_die->attrs[i].form;
7878       new_die->attrs[i].u.addr = old_die->attrs[i].u.addr;
7879     }
7880
7881   new_die->next = NULL;
7882   return new_die;
7883 }
7884 #endif
7885
7886 /* Return sibling of die, NULL if no sibling.  */
7887
7888 static struct die_info *
7889 sibling_die (struct die_info *die)
7890 {
7891   return die->sibling;
7892 }
7893
7894 /* Get linkage name of a die, return NULL if not found.  */
7895
7896 static char *
7897 dwarf2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
7898 {
7899   struct attribute *attr;
7900
7901   attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
7902   if (attr && DW_STRING (attr))
7903     return DW_STRING (attr);
7904   attr = dwarf2_attr (die, DW_AT_name, cu);
7905   if (attr && DW_STRING (attr))
7906     return DW_STRING (attr);
7907   return NULL;
7908 }
7909
7910 /* Get name of a die, return NULL if not found.  */
7911
7912 static char *
7913 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
7914 {
7915   struct attribute *attr;
7916
7917   attr = dwarf2_attr (die, DW_AT_name, cu);
7918   if (attr && DW_STRING (attr))
7919     return DW_STRING (attr);
7920   return NULL;
7921 }
7922
7923 /* Return the die that this die in an extension of, or NULL if there
7924    is none.  */
7925
7926 static struct die_info *
7927 dwarf2_extension (struct die_info *die, struct dwarf2_cu *cu)
7928 {
7929   struct attribute *attr;
7930
7931   attr = dwarf2_attr (die, DW_AT_extension, cu);
7932   if (attr == NULL)
7933     return NULL;
7934
7935   return follow_die_ref (die, attr, cu);
7936 }
7937
7938 /* Convert a DIE tag into its string name.  */
7939
7940 static char *
7941 dwarf_tag_name (unsigned tag)
7942 {
7943   switch (tag)
7944     {
7945     case DW_TAG_padding:
7946       return "DW_TAG_padding";
7947     case DW_TAG_array_type:
7948       return "DW_TAG_array_type";
7949     case DW_TAG_class_type:
7950       return "DW_TAG_class_type";
7951     case DW_TAG_entry_point:
7952       return "DW_TAG_entry_point";
7953     case DW_TAG_enumeration_type:
7954       return "DW_TAG_enumeration_type";
7955     case DW_TAG_formal_parameter:
7956       return "DW_TAG_formal_parameter";
7957     case DW_TAG_imported_declaration:
7958       return "DW_TAG_imported_declaration";
7959     case DW_TAG_label:
7960       return "DW_TAG_label";
7961     case DW_TAG_lexical_block:
7962       return "DW_TAG_lexical_block";
7963     case DW_TAG_member:
7964       return "DW_TAG_member";
7965     case DW_TAG_pointer_type:
7966       return "DW_TAG_pointer_type";
7967     case DW_TAG_reference_type:
7968       return "DW_TAG_reference_type";
7969     case DW_TAG_compile_unit:
7970       return "DW_TAG_compile_unit";
7971     case DW_TAG_string_type:
7972       return "DW_TAG_string_type";
7973     case DW_TAG_structure_type:
7974       return "DW_TAG_structure_type";
7975     case DW_TAG_subroutine_type:
7976       return "DW_TAG_subroutine_type";
7977     case DW_TAG_typedef:
7978       return "DW_TAG_typedef";
7979     case DW_TAG_union_type:
7980       return "DW_TAG_union_type";
7981     case DW_TAG_unspecified_parameters:
7982       return "DW_TAG_unspecified_parameters";
7983     case DW_TAG_variant:
7984       return "DW_TAG_variant";
7985     case DW_TAG_common_block:
7986       return "DW_TAG_common_block";
7987     case DW_TAG_common_inclusion:
7988       return "DW_TAG_common_inclusion";
7989     case DW_TAG_inheritance:
7990       return "DW_TAG_inheritance";
7991     case DW_TAG_inlined_subroutine:
7992       return "DW_TAG_inlined_subroutine";
7993     case DW_TAG_module:
7994       return "DW_TAG_module";
7995     case DW_TAG_ptr_to_member_type:
7996       return "DW_TAG_ptr_to_member_type";
7997     case DW_TAG_set_type:
7998       return "DW_TAG_set_type";
7999     case DW_TAG_subrange_type:
8000       return "DW_TAG_subrange_type";
8001     case DW_TAG_with_stmt:
8002       return "DW_TAG_with_stmt";
8003     case DW_TAG_access_declaration:
8004       return "DW_TAG_access_declaration";
8005     case DW_TAG_base_type:
8006       return "DW_TAG_base_type";
8007     case DW_TAG_catch_block:
8008       return "DW_TAG_catch_block";
8009     case DW_TAG_const_type:
8010       return "DW_TAG_const_type";
8011     case DW_TAG_constant:
8012       return "DW_TAG_constant";
8013     case DW_TAG_enumerator:
8014       return "DW_TAG_enumerator";
8015     case DW_TAG_file_type:
8016       return "DW_TAG_file_type";
8017     case DW_TAG_friend:
8018       return "DW_TAG_friend";
8019     case DW_TAG_namelist:
8020       return "DW_TAG_namelist";
8021     case DW_TAG_namelist_item:
8022       return "DW_TAG_namelist_item";
8023     case DW_TAG_packed_type:
8024       return "DW_TAG_packed_type";
8025     case DW_TAG_subprogram:
8026       return "DW_TAG_subprogram";
8027     case DW_TAG_template_type_param:
8028       return "DW_TAG_template_type_param";
8029     case DW_TAG_template_value_param:
8030       return "DW_TAG_template_value_param";
8031     case DW_TAG_thrown_type:
8032       return "DW_TAG_thrown_type";
8033     case DW_TAG_try_block:
8034       return "DW_TAG_try_block";
8035     case DW_TAG_variant_part:
8036       return "DW_TAG_variant_part";
8037     case DW_TAG_variable:
8038       return "DW_TAG_variable";
8039     case DW_TAG_volatile_type:
8040       return "DW_TAG_volatile_type";
8041     case DW_TAG_dwarf_procedure:
8042       return "DW_TAG_dwarf_procedure";
8043     case DW_TAG_restrict_type:
8044       return "DW_TAG_restrict_type";
8045     case DW_TAG_interface_type:
8046       return "DW_TAG_interface_type";
8047     case DW_TAG_namespace:
8048       return "DW_TAG_namespace";
8049     case DW_TAG_imported_module:
8050       return "DW_TAG_imported_module";
8051     case DW_TAG_unspecified_type:
8052       return "DW_TAG_unspecified_type";
8053     case DW_TAG_partial_unit:
8054       return "DW_TAG_partial_unit";
8055     case DW_TAG_imported_unit:
8056       return "DW_TAG_imported_unit";
8057     case DW_TAG_condition:
8058       return "DW_TAG_condition";
8059     case DW_TAG_shared_type:
8060       return "DW_TAG_shared_type";
8061     case DW_TAG_MIPS_loop:
8062       return "DW_TAG_MIPS_loop";
8063     case DW_TAG_HP_array_descriptor:
8064       return "DW_TAG_HP_array_descriptor";
8065     case DW_TAG_format_label:
8066       return "DW_TAG_format_label";
8067     case DW_TAG_function_template:
8068       return "DW_TAG_function_template";
8069     case DW_TAG_class_template:
8070       return "DW_TAG_class_template";
8071     case DW_TAG_GNU_BINCL:
8072       return "DW_TAG_GNU_BINCL";
8073     case DW_TAG_GNU_EINCL:
8074       return "DW_TAG_GNU_EINCL";
8075     case DW_TAG_upc_shared_type:
8076       return "DW_TAG_upc_shared_type";
8077     case DW_TAG_upc_strict_type:
8078       return "DW_TAG_upc_strict_type";
8079     case DW_TAG_upc_relaxed_type:
8080       return "DW_TAG_upc_relaxed_type";
8081     case DW_TAG_PGI_kanji_type:
8082       return "DW_TAG_PGI_kanji_type";
8083     case DW_TAG_PGI_interface_block:
8084       return "DW_TAG_PGI_interface_block";
8085     default:
8086       return "DW_TAG_<unknown>";
8087     }
8088 }
8089
8090 /* Convert a DWARF attribute code into its string name.  */
8091
8092 static char *
8093 dwarf_attr_name (unsigned attr)
8094 {
8095   switch (attr)
8096     {
8097     case DW_AT_sibling:
8098       return "DW_AT_sibling";
8099     case DW_AT_location:
8100       return "DW_AT_location";
8101     case DW_AT_name:
8102       return "DW_AT_name";
8103     case DW_AT_ordering:
8104       return "DW_AT_ordering";
8105     case DW_AT_subscr_data:
8106       return "DW_AT_subscr_data";
8107     case DW_AT_byte_size:
8108       return "DW_AT_byte_size";
8109     case DW_AT_bit_offset:
8110       return "DW_AT_bit_offset";
8111     case DW_AT_bit_size:
8112       return "DW_AT_bit_size";
8113     case DW_AT_element_list:
8114       return "DW_AT_element_list";
8115     case DW_AT_stmt_list:
8116       return "DW_AT_stmt_list";
8117     case DW_AT_low_pc:
8118       return "DW_AT_low_pc";
8119     case DW_AT_high_pc:
8120       return "DW_AT_high_pc";
8121     case DW_AT_language:
8122       return "DW_AT_language";
8123     case DW_AT_member:
8124       return "DW_AT_member";
8125     case DW_AT_discr:
8126       return "DW_AT_discr";
8127     case DW_AT_discr_value:
8128       return "DW_AT_discr_value";
8129     case DW_AT_visibility:
8130       return "DW_AT_visibility";
8131     case DW_AT_import:
8132       return "DW_AT_import";
8133     case DW_AT_string_length:
8134       return "DW_AT_string_length";
8135     case DW_AT_common_reference:
8136       return "DW_AT_common_reference";
8137     case DW_AT_comp_dir:
8138       return "DW_AT_comp_dir";
8139     case DW_AT_const_value:
8140       return "DW_AT_const_value";
8141     case DW_AT_containing_type:
8142       return "DW_AT_containing_type";
8143     case DW_AT_default_value:
8144       return "DW_AT_default_value";
8145     case DW_AT_inline:
8146       return "DW_AT_inline";
8147     case DW_AT_is_optional:
8148       return "DW_AT_is_optional";
8149     case DW_AT_lower_bound:
8150       return "DW_AT_lower_bound";
8151     case DW_AT_producer:
8152       return "DW_AT_producer";
8153     case DW_AT_prototyped:
8154       return "DW_AT_prototyped";
8155     case DW_AT_return_addr:
8156       return "DW_AT_return_addr";
8157     case DW_AT_start_scope:
8158       return "DW_AT_start_scope";
8159     case DW_AT_bit_stride:
8160       return "DW_AT_bit_stride";
8161     case DW_AT_upper_bound:
8162       return "DW_AT_upper_bound";
8163     case DW_AT_abstract_origin:
8164       return "DW_AT_abstract_origin";
8165     case DW_AT_accessibility:
8166       return "DW_AT_accessibility";
8167     case DW_AT_address_class:
8168       return "DW_AT_address_class";
8169     case DW_AT_artificial:
8170       return "DW_AT_artificial";
8171     case DW_AT_base_types:
8172       return "DW_AT_base_types";
8173     case DW_AT_calling_convention:
8174       return "DW_AT_calling_convention";
8175     case DW_AT_count:
8176       return "DW_AT_count";
8177     case DW_AT_data_member_location:
8178       return "DW_AT_data_member_location";
8179     case DW_AT_decl_column:
8180       return "DW_AT_decl_column";
8181     case DW_AT_decl_file:
8182       return "DW_AT_decl_file";
8183     case DW_AT_decl_line:
8184       return "DW_AT_decl_line";
8185     case DW_AT_declaration:
8186       return "DW_AT_declaration";
8187     case DW_AT_discr_list:
8188       return "DW_AT_discr_list";
8189     case DW_AT_encoding:
8190       return "DW_AT_encoding";
8191     case DW_AT_external:
8192       return "DW_AT_external";
8193     case DW_AT_frame_base:
8194       return "DW_AT_frame_base";
8195     case DW_AT_friend:
8196       return "DW_AT_friend";
8197     case DW_AT_identifier_case:
8198       return "DW_AT_identifier_case";
8199     case DW_AT_macro_info:
8200       return "DW_AT_macro_info";
8201     case DW_AT_namelist_items:
8202       return "DW_AT_namelist_items";
8203     case DW_AT_priority:
8204       return "DW_AT_priority";
8205     case DW_AT_segment:
8206       return "DW_AT_segment";
8207     case DW_AT_specification:
8208       return "DW_AT_specification";
8209     case DW_AT_static_link:
8210       return "DW_AT_static_link";
8211     case DW_AT_type:
8212       return "DW_AT_type";
8213     case DW_AT_use_location:
8214       return "DW_AT_use_location";
8215     case DW_AT_variable_parameter:
8216       return "DW_AT_variable_parameter";
8217     case DW_AT_virtuality:
8218       return "DW_AT_virtuality";
8219     case DW_AT_vtable_elem_location:
8220       return "DW_AT_vtable_elem_location";
8221     /* DWARF 3 values.  */
8222     case DW_AT_allocated:
8223       return "DW_AT_allocated";
8224     case DW_AT_associated:
8225       return "DW_AT_associated";
8226     case DW_AT_data_location:
8227       return "DW_AT_data_location";
8228     case DW_AT_byte_stride:
8229       return "DW_AT_byte_stride";
8230     case DW_AT_entry_pc:
8231       return "DW_AT_entry_pc";
8232     case DW_AT_use_UTF8:
8233       return "DW_AT_use_UTF8";
8234     case DW_AT_extension:
8235       return "DW_AT_extension";
8236     case DW_AT_ranges:
8237       return "DW_AT_ranges";
8238     case DW_AT_trampoline:
8239       return "DW_AT_trampoline";
8240     case DW_AT_call_column:
8241       return "DW_AT_call_column";
8242     case DW_AT_call_file:
8243       return "DW_AT_call_file";
8244     case DW_AT_call_line:
8245       return "DW_AT_call_line";
8246     case DW_AT_description:
8247       return "DW_AT_description";
8248     case DW_AT_binary_scale:
8249       return "DW_AT_binary_scale";
8250     case DW_AT_decimal_scale:
8251       return "DW_AT_decimal_scale";
8252     case DW_AT_small:
8253       return "DW_AT_small";
8254     case DW_AT_decimal_sign:
8255       return "DW_AT_decimal_sign";
8256     case DW_AT_digit_count:
8257       return "DW_AT_digit_count";
8258     case DW_AT_picture_string:
8259       return "DW_AT_picture_string";
8260     case DW_AT_mutable:
8261       return "DW_AT_mutable";
8262     case DW_AT_threads_scaled:
8263       return "DW_AT_threads_scaled";
8264     case DW_AT_explicit:
8265       return "DW_AT_explicit";
8266     case DW_AT_object_pointer:
8267       return "DW_AT_object_pointer";
8268     case DW_AT_endianity:
8269       return "DW_AT_endianity";
8270     case DW_AT_elemental:
8271       return "DW_AT_elemental";
8272     case DW_AT_pure:
8273       return "DW_AT_pure";
8274     case DW_AT_recursive:
8275       return "DW_AT_recursive";
8276 #ifdef MIPS
8277     /* SGI/MIPS extensions.  */
8278     case DW_AT_MIPS_fde:
8279       return "DW_AT_MIPS_fde";
8280     case DW_AT_MIPS_loop_begin:
8281       return "DW_AT_MIPS_loop_begin";
8282     case DW_AT_MIPS_tail_loop_begin:
8283       return "DW_AT_MIPS_tail_loop_begin";
8284     case DW_AT_MIPS_epilog_begin:
8285       return "DW_AT_MIPS_epilog_begin";
8286     case DW_AT_MIPS_loop_unroll_factor:
8287       return "DW_AT_MIPS_loop_unroll_factor";
8288     case DW_AT_MIPS_software_pipeline_depth:
8289       return "DW_AT_MIPS_software_pipeline_depth";
8290     case DW_AT_MIPS_linkage_name:
8291       return "DW_AT_MIPS_linkage_name";
8292     case DW_AT_MIPS_stride:
8293       return "DW_AT_MIPS_stride";
8294     case DW_AT_MIPS_abstract_name:
8295       return "DW_AT_MIPS_abstract_name";
8296     case DW_AT_MIPS_clone_origin:
8297       return "DW_AT_MIPS_clone_origin";
8298     case DW_AT_MIPS_has_inlines:
8299       return "DW_AT_MIPS_has_inlines";
8300 #endif
8301     /* HP extensions.  */
8302     case DW_AT_HP_block_index:
8303       return "DW_AT_HP_block_index";
8304     case DW_AT_HP_unmodifiable:
8305       return "DW_AT_HP_unmodifiable";
8306     case DW_AT_HP_actuals_stmt_list:
8307       return "DW_AT_HP_actuals_stmt_list";
8308     case DW_AT_HP_proc_per_section:
8309       return "DW_AT_HP_proc_per_section";
8310     case DW_AT_HP_raw_data_ptr:
8311       return "DW_AT_HP_raw_data_ptr";
8312     case DW_AT_HP_pass_by_reference:
8313       return "DW_AT_HP_pass_by_reference";
8314     case DW_AT_HP_opt_level:
8315       return "DW_AT_HP_opt_level";
8316     case DW_AT_HP_prof_version_id:
8317       return "DW_AT_HP_prof_version_id";
8318     case DW_AT_HP_opt_flags:
8319       return "DW_AT_HP_opt_flags";
8320     case DW_AT_HP_cold_region_low_pc:
8321       return "DW_AT_HP_cold_region_low_pc";
8322     case DW_AT_HP_cold_region_high_pc:
8323       return "DW_AT_HP_cold_region_high_pc";
8324     case DW_AT_HP_all_variables_modifiable:
8325       return "DW_AT_HP_all_variables_modifiable";
8326     case DW_AT_HP_linkage_name:
8327       return "DW_AT_HP_linkage_name";
8328     case DW_AT_HP_prof_flags:
8329       return "DW_AT_HP_prof_flags";
8330     /* GNU extensions.  */
8331     case DW_AT_sf_names:
8332       return "DW_AT_sf_names";
8333     case DW_AT_src_info:
8334       return "DW_AT_src_info";
8335     case DW_AT_mac_info:
8336       return "DW_AT_mac_info";
8337     case DW_AT_src_coords:
8338       return "DW_AT_src_coords";
8339     case DW_AT_body_begin:
8340       return "DW_AT_body_begin";
8341     case DW_AT_body_end:
8342       return "DW_AT_body_end";
8343     case DW_AT_GNU_vector:
8344       return "DW_AT_GNU_vector";
8345     /* VMS extensions.  */
8346     case DW_AT_VMS_rtnbeg_pd_address:
8347       return "DW_AT_VMS_rtnbeg_pd_address";
8348     /* UPC extension.  */
8349     case DW_AT_upc_threads_scaled:
8350       return "DW_AT_upc_threads_scaled";
8351     /* PGI (STMicroelectronics) extensions.  */
8352     case DW_AT_PGI_lbase:
8353       return "DW_AT_PGI_lbase";
8354     case DW_AT_PGI_soffset:
8355       return "DW_AT_PGI_soffset";
8356     case DW_AT_PGI_lstride:
8357       return "DW_AT_PGI_lstride";
8358     default:
8359       return "DW_AT_<unknown>";
8360     }
8361 }
8362
8363 /* Convert a DWARF value form code into its string name.  */
8364
8365 static char *
8366 dwarf_form_name (unsigned form)
8367 {
8368   switch (form)
8369     {
8370     case DW_FORM_addr:
8371       return "DW_FORM_addr";
8372     case DW_FORM_block2:
8373       return "DW_FORM_block2";
8374     case DW_FORM_block4:
8375       return "DW_FORM_block4";
8376     case DW_FORM_data2:
8377       return "DW_FORM_data2";
8378     case DW_FORM_data4:
8379       return "DW_FORM_data4";
8380     case DW_FORM_data8:
8381       return "DW_FORM_data8";
8382     case DW_FORM_string:
8383       return "DW_FORM_string";
8384     case DW_FORM_block:
8385       return "DW_FORM_block";
8386     case DW_FORM_block1:
8387       return "DW_FORM_block1";
8388     case DW_FORM_data1:
8389       return "DW_FORM_data1";
8390     case DW_FORM_flag:
8391       return "DW_FORM_flag";
8392     case DW_FORM_sdata:
8393       return "DW_FORM_sdata";
8394     case DW_FORM_strp:
8395       return "DW_FORM_strp";
8396     case DW_FORM_udata:
8397       return "DW_FORM_udata";
8398     case DW_FORM_ref_addr:
8399       return "DW_FORM_ref_addr";
8400     case DW_FORM_ref1:
8401       return "DW_FORM_ref1";
8402     case DW_FORM_ref2:
8403       return "DW_FORM_ref2";
8404     case DW_FORM_ref4:
8405       return "DW_FORM_ref4";
8406     case DW_FORM_ref8:
8407       return "DW_FORM_ref8";
8408     case DW_FORM_ref_udata:
8409       return "DW_FORM_ref_udata";
8410     case DW_FORM_indirect:
8411       return "DW_FORM_indirect";
8412     default:
8413       return "DW_FORM_<unknown>";
8414     }
8415 }
8416
8417 /* Convert a DWARF stack opcode into its string name.  */
8418
8419 static char *
8420 dwarf_stack_op_name (unsigned op)
8421 {
8422   switch (op)
8423     {
8424     case DW_OP_addr:
8425       return "DW_OP_addr";
8426     case DW_OP_deref:
8427       return "DW_OP_deref";
8428     case DW_OP_const1u:
8429       return "DW_OP_const1u";
8430     case DW_OP_const1s:
8431       return "DW_OP_const1s";
8432     case DW_OP_const2u:
8433       return "DW_OP_const2u";
8434     case DW_OP_const2s:
8435       return "DW_OP_const2s";
8436     case DW_OP_const4u:
8437       return "DW_OP_const4u";
8438     case DW_OP_const4s:
8439       return "DW_OP_const4s";
8440     case DW_OP_const8u:
8441       return "DW_OP_const8u";
8442     case DW_OP_const8s:
8443       return "DW_OP_const8s";
8444     case DW_OP_constu:
8445       return "DW_OP_constu";
8446     case DW_OP_consts:
8447       return "DW_OP_consts";
8448     case DW_OP_dup:
8449       return "DW_OP_dup";
8450     case DW_OP_drop:
8451       return "DW_OP_drop";
8452     case DW_OP_over:
8453       return "DW_OP_over";
8454     case DW_OP_pick:
8455       return "DW_OP_pick";
8456     case DW_OP_swap:
8457       return "DW_OP_swap";
8458     case DW_OP_rot:
8459       return "DW_OP_rot";
8460     case DW_OP_xderef:
8461       return "DW_OP_xderef";
8462     case DW_OP_abs:
8463       return "DW_OP_abs";
8464     case DW_OP_and:
8465       return "DW_OP_and";
8466     case DW_OP_div:
8467       return "DW_OP_div";
8468     case DW_OP_minus:
8469       return "DW_OP_minus";
8470     case DW_OP_mod:
8471       return "DW_OP_mod";
8472     case DW_OP_mul:
8473       return "DW_OP_mul";
8474     case DW_OP_neg:
8475       return "DW_OP_neg";
8476     case DW_OP_not:
8477       return "DW_OP_not";
8478     case DW_OP_or:
8479       return "DW_OP_or";
8480     case DW_OP_plus:
8481       return "DW_OP_plus";
8482     case DW_OP_plus_uconst:
8483       return "DW_OP_plus_uconst";
8484     case DW_OP_shl:
8485       return "DW_OP_shl";
8486     case DW_OP_shr:
8487       return "DW_OP_shr";
8488     case DW_OP_shra:
8489       return "DW_OP_shra";
8490     case DW_OP_xor:
8491       return "DW_OP_xor";
8492     case DW_OP_bra:
8493       return "DW_OP_bra";
8494     case DW_OP_eq:
8495       return "DW_OP_eq";
8496     case DW_OP_ge:
8497       return "DW_OP_ge";
8498     case DW_OP_gt:
8499       return "DW_OP_gt";
8500     case DW_OP_le:
8501       return "DW_OP_le";
8502     case DW_OP_lt:
8503       return "DW_OP_lt";
8504     case DW_OP_ne:
8505       return "DW_OP_ne";
8506     case DW_OP_skip:
8507       return "DW_OP_skip";
8508     case DW_OP_lit0:
8509       return "DW_OP_lit0";
8510     case DW_OP_lit1:
8511       return "DW_OP_lit1";
8512     case DW_OP_lit2:
8513       return "DW_OP_lit2";
8514     case DW_OP_lit3:
8515       return "DW_OP_lit3";
8516     case DW_OP_lit4:
8517       return "DW_OP_lit4";
8518     case DW_OP_lit5:
8519       return "DW_OP_lit5";
8520     case DW_OP_lit6:
8521       return "DW_OP_lit6";
8522     case DW_OP_lit7:
8523       return "DW_OP_lit7";
8524     case DW_OP_lit8:
8525       return "DW_OP_lit8";
8526     case DW_OP_lit9:
8527       return "DW_OP_lit9";
8528     case DW_OP_lit10:
8529       return "DW_OP_lit10";
8530     case DW_OP_lit11:
8531       return "DW_OP_lit11";
8532     case DW_OP_lit12:
8533       return "DW_OP_lit12";
8534     case DW_OP_lit13:
8535       return "DW_OP_lit13";
8536     case DW_OP_lit14:
8537       return "DW_OP_lit14";
8538     case DW_OP_lit15:
8539       return "DW_OP_lit15";
8540     case DW_OP_lit16:
8541       return "DW_OP_lit16";
8542     case DW_OP_lit17:
8543       return "DW_OP_lit17";
8544     case DW_OP_lit18:
8545       return "DW_OP_lit18";
8546     case DW_OP_lit19:
8547       return "DW_OP_lit19";
8548     case DW_OP_lit20:
8549       return "DW_OP_lit20";
8550     case DW_OP_lit21:
8551       return "DW_OP_lit21";
8552     case DW_OP_lit22:
8553       return "DW_OP_lit22";
8554     case DW_OP_lit23:
8555       return "DW_OP_lit23";
8556     case DW_OP_lit24:
8557       return "DW_OP_lit24";
8558     case DW_OP_lit25:
8559       return "DW_OP_lit25";
8560     case DW_OP_lit26:
8561       return "DW_OP_lit26";
8562     case DW_OP_lit27:
8563       return "DW_OP_lit27";
8564     case DW_OP_lit28:
8565       return "DW_OP_lit28";
8566     case DW_OP_lit29:
8567       return "DW_OP_lit29";
8568     case DW_OP_lit30:
8569       return "DW_OP_lit30";
8570     case DW_OP_lit31:
8571       return "DW_OP_lit31";
8572     case DW_OP_reg0:
8573       return "DW_OP_reg0";
8574     case DW_OP_reg1:
8575       return "DW_OP_reg1";
8576     case DW_OP_reg2:
8577       return "DW_OP_reg2";
8578     case DW_OP_reg3:
8579       return "DW_OP_reg3";
8580     case DW_OP_reg4:
8581       return "DW_OP_reg4";
8582     case DW_OP_reg5:
8583       return "DW_OP_reg5";
8584     case DW_OP_reg6:
8585       return "DW_OP_reg6";
8586     case DW_OP_reg7:
8587       return "DW_OP_reg7";
8588     case DW_OP_reg8:
8589       return "DW_OP_reg8";
8590     case DW_OP_reg9:
8591       return "DW_OP_reg9";
8592     case DW_OP_reg10:
8593       return "DW_OP_reg10";
8594     case DW_OP_reg11:
8595       return "DW_OP_reg11";
8596     case DW_OP_reg12:
8597       return "DW_OP_reg12";
8598     case DW_OP_reg13:
8599       return "DW_OP_reg13";
8600     case DW_OP_reg14:
8601       return "DW_OP_reg14";
8602     case DW_OP_reg15:
8603       return "DW_OP_reg15";
8604     case DW_OP_reg16:
8605       return "DW_OP_reg16";
8606     case DW_OP_reg17:
8607       return "DW_OP_reg17";
8608     case DW_OP_reg18:
8609       return "DW_OP_reg18";
8610     case DW_OP_reg19:
8611       return "DW_OP_reg19";
8612     case DW_OP_reg20:
8613       return "DW_OP_reg20";
8614     case DW_OP_reg21:
8615       return "DW_OP_reg21";
8616     case DW_OP_reg22:
8617       return "DW_OP_reg22";
8618     case DW_OP_reg23:
8619       return "DW_OP_reg23";
8620     case DW_OP_reg24:
8621       return "DW_OP_reg24";
8622     case DW_OP_reg25:
8623       return "DW_OP_reg25";
8624     case DW_OP_reg26:
8625       return "DW_OP_reg26";
8626     case DW_OP_reg27:
8627       return "DW_OP_reg27";
8628     case DW_OP_reg28:
8629       return "DW_OP_reg28";
8630     case DW_OP_reg29:
8631       return "DW_OP_reg29";
8632     case DW_OP_reg30:
8633       return "DW_OP_reg30";
8634     case DW_OP_reg31:
8635       return "DW_OP_reg31";
8636     case DW_OP_breg0:
8637       return "DW_OP_breg0";
8638     case DW_OP_breg1:
8639       return "DW_OP_breg1";
8640     case DW_OP_breg2:
8641       return "DW_OP_breg2";
8642     case DW_OP_breg3:
8643       return "DW_OP_breg3";
8644     case DW_OP_breg4:
8645       return "DW_OP_breg4";
8646     case DW_OP_breg5:
8647       return "DW_OP_breg5";
8648     case DW_OP_breg6:
8649       return "DW_OP_breg6";
8650     case DW_OP_breg7:
8651       return "DW_OP_breg7";
8652     case DW_OP_breg8:
8653       return "DW_OP_breg8";
8654     case DW_OP_breg9:
8655       return "DW_OP_breg9";
8656     case DW_OP_breg10:
8657       return "DW_OP_breg10";
8658     case DW_OP_breg11:
8659       return "DW_OP_breg11";
8660     case DW_OP_breg12:
8661       return "DW_OP_breg12";
8662     case DW_OP_breg13:
8663       return "DW_OP_breg13";
8664     case DW_OP_breg14:
8665       return "DW_OP_breg14";
8666     case DW_OP_breg15:
8667       return "DW_OP_breg15";
8668     case DW_OP_breg16:
8669       return "DW_OP_breg16";
8670     case DW_OP_breg17:
8671       return "DW_OP_breg17";
8672     case DW_OP_breg18:
8673       return "DW_OP_breg18";
8674     case DW_OP_breg19:
8675       return "DW_OP_breg19";
8676     case DW_OP_breg20:
8677       return "DW_OP_breg20";
8678     case DW_OP_breg21:
8679       return "DW_OP_breg21";
8680     case DW_OP_breg22:
8681       return "DW_OP_breg22";
8682     case DW_OP_breg23:
8683       return "DW_OP_breg23";
8684     case DW_OP_breg24:
8685       return "DW_OP_breg24";
8686     case DW_OP_breg25:
8687       return "DW_OP_breg25";
8688     case DW_OP_breg26:
8689       return "DW_OP_breg26";
8690     case DW_OP_breg27:
8691       return "DW_OP_breg27";
8692     case DW_OP_breg28:
8693       return "DW_OP_breg28";
8694     case DW_OP_breg29:
8695       return "DW_OP_breg29";
8696     case DW_OP_breg30:
8697       return "DW_OP_breg30";
8698     case DW_OP_breg31:
8699       return "DW_OP_breg31";
8700     case DW_OP_regx:
8701       return "DW_OP_regx";
8702     case DW_OP_fbreg:
8703       return "DW_OP_fbreg";
8704     case DW_OP_bregx:
8705       return "DW_OP_bregx";
8706     case DW_OP_piece:
8707       return "DW_OP_piece";
8708     case DW_OP_deref_size:
8709       return "DW_OP_deref_size";
8710     case DW_OP_xderef_size:
8711       return "DW_OP_xderef_size";
8712     case DW_OP_nop:
8713       return "DW_OP_nop";
8714     /* DWARF 3 extensions.  */
8715     case DW_OP_push_object_address:
8716       return "DW_OP_push_object_address";
8717     case DW_OP_call2:
8718       return "DW_OP_call2";
8719     case DW_OP_call4:
8720       return "DW_OP_call4";
8721     case DW_OP_call_ref:
8722       return "DW_OP_call_ref";
8723     /* GNU extensions.  */
8724     case DW_OP_form_tls_address:
8725       return "DW_OP_form_tls_address";
8726     case DW_OP_call_frame_cfa:
8727       return "DW_OP_call_frame_cfa";
8728     case DW_OP_bit_piece:
8729       return "DW_OP_bit_piece";
8730     case DW_OP_GNU_push_tls_address:
8731       return "DW_OP_GNU_push_tls_address";
8732     case DW_OP_GNU_uninit:
8733       return "DW_OP_GNU_uninit";
8734     /* HP extensions. */ 
8735     case DW_OP_HP_is_value:
8736       return "DW_OP_HP_is_value";
8737     case DW_OP_HP_fltconst4:
8738       return "DW_OP_HP_fltconst4";
8739     case DW_OP_HP_fltconst8:
8740       return "DW_OP_HP_fltconst8";
8741     case DW_OP_HP_mod_range:
8742       return "DW_OP_HP_mod_range";
8743     case DW_OP_HP_unmod_range:
8744       return "DW_OP_HP_unmod_range";
8745     case DW_OP_HP_tls:
8746       return "DW_OP_HP_tls";
8747     default:
8748       return "OP_<unknown>";
8749     }
8750 }
8751
8752 static char *
8753 dwarf_bool_name (unsigned mybool)
8754 {
8755   if (mybool)
8756     return "TRUE";
8757   else
8758     return "FALSE";
8759 }
8760
8761 /* Convert a DWARF type code into its string name.  */
8762
8763 static char *
8764 dwarf_type_encoding_name (unsigned enc)
8765 {
8766   switch (enc)
8767     {
8768     case DW_ATE_void:
8769       return "DW_ATE_void";
8770     case DW_ATE_address:
8771       return "DW_ATE_address";
8772     case DW_ATE_boolean:
8773       return "DW_ATE_boolean";
8774     case DW_ATE_complex_float:
8775       return "DW_ATE_complex_float";
8776     case DW_ATE_float:
8777       return "DW_ATE_float";
8778     case DW_ATE_signed:
8779       return "DW_ATE_signed";
8780     case DW_ATE_signed_char:
8781       return "DW_ATE_signed_char";
8782     case DW_ATE_unsigned:
8783       return "DW_ATE_unsigned";
8784     case DW_ATE_unsigned_char:
8785       return "DW_ATE_unsigned_char";
8786     /* DWARF 3.  */
8787     case DW_ATE_imaginary_float:
8788       return "DW_ATE_imaginary_float";
8789     case DW_ATE_packed_decimal:
8790       return "DW_ATE_packed_decimal";
8791     case DW_ATE_numeric_string:
8792       return "DW_ATE_numeric_string";
8793     case DW_ATE_edited:
8794       return "DW_ATE_edited";
8795     case DW_ATE_signed_fixed:
8796       return "DW_ATE_signed_fixed";
8797     case DW_ATE_unsigned_fixed:
8798       return "DW_ATE_unsigned_fixed";
8799     case DW_ATE_decimal_float:
8800       return "DW_ATE_decimal_float";
8801     /* HP extensions.  */
8802     case DW_ATE_HP_float80:
8803       return "DW_ATE_HP_float80";
8804     case DW_ATE_HP_complex_float80:
8805       return "DW_ATE_HP_complex_float80";
8806     case DW_ATE_HP_float128:
8807       return "DW_ATE_HP_float128";
8808     case DW_ATE_HP_complex_float128:
8809       return "DW_ATE_HP_complex_float128";
8810     case DW_ATE_HP_floathpintel:
8811       return "DW_ATE_HP_floathpintel";
8812     case DW_ATE_HP_imaginary_float80:
8813       return "DW_ATE_HP_imaginary_float80";
8814     case DW_ATE_HP_imaginary_float128:
8815       return "DW_ATE_HP_imaginary_float128";
8816     default:
8817       return "DW_ATE_<unknown>";
8818     }
8819 }
8820
8821 /* Convert a DWARF call frame info operation to its string name. */
8822
8823 #if 0
8824 static char *
8825 dwarf_cfi_name (unsigned cfi_opc)
8826 {
8827   switch (cfi_opc)
8828     {
8829     case DW_CFA_advance_loc:
8830       return "DW_CFA_advance_loc";
8831     case DW_CFA_offset:
8832       return "DW_CFA_offset";
8833     case DW_CFA_restore:
8834       return "DW_CFA_restore";
8835     case DW_CFA_nop:
8836       return "DW_CFA_nop";
8837     case DW_CFA_set_loc:
8838       return "DW_CFA_set_loc";
8839     case DW_CFA_advance_loc1:
8840       return "DW_CFA_advance_loc1";
8841     case DW_CFA_advance_loc2:
8842       return "DW_CFA_advance_loc2";
8843     case DW_CFA_advance_loc4:
8844       return "DW_CFA_advance_loc4";
8845     case DW_CFA_offset_extended:
8846       return "DW_CFA_offset_extended";
8847     case DW_CFA_restore_extended:
8848       return "DW_CFA_restore_extended";
8849     case DW_CFA_undefined:
8850       return "DW_CFA_undefined";
8851     case DW_CFA_same_value:
8852       return "DW_CFA_same_value";
8853     case DW_CFA_register:
8854       return "DW_CFA_register";
8855     case DW_CFA_remember_state:
8856       return "DW_CFA_remember_state";
8857     case DW_CFA_restore_state:
8858       return "DW_CFA_restore_state";
8859     case DW_CFA_def_cfa:
8860       return "DW_CFA_def_cfa";
8861     case DW_CFA_def_cfa_register:
8862       return "DW_CFA_def_cfa_register";
8863     case DW_CFA_def_cfa_offset:
8864       return "DW_CFA_def_cfa_offset";
8865     /* DWARF 3.  */
8866     case DW_CFA_def_cfa_expression:
8867       return "DW_CFA_def_cfa_expression";
8868     case DW_CFA_expression:
8869       return "DW_CFA_expression";
8870     case DW_CFA_offset_extended_sf:
8871       return "DW_CFA_offset_extended_sf";
8872     case DW_CFA_def_cfa_sf:
8873       return "DW_CFA_def_cfa_sf";
8874     case DW_CFA_def_cfa_offset_sf:
8875       return "DW_CFA_def_cfa_offset_sf";
8876     case DW_CFA_val_offset:
8877       return "DW_CFA_val_offset";
8878     case DW_CFA_val_offset_sf:
8879       return "DW_CFA_val_offset_sf";
8880     case DW_CFA_val_expression:
8881       return "DW_CFA_val_expression";
8882     /* SGI/MIPS specific.  */
8883     case DW_CFA_MIPS_advance_loc8:
8884       return "DW_CFA_MIPS_advance_loc8";
8885     /* GNU extensions.  */
8886     case DW_CFA_GNU_window_save:
8887       return "DW_CFA_GNU_window_save";
8888     case DW_CFA_GNU_args_size:
8889       return "DW_CFA_GNU_args_size";
8890     case DW_CFA_GNU_negative_offset_extended:
8891       return "DW_CFA_GNU_negative_offset_extended";
8892     default:
8893       return "DW_CFA_<unknown>";
8894     }
8895 }
8896 #endif
8897
8898 static void
8899 dump_die (struct die_info *die)
8900 {
8901   unsigned int i;
8902
8903   fprintf_unfiltered (gdb_stderr, "Die: %s (abbrev = %d, offset = %d)\n",
8904            dwarf_tag_name (die->tag), die->abbrev, die->offset);
8905   fprintf_unfiltered (gdb_stderr, "\thas children: %s\n",
8906            dwarf_bool_name (die->child != NULL));
8907
8908   fprintf_unfiltered (gdb_stderr, "\tattributes:\n");
8909   for (i = 0; i < die->num_attrs; ++i)
8910     {
8911       fprintf_unfiltered (gdb_stderr, "\t\t%s (%s) ",
8912                dwarf_attr_name (die->attrs[i].name),
8913                dwarf_form_name (die->attrs[i].form));
8914       switch (die->attrs[i].form)
8915         {
8916         case DW_FORM_ref_addr:
8917         case DW_FORM_addr:
8918           fprintf_unfiltered (gdb_stderr, "address: ");
8919           deprecated_print_address_numeric (DW_ADDR (&die->attrs[i]), 1, gdb_stderr);
8920           break;
8921         case DW_FORM_block2:
8922         case DW_FORM_block4:
8923         case DW_FORM_block:
8924         case DW_FORM_block1:
8925           fprintf_unfiltered (gdb_stderr, "block: size %d", DW_BLOCK (&die->attrs[i])->size);
8926           break;
8927         case DW_FORM_ref1:
8928         case DW_FORM_ref2:
8929         case DW_FORM_ref4:
8930           fprintf_unfiltered (gdb_stderr, "constant ref: %ld (adjusted)",
8931                               (long) (DW_ADDR (&die->attrs[i])));
8932           break;
8933         case DW_FORM_data1:
8934         case DW_FORM_data2:
8935         case DW_FORM_data4:
8936         case DW_FORM_data8:
8937         case DW_FORM_udata:
8938         case DW_FORM_sdata:
8939           fprintf_unfiltered (gdb_stderr, "constant: %ld", DW_UNSND (&die->attrs[i]));
8940           break;
8941         case DW_FORM_string:
8942         case DW_FORM_strp:
8943           fprintf_unfiltered (gdb_stderr, "string: \"%s\"",
8944                    DW_STRING (&die->attrs[i])
8945                    ? DW_STRING (&die->attrs[i]) : "");
8946           break;
8947         case DW_FORM_flag:
8948           if (DW_UNSND (&die->attrs[i]))
8949             fprintf_unfiltered (gdb_stderr, "flag: TRUE");
8950           else
8951             fprintf_unfiltered (gdb_stderr, "flag: FALSE");
8952           break;
8953         case DW_FORM_indirect:
8954           /* the reader will have reduced the indirect form to
8955              the "base form" so this form should not occur */
8956           fprintf_unfiltered (gdb_stderr, "unexpected attribute form: DW_FORM_indirect");
8957           break;
8958         default:
8959           fprintf_unfiltered (gdb_stderr, "unsupported attribute form: %d.",
8960                    die->attrs[i].form);
8961         }
8962       fprintf_unfiltered (gdb_stderr, "\n");
8963     }
8964 }
8965
8966 static void
8967 dump_die_list (struct die_info *die)
8968 {
8969   while (die)
8970     {
8971       dump_die (die);
8972       if (die->child != NULL)
8973         dump_die_list (die->child);
8974       if (die->sibling != NULL)
8975         dump_die_list (die->sibling);
8976     }
8977 }
8978
8979 static void
8980 store_in_ref_table (unsigned int offset, struct die_info *die,
8981                     struct dwarf2_cu *cu)
8982 {
8983   int h;
8984   struct die_info *old;
8985
8986   h = (offset % REF_HASH_SIZE);
8987   old = cu->die_ref_table[h];
8988   die->next_ref = old;
8989   cu->die_ref_table[h] = die;
8990 }
8991
8992 static unsigned int
8993 dwarf2_get_ref_die_offset (struct attribute *attr, struct dwarf2_cu *cu)
8994 {
8995   unsigned int result = 0;
8996
8997   switch (attr->form)
8998     {
8999     case DW_FORM_ref_addr:
9000     case DW_FORM_ref1:
9001     case DW_FORM_ref2:
9002     case DW_FORM_ref4:
9003     case DW_FORM_ref8:
9004     case DW_FORM_ref_udata:
9005       result = DW_ADDR (attr);
9006       break;
9007     default:
9008       complaint (&symfile_complaints,
9009                  _("unsupported die ref attribute form: '%s'"),
9010                  dwarf_form_name (attr->form));
9011     }
9012   return result;
9013 }
9014
9015 /* Return the constant value held by the given attribute.  Return -1
9016    if the value held by the attribute is not constant.  */
9017
9018 static int
9019 dwarf2_get_attr_constant_value (struct attribute *attr, int default_value)
9020 {
9021   if (attr->form == DW_FORM_sdata)
9022     return DW_SND (attr);
9023   else if (attr->form == DW_FORM_udata
9024            || attr->form == DW_FORM_data1
9025            || attr->form == DW_FORM_data2
9026            || attr->form == DW_FORM_data4
9027            || attr->form == DW_FORM_data8)
9028     return DW_UNSND (attr);
9029   else
9030     {
9031       complaint (&symfile_complaints, _("Attribute value is not a constant (%s)"),
9032                  dwarf_form_name (attr->form));
9033       return default_value;
9034     }
9035 }
9036
9037 static struct die_info *
9038 follow_die_ref (struct die_info *src_die, struct attribute *attr,
9039                 struct dwarf2_cu *cu)
9040 {
9041   struct die_info *die;
9042   unsigned int offset;
9043   int h;
9044   struct die_info temp_die;
9045   struct dwarf2_cu *target_cu;
9046
9047   offset = dwarf2_get_ref_die_offset (attr, cu);
9048
9049   if (DW_ADDR (attr) < cu->header.offset
9050       || DW_ADDR (attr) >= cu->header.offset + cu->header.length)
9051     {
9052       struct dwarf2_per_cu_data *per_cu;
9053       per_cu = dwarf2_find_containing_comp_unit (DW_ADDR (attr),
9054                                                  cu->objfile);
9055       target_cu = per_cu->cu;
9056     }
9057   else
9058     target_cu = cu;
9059
9060   h = (offset % REF_HASH_SIZE);
9061   die = target_cu->die_ref_table[h];
9062   while (die)
9063     {
9064       if (die->offset == offset)
9065         return die;
9066       die = die->next_ref;
9067     }
9068
9069   error (_("Dwarf Error: Cannot find DIE at 0x%lx referenced from DIE "
9070          "at 0x%lx [in module %s]"),
9071          (long) src_die->offset, (long) offset, cu->objfile->name);
9072
9073   return NULL;
9074 }
9075
9076 /* Decode simple location descriptions.
9077    Given a pointer to a dwarf block that defines a location, compute
9078    the location and return the value.
9079
9080    NOTE drow/2003-11-18: This function is called in two situations
9081    now: for the address of static or global variables (partial symbols
9082    only) and for offsets into structures which are expected to be
9083    (more or less) constant.  The partial symbol case should go away,
9084    and only the constant case should remain.  That will let this
9085    function complain more accurately.  A few special modes are allowed
9086    without complaint for global variables (for instance, global
9087    register values and thread-local values).
9088
9089    A location description containing no operations indicates that the
9090    object is optimized out.  The return value is 0 for that case.
9091    FIXME drow/2003-11-16: No callers check for this case any more; soon all
9092    callers will only want a very basic result and this can become a
9093    complaint.
9094
9095    Note that stack[0] is unused except as a default error return.
9096    Note that stack overflow is not yet handled.  */
9097
9098 static CORE_ADDR
9099 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
9100 {
9101   struct objfile *objfile = cu->objfile;
9102   struct comp_unit_head *cu_header = &cu->header;
9103   int i;
9104   int size = blk->size;
9105   gdb_byte *data = blk->data;
9106   CORE_ADDR stack[64];
9107   int stacki;
9108   unsigned int bytes_read, unsnd;
9109   gdb_byte op;
9110
9111   i = 0;
9112   stacki = 0;
9113   stack[stacki] = 0;
9114
9115   while (i < size)
9116     {
9117       op = data[i++];
9118       switch (op)
9119         {
9120         case DW_OP_lit0:
9121         case DW_OP_lit1:
9122         case DW_OP_lit2:
9123         case DW_OP_lit3:
9124         case DW_OP_lit4:
9125         case DW_OP_lit5:
9126         case DW_OP_lit6:
9127         case DW_OP_lit7:
9128         case DW_OP_lit8:
9129         case DW_OP_lit9:
9130         case DW_OP_lit10:
9131         case DW_OP_lit11:
9132         case DW_OP_lit12:
9133         case DW_OP_lit13:
9134         case DW_OP_lit14:
9135         case DW_OP_lit15:
9136         case DW_OP_lit16:
9137         case DW_OP_lit17:
9138         case DW_OP_lit18:
9139         case DW_OP_lit19:
9140         case DW_OP_lit20:
9141         case DW_OP_lit21:
9142         case DW_OP_lit22:
9143         case DW_OP_lit23:
9144         case DW_OP_lit24:
9145         case DW_OP_lit25:
9146         case DW_OP_lit26:
9147         case DW_OP_lit27:
9148         case DW_OP_lit28:
9149         case DW_OP_lit29:
9150         case DW_OP_lit30:
9151         case DW_OP_lit31:
9152           stack[++stacki] = op - DW_OP_lit0;
9153           break;
9154
9155         case DW_OP_reg0:
9156         case DW_OP_reg1:
9157         case DW_OP_reg2:
9158         case DW_OP_reg3:
9159         case DW_OP_reg4:
9160         case DW_OP_reg5:
9161         case DW_OP_reg6:
9162         case DW_OP_reg7:
9163         case DW_OP_reg8:
9164         case DW_OP_reg9:
9165         case DW_OP_reg10:
9166         case DW_OP_reg11:
9167         case DW_OP_reg12:
9168         case DW_OP_reg13:
9169         case DW_OP_reg14:
9170         case DW_OP_reg15:
9171         case DW_OP_reg16:
9172         case DW_OP_reg17:
9173         case DW_OP_reg18:
9174         case DW_OP_reg19:
9175         case DW_OP_reg20:
9176         case DW_OP_reg21:
9177         case DW_OP_reg22:
9178         case DW_OP_reg23:
9179         case DW_OP_reg24:
9180         case DW_OP_reg25:
9181         case DW_OP_reg26:
9182         case DW_OP_reg27:
9183         case DW_OP_reg28:
9184         case DW_OP_reg29:
9185         case DW_OP_reg30:
9186         case DW_OP_reg31:
9187           stack[++stacki] = op - DW_OP_reg0;
9188           if (i < size)
9189             dwarf2_complex_location_expr_complaint ();
9190           break;
9191
9192         case DW_OP_regx:
9193           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
9194           i += bytes_read;
9195           stack[++stacki] = unsnd;
9196           if (i < size)
9197             dwarf2_complex_location_expr_complaint ();
9198           break;
9199
9200         case DW_OP_addr:
9201           stack[++stacki] = read_address (objfile->obfd, &data[i],
9202                                           cu, &bytes_read);
9203           i += bytes_read;
9204           break;
9205
9206         case DW_OP_const1u:
9207           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
9208           i += 1;
9209           break;
9210
9211         case DW_OP_const1s:
9212           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
9213           i += 1;
9214           break;
9215
9216         case DW_OP_const2u:
9217           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
9218           i += 2;
9219           break;
9220
9221         case DW_OP_const2s:
9222           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
9223           i += 2;
9224           break;
9225
9226         case DW_OP_const4u:
9227           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
9228           i += 4;
9229           break;
9230
9231         case DW_OP_const4s:
9232           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
9233           i += 4;
9234           break;
9235
9236         case DW_OP_constu:
9237           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
9238                                                   &bytes_read);
9239           i += bytes_read;
9240           break;
9241
9242         case DW_OP_consts:
9243           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
9244           i += bytes_read;
9245           break;
9246
9247         case DW_OP_dup:
9248           stack[stacki + 1] = stack[stacki];
9249           stacki++;
9250           break;
9251
9252         case DW_OP_plus:
9253           stack[stacki - 1] += stack[stacki];
9254           stacki--;
9255           break;
9256
9257         case DW_OP_plus_uconst:
9258           stack[stacki] += read_unsigned_leb128 (NULL, (data + i), &bytes_read);
9259           i += bytes_read;
9260           break;
9261
9262         case DW_OP_minus:
9263           stack[stacki - 1] -= stack[stacki];
9264           stacki--;
9265           break;
9266
9267         case DW_OP_deref:
9268           /* If we're not the last op, then we definitely can't encode
9269              this using GDB's address_class enum.  This is valid for partial
9270              global symbols, although the variable's address will be bogus
9271              in the psymtab.  */
9272           if (i < size)
9273             dwarf2_complex_location_expr_complaint ();
9274           break;
9275
9276         case DW_OP_GNU_push_tls_address:
9277           /* The top of the stack has the offset from the beginning
9278              of the thread control block at which the variable is located.  */
9279           /* Nothing should follow this operator, so the top of stack would
9280              be returned.  */
9281           /* This is valid for partial global symbols, but the variable's
9282              address will be bogus in the psymtab.  */
9283           if (i < size)
9284             dwarf2_complex_location_expr_complaint ();
9285           break;
9286
9287         case DW_OP_GNU_uninit:
9288           break;
9289
9290         default:
9291           complaint (&symfile_complaints, _("unsupported stack op: '%s'"),
9292                      dwarf_stack_op_name (op));
9293           return (stack[stacki]);
9294         }
9295     }
9296   return (stack[stacki]);
9297 }
9298
9299 /* memory allocation interface */
9300
9301 static struct dwarf_block *
9302 dwarf_alloc_block (struct dwarf2_cu *cu)
9303 {
9304   struct dwarf_block *blk;
9305
9306   blk = (struct dwarf_block *)
9307     obstack_alloc (&cu->comp_unit_obstack, sizeof (struct dwarf_block));
9308   return (blk);
9309 }
9310
9311 static struct abbrev_info *
9312 dwarf_alloc_abbrev (struct dwarf2_cu *cu)
9313 {
9314   struct abbrev_info *abbrev;
9315
9316   abbrev = (struct abbrev_info *)
9317     obstack_alloc (&cu->abbrev_obstack, sizeof (struct abbrev_info));
9318   memset (abbrev, 0, sizeof (struct abbrev_info));
9319   return (abbrev);
9320 }
9321
9322 static struct die_info *
9323 dwarf_alloc_die (void)
9324 {
9325   struct die_info *die;
9326
9327   die = (struct die_info *) xmalloc (sizeof (struct die_info));
9328   memset (die, 0, sizeof (struct die_info));
9329   return (die);
9330 }
9331
9332 \f
9333 /* Macro support.  */
9334
9335
9336 /* Return the full name of file number I in *LH's file name table.
9337    Use COMP_DIR as the name of the current directory of the
9338    compilation.  The result is allocated using xmalloc; the caller is
9339    responsible for freeing it.  */
9340 static char *
9341 file_full_name (int file, struct line_header *lh, const char *comp_dir)
9342 {
9343   /* Is the file number a valid index into the line header's file name
9344      table?  Remember that file numbers start with one, not zero.  */
9345   if (1 <= file && file <= lh->num_file_names)
9346     {
9347       struct file_entry *fe = &lh->file_names[file - 1];
9348   
9349       if (IS_ABSOLUTE_PATH (fe->name))
9350         return xstrdup (fe->name);
9351       else
9352         {
9353           const char *dir;
9354           int dir_len;
9355           char *full_name;
9356
9357           if (fe->dir_index)
9358             dir = lh->include_dirs[fe->dir_index - 1];
9359           else
9360             dir = comp_dir;
9361
9362           if (dir)
9363             {
9364               dir_len = strlen (dir);
9365               full_name = xmalloc (dir_len + 1 + strlen (fe->name) + 1);
9366               strcpy (full_name, dir);
9367               full_name[dir_len] = '/';
9368               strcpy (full_name + dir_len + 1, fe->name);
9369               return full_name;
9370             }
9371           else
9372             return xstrdup (fe->name);
9373         }
9374     }
9375   else
9376     {
9377       /* The compiler produced a bogus file number.  We can at least
9378          record the macro definitions made in the file, even if we
9379          won't be able to find the file by name.  */
9380       char fake_name[80];
9381       sprintf (fake_name, "<bad macro file number %d>", file);
9382
9383       complaint (&symfile_complaints, 
9384                  _("bad file number in macro information (%d)"),
9385                  file);
9386
9387       return xstrdup (fake_name);
9388     }
9389 }
9390
9391
9392 static struct macro_source_file *
9393 macro_start_file (int file, int line,
9394                   struct macro_source_file *current_file,
9395                   const char *comp_dir,
9396                   struct line_header *lh, struct objfile *objfile)
9397 {
9398   /* The full name of this source file.  */
9399   char *full_name = file_full_name (file, lh, comp_dir);
9400
9401   /* We don't create a macro table for this compilation unit
9402      at all until we actually get a filename.  */
9403   if (! pending_macros)
9404     pending_macros = new_macro_table (&objfile->objfile_obstack,
9405                                       objfile->macro_cache);
9406
9407   if (! current_file)
9408     /* If we have no current file, then this must be the start_file
9409        directive for the compilation unit's main source file.  */
9410     current_file = macro_set_main (pending_macros, full_name);
9411   else
9412     current_file = macro_include (current_file, line, full_name);
9413
9414   xfree (full_name);
9415               
9416   return current_file;
9417 }
9418
9419
9420 /* Copy the LEN characters at BUF to a xmalloc'ed block of memory,
9421    followed by a null byte.  */
9422 static char *
9423 copy_string (const char *buf, int len)
9424 {
9425   char *s = xmalloc (len + 1);
9426   memcpy (s, buf, len);
9427   s[len] = '\0';
9428
9429   return s;
9430 }
9431
9432
9433 static const char *
9434 consume_improper_spaces (const char *p, const char *body)
9435 {
9436   if (*p == ' ')
9437     {
9438       complaint (&symfile_complaints,
9439                  _("macro definition contains spaces in formal argument list:\n`%s'"),
9440                  body);
9441
9442       while (*p == ' ')
9443         p++;
9444     }
9445
9446   return p;
9447 }
9448
9449
9450 static void
9451 parse_macro_definition (struct macro_source_file *file, int line,
9452                         const char *body)
9453 {
9454   const char *p;
9455
9456   /* The body string takes one of two forms.  For object-like macro
9457      definitions, it should be:
9458
9459         <macro name> " " <definition>
9460
9461      For function-like macro definitions, it should be:
9462
9463         <macro name> "() " <definition>
9464      or
9465         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
9466
9467      Spaces may appear only where explicitly indicated, and in the
9468      <definition>.
9469
9470      The Dwarf 2 spec says that an object-like macro's name is always
9471      followed by a space, but versions of GCC around March 2002 omit
9472      the space when the macro's definition is the empty string. 
9473
9474      The Dwarf 2 spec says that there should be no spaces between the
9475      formal arguments in a function-like macro's formal argument list,
9476      but versions of GCC around March 2002 include spaces after the
9477      commas.  */
9478
9479
9480   /* Find the extent of the macro name.  The macro name is terminated
9481      by either a space or null character (for an object-like macro) or
9482      an opening paren (for a function-like macro).  */
9483   for (p = body; *p; p++)
9484     if (*p == ' ' || *p == '(')
9485       break;
9486
9487   if (*p == ' ' || *p == '\0')
9488     {
9489       /* It's an object-like macro.  */
9490       int name_len = p - body;
9491       char *name = copy_string (body, name_len);
9492       const char *replacement;
9493
9494       if (*p == ' ')
9495         replacement = body + name_len + 1;
9496       else
9497         {
9498           dwarf2_macro_malformed_definition_complaint (body);
9499           replacement = body + name_len;
9500         }
9501       
9502       macro_define_object (file, line, name, replacement);
9503
9504       xfree (name);
9505     }
9506   else if (*p == '(')
9507     {
9508       /* It's a function-like macro.  */
9509       char *name = copy_string (body, p - body);
9510       int argc = 0;
9511       int argv_size = 1;
9512       char **argv = xmalloc (argv_size * sizeof (*argv));
9513
9514       p++;
9515
9516       p = consume_improper_spaces (p, body);
9517
9518       /* Parse the formal argument list.  */
9519       while (*p && *p != ')')
9520         {
9521           /* Find the extent of the current argument name.  */
9522           const char *arg_start = p;
9523
9524           while (*p && *p != ',' && *p != ')' && *p != ' ')
9525             p++;
9526
9527           if (! *p || p == arg_start)
9528             dwarf2_macro_malformed_definition_complaint (body);
9529           else
9530             {
9531               /* Make sure argv has room for the new argument.  */
9532               if (argc >= argv_size)
9533                 {
9534                   argv_size *= 2;
9535                   argv = xrealloc (argv, argv_size * sizeof (*argv));
9536                 }
9537
9538               argv[argc++] = copy_string (arg_start, p - arg_start);
9539             }
9540
9541           p = consume_improper_spaces (p, body);
9542
9543           /* Consume the comma, if present.  */
9544           if (*p == ',')
9545             {
9546               p++;
9547
9548               p = consume_improper_spaces (p, body);
9549             }
9550         }
9551
9552       if (*p == ')')
9553         {
9554           p++;
9555
9556           if (*p == ' ')
9557             /* Perfectly formed definition, no complaints.  */
9558             macro_define_function (file, line, name,
9559                                    argc, (const char **) argv, 
9560                                    p + 1);
9561           else if (*p == '\0')
9562             {
9563               /* Complain, but do define it.  */
9564               dwarf2_macro_malformed_definition_complaint (body);
9565               macro_define_function (file, line, name,
9566                                      argc, (const char **) argv, 
9567                                      p);
9568             }
9569           else
9570             /* Just complain.  */
9571             dwarf2_macro_malformed_definition_complaint (body);
9572         }
9573       else
9574         /* Just complain.  */
9575         dwarf2_macro_malformed_definition_complaint (body);
9576
9577       xfree (name);
9578       {
9579         int i;
9580
9581         for (i = 0; i < argc; i++)
9582           xfree (argv[i]);
9583       }
9584       xfree (argv);
9585     }
9586   else
9587     dwarf2_macro_malformed_definition_complaint (body);
9588 }
9589
9590
9591 static void
9592 dwarf_decode_macros (struct line_header *lh, unsigned int offset,
9593                      char *comp_dir, bfd *abfd,
9594                      struct dwarf2_cu *cu)
9595 {
9596   gdb_byte *mac_ptr, *mac_end;
9597   struct macro_source_file *current_file = 0;
9598
9599   if (dwarf2_per_objfile->macinfo_buffer == NULL)
9600     {
9601       complaint (&symfile_complaints, _("missing .debug_macinfo section"));
9602       return;
9603     }
9604
9605   mac_ptr = dwarf2_per_objfile->macinfo_buffer + offset;
9606   mac_end = dwarf2_per_objfile->macinfo_buffer
9607     + dwarf2_per_objfile->macinfo_size;
9608
9609   for (;;)
9610     {
9611       enum dwarf_macinfo_record_type macinfo_type;
9612
9613       /* Do we at least have room for a macinfo type byte?  */
9614       if (mac_ptr >= mac_end)
9615         {
9616           dwarf2_macros_too_long_complaint ();
9617           return;
9618         }
9619
9620       macinfo_type = read_1_byte (abfd, mac_ptr);
9621       mac_ptr++;
9622
9623       switch (macinfo_type)
9624         {
9625           /* A zero macinfo type indicates the end of the macro
9626              information.  */
9627         case 0:
9628           return;
9629
9630         case DW_MACINFO_define:
9631         case DW_MACINFO_undef:
9632           {
9633             unsigned int bytes_read;
9634             int line;
9635             char *body;
9636
9637             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
9638             mac_ptr += bytes_read;
9639             body = read_string (abfd, mac_ptr, &bytes_read);
9640             mac_ptr += bytes_read;
9641
9642             if (! current_file)
9643               complaint (&symfile_complaints,
9644                          _("debug info gives macro %s outside of any file: %s"),
9645                          macinfo_type ==
9646                          DW_MACINFO_define ? "definition" : macinfo_type ==
9647                          DW_MACINFO_undef ? "undefinition" :
9648                          "something-or-other", body);
9649             else
9650               {
9651                 if (macinfo_type == DW_MACINFO_define)
9652                   parse_macro_definition (current_file, line, body);
9653                 else if (macinfo_type == DW_MACINFO_undef)
9654                   macro_undef (current_file, line, body);
9655               }
9656           }
9657           break;
9658
9659         case DW_MACINFO_start_file:
9660           {
9661             unsigned int bytes_read;
9662             int line, file;
9663
9664             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
9665             mac_ptr += bytes_read;
9666             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
9667             mac_ptr += bytes_read;
9668
9669             current_file = macro_start_file (file, line,
9670                                              current_file, comp_dir,
9671                                              lh, cu->objfile);
9672           }
9673           break;
9674
9675         case DW_MACINFO_end_file:
9676           if (! current_file)
9677             complaint (&symfile_complaints,
9678                        _("macro debug info has an unmatched `close_file' directive"));
9679           else
9680             {
9681               current_file = current_file->included_by;
9682               if (! current_file)
9683                 {
9684                   enum dwarf_macinfo_record_type next_type;
9685
9686                   /* GCC circa March 2002 doesn't produce the zero
9687                      type byte marking the end of the compilation
9688                      unit.  Complain if it's not there, but exit no
9689                      matter what.  */
9690
9691                   /* Do we at least have room for a macinfo type byte?  */
9692                   if (mac_ptr >= mac_end)
9693                     {
9694                       dwarf2_macros_too_long_complaint ();
9695                       return;
9696                     }
9697
9698                   /* We don't increment mac_ptr here, so this is just
9699                      a look-ahead.  */
9700                   next_type = read_1_byte (abfd, mac_ptr);
9701                   if (next_type != 0)
9702                     complaint (&symfile_complaints,
9703                                _("no terminating 0-type entry for macros in `.debug_macinfo' section"));
9704
9705                   return;
9706                 }
9707             }
9708           break;
9709
9710         case DW_MACINFO_vendor_ext:
9711           {
9712             unsigned int bytes_read;
9713             int constant;
9714             char *string;
9715
9716             constant = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
9717             mac_ptr += bytes_read;
9718             string = read_string (abfd, mac_ptr, &bytes_read);
9719             mac_ptr += bytes_read;
9720
9721             /* We don't recognize any vendor extensions.  */
9722           }
9723           break;
9724         }
9725     }
9726 }
9727
9728 /* Check if the attribute's form is a DW_FORM_block*
9729    if so return true else false. */
9730 static int
9731 attr_form_is_block (struct attribute *attr)
9732 {
9733   return (attr == NULL ? 0 :
9734       attr->form == DW_FORM_block1
9735       || attr->form == DW_FORM_block2
9736       || attr->form == DW_FORM_block4
9737       || attr->form == DW_FORM_block);
9738 }
9739
9740 /* Return non-zero if ATTR's value is a section offset --- classes
9741    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
9742    You may use DW_UNSND (attr) to retrieve such offsets.
9743
9744    Section 7.5.4, "Attribute Encodings", explains that no attribute
9745    may have a value that belongs to more than one of these classes; it
9746    would be ambiguous if we did, because we use the same forms for all
9747    of them.  */
9748 static int
9749 attr_form_is_section_offset (struct attribute *attr)
9750 {
9751   return (attr->form == DW_FORM_data4
9752           || attr->form == DW_FORM_data8);
9753 }
9754
9755
9756 /* Return non-zero if ATTR's value falls in the 'constant' class, or
9757    zero otherwise.  When this function returns true, you can apply
9758    dwarf2_get_attr_constant_value to it.
9759
9760    However, note that for some attributes you must check
9761    attr_form_is_section_offset before using this test.  DW_FORM_data4
9762    and DW_FORM_data8 are members of both the constant class, and of
9763    the classes that contain offsets into other debug sections
9764    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
9765    that, if an attribute's can be either a constant or one of the
9766    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
9767    taken as section offsets, not constants.  */
9768 static int
9769 attr_form_is_constant (struct attribute *attr)
9770 {
9771   switch (attr->form)
9772     {
9773     case DW_FORM_sdata:
9774     case DW_FORM_udata:
9775     case DW_FORM_data1:
9776     case DW_FORM_data2:
9777     case DW_FORM_data4:
9778     case DW_FORM_data8:
9779       return 1;
9780     default:
9781       return 0;
9782     }
9783 }
9784
9785 static void
9786 dwarf2_symbol_mark_computed (struct attribute *attr, struct symbol *sym,
9787                              struct dwarf2_cu *cu)
9788 {
9789   struct objfile *objfile = cu->objfile;
9790
9791   /* Save the master objfile, so that we can report and look up the
9792      correct file containing this variable.  */
9793   if (objfile->separate_debug_objfile_backlink)
9794     objfile = objfile->separate_debug_objfile_backlink;
9795
9796   if (attr_form_is_section_offset (attr)
9797       /* ".debug_loc" may not exist at all, or the offset may be outside
9798          the section.  If so, fall through to the complaint in the
9799          other branch.  */
9800       && DW_UNSND (attr) < dwarf2_per_objfile->loc_size)
9801     {
9802       struct dwarf2_loclist_baton *baton;
9803
9804       baton = obstack_alloc (&cu->objfile->objfile_obstack,
9805                              sizeof (struct dwarf2_loclist_baton));
9806       baton->objfile = objfile;
9807
9808       /* We don't know how long the location list is, but make sure we
9809          don't run off the edge of the section.  */
9810       baton->size = dwarf2_per_objfile->loc_size - DW_UNSND (attr);
9811       baton->data = dwarf2_per_objfile->loc_buffer + DW_UNSND (attr);
9812       baton->base_address = cu->header.base_address;
9813       if (cu->header.base_known == 0)
9814         complaint (&symfile_complaints,
9815                    _("Location list used without specifying the CU base address."));
9816
9817       SYMBOL_OPS (sym) = &dwarf2_loclist_funcs;
9818       SYMBOL_LOCATION_BATON (sym) = baton;
9819     }
9820   else
9821     {
9822       struct dwarf2_locexpr_baton *baton;
9823
9824       baton = obstack_alloc (&cu->objfile->objfile_obstack,
9825                              sizeof (struct dwarf2_locexpr_baton));
9826       baton->objfile = objfile;
9827
9828       if (attr_form_is_block (attr))
9829         {
9830           /* Note that we're just copying the block's data pointer
9831              here, not the actual data.  We're still pointing into the
9832              info_buffer for SYM's objfile; right now we never release
9833              that buffer, but when we do clean up properly this may
9834              need to change.  */
9835           baton->size = DW_BLOCK (attr)->size;
9836           baton->data = DW_BLOCK (attr)->data;
9837         }
9838       else
9839         {
9840           dwarf2_invalid_attrib_class_complaint ("location description",
9841                                                  SYMBOL_NATURAL_NAME (sym));
9842           baton->size = 0;
9843           baton->data = NULL;
9844         }
9845       
9846       SYMBOL_OPS (sym) = &dwarf2_locexpr_funcs;
9847       SYMBOL_LOCATION_BATON (sym) = baton;
9848     }
9849 }
9850
9851 /* Locate the compilation unit from CU's objfile which contains the
9852    DIE at OFFSET.  Raises an error on failure.  */
9853
9854 static struct dwarf2_per_cu_data *
9855 dwarf2_find_containing_comp_unit (unsigned long offset,
9856                                   struct objfile *objfile)
9857 {
9858   struct dwarf2_per_cu_data *this_cu;
9859   int low, high;
9860
9861   low = 0;
9862   high = dwarf2_per_objfile->n_comp_units - 1;
9863   while (high > low)
9864     {
9865       int mid = low + (high - low) / 2;
9866       if (dwarf2_per_objfile->all_comp_units[mid]->offset >= offset)
9867         high = mid;
9868       else
9869         low = mid + 1;
9870     }
9871   gdb_assert (low == high);
9872   if (dwarf2_per_objfile->all_comp_units[low]->offset > offset)
9873     {
9874       if (low == 0)
9875         error (_("Dwarf Error: could not find partial DIE containing "
9876                "offset 0x%lx [in module %s]"),
9877                (long) offset, bfd_get_filename (objfile->obfd));
9878
9879       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->offset <= offset);
9880       return dwarf2_per_objfile->all_comp_units[low-1];
9881     }
9882   else
9883     {
9884       this_cu = dwarf2_per_objfile->all_comp_units[low];
9885       if (low == dwarf2_per_objfile->n_comp_units - 1
9886           && offset >= this_cu->offset + this_cu->length)
9887         error (_("invalid dwarf2 offset %ld"), offset);
9888       gdb_assert (offset < this_cu->offset + this_cu->length);
9889       return this_cu;
9890     }
9891 }
9892
9893 /* Locate the compilation unit from OBJFILE which is located at exactly
9894    OFFSET.  Raises an error on failure.  */
9895
9896 static struct dwarf2_per_cu_data *
9897 dwarf2_find_comp_unit (unsigned long offset, struct objfile *objfile)
9898 {
9899   struct dwarf2_per_cu_data *this_cu;
9900   this_cu = dwarf2_find_containing_comp_unit (offset, objfile);
9901   if (this_cu->offset != offset)
9902     error (_("no compilation unit with offset %ld."), offset);
9903   return this_cu;
9904 }
9905
9906 /* Release one cached compilation unit, CU.  We unlink it from the tree
9907    of compilation units, but we don't remove it from the read_in_chain;
9908    the caller is responsible for that.  */
9909
9910 static void
9911 free_one_comp_unit (void *data)
9912 {
9913   struct dwarf2_cu *cu = data;
9914
9915   if (cu->per_cu != NULL)
9916     cu->per_cu->cu = NULL;
9917   cu->per_cu = NULL;
9918
9919   obstack_free (&cu->comp_unit_obstack, NULL);
9920   if (cu->dies)
9921     free_die_list (cu->dies);
9922
9923   xfree (cu);
9924 }
9925
9926 /* This cleanup function is passed the address of a dwarf2_cu on the stack
9927    when we're finished with it.  We can't free the pointer itself, but be
9928    sure to unlink it from the cache.  Also release any associated storage
9929    and perform cache maintenance.
9930
9931    Only used during partial symbol parsing.  */
9932
9933 static void
9934 free_stack_comp_unit (void *data)
9935 {
9936   struct dwarf2_cu *cu = data;
9937
9938   obstack_free (&cu->comp_unit_obstack, NULL);
9939   cu->partial_dies = NULL;
9940
9941   if (cu->per_cu != NULL)
9942     {
9943       /* This compilation unit is on the stack in our caller, so we
9944          should not xfree it.  Just unlink it.  */
9945       cu->per_cu->cu = NULL;
9946       cu->per_cu = NULL;
9947
9948       /* If we had a per-cu pointer, then we may have other compilation
9949          units loaded, so age them now.  */
9950       age_cached_comp_units ();
9951     }
9952 }
9953
9954 /* Free all cached compilation units.  */
9955
9956 static void
9957 free_cached_comp_units (void *data)
9958 {
9959   struct dwarf2_per_cu_data *per_cu, **last_chain;
9960
9961   per_cu = dwarf2_per_objfile->read_in_chain;
9962   last_chain = &dwarf2_per_objfile->read_in_chain;
9963   while (per_cu != NULL)
9964     {
9965       struct dwarf2_per_cu_data *next_cu;
9966
9967       next_cu = per_cu->cu->read_in_chain;
9968
9969       free_one_comp_unit (per_cu->cu);
9970       *last_chain = next_cu;
9971
9972       per_cu = next_cu;
9973     }
9974 }
9975
9976 /* Increase the age counter on each cached compilation unit, and free
9977    any that are too old.  */
9978
9979 static void
9980 age_cached_comp_units (void)
9981 {
9982   struct dwarf2_per_cu_data *per_cu, **last_chain;
9983
9984   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
9985   per_cu = dwarf2_per_objfile->read_in_chain;
9986   while (per_cu != NULL)
9987     {
9988       per_cu->cu->last_used ++;
9989       if (per_cu->cu->last_used <= dwarf2_max_cache_age)
9990         dwarf2_mark (per_cu->cu);
9991       per_cu = per_cu->cu->read_in_chain;
9992     }
9993
9994   per_cu = dwarf2_per_objfile->read_in_chain;
9995   last_chain = &dwarf2_per_objfile->read_in_chain;
9996   while (per_cu != NULL)
9997     {
9998       struct dwarf2_per_cu_data *next_cu;
9999
10000       next_cu = per_cu->cu->read_in_chain;
10001
10002       if (!per_cu->cu->mark)
10003         {
10004           free_one_comp_unit (per_cu->cu);
10005           *last_chain = next_cu;
10006         }
10007       else
10008         last_chain = &per_cu->cu->read_in_chain;
10009
10010       per_cu = next_cu;
10011     }
10012 }
10013
10014 /* Remove a single compilation unit from the cache.  */
10015
10016 static void
10017 free_one_cached_comp_unit (void *target_cu)
10018 {
10019   struct dwarf2_per_cu_data *per_cu, **last_chain;
10020
10021   per_cu = dwarf2_per_objfile->read_in_chain;
10022   last_chain = &dwarf2_per_objfile->read_in_chain;
10023   while (per_cu != NULL)
10024     {
10025       struct dwarf2_per_cu_data *next_cu;
10026
10027       next_cu = per_cu->cu->read_in_chain;
10028
10029       if (per_cu->cu == target_cu)
10030         {
10031           free_one_comp_unit (per_cu->cu);
10032           *last_chain = next_cu;
10033           break;
10034         }
10035       else
10036         last_chain = &per_cu->cu->read_in_chain;
10037
10038       per_cu = next_cu;
10039     }
10040 }
10041
10042 /* Release all extra memory associated with OBJFILE.  */
10043
10044 void
10045 dwarf2_free_objfile (struct objfile *objfile)
10046 {
10047   dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
10048
10049   if (dwarf2_per_objfile == NULL)
10050     return;
10051
10052   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
10053   free_cached_comp_units (NULL);
10054
10055   /* Everything else should be on the objfile obstack.  */
10056 }
10057
10058 /* A pair of DIE offset and GDB type pointer.  We store these
10059    in a hash table separate from the DIEs, and preserve them
10060    when the DIEs are flushed out of cache.  */
10061
10062 struct dwarf2_offset_and_type
10063 {
10064   unsigned int offset;
10065   struct type *type;
10066 };
10067
10068 /* Hash function for a dwarf2_offset_and_type.  */
10069
10070 static hashval_t
10071 offset_and_type_hash (const void *item)
10072 {
10073   const struct dwarf2_offset_and_type *ofs = item;
10074   return ofs->offset;
10075 }
10076
10077 /* Equality function for a dwarf2_offset_and_type.  */
10078
10079 static int
10080 offset_and_type_eq (const void *item_lhs, const void *item_rhs)
10081 {
10082   const struct dwarf2_offset_and_type *ofs_lhs = item_lhs;
10083   const struct dwarf2_offset_and_type *ofs_rhs = item_rhs;
10084   return ofs_lhs->offset == ofs_rhs->offset;
10085 }
10086
10087 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
10088    table if necessary.  */
10089
10090 static void
10091 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
10092 {
10093   struct dwarf2_offset_and_type **slot, ofs;
10094
10095   die->type = type;
10096
10097   if (cu->per_cu == NULL)
10098     return;
10099
10100   if (cu->per_cu->type_hash == NULL)
10101     cu->per_cu->type_hash
10102       = htab_create_alloc_ex (cu->header.length / 24,
10103                               offset_and_type_hash,
10104                               offset_and_type_eq,
10105                               NULL,
10106                               &cu->objfile->objfile_obstack,
10107                               hashtab_obstack_allocate,
10108                               dummy_obstack_deallocate);
10109
10110   ofs.offset = die->offset;
10111   ofs.type = type;
10112   slot = (struct dwarf2_offset_and_type **)
10113     htab_find_slot_with_hash (cu->per_cu->type_hash, &ofs, ofs.offset, INSERT);
10114   *slot = obstack_alloc (&cu->objfile->objfile_obstack, sizeof (**slot));
10115   **slot = ofs;
10116 }
10117
10118 /* Find the type for DIE in TYPE_HASH, or return NULL if DIE does not
10119    have a saved type.  */
10120
10121 static struct type *
10122 get_die_type (struct die_info *die, htab_t type_hash)
10123 {
10124   struct dwarf2_offset_and_type *slot, ofs;
10125
10126   ofs.offset = die->offset;
10127   slot = htab_find_with_hash (type_hash, &ofs, ofs.offset);
10128   if (slot)
10129     return slot->type;
10130   else
10131     return NULL;
10132 }
10133
10134 /* Restore the types of the DIE tree starting at START_DIE from the hash
10135    table saved in CU.  */
10136
10137 static void
10138 reset_die_and_siblings_types (struct die_info *start_die, struct dwarf2_cu *cu)
10139 {
10140   struct die_info *die;
10141
10142   if (cu->per_cu->type_hash == NULL)
10143     return;
10144
10145   for (die = start_die; die != NULL; die = die->sibling)
10146     {
10147       die->type = get_die_type (die, cu->per_cu->type_hash);
10148       if (die->child != NULL)
10149         reset_die_and_siblings_types (die->child, cu);
10150     }
10151 }
10152
10153 /* Set the mark field in CU and in every other compilation unit in the
10154    cache that we must keep because we are keeping CU.  */
10155
10156 /* Add a dependence relationship from CU to REF_PER_CU.  */
10157
10158 static void
10159 dwarf2_add_dependence (struct dwarf2_cu *cu,
10160                        struct dwarf2_per_cu_data *ref_per_cu)
10161 {
10162   void **slot;
10163
10164   if (cu->dependencies == NULL)
10165     cu->dependencies
10166       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
10167                               NULL, &cu->comp_unit_obstack,
10168                               hashtab_obstack_allocate,
10169                               dummy_obstack_deallocate);
10170
10171   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
10172   if (*slot == NULL)
10173     *slot = ref_per_cu;
10174 }
10175
10176 /* Set the mark field in CU and in every other compilation unit in the
10177    cache that we must keep because we are keeping CU.  */
10178
10179 static int
10180 dwarf2_mark_helper (void **slot, void *data)
10181 {
10182   struct dwarf2_per_cu_data *per_cu;
10183
10184   per_cu = (struct dwarf2_per_cu_data *) *slot;
10185   if (per_cu->cu->mark)
10186     return 1;
10187   per_cu->cu->mark = 1;
10188
10189   if (per_cu->cu->dependencies != NULL)
10190     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
10191
10192   return 1;
10193 }
10194
10195 static void
10196 dwarf2_mark (struct dwarf2_cu *cu)
10197 {
10198   if (cu->mark)
10199     return;
10200   cu->mark = 1;
10201   if (cu->dependencies != NULL)
10202     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
10203 }
10204
10205 static void
10206 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
10207 {
10208   while (per_cu)
10209     {
10210       per_cu->cu->mark = 0;
10211       per_cu = per_cu->cu->read_in_chain;
10212     }
10213 }
10214
10215 /* Trivial hash function for partial_die_info: the hash value of a DIE
10216    is its offset in .debug_info for this objfile.  */
10217
10218 static hashval_t
10219 partial_die_hash (const void *item)
10220 {
10221   const struct partial_die_info *part_die = item;
10222   return part_die->offset;
10223 }
10224
10225 /* Trivial comparison function for partial_die_info structures: two DIEs
10226    are equal if they have the same offset.  */
10227
10228 static int
10229 partial_die_eq (const void *item_lhs, const void *item_rhs)
10230 {
10231   const struct partial_die_info *part_die_lhs = item_lhs;
10232   const struct partial_die_info *part_die_rhs = item_rhs;
10233   return part_die_lhs->offset == part_die_rhs->offset;
10234 }
10235
10236 static struct cmd_list_element *set_dwarf2_cmdlist;
10237 static struct cmd_list_element *show_dwarf2_cmdlist;
10238
10239 static void
10240 set_dwarf2_cmd (char *args, int from_tty)
10241 {
10242   help_list (set_dwarf2_cmdlist, "maintenance set dwarf2 ", -1, gdb_stdout);
10243 }
10244
10245 static void
10246 show_dwarf2_cmd (char *args, int from_tty)
10247
10248   cmd_show_list (show_dwarf2_cmdlist, from_tty, "");
10249 }
10250
10251 void _initialize_dwarf2_read (void);
10252
10253 void
10254 _initialize_dwarf2_read (void)
10255 {
10256   dwarf2_objfile_data_key = register_objfile_data ();
10257
10258   add_prefix_cmd ("dwarf2", class_maintenance, set_dwarf2_cmd, _("\
10259 Set DWARF 2 specific variables.\n\
10260 Configure DWARF 2 variables such as the cache size"),
10261                   &set_dwarf2_cmdlist, "maintenance set dwarf2 ",
10262                   0/*allow-unknown*/, &maintenance_set_cmdlist);
10263
10264   add_prefix_cmd ("dwarf2", class_maintenance, show_dwarf2_cmd, _("\
10265 Show DWARF 2 specific variables\n\
10266 Show DWARF 2 variables such as the cache size"),
10267                   &show_dwarf2_cmdlist, "maintenance show dwarf2 ",
10268                   0/*allow-unknown*/, &maintenance_show_cmdlist);
10269
10270   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
10271                             &dwarf2_max_cache_age, _("\
10272 Set the upper bound on the age of cached dwarf2 compilation units."), _("\
10273 Show the upper bound on the age of cached dwarf2 compilation units."), _("\
10274 A higher limit means that cached compilation units will be stored\n\
10275 in memory longer, and more total memory will be used.  Zero disables\n\
10276 caching, which can slow down startup."),
10277                             NULL,
10278                             show_dwarf2_max_cache_age,
10279                             &set_dwarf2_cmdlist,
10280                             &show_dwarf2_cmdlist);
10281 }