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