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