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