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