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