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