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