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