da82a2e831cc0383fb29777871ff69022754c392
[platform/upstream/binutils.git] / gdb / dwarf2read.c
1 /* DWARF 2 debugging format support for GDB.
2
3    Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
4                  2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
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 #include "typeprint.h"
52 #include "jv-lang.h"
53 #include "psympriv.h"
54 #include "exceptions.h"
55 #include "gdb_stat.h"
56 #include "completer.h"
57 #include "vec.h"
58 #include "c-lang.h"
59 #include "valprint.h"
60 #include <ctype.h>
61
62 #include <fcntl.h>
63 #include "gdb_string.h"
64 #include "gdb_assert.h"
65 #include <sys/types.h>
66 #ifdef HAVE_ZLIB_H
67 #include <zlib.h>
68 #endif
69 #ifdef HAVE_MMAP
70 #include <sys/mman.h>
71 #ifndef MAP_FAILED
72 #define MAP_FAILED ((void *) -1)
73 #endif
74 #endif
75
76 typedef struct symbol *symbolp;
77 DEF_VEC_P (symbolp);
78
79 #if 0
80 /* .debug_info header for a compilation unit
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 comp_unit_header
84   {
85     unsigned int length;        /* length of the .debug_info
86                                    contribution */
87     unsigned short version;     /* version number -- 2 for DWARF
88                                    version 2 */
89     unsigned int abbrev_offset; /* offset into .debug_abbrev section */
90     unsigned char addr_size;    /* byte size of an address -- 4 */
91   }
92 _COMP_UNIT_HEADER;
93 #define _ACTUAL_COMP_UNIT_HEADER_SIZE 11
94 #endif
95
96 /* .debug_line statement program prologue
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 statement_prologue
100   {
101     unsigned int total_length;  /* byte length of the statement
102                                    information */
103     unsigned short version;     /* version number -- 2 for DWARF
104                                    version 2 */
105     unsigned int prologue_length;       /* # bytes between prologue &
106                                            stmt program */
107     unsigned char minimum_instruction_length;   /* byte size of
108                                                    smallest instr */
109     unsigned char default_is_stmt;      /* initial value of is_stmt
110                                            register */
111     char line_base;
112     unsigned char line_range;
113     unsigned char opcode_base;  /* number assigned to first special
114                                    opcode */
115     unsigned char *standard_opcode_lengths;
116   }
117 _STATEMENT_PROLOGUE;
118
119 /* When non-zero, dump DIEs after they are read in.  */
120 static int dwarf2_die_debug = 0;
121
122 /* When non-zero, cross-check physname against demangler.  */
123 static int check_physname = 0;
124
125 static int pagesize;
126
127 /* When set, the file that we're processing is known to have debugging
128    info for C++ namespaces.  GCC 3.3.x did not produce this information,
129    but later versions do.  */
130
131 static int processing_has_namespace_info;
132
133 static const struct objfile_data *dwarf2_objfile_data_key;
134
135 struct dwarf2_section_info
136 {
137   asection *asection;
138   gdb_byte *buffer;
139   bfd_size_type size;
140   /* Not NULL if the section was actually mmapped.  */
141   void *map_addr;
142   /* Page aligned size of mmapped area.  */
143   bfd_size_type map_len;
144   /* True if we have tried to read this section.  */
145   int readin;
146 };
147
148 /* All offsets in the index are of this type.  It must be
149    architecture-independent.  */
150 typedef uint32_t offset_type;
151
152 DEF_VEC_I (offset_type);
153
154 /* A description of the mapped index.  The file format is described in
155    a comment by the code that writes the index.  */
156 struct mapped_index
157 {
158   /* Index data format version.  */
159   int version;
160
161   /* The total length of the buffer.  */
162   off_t total_size;
163
164   /* A pointer to the address table data.  */
165   const gdb_byte *address_table;
166
167   /* Size of the address table data in bytes.  */
168   offset_type address_table_size;
169
170   /* The symbol table, implemented as a hash table.  */
171   const offset_type *symbol_table;
172
173   /* Size in slots, each slot is 2 offset_types.  */
174   offset_type symbol_table_slots;
175
176   /* A pointer to the constant pool.  */
177   const char *constant_pool;
178 };
179
180 struct dwarf2_per_objfile
181 {
182   struct dwarf2_section_info info;
183   struct dwarf2_section_info abbrev;
184   struct dwarf2_section_info line;
185   struct dwarf2_section_info loc;
186   struct dwarf2_section_info macinfo;
187   struct dwarf2_section_info str;
188   struct dwarf2_section_info ranges;
189   struct dwarf2_section_info types;
190   struct dwarf2_section_info frame;
191   struct dwarf2_section_info eh_frame;
192   struct dwarf2_section_info gdb_index;
193
194   /* Back link.  */
195   struct objfile *objfile;
196
197   /* A list of all the compilation units.  This is used to locate
198      the target compilation unit of a particular reference.  */
199   struct dwarf2_per_cu_data **all_comp_units;
200
201   /* The number of compilation units in ALL_COMP_UNITS.  */
202   int n_comp_units;
203
204   /* The number of .debug_types-related CUs.  */
205   int n_type_comp_units;
206
207   /* The .debug_types-related CUs.  */
208   struct dwarf2_per_cu_data **type_comp_units;
209
210   /* A chain of compilation units that are currently read in, so that
211      they can be freed later.  */
212   struct dwarf2_per_cu_data *read_in_chain;
213
214   /* A table mapping .debug_types signatures to its signatured_type entry.
215      This is NULL if the .debug_types section hasn't been read in yet.  */
216   htab_t signatured_types;
217
218   /* A flag indicating wether this objfile has a section loaded at a
219      VMA of 0.  */
220   int has_section_at_zero;
221
222   /* True if we are using the mapped index,
223      or we are faking it for OBJF_READNOW's sake.  */
224   unsigned char using_index;
225
226   /* The mapped index, or NULL if .gdb_index is missing or not being used.  */
227   struct mapped_index *index_table;
228
229   /* When using index_table, this keeps track of all quick_file_names entries.
230      TUs can share line table entries with CUs or other TUs, and there can be
231      a lot more TUs than unique line tables, so we maintain a separate table
232      of all line table entries to support the sharing.  */
233   htab_t quick_file_names_table;
234
235   /* Set during partial symbol reading, to prevent queueing of full
236      symbols.  */
237   int reading_partial_symbols;
238
239   /* Table mapping type .debug_info DIE offsets to types.
240      This is NULL if not allocated yet.
241      It (currently) makes sense to allocate debug_types_type_hash lazily.
242      To keep things simple we allocate both lazily.  */
243   htab_t debug_info_type_hash;
244
245   /* Table mapping type .debug_types DIE offsets to types.
246      This is NULL if not allocated yet.  */
247   htab_t debug_types_type_hash;
248 };
249
250 static struct dwarf2_per_objfile *dwarf2_per_objfile;
251
252 /* Default names of the debugging sections.  */
253
254 /* Note that if the debugging section has been compressed, it might
255    have a name like .zdebug_info.  */
256
257 static const struct dwarf2_debug_sections dwarf2_elf_names = {
258   { ".debug_info", ".zdebug_info" },
259   { ".debug_abbrev", ".zdebug_abbrev" },
260   { ".debug_line", ".zdebug_line" },
261   { ".debug_loc", ".zdebug_loc" },
262   { ".debug_macinfo", ".zdebug_macinfo" },
263   { ".debug_str", ".zdebug_str" },
264   { ".debug_ranges", ".zdebug_ranges" },
265   { ".debug_types", ".zdebug_types" },
266   { ".debug_frame", ".zdebug_frame" },
267   { ".eh_frame", NULL },
268   { ".gdb_index", ".zgdb_index" }
269 };
270
271 /* local data types */
272
273 /* We hold several abbreviation tables in memory at the same time.  */
274 #ifndef ABBREV_HASH_SIZE
275 #define ABBREV_HASH_SIZE 121
276 #endif
277
278 /* The data in a compilation unit header, after target2host
279    translation, looks like this.  */
280 struct comp_unit_head
281 {
282   unsigned int length;
283   short version;
284   unsigned char addr_size;
285   unsigned char signed_addr_p;
286   unsigned int abbrev_offset;
287
288   /* Size of file offsets; either 4 or 8.  */
289   unsigned int offset_size;
290
291   /* Size of the length field; either 4 or 12.  */
292   unsigned int initial_length_size;
293
294   /* Offset to the first byte of this compilation unit header in the
295      .debug_info section, for resolving relative reference dies.  */
296   unsigned int offset;
297
298   /* Offset to first die in this cu from the start of the cu.
299      This will be the first byte following the compilation unit header.  */
300   unsigned int first_die_offset;
301 };
302
303 /* Type used for delaying computation of method physnames.
304    See comments for compute_delayed_physnames.  */
305 struct delayed_method_info
306 {
307   /* The type to which the method is attached, i.e., its parent class.  */
308   struct type *type;
309
310   /* The index of the method in the type's function fieldlists.  */
311   int fnfield_index;
312
313   /* The index of the method in the fieldlist.  */
314   int index;
315
316   /* The name of the DIE.  */
317   const char *name;
318
319   /*  The DIE associated with this method.  */
320   struct die_info *die;
321 };
322
323 typedef struct delayed_method_info delayed_method_info;
324 DEF_VEC_O (delayed_method_info);
325
326 /* Internal state when decoding a particular compilation unit.  */
327 struct dwarf2_cu
328 {
329   /* The objfile containing this compilation unit.  */
330   struct objfile *objfile;
331
332   /* The header of the compilation unit.  */
333   struct comp_unit_head header;
334
335   /* Base address of this compilation unit.  */
336   CORE_ADDR base_address;
337
338   /* Non-zero if base_address has been set.  */
339   int base_known;
340
341   struct function_range *first_fn, *last_fn, *cached_fn;
342
343   /* The language we are debugging.  */
344   enum language language;
345   const struct language_defn *language_defn;
346
347   const char *producer;
348
349   /* The generic symbol table building routines have separate lists for
350      file scope symbols and all all other scopes (local scopes).  So
351      we need to select the right one to pass to add_symbol_to_list().
352      We do it by keeping a pointer to the correct list in list_in_scope.
353
354      FIXME: The original dwarf code just treated the file scope as the
355      first local scope, and all other local scopes as nested local
356      scopes, and worked fine.  Check to see if we really need to
357      distinguish these in buildsym.c.  */
358   struct pending **list_in_scope;
359
360   /* DWARF abbreviation table associated with this compilation unit.  */
361   struct abbrev_info **dwarf2_abbrevs;
362
363   /* Storage for the abbrev table.  */
364   struct obstack abbrev_obstack;
365
366   /* Hash table holding all the loaded partial DIEs.  */
367   htab_t partial_dies;
368
369   /* Storage for things with the same lifetime as this read-in compilation
370      unit, including partial DIEs.  */
371   struct obstack comp_unit_obstack;
372
373   /* When multiple dwarf2_cu structures are living in memory, this field
374      chains them all together, so that they can be released efficiently.
375      We will probably also want a generation counter so that most-recently-used
376      compilation units are cached...  */
377   struct dwarf2_per_cu_data *read_in_chain;
378
379   /* Backchain to our per_cu entry if the tree has been built.  */
380   struct dwarf2_per_cu_data *per_cu;
381
382   /* How many compilation units ago was this CU last referenced?  */
383   int last_used;
384
385   /* A hash table of die offsets for following references.  */
386   htab_t die_hash;
387
388   /* Full DIEs if read in.  */
389   struct die_info *dies;
390
391   /* A set of pointers to dwarf2_per_cu_data objects for compilation
392      units referenced by this one.  Only set during full symbol processing;
393      partial symbol tables do not have dependencies.  */
394   htab_t dependencies;
395
396   /* Header data from the line table, during full symbol processing.  */
397   struct line_header *line_header;
398
399   /* A list of methods which need to have physnames computed
400      after all type information has been read.  */
401   VEC (delayed_method_info) *method_list;
402
403   /* Mark used when releasing cached dies.  */
404   unsigned int mark : 1;
405
406   /* This flag will be set if this compilation unit might include
407      inter-compilation-unit references.  */
408   unsigned int has_form_ref_addr : 1;
409
410   /* This flag will be set if this compilation unit includes any
411      DW_TAG_namespace DIEs.  If we know that there are explicit
412      DIEs for namespaces, we don't need to try to infer them
413      from mangled names.  */
414   unsigned int has_namespace_info : 1;
415
416   /* This CU references .debug_loc.  See the symtab->locations_valid field.
417      This test is imperfect as there may exist optimized debug code not using
418      any location list and still facing inlining issues if handled as
419      unoptimized code.  For a future better test see GCC PR other/32998.  */
420
421   unsigned int has_loclist : 1;
422 };
423
424 /* Persistent data held for a compilation unit, even when not
425    processing it.  We put a pointer to this structure in the
426    read_symtab_private field of the psymtab.  If we encounter
427    inter-compilation-unit references, we also maintain a sorted
428    list of all compilation units.  */
429
430 struct dwarf2_per_cu_data
431 {
432   /* The start offset and length of this compilation unit.  2**29-1
433      bytes should suffice to store the length of any compilation unit
434      - if it doesn't, GDB will fall over anyway.
435      NOTE: Unlike comp_unit_head.length, this length includes
436      initial_length_size.  */
437   unsigned int offset;
438   unsigned int length : 29;
439
440   /* Flag indicating this compilation unit will be read in before
441      any of the current compilation units are processed.  */
442   unsigned int queued : 1;
443
444   /* This flag will be set if we need to load absolutely all DIEs
445      for this compilation unit, instead of just the ones we think
446      are interesting.  It gets set if we look for a DIE in the
447      hash table and don't find it.  */
448   unsigned int load_all_dies : 1;
449
450   /* Non-zero if this CU is from .debug_types.
451      Otherwise it's from .debug_info.  */
452   unsigned int from_debug_types : 1;
453
454   /* Set to non-NULL iff this CU is currently loaded.  When it gets freed out
455      of the CU cache it gets reset to NULL again.  */
456   struct dwarf2_cu *cu;
457
458   /* The corresponding objfile.  */
459   struct objfile *objfile;
460
461   /* When using partial symbol tables, the 'psymtab' field is active.
462      Otherwise the 'quick' field is active.  */
463   union
464   {
465     /* The partial symbol table associated with this compilation unit,
466        or NULL for partial units (which do not have an associated
467        symtab).  */
468     struct partial_symtab *psymtab;
469
470     /* Data needed by the "quick" functions.  */
471     struct dwarf2_per_cu_quick_data *quick;
472   } v;
473 };
474
475 /* Entry in the signatured_types hash table.  */
476
477 struct signatured_type
478 {
479   ULONGEST signature;
480
481   /* Offset in .debug_types of the type defined by this TU.  */
482   unsigned int type_offset;
483
484   /* The CU(/TU) of this type.  */
485   struct dwarf2_per_cu_data per_cu;
486 };
487
488 /* Struct used to pass misc. parameters to read_die_and_children, et
489    al.  which are used for both .debug_info and .debug_types dies.
490    All parameters here are unchanging for the life of the call.  This
491    struct exists to abstract away the constant parameters of die
492    reading.  */
493
494 struct die_reader_specs
495 {
496   /* The bfd of this objfile.  */
497   bfd* abfd;
498
499   /* The CU of the DIE we are parsing.  */
500   struct dwarf2_cu *cu;
501
502   /* Pointer to start of section buffer.
503      This is either the start of .debug_info or .debug_types.  */
504   const gdb_byte *buffer;
505 };
506
507 /* The line number information for a compilation unit (found in the
508    .debug_line section) begins with a "statement program header",
509    which contains the following information.  */
510 struct line_header
511 {
512   unsigned int total_length;
513   unsigned short version;
514   unsigned int header_length;
515   unsigned char minimum_instruction_length;
516   unsigned char maximum_ops_per_instruction;
517   unsigned char default_is_stmt;
518   int line_base;
519   unsigned char line_range;
520   unsigned char opcode_base;
521
522   /* standard_opcode_lengths[i] is the number of operands for the
523      standard opcode whose value is i.  This means that
524      standard_opcode_lengths[0] is unused, and the last meaningful
525      element is standard_opcode_lengths[opcode_base - 1].  */
526   unsigned char *standard_opcode_lengths;
527
528   /* The include_directories table.  NOTE!  These strings are not
529      allocated with xmalloc; instead, they are pointers into
530      debug_line_buffer.  If you try to free them, `free' will get
531      indigestion.  */
532   unsigned int num_include_dirs, include_dirs_size;
533   char **include_dirs;
534
535   /* The file_names table.  NOTE!  These strings are not allocated
536      with xmalloc; instead, they are pointers into debug_line_buffer.
537      Don't try to free them directly.  */
538   unsigned int num_file_names, file_names_size;
539   struct file_entry
540   {
541     char *name;
542     unsigned int dir_index;
543     unsigned int mod_time;
544     unsigned int length;
545     int included_p; /* Non-zero if referenced by the Line Number Program.  */
546     struct symtab *symtab; /* The associated symbol table, if any.  */
547   } *file_names;
548
549   /* The start and end of the statement program following this
550      header.  These point into dwarf2_per_objfile->line_buffer.  */
551   gdb_byte *statement_program_start, *statement_program_end;
552 };
553
554 /* When we construct a partial symbol table entry we only
555    need this much information.  */
556 struct partial_die_info
557   {
558     /* Offset of this DIE.  */
559     unsigned int offset;
560
561     /* DWARF-2 tag for this DIE.  */
562     ENUM_BITFIELD(dwarf_tag) tag : 16;
563
564     /* Assorted flags describing the data found in this DIE.  */
565     unsigned int has_children : 1;
566     unsigned int is_external : 1;
567     unsigned int is_declaration : 1;
568     unsigned int has_type : 1;
569     unsigned int has_specification : 1;
570     unsigned int has_pc_info : 1;
571
572     /* Flag set if the SCOPE field of this structure has been
573        computed.  */
574     unsigned int scope_set : 1;
575
576     /* Flag set if the DIE has a byte_size attribute.  */
577     unsigned int has_byte_size : 1;
578
579     /* Flag set if any of the DIE's children are template arguments.  */
580     unsigned int has_template_arguments : 1;
581
582     /* Flag set if fixup_partial_die has been called on this die.  */
583     unsigned int fixup_called : 1;
584
585     /* The name of this DIE.  Normally the value of DW_AT_name, but
586        sometimes a default name for unnamed DIEs.  */
587     char *name;
588
589     /* The linkage name, if present.  */
590     const char *linkage_name;
591
592     /* The scope to prepend to our children.  This is generally
593        allocated on the comp_unit_obstack, so will disappear
594        when this compilation unit leaves the cache.  */
595     char *scope;
596
597     /* The location description associated with this DIE, if any.  */
598     struct dwarf_block *locdesc;
599
600     /* If HAS_PC_INFO, the PC range associated with this DIE.  */
601     CORE_ADDR lowpc;
602     CORE_ADDR highpc;
603
604     /* Pointer into the info_buffer (or types_buffer) pointing at the target of
605        DW_AT_sibling, if any.  */
606     /* NOTE: This member isn't strictly necessary, read_partial_die could
607        return DW_AT_sibling values to its caller load_partial_dies.  */
608     gdb_byte *sibling;
609
610     /* If HAS_SPECIFICATION, the offset of the DIE referred to by
611        DW_AT_specification (or DW_AT_abstract_origin or
612        DW_AT_extension).  */
613     unsigned int spec_offset;
614
615     /* Pointers to this DIE's parent, first child, and next sibling,
616        if any.  */
617     struct partial_die_info *die_parent, *die_child, *die_sibling;
618   };
619
620 /* This data structure holds the information of an abbrev.  */
621 struct abbrev_info
622   {
623     unsigned int number;        /* number identifying abbrev */
624     enum dwarf_tag tag;         /* dwarf tag */
625     unsigned short has_children;                /* boolean */
626     unsigned short num_attrs;   /* number of attributes */
627     struct attr_abbrev *attrs;  /* an array of attribute descriptions */
628     struct abbrev_info *next;   /* next in chain */
629   };
630
631 struct attr_abbrev
632   {
633     ENUM_BITFIELD(dwarf_attribute) name : 16;
634     ENUM_BITFIELD(dwarf_form) form : 16;
635   };
636
637 /* Attributes have a name and a value.  */
638 struct attribute
639   {
640     ENUM_BITFIELD(dwarf_attribute) name : 16;
641     ENUM_BITFIELD(dwarf_form) form : 15;
642
643     /* Has DW_STRING already been updated by dwarf2_canonicalize_name?  This
644        field should be in u.str (existing only for DW_STRING) but it is kept
645        here for better struct attribute alignment.  */
646     unsigned int string_is_canonical : 1;
647
648     union
649       {
650         char *str;
651         struct dwarf_block *blk;
652         ULONGEST unsnd;
653         LONGEST snd;
654         CORE_ADDR addr;
655         struct signatured_type *signatured_type;
656       }
657     u;
658   };
659
660 /* This data structure holds a complete die structure.  */
661 struct die_info
662   {
663     /* DWARF-2 tag for this DIE.  */
664     ENUM_BITFIELD(dwarf_tag) tag : 16;
665
666     /* Number of attributes */
667     unsigned char num_attrs;
668
669     /* True if we're presently building the full type name for the
670        type derived from this DIE.  */
671     unsigned char building_fullname : 1;
672
673     /* Abbrev number */
674     unsigned int abbrev;
675
676     /* Offset in .debug_info or .debug_types section.  */
677     unsigned int offset;
678
679     /* The dies in a compilation unit form an n-ary tree.  PARENT
680        points to this die's parent; CHILD points to the first child of
681        this node; and all the children of a given node are chained
682        together via their SIBLING fields.  */
683     struct die_info *child;     /* Its first child, if any.  */
684     struct die_info *sibling;   /* Its next sibling, if any.  */
685     struct die_info *parent;    /* Its parent, if any.  */
686
687     /* An array of attributes, with NUM_ATTRS elements.  There may be
688        zero, but it's not common and zero-sized arrays are not
689        sufficiently portable C.  */
690     struct attribute attrs[1];
691   };
692
693 struct function_range
694 {
695   const char *name;
696   CORE_ADDR lowpc, highpc;
697   int seen_line;
698   struct function_range *next;
699 };
700
701 /* Get at parts of an attribute structure.  */
702
703 #define DW_STRING(attr)    ((attr)->u.str)
704 #define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
705 #define DW_UNSND(attr)     ((attr)->u.unsnd)
706 #define DW_BLOCK(attr)     ((attr)->u.blk)
707 #define DW_SND(attr)       ((attr)->u.snd)
708 #define DW_ADDR(attr)      ((attr)->u.addr)
709 #define DW_SIGNATURED_TYPE(attr) ((attr)->u.signatured_type)
710
711 /* Blocks are a bunch of untyped bytes.  */
712 struct dwarf_block
713   {
714     unsigned int size;
715     gdb_byte *data;
716   };
717
718 #ifndef ATTR_ALLOC_CHUNK
719 #define ATTR_ALLOC_CHUNK 4
720 #endif
721
722 /* Allocate fields for structs, unions and enums in this size.  */
723 #ifndef DW_FIELD_ALLOC_CHUNK
724 #define DW_FIELD_ALLOC_CHUNK 4
725 #endif
726
727 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
728    but this would require a corresponding change in unpack_field_as_long
729    and friends.  */
730 static int bits_per_byte = 8;
731
732 /* The routines that read and process dies for a C struct or C++ class
733    pass lists of data member fields and lists of member function fields
734    in an instance of a field_info structure, as defined below.  */
735 struct field_info
736   {
737     /* List of data member and baseclasses fields.  */
738     struct nextfield
739       {
740         struct nextfield *next;
741         int accessibility;
742         int virtuality;
743         struct field field;
744       }
745      *fields, *baseclasses;
746
747     /* Number of fields (including baseclasses).  */
748     int nfields;
749
750     /* Number of baseclasses.  */
751     int nbaseclasses;
752
753     /* Set if the accesibility of one of the fields is not public.  */
754     int non_public_fields;
755
756     /* Member function fields array, entries are allocated in the order they
757        are encountered in the object file.  */
758     struct nextfnfield
759       {
760         struct nextfnfield *next;
761         struct fn_field fnfield;
762       }
763      *fnfields;
764
765     /* Member function fieldlist array, contains name of possibly overloaded
766        member function, number of overloaded member functions and a pointer
767        to the head of the member function field chain.  */
768     struct fnfieldlist
769       {
770         char *name;
771         int length;
772         struct nextfnfield *head;
773       }
774      *fnfieldlists;
775
776     /* Number of entries in the fnfieldlists array.  */
777     int nfnfields;
778
779     /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
780        a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
781     struct typedef_field_list
782       {
783         struct typedef_field field;
784         struct typedef_field_list *next;
785       }
786     *typedef_field_list;
787     unsigned typedef_field_list_count;
788   };
789
790 /* One item on the queue of compilation units to read in full symbols
791    for.  */
792 struct dwarf2_queue_item
793 {
794   struct dwarf2_per_cu_data *per_cu;
795   struct dwarf2_queue_item *next;
796 };
797
798 /* The current queue.  */
799 static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
800
801 /* Loaded secondary compilation units are kept in memory until they
802    have not been referenced for the processing of this many
803    compilation units.  Set this to zero to disable caching.  Cache
804    sizes of up to at least twenty will improve startup time for
805    typical inter-CU-reference binaries, at an obvious memory cost.  */
806 static int dwarf2_max_cache_age = 5;
807 static void
808 show_dwarf2_max_cache_age (struct ui_file *file, int from_tty,
809                            struct cmd_list_element *c, const char *value)
810 {
811   fprintf_filtered (file, _("The upper bound on the age of cached "
812                             "dwarf2 compilation units is %s.\n"),
813                     value);
814 }
815
816
817 /* Various complaints about symbol reading that don't abort the process.  */
818
819 static void
820 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
821 {
822   complaint (&symfile_complaints,
823              _("statement list doesn't fit in .debug_line section"));
824 }
825
826 static void
827 dwarf2_debug_line_missing_file_complaint (void)
828 {
829   complaint (&symfile_complaints,
830              _(".debug_line section has line data without a file"));
831 }
832
833 static void
834 dwarf2_debug_line_missing_end_sequence_complaint (void)
835 {
836   complaint (&symfile_complaints,
837              _(".debug_line section has line "
838                "program sequence without an end"));
839 }
840
841 static void
842 dwarf2_complex_location_expr_complaint (void)
843 {
844   complaint (&symfile_complaints, _("location expression too complex"));
845 }
846
847 static void
848 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
849                                               int arg3)
850 {
851   complaint (&symfile_complaints,
852              _("const value length mismatch for '%s', got %d, expected %d"),
853              arg1, arg2, arg3);
854 }
855
856 static void
857 dwarf2_macros_too_long_complaint (void)
858 {
859   complaint (&symfile_complaints,
860              _("macro info runs off end of `.debug_macinfo' section"));
861 }
862
863 static void
864 dwarf2_macro_malformed_definition_complaint (const char *arg1)
865 {
866   complaint (&symfile_complaints,
867              _("macro debug info contains a "
868                "malformed macro definition:\n`%s'"),
869              arg1);
870 }
871
872 static void
873 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
874 {
875   complaint (&symfile_complaints,
876              _("invalid attribute class or form for '%s' in '%s'"),
877              arg1, arg2);
878 }
879
880 /* local function prototypes */
881
882 static void dwarf2_locate_sections (bfd *, asection *, void *);
883
884 static void dwarf2_create_include_psymtab (char *, struct partial_symtab *,
885                                            struct objfile *);
886
887 static void dwarf2_build_psymtabs_hard (struct objfile *);
888
889 static void scan_partial_symbols (struct partial_die_info *,
890                                   CORE_ADDR *, CORE_ADDR *,
891                                   int, struct dwarf2_cu *);
892
893 static void add_partial_symbol (struct partial_die_info *,
894                                 struct dwarf2_cu *);
895
896 static void add_partial_namespace (struct partial_die_info *pdi,
897                                    CORE_ADDR *lowpc, CORE_ADDR *highpc,
898                                    int need_pc, struct dwarf2_cu *cu);
899
900 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
901                                 CORE_ADDR *highpc, int need_pc,
902                                 struct dwarf2_cu *cu);
903
904 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
905                                      struct dwarf2_cu *cu);
906
907 static void add_partial_subprogram (struct partial_die_info *pdi,
908                                     CORE_ADDR *lowpc, CORE_ADDR *highpc,
909                                     int need_pc, struct dwarf2_cu *cu);
910
911 static gdb_byte *locate_pdi_sibling (struct partial_die_info *orig_pdi,
912                                      gdb_byte *buffer, gdb_byte *info_ptr,
913                                      bfd *abfd, struct dwarf2_cu *cu);
914
915 static void dwarf2_psymtab_to_symtab (struct partial_symtab *);
916
917 static void psymtab_to_symtab_1 (struct partial_symtab *);
918
919 static void dwarf2_read_abbrevs (bfd *abfd, struct dwarf2_cu *cu);
920
921 static void dwarf2_free_abbrev_table (void *);
922
923 static struct abbrev_info *peek_die_abbrev (gdb_byte *, unsigned int *,
924                                             struct dwarf2_cu *);
925
926 static struct abbrev_info *dwarf2_lookup_abbrev (unsigned int,
927                                                  struct dwarf2_cu *);
928
929 static struct partial_die_info *load_partial_dies (bfd *,
930                                                    gdb_byte *, gdb_byte *,
931                                                    int, struct dwarf2_cu *);
932
933 static gdb_byte *read_partial_die (struct partial_die_info *,
934                                    struct abbrev_info *abbrev,
935                                    unsigned int, bfd *,
936                                    gdb_byte *, gdb_byte *,
937                                    struct dwarf2_cu *);
938
939 static struct partial_die_info *find_partial_die (unsigned int,
940                                                   struct dwarf2_cu *);
941
942 static void fixup_partial_die (struct partial_die_info *,
943                                struct dwarf2_cu *);
944
945 static gdb_byte *read_attribute (struct attribute *, struct attr_abbrev *,
946                                  bfd *, gdb_byte *, struct dwarf2_cu *);
947
948 static gdb_byte *read_attribute_value (struct attribute *, unsigned,
949                                        bfd *, gdb_byte *, struct dwarf2_cu *);
950
951 static unsigned int read_1_byte (bfd *, gdb_byte *);
952
953 static int read_1_signed_byte (bfd *, gdb_byte *);
954
955 static unsigned int read_2_bytes (bfd *, gdb_byte *);
956
957 static unsigned int read_4_bytes (bfd *, gdb_byte *);
958
959 static ULONGEST read_8_bytes (bfd *, gdb_byte *);
960
961 static CORE_ADDR read_address (bfd *, gdb_byte *ptr, struct dwarf2_cu *,
962                                unsigned int *);
963
964 static LONGEST read_initial_length (bfd *, gdb_byte *, unsigned int *);
965
966 static LONGEST read_checked_initial_length_and_offset
967   (bfd *, gdb_byte *, const struct comp_unit_head *,
968    unsigned int *, unsigned int *);
969
970 static LONGEST read_offset (bfd *, gdb_byte *, const struct comp_unit_head *,
971                             unsigned int *);
972
973 static LONGEST read_offset_1 (bfd *, gdb_byte *, unsigned int);
974
975 static gdb_byte *read_n_bytes (bfd *, gdb_byte *, unsigned int);
976
977 static char *read_direct_string (bfd *, gdb_byte *, unsigned int *);
978
979 static char *read_indirect_string (bfd *, gdb_byte *,
980                                    const struct comp_unit_head *,
981                                    unsigned int *);
982
983 static unsigned long read_unsigned_leb128 (bfd *, gdb_byte *, unsigned int *);
984
985 static long read_signed_leb128 (bfd *, gdb_byte *, unsigned int *);
986
987 static gdb_byte *skip_leb128 (bfd *, gdb_byte *);
988
989 static void set_cu_language (unsigned int, struct dwarf2_cu *);
990
991 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
992                                       struct dwarf2_cu *);
993
994 static struct attribute *dwarf2_attr_no_follow (struct die_info *,
995                                                 unsigned int,
996                                                 struct dwarf2_cu *);
997
998 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
999                                struct dwarf2_cu *cu);
1000
1001 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1002
1003 static struct die_info *die_specification (struct die_info *die,
1004                                            struct dwarf2_cu **);
1005
1006 static void free_line_header (struct line_header *lh);
1007
1008 static void add_file_name (struct line_header *, char *, unsigned int,
1009                            unsigned int, unsigned int);
1010
1011 static struct line_header *(dwarf_decode_line_header
1012                             (unsigned int offset,
1013                              bfd *abfd, struct dwarf2_cu *cu));
1014
1015 static void dwarf_decode_lines (struct line_header *, const char *, bfd *,
1016                                 struct dwarf2_cu *, struct partial_symtab *);
1017
1018 static void dwarf2_start_subfile (char *, const char *, const char *);
1019
1020 static struct symbol *new_symbol (struct die_info *, struct type *,
1021                                   struct dwarf2_cu *);
1022
1023 static struct symbol *new_symbol_full (struct die_info *, struct type *,
1024                                        struct dwarf2_cu *, struct symbol *);
1025
1026 static void dwarf2_const_value (struct attribute *, struct symbol *,
1027                                 struct dwarf2_cu *);
1028
1029 static void dwarf2_const_value_attr (struct attribute *attr,
1030                                      struct type *type,
1031                                      const char *name,
1032                                      struct obstack *obstack,
1033                                      struct dwarf2_cu *cu, long *value,
1034                                      gdb_byte **bytes,
1035                                      struct dwarf2_locexpr_baton **baton);
1036
1037 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1038
1039 static int need_gnat_info (struct dwarf2_cu *);
1040
1041 static struct type *die_descriptive_type (struct die_info *,
1042                                           struct dwarf2_cu *);
1043
1044 static void set_descriptive_type (struct type *, struct die_info *,
1045                                   struct dwarf2_cu *);
1046
1047 static struct type *die_containing_type (struct die_info *,
1048                                          struct dwarf2_cu *);
1049
1050 static struct type *lookup_die_type (struct die_info *, struct attribute *,
1051                                      struct dwarf2_cu *);
1052
1053 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1054
1055 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1056
1057 static char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1058
1059 static char *typename_concat (struct obstack *obs, const char *prefix,
1060                               const char *suffix, int physname,
1061                               struct dwarf2_cu *cu);
1062
1063 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1064
1065 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1066
1067 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1068
1069 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1070
1071 static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1072                                struct dwarf2_cu *, struct partial_symtab *);
1073
1074 static int dwarf2_get_pc_bounds (struct die_info *,
1075                                  CORE_ADDR *, CORE_ADDR *, struct dwarf2_cu *,
1076                                  struct partial_symtab *);
1077
1078 static void get_scope_pc_bounds (struct die_info *,
1079                                  CORE_ADDR *, CORE_ADDR *,
1080                                  struct dwarf2_cu *);
1081
1082 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1083                                         CORE_ADDR, struct dwarf2_cu *);
1084
1085 static void dwarf2_add_field (struct field_info *, struct die_info *,
1086                               struct dwarf2_cu *);
1087
1088 static void dwarf2_attach_fields_to_type (struct field_info *,
1089                                           struct type *, struct dwarf2_cu *);
1090
1091 static void dwarf2_add_member_fn (struct field_info *,
1092                                   struct die_info *, struct type *,
1093                                   struct dwarf2_cu *);
1094
1095 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1096                                              struct type *,
1097                                              struct dwarf2_cu *);
1098
1099 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1100
1101 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1102
1103 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1104
1105 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1106
1107 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1108
1109 static struct type *read_module_type (struct die_info *die,
1110                                       struct dwarf2_cu *cu);
1111
1112 static const char *namespace_name (struct die_info *die,
1113                                    int *is_anonymous, struct dwarf2_cu *);
1114
1115 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1116
1117 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
1118
1119 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1120                                                        struct dwarf2_cu *);
1121
1122 static struct die_info *read_comp_unit (gdb_byte *, struct dwarf2_cu *);
1123
1124 static struct die_info *read_die_and_children_1 (const struct die_reader_specs *reader,
1125                                                  gdb_byte *info_ptr,
1126                                                  gdb_byte **new_info_ptr,
1127                                                  struct die_info *parent);
1128
1129 static struct die_info *read_die_and_children (const struct die_reader_specs *reader,
1130                                                gdb_byte *info_ptr,
1131                                                gdb_byte **new_info_ptr,
1132                                                struct die_info *parent);
1133
1134 static struct die_info *read_die_and_siblings (const struct die_reader_specs *reader,
1135                                                gdb_byte *info_ptr,
1136                                                gdb_byte **new_info_ptr,
1137                                                struct die_info *parent);
1138
1139 static gdb_byte *read_full_die (const struct die_reader_specs *reader,
1140                                 struct die_info **, gdb_byte *,
1141                                 int *);
1142
1143 static void process_die (struct die_info *, struct dwarf2_cu *);
1144
1145 static char *dwarf2_canonicalize_name (char *, struct dwarf2_cu *,
1146                                        struct obstack *);
1147
1148 static char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
1149
1150 static const char *dwarf2_full_name (char *name,
1151                                      struct die_info *die,
1152                                      struct dwarf2_cu *cu);
1153
1154 static struct die_info *dwarf2_extension (struct die_info *die,
1155                                           struct dwarf2_cu **);
1156
1157 static char *dwarf_tag_name (unsigned int);
1158
1159 static char *dwarf_attr_name (unsigned int);
1160
1161 static char *dwarf_form_name (unsigned int);
1162
1163 static char *dwarf_bool_name (unsigned int);
1164
1165 static char *dwarf_type_encoding_name (unsigned int);
1166
1167 #if 0
1168 static char *dwarf_cfi_name (unsigned int);
1169 #endif
1170
1171 static struct die_info *sibling_die (struct die_info *);
1172
1173 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1174
1175 static void dump_die_for_error (struct die_info *);
1176
1177 static void dump_die_1 (struct ui_file *, int level, int max_level,
1178                         struct die_info *);
1179
1180 /*static*/ void dump_die (struct die_info *, int max_level);
1181
1182 static void store_in_ref_table (struct die_info *,
1183                                 struct dwarf2_cu *);
1184
1185 static int is_ref_attr (struct attribute *);
1186
1187 static unsigned int dwarf2_get_ref_die_offset (struct attribute *);
1188
1189 static LONGEST dwarf2_get_attr_constant_value (struct attribute *, int);
1190
1191 static struct die_info *follow_die_ref_or_sig (struct die_info *,
1192                                                struct attribute *,
1193                                                struct dwarf2_cu **);
1194
1195 static struct die_info *follow_die_ref (struct die_info *,
1196                                         struct attribute *,
1197                                         struct dwarf2_cu **);
1198
1199 static struct die_info *follow_die_sig (struct die_info *,
1200                                         struct attribute *,
1201                                         struct dwarf2_cu **);
1202
1203 static void read_signatured_type_at_offset (struct objfile *objfile,
1204                                             unsigned int offset);
1205
1206 static void read_signatured_type (struct objfile *,
1207                                   struct signatured_type *type_sig);
1208
1209 /* memory allocation interface */
1210
1211 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1212
1213 static struct abbrev_info *dwarf_alloc_abbrev (struct dwarf2_cu *);
1214
1215 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
1216
1217 static void initialize_cu_func_list (struct dwarf2_cu *);
1218
1219 static void add_to_cu_func_list (const char *, CORE_ADDR, CORE_ADDR,
1220                                  struct dwarf2_cu *);
1221
1222 static void dwarf_decode_macros (struct line_header *, unsigned int,
1223                                  char *, bfd *, struct dwarf2_cu *);
1224
1225 static int attr_form_is_block (struct attribute *);
1226
1227 static int attr_form_is_section_offset (struct attribute *);
1228
1229 static int attr_form_is_constant (struct attribute *);
1230
1231 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1232                                    struct dwarf2_loclist_baton *baton,
1233                                    struct attribute *attr);
1234
1235 static void dwarf2_symbol_mark_computed (struct attribute *attr,
1236                                          struct symbol *sym,
1237                                          struct dwarf2_cu *cu);
1238
1239 static gdb_byte *skip_one_die (gdb_byte *buffer, gdb_byte *info_ptr,
1240                                struct abbrev_info *abbrev,
1241                                struct dwarf2_cu *cu);
1242
1243 static void free_stack_comp_unit (void *);
1244
1245 static hashval_t partial_die_hash (const void *item);
1246
1247 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1248
1249 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1250   (unsigned int offset, struct objfile *objfile);
1251
1252 static struct dwarf2_per_cu_data *dwarf2_find_comp_unit
1253   (unsigned int offset, struct objfile *objfile);
1254
1255 static void init_one_comp_unit (struct dwarf2_cu *cu,
1256                                 struct objfile *objfile);
1257
1258 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
1259                                    struct die_info *comp_unit_die);
1260
1261 static void free_one_comp_unit (void *);
1262
1263 static void free_cached_comp_units (void *);
1264
1265 static void age_cached_comp_units (void);
1266
1267 static void free_one_cached_comp_unit (void *);
1268
1269 static struct type *set_die_type (struct die_info *, struct type *,
1270                                   struct dwarf2_cu *);
1271
1272 static void create_all_comp_units (struct objfile *);
1273
1274 static int create_debug_types_hash_table (struct objfile *objfile);
1275
1276 static void load_full_comp_unit (struct dwarf2_per_cu_data *,
1277                                  struct objfile *);
1278
1279 static void process_full_comp_unit (struct dwarf2_per_cu_data *);
1280
1281 static void dwarf2_add_dependence (struct dwarf2_cu *,
1282                                    struct dwarf2_per_cu_data *);
1283
1284 static void dwarf2_mark (struct dwarf2_cu *);
1285
1286 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1287
1288 static struct type *get_die_type_at_offset (unsigned int,
1289                                             struct dwarf2_per_cu_data *per_cu);
1290
1291 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
1292
1293 static void dwarf2_release_queue (void *dummy);
1294
1295 static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1296                              struct objfile *objfile);
1297
1298 static void process_queue (struct objfile *objfile);
1299
1300 static void find_file_and_directory (struct die_info *die,
1301                                      struct dwarf2_cu *cu,
1302                                      char **name, char **comp_dir);
1303
1304 static char *file_full_name (int file, struct line_header *lh,
1305                              const char *comp_dir);
1306
1307 static gdb_byte *partial_read_comp_unit_head (struct comp_unit_head *header,
1308                                               gdb_byte *info_ptr,
1309                                               gdb_byte *buffer,
1310                                               unsigned int buffer_size,
1311                                               bfd *abfd);
1312
1313 static void init_cu_die_reader (struct die_reader_specs *reader,
1314                                 struct dwarf2_cu *cu);
1315
1316 static htab_t allocate_signatured_type_table (struct objfile *objfile);
1317
1318 #if WORDS_BIGENDIAN
1319
1320 /* Convert VALUE between big- and little-endian.  */
1321 static offset_type
1322 byte_swap (offset_type value)
1323 {
1324   offset_type result;
1325
1326   result = (value & 0xff) << 24;
1327   result |= (value & 0xff00) << 8;
1328   result |= (value & 0xff0000) >> 8;
1329   result |= (value & 0xff000000) >> 24;
1330   return result;
1331 }
1332
1333 #define MAYBE_SWAP(V)  byte_swap (V)
1334
1335 #else
1336 #define MAYBE_SWAP(V) (V)
1337 #endif /* WORDS_BIGENDIAN */
1338
1339 /* The suffix for an index file.  */
1340 #define INDEX_SUFFIX ".gdb-index"
1341
1342 static const char *dwarf2_physname (char *name, struct die_info *die,
1343                                     struct dwarf2_cu *cu);
1344
1345 /* Try to locate the sections we need for DWARF 2 debugging
1346    information and return true if we have enough to do something.
1347    NAMES points to the dwarf2 section names, or is NULL if the standard
1348    ELF names are used.  */
1349
1350 int
1351 dwarf2_has_info (struct objfile *objfile,
1352                  const struct dwarf2_debug_sections *names)
1353 {
1354   dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
1355   if (!dwarf2_per_objfile)
1356     {
1357       /* Initialize per-objfile state.  */
1358       struct dwarf2_per_objfile *data
1359         = obstack_alloc (&objfile->objfile_obstack, sizeof (*data));
1360
1361       memset (data, 0, sizeof (*data));
1362       set_objfile_data (objfile, dwarf2_objfile_data_key, data);
1363       dwarf2_per_objfile = data;
1364
1365       bfd_map_over_sections (objfile->obfd, dwarf2_locate_sections,
1366                              (void *) names);
1367       dwarf2_per_objfile->objfile = objfile;
1368     }
1369   return (dwarf2_per_objfile->info.asection != NULL
1370           && dwarf2_per_objfile->abbrev.asection != NULL);
1371 }
1372
1373 /* When loading sections, we look either for uncompressed section or for
1374    compressed section names.  */
1375
1376 static int
1377 section_is_p (const char *section_name,
1378               const struct dwarf2_section_names *names)
1379 {
1380   if (names->normal != NULL
1381       && strcmp (section_name, names->normal) == 0)
1382     return 1;
1383   if (names->compressed != NULL
1384       && strcmp (section_name, names->compressed) == 0)
1385     return 1;
1386   return 0;
1387 }
1388
1389 /* This function is mapped across the sections and remembers the
1390    offset and size of each of the debugging sections we are interested
1391    in.  */
1392
1393 static void
1394 dwarf2_locate_sections (bfd *abfd, asection *sectp, void *vnames)
1395 {
1396   const struct dwarf2_debug_sections *names;
1397
1398   if (vnames == NULL)
1399     names = &dwarf2_elf_names;
1400   else
1401     names = (const struct dwarf2_debug_sections *) vnames;
1402
1403   if (section_is_p (sectp->name, &names->info))
1404     {
1405       dwarf2_per_objfile->info.asection = sectp;
1406       dwarf2_per_objfile->info.size = bfd_get_section_size (sectp);
1407     }
1408   else if (section_is_p (sectp->name, &names->abbrev))
1409     {
1410       dwarf2_per_objfile->abbrev.asection = sectp;
1411       dwarf2_per_objfile->abbrev.size = bfd_get_section_size (sectp);
1412     }
1413   else if (section_is_p (sectp->name, &names->line))
1414     {
1415       dwarf2_per_objfile->line.asection = sectp;
1416       dwarf2_per_objfile->line.size = bfd_get_section_size (sectp);
1417     }
1418   else if (section_is_p (sectp->name, &names->loc))
1419     {
1420       dwarf2_per_objfile->loc.asection = sectp;
1421       dwarf2_per_objfile->loc.size = bfd_get_section_size (sectp);
1422     }
1423   else if (section_is_p (sectp->name, &names->macinfo))
1424     {
1425       dwarf2_per_objfile->macinfo.asection = sectp;
1426       dwarf2_per_objfile->macinfo.size = bfd_get_section_size (sectp);
1427     }
1428   else if (section_is_p (sectp->name, &names->str))
1429     {
1430       dwarf2_per_objfile->str.asection = sectp;
1431       dwarf2_per_objfile->str.size = bfd_get_section_size (sectp);
1432     }
1433   else if (section_is_p (sectp->name, &names->frame))
1434     {
1435       dwarf2_per_objfile->frame.asection = sectp;
1436       dwarf2_per_objfile->frame.size = bfd_get_section_size (sectp);
1437     }
1438   else if (section_is_p (sectp->name, &names->eh_frame))
1439     {
1440       flagword aflag = bfd_get_section_flags (ignore_abfd, sectp);
1441
1442       if (aflag & SEC_HAS_CONTENTS)
1443         {
1444           dwarf2_per_objfile->eh_frame.asection = sectp;
1445           dwarf2_per_objfile->eh_frame.size = bfd_get_section_size (sectp);
1446         }
1447     }
1448   else if (section_is_p (sectp->name, &names->ranges))
1449     {
1450       dwarf2_per_objfile->ranges.asection = sectp;
1451       dwarf2_per_objfile->ranges.size = bfd_get_section_size (sectp);
1452     }
1453   else if (section_is_p (sectp->name, &names->types))
1454     {
1455       dwarf2_per_objfile->types.asection = sectp;
1456       dwarf2_per_objfile->types.size = bfd_get_section_size (sectp);
1457     }
1458   else if (section_is_p (sectp->name, &names->gdb_index))
1459     {
1460       dwarf2_per_objfile->gdb_index.asection = sectp;
1461       dwarf2_per_objfile->gdb_index.size = bfd_get_section_size (sectp);
1462     }
1463
1464   if ((bfd_get_section_flags (abfd, sectp) & SEC_LOAD)
1465       && bfd_section_vma (abfd, sectp) == 0)
1466     dwarf2_per_objfile->has_section_at_zero = 1;
1467 }
1468
1469 /* Decompress a section that was compressed using zlib.  Store the
1470    decompressed buffer, and its size, in OUTBUF and OUTSIZE.  */
1471
1472 static void
1473 zlib_decompress_section (struct objfile *objfile, asection *sectp,
1474                          gdb_byte **outbuf, bfd_size_type *outsize)
1475 {
1476   bfd *abfd = objfile->obfd;
1477 #ifndef HAVE_ZLIB_H
1478   error (_("Support for zlib-compressed DWARF data (from '%s') "
1479            "is disabled in this copy of GDB"),
1480          bfd_get_filename (abfd));
1481 #else
1482   bfd_size_type compressed_size = bfd_get_section_size (sectp);
1483   gdb_byte *compressed_buffer = xmalloc (compressed_size);
1484   struct cleanup *cleanup = make_cleanup (xfree, compressed_buffer);
1485   bfd_size_type uncompressed_size;
1486   gdb_byte *uncompressed_buffer;
1487   z_stream strm;
1488   int rc;
1489   int header_size = 12;
1490
1491   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
1492       || bfd_bread (compressed_buffer,
1493                     compressed_size, abfd) != compressed_size)
1494     error (_("Dwarf Error: Can't read DWARF data from '%s'"),
1495            bfd_get_filename (abfd));
1496
1497   /* Read the zlib header.  In this case, it should be "ZLIB" followed
1498      by the uncompressed section size, 8 bytes in big-endian order.  */
1499   if (compressed_size < header_size
1500       || strncmp (compressed_buffer, "ZLIB", 4) != 0)
1501     error (_("Dwarf Error: Corrupt DWARF ZLIB header from '%s'"),
1502            bfd_get_filename (abfd));
1503   uncompressed_size = compressed_buffer[4]; uncompressed_size <<= 8;
1504   uncompressed_size += compressed_buffer[5]; uncompressed_size <<= 8;
1505   uncompressed_size += compressed_buffer[6]; uncompressed_size <<= 8;
1506   uncompressed_size += compressed_buffer[7]; uncompressed_size <<= 8;
1507   uncompressed_size += compressed_buffer[8]; uncompressed_size <<= 8;
1508   uncompressed_size += compressed_buffer[9]; uncompressed_size <<= 8;
1509   uncompressed_size += compressed_buffer[10]; uncompressed_size <<= 8;
1510   uncompressed_size += compressed_buffer[11];
1511
1512   /* It is possible the section consists of several compressed
1513      buffers concatenated together, so we uncompress in a loop.  */
1514   strm.zalloc = NULL;
1515   strm.zfree = NULL;
1516   strm.opaque = NULL;
1517   strm.avail_in = compressed_size - header_size;
1518   strm.next_in = (Bytef*) compressed_buffer + header_size;
1519   strm.avail_out = uncompressed_size;
1520   uncompressed_buffer = obstack_alloc (&objfile->objfile_obstack,
1521                                        uncompressed_size);
1522   rc = inflateInit (&strm);
1523   while (strm.avail_in > 0)
1524     {
1525       if (rc != Z_OK)
1526         error (_("Dwarf Error: setting up DWARF uncompression in '%s': %d"),
1527                bfd_get_filename (abfd), rc);
1528       strm.next_out = ((Bytef*) uncompressed_buffer
1529                        + (uncompressed_size - strm.avail_out));
1530       rc = inflate (&strm, Z_FINISH);
1531       if (rc != Z_STREAM_END)
1532         error (_("Dwarf Error: zlib error uncompressing from '%s': %d"),
1533                bfd_get_filename (abfd), rc);
1534       rc = inflateReset (&strm);
1535     }
1536   rc = inflateEnd (&strm);
1537   if (rc != Z_OK
1538       || strm.avail_out != 0)
1539     error (_("Dwarf Error: concluding DWARF uncompression in '%s': %d"),
1540            bfd_get_filename (abfd), rc);
1541
1542   do_cleanups (cleanup);
1543   *outbuf = uncompressed_buffer;
1544   *outsize = uncompressed_size;
1545 #endif
1546 }
1547
1548 /* A helper function that decides whether a section is empty.  */
1549
1550 static int
1551 dwarf2_section_empty_p (struct dwarf2_section_info *info)
1552 {
1553   return info->asection == NULL || info->size == 0;
1554 }
1555
1556 /* Read the contents of the section SECTP from object file specified by
1557    OBJFILE, store info about the section into INFO.
1558    If the section is compressed, uncompress it before returning.  */
1559
1560 static void
1561 dwarf2_read_section (struct objfile *objfile, struct dwarf2_section_info *info)
1562 {
1563   bfd *abfd = objfile->obfd;
1564   asection *sectp = info->asection;
1565   gdb_byte *buf, *retbuf;
1566   unsigned char header[4];
1567
1568   if (info->readin)
1569     return;
1570   info->buffer = NULL;
1571   info->map_addr = NULL;
1572   info->readin = 1;
1573
1574   if (dwarf2_section_empty_p (info))
1575     return;
1576
1577   /* Check if the file has a 4-byte header indicating compression.  */
1578   if (info->size > sizeof (header)
1579       && bfd_seek (abfd, sectp->filepos, SEEK_SET) == 0
1580       && bfd_bread (header, sizeof (header), abfd) == sizeof (header))
1581     {
1582       /* Upon decompression, update the buffer and its size.  */
1583       if (strncmp (header, "ZLIB", sizeof (header)) == 0)
1584         {
1585           zlib_decompress_section (objfile, sectp, &info->buffer,
1586                                    &info->size);
1587           return;
1588         }
1589     }
1590
1591 #ifdef HAVE_MMAP
1592   if (pagesize == 0)
1593     pagesize = getpagesize ();
1594
1595   /* Only try to mmap sections which are large enough: we don't want to
1596      waste space due to fragmentation.  Also, only try mmap for sections
1597      without relocations.  */
1598
1599   if (info->size > 4 * pagesize && (sectp->flags & SEC_RELOC) == 0)
1600     {
1601       info->buffer = bfd_mmap (abfd, 0, info->size, PROT_READ,
1602                          MAP_PRIVATE, sectp->filepos,
1603                          &info->map_addr, &info->map_len);
1604
1605       if ((caddr_t)info->buffer != MAP_FAILED)
1606         {
1607 #if HAVE_POSIX_MADVISE
1608           posix_madvise (info->map_addr, info->map_len, POSIX_MADV_WILLNEED);
1609 #endif
1610           return;
1611         }
1612     }
1613 #endif
1614
1615   /* If we get here, we are a normal, not-compressed section.  */
1616   info->buffer = buf
1617     = obstack_alloc (&objfile->objfile_obstack, info->size);
1618
1619   /* When debugging .o files, we may need to apply relocations; see
1620      http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
1621      We never compress sections in .o files, so we only need to
1622      try this when the section is not compressed.  */
1623   retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
1624   if (retbuf != NULL)
1625     {
1626       info->buffer = retbuf;
1627       return;
1628     }
1629
1630   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
1631       || bfd_bread (buf, info->size, abfd) != info->size)
1632     error (_("Dwarf Error: Can't read DWARF data from '%s'"),
1633            bfd_get_filename (abfd));
1634 }
1635
1636 /* A helper function that returns the size of a section in a safe way.
1637    If you are positive that the section has been read before using the
1638    size, then it is safe to refer to the dwarf2_section_info object's
1639    "size" field directly.  In other cases, you must call this
1640    function, because for compressed sections the size field is not set
1641    correctly until the section has been read.  */
1642
1643 static bfd_size_type
1644 dwarf2_section_size (struct objfile *objfile,
1645                      struct dwarf2_section_info *info)
1646 {
1647   if (!info->readin)
1648     dwarf2_read_section (objfile, info);
1649   return info->size;
1650 }
1651
1652 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
1653    SECTION_NAME.  */
1654
1655 void
1656 dwarf2_get_section_info (struct objfile *objfile,
1657                          enum dwarf2_section_enum sect,
1658                          asection **sectp, gdb_byte **bufp,
1659                          bfd_size_type *sizep)
1660 {
1661   struct dwarf2_per_objfile *data
1662     = objfile_data (objfile, dwarf2_objfile_data_key);
1663   struct dwarf2_section_info *info;
1664
1665   /* We may see an objfile without any DWARF, in which case we just
1666      return nothing.  */
1667   if (data == NULL)
1668     {
1669       *sectp = NULL;
1670       *bufp = NULL;
1671       *sizep = 0;
1672       return;
1673     }
1674   switch (sect)
1675     {
1676     case DWARF2_DEBUG_FRAME:
1677       info = &data->frame;
1678       break;
1679     case DWARF2_EH_FRAME:
1680       info = &data->eh_frame;
1681       break;
1682     default:
1683       gdb_assert_not_reached ("unexpected section");
1684     }
1685
1686   dwarf2_read_section (objfile, info);
1687
1688   *sectp = info->asection;
1689   *bufp = info->buffer;
1690   *sizep = info->size;
1691 }
1692
1693 \f
1694 /* DWARF quick_symbols_functions support.  */
1695
1696 /* TUs can share .debug_line entries, and there can be a lot more TUs than
1697    unique line tables, so we maintain a separate table of all .debug_line
1698    derived entries to support the sharing.
1699    All the quick functions need is the list of file names.  We discard the
1700    line_header when we're done and don't need to record it here.  */
1701 struct quick_file_names
1702 {
1703   /* The offset in .debug_line of the line table.  We hash on this.  */
1704   unsigned int offset;
1705
1706   /* The number of entries in file_names, real_names.  */
1707   unsigned int num_file_names;
1708
1709   /* The file names from the line table, after being run through
1710      file_full_name.  */
1711   const char **file_names;
1712
1713   /* The file names from the line table after being run through
1714      gdb_realpath.  These are computed lazily.  */
1715   const char **real_names;
1716 };
1717
1718 /* When using the index (and thus not using psymtabs), each CU has an
1719    object of this type.  This is used to hold information needed by
1720    the various "quick" methods.  */
1721 struct dwarf2_per_cu_quick_data
1722 {
1723   /* The file table.  This can be NULL if there was no file table
1724      or it's currently not read in.
1725      NOTE: This points into dwarf2_per_objfile->quick_file_names_table.  */
1726   struct quick_file_names *file_names;
1727
1728   /* The corresponding symbol table.  This is NULL if symbols for this
1729      CU have not yet been read.  */
1730   struct symtab *symtab;
1731
1732   /* A temporary mark bit used when iterating over all CUs in
1733      expand_symtabs_matching.  */
1734   unsigned int mark : 1;
1735
1736   /* True if we've tried to read the file table and found there isn't one.
1737      There will be no point in trying to read it again next time.  */
1738   unsigned int no_file_data : 1;
1739 };
1740
1741 /* Hash function for a quick_file_names.  */
1742
1743 static hashval_t
1744 hash_file_name_entry (const void *e)
1745 {
1746   const struct quick_file_names *file_data = e;
1747
1748   return file_data->offset;
1749 }
1750
1751 /* Equality function for a quick_file_names.  */
1752
1753 static int
1754 eq_file_name_entry (const void *a, const void *b)
1755 {
1756   const struct quick_file_names *ea = a;
1757   const struct quick_file_names *eb = b;
1758
1759   return ea->offset == eb->offset;
1760 }
1761
1762 /* Delete function for a quick_file_names.  */
1763
1764 static void
1765 delete_file_name_entry (void *e)
1766 {
1767   struct quick_file_names *file_data = e;
1768   int i;
1769
1770   for (i = 0; i < file_data->num_file_names; ++i)
1771     {
1772       xfree ((void*) file_data->file_names[i]);
1773       if (file_data->real_names)
1774         xfree ((void*) file_data->real_names[i]);
1775     }
1776
1777   /* The space for the struct itself lives on objfile_obstack,
1778      so we don't free it here.  */
1779 }
1780
1781 /* Create a quick_file_names hash table.  */
1782
1783 static htab_t
1784 create_quick_file_names_table (unsigned int nr_initial_entries)
1785 {
1786   return htab_create_alloc (nr_initial_entries,
1787                             hash_file_name_entry, eq_file_name_entry,
1788                             delete_file_name_entry, xcalloc, xfree);
1789 }
1790
1791 /* Read in the symbols for PER_CU.  OBJFILE is the objfile from which
1792    this CU came.  */
1793
1794 static void
1795 dw2_do_instantiate_symtab (struct objfile *objfile,
1796                            struct dwarf2_per_cu_data *per_cu)
1797 {
1798   struct cleanup *back_to;
1799
1800   back_to = make_cleanup (dwarf2_release_queue, NULL);
1801
1802   queue_comp_unit (per_cu, objfile);
1803
1804   if (per_cu->from_debug_types)
1805     read_signatured_type_at_offset (objfile, per_cu->offset);
1806   else
1807     load_full_comp_unit (per_cu, objfile);
1808
1809   process_queue (objfile);
1810
1811   /* Age the cache, releasing compilation units that have not
1812      been used recently.  */
1813   age_cached_comp_units ();
1814
1815   do_cleanups (back_to);
1816 }
1817
1818 /* Ensure that the symbols for PER_CU have been read in.  OBJFILE is
1819    the objfile from which this CU came.  Returns the resulting symbol
1820    table.  */
1821
1822 static struct symtab *
1823 dw2_instantiate_symtab (struct objfile *objfile,
1824                         struct dwarf2_per_cu_data *per_cu)
1825 {
1826   if (!per_cu->v.quick->symtab)
1827     {
1828       struct cleanup *back_to = make_cleanup (free_cached_comp_units, NULL);
1829       increment_reading_symtab ();
1830       dw2_do_instantiate_symtab (objfile, per_cu);
1831       do_cleanups (back_to);
1832     }
1833   return per_cu->v.quick->symtab;
1834 }
1835
1836 /* Return the CU given its index.  */
1837
1838 static struct dwarf2_per_cu_data *
1839 dw2_get_cu (int index)
1840 {
1841   if (index >= dwarf2_per_objfile->n_comp_units)
1842     {
1843       index -= dwarf2_per_objfile->n_comp_units;
1844       return dwarf2_per_objfile->type_comp_units[index];
1845     }
1846   return dwarf2_per_objfile->all_comp_units[index];
1847 }
1848
1849 /* A helper function that knows how to read a 64-bit value in a way
1850    that doesn't make gdb die.  Returns 1 if the conversion went ok, 0
1851    otherwise.  */
1852
1853 static int
1854 extract_cu_value (const char *bytes, ULONGEST *result)
1855 {
1856   if (sizeof (ULONGEST) < 8)
1857     {
1858       int i;
1859
1860       /* Ignore the upper 4 bytes if they are all zero.  */
1861       for (i = 0; i < 4; ++i)
1862         if (bytes[i + 4] != 0)
1863           return 0;
1864
1865       *result = extract_unsigned_integer (bytes, 4, BFD_ENDIAN_LITTLE);
1866     }
1867   else
1868     *result = extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
1869   return 1;
1870 }
1871
1872 /* Read the CU list from the mapped index, and use it to create all
1873    the CU objects for this objfile.  Return 0 if something went wrong,
1874    1 if everything went ok.  */
1875
1876 static int
1877 create_cus_from_index (struct objfile *objfile, const gdb_byte *cu_list,
1878                        offset_type cu_list_elements)
1879 {
1880   offset_type i;
1881
1882   dwarf2_per_objfile->n_comp_units = cu_list_elements / 2;
1883   dwarf2_per_objfile->all_comp_units
1884     = obstack_alloc (&objfile->objfile_obstack,
1885                      dwarf2_per_objfile->n_comp_units
1886                      * sizeof (struct dwarf2_per_cu_data *));
1887
1888   for (i = 0; i < cu_list_elements; i += 2)
1889     {
1890       struct dwarf2_per_cu_data *the_cu;
1891       ULONGEST offset, length;
1892
1893       if (!extract_cu_value (cu_list, &offset)
1894           || !extract_cu_value (cu_list + 8, &length))
1895         return 0;
1896       cu_list += 2 * 8;
1897
1898       the_cu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
1899                                struct dwarf2_per_cu_data);
1900       the_cu->offset = offset;
1901       the_cu->length = length;
1902       the_cu->objfile = objfile;
1903       the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
1904                                         struct dwarf2_per_cu_quick_data);
1905       dwarf2_per_objfile->all_comp_units[i / 2] = the_cu;
1906     }
1907
1908   return 1;
1909 }
1910
1911 /* Create the signatured type hash table from the index.  */
1912
1913 static int
1914 create_signatured_type_table_from_index (struct objfile *objfile,
1915                                          const gdb_byte *bytes,
1916                                          offset_type elements)
1917 {
1918   offset_type i;
1919   htab_t sig_types_hash;
1920
1921   dwarf2_per_objfile->n_type_comp_units = elements / 3;
1922   dwarf2_per_objfile->type_comp_units
1923     = obstack_alloc (&objfile->objfile_obstack,
1924                      dwarf2_per_objfile->n_type_comp_units
1925                      * sizeof (struct dwarf2_per_cu_data *));
1926
1927   sig_types_hash = allocate_signatured_type_table (objfile);
1928
1929   for (i = 0; i < elements; i += 3)
1930     {
1931       struct signatured_type *type_sig;
1932       ULONGEST offset, type_offset, signature;
1933       void **slot;
1934
1935       if (!extract_cu_value (bytes, &offset)
1936           || !extract_cu_value (bytes + 8, &type_offset))
1937         return 0;
1938       signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
1939       bytes += 3 * 8;
1940
1941       type_sig = OBSTACK_ZALLOC (&objfile->objfile_obstack,
1942                                  struct signatured_type);
1943       type_sig->signature = signature;
1944       type_sig->type_offset = type_offset;
1945       type_sig->per_cu.from_debug_types = 1;
1946       type_sig->per_cu.offset = offset;
1947       type_sig->per_cu.objfile = objfile;
1948       type_sig->per_cu.v.quick
1949         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
1950                           struct dwarf2_per_cu_quick_data);
1951
1952       slot = htab_find_slot (sig_types_hash, type_sig, INSERT);
1953       *slot = type_sig;
1954
1955       dwarf2_per_objfile->type_comp_units[i / 3] = &type_sig->per_cu;
1956     }
1957
1958   dwarf2_per_objfile->signatured_types = sig_types_hash;
1959
1960   return 1;
1961 }
1962
1963 /* Read the address map data from the mapped index, and use it to
1964    populate the objfile's psymtabs_addrmap.  */
1965
1966 static void
1967 create_addrmap_from_index (struct objfile *objfile, struct mapped_index *index)
1968 {
1969   const gdb_byte *iter, *end;
1970   struct obstack temp_obstack;
1971   struct addrmap *mutable_map;
1972   struct cleanup *cleanup;
1973   CORE_ADDR baseaddr;
1974
1975   obstack_init (&temp_obstack);
1976   cleanup = make_cleanup_obstack_free (&temp_obstack);
1977   mutable_map = addrmap_create_mutable (&temp_obstack);
1978
1979   iter = index->address_table;
1980   end = iter + index->address_table_size;
1981
1982   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
1983
1984   while (iter < end)
1985     {
1986       ULONGEST hi, lo, cu_index;
1987       lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
1988       iter += 8;
1989       hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
1990       iter += 8;
1991       cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
1992       iter += 4;
1993       
1994       addrmap_set_empty (mutable_map, lo + baseaddr, hi + baseaddr - 1,
1995                          dw2_get_cu (cu_index));
1996     }
1997
1998   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
1999                                                     &objfile->objfile_obstack);
2000   do_cleanups (cleanup);
2001 }
2002
2003 /* The hash function for strings in the mapped index.  This is the same as
2004    SYMBOL_HASH_NEXT, but we keep a separate copy to maintain control over the
2005    implementation.  This is necessary because the hash function is tied to the
2006    format of the mapped index file.  The hash values do not have to match with
2007    SYMBOL_HASH_NEXT.
2008    
2009    Use INT_MAX for INDEX_VERSION if you generate the current index format.  */
2010
2011 static hashval_t
2012 mapped_index_string_hash (int index_version, const void *p)
2013 {
2014   const unsigned char *str = (const unsigned char *) p;
2015   hashval_t r = 0;
2016   unsigned char c;
2017
2018   while ((c = *str++) != 0)
2019     {
2020       if (index_version >= 5)
2021         c = tolower (c);
2022       r = r * 67 + c - 113;
2023     }
2024
2025   return r;
2026 }
2027
2028 /* Find a slot in the mapped index INDEX for the object named NAME.
2029    If NAME is found, set *VEC_OUT to point to the CU vector in the
2030    constant pool and return 1.  If NAME cannot be found, return 0.  */
2031
2032 static int
2033 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
2034                           offset_type **vec_out)
2035 {
2036   struct cleanup *back_to = make_cleanup (null_cleanup, 0);
2037   offset_type hash;
2038   offset_type slot, step;
2039   int (*cmp) (const char *, const char *);
2040
2041   if (current_language->la_language == language_cplus
2042       || current_language->la_language == language_java
2043       || current_language->la_language == language_fortran)
2044     {
2045       /* NAME is already canonical.  Drop any qualifiers as .gdb_index does
2046          not contain any.  */
2047       const char *paren = strchr (name, '(');
2048
2049       if (paren)
2050         {
2051           char *dup;
2052
2053           dup = xmalloc (paren - name + 1);
2054           memcpy (dup, name, paren - name);
2055           dup[paren - name] = 0;
2056
2057           make_cleanup (xfree, dup);
2058           name = dup;
2059         }
2060     }
2061
2062   /* Index version 4 did not support case insensitive searches.  But the
2063      indexes for case insensitive languages are built in lowercase, therefore
2064      simulate our NAME being searched is also lowercased.  */
2065   hash = mapped_index_string_hash ((index->version == 4
2066                                     && case_sensitivity == case_sensitive_off
2067                                     ? 5 : index->version),
2068                                    name);
2069
2070   slot = hash & (index->symbol_table_slots - 1);
2071   step = ((hash * 17) & (index->symbol_table_slots - 1)) | 1;
2072   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
2073
2074   for (;;)
2075     {
2076       /* Convert a slot number to an offset into the table.  */
2077       offset_type i = 2 * slot;
2078       const char *str;
2079       if (index->symbol_table[i] == 0 && index->symbol_table[i + 1] == 0)
2080         {
2081           do_cleanups (back_to);
2082           return 0;
2083         }
2084
2085       str = index->constant_pool + MAYBE_SWAP (index->symbol_table[i]);
2086       if (!cmp (name, str))
2087         {
2088           *vec_out = (offset_type *) (index->constant_pool
2089                                       + MAYBE_SWAP (index->symbol_table[i + 1]));
2090           do_cleanups (back_to);
2091           return 1;
2092         }
2093
2094       slot = (slot + step) & (index->symbol_table_slots - 1);
2095     }
2096 }
2097
2098 /* Read the index file.  If everything went ok, initialize the "quick"
2099    elements of all the CUs and return 1.  Otherwise, return 0.  */
2100
2101 static int
2102 dwarf2_read_index (struct objfile *objfile)
2103 {
2104   char *addr;
2105   struct mapped_index *map;
2106   offset_type *metadata;
2107   const gdb_byte *cu_list;
2108   const gdb_byte *types_list = NULL;
2109   offset_type version, cu_list_elements;
2110   offset_type types_list_elements = 0;
2111   int i;
2112
2113   if (dwarf2_section_empty_p (&dwarf2_per_objfile->gdb_index))
2114     return 0;
2115
2116   /* Older elfutils strip versions could keep the section in the main
2117      executable while splitting it for the separate debug info file.  */
2118   if ((bfd_get_file_flags (dwarf2_per_objfile->gdb_index.asection)
2119        & SEC_HAS_CONTENTS) == 0)
2120     return 0;
2121
2122   dwarf2_read_section (objfile, &dwarf2_per_objfile->gdb_index);
2123
2124   addr = dwarf2_per_objfile->gdb_index.buffer;
2125   /* Version check.  */
2126   version = MAYBE_SWAP (*(offset_type *) addr);
2127   /* Versions earlier than 3 emitted every copy of a psymbol.  This
2128      causes the index to behave very poorly for certain requests.  Version 3
2129      contained incomplete addrmap.  So, it seems better to just ignore such
2130      indices.  Index version 4 uses a different hash function than index
2131      version 5 and later.  */
2132   if (version < 4)
2133     return 0;
2134   /* Indexes with higher version than the one supported by GDB may be no
2135      longer backward compatible.  */
2136   if (version > 5)
2137     return 0;
2138
2139   map = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct mapped_index);
2140   map->version = version;
2141   map->total_size = dwarf2_per_objfile->gdb_index.size;
2142
2143   metadata = (offset_type *) (addr + sizeof (offset_type));
2144
2145   i = 0;
2146   cu_list = addr + MAYBE_SWAP (metadata[i]);
2147   cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
2148                       / 8);
2149   ++i;
2150
2151   types_list = addr + MAYBE_SWAP (metadata[i]);
2152   types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
2153                           - MAYBE_SWAP (metadata[i]))
2154                          / 8);
2155   ++i;
2156
2157   map->address_table = addr + MAYBE_SWAP (metadata[i]);
2158   map->address_table_size = (MAYBE_SWAP (metadata[i + 1])
2159                              - MAYBE_SWAP (metadata[i]));
2160   ++i;
2161
2162   map->symbol_table = (offset_type *) (addr + MAYBE_SWAP (metadata[i]));
2163   map->symbol_table_slots = ((MAYBE_SWAP (metadata[i + 1])
2164                               - MAYBE_SWAP (metadata[i]))
2165                              / (2 * sizeof (offset_type)));
2166   ++i;
2167
2168   map->constant_pool = addr + MAYBE_SWAP (metadata[i]);
2169
2170   if (!create_cus_from_index (objfile, cu_list, cu_list_elements))
2171     return 0;
2172
2173   if (types_list_elements
2174       && !create_signatured_type_table_from_index (objfile, types_list,
2175                                                    types_list_elements))
2176     return 0;
2177
2178   create_addrmap_from_index (objfile, map);
2179
2180   dwarf2_per_objfile->index_table = map;
2181   dwarf2_per_objfile->using_index = 1;
2182   dwarf2_per_objfile->quick_file_names_table =
2183     create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
2184
2185   return 1;
2186 }
2187
2188 /* A helper for the "quick" functions which sets the global
2189    dwarf2_per_objfile according to OBJFILE.  */
2190
2191 static void
2192 dw2_setup (struct objfile *objfile)
2193 {
2194   dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
2195   gdb_assert (dwarf2_per_objfile);
2196 }
2197
2198 /* A helper for the "quick" functions which attempts to read the line
2199    table for THIS_CU.  */
2200
2201 static struct quick_file_names *
2202 dw2_get_file_names (struct objfile *objfile,
2203                     struct dwarf2_per_cu_data *this_cu)
2204 {
2205   bfd *abfd = objfile->obfd;
2206   struct line_header *lh;
2207   struct attribute *attr;
2208   struct cleanup *cleanups;
2209   struct die_info *comp_unit_die;
2210   struct dwarf2_section_info* sec;
2211   gdb_byte *beg_of_comp_unit, *info_ptr, *buffer;
2212   int has_children, i;
2213   struct dwarf2_cu cu;
2214   unsigned int bytes_read, buffer_size;
2215   struct die_reader_specs reader_specs;
2216   char *name, *comp_dir;
2217   void **slot;
2218   struct quick_file_names *qfn;
2219   unsigned int line_offset;
2220
2221   if (this_cu->v.quick->file_names != NULL)
2222     return this_cu->v.quick->file_names;
2223   /* If we know there is no line data, no point in looking again.  */
2224   if (this_cu->v.quick->no_file_data)
2225     return NULL;
2226
2227   init_one_comp_unit (&cu, objfile);
2228   cleanups = make_cleanup (free_stack_comp_unit, &cu);
2229
2230   if (this_cu->from_debug_types)
2231     sec = &dwarf2_per_objfile->types;
2232   else
2233     sec = &dwarf2_per_objfile->info;
2234   dwarf2_read_section (objfile, sec);
2235   buffer_size = sec->size;
2236   buffer = sec->buffer;
2237   info_ptr = buffer + this_cu->offset;
2238   beg_of_comp_unit = info_ptr;
2239
2240   info_ptr = partial_read_comp_unit_head (&cu.header, info_ptr,
2241                                           buffer, buffer_size,
2242                                           abfd);
2243
2244   /* Complete the cu_header.  */
2245   cu.header.offset = beg_of_comp_unit - buffer;
2246   cu.header.first_die_offset = info_ptr - beg_of_comp_unit;
2247
2248   this_cu->cu = &cu;
2249   cu.per_cu = this_cu;
2250
2251   dwarf2_read_abbrevs (abfd, &cu);
2252   make_cleanup (dwarf2_free_abbrev_table, &cu);
2253
2254   if (this_cu->from_debug_types)
2255     info_ptr += 8 /*signature*/ + cu.header.offset_size;
2256   init_cu_die_reader (&reader_specs, &cu);
2257   read_full_die (&reader_specs, &comp_unit_die, info_ptr,
2258                  &has_children);
2259
2260   lh = NULL;
2261   slot = NULL;
2262   line_offset = 0;
2263   attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, &cu);
2264   if (attr)
2265     {
2266       struct quick_file_names find_entry;
2267
2268       line_offset = DW_UNSND (attr);
2269
2270       /* We may have already read in this line header (TU line header sharing).
2271          If we have we're done.  */
2272       find_entry.offset = line_offset;
2273       slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
2274                              &find_entry, INSERT);
2275       if (*slot != NULL)
2276         {
2277           do_cleanups (cleanups);
2278           this_cu->v.quick->file_names = *slot;
2279           return *slot;
2280         }
2281
2282       lh = dwarf_decode_line_header (line_offset, abfd, &cu);
2283     }
2284   if (lh == NULL)
2285     {
2286       do_cleanups (cleanups);
2287       this_cu->v.quick->no_file_data = 1;
2288       return NULL;
2289     }
2290
2291   qfn = obstack_alloc (&objfile->objfile_obstack, sizeof (*qfn));
2292   qfn->offset = line_offset;
2293   gdb_assert (slot != NULL);
2294   *slot = qfn;
2295
2296   find_file_and_directory (comp_unit_die, &cu, &name, &comp_dir);
2297
2298   qfn->num_file_names = lh->num_file_names;
2299   qfn->file_names = obstack_alloc (&objfile->objfile_obstack,
2300                                    lh->num_file_names * sizeof (char *));
2301   for (i = 0; i < lh->num_file_names; ++i)
2302     qfn->file_names[i] = file_full_name (i + 1, lh, comp_dir);
2303   qfn->real_names = NULL;
2304
2305   free_line_header (lh);
2306   do_cleanups (cleanups);
2307
2308   this_cu->v.quick->file_names = qfn;
2309   return qfn;
2310 }
2311
2312 /* A helper for the "quick" functions which computes and caches the
2313    real path for a given file name from the line table.  */
2314
2315 static const char *
2316 dw2_get_real_path (struct objfile *objfile,
2317                    struct quick_file_names *qfn, int index)
2318 {
2319   if (qfn->real_names == NULL)
2320     qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
2321                                       qfn->num_file_names, sizeof (char *));
2322
2323   if (qfn->real_names[index] == NULL)
2324     qfn->real_names[index] = gdb_realpath (qfn->file_names[index]);
2325
2326   return qfn->real_names[index];
2327 }
2328
2329 static struct symtab *
2330 dw2_find_last_source_symtab (struct objfile *objfile)
2331 {
2332   int index;
2333
2334   dw2_setup (objfile);
2335   index = dwarf2_per_objfile->n_comp_units - 1;
2336   return dw2_instantiate_symtab (objfile, dw2_get_cu (index));
2337 }
2338
2339 /* Traversal function for dw2_forget_cached_source_info.  */
2340
2341 static int
2342 dw2_free_cached_file_names (void **slot, void *info)
2343 {
2344   struct quick_file_names *file_data = (struct quick_file_names *) *slot;
2345
2346   if (file_data->real_names)
2347     {
2348       int i;
2349
2350       for (i = 0; i < file_data->num_file_names; ++i)
2351         {
2352           xfree ((void*) file_data->real_names[i]);
2353           file_data->real_names[i] = NULL;
2354         }
2355     }
2356
2357   return 1;
2358 }
2359
2360 static void
2361 dw2_forget_cached_source_info (struct objfile *objfile)
2362 {
2363   dw2_setup (objfile);
2364
2365   htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
2366                           dw2_free_cached_file_names, NULL);
2367 }
2368
2369 static int
2370 dw2_lookup_symtab (struct objfile *objfile, const char *name,
2371                    const char *full_path, const char *real_path,
2372                    struct symtab **result)
2373 {
2374   int i;
2375   int check_basename = lbasename (name) == name;
2376   struct dwarf2_per_cu_data *base_cu = NULL;
2377
2378   dw2_setup (objfile);
2379
2380   for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2381                    + dwarf2_per_objfile->n_type_comp_units); ++i)
2382     {
2383       int j;
2384       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
2385       struct quick_file_names *file_data;
2386
2387       if (per_cu->v.quick->symtab)
2388         continue;
2389
2390       file_data = dw2_get_file_names (objfile, per_cu);
2391       if (file_data == NULL)
2392         continue;
2393
2394       for (j = 0; j < file_data->num_file_names; ++j)
2395         {
2396           const char *this_name = file_data->file_names[j];
2397
2398           if (FILENAME_CMP (name, this_name) == 0)
2399             {
2400               *result = dw2_instantiate_symtab (objfile, per_cu);
2401               return 1;
2402             }
2403
2404           if (check_basename && ! base_cu
2405               && FILENAME_CMP (lbasename (this_name), name) == 0)
2406             base_cu = per_cu;
2407
2408           if (full_path != NULL)
2409             {
2410               const char *this_real_name = dw2_get_real_path (objfile,
2411                                                               file_data, j);
2412
2413               if (this_real_name != NULL
2414                   && FILENAME_CMP (full_path, this_real_name) == 0)
2415                 {
2416                   *result = dw2_instantiate_symtab (objfile, per_cu);
2417                   return 1;
2418                 }
2419             }
2420
2421           if (real_path != NULL)
2422             {
2423               const char *this_real_name = dw2_get_real_path (objfile,
2424                                                               file_data, j);
2425
2426               if (this_real_name != NULL
2427                   && FILENAME_CMP (real_path, this_real_name) == 0)
2428                 {
2429                   *result = dw2_instantiate_symtab (objfile, per_cu);
2430                   return 1;
2431                 }
2432             }
2433         }
2434     }
2435
2436   if (base_cu)
2437     {
2438       *result = dw2_instantiate_symtab (objfile, base_cu);
2439       return 1;
2440     }
2441
2442   return 0;
2443 }
2444
2445 static struct symtab *
2446 dw2_lookup_symbol (struct objfile *objfile, int block_index,
2447                    const char *name, domain_enum domain)
2448 {
2449   /* We do all the work in the pre_expand_symtabs_matching hook
2450      instead.  */
2451   return NULL;
2452 }
2453
2454 /* A helper function that expands all symtabs that hold an object
2455    named NAME.  */
2456
2457 static void
2458 dw2_do_expand_symtabs_matching (struct objfile *objfile, const char *name)
2459 {
2460   dw2_setup (objfile);
2461
2462   /* index_table is NULL if OBJF_READNOW.  */
2463   if (dwarf2_per_objfile->index_table)
2464     {
2465       offset_type *vec;
2466
2467       if (find_slot_in_mapped_hash (dwarf2_per_objfile->index_table,
2468                                     name, &vec))
2469         {
2470           offset_type i, len = MAYBE_SWAP (*vec);
2471           for (i = 0; i < len; ++i)
2472             {
2473               offset_type cu_index = MAYBE_SWAP (vec[i + 1]);
2474               struct dwarf2_per_cu_data *per_cu = dw2_get_cu (cu_index);
2475
2476               dw2_instantiate_symtab (objfile, per_cu);
2477             }
2478         }
2479     }
2480 }
2481
2482 static void
2483 dw2_pre_expand_symtabs_matching (struct objfile *objfile,
2484                                  enum block_enum block_kind, const char *name,
2485                                  domain_enum domain)
2486 {
2487   dw2_do_expand_symtabs_matching (objfile, name);
2488 }
2489
2490 static void
2491 dw2_print_stats (struct objfile *objfile)
2492 {
2493   int i, count;
2494
2495   dw2_setup (objfile);
2496   count = 0;
2497   for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2498                    + dwarf2_per_objfile->n_type_comp_units); ++i)
2499     {
2500       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
2501
2502       if (!per_cu->v.quick->symtab)
2503         ++count;
2504     }
2505   printf_filtered (_("  Number of unread CUs: %d\n"), count);
2506 }
2507
2508 static void
2509 dw2_dump (struct objfile *objfile)
2510 {
2511   /* Nothing worth printing.  */
2512 }
2513
2514 static void
2515 dw2_relocate (struct objfile *objfile, struct section_offsets *new_offsets,
2516               struct section_offsets *delta)
2517 {
2518   /* There's nothing to relocate here.  */
2519 }
2520
2521 static void
2522 dw2_expand_symtabs_for_function (struct objfile *objfile,
2523                                  const char *func_name)
2524 {
2525   dw2_do_expand_symtabs_matching (objfile, func_name);
2526 }
2527
2528 static void
2529 dw2_expand_all_symtabs (struct objfile *objfile)
2530 {
2531   int i;
2532
2533   dw2_setup (objfile);
2534
2535   for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2536                    + dwarf2_per_objfile->n_type_comp_units); ++i)
2537     {
2538       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
2539
2540       dw2_instantiate_symtab (objfile, per_cu);
2541     }
2542 }
2543
2544 static void
2545 dw2_expand_symtabs_with_filename (struct objfile *objfile,
2546                                   const char *filename)
2547 {
2548   int i;
2549
2550   dw2_setup (objfile);
2551
2552   /* We don't need to consider type units here.
2553      This is only called for examining code, e.g. expand_line_sal.
2554      There can be an order of magnitude (or more) more type units
2555      than comp units, and we avoid them if we can.  */
2556
2557   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
2558     {
2559       int j;
2560       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
2561       struct quick_file_names *file_data;
2562
2563       if (per_cu->v.quick->symtab)
2564         continue;
2565
2566       file_data = dw2_get_file_names (objfile, per_cu);
2567       if (file_data == NULL)
2568         continue;
2569
2570       for (j = 0; j < file_data->num_file_names; ++j)
2571         {
2572           const char *this_name = file_data->file_names[j];
2573           if (FILENAME_CMP (this_name, filename) == 0)
2574             {
2575               dw2_instantiate_symtab (objfile, per_cu);
2576               break;
2577             }
2578         }
2579     }
2580 }
2581
2582 static const char *
2583 dw2_find_symbol_file (struct objfile *objfile, const char *name)
2584 {
2585   struct dwarf2_per_cu_data *per_cu;
2586   offset_type *vec;
2587   struct quick_file_names *file_data;
2588
2589   dw2_setup (objfile);
2590
2591   /* index_table is NULL if OBJF_READNOW.  */
2592   if (!dwarf2_per_objfile->index_table)
2593     return NULL;
2594
2595   if (!find_slot_in_mapped_hash (dwarf2_per_objfile->index_table,
2596                                  name, &vec))
2597     return NULL;
2598
2599   /* Note that this just looks at the very first one named NAME -- but
2600      actually we are looking for a function.  find_main_filename
2601      should be rewritten so that it doesn't require a custom hook.  It
2602      could just use the ordinary symbol tables.  */
2603   /* vec[0] is the length, which must always be >0.  */
2604   per_cu = dw2_get_cu (MAYBE_SWAP (vec[1]));
2605
2606   file_data = dw2_get_file_names (objfile, per_cu);
2607   if (file_data == NULL)
2608     return NULL;
2609
2610   return file_data->file_names[file_data->num_file_names - 1];
2611 }
2612
2613 static void
2614 dw2_map_matching_symbols (const char * name, domain_enum namespace,
2615                           struct objfile *objfile, int global,
2616                           int (*callback) (struct block *,
2617                                            struct symbol *, void *),
2618                           void *data, symbol_compare_ftype *match,
2619                           symbol_compare_ftype *ordered_compare)
2620 {
2621   /* Currently unimplemented; used for Ada.  The function can be called if the
2622      current language is Ada for a non-Ada objfile using GNU index.  As Ada
2623      does not look for non-Ada symbols this function should just return.  */
2624 }
2625
2626 static void
2627 dw2_expand_symtabs_matching (struct objfile *objfile,
2628                              int (*file_matcher) (const char *, void *),
2629                              int (*name_matcher) (const char *, void *),
2630                              enum search_domain kind,
2631                              void *data)
2632 {
2633   int i;
2634   offset_type iter;
2635   struct mapped_index *index;
2636
2637   dw2_setup (objfile);
2638
2639   /* index_table is NULL if OBJF_READNOW.  */
2640   if (!dwarf2_per_objfile->index_table)
2641     return;
2642   index = dwarf2_per_objfile->index_table;
2643
2644   if (file_matcher != NULL)
2645     for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2646                      + dwarf2_per_objfile->n_type_comp_units); ++i)
2647       {
2648         int j;
2649         struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
2650         struct quick_file_names *file_data;
2651
2652         per_cu->v.quick->mark = 0;
2653         if (per_cu->v.quick->symtab)
2654           continue;
2655
2656         file_data = dw2_get_file_names (objfile, per_cu);
2657         if (file_data == NULL)
2658           continue;
2659
2660         for (j = 0; j < file_data->num_file_names; ++j)
2661           {
2662             if (file_matcher (file_data->file_names[j], data))
2663               {
2664                 per_cu->v.quick->mark = 1;
2665                 break;
2666               }
2667           }
2668       }
2669
2670   for (iter = 0; iter < index->symbol_table_slots; ++iter)
2671     {
2672       offset_type idx = 2 * iter;
2673       const char *name;
2674       offset_type *vec, vec_len, vec_idx;
2675
2676       if (index->symbol_table[idx] == 0 && index->symbol_table[idx + 1] == 0)
2677         continue;
2678
2679       name = index->constant_pool + MAYBE_SWAP (index->symbol_table[idx]);
2680
2681       if (! (*name_matcher) (name, data))
2682         continue;
2683
2684       /* The name was matched, now expand corresponding CUs that were
2685          marked.  */
2686       vec = (offset_type *) (index->constant_pool
2687                              + MAYBE_SWAP (index->symbol_table[idx + 1]));
2688       vec_len = MAYBE_SWAP (vec[0]);
2689       for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
2690         {
2691           struct dwarf2_per_cu_data *per_cu;
2692
2693           per_cu = dw2_get_cu (MAYBE_SWAP (vec[vec_idx + 1]));
2694           if (file_matcher == NULL || per_cu->v.quick->mark)
2695             dw2_instantiate_symtab (objfile, per_cu);
2696         }
2697     }
2698 }
2699
2700 static struct symtab *
2701 dw2_find_pc_sect_symtab (struct objfile *objfile,
2702                          struct minimal_symbol *msymbol,
2703                          CORE_ADDR pc,
2704                          struct obj_section *section,
2705                          int warn_if_readin)
2706 {
2707   struct dwarf2_per_cu_data *data;
2708
2709   dw2_setup (objfile);
2710
2711   if (!objfile->psymtabs_addrmap)
2712     return NULL;
2713
2714   data = addrmap_find (objfile->psymtabs_addrmap, pc);
2715   if (!data)
2716     return NULL;
2717
2718   if (warn_if_readin && data->v.quick->symtab)
2719     warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
2720              paddress (get_objfile_arch (objfile), pc));
2721
2722   return dw2_instantiate_symtab (objfile, data);
2723 }
2724
2725 static void
2726 dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
2727                           void *data)
2728 {
2729   int i;
2730
2731   dw2_setup (objfile);
2732
2733   for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2734                    + dwarf2_per_objfile->n_type_comp_units); ++i)
2735     {
2736       int j;
2737       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
2738       struct quick_file_names *file_data;
2739
2740       if (per_cu->v.quick->symtab)
2741         continue;
2742
2743       file_data = dw2_get_file_names (objfile, per_cu);
2744       if (file_data == NULL)
2745         continue;
2746
2747       for (j = 0; j < file_data->num_file_names; ++j)
2748         {
2749           const char *this_real_name = dw2_get_real_path (objfile, file_data,
2750                                                           j);
2751           (*fun) (file_data->file_names[j], this_real_name, data);
2752         }
2753     }
2754 }
2755
2756 static int
2757 dw2_has_symbols (struct objfile *objfile)
2758 {
2759   return 1;
2760 }
2761
2762 const struct quick_symbol_functions dwarf2_gdb_index_functions =
2763 {
2764   dw2_has_symbols,
2765   dw2_find_last_source_symtab,
2766   dw2_forget_cached_source_info,
2767   dw2_lookup_symtab,
2768   dw2_lookup_symbol,
2769   dw2_pre_expand_symtabs_matching,
2770   dw2_print_stats,
2771   dw2_dump,
2772   dw2_relocate,
2773   dw2_expand_symtabs_for_function,
2774   dw2_expand_all_symtabs,
2775   dw2_expand_symtabs_with_filename,
2776   dw2_find_symbol_file,
2777   dw2_map_matching_symbols,
2778   dw2_expand_symtabs_matching,
2779   dw2_find_pc_sect_symtab,
2780   dw2_map_symbol_filenames
2781 };
2782
2783 /* Initialize for reading DWARF for this objfile.  Return 0 if this
2784    file will use psymtabs, or 1 if using the GNU index.  */
2785
2786 int
2787 dwarf2_initialize_objfile (struct objfile *objfile)
2788 {
2789   /* If we're about to read full symbols, don't bother with the
2790      indices.  In this case we also don't care if some other debug
2791      format is making psymtabs, because they are all about to be
2792      expanded anyway.  */
2793   if ((objfile->flags & OBJF_READNOW))
2794     {
2795       int i;
2796
2797       dwarf2_per_objfile->using_index = 1;
2798       create_all_comp_units (objfile);
2799       create_debug_types_hash_table (objfile);
2800       dwarf2_per_objfile->quick_file_names_table =
2801         create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
2802
2803       for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2804                        + dwarf2_per_objfile->n_type_comp_units); ++i)
2805         {
2806           struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
2807
2808           per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2809                                             struct dwarf2_per_cu_quick_data);
2810         }
2811
2812       /* Return 1 so that gdb sees the "quick" functions.  However,
2813          these functions will be no-ops because we will have expanded
2814          all symtabs.  */
2815       return 1;
2816     }
2817
2818   if (dwarf2_read_index (objfile))
2819     return 1;
2820
2821   return 0;
2822 }
2823
2824 \f
2825
2826 /* Build a partial symbol table.  */
2827
2828 void
2829 dwarf2_build_psymtabs (struct objfile *objfile)
2830 {
2831   if (objfile->global_psymbols.size == 0 && objfile->static_psymbols.size == 0)
2832     {
2833       init_psymbol_list (objfile, 1024);
2834     }
2835
2836   dwarf2_build_psymtabs_hard (objfile);
2837 }
2838
2839 /* Return TRUE if OFFSET is within CU_HEADER.  */
2840
2841 static inline int
2842 offset_in_cu_p (const struct comp_unit_head *cu_header, unsigned int offset)
2843 {
2844   unsigned int bottom = cu_header->offset;
2845   unsigned int top = (cu_header->offset
2846                       + cu_header->length
2847                       + cu_header->initial_length_size);
2848
2849   return (offset >= bottom && offset < top);
2850 }
2851
2852 /* Read in the comp unit header information from the debug_info at info_ptr.
2853    NOTE: This leaves members offset, first_die_offset to be filled in
2854    by the caller.  */
2855
2856 static gdb_byte *
2857 read_comp_unit_head (struct comp_unit_head *cu_header,
2858                      gdb_byte *info_ptr, bfd *abfd)
2859 {
2860   int signed_addr;
2861   unsigned int bytes_read;
2862
2863   cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
2864   cu_header->initial_length_size = bytes_read;
2865   cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
2866   info_ptr += bytes_read;
2867   cu_header->version = read_2_bytes (abfd, info_ptr);
2868   info_ptr += 2;
2869   cu_header->abbrev_offset = read_offset (abfd, info_ptr, cu_header,
2870                                           &bytes_read);
2871   info_ptr += bytes_read;
2872   cu_header->addr_size = read_1_byte (abfd, info_ptr);
2873   info_ptr += 1;
2874   signed_addr = bfd_get_sign_extend_vma (abfd);
2875   if (signed_addr < 0)
2876     internal_error (__FILE__, __LINE__,
2877                     _("read_comp_unit_head: dwarf from non elf file"));
2878   cu_header->signed_addr_p = signed_addr;
2879
2880   return info_ptr;
2881 }
2882
2883 static gdb_byte *
2884 partial_read_comp_unit_head (struct comp_unit_head *header, gdb_byte *info_ptr,
2885                              gdb_byte *buffer, unsigned int buffer_size,
2886                              bfd *abfd)
2887 {
2888   gdb_byte *beg_of_comp_unit = info_ptr;
2889
2890   info_ptr = read_comp_unit_head (header, info_ptr, abfd);
2891
2892   if (header->version != 2 && header->version != 3 && header->version != 4)
2893     error (_("Dwarf Error: wrong version in compilation unit header "
2894            "(is %d, should be 2, 3, or 4) [in module %s]"), header->version,
2895            bfd_get_filename (abfd));
2896
2897   if (header->abbrev_offset
2898       >= dwarf2_section_size (dwarf2_per_objfile->objfile,
2899                               &dwarf2_per_objfile->abbrev))
2900     error (_("Dwarf Error: bad offset (0x%lx) in compilation unit header "
2901            "(offset 0x%lx + 6) [in module %s]"),
2902            (long) header->abbrev_offset,
2903            (long) (beg_of_comp_unit - buffer),
2904            bfd_get_filename (abfd));
2905
2906   if (beg_of_comp_unit + header->length + header->initial_length_size
2907       > buffer + buffer_size)
2908     error (_("Dwarf Error: bad length (0x%lx) in compilation unit header "
2909            "(offset 0x%lx + 0) [in module %s]"),
2910            (long) header->length,
2911            (long) (beg_of_comp_unit - buffer),
2912            bfd_get_filename (abfd));
2913
2914   return info_ptr;
2915 }
2916
2917 /* Read in the types comp unit header information from .debug_types entry at
2918    types_ptr.  The result is a pointer to one past the end of the header.  */
2919
2920 static gdb_byte *
2921 read_type_comp_unit_head (struct comp_unit_head *cu_header,
2922                           ULONGEST *signature,
2923                           gdb_byte *types_ptr, bfd *abfd)
2924 {
2925   gdb_byte *initial_types_ptr = types_ptr;
2926
2927   dwarf2_read_section (dwarf2_per_objfile->objfile,
2928                        &dwarf2_per_objfile->types);
2929   cu_header->offset = types_ptr - dwarf2_per_objfile->types.buffer;
2930
2931   types_ptr = read_comp_unit_head (cu_header, types_ptr, abfd);
2932
2933   *signature = read_8_bytes (abfd, types_ptr);
2934   types_ptr += 8;
2935   types_ptr += cu_header->offset_size;
2936   cu_header->first_die_offset = types_ptr - initial_types_ptr;
2937
2938   return types_ptr;
2939 }
2940
2941 /* Allocate a new partial symtab for file named NAME and mark this new
2942    partial symtab as being an include of PST.  */
2943
2944 static void
2945 dwarf2_create_include_psymtab (char *name, struct partial_symtab *pst,
2946                                struct objfile *objfile)
2947 {
2948   struct partial_symtab *subpst = allocate_psymtab (name, objfile);
2949
2950   subpst->section_offsets = pst->section_offsets;
2951   subpst->textlow = 0;
2952   subpst->texthigh = 0;
2953
2954   subpst->dependencies = (struct partial_symtab **)
2955     obstack_alloc (&objfile->objfile_obstack,
2956                    sizeof (struct partial_symtab *));
2957   subpst->dependencies[0] = pst;
2958   subpst->number_of_dependencies = 1;
2959
2960   subpst->globals_offset = 0;
2961   subpst->n_global_syms = 0;
2962   subpst->statics_offset = 0;
2963   subpst->n_static_syms = 0;
2964   subpst->symtab = NULL;
2965   subpst->read_symtab = pst->read_symtab;
2966   subpst->readin = 0;
2967
2968   /* No private part is necessary for include psymtabs.  This property
2969      can be used to differentiate between such include psymtabs and
2970      the regular ones.  */
2971   subpst->read_symtab_private = NULL;
2972 }
2973
2974 /* Read the Line Number Program data and extract the list of files
2975    included by the source file represented by PST.  Build an include
2976    partial symtab for each of these included files.  */
2977
2978 static void
2979 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
2980                                struct die_info *die,
2981                                struct partial_symtab *pst)
2982 {
2983   struct objfile *objfile = cu->objfile;
2984   bfd *abfd = objfile->obfd;
2985   struct line_header *lh = NULL;
2986   struct attribute *attr;
2987
2988   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
2989   if (attr)
2990     {
2991       unsigned int line_offset = DW_UNSND (attr);
2992
2993       lh = dwarf_decode_line_header (line_offset, abfd, cu);
2994     }
2995   if (lh == NULL)
2996     return;  /* No linetable, so no includes.  */
2997
2998   /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  */
2999   dwarf_decode_lines (lh, pst->dirname, abfd, cu, pst);
3000
3001   free_line_header (lh);
3002 }
3003
3004 static hashval_t
3005 hash_type_signature (const void *item)
3006 {
3007   const struct signatured_type *type_sig = item;
3008
3009   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
3010   return type_sig->signature;
3011 }
3012
3013 static int
3014 eq_type_signature (const void *item_lhs, const void *item_rhs)
3015 {
3016   const struct signatured_type *lhs = item_lhs;
3017   const struct signatured_type *rhs = item_rhs;
3018
3019   return lhs->signature == rhs->signature;
3020 }
3021
3022 /* Allocate a hash table for signatured types.  */
3023
3024 static htab_t
3025 allocate_signatured_type_table (struct objfile *objfile)
3026 {
3027   return htab_create_alloc_ex (41,
3028                                hash_type_signature,
3029                                eq_type_signature,
3030                                NULL,
3031                                &objfile->objfile_obstack,
3032                                hashtab_obstack_allocate,
3033                                dummy_obstack_deallocate);
3034 }
3035
3036 /* A helper function to add a signatured type CU to a list.  */
3037
3038 static int
3039 add_signatured_type_cu_to_list (void **slot, void *datum)
3040 {
3041   struct signatured_type *sigt = *slot;
3042   struct dwarf2_per_cu_data ***datap = datum;
3043
3044   **datap = &sigt->per_cu;
3045   ++*datap;
3046
3047   return 1;
3048 }
3049
3050 /* Create the hash table of all entries in the .debug_types section.
3051    The result is zero if there is an error (e.g. missing .debug_types section),
3052    otherwise non-zero.  */
3053
3054 static int
3055 create_debug_types_hash_table (struct objfile *objfile)
3056 {
3057   gdb_byte *info_ptr;
3058   htab_t types_htab;
3059   struct dwarf2_per_cu_data **iter;
3060
3061   dwarf2_read_section (objfile, &dwarf2_per_objfile->types);
3062   info_ptr = dwarf2_per_objfile->types.buffer;
3063
3064   if (info_ptr == NULL)
3065     {
3066       dwarf2_per_objfile->signatured_types = NULL;
3067       return 0;
3068     }
3069
3070   types_htab = allocate_signatured_type_table (objfile);
3071
3072   if (dwarf2_die_debug)
3073     fprintf_unfiltered (gdb_stdlog, "Signatured types:\n");
3074
3075   while (info_ptr < dwarf2_per_objfile->types.buffer
3076          + dwarf2_per_objfile->types.size)
3077     {
3078       unsigned int offset;
3079       unsigned int offset_size;
3080       unsigned int type_offset;
3081       unsigned int length, initial_length_size;
3082       unsigned short version;
3083       ULONGEST signature;
3084       struct signatured_type *type_sig;
3085       void **slot;
3086       gdb_byte *ptr = info_ptr;
3087
3088       offset = ptr - dwarf2_per_objfile->types.buffer;
3089
3090       /* We need to read the type's signature in order to build the hash
3091          table, but we don't need to read anything else just yet.  */
3092
3093       /* Sanity check to ensure entire cu is present.  */
3094       length = read_initial_length (objfile->obfd, ptr, &initial_length_size);
3095       if (ptr + length + initial_length_size
3096           > dwarf2_per_objfile->types.buffer + dwarf2_per_objfile->types.size)
3097         {
3098           complaint (&symfile_complaints,
3099                      _("debug type entry runs off end "
3100                        "of `.debug_types' section, ignored"));
3101           break;
3102         }
3103
3104       offset_size = initial_length_size == 4 ? 4 : 8;
3105       ptr += initial_length_size;
3106       version = bfd_get_16 (objfile->obfd, ptr);
3107       ptr += 2;
3108       ptr += offset_size; /* abbrev offset */
3109       ptr += 1; /* address size */
3110       signature = bfd_get_64 (objfile->obfd, ptr);
3111       ptr += 8;
3112       type_offset = read_offset_1 (objfile->obfd, ptr, offset_size);
3113
3114       type_sig = obstack_alloc (&objfile->objfile_obstack, sizeof (*type_sig));
3115       memset (type_sig, 0, sizeof (*type_sig));
3116       type_sig->signature = signature;
3117       type_sig->type_offset = type_offset;
3118       type_sig->per_cu.objfile = objfile;
3119       type_sig->per_cu.from_debug_types = 1;
3120       type_sig->per_cu.offset = offset;
3121
3122       slot = htab_find_slot (types_htab, type_sig, INSERT);
3123       gdb_assert (slot != NULL);
3124       if (*slot != NULL)
3125         {
3126           const struct signatured_type *dup_sig = *slot;
3127
3128           complaint (&symfile_complaints,
3129                      _("debug type entry at offset 0x%x is duplicate to the "
3130                        "entry at offset 0x%x, signature 0x%s"),
3131                      offset, dup_sig->per_cu.offset,
3132                      phex (signature, sizeof (signature)));
3133           gdb_assert (signature == dup_sig->signature);
3134         }
3135       *slot = type_sig;
3136
3137       if (dwarf2_die_debug)
3138         fprintf_unfiltered (gdb_stdlog, "  offset 0x%x, signature 0x%s\n",
3139                             offset, phex (signature, sizeof (signature)));
3140
3141       info_ptr = info_ptr + initial_length_size + length;
3142     }
3143
3144   dwarf2_per_objfile->signatured_types = types_htab;
3145
3146   dwarf2_per_objfile->n_type_comp_units = htab_elements (types_htab);
3147   dwarf2_per_objfile->type_comp_units
3148     = obstack_alloc (&objfile->objfile_obstack,
3149                      dwarf2_per_objfile->n_type_comp_units
3150                      * sizeof (struct dwarf2_per_cu_data *));
3151   iter = &dwarf2_per_objfile->type_comp_units[0];
3152   htab_traverse_noresize (types_htab, add_signatured_type_cu_to_list, &iter);
3153   gdb_assert (iter - &dwarf2_per_objfile->type_comp_units[0]
3154               == dwarf2_per_objfile->n_type_comp_units);
3155
3156   return 1;
3157 }
3158
3159 /* Lookup a signature based type.
3160    Returns NULL if SIG is not present in the table.  */
3161
3162 static struct signatured_type *
3163 lookup_signatured_type (struct objfile *objfile, ULONGEST sig)
3164 {
3165   struct signatured_type find_entry, *entry;
3166
3167   if (dwarf2_per_objfile->signatured_types == NULL)
3168     {
3169       complaint (&symfile_complaints,
3170                  _("missing `.debug_types' section for DW_FORM_ref_sig8 die"));
3171       return 0;
3172     }
3173
3174   find_entry.signature = sig;
3175   entry = htab_find (dwarf2_per_objfile->signatured_types, &find_entry);
3176   return entry;
3177 }
3178
3179 /* Initialize a die_reader_specs struct from a dwarf2_cu struct.  */
3180
3181 static void
3182 init_cu_die_reader (struct die_reader_specs *reader,
3183                     struct dwarf2_cu *cu)
3184 {
3185   reader->abfd = cu->objfile->obfd;
3186   reader->cu = cu;
3187   if (cu->per_cu->from_debug_types)
3188     {
3189       gdb_assert (dwarf2_per_objfile->types.readin);
3190       reader->buffer = dwarf2_per_objfile->types.buffer;
3191     }
3192   else
3193     {
3194       gdb_assert (dwarf2_per_objfile->info.readin);
3195       reader->buffer = dwarf2_per_objfile->info.buffer;
3196     }
3197 }
3198
3199 /* Find the base address of the compilation unit for range lists and
3200    location lists.  It will normally be specified by DW_AT_low_pc.
3201    In DWARF-3 draft 4, the base address could be overridden by
3202    DW_AT_entry_pc.  It's been removed, but GCC still uses this for
3203    compilation units with discontinuous ranges.  */
3204
3205 static void
3206 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
3207 {
3208   struct attribute *attr;
3209
3210   cu->base_known = 0;
3211   cu->base_address = 0;
3212
3213   attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
3214   if (attr)
3215     {
3216       cu->base_address = DW_ADDR (attr);
3217       cu->base_known = 1;
3218     }
3219   else
3220     {
3221       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
3222       if (attr)
3223         {
3224           cu->base_address = DW_ADDR (attr);
3225           cu->base_known = 1;
3226         }
3227     }
3228 }
3229
3230 /* Subroutine of process_type_comp_unit and dwarf2_build_psymtabs_hard
3231    to combine the common parts.
3232    Process a compilation unit for a psymtab.
3233    BUFFER is a pointer to the beginning of the dwarf section buffer,
3234    either .debug_info or debug_types.
3235    INFO_PTR is a pointer to the start of the CU.
3236    Returns a pointer to the next CU.  */
3237
3238 static gdb_byte *
3239 process_psymtab_comp_unit (struct objfile *objfile,
3240                            struct dwarf2_per_cu_data *this_cu,
3241                            gdb_byte *buffer, gdb_byte *info_ptr,
3242                            unsigned int buffer_size)
3243 {
3244   bfd *abfd = objfile->obfd;
3245   gdb_byte *beg_of_comp_unit = info_ptr;
3246   struct die_info *comp_unit_die;
3247   struct partial_symtab *pst;
3248   CORE_ADDR baseaddr;
3249   struct cleanup *back_to_inner;
3250   struct dwarf2_cu cu;
3251   int has_children, has_pc_info;
3252   struct attribute *attr;
3253   CORE_ADDR best_lowpc = 0, best_highpc = 0;
3254   struct die_reader_specs reader_specs;
3255   const char *filename;
3256
3257   init_one_comp_unit (&cu, objfile);
3258   back_to_inner = make_cleanup (free_stack_comp_unit, &cu);
3259
3260   info_ptr = partial_read_comp_unit_head (&cu.header, info_ptr,
3261                                           buffer, buffer_size,
3262                                           abfd);
3263
3264   /* Complete the cu_header.  */
3265   cu.header.offset = beg_of_comp_unit - buffer;
3266   cu.header.first_die_offset = info_ptr - beg_of_comp_unit;
3267
3268   cu.list_in_scope = &file_symbols;
3269
3270   /* If this compilation unit was already read in, free the
3271      cached copy in order to read it in again.  This is
3272      necessary because we skipped some symbols when we first
3273      read in the compilation unit (see load_partial_dies).
3274      This problem could be avoided, but the benefit is
3275      unclear.  */
3276   if (this_cu->cu != NULL)
3277     free_one_cached_comp_unit (this_cu->cu);
3278
3279   /* Note that this is a pointer to our stack frame, being
3280      added to a global data structure.  It will be cleaned up
3281      in free_stack_comp_unit when we finish with this
3282      compilation unit.  */
3283   this_cu->cu = &cu;
3284   cu.per_cu = this_cu;
3285
3286   /* Read the abbrevs for this compilation unit into a table.  */
3287   dwarf2_read_abbrevs (abfd, &cu);
3288   make_cleanup (dwarf2_free_abbrev_table, &cu);
3289
3290   /* Read the compilation unit die.  */
3291   if (this_cu->from_debug_types)
3292     info_ptr += 8 /*signature*/ + cu.header.offset_size;
3293   init_cu_die_reader (&reader_specs, &cu);
3294   info_ptr = read_full_die (&reader_specs, &comp_unit_die, info_ptr,
3295                             &has_children);
3296
3297   if (this_cu->from_debug_types)
3298     {
3299       /* LENGTH has not been set yet for type units.  */
3300       gdb_assert (this_cu->offset == cu.header.offset);
3301       this_cu->length = cu.header.length + cu.header.initial_length_size;
3302     }
3303   else if (comp_unit_die->tag == DW_TAG_partial_unit)
3304     {
3305       info_ptr = (beg_of_comp_unit + cu.header.length
3306                   + cu.header.initial_length_size);
3307       do_cleanups (back_to_inner);
3308       return info_ptr;
3309     }
3310
3311   prepare_one_comp_unit (&cu, comp_unit_die);
3312
3313   /* Allocate a new partial symbol table structure.  */
3314   attr = dwarf2_attr (comp_unit_die, DW_AT_name, &cu);
3315   if (attr == NULL || !DW_STRING (attr))
3316     filename = "";
3317   else
3318     filename = DW_STRING (attr);
3319   pst = start_psymtab_common (objfile, objfile->section_offsets,
3320                               filename,
3321                               /* TEXTLOW and TEXTHIGH are set below.  */
3322                               0,
3323                               objfile->global_psymbols.next,
3324                               objfile->static_psymbols.next);
3325
3326   attr = dwarf2_attr (comp_unit_die, DW_AT_comp_dir, &cu);
3327   if (attr != NULL)
3328     pst->dirname = DW_STRING (attr);
3329
3330   pst->read_symtab_private = this_cu;
3331
3332   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
3333
3334   /* Store the function that reads in the rest of the symbol table.  */
3335   pst->read_symtab = dwarf2_psymtab_to_symtab;
3336
3337   this_cu->v.psymtab = pst;
3338
3339   dwarf2_find_base_address (comp_unit_die, &cu);
3340
3341   /* Possibly set the default values of LOWPC and HIGHPC from
3342      `DW_AT_ranges'.  */
3343   has_pc_info = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
3344                                       &best_highpc, &cu, pst);
3345   if (has_pc_info == 1 && best_lowpc < best_highpc)
3346     /* Store the contiguous range if it is not empty; it can be empty for
3347        CUs with no code.  */
3348     addrmap_set_empty (objfile->psymtabs_addrmap,
3349                        best_lowpc + baseaddr,
3350                        best_highpc + baseaddr - 1, pst);
3351
3352   /* Check if comp unit has_children.
3353      If so, read the rest of the partial symbols from this comp unit.
3354      If not, there's no more debug_info for this comp unit.  */
3355   if (has_children)
3356     {
3357       struct partial_die_info *first_die;
3358       CORE_ADDR lowpc, highpc;
3359
3360       lowpc = ((CORE_ADDR) -1);
3361       highpc = ((CORE_ADDR) 0);
3362
3363       first_die = load_partial_dies (abfd, buffer, info_ptr, 1, &cu);
3364
3365       scan_partial_symbols (first_die, &lowpc, &highpc,
3366                             ! has_pc_info, &cu);
3367
3368       /* If we didn't find a lowpc, set it to highpc to avoid
3369          complaints from `maint check'.  */
3370       if (lowpc == ((CORE_ADDR) -1))
3371         lowpc = highpc;
3372
3373       /* If the compilation unit didn't have an explicit address range,
3374          then use the information extracted from its child dies.  */
3375       if (! has_pc_info)
3376         {
3377           best_lowpc = lowpc;
3378           best_highpc = highpc;
3379         }
3380     }
3381   pst->textlow = best_lowpc + baseaddr;
3382   pst->texthigh = best_highpc + baseaddr;
3383
3384   pst->n_global_syms = objfile->global_psymbols.next -
3385     (objfile->global_psymbols.list + pst->globals_offset);
3386   pst->n_static_syms = objfile->static_psymbols.next -
3387     (objfile->static_psymbols.list + pst->statics_offset);
3388   sort_pst_symbols (pst);
3389
3390   info_ptr = (beg_of_comp_unit + cu.header.length
3391               + cu.header.initial_length_size);
3392
3393   if (this_cu->from_debug_types)
3394     {
3395       /* It's not clear we want to do anything with stmt lists here.
3396          Waiting to see what gcc ultimately does.  */
3397     }
3398   else
3399     {
3400       /* Get the list of files included in the current compilation unit,
3401          and build a psymtab for each of them.  */
3402       dwarf2_build_include_psymtabs (&cu, comp_unit_die, pst);
3403     }
3404
3405   do_cleanups (back_to_inner);
3406
3407   return info_ptr;
3408 }
3409
3410 /* Traversal function for htab_traverse_noresize.
3411    Process one .debug_types comp-unit.  */
3412
3413 static int
3414 process_type_comp_unit (void **slot, void *info)
3415 {
3416   struct signatured_type *entry = (struct signatured_type *) *slot;
3417   struct objfile *objfile = (struct objfile *) info;
3418   struct dwarf2_per_cu_data *this_cu;
3419
3420   this_cu = &entry->per_cu;
3421
3422   gdb_assert (dwarf2_per_objfile->types.readin);
3423   process_psymtab_comp_unit (objfile, this_cu,
3424                              dwarf2_per_objfile->types.buffer,
3425                              dwarf2_per_objfile->types.buffer + this_cu->offset,
3426                              dwarf2_per_objfile->types.size);
3427
3428   return 1;
3429 }
3430
3431 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
3432    Build partial symbol tables for the .debug_types comp-units.  */
3433
3434 static void
3435 build_type_psymtabs (struct objfile *objfile)
3436 {
3437   if (! create_debug_types_hash_table (objfile))
3438     return;
3439
3440   htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
3441                           process_type_comp_unit, objfile);
3442 }
3443
3444 /* A cleanup function that clears objfile's psymtabs_addrmap field.  */
3445
3446 static void
3447 psymtabs_addrmap_cleanup (void *o)
3448 {
3449   struct objfile *objfile = o;
3450
3451   objfile->psymtabs_addrmap = NULL;
3452 }
3453
3454 /* Build the partial symbol table by doing a quick pass through the
3455    .debug_info and .debug_abbrev sections.  */
3456
3457 static void
3458 dwarf2_build_psymtabs_hard (struct objfile *objfile)
3459 {
3460   gdb_byte *info_ptr;
3461   struct cleanup *back_to, *addrmap_cleanup;
3462   struct obstack temp_obstack;
3463
3464   dwarf2_per_objfile->reading_partial_symbols = 1;
3465
3466   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
3467   info_ptr = dwarf2_per_objfile->info.buffer;
3468
3469   /* Any cached compilation units will be linked by the per-objfile
3470      read_in_chain.  Make sure to free them when we're done.  */
3471   back_to = make_cleanup (free_cached_comp_units, NULL);
3472
3473   build_type_psymtabs (objfile);
3474
3475   create_all_comp_units (objfile);
3476
3477   /* Create a temporary address map on a temporary obstack.  We later
3478      copy this to the final obstack.  */
3479   obstack_init (&temp_obstack);
3480   make_cleanup_obstack_free (&temp_obstack);
3481   objfile->psymtabs_addrmap = addrmap_create_mutable (&temp_obstack);
3482   addrmap_cleanup = make_cleanup (psymtabs_addrmap_cleanup, objfile);
3483
3484   /* Since the objects we're extracting from .debug_info vary in
3485      length, only the individual functions to extract them (like
3486      read_comp_unit_head and load_partial_die) can really know whether
3487      the buffer is large enough to hold another complete object.
3488
3489      At the moment, they don't actually check that.  If .debug_info
3490      holds just one extra byte after the last compilation unit's dies,
3491      then read_comp_unit_head will happily read off the end of the
3492      buffer.  read_partial_die is similarly casual.  Those functions
3493      should be fixed.
3494
3495      For this loop condition, simply checking whether there's any data
3496      left at all should be sufficient.  */
3497
3498   while (info_ptr < (dwarf2_per_objfile->info.buffer
3499                      + dwarf2_per_objfile->info.size))
3500     {
3501       struct dwarf2_per_cu_data *this_cu;
3502
3503       this_cu = dwarf2_find_comp_unit (info_ptr
3504                                        - dwarf2_per_objfile->info.buffer,
3505                                        objfile);
3506
3507       info_ptr = process_psymtab_comp_unit (objfile, this_cu,
3508                                             dwarf2_per_objfile->info.buffer,
3509                                             info_ptr,
3510                                             dwarf2_per_objfile->info.size);
3511     }
3512
3513   objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
3514                                                     &objfile->objfile_obstack);
3515   discard_cleanups (addrmap_cleanup);
3516
3517   do_cleanups (back_to);
3518 }
3519
3520 /* Load the partial DIEs for a secondary CU into memory.  */
3521
3522 static void
3523 load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu,
3524                         struct objfile *objfile)
3525 {
3526   bfd *abfd = objfile->obfd;
3527   gdb_byte *info_ptr, *beg_of_comp_unit;
3528   struct die_info *comp_unit_die;
3529   struct dwarf2_cu *cu;
3530   struct cleanup *free_abbrevs_cleanup, *free_cu_cleanup = NULL;
3531   int has_children;
3532   struct die_reader_specs reader_specs;
3533   int read_cu = 0;
3534
3535   gdb_assert (! this_cu->from_debug_types);
3536
3537   gdb_assert (dwarf2_per_objfile->info.readin);
3538   info_ptr = dwarf2_per_objfile->info.buffer + this_cu->offset;
3539   beg_of_comp_unit = info_ptr;
3540
3541   if (this_cu->cu == NULL)
3542     {
3543       cu = xmalloc (sizeof (*cu));
3544       init_one_comp_unit (cu, objfile);
3545
3546       read_cu = 1;
3547
3548       /* If an error occurs while loading, release our storage.  */
3549       free_cu_cleanup = make_cleanup (free_one_comp_unit, cu);
3550
3551       info_ptr = partial_read_comp_unit_head (&cu->header, info_ptr,
3552                                               dwarf2_per_objfile->info.buffer,
3553                                               dwarf2_per_objfile->info.size,
3554                                               abfd);
3555
3556       /* Complete the cu_header.  */
3557       cu->header.offset = this_cu->offset;
3558       cu->header.first_die_offset = info_ptr - beg_of_comp_unit;
3559
3560       /* Link this compilation unit into the compilation unit tree.  */
3561       this_cu->cu = cu;
3562       cu->per_cu = this_cu;
3563
3564       /* Link this CU into read_in_chain.  */
3565       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
3566       dwarf2_per_objfile->read_in_chain = this_cu;
3567     }
3568   else
3569     {
3570       cu = this_cu->cu;
3571       info_ptr += cu->header.first_die_offset;
3572     }
3573
3574   /* Read the abbrevs for this compilation unit into a table.  */
3575   gdb_assert (cu->dwarf2_abbrevs == NULL);
3576   dwarf2_read_abbrevs (abfd, cu);
3577   free_abbrevs_cleanup = make_cleanup (dwarf2_free_abbrev_table, cu);
3578
3579   /* Read the compilation unit die.  */
3580   init_cu_die_reader (&reader_specs, cu);
3581   info_ptr = read_full_die (&reader_specs, &comp_unit_die, info_ptr,
3582                             &has_children);
3583
3584   prepare_one_comp_unit (cu, comp_unit_die);
3585
3586   /* Check if comp unit has_children.
3587      If so, read the rest of the partial symbols from this comp unit.
3588      If not, there's no more debug_info for this comp unit.  */
3589   if (has_children)
3590     load_partial_dies (abfd, dwarf2_per_objfile->info.buffer, info_ptr, 0, cu);
3591
3592   do_cleanups (free_abbrevs_cleanup);
3593
3594   if (read_cu)
3595     {
3596       /* We've successfully allocated this compilation unit.  Let our
3597          caller clean it up when finished with it.  */
3598       discard_cleanups (free_cu_cleanup);
3599     }
3600 }
3601
3602 /* Create a list of all compilation units in OBJFILE.  We do this only
3603    if an inter-comp-unit reference is found; presumably if there is one,
3604    there will be many, and one will occur early in the .debug_info section.
3605    So there's no point in building this list incrementally.  */
3606
3607 static void
3608 create_all_comp_units (struct objfile *objfile)
3609 {
3610   int n_allocated;
3611   int n_comp_units;
3612   struct dwarf2_per_cu_data **all_comp_units;
3613   gdb_byte *info_ptr;
3614
3615   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
3616   info_ptr = dwarf2_per_objfile->info.buffer;
3617
3618   n_comp_units = 0;
3619   n_allocated = 10;
3620   all_comp_units = xmalloc (n_allocated
3621                             * sizeof (struct dwarf2_per_cu_data *));
3622
3623   while (info_ptr < dwarf2_per_objfile->info.buffer
3624          + dwarf2_per_objfile->info.size)
3625     {
3626       unsigned int length, initial_length_size;
3627       struct dwarf2_per_cu_data *this_cu;
3628       unsigned int offset;
3629
3630       offset = info_ptr - dwarf2_per_objfile->info.buffer;
3631
3632       /* Read just enough information to find out where the next
3633          compilation unit is.  */
3634       length = read_initial_length (objfile->obfd, info_ptr,
3635                                     &initial_length_size);
3636
3637       /* Save the compilation unit for later lookup.  */
3638       this_cu = obstack_alloc (&objfile->objfile_obstack,
3639                                sizeof (struct dwarf2_per_cu_data));
3640       memset (this_cu, 0, sizeof (*this_cu));
3641       this_cu->offset = offset;
3642       this_cu->length = length + initial_length_size;
3643       this_cu->objfile = objfile;
3644
3645       if (n_comp_units == n_allocated)
3646         {
3647           n_allocated *= 2;
3648           all_comp_units = xrealloc (all_comp_units,
3649                                      n_allocated
3650                                      * sizeof (struct dwarf2_per_cu_data *));
3651         }
3652       all_comp_units[n_comp_units++] = this_cu;
3653
3654       info_ptr = info_ptr + this_cu->length;
3655     }
3656
3657   dwarf2_per_objfile->all_comp_units
3658     = obstack_alloc (&objfile->objfile_obstack,
3659                      n_comp_units * sizeof (struct dwarf2_per_cu_data *));
3660   memcpy (dwarf2_per_objfile->all_comp_units, all_comp_units,
3661           n_comp_units * sizeof (struct dwarf2_per_cu_data *));
3662   xfree (all_comp_units);
3663   dwarf2_per_objfile->n_comp_units = n_comp_units;
3664 }
3665
3666 /* Process all loaded DIEs for compilation unit CU, starting at
3667    FIRST_DIE.  The caller should pass NEED_PC == 1 if the compilation
3668    unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
3669    DW_AT_ranges).  If NEED_PC is set, then this function will set
3670    *LOWPC and *HIGHPC to the lowest and highest PC values found in CU
3671    and record the covered ranges in the addrmap.  */
3672
3673 static void
3674 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
3675                       CORE_ADDR *highpc, int need_pc, struct dwarf2_cu *cu)
3676 {
3677   struct partial_die_info *pdi;
3678
3679   /* Now, march along the PDI's, descending into ones which have
3680      interesting children but skipping the children of the other ones,
3681      until we reach the end of the compilation unit.  */
3682
3683   pdi = first_die;
3684
3685   while (pdi != NULL)
3686     {
3687       fixup_partial_die (pdi, cu);
3688
3689       /* Anonymous namespaces or modules have no name but have interesting
3690          children, so we need to look at them.  Ditto for anonymous
3691          enums.  */
3692
3693       if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
3694           || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type)
3695         {
3696           switch (pdi->tag)
3697             {
3698             case DW_TAG_subprogram:
3699               add_partial_subprogram (pdi, lowpc, highpc, need_pc, cu);
3700               break;
3701             case DW_TAG_constant:
3702             case DW_TAG_variable:
3703             case DW_TAG_typedef:
3704             case DW_TAG_union_type:
3705               if (!pdi->is_declaration)
3706                 {
3707                   add_partial_symbol (pdi, cu);
3708                 }
3709               break;
3710             case DW_TAG_class_type:
3711             case DW_TAG_interface_type:
3712             case DW_TAG_structure_type:
3713               if (!pdi->is_declaration)
3714                 {
3715                   add_partial_symbol (pdi, cu);
3716                 }
3717               break;
3718             case DW_TAG_enumeration_type:
3719               if (!pdi->is_declaration)
3720                 add_partial_enumeration (pdi, cu);
3721               break;
3722             case DW_TAG_base_type:
3723             case DW_TAG_subrange_type:
3724               /* File scope base type definitions are added to the partial
3725                  symbol table.  */
3726               add_partial_symbol (pdi, cu);
3727               break;
3728             case DW_TAG_namespace:
3729               add_partial_namespace (pdi, lowpc, highpc, need_pc, cu);
3730               break;
3731             case DW_TAG_module:
3732               add_partial_module (pdi, lowpc, highpc, need_pc, cu);
3733               break;
3734             default:
3735               break;
3736             }
3737         }
3738
3739       /* If the die has a sibling, skip to the sibling.  */
3740
3741       pdi = pdi->die_sibling;
3742     }
3743 }
3744
3745 /* Functions used to compute the fully scoped name of a partial DIE.
3746
3747    Normally, this is simple.  For C++, the parent DIE's fully scoped
3748    name is concatenated with "::" and the partial DIE's name.  For
3749    Java, the same thing occurs except that "." is used instead of "::".
3750    Enumerators are an exception; they use the scope of their parent
3751    enumeration type, i.e. the name of the enumeration type is not
3752    prepended to the enumerator.
3753
3754    There are two complexities.  One is DW_AT_specification; in this
3755    case "parent" means the parent of the target of the specification,
3756    instead of the direct parent of the DIE.  The other is compilers
3757    which do not emit DW_TAG_namespace; in this case we try to guess
3758    the fully qualified name of structure types from their members'
3759    linkage names.  This must be done using the DIE's children rather
3760    than the children of any DW_AT_specification target.  We only need
3761    to do this for structures at the top level, i.e. if the target of
3762    any DW_AT_specification (if any; otherwise the DIE itself) does not
3763    have a parent.  */
3764
3765 /* Compute the scope prefix associated with PDI's parent, in
3766    compilation unit CU.  The result will be allocated on CU's
3767    comp_unit_obstack, or a copy of the already allocated PDI->NAME
3768    field.  NULL is returned if no prefix is necessary.  */
3769 static char *
3770 partial_die_parent_scope (struct partial_die_info *pdi,
3771                           struct dwarf2_cu *cu)
3772 {
3773   char *grandparent_scope;
3774   struct partial_die_info *parent, *real_pdi;
3775
3776   /* We need to look at our parent DIE; if we have a DW_AT_specification,
3777      then this means the parent of the specification DIE.  */
3778
3779   real_pdi = pdi;
3780   while (real_pdi->has_specification)
3781     real_pdi = find_partial_die (real_pdi->spec_offset, cu);
3782
3783   parent = real_pdi->die_parent;
3784   if (parent == NULL)
3785     return NULL;
3786
3787   if (parent->scope_set)
3788     return parent->scope;
3789
3790   fixup_partial_die (parent, cu);
3791
3792   grandparent_scope = partial_die_parent_scope (parent, cu);
3793
3794   /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
3795      DW_TAG_namespace DIEs with a name of "::" for the global namespace.
3796      Work around this problem here.  */
3797   if (cu->language == language_cplus
3798       && parent->tag == DW_TAG_namespace
3799       && strcmp (parent->name, "::") == 0
3800       && grandparent_scope == NULL)
3801     {
3802       parent->scope = NULL;
3803       parent->scope_set = 1;
3804       return NULL;
3805     }
3806
3807   if (parent->tag == DW_TAG_namespace
3808       || parent->tag == DW_TAG_module
3809       || parent->tag == DW_TAG_structure_type
3810       || parent->tag == DW_TAG_class_type
3811       || parent->tag == DW_TAG_interface_type
3812       || parent->tag == DW_TAG_union_type
3813       || parent->tag == DW_TAG_enumeration_type)
3814     {
3815       if (grandparent_scope == NULL)
3816         parent->scope = parent->name;
3817       else
3818         parent->scope = typename_concat (&cu->comp_unit_obstack,
3819                                          grandparent_scope,
3820                                          parent->name, 0, cu);
3821     }
3822   else if (parent->tag == DW_TAG_enumerator)
3823     /* Enumerators should not get the name of the enumeration as a prefix.  */
3824     parent->scope = grandparent_scope;
3825   else
3826     {
3827       /* FIXME drow/2004-04-01: What should we be doing with
3828          function-local names?  For partial symbols, we should probably be
3829          ignoring them.  */
3830       complaint (&symfile_complaints,
3831                  _("unhandled containing DIE tag %d for DIE at %d"),
3832                  parent->tag, pdi->offset);
3833       parent->scope = grandparent_scope;
3834     }
3835
3836   parent->scope_set = 1;
3837   return parent->scope;
3838 }
3839
3840 /* Return the fully scoped name associated with PDI, from compilation unit
3841    CU.  The result will be allocated with malloc.  */
3842 static char *
3843 partial_die_full_name (struct partial_die_info *pdi,
3844                        struct dwarf2_cu *cu)
3845 {
3846   char *parent_scope;
3847
3848   /* If this is a template instantiation, we can not work out the
3849      template arguments from partial DIEs.  So, unfortunately, we have
3850      to go through the full DIEs.  At least any work we do building
3851      types here will be reused if full symbols are loaded later.  */
3852   if (pdi->has_template_arguments)
3853     {
3854       fixup_partial_die (pdi, cu);
3855
3856       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
3857         {
3858           struct die_info *die;
3859           struct attribute attr;
3860           struct dwarf2_cu *ref_cu = cu;
3861
3862           attr.name = 0;
3863           attr.form = DW_FORM_ref_addr;
3864           attr.u.addr = pdi->offset;
3865           die = follow_die_ref (NULL, &attr, &ref_cu);
3866
3867           return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
3868         }
3869     }
3870
3871   parent_scope = partial_die_parent_scope (pdi, cu);
3872   if (parent_scope == NULL)
3873     return NULL;
3874   else
3875     return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
3876 }
3877
3878 static void
3879 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
3880 {
3881   struct objfile *objfile = cu->objfile;
3882   CORE_ADDR addr = 0;
3883   char *actual_name = NULL;
3884   const struct partial_symbol *psym = NULL;
3885   CORE_ADDR baseaddr;
3886   int built_actual_name = 0;
3887
3888   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
3889
3890   actual_name = partial_die_full_name (pdi, cu);
3891   if (actual_name)
3892     built_actual_name = 1;
3893
3894   if (actual_name == NULL)
3895     actual_name = pdi->name;
3896
3897   switch (pdi->tag)
3898     {
3899     case DW_TAG_subprogram:
3900       if (pdi->is_external || cu->language == language_ada)
3901         {
3902           /* brobecker/2007-12-26: Normally, only "external" DIEs are part
3903              of the global scope.  But in Ada, we want to be able to access
3904              nested procedures globally.  So all Ada subprograms are stored
3905              in the global scope.  */
3906           /* prim_record_minimal_symbol (actual_name, pdi->lowpc + baseaddr,
3907              mst_text, objfile); */
3908           add_psymbol_to_list (actual_name, strlen (actual_name),
3909                                built_actual_name,
3910                                VAR_DOMAIN, LOC_BLOCK,
3911                                &objfile->global_psymbols,
3912                                0, pdi->lowpc + baseaddr,
3913                                cu->language, objfile);
3914         }
3915       else
3916         {
3917           /* prim_record_minimal_symbol (actual_name, pdi->lowpc + baseaddr,
3918              mst_file_text, objfile); */
3919           add_psymbol_to_list (actual_name, strlen (actual_name),
3920                                built_actual_name,
3921                                VAR_DOMAIN, LOC_BLOCK,
3922                                &objfile->static_psymbols,
3923                                0, pdi->lowpc + baseaddr,
3924                                cu->language, objfile);
3925         }
3926       break;
3927     case DW_TAG_constant:
3928       {
3929         struct psymbol_allocation_list *list;
3930
3931         if (pdi->is_external)
3932           list = &objfile->global_psymbols;
3933         else
3934           list = &objfile->static_psymbols;
3935         add_psymbol_to_list (actual_name, strlen (actual_name),
3936                              built_actual_name, VAR_DOMAIN, LOC_STATIC,
3937                              list, 0, 0, cu->language, objfile);
3938       }
3939       break;
3940     case DW_TAG_variable:
3941       if (pdi->locdesc)
3942         addr = decode_locdesc (pdi->locdesc, cu);
3943
3944       if (pdi->locdesc
3945           && addr == 0
3946           && !dwarf2_per_objfile->has_section_at_zero)
3947         {
3948           /* A global or static variable may also have been stripped
3949              out by the linker if unused, in which case its address
3950              will be nullified; do not add such variables into partial
3951              symbol table then.  */
3952         }
3953       else if (pdi->is_external)
3954         {
3955           /* Global Variable.
3956              Don't enter into the minimal symbol tables as there is
3957              a minimal symbol table entry from the ELF symbols already.
3958              Enter into partial symbol table if it has a location
3959              descriptor or a type.
3960              If the location descriptor is missing, new_symbol will create
3961              a LOC_UNRESOLVED symbol, the address of the variable will then
3962              be determined from the minimal symbol table whenever the variable
3963              is referenced.
3964              The address for the partial symbol table entry is not
3965              used by GDB, but it comes in handy for debugging partial symbol
3966              table building.  */
3967
3968           if (pdi->locdesc || pdi->has_type)
3969             add_psymbol_to_list (actual_name, strlen (actual_name),
3970                                  built_actual_name,
3971                                  VAR_DOMAIN, LOC_STATIC,
3972                                  &objfile->global_psymbols,
3973                                  0, addr + baseaddr,
3974                                  cu->language, objfile);
3975         }
3976       else
3977         {
3978           /* Static Variable.  Skip symbols without location descriptors.  */
3979           if (pdi->locdesc == NULL)
3980             {
3981               if (built_actual_name)
3982                 xfree (actual_name);
3983               return;
3984             }
3985           /* prim_record_minimal_symbol (actual_name, addr + baseaddr,
3986              mst_file_data, objfile); */
3987           add_psymbol_to_list (actual_name, strlen (actual_name),
3988                                built_actual_name,
3989                                VAR_DOMAIN, LOC_STATIC,
3990                                &objfile->static_psymbols,
3991                                0, addr + baseaddr,
3992                                cu->language, objfile);
3993         }
3994       break;
3995     case DW_TAG_typedef:
3996     case DW_TAG_base_type:
3997     case DW_TAG_subrange_type:
3998       add_psymbol_to_list (actual_name, strlen (actual_name),
3999                            built_actual_name,
4000                            VAR_DOMAIN, LOC_TYPEDEF,
4001                            &objfile->static_psymbols,
4002                            0, (CORE_ADDR) 0, cu->language, objfile);
4003       break;
4004     case DW_TAG_namespace:
4005       add_psymbol_to_list (actual_name, strlen (actual_name),
4006                            built_actual_name,
4007                            VAR_DOMAIN, LOC_TYPEDEF,
4008                            &objfile->global_psymbols,
4009                            0, (CORE_ADDR) 0, cu->language, objfile);
4010       break;
4011     case DW_TAG_class_type:
4012     case DW_TAG_interface_type:
4013     case DW_TAG_structure_type:
4014     case DW_TAG_union_type:
4015     case DW_TAG_enumeration_type:
4016       /* Skip external references.  The DWARF standard says in the section
4017          about "Structure, Union, and Class Type Entries": "An incomplete
4018          structure, union or class type is represented by a structure,
4019          union or class entry that does not have a byte size attribute
4020          and that has a DW_AT_declaration attribute."  */
4021       if (!pdi->has_byte_size && pdi->is_declaration)
4022         {
4023           if (built_actual_name)
4024             xfree (actual_name);
4025           return;
4026         }
4027
4028       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
4029          static vs. global.  */
4030       add_psymbol_to_list (actual_name, strlen (actual_name),
4031                            built_actual_name,
4032                            STRUCT_DOMAIN, LOC_TYPEDEF,
4033                            (cu->language == language_cplus
4034                             || cu->language == language_java)
4035                            ? &objfile->global_psymbols
4036                            : &objfile->static_psymbols,
4037                            0, (CORE_ADDR) 0, cu->language, objfile);
4038
4039       break;
4040     case DW_TAG_enumerator:
4041       add_psymbol_to_list (actual_name, strlen (actual_name),
4042                            built_actual_name,
4043                            VAR_DOMAIN, LOC_CONST,
4044                            (cu->language == language_cplus
4045                             || cu->language == language_java)
4046                            ? &objfile->global_psymbols
4047                            : &objfile->static_psymbols,
4048                            0, (CORE_ADDR) 0, cu->language, objfile);
4049       break;
4050     default:
4051       break;
4052     }
4053
4054   if (built_actual_name)
4055     xfree (actual_name);
4056 }
4057
4058 /* Read a partial die corresponding to a namespace; also, add a symbol
4059    corresponding to that namespace to the symbol table.  NAMESPACE is
4060    the name of the enclosing namespace.  */
4061
4062 static void
4063 add_partial_namespace (struct partial_die_info *pdi,
4064                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
4065                        int need_pc, struct dwarf2_cu *cu)
4066 {
4067   /* Add a symbol for the namespace.  */
4068
4069   add_partial_symbol (pdi, cu);
4070
4071   /* Now scan partial symbols in that namespace.  */
4072
4073   if (pdi->has_children)
4074     scan_partial_symbols (pdi->die_child, lowpc, highpc, need_pc, cu);
4075 }
4076
4077 /* Read a partial die corresponding to a Fortran module.  */
4078
4079 static void
4080 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
4081                     CORE_ADDR *highpc, int need_pc, struct dwarf2_cu *cu)
4082 {
4083   /* Now scan partial symbols in that module.  */
4084
4085   if (pdi->has_children)
4086     scan_partial_symbols (pdi->die_child, lowpc, highpc, need_pc, cu);
4087 }
4088
4089 /* Read a partial die corresponding to a subprogram and create a partial
4090    symbol for that subprogram.  When the CU language allows it, this
4091    routine also defines a partial symbol for each nested subprogram
4092    that this subprogram contains.
4093
4094    DIE my also be a lexical block, in which case we simply search
4095    recursively for suprograms defined inside that lexical block.
4096    Again, this is only performed when the CU language allows this
4097    type of definitions.  */
4098
4099 static void
4100 add_partial_subprogram (struct partial_die_info *pdi,
4101                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
4102                         int need_pc, struct dwarf2_cu *cu)
4103 {
4104   if (pdi->tag == DW_TAG_subprogram)
4105     {
4106       if (pdi->has_pc_info)
4107         {
4108           if (pdi->lowpc < *lowpc)
4109             *lowpc = pdi->lowpc;
4110           if (pdi->highpc > *highpc)
4111             *highpc = pdi->highpc;
4112           if (need_pc)
4113             {
4114               CORE_ADDR baseaddr;
4115               struct objfile *objfile = cu->objfile;
4116
4117               baseaddr = ANOFFSET (objfile->section_offsets,
4118                                    SECT_OFF_TEXT (objfile));
4119               addrmap_set_empty (objfile->psymtabs_addrmap,
4120                                  pdi->lowpc + baseaddr,
4121                                  pdi->highpc - 1 + baseaddr,
4122                                  cu->per_cu->v.psymtab);
4123             }
4124           if (!pdi->is_declaration)
4125             /* Ignore subprogram DIEs that do not have a name, they are
4126                illegal.  Do not emit a complaint at this point, we will
4127                do so when we convert this psymtab into a symtab.  */
4128             if (pdi->name)
4129               add_partial_symbol (pdi, cu);
4130         }
4131     }
4132
4133   if (! pdi->has_children)
4134     return;
4135
4136   if (cu->language == language_ada)
4137     {
4138       pdi = pdi->die_child;
4139       while (pdi != NULL)
4140         {
4141           fixup_partial_die (pdi, cu);
4142           if (pdi->tag == DW_TAG_subprogram
4143               || pdi->tag == DW_TAG_lexical_block)
4144             add_partial_subprogram (pdi, lowpc, highpc, need_pc, cu);
4145           pdi = pdi->die_sibling;
4146         }
4147     }
4148 }
4149
4150 /* Read a partial die corresponding to an enumeration type.  */
4151
4152 static void
4153 add_partial_enumeration (struct partial_die_info *enum_pdi,
4154                          struct dwarf2_cu *cu)
4155 {
4156   struct partial_die_info *pdi;
4157
4158   if (enum_pdi->name != NULL)
4159     add_partial_symbol (enum_pdi, cu);
4160
4161   pdi = enum_pdi->die_child;
4162   while (pdi)
4163     {
4164       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
4165         complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
4166       else
4167         add_partial_symbol (pdi, cu);
4168       pdi = pdi->die_sibling;
4169     }
4170 }
4171
4172 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit CU.
4173    Return the corresponding abbrev, or NULL if the number is zero (indicating
4174    an empty DIE).  In either case *BYTES_READ will be set to the length of
4175    the initial number.  */
4176
4177 static struct abbrev_info *
4178 peek_die_abbrev (gdb_byte *info_ptr, unsigned int *bytes_read,
4179                  struct dwarf2_cu *cu)
4180 {
4181   bfd *abfd = cu->objfile->obfd;
4182   unsigned int abbrev_number;
4183   struct abbrev_info *abbrev;
4184
4185   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
4186
4187   if (abbrev_number == 0)
4188     return NULL;
4189
4190   abbrev = dwarf2_lookup_abbrev (abbrev_number, cu);
4191   if (!abbrev)
4192     {
4193       error (_("Dwarf Error: Could not find abbrev number %d [in module %s]"),
4194              abbrev_number, bfd_get_filename (abfd));
4195     }
4196
4197   return abbrev;
4198 }
4199
4200 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
4201    Returns a pointer to the end of a series of DIEs, terminated by an empty
4202    DIE.  Any children of the skipped DIEs will also be skipped.  */
4203
4204 static gdb_byte *
4205 skip_children (gdb_byte *buffer, gdb_byte *info_ptr, struct dwarf2_cu *cu)
4206 {
4207   struct abbrev_info *abbrev;
4208   unsigned int bytes_read;
4209
4210   while (1)
4211     {
4212       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
4213       if (abbrev == NULL)
4214         return info_ptr + bytes_read;
4215       else
4216         info_ptr = skip_one_die (buffer, info_ptr + bytes_read, abbrev, cu);
4217     }
4218 }
4219
4220 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
4221    INFO_PTR should point just after the initial uleb128 of a DIE, and the
4222    abbrev corresponding to that skipped uleb128 should be passed in
4223    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
4224    children.  */
4225
4226 static gdb_byte *
4227 skip_one_die (gdb_byte *buffer, gdb_byte *info_ptr,
4228               struct abbrev_info *abbrev, struct dwarf2_cu *cu)
4229 {
4230   unsigned int bytes_read;
4231   struct attribute attr;
4232   bfd *abfd = cu->objfile->obfd;
4233   unsigned int form, i;
4234
4235   for (i = 0; i < abbrev->num_attrs; i++)
4236     {
4237       /* The only abbrev we care about is DW_AT_sibling.  */
4238       if (abbrev->attrs[i].name == DW_AT_sibling)
4239         {
4240           read_attribute (&attr, &abbrev->attrs[i],
4241                           abfd, info_ptr, cu);
4242           if (attr.form == DW_FORM_ref_addr)
4243             complaint (&symfile_complaints,
4244                        _("ignoring absolute DW_AT_sibling"));
4245           else
4246             return buffer + dwarf2_get_ref_die_offset (&attr);
4247         }
4248
4249       /* If it isn't DW_AT_sibling, skip this attribute.  */
4250       form = abbrev->attrs[i].form;
4251     skip_attribute:
4252       switch (form)
4253         {
4254         case DW_FORM_ref_addr:
4255           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
4256              and later it is offset sized.  */
4257           if (cu->header.version == 2)
4258             info_ptr += cu->header.addr_size;
4259           else
4260             info_ptr += cu->header.offset_size;
4261           break;
4262         case DW_FORM_addr:
4263           info_ptr += cu->header.addr_size;
4264           break;
4265         case DW_FORM_data1:
4266         case DW_FORM_ref1:
4267         case DW_FORM_flag:
4268           info_ptr += 1;
4269           break;
4270         case DW_FORM_flag_present:
4271           break;
4272         case DW_FORM_data2:
4273         case DW_FORM_ref2:
4274           info_ptr += 2;
4275           break;
4276         case DW_FORM_data4:
4277         case DW_FORM_ref4:
4278           info_ptr += 4;
4279           break;
4280         case DW_FORM_data8:
4281         case DW_FORM_ref8:
4282         case DW_FORM_ref_sig8:
4283           info_ptr += 8;
4284           break;
4285         case DW_FORM_string:
4286           read_direct_string (abfd, info_ptr, &bytes_read);
4287           info_ptr += bytes_read;
4288           break;
4289         case DW_FORM_sec_offset:
4290         case DW_FORM_strp:
4291           info_ptr += cu->header.offset_size;
4292           break;
4293         case DW_FORM_exprloc:
4294         case DW_FORM_block:
4295           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
4296           info_ptr += bytes_read;
4297           break;
4298         case DW_FORM_block1:
4299           info_ptr += 1 + read_1_byte (abfd, info_ptr);
4300           break;
4301         case DW_FORM_block2:
4302           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
4303           break;
4304         case DW_FORM_block4:
4305           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
4306           break;
4307         case DW_FORM_sdata:
4308         case DW_FORM_udata:
4309         case DW_FORM_ref_udata:
4310           info_ptr = skip_leb128 (abfd, info_ptr);
4311           break;
4312         case DW_FORM_indirect:
4313           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
4314           info_ptr += bytes_read;
4315           /* We need to continue parsing from here, so just go back to
4316              the top.  */
4317           goto skip_attribute;
4318
4319         default:
4320           error (_("Dwarf Error: Cannot handle %s "
4321                    "in DWARF reader [in module %s]"),
4322                  dwarf_form_name (form),
4323                  bfd_get_filename (abfd));
4324         }
4325     }
4326
4327   if (abbrev->has_children)
4328     return skip_children (buffer, info_ptr, cu);
4329   else
4330     return info_ptr;
4331 }
4332
4333 /* Locate ORIG_PDI's sibling.
4334    INFO_PTR should point to the start of the next DIE after ORIG_PDI
4335    in BUFFER.  */
4336
4337 static gdb_byte *
4338 locate_pdi_sibling (struct partial_die_info *orig_pdi,
4339                     gdb_byte *buffer, gdb_byte *info_ptr,
4340                     bfd *abfd, struct dwarf2_cu *cu)
4341 {
4342   /* Do we know the sibling already?  */
4343
4344   if (orig_pdi->sibling)
4345     return orig_pdi->sibling;
4346
4347   /* Are there any children to deal with?  */
4348
4349   if (!orig_pdi->has_children)
4350     return info_ptr;
4351
4352   /* Skip the children the long way.  */
4353
4354   return skip_children (buffer, info_ptr, cu);
4355 }
4356
4357 /* Expand this partial symbol table into a full symbol table.  */
4358
4359 static void
4360 dwarf2_psymtab_to_symtab (struct partial_symtab *pst)
4361 {
4362   if (pst != NULL)
4363     {
4364       if (pst->readin)
4365         {
4366           warning (_("bug: psymtab for %s is already read in."),
4367                    pst->filename);
4368         }
4369       else
4370         {
4371           if (info_verbose)
4372             {
4373               printf_filtered (_("Reading in symbols for %s..."),
4374                                pst->filename);
4375               gdb_flush (gdb_stdout);
4376             }
4377
4378           /* Restore our global data.  */
4379           dwarf2_per_objfile = objfile_data (pst->objfile,
4380                                              dwarf2_objfile_data_key);
4381
4382           /* If this psymtab is constructed from a debug-only objfile, the
4383              has_section_at_zero flag will not necessarily be correct.  We
4384              can get the correct value for this flag by looking at the data
4385              associated with the (presumably stripped) associated objfile.  */
4386           if (pst->objfile->separate_debug_objfile_backlink)
4387             {
4388               struct dwarf2_per_objfile *dpo_backlink
4389                 = objfile_data (pst->objfile->separate_debug_objfile_backlink,
4390                                 dwarf2_objfile_data_key);
4391
4392               dwarf2_per_objfile->has_section_at_zero
4393                 = dpo_backlink->has_section_at_zero;
4394             }
4395
4396           dwarf2_per_objfile->reading_partial_symbols = 0;
4397
4398           psymtab_to_symtab_1 (pst);
4399
4400           /* Finish up the debug error message.  */
4401           if (info_verbose)
4402             printf_filtered (_("done.\n"));
4403         }
4404     }
4405 }
4406
4407 /* Add PER_CU to the queue.  */
4408
4409 static void
4410 queue_comp_unit (struct dwarf2_per_cu_data *per_cu, struct objfile *objfile)
4411 {
4412   struct dwarf2_queue_item *item;
4413
4414   per_cu->queued = 1;
4415   item = xmalloc (sizeof (*item));
4416   item->per_cu = per_cu;
4417   item->next = NULL;
4418
4419   if (dwarf2_queue == NULL)
4420     dwarf2_queue = item;
4421   else
4422     dwarf2_queue_tail->next = item;
4423
4424   dwarf2_queue_tail = item;
4425 }
4426
4427 /* Process the queue.  */
4428
4429 static void
4430 process_queue (struct objfile *objfile)
4431 {
4432   struct dwarf2_queue_item *item, *next_item;
4433
4434   /* The queue starts out with one item, but following a DIE reference
4435      may load a new CU, adding it to the end of the queue.  */
4436   for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
4437     {
4438       if (dwarf2_per_objfile->using_index
4439           ? !item->per_cu->v.quick->symtab
4440           : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
4441         process_full_comp_unit (item->per_cu);
4442
4443       item->per_cu->queued = 0;
4444       next_item = item->next;
4445       xfree (item);
4446     }
4447
4448   dwarf2_queue_tail = NULL;
4449 }
4450
4451 /* Free all allocated queue entries.  This function only releases anything if
4452    an error was thrown; if the queue was processed then it would have been
4453    freed as we went along.  */
4454
4455 static void
4456 dwarf2_release_queue (void *dummy)
4457 {
4458   struct dwarf2_queue_item *item, *last;
4459
4460   item = dwarf2_queue;
4461   while (item)
4462     {
4463       /* Anything still marked queued is likely to be in an
4464          inconsistent state, so discard it.  */
4465       if (item->per_cu->queued)
4466         {
4467           if (item->per_cu->cu != NULL)
4468             free_one_cached_comp_unit (item->per_cu->cu);
4469           item->per_cu->queued = 0;
4470         }
4471
4472       last = item;
4473       item = item->next;
4474       xfree (last);
4475     }
4476
4477   dwarf2_queue = dwarf2_queue_tail = NULL;
4478 }
4479
4480 /* Read in full symbols for PST, and anything it depends on.  */
4481
4482 static void
4483 psymtab_to_symtab_1 (struct partial_symtab *pst)
4484 {
4485   struct dwarf2_per_cu_data *per_cu;
4486   struct cleanup *back_to;
4487   int i;
4488
4489   for (i = 0; i < pst->number_of_dependencies; i++)
4490     if (!pst->dependencies[i]->readin)
4491       {
4492         /* Inform about additional files that need to be read in.  */
4493         if (info_verbose)
4494           {
4495             /* FIXME: i18n: Need to make this a single string.  */
4496             fputs_filtered (" ", gdb_stdout);
4497             wrap_here ("");
4498             fputs_filtered ("and ", gdb_stdout);
4499             wrap_here ("");
4500             printf_filtered ("%s...", pst->dependencies[i]->filename);
4501             wrap_here ("");     /* Flush output.  */
4502             gdb_flush (gdb_stdout);
4503           }
4504         psymtab_to_symtab_1 (pst->dependencies[i]);
4505       }
4506
4507   per_cu = pst->read_symtab_private;
4508
4509   if (per_cu == NULL)
4510     {
4511       /* It's an include file, no symbols to read for it.
4512          Everything is in the parent symtab.  */
4513       pst->readin = 1;
4514       return;
4515     }
4516
4517   dw2_do_instantiate_symtab (pst->objfile, per_cu);
4518 }
4519
4520 /* Load the DIEs associated with PER_CU into memory.  */
4521
4522 static void
4523 load_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
4524                      struct objfile *objfile)
4525 {
4526   bfd *abfd = objfile->obfd;
4527   struct dwarf2_cu *cu;
4528   unsigned int offset;
4529   gdb_byte *info_ptr, *beg_of_comp_unit;
4530   struct cleanup *free_abbrevs_cleanup = NULL, *free_cu_cleanup = NULL;
4531   struct attribute *attr;
4532   int read_cu = 0;
4533
4534   gdb_assert (! per_cu->from_debug_types);
4535
4536   /* Set local variables from the partial symbol table info.  */
4537   offset = per_cu->offset;
4538
4539   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
4540   info_ptr = dwarf2_per_objfile->info.buffer + offset;
4541   beg_of_comp_unit = info_ptr;
4542
4543   if (per_cu->cu == NULL)
4544     {
4545       cu = xmalloc (sizeof (*cu));
4546       init_one_comp_unit (cu, objfile);
4547
4548       read_cu = 1;
4549
4550       /* If an error occurs while loading, release our storage.  */
4551       free_cu_cleanup = make_cleanup (free_one_comp_unit, cu);
4552
4553       /* Read in the comp_unit header.  */
4554       info_ptr = read_comp_unit_head (&cu->header, info_ptr, abfd);
4555
4556       /* Complete the cu_header.  */
4557       cu->header.offset = offset;
4558       cu->header.first_die_offset = info_ptr - beg_of_comp_unit;
4559
4560       /* Read the abbrevs for this compilation unit.  */
4561       dwarf2_read_abbrevs (abfd, cu);
4562       free_abbrevs_cleanup = make_cleanup (dwarf2_free_abbrev_table, cu);
4563
4564       /* Link this compilation unit into the compilation unit tree.  */
4565       per_cu->cu = cu;
4566       cu->per_cu = per_cu;
4567
4568       /* Link this CU into read_in_chain.  */
4569       per_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
4570       dwarf2_per_objfile->read_in_chain = per_cu;
4571     }
4572   else
4573     {
4574       cu = per_cu->cu;
4575       info_ptr += cu->header.first_die_offset;
4576     }
4577
4578   cu->dies = read_comp_unit (info_ptr, cu);
4579
4580   /* We try not to read any attributes in this function, because not
4581      all objfiles needed for references have been loaded yet, and symbol
4582      table processing isn't initialized.  But we have to set the CU language,
4583      or we won't be able to build types correctly.  */
4584   prepare_one_comp_unit (cu, cu->dies);
4585
4586   /* Similarly, if we do not read the producer, we can not apply
4587      producer-specific interpretation.  */
4588   attr = dwarf2_attr (cu->dies, DW_AT_producer, cu);
4589   if (attr)
4590     cu->producer = DW_STRING (attr);
4591
4592   if (read_cu)
4593     {
4594       do_cleanups (free_abbrevs_cleanup);
4595
4596       /* We've successfully allocated this compilation unit.  Let our
4597          caller clean it up when finished with it.  */
4598       discard_cleanups (free_cu_cleanup);
4599     }
4600 }
4601
4602 /* Add a DIE to the delayed physname list.  */
4603
4604 static void
4605 add_to_method_list (struct type *type, int fnfield_index, int index,
4606                     const char *name, struct die_info *die,
4607                     struct dwarf2_cu *cu)
4608 {
4609   struct delayed_method_info mi;
4610   mi.type = type;
4611   mi.fnfield_index = fnfield_index;
4612   mi.index = index;
4613   mi.name = name;
4614   mi.die = die;
4615   VEC_safe_push (delayed_method_info, cu->method_list, &mi);
4616 }
4617
4618 /* A cleanup for freeing the delayed method list.  */
4619
4620 static void
4621 free_delayed_list (void *ptr)
4622 {
4623   struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr;
4624   if (cu->method_list != NULL)
4625     {
4626       VEC_free (delayed_method_info, cu->method_list);
4627       cu->method_list = NULL;
4628     }
4629 }
4630
4631 /* Compute the physnames of any methods on the CU's method list.
4632
4633    The computation of method physnames is delayed in order to avoid the
4634    (bad) condition that one of the method's formal parameters is of an as yet
4635    incomplete type.  */
4636
4637 static void
4638 compute_delayed_physnames (struct dwarf2_cu *cu)
4639 {
4640   int i;
4641   struct delayed_method_info *mi;
4642   for (i = 0; VEC_iterate (delayed_method_info, cu->method_list, i, mi) ; ++i)
4643     {
4644       const char *physname;
4645       struct fn_fieldlist *fn_flp
4646         = &TYPE_FN_FIELDLIST (mi->type, mi->fnfield_index);
4647       physname = dwarf2_physname ((char *) mi->name, mi->die, cu);
4648       fn_flp->fn_fields[mi->index].physname = physname ? physname : "";
4649     }
4650 }
4651
4652 /* Check for GCC >= 4.x.  Return minor version (x) of 4.x in such case.  If it
4653    is not GCC or it is GCC older than 4.x return -1.  If it is GCC 5.x or
4654    higher return INT_MAX.  */
4655
4656 static int
4657 producer_is_gcc_ge_4 (struct dwarf2_cu *cu)
4658 {
4659   const char *cs;
4660   int major, minor;
4661
4662   if (cu->producer == NULL)
4663     {
4664       /* For unknown compilers expect their behavior is not compliant.  For GCC
4665          this case can also happen for -gdwarf-4 type units supported since
4666          gcc-4.5.  */
4667
4668       return -1;
4669     }
4670
4671   /* Skip any identifier after "GNU " - such as "C++" or "Java".  */
4672
4673   if (strncmp (cu->producer, "GNU ", strlen ("GNU ")) != 0)
4674     {
4675       /* For non-GCC compilers expect their behavior is not compliant.  */
4676
4677       return -1;
4678     }
4679   cs = &cu->producer[strlen ("GNU ")];
4680   while (*cs && !isdigit (*cs))
4681     cs++;
4682   if (sscanf (cs, "%d.%d", &major, &minor) != 2)
4683     {
4684       /* Not recognized as GCC.  */
4685
4686       return -1;
4687     }
4688
4689   if (major < 4)
4690     return -1;
4691   if (major > 4)
4692     return INT_MAX;
4693   return minor;
4694 }
4695
4696 /* Generate full symbol information for PST and CU, whose DIEs have
4697    already been loaded into memory.  */
4698
4699 static void
4700 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu)
4701 {
4702   struct dwarf2_cu *cu = per_cu->cu;
4703   struct objfile *objfile = per_cu->objfile;
4704   CORE_ADDR lowpc, highpc;
4705   struct symtab *symtab;
4706   struct cleanup *back_to, *delayed_list_cleanup;
4707   CORE_ADDR baseaddr;
4708
4709   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
4710
4711   buildsym_init ();
4712   back_to = make_cleanup (really_free_pendings, NULL);
4713   delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
4714
4715   cu->list_in_scope = &file_symbols;
4716
4717   dwarf2_find_base_address (cu->dies, cu);
4718
4719   /* Do line number decoding in read_file_scope () */
4720   process_die (cu->dies, cu);
4721
4722   /* Now that we have processed all the DIEs in the CU, all the types 
4723      should be complete, and it should now be safe to compute all of the
4724      physnames.  */
4725   compute_delayed_physnames (cu);
4726   do_cleanups (delayed_list_cleanup);
4727
4728   /* Some compilers don't define a DW_AT_high_pc attribute for the
4729      compilation unit.  If the DW_AT_high_pc is missing, synthesize
4730      it, by scanning the DIE's below the compilation unit.  */
4731   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
4732
4733   symtab = end_symtab (highpc + baseaddr, objfile, SECT_OFF_TEXT (objfile));
4734
4735   if (symtab != NULL)
4736     {
4737       int gcc_4_minor = producer_is_gcc_ge_4 (cu);
4738
4739       /* Set symtab language to language from DW_AT_language.  If the
4740          compilation is from a C file generated by language preprocessors, do
4741          not set the language if it was already deduced by start_subfile.  */
4742       if (!(cu->language == language_c && symtab->language != language_c))
4743         symtab->language = cu->language;
4744
4745       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
4746          produce DW_AT_location with location lists but it can be possibly
4747          invalid without -fvar-tracking.
4748
4749          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
4750          needed, it would be wrong due to missing DW_AT_producer there.
4751
4752          Still one can confuse GDB by using non-standard GCC compilation
4753          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
4754          */ 
4755       if (cu->has_loclist && gcc_4_minor >= 0)
4756         symtab->locations_valid = 1;
4757
4758       if (gcc_4_minor >= 5)
4759         symtab->epilogue_unwind_valid = 1;
4760     }
4761
4762   if (dwarf2_per_objfile->using_index)
4763     per_cu->v.quick->symtab = symtab;
4764   else
4765     {
4766       struct partial_symtab *pst = per_cu->v.psymtab;
4767       pst->symtab = symtab;
4768       pst->readin = 1;
4769     }
4770
4771   do_cleanups (back_to);
4772 }
4773
4774 /* Process a die and its children.  */
4775
4776 static void
4777 process_die (struct die_info *die, struct dwarf2_cu *cu)
4778 {
4779   switch (die->tag)
4780     {
4781     case DW_TAG_padding:
4782       break;
4783     case DW_TAG_compile_unit:
4784       read_file_scope (die, cu);
4785       break;
4786     case DW_TAG_type_unit:
4787       read_type_unit_scope (die, cu);
4788       break;
4789     case DW_TAG_subprogram:
4790     case DW_TAG_inlined_subroutine:
4791       read_func_scope (die, cu);
4792       break;
4793     case DW_TAG_lexical_block:
4794     case DW_TAG_try_block:
4795     case DW_TAG_catch_block:
4796       read_lexical_block_scope (die, cu);
4797       break;
4798     case DW_TAG_class_type:
4799     case DW_TAG_interface_type:
4800     case DW_TAG_structure_type:
4801     case DW_TAG_union_type:
4802       process_structure_scope (die, cu);
4803       break;
4804     case DW_TAG_enumeration_type:
4805       process_enumeration_scope (die, cu);
4806       break;
4807
4808     /* These dies have a type, but processing them does not create
4809        a symbol or recurse to process the children.  Therefore we can
4810        read them on-demand through read_type_die.  */
4811     case DW_TAG_subroutine_type:
4812     case DW_TAG_set_type:
4813     case DW_TAG_array_type:
4814     case DW_TAG_pointer_type:
4815     case DW_TAG_ptr_to_member_type:
4816     case DW_TAG_reference_type:
4817     case DW_TAG_string_type:
4818       break;
4819
4820     case DW_TAG_base_type:
4821     case DW_TAG_subrange_type:
4822     case DW_TAG_typedef:
4823       /* Add a typedef symbol for the type definition, if it has a
4824          DW_AT_name.  */
4825       new_symbol (die, read_type_die (die, cu), cu);
4826       break;
4827     case DW_TAG_common_block:
4828       read_common_block (die, cu);
4829       break;
4830     case DW_TAG_common_inclusion:
4831       break;
4832     case DW_TAG_namespace:
4833       processing_has_namespace_info = 1;
4834       read_namespace (die, cu);
4835       break;
4836     case DW_TAG_module:
4837       processing_has_namespace_info = 1;
4838       read_module (die, cu);
4839       break;
4840     case DW_TAG_imported_declaration:
4841     case DW_TAG_imported_module:
4842       processing_has_namespace_info = 1;
4843       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
4844                                  || cu->language != language_fortran))
4845         complaint (&symfile_complaints, _("Tag '%s' has unexpected children"),
4846                    dwarf_tag_name (die->tag));
4847       read_import_statement (die, cu);
4848       break;
4849     default:
4850       new_symbol (die, NULL, cu);
4851       break;
4852     }
4853 }
4854
4855 /* A helper function for dwarf2_compute_name which determines whether DIE
4856    needs to have the name of the scope prepended to the name listed in the
4857    die.  */
4858
4859 static int
4860 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
4861 {
4862   struct attribute *attr;
4863
4864   switch (die->tag)
4865     {
4866     case DW_TAG_namespace:
4867     case DW_TAG_typedef:
4868     case DW_TAG_class_type:
4869     case DW_TAG_interface_type:
4870     case DW_TAG_structure_type:
4871     case DW_TAG_union_type:
4872     case DW_TAG_enumeration_type:
4873     case DW_TAG_enumerator:
4874     case DW_TAG_subprogram:
4875     case DW_TAG_member:
4876       return 1;
4877
4878     case DW_TAG_variable:
4879     case DW_TAG_constant:
4880       /* We only need to prefix "globally" visible variables.  These include
4881          any variable marked with DW_AT_external or any variable that
4882          lives in a namespace.  [Variables in anonymous namespaces
4883          require prefixing, but they are not DW_AT_external.]  */
4884
4885       if (dwarf2_attr (die, DW_AT_specification, cu))
4886         {
4887           struct dwarf2_cu *spec_cu = cu;
4888
4889           return die_needs_namespace (die_specification (die, &spec_cu),
4890                                       spec_cu);
4891         }
4892
4893       attr = dwarf2_attr (die, DW_AT_external, cu);
4894       if (attr == NULL && die->parent->tag != DW_TAG_namespace
4895           && die->parent->tag != DW_TAG_module)
4896         return 0;
4897       /* A variable in a lexical block of some kind does not need a
4898          namespace, even though in C++ such variables may be external
4899          and have a mangled name.  */
4900       if (die->parent->tag ==  DW_TAG_lexical_block
4901           || die->parent->tag ==  DW_TAG_try_block
4902           || die->parent->tag ==  DW_TAG_catch_block
4903           || die->parent->tag == DW_TAG_subprogram)
4904         return 0;
4905       return 1;
4906
4907     default:
4908       return 0;
4909     }
4910 }
4911
4912 /* Retrieve the last character from a mem_file.  */
4913
4914 static void
4915 do_ui_file_peek_last (void *object, const char *buffer, long length)
4916 {
4917   char *last_char_p = (char *) object;
4918
4919   if (length > 0)
4920     *last_char_p = buffer[length - 1];
4921 }
4922
4923 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
4924    compute the physname for the object, which include a method's
4925    formal parameters (C++/Java) and return type (Java).
4926
4927    For Ada, return the DIE's linkage name rather than the fully qualified
4928    name.  PHYSNAME is ignored..
4929
4930    The result is allocated on the objfile_obstack and canonicalized.  */
4931
4932 static const char *
4933 dwarf2_compute_name (char *name, struct die_info *die, struct dwarf2_cu *cu,
4934                      int physname)
4935 {
4936   if (name == NULL)
4937     name = dwarf2_name (die, cu);
4938
4939   /* For Fortran GDB prefers DW_AT_*linkage_name if present but otherwise
4940      compute it by typename_concat inside GDB.  */
4941   if (cu->language == language_ada
4942       || (cu->language == language_fortran && physname))
4943     {
4944       /* For Ada unit, we prefer the linkage name over the name, as
4945          the former contains the exported name, which the user expects
4946          to be able to reference.  Ideally, we want the user to be able
4947          to reference this entity using either natural or linkage name,
4948          but we haven't started looking at this enhancement yet.  */
4949       struct attribute *attr;
4950
4951       attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
4952       if (attr == NULL)
4953         attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
4954       if (attr && DW_STRING (attr))
4955         return DW_STRING (attr);
4956     }
4957
4958   /* These are the only languages we know how to qualify names in.  */
4959   if (name != NULL
4960       && (cu->language == language_cplus || cu->language == language_java
4961           || cu->language == language_fortran))
4962     {
4963       if (die_needs_namespace (die, cu))
4964         {
4965           long length;
4966           char *prefix;
4967           struct ui_file *buf;
4968
4969           prefix = determine_prefix (die, cu);
4970           buf = mem_fileopen ();
4971           if (*prefix != '\0')
4972             {
4973               char *prefixed_name = typename_concat (NULL, prefix, name,
4974                                                      physname, cu);
4975
4976               fputs_unfiltered (prefixed_name, buf);
4977               xfree (prefixed_name);
4978             }
4979           else
4980             fputs_unfiltered (name, buf);
4981
4982           /* Template parameters may be specified in the DIE's DW_AT_name, or
4983              as children with DW_TAG_template_type_param or
4984              DW_TAG_value_type_param.  If the latter, add them to the name
4985              here.  If the name already has template parameters, then
4986              skip this step; some versions of GCC emit both, and
4987              it is more efficient to use the pre-computed name.
4988
4989              Something to keep in mind about this process: it is very
4990              unlikely, or in some cases downright impossible, to produce
4991              something that will match the mangled name of a function.
4992              If the definition of the function has the same debug info,
4993              we should be able to match up with it anyway.  But fallbacks
4994              using the minimal symbol, for instance to find a method
4995              implemented in a stripped copy of libstdc++, will not work.
4996              If we do not have debug info for the definition, we will have to
4997              match them up some other way.
4998
4999              When we do name matching there is a related problem with function
5000              templates; two instantiated function templates are allowed to
5001              differ only by their return types, which we do not add here.  */
5002
5003           if (cu->language == language_cplus && strchr (name, '<') == NULL)
5004             {
5005               struct attribute *attr;
5006               struct die_info *child;
5007               int first = 1;
5008
5009               die->building_fullname = 1;
5010
5011               for (child = die->child; child != NULL; child = child->sibling)
5012                 {
5013                   struct type *type;
5014                   long value;
5015                   gdb_byte *bytes;
5016                   struct dwarf2_locexpr_baton *baton;
5017                   struct value *v;
5018
5019                   if (child->tag != DW_TAG_template_type_param
5020                       && child->tag != DW_TAG_template_value_param)
5021                     continue;
5022
5023                   if (first)
5024                     {
5025                       fputs_unfiltered ("<", buf);
5026                       first = 0;
5027                     }
5028                   else
5029                     fputs_unfiltered (", ", buf);
5030
5031                   attr = dwarf2_attr (child, DW_AT_type, cu);
5032                   if (attr == NULL)
5033                     {
5034                       complaint (&symfile_complaints,
5035                                  _("template parameter missing DW_AT_type"));
5036                       fputs_unfiltered ("UNKNOWN_TYPE", buf);
5037                       continue;
5038                     }
5039                   type = die_type (child, cu);
5040
5041                   if (child->tag == DW_TAG_template_type_param)
5042                     {
5043                       c_print_type (type, "", buf, -1, 0);
5044                       continue;
5045                     }
5046
5047                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
5048                   if (attr == NULL)
5049                     {
5050                       complaint (&symfile_complaints,
5051                                  _("template parameter missing "
5052                                    "DW_AT_const_value"));
5053                       fputs_unfiltered ("UNKNOWN_VALUE", buf);
5054                       continue;
5055                     }
5056
5057                   dwarf2_const_value_attr (attr, type, name,
5058                                            &cu->comp_unit_obstack, cu,
5059                                            &value, &bytes, &baton);
5060
5061                   if (TYPE_NOSIGN (type))
5062                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
5063                        changed, this can use value_print instead.  */
5064                     c_printchar (value, type, buf);
5065                   else
5066                     {
5067                       struct value_print_options opts;
5068
5069                       if (baton != NULL)
5070                         v = dwarf2_evaluate_loc_desc (type, NULL,
5071                                                       baton->data,
5072                                                       baton->size,
5073                                                       baton->per_cu);
5074                       else if (bytes != NULL)
5075                         {
5076                           v = allocate_value (type);
5077                           memcpy (value_contents_writeable (v), bytes,
5078                                   TYPE_LENGTH (type));
5079                         }
5080                       else
5081                         v = value_from_longest (type, value);
5082
5083                       /* Specify decimal so that we do not depend on
5084                          the radix.  */
5085                       get_formatted_print_options (&opts, 'd');
5086                       opts.raw = 1;
5087                       value_print (v, buf, &opts);
5088                       release_value (v);
5089                       value_free (v);
5090                     }
5091                 }
5092
5093               die->building_fullname = 0;
5094
5095               if (!first)
5096                 {
5097                   /* Close the argument list, with a space if necessary
5098                      (nested templates).  */
5099                   char last_char = '\0';
5100                   ui_file_put (buf, do_ui_file_peek_last, &last_char);
5101                   if (last_char == '>')
5102                     fputs_unfiltered (" >", buf);
5103                   else
5104                     fputs_unfiltered (">", buf);
5105                 }
5106             }
5107
5108           /* For Java and C++ methods, append formal parameter type
5109              information, if PHYSNAME.  */
5110
5111           if (physname && die->tag == DW_TAG_subprogram
5112               && (cu->language == language_cplus
5113                   || cu->language == language_java))
5114             {
5115               struct type *type = read_type_die (die, cu);
5116
5117               c_type_print_args (type, buf, 1, cu->language);
5118
5119               if (cu->language == language_java)
5120                 {
5121                   /* For java, we must append the return type to method
5122                      names.  */
5123                   if (die->tag == DW_TAG_subprogram)
5124                     java_print_type (TYPE_TARGET_TYPE (type), "", buf,
5125                                      0, 0);
5126                 }
5127               else if (cu->language == language_cplus)
5128                 {
5129                   /* Assume that an artificial first parameter is
5130                      "this", but do not crash if it is not.  RealView
5131                      marks unnamed (and thus unused) parameters as
5132                      artificial; there is no way to differentiate
5133                      the two cases.  */
5134                   if (TYPE_NFIELDS (type) > 0
5135                       && TYPE_FIELD_ARTIFICIAL (type, 0)
5136                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
5137                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
5138                                                                         0))))
5139                     fputs_unfiltered (" const", buf);
5140                 }
5141             }
5142
5143           name = ui_file_obsavestring (buf, &cu->objfile->objfile_obstack,
5144                                        &length);
5145           ui_file_delete (buf);
5146
5147           if (cu->language == language_cplus)
5148             {
5149               char *cname
5150                 = dwarf2_canonicalize_name (name, cu,
5151                                             &cu->objfile->objfile_obstack);
5152
5153               if (cname != NULL)
5154                 name = cname;
5155             }
5156         }
5157     }
5158
5159   return name;
5160 }
5161
5162 /* Return the fully qualified name of DIE, based on its DW_AT_name.
5163    If scope qualifiers are appropriate they will be added.  The result
5164    will be allocated on the objfile_obstack, or NULL if the DIE does
5165    not have a name.  NAME may either be from a previous call to
5166    dwarf2_name or NULL.
5167
5168    The output string will be canonicalized (if C++/Java).  */
5169
5170 static const char *
5171 dwarf2_full_name (char *name, struct die_info *die, struct dwarf2_cu *cu)
5172 {
5173   return dwarf2_compute_name (name, die, cu, 0);
5174 }
5175
5176 /* Construct a physname for the given DIE in CU.  NAME may either be
5177    from a previous call to dwarf2_name or NULL.  The result will be
5178    allocated on the objfile_objstack or NULL if the DIE does not have a
5179    name.
5180
5181    The output string will be canonicalized (if C++/Java).  */
5182
5183 static const char *
5184 dwarf2_physname (char *name, struct die_info *die, struct dwarf2_cu *cu)
5185 {
5186   struct attribute *attr;
5187   const char *retval, *mangled = NULL, *canon = NULL;
5188   struct cleanup *back_to;
5189   int need_copy = 1;
5190
5191   /* In this case dwarf2_compute_name is just a shortcut not building anything
5192      on its own.  */
5193   if (!die_needs_namespace (die, cu))
5194     return dwarf2_compute_name (name, die, cu, 1);
5195
5196   back_to = make_cleanup (null_cleanup, NULL);
5197
5198   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
5199   if (!attr)
5200     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
5201
5202   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
5203      has computed.  */
5204   if (attr && DW_STRING (attr))
5205     {
5206       char *demangled;
5207
5208       mangled = DW_STRING (attr);
5209
5210       /* Use DMGL_RET_DROP for C++ template functions to suppress their return
5211          type.  It is easier for GDB users to search for such functions as
5212          `name(params)' than `long name(params)'.  In such case the minimal
5213          symbol names do not match the full symbol names but for template
5214          functions there is never a need to look up their definition from their
5215          declaration so the only disadvantage remains the minimal symbol
5216          variant `long name(params)' does not have the proper inferior type.
5217          */
5218
5219       demangled = cplus_demangle (mangled, (DMGL_PARAMS | DMGL_ANSI
5220                                             | (cu->language == language_java
5221                                                ? DMGL_JAVA | DMGL_RET_POSTFIX
5222                                                : DMGL_RET_DROP)));
5223       if (demangled)
5224         {
5225           make_cleanup (xfree, demangled);
5226           canon = demangled;
5227         }
5228       else
5229         {
5230           canon = mangled;
5231           need_copy = 0;
5232         }
5233     }
5234
5235   if (canon == NULL || check_physname)
5236     {
5237       const char *physname = dwarf2_compute_name (name, die, cu, 1);
5238
5239       if (canon != NULL && strcmp (physname, canon) != 0)
5240         {
5241           /* It may not mean a bug in GDB.  The compiler could also
5242              compute DW_AT_linkage_name incorrectly.  But in such case
5243              GDB would need to be bug-to-bug compatible.  */
5244
5245           complaint (&symfile_complaints,
5246                      _("Computed physname <%s> does not match demangled <%s> "
5247                        "(from linkage <%s>) - DIE at 0x%x [in module %s]"),
5248                      physname, canon, mangled, die->offset, cu->objfile->name);
5249
5250           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
5251              is available here - over computed PHYSNAME.  It is safer
5252              against both buggy GDB and buggy compilers.  */
5253
5254           retval = canon;
5255         }
5256       else
5257         {
5258           retval = physname;
5259           need_copy = 0;
5260         }
5261     }
5262   else
5263     retval = canon;
5264
5265   if (need_copy)
5266     retval = obsavestring (retval, strlen (retval),
5267                            &cu->objfile->objfile_obstack);
5268
5269   do_cleanups (back_to);
5270   return retval;
5271 }
5272
5273 /* Read the import statement specified by the given die and record it.  */
5274
5275 static void
5276 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
5277 {
5278   struct attribute *import_attr;
5279   struct die_info *imported_die, *child_die;
5280   struct dwarf2_cu *imported_cu;
5281   const char *imported_name;
5282   const char *imported_name_prefix;
5283   const char *canonical_name;
5284   const char *import_alias;
5285   const char *imported_declaration = NULL;
5286   const char *import_prefix;
5287   VEC (const_char_ptr) *excludes = NULL;
5288   struct cleanup *cleanups;
5289
5290   char *temp;
5291
5292   import_attr = dwarf2_attr (die, DW_AT_import, cu);
5293   if (import_attr == NULL)
5294     {
5295       complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
5296                  dwarf_tag_name (die->tag));
5297       return;
5298     }
5299
5300   imported_cu = cu;
5301   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
5302   imported_name = dwarf2_name (imported_die, imported_cu);
5303   if (imported_name == NULL)
5304     {
5305       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
5306
5307         The import in the following code:
5308         namespace A
5309           {
5310             typedef int B;
5311           }
5312
5313         int main ()
5314           {
5315             using A::B;
5316             B b;
5317             return b;
5318           }
5319
5320         ...
5321          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
5322             <52>   DW_AT_decl_file   : 1
5323             <53>   DW_AT_decl_line   : 6
5324             <54>   DW_AT_import      : <0x75>
5325          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
5326             <59>   DW_AT_name        : B
5327             <5b>   DW_AT_decl_file   : 1
5328             <5c>   DW_AT_decl_line   : 2
5329             <5d>   DW_AT_type        : <0x6e>
5330         ...
5331          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
5332             <76>   DW_AT_byte_size   : 4
5333             <77>   DW_AT_encoding    : 5        (signed)
5334
5335         imports the wrong die ( 0x75 instead of 0x58 ).
5336         This case will be ignored until the gcc bug is fixed.  */
5337       return;
5338     }
5339
5340   /* Figure out the local name after import.  */
5341   import_alias = dwarf2_name (die, cu);
5342
5343   /* Figure out where the statement is being imported to.  */
5344   import_prefix = determine_prefix (die, cu);
5345
5346   /* Figure out what the scope of the imported die is and prepend it
5347      to the name of the imported die.  */
5348   imported_name_prefix = determine_prefix (imported_die, imported_cu);
5349
5350   if (imported_die->tag != DW_TAG_namespace
5351       && imported_die->tag != DW_TAG_module)
5352     {
5353       imported_declaration = imported_name;
5354       canonical_name = imported_name_prefix;
5355     }
5356   else if (strlen (imported_name_prefix) > 0)
5357     {
5358       temp = alloca (strlen (imported_name_prefix)
5359                      + 2 + strlen (imported_name) + 1);
5360       strcpy (temp, imported_name_prefix);
5361       strcat (temp, "::");
5362       strcat (temp, imported_name);
5363       canonical_name = temp;
5364     }
5365   else
5366     canonical_name = imported_name;
5367
5368   cleanups = make_cleanup (VEC_cleanup (const_char_ptr), &excludes);
5369
5370   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
5371     for (child_die = die->child; child_die && child_die->tag;
5372          child_die = sibling_die (child_die))
5373       {
5374         /* DWARF-4: A Fortran use statement with a “rename list” may be
5375            represented by an imported module entry with an import attribute
5376            referring to the module and owned entries corresponding to those
5377            entities that are renamed as part of being imported.  */
5378
5379         if (child_die->tag != DW_TAG_imported_declaration)
5380           {
5381             complaint (&symfile_complaints,
5382                        _("child DW_TAG_imported_declaration expected "
5383                          "- DIE at 0x%x [in module %s]"),
5384                        child_die->offset, cu->objfile->name);
5385             continue;
5386           }
5387
5388         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
5389         if (import_attr == NULL)
5390           {
5391             complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
5392                        dwarf_tag_name (child_die->tag));
5393             continue;
5394           }
5395
5396         imported_cu = cu;
5397         imported_die = follow_die_ref_or_sig (child_die, import_attr,
5398                                               &imported_cu);
5399         imported_name = dwarf2_name (imported_die, imported_cu);
5400         if (imported_name == NULL)
5401           {
5402             complaint (&symfile_complaints,
5403                        _("child DW_TAG_imported_declaration has unknown "
5404                          "imported name - DIE at 0x%x [in module %s]"),
5405                        child_die->offset, cu->objfile->name);
5406             continue;
5407           }
5408
5409         VEC_safe_push (const_char_ptr, excludes, imported_name);
5410
5411         process_die (child_die, cu);
5412       }
5413
5414   cp_add_using_directive (import_prefix,
5415                           canonical_name,
5416                           import_alias,
5417                           imported_declaration,
5418                           excludes,
5419                           &cu->objfile->objfile_obstack);
5420
5421   do_cleanups (cleanups);
5422 }
5423
5424 static void
5425 initialize_cu_func_list (struct dwarf2_cu *cu)
5426 {
5427   cu->first_fn = cu->last_fn = cu->cached_fn = NULL;
5428 }
5429
5430 /* Cleanup function for read_file_scope.  */
5431
5432 static void
5433 free_cu_line_header (void *arg)
5434 {
5435   struct dwarf2_cu *cu = arg;
5436
5437   free_line_header (cu->line_header);
5438   cu->line_header = NULL;
5439 }
5440
5441 static void
5442 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu,
5443                          char **name, char **comp_dir)
5444 {
5445   struct attribute *attr;
5446
5447   *name = NULL;
5448   *comp_dir = NULL;
5449
5450   /* Find the filename.  Do not use dwarf2_name here, since the filename
5451      is not a source language identifier.  */
5452   attr = dwarf2_attr (die, DW_AT_name, cu);
5453   if (attr)
5454     {
5455       *name = DW_STRING (attr);
5456     }
5457
5458   attr = dwarf2_attr (die, DW_AT_comp_dir, cu);
5459   if (attr)
5460     *comp_dir = DW_STRING (attr);
5461   else if (*name != NULL && IS_ABSOLUTE_PATH (*name))
5462     {
5463       *comp_dir = ldirname (*name);
5464       if (*comp_dir != NULL)
5465         make_cleanup (xfree, *comp_dir);
5466     }
5467   if (*comp_dir != NULL)
5468     {
5469       /* Irix 6.2 native cc prepends <machine>.: to the compilation
5470          directory, get rid of it.  */
5471       char *cp = strchr (*comp_dir, ':');
5472
5473       if (cp && cp != *comp_dir && cp[-1] == '.' && cp[1] == '/')
5474         *comp_dir = cp + 1;
5475     }
5476
5477   if (*name == NULL)
5478     *name = "<unknown>";
5479 }
5480
5481 /* Handle DW_AT_stmt_list for a compilation unit.  */
5482
5483 static void
5484 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
5485                         const char *comp_dir)
5486 {
5487   struct attribute *attr;
5488   struct objfile *objfile = cu->objfile;
5489   bfd *abfd = objfile->obfd;
5490
5491   /* Decode line number information if present.  We do this before
5492      processing child DIEs, so that the line header table is available
5493      for DW_AT_decl_file.  */
5494   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
5495   if (attr)
5496     {
5497       unsigned int line_offset = DW_UNSND (attr);
5498       struct line_header *line_header
5499         = dwarf_decode_line_header (line_offset, abfd, cu);
5500
5501       if (line_header)
5502         {
5503           cu->line_header = line_header;
5504           make_cleanup (free_cu_line_header, cu);
5505           dwarf_decode_lines (line_header, comp_dir, abfd, cu, NULL);
5506         }
5507     }
5508 }
5509
5510 /* Process DW_TAG_compile_unit.  */
5511
5512 static void
5513 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
5514 {
5515   struct objfile *objfile = cu->objfile;
5516   struct cleanup *back_to = make_cleanup (null_cleanup, 0);
5517   CORE_ADDR lowpc = ((CORE_ADDR) -1);
5518   CORE_ADDR highpc = ((CORE_ADDR) 0);
5519   struct attribute *attr;
5520   char *name = NULL;
5521   char *comp_dir = NULL;
5522   struct die_info *child_die;
5523   bfd *abfd = objfile->obfd;
5524   CORE_ADDR baseaddr;
5525
5526   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
5527
5528   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
5529
5530   /* If we didn't find a lowpc, set it to highpc to avoid complaints
5531      from finish_block.  */
5532   if (lowpc == ((CORE_ADDR) -1))
5533     lowpc = highpc;
5534   lowpc += baseaddr;
5535   highpc += baseaddr;
5536
5537   find_file_and_directory (die, cu, &name, &comp_dir);
5538
5539   attr = dwarf2_attr (die, DW_AT_language, cu);
5540   if (attr)
5541     {
5542       set_cu_language (DW_UNSND (attr), cu);
5543     }
5544
5545   attr = dwarf2_attr (die, DW_AT_producer, cu);
5546   if (attr)
5547     cu->producer = DW_STRING (attr);
5548
5549   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
5550      standardised yet.  As a workaround for the language detection we fall
5551      back to the DW_AT_producer string.  */
5552   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
5553     cu->language = language_opencl;
5554
5555   /* We assume that we're processing GCC output.  */
5556   processing_gcc_compilation = 2;
5557
5558   processing_has_namespace_info = 0;
5559
5560   start_symtab (name, comp_dir, lowpc);
5561   record_debugformat ("DWARF 2");
5562   record_producer (cu->producer);
5563
5564   initialize_cu_func_list (cu);
5565
5566   handle_DW_AT_stmt_list (die, cu, comp_dir);
5567
5568   /* Process all dies in compilation unit.  */
5569   if (die->child != NULL)
5570     {
5571       child_die = die->child;
5572       while (child_die && child_die->tag)
5573         {
5574           process_die (child_die, cu);
5575           child_die = sibling_die (child_die);
5576         }
5577     }
5578
5579   /* Decode macro information, if present.  Dwarf 2 macro information
5580      refers to information in the line number info statement program
5581      header, so we can only read it if we've read the header
5582      successfully.  */
5583   attr = dwarf2_attr (die, DW_AT_macro_info, cu);
5584   if (attr && cu->line_header)
5585     {
5586       unsigned int macro_offset = DW_UNSND (attr);
5587
5588       dwarf_decode_macros (cu->line_header, macro_offset,
5589                            comp_dir, abfd, cu);
5590     }
5591   do_cleanups (back_to);
5592 }
5593
5594 /* Process DW_TAG_type_unit.
5595    For TUs we want to skip the first top level sibling if it's not the
5596    actual type being defined by this TU.  In this case the first top
5597    level sibling is there to provide context only.  */
5598
5599 static void
5600 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
5601 {
5602   struct objfile *objfile = cu->objfile;
5603   struct cleanup *back_to = make_cleanup (null_cleanup, 0);
5604   CORE_ADDR lowpc;
5605   struct attribute *attr;
5606   char *name = NULL;
5607   char *comp_dir = NULL;
5608   struct die_info *child_die;
5609   bfd *abfd = objfile->obfd;
5610
5611   /* start_symtab needs a low pc, but we don't really have one.
5612      Do what read_file_scope would do in the absence of such info.  */
5613   lowpc = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
5614
5615   /* Find the filename.  Do not use dwarf2_name here, since the filename
5616      is not a source language identifier.  */
5617   attr = dwarf2_attr (die, DW_AT_name, cu);
5618   if (attr)
5619     name = DW_STRING (attr);
5620
5621   attr = dwarf2_attr (die, DW_AT_comp_dir, cu);
5622   if (attr)
5623     comp_dir = DW_STRING (attr);
5624   else if (name != NULL && IS_ABSOLUTE_PATH (name))
5625     {
5626       comp_dir = ldirname (name);
5627       if (comp_dir != NULL)
5628         make_cleanup (xfree, comp_dir);
5629     }
5630
5631   if (name == NULL)
5632     name = "<unknown>";
5633
5634   attr = dwarf2_attr (die, DW_AT_language, cu);
5635   if (attr)
5636     set_cu_language (DW_UNSND (attr), cu);
5637
5638   /* This isn't technically needed today.  It is done for symmetry
5639      with read_file_scope.  */
5640   attr = dwarf2_attr (die, DW_AT_producer, cu);
5641   if (attr)
5642     cu->producer = DW_STRING (attr);
5643
5644   /* We assume that we're processing GCC output.  */
5645   processing_gcc_compilation = 2;
5646
5647   processing_has_namespace_info = 0;
5648
5649   start_symtab (name, comp_dir, lowpc);
5650   record_debugformat ("DWARF 2");
5651   record_producer (cu->producer);
5652
5653   handle_DW_AT_stmt_list (die, cu, comp_dir);
5654
5655   /* Process the dies in the type unit.  */
5656   if (die->child == NULL)
5657     {
5658       dump_die_for_error (die);
5659       error (_("Dwarf Error: Missing children for type unit [in module %s]"),
5660              bfd_get_filename (abfd));
5661     }
5662
5663   child_die = die->child;
5664
5665   while (child_die && child_die->tag)
5666     {
5667       process_die (child_die, cu);
5668
5669       child_die = sibling_die (child_die);
5670     }
5671
5672   do_cleanups (back_to);
5673 }
5674
5675 static void
5676 add_to_cu_func_list (const char *name, CORE_ADDR lowpc, CORE_ADDR highpc,
5677                      struct dwarf2_cu *cu)
5678 {
5679   struct function_range *thisfn;
5680
5681   thisfn = (struct function_range *)
5682     obstack_alloc (&cu->comp_unit_obstack, sizeof (struct function_range));
5683   thisfn->name = name;
5684   thisfn->lowpc = lowpc;
5685   thisfn->highpc = highpc;
5686   thisfn->seen_line = 0;
5687   thisfn->next = NULL;
5688
5689   if (cu->last_fn == NULL)
5690       cu->first_fn = thisfn;
5691   else
5692       cu->last_fn->next = thisfn;
5693
5694   cu->last_fn = thisfn;
5695 }
5696
5697 /* qsort helper for inherit_abstract_dies.  */
5698
5699 static int
5700 unsigned_int_compar (const void *ap, const void *bp)
5701 {
5702   unsigned int a = *(unsigned int *) ap;
5703   unsigned int b = *(unsigned int *) bp;
5704
5705   return (a > b) - (b > a);
5706 }
5707
5708 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
5709    Inherit only the children of the DW_AT_abstract_origin DIE not being
5710    already referenced by DW_AT_abstract_origin from the children of the
5711    current DIE.  */
5712
5713 static void
5714 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
5715 {
5716   struct die_info *child_die;
5717   unsigned die_children_count;
5718   /* CU offsets which were referenced by children of the current DIE.  */
5719   unsigned *offsets;
5720   unsigned *offsets_end, *offsetp;
5721   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
5722   struct die_info *origin_die;
5723   /* Iterator of the ORIGIN_DIE children.  */
5724   struct die_info *origin_child_die;
5725   struct cleanup *cleanups;
5726   struct attribute *attr;
5727   struct dwarf2_cu *origin_cu;
5728   struct pending **origin_previous_list_in_scope;
5729
5730   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
5731   if (!attr)
5732     return;
5733
5734   /* Note that following die references may follow to a die in a
5735      different cu.  */
5736
5737   origin_cu = cu;
5738   origin_die = follow_die_ref (die, attr, &origin_cu);
5739
5740   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
5741      symbols in.  */
5742   origin_previous_list_in_scope = origin_cu->list_in_scope;
5743   origin_cu->list_in_scope = cu->list_in_scope;
5744
5745   if (die->tag != origin_die->tag
5746       && !(die->tag == DW_TAG_inlined_subroutine
5747            && origin_die->tag == DW_TAG_subprogram))
5748     complaint (&symfile_complaints,
5749                _("DIE 0x%x and its abstract origin 0x%x have different tags"),
5750                die->offset, origin_die->offset);
5751
5752   child_die = die->child;
5753   die_children_count = 0;
5754   while (child_die && child_die->tag)
5755     {
5756       child_die = sibling_die (child_die);
5757       die_children_count++;
5758     }
5759   offsets = xmalloc (sizeof (*offsets) * die_children_count);
5760   cleanups = make_cleanup (xfree, offsets);
5761
5762   offsets_end = offsets;
5763   child_die = die->child;
5764   while (child_die && child_die->tag)
5765     {
5766       /* For each CHILD_DIE, find the corresponding child of
5767          ORIGIN_DIE.  If there is more than one layer of
5768          DW_AT_abstract_origin, follow them all; there shouldn't be,
5769          but GCC versions at least through 4.4 generate this (GCC PR
5770          40573).  */
5771       struct die_info *child_origin_die = child_die;
5772       struct dwarf2_cu *child_origin_cu = cu;
5773
5774       while (1)
5775         {
5776           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
5777                               child_origin_cu);
5778           if (attr == NULL)
5779             break;
5780           child_origin_die = follow_die_ref (child_origin_die, attr,
5781                                              &child_origin_cu);
5782         }
5783
5784       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
5785          counterpart may exist.  */
5786       if (child_origin_die != child_die)
5787         {
5788           if (child_die->tag != child_origin_die->tag
5789               && !(child_die->tag == DW_TAG_inlined_subroutine
5790                    && child_origin_die->tag == DW_TAG_subprogram))
5791             complaint (&symfile_complaints,
5792                        _("Child DIE 0x%x and its abstract origin 0x%x have "
5793                          "different tags"), child_die->offset,
5794                        child_origin_die->offset);
5795           if (child_origin_die->parent != origin_die)
5796             complaint (&symfile_complaints,
5797                        _("Child DIE 0x%x and its abstract origin 0x%x have "
5798                          "different parents"), child_die->offset,
5799                        child_origin_die->offset);
5800           else
5801             *offsets_end++ = child_origin_die->offset;
5802         }
5803       child_die = sibling_die (child_die);
5804     }
5805   qsort (offsets, offsets_end - offsets, sizeof (*offsets),
5806          unsigned_int_compar);
5807   for (offsetp = offsets + 1; offsetp < offsets_end; offsetp++)
5808     if (offsetp[-1] == *offsetp)
5809       complaint (&symfile_complaints,
5810                  _("Multiple children of DIE 0x%x refer "
5811                    "to DIE 0x%x as their abstract origin"),
5812                  die->offset, *offsetp);
5813
5814   offsetp = offsets;
5815   origin_child_die = origin_die->child;
5816   while (origin_child_die && origin_child_die->tag)
5817     {
5818       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
5819       while (offsetp < offsets_end && *offsetp < origin_child_die->offset)
5820         offsetp++;
5821       if (offsetp >= offsets_end || *offsetp > origin_child_die->offset)
5822         {
5823           /* Found that ORIGIN_CHILD_DIE is really not referenced.  */
5824           process_die (origin_child_die, origin_cu);
5825         }
5826       origin_child_die = sibling_die (origin_child_die);
5827     }
5828   origin_cu->list_in_scope = origin_previous_list_in_scope;
5829
5830   do_cleanups (cleanups);
5831 }
5832
5833 static void
5834 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
5835 {
5836   struct objfile *objfile = cu->objfile;
5837   struct context_stack *new;
5838   CORE_ADDR lowpc;
5839   CORE_ADDR highpc;
5840   struct die_info *child_die;
5841   struct attribute *attr, *call_line, *call_file;
5842   char *name;
5843   CORE_ADDR baseaddr;
5844   struct block *block;
5845   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
5846   VEC (symbolp) *template_args = NULL;
5847   struct template_symbol *templ_func = NULL;
5848
5849   if (inlined_func)
5850     {
5851       /* If we do not have call site information, we can't show the
5852          caller of this inlined function.  That's too confusing, so
5853          only use the scope for local variables.  */
5854       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
5855       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
5856       if (call_line == NULL || call_file == NULL)
5857         {
5858           read_lexical_block_scope (die, cu);
5859           return;
5860         }
5861     }
5862
5863   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
5864
5865   name = dwarf2_name (die, cu);
5866
5867   /* Ignore functions with missing or empty names.  These are actually
5868      illegal according to the DWARF standard.  */
5869   if (name == NULL)
5870     {
5871       complaint (&symfile_complaints,
5872                  _("missing name for subprogram DIE at %d"), die->offset);
5873       return;
5874     }
5875
5876   /* Ignore functions with missing or invalid low and high pc attributes.  */
5877   if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
5878     {
5879       attr = dwarf2_attr (die, DW_AT_external, cu);
5880       if (!attr || !DW_UNSND (attr))
5881         complaint (&symfile_complaints,
5882                    _("cannot get low and high bounds "
5883                      "for subprogram DIE at %d"),
5884                    die->offset);
5885       return;
5886     }
5887
5888   lowpc += baseaddr;
5889   highpc += baseaddr;
5890
5891   /* Record the function range for dwarf_decode_lines.  */
5892   add_to_cu_func_list (name, lowpc, highpc, cu);
5893
5894   /* If we have any template arguments, then we must allocate a
5895      different sort of symbol.  */
5896   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
5897     {
5898       if (child_die->tag == DW_TAG_template_type_param
5899           || child_die->tag == DW_TAG_template_value_param)
5900         {
5901           templ_func = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5902                                        struct template_symbol);
5903           templ_func->base.is_cplus_template_function = 1;
5904           break;
5905         }
5906     }
5907
5908   new = push_context (0, lowpc);
5909   new->name = new_symbol_full (die, read_type_die (die, cu), cu,
5910                                (struct symbol *) templ_func);
5911
5912   /* If there is a location expression for DW_AT_frame_base, record
5913      it.  */
5914   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
5915   if (attr)
5916     /* FIXME: cagney/2004-01-26: The DW_AT_frame_base's location
5917        expression is being recorded directly in the function's symbol
5918        and not in a separate frame-base object.  I guess this hack is
5919        to avoid adding some sort of frame-base adjunct/annex to the
5920        function's symbol :-(.  The problem with doing this is that it
5921        results in a function symbol with a location expression that
5922        has nothing to do with the location of the function, ouch!  The
5923        relationship should be: a function's symbol has-a frame base; a
5924        frame-base has-a location expression.  */
5925     dwarf2_symbol_mark_computed (attr, new->name, cu);
5926
5927   cu->list_in_scope = &local_symbols;
5928
5929   if (die->child != NULL)
5930     {
5931       child_die = die->child;
5932       while (child_die && child_die->tag)
5933         {
5934           if (child_die->tag == DW_TAG_template_type_param
5935               || child_die->tag == DW_TAG_template_value_param)
5936             {
5937               struct symbol *arg = new_symbol (child_die, NULL, cu);
5938
5939               if (arg != NULL)
5940                 VEC_safe_push (symbolp, template_args, arg);
5941             }
5942           else
5943             process_die (child_die, cu);
5944           child_die = sibling_die (child_die);
5945         }
5946     }
5947
5948   inherit_abstract_dies (die, cu);
5949
5950   /* If we have a DW_AT_specification, we might need to import using
5951      directives from the context of the specification DIE.  See the
5952      comment in determine_prefix.  */
5953   if (cu->language == language_cplus
5954       && dwarf2_attr (die, DW_AT_specification, cu))
5955     {
5956       struct dwarf2_cu *spec_cu = cu;
5957       struct die_info *spec_die = die_specification (die, &spec_cu);
5958
5959       while (spec_die)
5960         {
5961           child_die = spec_die->child;
5962           while (child_die && child_die->tag)
5963             {
5964               if (child_die->tag == DW_TAG_imported_module)
5965                 process_die (child_die, spec_cu);
5966               child_die = sibling_die (child_die);
5967             }
5968
5969           /* In some cases, GCC generates specification DIEs that
5970              themselves contain DW_AT_specification attributes.  */
5971           spec_die = die_specification (spec_die, &spec_cu);
5972         }
5973     }
5974
5975   new = pop_context ();
5976   /* Make a block for the local symbols within.  */
5977   block = finish_block (new->name, &local_symbols, new->old_blocks,
5978                         lowpc, highpc, objfile);
5979
5980   /* For C++, set the block's scope.  */
5981   if (cu->language == language_cplus || cu->language == language_fortran)
5982     cp_set_block_scope (new->name, block, &objfile->objfile_obstack,
5983                         determine_prefix (die, cu),
5984                         processing_has_namespace_info);
5985
5986   /* If we have address ranges, record them.  */
5987   dwarf2_record_block_ranges (die, block, baseaddr, cu);
5988
5989   /* Attach template arguments to function.  */
5990   if (! VEC_empty (symbolp, template_args))
5991     {
5992       gdb_assert (templ_func != NULL);
5993
5994       templ_func->n_template_arguments = VEC_length (symbolp, template_args);
5995       templ_func->template_arguments
5996         = obstack_alloc (&objfile->objfile_obstack,
5997                          (templ_func->n_template_arguments
5998                           * sizeof (struct symbol *)));
5999       memcpy (templ_func->template_arguments,
6000               VEC_address (symbolp, template_args),
6001               (templ_func->n_template_arguments * sizeof (struct symbol *)));
6002       VEC_free (symbolp, template_args);
6003     }
6004
6005   /* In C++, we can have functions nested inside functions (e.g., when
6006      a function declares a class that has methods).  This means that
6007      when we finish processing a function scope, we may need to go
6008      back to building a containing block's symbol lists.  */
6009   local_symbols = new->locals;
6010   param_symbols = new->params;
6011   using_directives = new->using_directives;
6012
6013   /* If we've finished processing a top-level function, subsequent
6014      symbols go in the file symbol list.  */
6015   if (outermost_context_p ())
6016     cu->list_in_scope = &file_symbols;
6017 }
6018
6019 /* Process all the DIES contained within a lexical block scope.  Start
6020    a new scope, process the dies, and then close the scope.  */
6021
6022 static void
6023 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
6024 {
6025   struct objfile *objfile = cu->objfile;
6026   struct context_stack *new;
6027   CORE_ADDR lowpc, highpc;
6028   struct die_info *child_die;
6029   CORE_ADDR baseaddr;
6030
6031   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
6032
6033   /* Ignore blocks with missing or invalid low and high pc attributes.  */
6034   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
6035      as multiple lexical blocks?  Handling children in a sane way would
6036      be nasty.  Might be easier to properly extend generic blocks to
6037      describe ranges.  */
6038   if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
6039     return;
6040   lowpc += baseaddr;
6041   highpc += baseaddr;
6042
6043   push_context (0, lowpc);
6044   if (die->child != NULL)
6045     {
6046       child_die = die->child;
6047       while (child_die && child_die->tag)
6048         {
6049           process_die (child_die, cu);
6050           child_die = sibling_die (child_die);
6051         }
6052     }
6053   new = pop_context ();
6054
6055   if (local_symbols != NULL || using_directives != NULL)
6056     {
6057       struct block *block
6058         = finish_block (0, &local_symbols, new->old_blocks, new->start_addr,
6059                         highpc, objfile);
6060
6061       /* Note that recording ranges after traversing children, as we
6062          do here, means that recording a parent's ranges entails
6063          walking across all its children's ranges as they appear in
6064          the address map, which is quadratic behavior.
6065
6066          It would be nicer to record the parent's ranges before
6067          traversing its children, simply overriding whatever you find
6068          there.  But since we don't even decide whether to create a
6069          block until after we've traversed its children, that's hard
6070          to do.  */
6071       dwarf2_record_block_ranges (die, block, baseaddr, cu);
6072     }
6073   local_symbols = new->locals;
6074   using_directives = new->using_directives;
6075 }
6076
6077 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
6078    Return 1 if the attributes are present and valid, otherwise, return 0.
6079    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
6080
6081 static int
6082 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
6083                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
6084                     struct partial_symtab *ranges_pst)
6085 {
6086   struct objfile *objfile = cu->objfile;
6087   struct comp_unit_head *cu_header = &cu->header;
6088   bfd *obfd = objfile->obfd;
6089   unsigned int addr_size = cu_header->addr_size;
6090   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
6091   /* Base address selection entry.  */
6092   CORE_ADDR base;
6093   int found_base;
6094   unsigned int dummy;
6095   gdb_byte *buffer;
6096   CORE_ADDR marker;
6097   int low_set;
6098   CORE_ADDR low = 0;
6099   CORE_ADDR high = 0;
6100   CORE_ADDR baseaddr;
6101
6102   found_base = cu->base_known;
6103   base = cu->base_address;
6104
6105   dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
6106   if (offset >= dwarf2_per_objfile->ranges.size)
6107     {
6108       complaint (&symfile_complaints,
6109                  _("Offset %d out of bounds for DW_AT_ranges attribute"),
6110                  offset);
6111       return 0;
6112     }
6113   buffer = dwarf2_per_objfile->ranges.buffer + offset;
6114
6115   /* Read in the largest possible address.  */
6116   marker = read_address (obfd, buffer, cu, &dummy);
6117   if ((marker & mask) == mask)
6118     {
6119       /* If we found the largest possible address, then
6120          read the base address.  */
6121       base = read_address (obfd, buffer + addr_size, cu, &dummy);
6122       buffer += 2 * addr_size;
6123       offset += 2 * addr_size;
6124       found_base = 1;
6125     }
6126
6127   low_set = 0;
6128
6129   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
6130
6131   while (1)
6132     {
6133       CORE_ADDR range_beginning, range_end;
6134
6135       range_beginning = read_address (obfd, buffer, cu, &dummy);
6136       buffer += addr_size;
6137       range_end = read_address (obfd, buffer, cu, &dummy);
6138       buffer += addr_size;
6139       offset += 2 * addr_size;
6140
6141       /* An end of list marker is a pair of zero addresses.  */
6142       if (range_beginning == 0 && range_end == 0)
6143         /* Found the end of list entry.  */
6144         break;
6145
6146       /* Each base address selection entry is a pair of 2 values.
6147          The first is the largest possible address, the second is
6148          the base address.  Check for a base address here.  */
6149       if ((range_beginning & mask) == mask)
6150         {
6151           /* If we found the largest possible address, then
6152              read the base address.  */
6153           base = read_address (obfd, buffer + addr_size, cu, &dummy);
6154           found_base = 1;
6155           continue;
6156         }
6157
6158       if (!found_base)
6159         {
6160           /* We have no valid base address for the ranges
6161              data.  */
6162           complaint (&symfile_complaints,
6163                      _("Invalid .debug_ranges data (no base address)"));
6164           return 0;
6165         }
6166
6167       if (range_beginning > range_end)
6168         {
6169           /* Inverted range entries are invalid.  */
6170           complaint (&symfile_complaints,
6171                      _("Invalid .debug_ranges data (inverted range)"));
6172           return 0;
6173         }
6174
6175       /* Empty range entries have no effect.  */
6176       if (range_beginning == range_end)
6177         continue;
6178
6179       range_beginning += base;
6180       range_end += base;
6181
6182       if (ranges_pst != NULL)
6183         addrmap_set_empty (objfile->psymtabs_addrmap,
6184                            range_beginning + baseaddr,
6185                            range_end - 1 + baseaddr,
6186                            ranges_pst);
6187
6188       /* FIXME: This is recording everything as a low-high
6189          segment of consecutive addresses.  We should have a
6190          data structure for discontiguous block ranges
6191          instead.  */
6192       if (! low_set)
6193         {
6194           low = range_beginning;
6195           high = range_end;
6196           low_set = 1;
6197         }
6198       else
6199         {
6200           if (range_beginning < low)
6201             low = range_beginning;
6202           if (range_end > high)
6203             high = range_end;
6204         }
6205     }
6206
6207   if (! low_set)
6208     /* If the first entry is an end-of-list marker, the range
6209        describes an empty scope, i.e. no instructions.  */
6210     return 0;
6211
6212   if (low_return)
6213     *low_return = low;
6214   if (high_return)
6215     *high_return = high;
6216   return 1;
6217 }
6218
6219 /* Get low and high pc attributes from a die.  Return 1 if the attributes
6220    are present and valid, otherwise, return 0.  Return -1 if the range is
6221    discontinuous, i.e. derived from DW_AT_ranges information.  */
6222 static int
6223 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
6224                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
6225                       struct partial_symtab *pst)
6226 {
6227   struct attribute *attr;
6228   CORE_ADDR low = 0;
6229   CORE_ADDR high = 0;
6230   int ret = 0;
6231
6232   attr = dwarf2_attr (die, DW_AT_high_pc, cu);
6233   if (attr)
6234     {
6235       high = DW_ADDR (attr);
6236       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
6237       if (attr)
6238         low = DW_ADDR (attr);
6239       else
6240         /* Found high w/o low attribute.  */
6241         return 0;
6242
6243       /* Found consecutive range of addresses.  */
6244       ret = 1;
6245     }
6246   else
6247     {
6248       attr = dwarf2_attr (die, DW_AT_ranges, cu);
6249       if (attr != NULL)
6250         {
6251           /* Value of the DW_AT_ranges attribute is the offset in the
6252              .debug_ranges section.  */
6253           if (!dwarf2_ranges_read (DW_UNSND (attr), &low, &high, cu, pst))
6254             return 0;
6255           /* Found discontinuous range of addresses.  */
6256           ret = -1;
6257         }
6258     }
6259
6260   /* read_partial_die has also the strict LOW < HIGH requirement.  */
6261   if (high <= low)
6262     return 0;
6263
6264   /* When using the GNU linker, .gnu.linkonce. sections are used to
6265      eliminate duplicate copies of functions and vtables and such.
6266      The linker will arbitrarily choose one and discard the others.
6267      The AT_*_pc values for such functions refer to local labels in
6268      these sections.  If the section from that file was discarded, the
6269      labels are not in the output, so the relocs get a value of 0.
6270      If this is a discarded function, mark the pc bounds as invalid,
6271      so that GDB will ignore it.  */
6272   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
6273     return 0;
6274
6275   *lowpc = low;
6276   *highpc = high;
6277   return ret;
6278 }
6279
6280 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
6281    its low and high PC addresses.  Do nothing if these addresses could not
6282    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
6283    and HIGHPC to the high address if greater than HIGHPC.  */
6284
6285 static void
6286 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
6287                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
6288                                  struct dwarf2_cu *cu)
6289 {
6290   CORE_ADDR low, high;
6291   struct die_info *child = die->child;
6292
6293   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL))
6294     {
6295       *lowpc = min (*lowpc, low);
6296       *highpc = max (*highpc, high);
6297     }
6298
6299   /* If the language does not allow nested subprograms (either inside
6300      subprograms or lexical blocks), we're done.  */
6301   if (cu->language != language_ada)
6302     return;
6303
6304   /* Check all the children of the given DIE.  If it contains nested
6305      subprograms, then check their pc bounds.  Likewise, we need to
6306      check lexical blocks as well, as they may also contain subprogram
6307      definitions.  */
6308   while (child && child->tag)
6309     {
6310       if (child->tag == DW_TAG_subprogram
6311           || child->tag == DW_TAG_lexical_block)
6312         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
6313       child = sibling_die (child);
6314     }
6315 }
6316
6317 /* Get the low and high pc's represented by the scope DIE, and store
6318    them in *LOWPC and *HIGHPC.  If the correct values can't be
6319    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
6320
6321 static void
6322 get_scope_pc_bounds (struct die_info *die,
6323                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
6324                      struct dwarf2_cu *cu)
6325 {
6326   CORE_ADDR best_low = (CORE_ADDR) -1;
6327   CORE_ADDR best_high = (CORE_ADDR) 0;
6328   CORE_ADDR current_low, current_high;
6329
6330   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL))
6331     {
6332       best_low = current_low;
6333       best_high = current_high;
6334     }
6335   else
6336     {
6337       struct die_info *child = die->child;
6338
6339       while (child && child->tag)
6340         {
6341           switch (child->tag) {
6342           case DW_TAG_subprogram:
6343             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
6344             break;
6345           case DW_TAG_namespace:
6346           case DW_TAG_module:
6347             /* FIXME: carlton/2004-01-16: Should we do this for
6348                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
6349                that current GCC's always emit the DIEs corresponding
6350                to definitions of methods of classes as children of a
6351                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
6352                the DIEs giving the declarations, which could be
6353                anywhere).  But I don't see any reason why the
6354                standards says that they have to be there.  */
6355             get_scope_pc_bounds (child, &current_low, &current_high, cu);
6356
6357             if (current_low != ((CORE_ADDR) -1))
6358               {
6359                 best_low = min (best_low, current_low);
6360                 best_high = max (best_high, current_high);
6361               }
6362             break;
6363           default:
6364             /* Ignore.  */
6365             break;
6366           }
6367
6368           child = sibling_die (child);
6369         }
6370     }
6371
6372   *lowpc = best_low;
6373   *highpc = best_high;
6374 }
6375
6376 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
6377    in DIE.  */
6378 static void
6379 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
6380                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
6381 {
6382   struct attribute *attr;
6383
6384   attr = dwarf2_attr (die, DW_AT_high_pc, cu);
6385   if (attr)
6386     {
6387       CORE_ADDR high = DW_ADDR (attr);
6388
6389       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
6390       if (attr)
6391         {
6392           CORE_ADDR low = DW_ADDR (attr);
6393
6394           record_block_range (block, baseaddr + low, baseaddr + high - 1);
6395         }
6396     }
6397
6398   attr = dwarf2_attr (die, DW_AT_ranges, cu);
6399   if (attr)
6400     {
6401       bfd *obfd = cu->objfile->obfd;
6402
6403       /* The value of the DW_AT_ranges attribute is the offset of the
6404          address range list in the .debug_ranges section.  */
6405       unsigned long offset = DW_UNSND (attr);
6406       gdb_byte *buffer = dwarf2_per_objfile->ranges.buffer + offset;
6407
6408       /* For some target architectures, but not others, the
6409          read_address function sign-extends the addresses it returns.
6410          To recognize base address selection entries, we need a
6411          mask.  */
6412       unsigned int addr_size = cu->header.addr_size;
6413       CORE_ADDR base_select_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
6414
6415       /* The base address, to which the next pair is relative.  Note
6416          that this 'base' is a DWARF concept: most entries in a range
6417          list are relative, to reduce the number of relocs against the
6418          debugging information.  This is separate from this function's
6419          'baseaddr' argument, which GDB uses to relocate debugging
6420          information from a shared library based on the address at
6421          which the library was loaded.  */
6422       CORE_ADDR base = cu->base_address;
6423       int base_known = cu->base_known;
6424
6425       gdb_assert (dwarf2_per_objfile->ranges.readin);
6426       if (offset >= dwarf2_per_objfile->ranges.size)
6427         {
6428           complaint (&symfile_complaints,
6429                      _("Offset %lu out of bounds for DW_AT_ranges attribute"),
6430                      offset);
6431           return;
6432         }
6433
6434       for (;;)
6435         {
6436           unsigned int bytes_read;
6437           CORE_ADDR start, end;
6438
6439           start = read_address (obfd, buffer, cu, &bytes_read);
6440           buffer += bytes_read;
6441           end = read_address (obfd, buffer, cu, &bytes_read);
6442           buffer += bytes_read;
6443
6444           /* Did we find the end of the range list?  */
6445           if (start == 0 && end == 0)
6446             break;
6447
6448           /* Did we find a base address selection entry?  */
6449           else if ((start & base_select_mask) == base_select_mask)
6450             {
6451               base = end;
6452               base_known = 1;
6453             }
6454
6455           /* We found an ordinary address range.  */
6456           else
6457             {
6458               if (!base_known)
6459                 {
6460                   complaint (&symfile_complaints,
6461                              _("Invalid .debug_ranges data "
6462                                "(no base address)"));
6463                   return;
6464                 }
6465
6466               if (start > end)
6467                 {
6468                   /* Inverted range entries are invalid.  */
6469                   complaint (&symfile_complaints,
6470                              _("Invalid .debug_ranges data "
6471                                "(inverted range)"));
6472                   return;
6473                 }
6474
6475               /* Empty range entries have no effect.  */
6476               if (start == end)
6477                 continue;
6478
6479               record_block_range (block,
6480                                   baseaddr + base + start,
6481                                   baseaddr + base + end - 1);
6482             }
6483         }
6484     }
6485 }
6486
6487 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
6488    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
6489    during 4.6.0 experimental.  */
6490
6491 static int
6492 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
6493 {
6494   const char *cs;
6495   int major, minor, release;
6496
6497   if (cu->producer == NULL)
6498     {
6499       /* For unknown compilers expect their behavior is DWARF version
6500          compliant.
6501
6502          GCC started to support .debug_types sections by -gdwarf-4 since
6503          gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
6504          for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
6505          combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
6506          interpreted incorrectly by GDB now - GCC PR debug/48229.  */
6507
6508       return 0;
6509     }
6510
6511   /* Skip any identifier after "GNU " - such as "C++" or "Java".  */
6512
6513   if (strncmp (cu->producer, "GNU ", strlen ("GNU ")) != 0)
6514     {
6515       /* For non-GCC compilers expect their behavior is DWARF version
6516          compliant.  */
6517
6518       return 0;
6519     }
6520   cs = &cu->producer[strlen ("GNU ")];
6521   while (*cs && !isdigit (*cs))
6522     cs++;
6523   if (sscanf (cs, "%d.%d.%d", &major, &minor, &release) != 3)
6524     {
6525       /* Not recognized as GCC.  */
6526
6527       return 0;
6528     }
6529
6530   return major < 4 || (major == 4 && minor < 6);
6531 }
6532
6533 /* Return the default accessibility type if it is not overriden by
6534    DW_AT_accessibility.  */
6535
6536 static enum dwarf_access_attribute
6537 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
6538 {
6539   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
6540     {
6541       /* The default DWARF 2 accessibility for members is public, the default
6542          accessibility for inheritance is private.  */
6543
6544       if (die->tag != DW_TAG_inheritance)
6545         return DW_ACCESS_public;
6546       else
6547         return DW_ACCESS_private;
6548     }
6549   else
6550     {
6551       /* DWARF 3+ defines the default accessibility a different way.  The same
6552          rules apply now for DW_TAG_inheritance as for the members and it only
6553          depends on the container kind.  */
6554
6555       if (die->parent->tag == DW_TAG_class_type)
6556         return DW_ACCESS_private;
6557       else
6558         return DW_ACCESS_public;
6559     }
6560 }
6561
6562 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
6563    offset.  If the attribute was not found return 0, otherwise return
6564    1.  If it was found but could not properly be handled, set *OFFSET
6565    to 0.  */
6566
6567 static int
6568 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
6569                              LONGEST *offset)
6570 {
6571   struct attribute *attr;
6572
6573   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
6574   if (attr != NULL)
6575     {
6576       *offset = 0;
6577
6578       /* Note that we do not check for a section offset first here.
6579          This is because DW_AT_data_member_location is new in DWARF 4,
6580          so if we see it, we can assume that a constant form is really
6581          a constant and not a section offset.  */
6582       if (attr_form_is_constant (attr))
6583         *offset = dwarf2_get_attr_constant_value (attr, 0);
6584       else if (attr_form_is_section_offset (attr))
6585         dwarf2_complex_location_expr_complaint ();
6586       else if (attr_form_is_block (attr))
6587         *offset = decode_locdesc (DW_BLOCK (attr), cu);
6588       else
6589         dwarf2_complex_location_expr_complaint ();
6590
6591       return 1;
6592     }
6593
6594   return 0;
6595 }
6596
6597 /* Add an aggregate field to the field list.  */
6598
6599 static void
6600 dwarf2_add_field (struct field_info *fip, struct die_info *die,
6601                   struct dwarf2_cu *cu)
6602 {
6603   struct objfile *objfile = cu->objfile;
6604   struct gdbarch *gdbarch = get_objfile_arch (objfile);
6605   struct nextfield *new_field;
6606   struct attribute *attr;
6607   struct field *fp;
6608   char *fieldname = "";
6609
6610   /* Allocate a new field list entry and link it in.  */
6611   new_field = (struct nextfield *) xmalloc (sizeof (struct nextfield));
6612   make_cleanup (xfree, new_field);
6613   memset (new_field, 0, sizeof (struct nextfield));
6614
6615   if (die->tag == DW_TAG_inheritance)
6616     {
6617       new_field->next = fip->baseclasses;
6618       fip->baseclasses = new_field;
6619     }
6620   else
6621     {
6622       new_field->next = fip->fields;
6623       fip->fields = new_field;
6624     }
6625   fip->nfields++;
6626
6627   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
6628   if (attr)
6629     new_field->accessibility = DW_UNSND (attr);
6630   else
6631     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
6632   if (new_field->accessibility != DW_ACCESS_public)
6633     fip->non_public_fields = 1;
6634
6635   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
6636   if (attr)
6637     new_field->virtuality = DW_UNSND (attr);
6638   else
6639     new_field->virtuality = DW_VIRTUALITY_none;
6640
6641   fp = &new_field->field;
6642
6643   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
6644     {
6645       LONGEST offset;
6646
6647       /* Data member other than a C++ static data member.  */
6648
6649       /* Get type of field.  */
6650       fp->type = die_type (die, cu);
6651
6652       SET_FIELD_BITPOS (*fp, 0);
6653
6654       /* Get bit size of field (zero if none).  */
6655       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
6656       if (attr)
6657         {
6658           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
6659         }
6660       else
6661         {
6662           FIELD_BITSIZE (*fp) = 0;
6663         }
6664
6665       /* Get bit offset of field.  */
6666       if (handle_data_member_location (die, cu, &offset))
6667         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
6668       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
6669       if (attr)
6670         {
6671           if (gdbarch_bits_big_endian (gdbarch))
6672             {
6673               /* For big endian bits, the DW_AT_bit_offset gives the
6674                  additional bit offset from the MSB of the containing
6675                  anonymous object to the MSB of the field.  We don't
6676                  have to do anything special since we don't need to
6677                  know the size of the anonymous object.  */
6678               FIELD_BITPOS (*fp) += DW_UNSND (attr);
6679             }
6680           else
6681             {
6682               /* For little endian bits, compute the bit offset to the
6683                  MSB of the anonymous object, subtract off the number of
6684                  bits from the MSB of the field to the MSB of the
6685                  object, and then subtract off the number of bits of
6686                  the field itself.  The result is the bit offset of
6687                  the LSB of the field.  */
6688               int anonymous_size;
6689               int bit_offset = DW_UNSND (attr);
6690
6691               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
6692               if (attr)
6693                 {
6694                   /* The size of the anonymous object containing
6695                      the bit field is explicit, so use the
6696                      indicated size (in bytes).  */
6697                   anonymous_size = DW_UNSND (attr);
6698                 }
6699               else
6700                 {
6701                   /* The size of the anonymous object containing
6702                      the bit field must be inferred from the type
6703                      attribute of the data member containing the
6704                      bit field.  */
6705                   anonymous_size = TYPE_LENGTH (fp->type);
6706                 }
6707               FIELD_BITPOS (*fp) += anonymous_size * bits_per_byte
6708                 - bit_offset - FIELD_BITSIZE (*fp);
6709             }
6710         }
6711
6712       /* Get name of field.  */
6713       fieldname = dwarf2_name (die, cu);
6714       if (fieldname == NULL)
6715         fieldname = "";
6716
6717       /* The name is already allocated along with this objfile, so we don't
6718          need to duplicate it for the type.  */
6719       fp->name = fieldname;
6720
6721       /* Change accessibility for artificial fields (e.g. virtual table
6722          pointer or virtual base class pointer) to private.  */
6723       if (dwarf2_attr (die, DW_AT_artificial, cu))
6724         {
6725           FIELD_ARTIFICIAL (*fp) = 1;
6726           new_field->accessibility = DW_ACCESS_private;
6727           fip->non_public_fields = 1;
6728         }
6729     }
6730   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
6731     {
6732       /* C++ static member.  */
6733
6734       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
6735          is a declaration, but all versions of G++ as of this writing
6736          (so through at least 3.2.1) incorrectly generate
6737          DW_TAG_variable tags.  */
6738
6739       const char *physname;
6740
6741       /* Get name of field.  */
6742       fieldname = dwarf2_name (die, cu);
6743       if (fieldname == NULL)
6744         return;
6745
6746       attr = dwarf2_attr (die, DW_AT_const_value, cu);
6747       if (attr
6748           /* Only create a symbol if this is an external value.
6749              new_symbol checks this and puts the value in the global symbol
6750              table, which we want.  If it is not external, new_symbol
6751              will try to put the value in cu->list_in_scope which is wrong.  */
6752           && dwarf2_flag_true_p (die, DW_AT_external, cu))
6753         {
6754           /* A static const member, not much different than an enum as far as
6755              we're concerned, except that we can support more types.  */
6756           new_symbol (die, NULL, cu);
6757         }
6758
6759       /* Get physical name.  */
6760       physname = dwarf2_physname (fieldname, die, cu);
6761
6762       /* The name is already allocated along with this objfile, so we don't
6763          need to duplicate it for the type.  */
6764       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
6765       FIELD_TYPE (*fp) = die_type (die, cu);
6766       FIELD_NAME (*fp) = fieldname;
6767     }
6768   else if (die->tag == DW_TAG_inheritance)
6769     {
6770       LONGEST offset;
6771
6772       /* C++ base class field.  */
6773       if (handle_data_member_location (die, cu, &offset))
6774         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
6775       FIELD_BITSIZE (*fp) = 0;
6776       FIELD_TYPE (*fp) = die_type (die, cu);
6777       FIELD_NAME (*fp) = type_name_no_tag (fp->type);
6778       fip->nbaseclasses++;
6779     }
6780 }
6781
6782 /* Add a typedef defined in the scope of the FIP's class.  */
6783
6784 static void
6785 dwarf2_add_typedef (struct field_info *fip, struct die_info *die,
6786                     struct dwarf2_cu *cu)
6787 {
6788   struct objfile *objfile = cu->objfile;
6789   struct typedef_field_list *new_field;
6790   struct attribute *attr;
6791   struct typedef_field *fp;
6792   char *fieldname = "";
6793
6794   /* Allocate a new field list entry and link it in.  */
6795   new_field = xzalloc (sizeof (*new_field));
6796   make_cleanup (xfree, new_field);
6797
6798   gdb_assert (die->tag == DW_TAG_typedef);
6799
6800   fp = &new_field->field;
6801
6802   /* Get name of field.  */
6803   fp->name = dwarf2_name (die, cu);
6804   if (fp->name == NULL)
6805     return;
6806
6807   fp->type = read_type_die (die, cu);
6808
6809   new_field->next = fip->typedef_field_list;
6810   fip->typedef_field_list = new_field;
6811   fip->typedef_field_list_count++;
6812 }
6813
6814 /* Create the vector of fields, and attach it to the type.  */
6815
6816 static void
6817 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
6818                               struct dwarf2_cu *cu)
6819 {
6820   int nfields = fip->nfields;
6821
6822   /* Record the field count, allocate space for the array of fields,
6823      and create blank accessibility bitfields if necessary.  */
6824   TYPE_NFIELDS (type) = nfields;
6825   TYPE_FIELDS (type) = (struct field *)
6826     TYPE_ALLOC (type, sizeof (struct field) * nfields);
6827   memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
6828
6829   if (fip->non_public_fields && cu->language != language_ada)
6830     {
6831       ALLOCATE_CPLUS_STRUCT_TYPE (type);
6832
6833       TYPE_FIELD_PRIVATE_BITS (type) =
6834         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
6835       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
6836
6837       TYPE_FIELD_PROTECTED_BITS (type) =
6838         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
6839       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
6840
6841       TYPE_FIELD_IGNORE_BITS (type) =
6842         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
6843       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
6844     }
6845
6846   /* If the type has baseclasses, allocate and clear a bit vector for
6847      TYPE_FIELD_VIRTUAL_BITS.  */
6848   if (fip->nbaseclasses && cu->language != language_ada)
6849     {
6850       int num_bytes = B_BYTES (fip->nbaseclasses);
6851       unsigned char *pointer;
6852
6853       ALLOCATE_CPLUS_STRUCT_TYPE (type);
6854       pointer = TYPE_ALLOC (type, num_bytes);
6855       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
6856       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->nbaseclasses);
6857       TYPE_N_BASECLASSES (type) = fip->nbaseclasses;
6858     }
6859
6860   /* Copy the saved-up fields into the field vector.  Start from the head of
6861      the list, adding to the tail of the field array, so that they end up in
6862      the same order in the array in which they were added to the list.  */
6863   while (nfields-- > 0)
6864     {
6865       struct nextfield *fieldp;
6866
6867       if (fip->fields)
6868         {
6869           fieldp = fip->fields;
6870           fip->fields = fieldp->next;
6871         }
6872       else
6873         {
6874           fieldp = fip->baseclasses;
6875           fip->baseclasses = fieldp->next;
6876         }
6877
6878       TYPE_FIELD (type, nfields) = fieldp->field;
6879       switch (fieldp->accessibility)
6880         {
6881         case DW_ACCESS_private:
6882           if (cu->language != language_ada)
6883             SET_TYPE_FIELD_PRIVATE (type, nfields);
6884           break;
6885
6886         case DW_ACCESS_protected:
6887           if (cu->language != language_ada)
6888             SET_TYPE_FIELD_PROTECTED (type, nfields);
6889           break;
6890
6891         case DW_ACCESS_public:
6892           break;
6893
6894         default:
6895           /* Unknown accessibility.  Complain and treat it as public.  */
6896           {
6897             complaint (&symfile_complaints, _("unsupported accessibility %d"),
6898                        fieldp->accessibility);
6899           }
6900           break;
6901         }
6902       if (nfields < fip->nbaseclasses)
6903         {
6904           switch (fieldp->virtuality)
6905             {
6906             case DW_VIRTUALITY_virtual:
6907             case DW_VIRTUALITY_pure_virtual:
6908               if (cu->language == language_ada)
6909                 error (_("unexpected virtuality in component of Ada type"));
6910               SET_TYPE_FIELD_VIRTUAL (type, nfields);
6911               break;
6912             }
6913         }
6914     }
6915 }
6916
6917 /* Add a member function to the proper fieldlist.  */
6918
6919 static void
6920 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
6921                       struct type *type, struct dwarf2_cu *cu)
6922 {
6923   struct objfile *objfile = cu->objfile;
6924   struct attribute *attr;
6925   struct fnfieldlist *flp;
6926   int i;
6927   struct fn_field *fnp;
6928   char *fieldname;
6929   struct nextfnfield *new_fnfield;
6930   struct type *this_type;
6931   enum dwarf_access_attribute accessibility;
6932
6933   if (cu->language == language_ada)
6934     error (_("unexpected member function in Ada type"));
6935
6936   /* Get name of member function.  */
6937   fieldname = dwarf2_name (die, cu);
6938   if (fieldname == NULL)
6939     return;
6940
6941   /* Look up member function name in fieldlist.  */
6942   for (i = 0; i < fip->nfnfields; i++)
6943     {
6944       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
6945         break;
6946     }
6947
6948   /* Create new list element if necessary.  */
6949   if (i < fip->nfnfields)
6950     flp = &fip->fnfieldlists[i];
6951   else
6952     {
6953       if ((fip->nfnfields % DW_FIELD_ALLOC_CHUNK) == 0)
6954         {
6955           fip->fnfieldlists = (struct fnfieldlist *)
6956             xrealloc (fip->fnfieldlists,
6957                       (fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
6958                       * sizeof (struct fnfieldlist));
6959           if (fip->nfnfields == 0)
6960             make_cleanup (free_current_contents, &fip->fnfieldlists);
6961         }
6962       flp = &fip->fnfieldlists[fip->nfnfields];
6963       flp->name = fieldname;
6964       flp->length = 0;
6965       flp->head = NULL;
6966       i = fip->nfnfields++;
6967     }
6968
6969   /* Create a new member function field and chain it to the field list
6970      entry.  */
6971   new_fnfield = (struct nextfnfield *) xmalloc (sizeof (struct nextfnfield));
6972   make_cleanup (xfree, new_fnfield);
6973   memset (new_fnfield, 0, sizeof (struct nextfnfield));
6974   new_fnfield->next = flp->head;
6975   flp->head = new_fnfield;
6976   flp->length++;
6977
6978   /* Fill in the member function field info.  */
6979   fnp = &new_fnfield->fnfield;
6980
6981   /* Delay processing of the physname until later.  */
6982   if (cu->language == language_cplus || cu->language == language_java)
6983     {
6984       add_to_method_list (type, i, flp->length - 1, fieldname,
6985                           die, cu);
6986     }
6987   else
6988     {
6989       const char *physname = dwarf2_physname (fieldname, die, cu);
6990       fnp->physname = physname ? physname : "";
6991     }
6992
6993   fnp->type = alloc_type (objfile);
6994   this_type = read_type_die (die, cu);
6995   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
6996     {
6997       int nparams = TYPE_NFIELDS (this_type);
6998
6999       /* TYPE is the domain of this method, and THIS_TYPE is the type
7000            of the method itself (TYPE_CODE_METHOD).  */
7001       smash_to_method_type (fnp->type, type,
7002                             TYPE_TARGET_TYPE (this_type),
7003                             TYPE_FIELDS (this_type),
7004                             TYPE_NFIELDS (this_type),
7005                             TYPE_VARARGS (this_type));
7006
7007       /* Handle static member functions.
7008          Dwarf2 has no clean way to discern C++ static and non-static
7009          member functions.  G++ helps GDB by marking the first
7010          parameter for non-static member functions (which is the this
7011          pointer) as artificial.  We obtain this information from
7012          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
7013       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
7014         fnp->voffset = VOFFSET_STATIC;
7015     }
7016   else
7017     complaint (&symfile_complaints, _("member function type missing for '%s'"),
7018                dwarf2_full_name (fieldname, die, cu));
7019
7020   /* Get fcontext from DW_AT_containing_type if present.  */
7021   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
7022     fnp->fcontext = die_containing_type (die, cu);
7023
7024   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
7025      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
7026
7027   /* Get accessibility.  */
7028   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
7029   if (attr)
7030     accessibility = DW_UNSND (attr);
7031   else
7032     accessibility = dwarf2_default_access_attribute (die, cu);
7033   switch (accessibility)
7034     {
7035     case DW_ACCESS_private:
7036       fnp->is_private = 1;
7037       break;
7038     case DW_ACCESS_protected:
7039       fnp->is_protected = 1;
7040       break;
7041     }
7042
7043   /* Check for artificial methods.  */
7044   attr = dwarf2_attr (die, DW_AT_artificial, cu);
7045   if (attr && DW_UNSND (attr) != 0)
7046     fnp->is_artificial = 1;
7047
7048   /* Get index in virtual function table if it is a virtual member
7049      function.  For older versions of GCC, this is an offset in the
7050      appropriate virtual table, as specified by DW_AT_containing_type.
7051      For everyone else, it is an expression to be evaluated relative
7052      to the object address.  */
7053
7054   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
7055   if (attr)
7056     {
7057       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
7058         {
7059           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
7060             {
7061               /* Old-style GCC.  */
7062               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
7063             }
7064           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
7065                    || (DW_BLOCK (attr)->size > 1
7066                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
7067                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
7068             {
7069               struct dwarf_block blk;
7070               int offset;
7071
7072               offset = (DW_BLOCK (attr)->data[0] == DW_OP_deref
7073                         ? 1 : 2);
7074               blk.size = DW_BLOCK (attr)->size - offset;
7075               blk.data = DW_BLOCK (attr)->data + offset;
7076               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
7077               if ((fnp->voffset % cu->header.addr_size) != 0)
7078                 dwarf2_complex_location_expr_complaint ();
7079               else
7080                 fnp->voffset /= cu->header.addr_size;
7081               fnp->voffset += 2;
7082             }
7083           else
7084             dwarf2_complex_location_expr_complaint ();
7085
7086           if (!fnp->fcontext)
7087             fnp->fcontext = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
7088         }
7089       else if (attr_form_is_section_offset (attr))
7090         {
7091           dwarf2_complex_location_expr_complaint ();
7092         }
7093       else
7094         {
7095           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
7096                                                  fieldname);
7097         }
7098     }
7099   else
7100     {
7101       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
7102       if (attr && DW_UNSND (attr))
7103         {
7104           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
7105           complaint (&symfile_complaints,
7106                      _("Member function \"%s\" (offset %d) is virtual "
7107                        "but the vtable offset is not specified"),
7108                      fieldname, die->offset);
7109           ALLOCATE_CPLUS_STRUCT_TYPE (type);
7110           TYPE_CPLUS_DYNAMIC (type) = 1;
7111         }
7112     }
7113 }
7114
7115 /* Create the vector of member function fields, and attach it to the type.  */
7116
7117 static void
7118 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
7119                                  struct dwarf2_cu *cu)
7120 {
7121   struct fnfieldlist *flp;
7122   int total_length = 0;
7123   int i;
7124
7125   if (cu->language == language_ada)
7126     error (_("unexpected member functions in Ada type"));
7127
7128   ALLOCATE_CPLUS_STRUCT_TYPE (type);
7129   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
7130     TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields);
7131
7132   for (i = 0, flp = fip->fnfieldlists; i < fip->nfnfields; i++, flp++)
7133     {
7134       struct nextfnfield *nfp = flp->head;
7135       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
7136       int k;
7137
7138       TYPE_FN_FIELDLIST_NAME (type, i) = flp->name;
7139       TYPE_FN_FIELDLIST_LENGTH (type, i) = flp->length;
7140       fn_flp->fn_fields = (struct fn_field *)
7141         TYPE_ALLOC (type, sizeof (struct fn_field) * flp->length);
7142       for (k = flp->length; (k--, nfp); nfp = nfp->next)
7143         fn_flp->fn_fields[k] = nfp->fnfield;
7144
7145       total_length += flp->length;
7146     }
7147
7148   TYPE_NFN_FIELDS (type) = fip->nfnfields;
7149   TYPE_NFN_FIELDS_TOTAL (type) = total_length;
7150 }
7151
7152 /* Returns non-zero if NAME is the name of a vtable member in CU's
7153    language, zero otherwise.  */
7154 static int
7155 is_vtable_name (const char *name, struct dwarf2_cu *cu)
7156 {
7157   static const char vptr[] = "_vptr";
7158   static const char vtable[] = "vtable";
7159
7160   /* Look for the C++ and Java forms of the vtable.  */
7161   if ((cu->language == language_java
7162        && strncmp (name, vtable, sizeof (vtable) - 1) == 0)
7163        || (strncmp (name, vptr, sizeof (vptr) - 1) == 0
7164        && is_cplus_marker (name[sizeof (vptr) - 1])))
7165     return 1;
7166
7167   return 0;
7168 }
7169
7170 /* GCC outputs unnamed structures that are really pointers to member
7171    functions, with the ABI-specified layout.  If TYPE describes
7172    such a structure, smash it into a member function type.
7173
7174    GCC shouldn't do this; it should just output pointer to member DIEs.
7175    This is GCC PR debug/28767.  */
7176
7177 static void
7178 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
7179 {
7180   struct type *pfn_type, *domain_type, *new_type;
7181
7182   /* Check for a structure with no name and two children.  */
7183   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
7184     return;
7185
7186   /* Check for __pfn and __delta members.  */
7187   if (TYPE_FIELD_NAME (type, 0) == NULL
7188       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
7189       || TYPE_FIELD_NAME (type, 1) == NULL
7190       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
7191     return;
7192
7193   /* Find the type of the method.  */
7194   pfn_type = TYPE_FIELD_TYPE (type, 0);
7195   if (pfn_type == NULL
7196       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
7197       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
7198     return;
7199
7200   /* Look for the "this" argument.  */
7201   pfn_type = TYPE_TARGET_TYPE (pfn_type);
7202   if (TYPE_NFIELDS (pfn_type) == 0
7203       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
7204       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
7205     return;
7206
7207   domain_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
7208   new_type = alloc_type (objfile);
7209   smash_to_method_type (new_type, domain_type, TYPE_TARGET_TYPE (pfn_type),
7210                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
7211                         TYPE_VARARGS (pfn_type));
7212   smash_to_methodptr_type (type, new_type);
7213 }
7214
7215 /* Called when we find the DIE that starts a structure or union scope
7216    (definition) to create a type for the structure or union.  Fill in
7217    the type's name and general properties; the members will not be
7218    processed until process_structure_type.
7219
7220    NOTE: we need to call these functions regardless of whether or not the
7221    DIE has a DW_AT_name attribute, since it might be an anonymous
7222    structure or union.  This gets the type entered into our set of
7223    user defined types.
7224
7225    However, if the structure is incomplete (an opaque struct/union)
7226    then suppress creating a symbol table entry for it since gdb only
7227    wants to find the one with the complete definition.  Note that if
7228    it is complete, we just call new_symbol, which does it's own
7229    checking about whether the struct/union is anonymous or not (and
7230    suppresses creating a symbol table entry itself).  */
7231
7232 static struct type *
7233 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
7234 {
7235   struct objfile *objfile = cu->objfile;
7236   struct type *type;
7237   struct attribute *attr;
7238   char *name;
7239
7240   /* If the definition of this type lives in .debug_types, read that type.
7241      Don't follow DW_AT_specification though, that will take us back up
7242      the chain and we want to go down.  */
7243   attr = dwarf2_attr_no_follow (die, DW_AT_signature, cu);
7244   if (attr)
7245     {
7246       struct dwarf2_cu *type_cu = cu;
7247       struct die_info *type_die = follow_die_ref_or_sig (die, attr, &type_cu);
7248
7249       /* We could just recurse on read_structure_type, but we need to call
7250          get_die_type to ensure only one type for this DIE is created.
7251          This is important, for example, because for c++ classes we need
7252          TYPE_NAME set which is only done by new_symbol.  Blech.  */
7253       type = read_type_die (type_die, type_cu);
7254
7255       /* TYPE_CU may not be the same as CU.
7256          Ensure TYPE is recorded in CU's type_hash table.  */
7257       return set_die_type (die, type, cu);
7258     }
7259
7260   type = alloc_type (objfile);
7261   INIT_CPLUS_SPECIFIC (type);
7262
7263   name = dwarf2_name (die, cu);
7264   if (name != NULL)
7265     {
7266       if (cu->language == language_cplus
7267           || cu->language == language_java)
7268         {
7269           char *full_name = (char *) dwarf2_full_name (name, die, cu);
7270
7271           /* dwarf2_full_name might have already finished building the DIE's
7272              type.  If so, there is no need to continue.  */
7273           if (get_die_type (die, cu) != NULL)
7274             return get_die_type (die, cu);
7275
7276           TYPE_TAG_NAME (type) = full_name;
7277           if (die->tag == DW_TAG_structure_type
7278               || die->tag == DW_TAG_class_type)
7279             TYPE_NAME (type) = TYPE_TAG_NAME (type);
7280         }
7281       else
7282         {
7283           /* The name is already allocated along with this objfile, so
7284              we don't need to duplicate it for the type.  */
7285           TYPE_TAG_NAME (type) = (char *) name;
7286           if (die->tag == DW_TAG_class_type)
7287             TYPE_NAME (type) = TYPE_TAG_NAME (type);
7288         }
7289     }
7290
7291   if (die->tag == DW_TAG_structure_type)
7292     {
7293       TYPE_CODE (type) = TYPE_CODE_STRUCT;
7294     }
7295   else if (die->tag == DW_TAG_union_type)
7296     {
7297       TYPE_CODE (type) = TYPE_CODE_UNION;
7298     }
7299   else
7300     {
7301       TYPE_CODE (type) = TYPE_CODE_CLASS;
7302     }
7303
7304   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
7305     TYPE_DECLARED_CLASS (type) = 1;
7306
7307   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
7308   if (attr)
7309     {
7310       TYPE_LENGTH (type) = DW_UNSND (attr);
7311     }
7312   else
7313     {
7314       TYPE_LENGTH (type) = 0;
7315     }
7316
7317   TYPE_STUB_SUPPORTED (type) = 1;
7318   if (die_is_declaration (die, cu))
7319     TYPE_STUB (type) = 1;
7320   else if (attr == NULL && die->child == NULL
7321            && producer_is_realview (cu->producer))
7322     /* RealView does not output the required DW_AT_declaration
7323        on incomplete types.  */
7324     TYPE_STUB (type) = 1;
7325
7326   /* We need to add the type field to the die immediately so we don't
7327      infinitely recurse when dealing with pointers to the structure
7328      type within the structure itself.  */
7329   set_die_type (die, type, cu);
7330
7331   /* set_die_type should be already done.  */
7332   set_descriptive_type (type, die, cu);
7333
7334   return type;
7335 }
7336
7337 /* Finish creating a structure or union type, including filling in
7338    its members and creating a symbol for it.  */
7339
7340 static void
7341 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
7342 {
7343   struct objfile *objfile = cu->objfile;
7344   struct die_info *child_die = die->child;
7345   struct type *type;
7346
7347   type = get_die_type (die, cu);
7348   if (type == NULL)
7349     type = read_structure_type (die, cu);
7350
7351   if (die->child != NULL && ! die_is_declaration (die, cu))
7352     {
7353       struct field_info fi;
7354       struct die_info *child_die;
7355       VEC (symbolp) *template_args = NULL;
7356       struct cleanup *back_to = make_cleanup (null_cleanup, 0);
7357
7358       memset (&fi, 0, sizeof (struct field_info));
7359
7360       child_die = die->child;
7361
7362       while (child_die && child_die->tag)
7363         {
7364           if (child_die->tag == DW_TAG_member
7365               || child_die->tag == DW_TAG_variable)
7366             {
7367               /* NOTE: carlton/2002-11-05: A C++ static data member
7368                  should be a DW_TAG_member that is a declaration, but
7369                  all versions of G++ as of this writing (so through at
7370                  least 3.2.1) incorrectly generate DW_TAG_variable
7371                  tags for them instead.  */
7372               dwarf2_add_field (&fi, child_die, cu);
7373             }
7374           else if (child_die->tag == DW_TAG_subprogram)
7375             {
7376               /* C++ member function.  */
7377               dwarf2_add_member_fn (&fi, child_die, type, cu);
7378             }
7379           else if (child_die->tag == DW_TAG_inheritance)
7380             {
7381               /* C++ base class field.  */
7382               dwarf2_add_field (&fi, child_die, cu);
7383             }
7384           else if (child_die->tag == DW_TAG_typedef)
7385             dwarf2_add_typedef (&fi, child_die, cu);
7386           else if (child_die->tag == DW_TAG_template_type_param
7387                    || child_die->tag == DW_TAG_template_value_param)
7388             {
7389               struct symbol *arg = new_symbol (child_die, NULL, cu);
7390
7391               if (arg != NULL)
7392                 VEC_safe_push (symbolp, template_args, arg);
7393             }
7394
7395           child_die = sibling_die (child_die);
7396         }
7397
7398       /* Attach template arguments to type.  */
7399       if (! VEC_empty (symbolp, template_args))
7400         {
7401           ALLOCATE_CPLUS_STRUCT_TYPE (type);
7402           TYPE_N_TEMPLATE_ARGUMENTS (type)
7403             = VEC_length (symbolp, template_args);
7404           TYPE_TEMPLATE_ARGUMENTS (type)
7405             = obstack_alloc (&objfile->objfile_obstack,
7406                              (TYPE_N_TEMPLATE_ARGUMENTS (type)
7407                               * sizeof (struct symbol *)));
7408           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
7409                   VEC_address (symbolp, template_args),
7410                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
7411                    * sizeof (struct symbol *)));
7412           VEC_free (symbolp, template_args);
7413         }
7414
7415       /* Attach fields and member functions to the type.  */
7416       if (fi.nfields)
7417         dwarf2_attach_fields_to_type (&fi, type, cu);
7418       if (fi.nfnfields)
7419         {
7420           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
7421
7422           /* Get the type which refers to the base class (possibly this
7423              class itself) which contains the vtable pointer for the current
7424              class from the DW_AT_containing_type attribute.  This use of
7425              DW_AT_containing_type is a GNU extension.  */
7426
7427           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
7428             {
7429               struct type *t = die_containing_type (die, cu);
7430
7431               TYPE_VPTR_BASETYPE (type) = t;
7432               if (type == t)
7433                 {
7434                   int i;
7435
7436                   /* Our own class provides vtbl ptr.  */
7437                   for (i = TYPE_NFIELDS (t) - 1;
7438                        i >= TYPE_N_BASECLASSES (t);
7439                        --i)
7440                     {
7441                       char *fieldname = TYPE_FIELD_NAME (t, i);
7442
7443                       if (is_vtable_name (fieldname, cu))
7444                         {
7445                           TYPE_VPTR_FIELDNO (type) = i;
7446                           break;
7447                         }
7448                     }
7449
7450                   /* Complain if virtual function table field not found.  */
7451                   if (i < TYPE_N_BASECLASSES (t))
7452                     complaint (&symfile_complaints,
7453                                _("virtual function table pointer "
7454                                  "not found when defining class '%s'"),
7455                                TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
7456                                "");
7457                 }
7458               else
7459                 {
7460                   TYPE_VPTR_FIELDNO (type) = TYPE_VPTR_FIELDNO (t);
7461                 }
7462             }
7463           else if (cu->producer
7464                    && strncmp (cu->producer,
7465                                "IBM(R) XL C/C++ Advanced Edition", 32) == 0)
7466             {
7467               /* The IBM XLC compiler does not provide direct indication
7468                  of the containing type, but the vtable pointer is
7469                  always named __vfp.  */
7470
7471               int i;
7472
7473               for (i = TYPE_NFIELDS (type) - 1;
7474                    i >= TYPE_N_BASECLASSES (type);
7475                    --i)
7476                 {
7477                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
7478                     {
7479                       TYPE_VPTR_FIELDNO (type) = i;
7480                       TYPE_VPTR_BASETYPE (type) = type;
7481                       break;
7482                     }
7483                 }
7484             }
7485         }
7486
7487       /* Copy fi.typedef_field_list linked list elements content into the
7488          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
7489       if (fi.typedef_field_list)
7490         {
7491           int i = fi.typedef_field_list_count;
7492
7493           ALLOCATE_CPLUS_STRUCT_TYPE (type);
7494           TYPE_TYPEDEF_FIELD_ARRAY (type)
7495             = TYPE_ALLOC (type, sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * i);
7496           TYPE_TYPEDEF_FIELD_COUNT (type) = i;
7497
7498           /* Reverse the list order to keep the debug info elements order.  */
7499           while (--i >= 0)
7500             {
7501               struct typedef_field *dest, *src;
7502
7503               dest = &TYPE_TYPEDEF_FIELD (type, i);
7504               src = &fi.typedef_field_list->field;
7505               fi.typedef_field_list = fi.typedef_field_list->next;
7506               *dest = *src;
7507             }
7508         }
7509
7510       do_cleanups (back_to);
7511
7512       if (HAVE_CPLUS_STRUCT (type))
7513         TYPE_CPLUS_REALLY_JAVA (type) = cu->language == language_java;
7514     }
7515
7516   quirk_gcc_member_function_pointer (type, cu->objfile);
7517
7518   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
7519      snapshots) has been known to create a die giving a declaration
7520      for a class that has, as a child, a die giving a definition for a
7521      nested class.  So we have to process our children even if the
7522      current die is a declaration.  Normally, of course, a declaration
7523      won't have any children at all.  */
7524
7525   while (child_die != NULL && child_die->tag)
7526     {
7527       if (child_die->tag == DW_TAG_member
7528           || child_die->tag == DW_TAG_variable
7529           || child_die->tag == DW_TAG_inheritance
7530           || child_die->tag == DW_TAG_template_value_param
7531           || child_die->tag == DW_TAG_template_type_param)
7532         {
7533           /* Do nothing.  */
7534         }
7535       else
7536         process_die (child_die, cu);
7537
7538       child_die = sibling_die (child_die);
7539     }
7540
7541   /* Do not consider external references.  According to the DWARF standard,
7542      these DIEs are identified by the fact that they have no byte_size
7543      attribute, and a declaration attribute.  */
7544   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
7545       || !die_is_declaration (die, cu))
7546     new_symbol (die, type, cu);
7547 }
7548
7549 /* Given a DW_AT_enumeration_type die, set its type.  We do not
7550    complete the type's fields yet, or create any symbols.  */
7551
7552 static struct type *
7553 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
7554 {
7555   struct objfile *objfile = cu->objfile;
7556   struct type *type;
7557   struct attribute *attr;
7558   const char *name;
7559
7560   /* If the definition of this type lives in .debug_types, read that type.
7561      Don't follow DW_AT_specification though, that will take us back up
7562      the chain and we want to go down.  */
7563   attr = dwarf2_attr_no_follow (die, DW_AT_signature, cu);
7564   if (attr)
7565     {
7566       struct dwarf2_cu *type_cu = cu;
7567       struct die_info *type_die = follow_die_ref_or_sig (die, attr, &type_cu);
7568
7569       type = read_type_die (type_die, type_cu);
7570
7571       /* TYPE_CU may not be the same as CU.
7572          Ensure TYPE is recorded in CU's type_hash table.  */
7573       return set_die_type (die, type, cu);
7574     }
7575
7576   type = alloc_type (objfile);
7577
7578   TYPE_CODE (type) = TYPE_CODE_ENUM;
7579   name = dwarf2_full_name (NULL, die, cu);
7580   if (name != NULL)
7581     TYPE_TAG_NAME (type) = (char *) name;
7582
7583   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
7584   if (attr)
7585     {
7586       TYPE_LENGTH (type) = DW_UNSND (attr);
7587     }
7588   else
7589     {
7590       TYPE_LENGTH (type) = 0;
7591     }
7592
7593   /* The enumeration DIE can be incomplete.  In Ada, any type can be
7594      declared as private in the package spec, and then defined only
7595      inside the package body.  Such types are known as Taft Amendment
7596      Types.  When another package uses such a type, an incomplete DIE
7597      may be generated by the compiler.  */
7598   if (die_is_declaration (die, cu))
7599     TYPE_STUB (type) = 1;
7600
7601   return set_die_type (die, type, cu);
7602 }
7603
7604 /* Given a pointer to a die which begins an enumeration, process all
7605    the dies that define the members of the enumeration, and create the
7606    symbol for the enumeration type.
7607
7608    NOTE: We reverse the order of the element list.  */
7609
7610 static void
7611 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
7612 {
7613   struct type *this_type;
7614
7615   this_type = get_die_type (die, cu);
7616   if (this_type == NULL)
7617     this_type = read_enumeration_type (die, cu);
7618
7619   if (die->child != NULL)
7620     {
7621       struct die_info *child_die;
7622       struct symbol *sym;
7623       struct field *fields = NULL;
7624       int num_fields = 0;
7625       int unsigned_enum = 1;
7626       char *name;
7627
7628       child_die = die->child;
7629       while (child_die && child_die->tag)
7630         {
7631           if (child_die->tag != DW_TAG_enumerator)
7632             {
7633               process_die (child_die, cu);
7634             }
7635           else
7636             {
7637               name = dwarf2_name (child_die, cu);
7638               if (name)
7639                 {
7640                   sym = new_symbol (child_die, this_type, cu);
7641                   if (SYMBOL_VALUE (sym) < 0)
7642                     unsigned_enum = 0;
7643
7644                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
7645                     {
7646                       fields = (struct field *)
7647                         xrealloc (fields,
7648                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
7649                                   * sizeof (struct field));
7650                     }
7651
7652                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
7653                   FIELD_TYPE (fields[num_fields]) = NULL;
7654                   SET_FIELD_BITPOS (fields[num_fields], SYMBOL_VALUE (sym));
7655                   FIELD_BITSIZE (fields[num_fields]) = 0;
7656
7657                   num_fields++;
7658                 }
7659             }
7660
7661           child_die = sibling_die (child_die);
7662         }
7663
7664       if (num_fields)
7665         {
7666           TYPE_NFIELDS (this_type) = num_fields;
7667           TYPE_FIELDS (this_type) = (struct field *)
7668             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
7669           memcpy (TYPE_FIELDS (this_type), fields,
7670                   sizeof (struct field) * num_fields);
7671           xfree (fields);
7672         }
7673       if (unsigned_enum)
7674         TYPE_UNSIGNED (this_type) = 1;
7675     }
7676
7677   new_symbol (die, this_type, cu);
7678 }
7679
7680 /* Extract all information from a DW_TAG_array_type DIE and put it in
7681    the DIE's type field.  For now, this only handles one dimensional
7682    arrays.  */
7683
7684 static struct type *
7685 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
7686 {
7687   struct objfile *objfile = cu->objfile;
7688   struct die_info *child_die;
7689   struct type *type;
7690   struct type *element_type, *range_type, *index_type;
7691   struct type **range_types = NULL;
7692   struct attribute *attr;
7693   int ndim = 0;
7694   struct cleanup *back_to;
7695   char *name;
7696
7697   element_type = die_type (die, cu);
7698
7699   /* The die_type call above may have already set the type for this DIE.  */
7700   type = get_die_type (die, cu);
7701   if (type)
7702     return type;
7703
7704   /* Irix 6.2 native cc creates array types without children for
7705      arrays with unspecified length.  */
7706   if (die->child == NULL)
7707     {
7708       index_type = objfile_type (objfile)->builtin_int;
7709       range_type = create_range_type (NULL, index_type, 0, -1);
7710       type = create_array_type (NULL, element_type, range_type);
7711       return set_die_type (die, type, cu);
7712     }
7713
7714   back_to = make_cleanup (null_cleanup, NULL);
7715   child_die = die->child;
7716   while (child_die && child_die->tag)
7717     {
7718       if (child_die->tag == DW_TAG_subrange_type)
7719         {
7720           struct type *child_type = read_type_die (child_die, cu);
7721
7722           if (child_type != NULL)
7723             {
7724               /* The range type was succesfully read.  Save it for the
7725                  array type creation.  */
7726               if ((ndim % DW_FIELD_ALLOC_CHUNK) == 0)
7727                 {
7728                   range_types = (struct type **)
7729                     xrealloc (range_types, (ndim + DW_FIELD_ALLOC_CHUNK)
7730                               * sizeof (struct type *));
7731                   if (ndim == 0)
7732                     make_cleanup (free_current_contents, &range_types);
7733                 }
7734               range_types[ndim++] = child_type;
7735             }
7736         }
7737       child_die = sibling_die (child_die);
7738     }
7739
7740   /* Dwarf2 dimensions are output from left to right, create the
7741      necessary array types in backwards order.  */
7742
7743   type = element_type;
7744
7745   if (read_array_order (die, cu) == DW_ORD_col_major)
7746     {
7747       int i = 0;
7748
7749       while (i < ndim)
7750         type = create_array_type (NULL, type, range_types[i++]);
7751     }
7752   else
7753     {
7754       while (ndim-- > 0)
7755         type = create_array_type (NULL, type, range_types[ndim]);
7756     }
7757
7758   /* Understand Dwarf2 support for vector types (like they occur on
7759      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
7760      array type.  This is not part of the Dwarf2/3 standard yet, but a
7761      custom vendor extension.  The main difference between a regular
7762      array and the vector variant is that vectors are passed by value
7763      to functions.  */
7764   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
7765   if (attr)
7766     make_vector_type (type);
7767
7768   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
7769      implementation may choose to implement triple vectors using this
7770      attribute.  */
7771   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
7772   if (attr)
7773     {
7774       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
7775         TYPE_LENGTH (type) = DW_UNSND (attr);
7776       else
7777         complaint (&symfile_complaints,
7778                    _("DW_AT_byte_size for array type smaller "
7779                      "than the total size of elements"));
7780     }
7781
7782   name = dwarf2_name (die, cu);
7783   if (name)
7784     TYPE_NAME (type) = name;
7785
7786   /* Install the type in the die.  */
7787   set_die_type (die, type, cu);
7788
7789   /* set_die_type should be already done.  */
7790   set_descriptive_type (type, die, cu);
7791
7792   do_cleanups (back_to);
7793
7794   return type;
7795 }
7796
7797 static enum dwarf_array_dim_ordering
7798 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
7799 {
7800   struct attribute *attr;
7801
7802   attr = dwarf2_attr (die, DW_AT_ordering, cu);
7803
7804   if (attr) return DW_SND (attr);
7805
7806   /* GNU F77 is a special case, as at 08/2004 array type info is the
7807      opposite order to the dwarf2 specification, but data is still
7808      laid out as per normal fortran.
7809
7810      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
7811      version checking.  */
7812
7813   if (cu->language == language_fortran
7814       && cu->producer && strstr (cu->producer, "GNU F77"))
7815     {
7816       return DW_ORD_row_major;
7817     }
7818
7819   switch (cu->language_defn->la_array_ordering)
7820     {
7821     case array_column_major:
7822       return DW_ORD_col_major;
7823     case array_row_major:
7824     default:
7825       return DW_ORD_row_major;
7826     };
7827 }
7828
7829 /* Extract all information from a DW_TAG_set_type DIE and put it in
7830    the DIE's type field.  */
7831
7832 static struct type *
7833 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
7834 {
7835   struct type *domain_type, *set_type;
7836   struct attribute *attr;
7837
7838   domain_type = die_type (die, cu);
7839
7840   /* The die_type call above may have already set the type for this DIE.  */
7841   set_type = get_die_type (die, cu);
7842   if (set_type)
7843     return set_type;
7844
7845   set_type = create_set_type (NULL, domain_type);
7846
7847   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
7848   if (attr)
7849     TYPE_LENGTH (set_type) = DW_UNSND (attr);
7850
7851   return set_die_type (die, set_type, cu);
7852 }
7853
7854 /* First cut: install each common block member as a global variable.  */
7855
7856 static void
7857 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
7858 {
7859   struct die_info *child_die;
7860   struct attribute *attr;
7861   struct symbol *sym;
7862   CORE_ADDR base = (CORE_ADDR) 0;
7863
7864   attr = dwarf2_attr (die, DW_AT_location, cu);
7865   if (attr)
7866     {
7867       /* Support the .debug_loc offsets.  */
7868       if (attr_form_is_block (attr))
7869         {
7870           base = decode_locdesc (DW_BLOCK (attr), cu);
7871         }
7872       else if (attr_form_is_section_offset (attr))
7873         {
7874           dwarf2_complex_location_expr_complaint ();
7875         }
7876       else
7877         {
7878           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
7879                                                  "common block member");
7880         }
7881     }
7882   if (die->child != NULL)
7883     {
7884       child_die = die->child;
7885       while (child_die && child_die->tag)
7886         {
7887           LONGEST offset;
7888
7889           sym = new_symbol (child_die, NULL, cu);
7890           if (sym != NULL
7891               && handle_data_member_location (child_die, cu, &offset))
7892             {
7893               SYMBOL_VALUE_ADDRESS (sym) = base + offset;
7894               add_symbol_to_list (sym, &global_symbols);
7895             }
7896           child_die = sibling_die (child_die);
7897         }
7898     }
7899 }
7900
7901 /* Create a type for a C++ namespace.  */
7902
7903 static struct type *
7904 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
7905 {
7906   struct objfile *objfile = cu->objfile;
7907   const char *previous_prefix, *name;
7908   int is_anonymous;
7909   struct type *type;
7910
7911   /* For extensions, reuse the type of the original namespace.  */
7912   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
7913     {
7914       struct die_info *ext_die;
7915       struct dwarf2_cu *ext_cu = cu;
7916
7917       ext_die = dwarf2_extension (die, &ext_cu);
7918       type = read_type_die (ext_die, ext_cu);
7919
7920       /* EXT_CU may not be the same as CU.
7921          Ensure TYPE is recorded in CU's type_hash table.  */
7922       return set_die_type (die, type, cu);
7923     }
7924
7925   name = namespace_name (die, &is_anonymous, cu);
7926
7927   /* Now build the name of the current namespace.  */
7928
7929   previous_prefix = determine_prefix (die, cu);
7930   if (previous_prefix[0] != '\0')
7931     name = typename_concat (&objfile->objfile_obstack,
7932                             previous_prefix, name, 0, cu);
7933
7934   /* Create the type.  */
7935   type = init_type (TYPE_CODE_NAMESPACE, 0, 0, NULL,
7936                     objfile);
7937   TYPE_NAME (type) = (char *) name;
7938   TYPE_TAG_NAME (type) = TYPE_NAME (type);
7939
7940   return set_die_type (die, type, cu);
7941 }
7942
7943 /* Read a C++ namespace.  */
7944
7945 static void
7946 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
7947 {
7948   struct objfile *objfile = cu->objfile;
7949   int is_anonymous;
7950
7951   /* Add a symbol associated to this if we haven't seen the namespace
7952      before.  Also, add a using directive if it's an anonymous
7953      namespace.  */
7954
7955   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
7956     {
7957       struct type *type;
7958
7959       type = read_type_die (die, cu);
7960       new_symbol (die, type, cu);
7961
7962       namespace_name (die, &is_anonymous, cu);
7963       if (is_anonymous)
7964         {
7965           const char *previous_prefix = determine_prefix (die, cu);
7966
7967           cp_add_using_directive (previous_prefix, TYPE_NAME (type), NULL,
7968                                   NULL, NULL, &objfile->objfile_obstack);
7969         }
7970     }
7971
7972   if (die->child != NULL)
7973     {
7974       struct die_info *child_die = die->child;
7975
7976       while (child_die && child_die->tag)
7977         {
7978           process_die (child_die, cu);
7979           child_die = sibling_die (child_die);
7980         }
7981     }
7982 }
7983
7984 /* Read a Fortran module as type.  This DIE can be only a declaration used for
7985    imported module.  Still we need that type as local Fortran "use ... only"
7986    declaration imports depend on the created type in determine_prefix.  */
7987
7988 static struct type *
7989 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
7990 {
7991   struct objfile *objfile = cu->objfile;
7992   char *module_name;
7993   struct type *type;
7994
7995   module_name = dwarf2_name (die, cu);
7996   if (!module_name)
7997     complaint (&symfile_complaints,
7998                _("DW_TAG_module has no name, offset 0x%x"),
7999                die->offset);
8000   type = init_type (TYPE_CODE_MODULE, 0, 0, module_name, objfile);
8001
8002   /* determine_prefix uses TYPE_TAG_NAME.  */
8003   TYPE_TAG_NAME (type) = TYPE_NAME (type);
8004
8005   return set_die_type (die, type, cu);
8006 }
8007
8008 /* Read a Fortran module.  */
8009
8010 static void
8011 read_module (struct die_info *die, struct dwarf2_cu *cu)
8012 {
8013   struct die_info *child_die = die->child;
8014
8015   while (child_die && child_die->tag)
8016     {
8017       process_die (child_die, cu);
8018       child_die = sibling_die (child_die);
8019     }
8020 }
8021
8022 /* Return the name of the namespace represented by DIE.  Set
8023    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
8024    namespace.  */
8025
8026 static const char *
8027 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
8028 {
8029   struct die_info *current_die;
8030   const char *name = NULL;
8031
8032   /* Loop through the extensions until we find a name.  */
8033
8034   for (current_die = die;
8035        current_die != NULL;
8036        current_die = dwarf2_extension (die, &cu))
8037     {
8038       name = dwarf2_name (current_die, cu);
8039       if (name != NULL)
8040         break;
8041     }
8042
8043   /* Is it an anonymous namespace?  */
8044
8045   *is_anonymous = (name == NULL);
8046   if (*is_anonymous)
8047     name = CP_ANONYMOUS_NAMESPACE_STR;
8048
8049   return name;
8050 }
8051
8052 /* Extract all information from a DW_TAG_pointer_type DIE and add to
8053    the user defined type vector.  */
8054
8055 static struct type *
8056 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
8057 {
8058   struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
8059   struct comp_unit_head *cu_header = &cu->header;
8060   struct type *type;
8061   struct attribute *attr_byte_size;
8062   struct attribute *attr_address_class;
8063   int byte_size, addr_class;
8064   struct type *target_type;
8065
8066   target_type = die_type (die, cu);
8067
8068   /* The die_type call above may have already set the type for this DIE.  */
8069   type = get_die_type (die, cu);
8070   if (type)
8071     return type;
8072
8073   type = lookup_pointer_type (target_type);
8074
8075   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
8076   if (attr_byte_size)
8077     byte_size = DW_UNSND (attr_byte_size);
8078   else
8079     byte_size = cu_header->addr_size;
8080
8081   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
8082   if (attr_address_class)
8083     addr_class = DW_UNSND (attr_address_class);
8084   else
8085     addr_class = DW_ADDR_none;
8086
8087   /* If the pointer size or address class is different than the
8088      default, create a type variant marked as such and set the
8089      length accordingly.  */
8090   if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
8091     {
8092       if (gdbarch_address_class_type_flags_p (gdbarch))
8093         {
8094           int type_flags;
8095
8096           type_flags = gdbarch_address_class_type_flags
8097                          (gdbarch, byte_size, addr_class);
8098           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
8099                       == 0);
8100           type = make_type_with_address_space (type, type_flags);
8101         }
8102       else if (TYPE_LENGTH (type) != byte_size)
8103         {
8104           complaint (&symfile_complaints,
8105                      _("invalid pointer size %d"), byte_size);
8106         }
8107       else
8108         {
8109           /* Should we also complain about unhandled address classes?  */
8110         }
8111     }
8112
8113   TYPE_LENGTH (type) = byte_size;
8114   return set_die_type (die, type, cu);
8115 }
8116
8117 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
8118    the user defined type vector.  */
8119
8120 static struct type *
8121 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
8122 {
8123   struct type *type;
8124   struct type *to_type;
8125   struct type *domain;
8126
8127   to_type = die_type (die, cu);
8128   domain = die_containing_type (die, cu);
8129
8130   /* The calls above may have already set the type for this DIE.  */
8131   type = get_die_type (die, cu);
8132   if (type)
8133     return type;
8134
8135   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
8136     type = lookup_methodptr_type (to_type);
8137   else
8138     type = lookup_memberptr_type (to_type, domain);
8139
8140   return set_die_type (die, type, cu);
8141 }
8142
8143 /* Extract all information from a DW_TAG_reference_type DIE and add to
8144    the user defined type vector.  */
8145
8146 static struct type *
8147 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu)
8148 {
8149   struct comp_unit_head *cu_header = &cu->header;
8150   struct type *type, *target_type;
8151   struct attribute *attr;
8152
8153   target_type = die_type (die, cu);
8154
8155   /* The die_type call above may have already set the type for this DIE.  */
8156   type = get_die_type (die, cu);
8157   if (type)
8158     return type;
8159
8160   type = lookup_reference_type (target_type);
8161   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
8162   if (attr)
8163     {
8164       TYPE_LENGTH (type) = DW_UNSND (attr);
8165     }
8166   else
8167     {
8168       TYPE_LENGTH (type) = cu_header->addr_size;
8169     }
8170   return set_die_type (die, type, cu);
8171 }
8172
8173 static struct type *
8174 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
8175 {
8176   struct type *base_type, *cv_type;
8177
8178   base_type = die_type (die, cu);
8179
8180   /* The die_type call above may have already set the type for this DIE.  */
8181   cv_type = get_die_type (die, cu);
8182   if (cv_type)
8183     return cv_type;
8184
8185   /* In case the const qualifier is applied to an array type, the element type
8186      is so qualified, not the array type (section 6.7.3 of C99).  */
8187   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
8188     {
8189       struct type *el_type, *inner_array;
8190
8191       base_type = copy_type (base_type);
8192       inner_array = base_type;
8193
8194       while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
8195         {
8196           TYPE_TARGET_TYPE (inner_array) =
8197             copy_type (TYPE_TARGET_TYPE (inner_array));
8198           inner_array = TYPE_TARGET_TYPE (inner_array);
8199         }
8200
8201       el_type = TYPE_TARGET_TYPE (inner_array);
8202       TYPE_TARGET_TYPE (inner_array) =
8203         make_cv_type (1, TYPE_VOLATILE (el_type), el_type, NULL);
8204
8205       return set_die_type (die, base_type, cu);
8206     }
8207
8208   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
8209   return set_die_type (die, cv_type, cu);
8210 }
8211
8212 static struct type *
8213 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
8214 {
8215   struct type *base_type, *cv_type;
8216
8217   base_type = die_type (die, cu);
8218
8219   /* The die_type call above may have already set the type for this DIE.  */
8220   cv_type = get_die_type (die, cu);
8221   if (cv_type)
8222     return cv_type;
8223
8224   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
8225   return set_die_type (die, cv_type, cu);
8226 }
8227
8228 /* Extract all information from a DW_TAG_string_type DIE and add to
8229    the user defined type vector.  It isn't really a user defined type,
8230    but it behaves like one, with other DIE's using an AT_user_def_type
8231    attribute to reference it.  */
8232
8233 static struct type *
8234 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
8235 {
8236   struct objfile *objfile = cu->objfile;
8237   struct gdbarch *gdbarch = get_objfile_arch (objfile);
8238   struct type *type, *range_type, *index_type, *char_type;
8239   struct attribute *attr;
8240   unsigned int length;
8241
8242   attr = dwarf2_attr (die, DW_AT_string_length, cu);
8243   if (attr)
8244     {
8245       length = DW_UNSND (attr);
8246     }
8247   else
8248     {
8249       /* Check for the DW_AT_byte_size attribute.  */
8250       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
8251       if (attr)
8252         {
8253           length = DW_UNSND (attr);
8254         }
8255       else
8256         {
8257           length = 1;
8258         }
8259     }
8260
8261   index_type = objfile_type (objfile)->builtin_int;
8262   range_type = create_range_type (NULL, index_type, 1, length);
8263   char_type = language_string_char_type (cu->language_defn, gdbarch);
8264   type = create_string_type (NULL, char_type, range_type);
8265
8266   return set_die_type (die, type, cu);
8267 }
8268
8269 /* Handle DIES due to C code like:
8270
8271    struct foo
8272    {
8273    int (*funcp)(int a, long l);
8274    int b;
8275    };
8276
8277    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
8278
8279 static struct type *
8280 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
8281 {
8282   struct type *type;            /* Type that this function returns.  */
8283   struct type *ftype;           /* Function that returns above type.  */
8284   struct attribute *attr;
8285
8286   type = die_type (die, cu);
8287
8288   /* The die_type call above may have already set the type for this DIE.  */
8289   ftype = get_die_type (die, cu);
8290   if (ftype)
8291     return ftype;
8292
8293   ftype = lookup_function_type (type);
8294
8295   /* All functions in C++, Pascal and Java have prototypes.  */
8296   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
8297   if ((attr && (DW_UNSND (attr) != 0))
8298       || cu->language == language_cplus
8299       || cu->language == language_java
8300       || cu->language == language_pascal)
8301     TYPE_PROTOTYPED (ftype) = 1;
8302   else if (producer_is_realview (cu->producer))
8303     /* RealView does not emit DW_AT_prototyped.  We can not
8304        distinguish prototyped and unprototyped functions; default to
8305        prototyped, since that is more common in modern code (and
8306        RealView warns about unprototyped functions).  */
8307     TYPE_PROTOTYPED (ftype) = 1;
8308
8309   /* Store the calling convention in the type if it's available in
8310      the subroutine die.  Otherwise set the calling convention to
8311      the default value DW_CC_normal.  */
8312   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
8313   if (attr)
8314     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
8315   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
8316     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
8317   else
8318     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
8319
8320   /* We need to add the subroutine type to the die immediately so
8321      we don't infinitely recurse when dealing with parameters
8322      declared as the same subroutine type.  */
8323   set_die_type (die, ftype, cu);
8324
8325   if (die->child != NULL)
8326     {
8327       struct type *void_type = objfile_type (cu->objfile)->builtin_void;
8328       struct die_info *child_die;
8329       int nparams, iparams;
8330
8331       /* Count the number of parameters.
8332          FIXME: GDB currently ignores vararg functions, but knows about
8333          vararg member functions.  */
8334       nparams = 0;
8335       child_die = die->child;
8336       while (child_die && child_die->tag)
8337         {
8338           if (child_die->tag == DW_TAG_formal_parameter)
8339             nparams++;
8340           else if (child_die->tag == DW_TAG_unspecified_parameters)
8341             TYPE_VARARGS (ftype) = 1;
8342           child_die = sibling_die (child_die);
8343         }
8344
8345       /* Allocate storage for parameters and fill them in.  */
8346       TYPE_NFIELDS (ftype) = nparams;
8347       TYPE_FIELDS (ftype) = (struct field *)
8348         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
8349
8350       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
8351          even if we error out during the parameters reading below.  */
8352       for (iparams = 0; iparams < nparams; iparams++)
8353         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
8354
8355       iparams = 0;
8356       child_die = die->child;
8357       while (child_die && child_die->tag)
8358         {
8359           if (child_die->tag == DW_TAG_formal_parameter)
8360             {
8361               struct type *arg_type;
8362
8363               /* DWARF version 2 has no clean way to discern C++
8364                  static and non-static member functions.  G++ helps
8365                  GDB by marking the first parameter for non-static
8366                  member functions (which is the this pointer) as
8367                  artificial.  We pass this information to
8368                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
8369
8370                  DWARF version 3 added DW_AT_object_pointer, which GCC
8371                  4.5 does not yet generate.  */
8372               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
8373               if (attr)
8374                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
8375               else
8376                 {
8377                   TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
8378
8379                   /* GCC/43521: In java, the formal parameter
8380                      "this" is sometimes not marked with DW_AT_artificial.  */
8381                   if (cu->language == language_java)
8382                     {
8383                       const char *name = dwarf2_name (child_die, cu);
8384
8385                       if (name && !strcmp (name, "this"))
8386                         TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 1;
8387                     }
8388                 }
8389               arg_type = die_type (child_die, cu);
8390
8391               /* RealView does not mark THIS as const, which the testsuite
8392                  expects.  GCC marks THIS as const in method definitions,
8393                  but not in the class specifications (GCC PR 43053).  */
8394               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
8395                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
8396                 {
8397                   int is_this = 0;
8398                   struct dwarf2_cu *arg_cu = cu;
8399                   const char *name = dwarf2_name (child_die, cu);
8400
8401                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
8402                   if (attr)
8403                     {
8404                       /* If the compiler emits this, use it.  */
8405                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
8406                         is_this = 1;
8407                     }
8408                   else if (name && strcmp (name, "this") == 0)
8409                     /* Function definitions will have the argument names.  */
8410                     is_this = 1;
8411                   else if (name == NULL && iparams == 0)
8412                     /* Declarations may not have the names, so like
8413                        elsewhere in GDB, assume an artificial first
8414                        argument is "this".  */
8415                     is_this = 1;
8416
8417                   if (is_this)
8418                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
8419                                              arg_type, 0);
8420                 }
8421
8422               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
8423               iparams++;
8424             }
8425           child_die = sibling_die (child_die);
8426         }
8427     }
8428
8429   return ftype;
8430 }
8431
8432 static struct type *
8433 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
8434 {
8435   struct objfile *objfile = cu->objfile;
8436   const char *name = NULL;
8437   struct type *this_type;
8438
8439   name = dwarf2_full_name (NULL, die, cu);
8440   this_type = init_type (TYPE_CODE_TYPEDEF, 0,
8441                          TYPE_FLAG_TARGET_STUB, NULL, objfile);
8442   TYPE_NAME (this_type) = (char *) name;
8443   set_die_type (die, this_type, cu);
8444   TYPE_TARGET_TYPE (this_type) = die_type (die, cu);
8445   return this_type;
8446 }
8447
8448 /* Find a representation of a given base type and install
8449    it in the TYPE field of the die.  */
8450
8451 static struct type *
8452 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
8453 {
8454   struct objfile *objfile = cu->objfile;
8455   struct type *type;
8456   struct attribute *attr;
8457   int encoding = 0, size = 0;
8458   char *name;
8459   enum type_code code = TYPE_CODE_INT;
8460   int type_flags = 0;
8461   struct type *target_type = NULL;
8462
8463   attr = dwarf2_attr (die, DW_AT_encoding, cu);
8464   if (attr)
8465     {
8466       encoding = DW_UNSND (attr);
8467     }
8468   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
8469   if (attr)
8470     {
8471       size = DW_UNSND (attr);
8472     }
8473   name = dwarf2_name (die, cu);
8474   if (!name)
8475     {
8476       complaint (&symfile_complaints,
8477                  _("DW_AT_name missing from DW_TAG_base_type"));
8478     }
8479
8480   switch (encoding)
8481     {
8482       case DW_ATE_address:
8483         /* Turn DW_ATE_address into a void * pointer.  */
8484         code = TYPE_CODE_PTR;
8485         type_flags |= TYPE_FLAG_UNSIGNED;
8486         target_type = init_type (TYPE_CODE_VOID, 1, 0, NULL, objfile);
8487         break;
8488       case DW_ATE_boolean:
8489         code = TYPE_CODE_BOOL;
8490         type_flags |= TYPE_FLAG_UNSIGNED;
8491         break;
8492       case DW_ATE_complex_float:
8493         code = TYPE_CODE_COMPLEX;
8494         target_type = init_type (TYPE_CODE_FLT, size / 2, 0, NULL, objfile);
8495         break;
8496       case DW_ATE_decimal_float:
8497         code = TYPE_CODE_DECFLOAT;
8498         break;
8499       case DW_ATE_float:
8500         code = TYPE_CODE_FLT;
8501         break;
8502       case DW_ATE_signed:
8503         break;
8504       case DW_ATE_unsigned:
8505         type_flags |= TYPE_FLAG_UNSIGNED;
8506         if (cu->language == language_fortran
8507             && name
8508             && strncmp (name, "character(", sizeof ("character(") - 1) == 0)
8509           code = TYPE_CODE_CHAR;
8510         break;
8511       case DW_ATE_signed_char:
8512         if (cu->language == language_ada || cu->language == language_m2
8513             || cu->language == language_pascal
8514             || cu->language == language_fortran)
8515           code = TYPE_CODE_CHAR;
8516         break;
8517       case DW_ATE_unsigned_char:
8518         if (cu->language == language_ada || cu->language == language_m2
8519             || cu->language == language_pascal
8520             || cu->language == language_fortran)
8521           code = TYPE_CODE_CHAR;
8522         type_flags |= TYPE_FLAG_UNSIGNED;
8523         break;
8524       case DW_ATE_UTF:
8525         /* We just treat this as an integer and then recognize the
8526            type by name elsewhere.  */
8527         break;
8528
8529       default:
8530         complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"),
8531                    dwarf_type_encoding_name (encoding));
8532         break;
8533     }
8534
8535   type = init_type (code, size, type_flags, NULL, objfile);
8536   TYPE_NAME (type) = name;
8537   TYPE_TARGET_TYPE (type) = target_type;
8538
8539   if (name && strcmp (name, "char") == 0)
8540     TYPE_NOSIGN (type) = 1;
8541
8542   return set_die_type (die, type, cu);
8543 }
8544
8545 /* Read the given DW_AT_subrange DIE.  */
8546
8547 static struct type *
8548 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
8549 {
8550   struct type *base_type;
8551   struct type *range_type;
8552   struct attribute *attr;
8553   LONGEST low = 0;
8554   LONGEST high = -1;
8555   char *name;
8556   LONGEST negative_mask;
8557
8558   base_type = die_type (die, cu);
8559   /* Preserve BASE_TYPE's original type, just set its LENGTH.  */
8560   check_typedef (base_type);
8561
8562   /* The die_type call above may have already set the type for this DIE.  */
8563   range_type = get_die_type (die, cu);
8564   if (range_type)
8565     return range_type;
8566
8567   if (cu->language == language_fortran)
8568     {
8569       /* FORTRAN implies a lower bound of 1, if not given.  */
8570       low = 1;
8571     }
8572
8573   /* FIXME: For variable sized arrays either of these could be
8574      a variable rather than a constant value.  We'll allow it,
8575      but we don't know how to handle it.  */
8576   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
8577   if (attr)
8578     low = dwarf2_get_attr_constant_value (attr, 0);
8579
8580   attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
8581   if (attr)
8582     {
8583       if (attr_form_is_block (attr) || is_ref_attr (attr))
8584         {
8585           /* GCC encodes arrays with unspecified or dynamic length
8586              with a DW_FORM_block1 attribute or a reference attribute.
8587              FIXME: GDB does not yet know how to handle dynamic
8588              arrays properly, treat them as arrays with unspecified
8589              length for now.
8590
8591              FIXME: jimb/2003-09-22: GDB does not really know
8592              how to handle arrays of unspecified length
8593              either; we just represent them as zero-length
8594              arrays.  Choose an appropriate upper bound given
8595              the lower bound we've computed above.  */
8596           high = low - 1;
8597         }
8598       else
8599         high = dwarf2_get_attr_constant_value (attr, 1);
8600     }
8601   else
8602     {
8603       attr = dwarf2_attr (die, DW_AT_count, cu);
8604       if (attr)
8605         {
8606           int count = dwarf2_get_attr_constant_value (attr, 1);
8607           high = low + count - 1;
8608         }
8609       else
8610         {
8611           /* Unspecified array length.  */
8612           high = low - 1;
8613         }
8614     }
8615
8616   /* Dwarf-2 specifications explicitly allows to create subrange types
8617      without specifying a base type.
8618      In that case, the base type must be set to the type of
8619      the lower bound, upper bound or count, in that order, if any of these
8620      three attributes references an object that has a type.
8621      If no base type is found, the Dwarf-2 specifications say that
8622      a signed integer type of size equal to the size of an address should
8623      be used.
8624      For the following C code: `extern char gdb_int [];'
8625      GCC produces an empty range DIE.
8626      FIXME: muller/2010-05-28: Possible references to object for low bound,
8627      high bound or count are not yet handled by this code.  */
8628   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
8629     {
8630       struct objfile *objfile = cu->objfile;
8631       struct gdbarch *gdbarch = get_objfile_arch (objfile);
8632       int addr_size = gdbarch_addr_bit (gdbarch) /8;
8633       struct type *int_type = objfile_type (objfile)->builtin_int;
8634
8635       /* Test "int", "long int", and "long long int" objfile types,
8636          and select the first one having a size above or equal to the
8637          architecture address size.  */
8638       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
8639         base_type = int_type;
8640       else
8641         {
8642           int_type = objfile_type (objfile)->builtin_long;
8643           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
8644             base_type = int_type;
8645           else
8646             {
8647               int_type = objfile_type (objfile)->builtin_long_long;
8648               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
8649                 base_type = int_type;
8650             }
8651         }
8652     }
8653
8654   negative_mask =
8655     (LONGEST) -1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1);
8656   if (!TYPE_UNSIGNED (base_type) && (low & negative_mask))
8657     low |= negative_mask;
8658   if (!TYPE_UNSIGNED (base_type) && (high & negative_mask))
8659     high |= negative_mask;
8660
8661   range_type = create_range_type (NULL, base_type, low, high);
8662
8663   /* Mark arrays with dynamic length at least as an array of unspecified
8664      length.  GDB could check the boundary but before it gets implemented at
8665      least allow accessing the array elements.  */
8666   if (attr && attr_form_is_block (attr))
8667     TYPE_HIGH_BOUND_UNDEFINED (range_type) = 1;
8668
8669   /* Ada expects an empty array on no boundary attributes.  */
8670   if (attr == NULL && cu->language != language_ada)
8671     TYPE_HIGH_BOUND_UNDEFINED (range_type) = 1;
8672
8673   name = dwarf2_name (die, cu);
8674   if (name)
8675     TYPE_NAME (range_type) = name;
8676
8677   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
8678   if (attr)
8679     TYPE_LENGTH (range_type) = DW_UNSND (attr);
8680
8681   set_die_type (die, range_type, cu);
8682
8683   /* set_die_type should be already done.  */
8684   set_descriptive_type (range_type, die, cu);
8685
8686   return range_type;
8687 }
8688
8689 static struct type *
8690 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
8691 {
8692   struct type *type;
8693
8694   /* For now, we only support the C meaning of an unspecified type: void.  */
8695
8696   type = init_type (TYPE_CODE_VOID, 0, 0, NULL, cu->objfile);
8697   TYPE_NAME (type) = dwarf2_name (die, cu);
8698
8699   return set_die_type (die, type, cu);
8700 }
8701
8702 /* Trivial hash function for die_info: the hash value of a DIE
8703    is its offset in .debug_info for this objfile.  */
8704
8705 static hashval_t
8706 die_hash (const void *item)
8707 {
8708   const struct die_info *die = item;
8709
8710   return die->offset;
8711 }
8712
8713 /* Trivial comparison function for die_info structures: two DIEs
8714    are equal if they have the same offset.  */
8715
8716 static int
8717 die_eq (const void *item_lhs, const void *item_rhs)
8718 {
8719   const struct die_info *die_lhs = item_lhs;
8720   const struct die_info *die_rhs = item_rhs;
8721
8722   return die_lhs->offset == die_rhs->offset;
8723 }
8724
8725 /* Read a whole compilation unit into a linked list of dies.  */
8726
8727 static struct die_info *
8728 read_comp_unit (gdb_byte *info_ptr, struct dwarf2_cu *cu)
8729 {
8730   struct die_reader_specs reader_specs;
8731   int read_abbrevs = 0;
8732   struct cleanup *back_to = NULL;
8733   struct die_info *die;
8734
8735   if (cu->dwarf2_abbrevs == NULL)
8736     {
8737       dwarf2_read_abbrevs (cu->objfile->obfd, cu);
8738       back_to = make_cleanup (dwarf2_free_abbrev_table, cu);
8739       read_abbrevs = 1;
8740     }
8741
8742   gdb_assert (cu->die_hash == NULL);
8743   cu->die_hash
8744     = htab_create_alloc_ex (cu->header.length / 12,
8745                             die_hash,
8746                             die_eq,
8747                             NULL,
8748                             &cu->comp_unit_obstack,
8749                             hashtab_obstack_allocate,
8750                             dummy_obstack_deallocate);
8751
8752   init_cu_die_reader (&reader_specs, cu);
8753
8754   die = read_die_and_children (&reader_specs, info_ptr, &info_ptr, NULL);
8755
8756   if (read_abbrevs)
8757     do_cleanups (back_to);
8758
8759   return die;
8760 }
8761
8762 /* Main entry point for reading a DIE and all children.
8763    Read the DIE and dump it if requested.  */
8764
8765 static struct die_info *
8766 read_die_and_children (const struct die_reader_specs *reader,
8767                        gdb_byte *info_ptr,
8768                        gdb_byte **new_info_ptr,
8769                        struct die_info *parent)
8770 {
8771   struct die_info *result = read_die_and_children_1 (reader, info_ptr,
8772                                                      new_info_ptr, parent);
8773
8774   if (dwarf2_die_debug)
8775     {
8776       fprintf_unfiltered (gdb_stdlog,
8777                           "\nRead die from %s of %s:\n",
8778                           reader->buffer == dwarf2_per_objfile->info.buffer
8779                           ? ".debug_info"
8780                           : reader->buffer == dwarf2_per_objfile->types.buffer
8781                           ? ".debug_types"
8782                           : "unknown section",
8783                           reader->abfd->filename);
8784       dump_die (result, dwarf2_die_debug);
8785     }
8786
8787   return result;
8788 }
8789
8790 /* Read a single die and all its descendents.  Set the die's sibling
8791    field to NULL; set other fields in the die correctly, and set all
8792    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
8793    location of the info_ptr after reading all of those dies.  PARENT
8794    is the parent of the die in question.  */
8795
8796 static struct die_info *
8797 read_die_and_children_1 (const struct die_reader_specs *reader,
8798                          gdb_byte *info_ptr,
8799                          gdb_byte **new_info_ptr,
8800                          struct die_info *parent)
8801 {
8802   struct die_info *die;
8803   gdb_byte *cur_ptr;
8804   int has_children;
8805
8806   cur_ptr = read_full_die (reader, &die, info_ptr, &has_children);
8807   if (die == NULL)
8808     {
8809       *new_info_ptr = cur_ptr;
8810       return NULL;
8811     }
8812   store_in_ref_table (die, reader->cu);
8813
8814   if (has_children)
8815     die->child = read_die_and_siblings (reader, cur_ptr, new_info_ptr, die);
8816   else
8817     {
8818       die->child = NULL;
8819       *new_info_ptr = cur_ptr;
8820     }
8821
8822   die->sibling = NULL;
8823   die->parent = parent;
8824   return die;
8825 }
8826
8827 /* Read a die, all of its descendents, and all of its siblings; set
8828    all of the fields of all of the dies correctly.  Arguments are as
8829    in read_die_and_children.  */
8830
8831 static struct die_info *
8832 read_die_and_siblings (const struct die_reader_specs *reader,
8833                        gdb_byte *info_ptr,
8834                        gdb_byte **new_info_ptr,
8835                        struct die_info *parent)
8836 {
8837   struct die_info *first_die, *last_sibling;
8838   gdb_byte *cur_ptr;
8839
8840   cur_ptr = info_ptr;
8841   first_die = last_sibling = NULL;
8842
8843   while (1)
8844     {
8845       struct die_info *die
8846         = read_die_and_children_1 (reader, cur_ptr, &cur_ptr, parent);
8847
8848       if (die == NULL)
8849         {
8850           *new_info_ptr = cur_ptr;
8851           return first_die;
8852         }
8853
8854       if (!first_die)
8855         first_die = die;
8856       else
8857         last_sibling->sibling = die;
8858
8859       last_sibling = die;
8860     }
8861 }
8862
8863 /* Read the die from the .debug_info section buffer.  Set DIEP to
8864    point to a newly allocated die with its information, except for its
8865    child, sibling, and parent fields.  Set HAS_CHILDREN to tell
8866    whether the die has children or not.  */
8867
8868 static gdb_byte *
8869 read_full_die (const struct die_reader_specs *reader,
8870                struct die_info **diep, gdb_byte *info_ptr,
8871                int *has_children)
8872 {
8873   unsigned int abbrev_number, bytes_read, i, offset;
8874   struct abbrev_info *abbrev;
8875   struct die_info *die;
8876   struct dwarf2_cu *cu = reader->cu;
8877   bfd *abfd = reader->abfd;
8878
8879   offset = info_ptr - reader->buffer;
8880   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
8881   info_ptr += bytes_read;
8882   if (!abbrev_number)
8883     {
8884       *diep = NULL;
8885       *has_children = 0;
8886       return info_ptr;
8887     }
8888
8889   abbrev = dwarf2_lookup_abbrev (abbrev_number, cu);
8890   if (!abbrev)
8891     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
8892            abbrev_number,
8893            bfd_get_filename (abfd));
8894
8895   die = dwarf_alloc_die (cu, abbrev->num_attrs);
8896   die->offset = offset;
8897   die->tag = abbrev->tag;
8898   die->abbrev = abbrev_number;
8899
8900   die->num_attrs = abbrev->num_attrs;
8901
8902   for (i = 0; i < abbrev->num_attrs; ++i)
8903     info_ptr = read_attribute (&die->attrs[i], &abbrev->attrs[i],
8904                                abfd, info_ptr, cu);
8905
8906   *diep = die;
8907   *has_children = abbrev->has_children;
8908   return info_ptr;
8909 }
8910
8911 /* In DWARF version 2, the description of the debugging information is
8912    stored in a separate .debug_abbrev section.  Before we read any
8913    dies from a section we read in all abbreviations and install them
8914    in a hash table.  This function also sets flags in CU describing
8915    the data found in the abbrev table.  */
8916
8917 static void
8918 dwarf2_read_abbrevs (bfd *abfd, struct dwarf2_cu *cu)
8919 {
8920   struct comp_unit_head *cu_header = &cu->header;
8921   gdb_byte *abbrev_ptr;
8922   struct abbrev_info *cur_abbrev;
8923   unsigned int abbrev_number, bytes_read, abbrev_name;
8924   unsigned int abbrev_form, hash_number;
8925   struct attr_abbrev *cur_attrs;
8926   unsigned int allocated_attrs;
8927
8928   /* Initialize dwarf2 abbrevs.  */
8929   obstack_init (&cu->abbrev_obstack);
8930   cu->dwarf2_abbrevs = obstack_alloc (&cu->abbrev_obstack,
8931                                       (ABBREV_HASH_SIZE
8932                                        * sizeof (struct abbrev_info *)));
8933   memset (cu->dwarf2_abbrevs, 0,
8934           ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
8935
8936   dwarf2_read_section (dwarf2_per_objfile->objfile,
8937                        &dwarf2_per_objfile->abbrev);
8938   abbrev_ptr = dwarf2_per_objfile->abbrev.buffer + cu_header->abbrev_offset;
8939   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
8940   abbrev_ptr += bytes_read;
8941
8942   allocated_attrs = ATTR_ALLOC_CHUNK;
8943   cur_attrs = xmalloc (allocated_attrs * sizeof (struct attr_abbrev));
8944
8945   /* Loop until we reach an abbrev number of 0.  */
8946   while (abbrev_number)
8947     {
8948       cur_abbrev = dwarf_alloc_abbrev (cu);
8949
8950       /* read in abbrev header */
8951       cur_abbrev->number = abbrev_number;
8952       cur_abbrev->tag = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
8953       abbrev_ptr += bytes_read;
8954       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
8955       abbrev_ptr += 1;
8956
8957       if (cur_abbrev->tag == DW_TAG_namespace)
8958         cu->has_namespace_info = 1;
8959
8960       /* now read in declarations */
8961       abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
8962       abbrev_ptr += bytes_read;
8963       abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
8964       abbrev_ptr += bytes_read;
8965       while (abbrev_name)
8966         {
8967           if (cur_abbrev->num_attrs == allocated_attrs)
8968             {
8969               allocated_attrs += ATTR_ALLOC_CHUNK;
8970               cur_attrs
8971                 = xrealloc (cur_attrs, (allocated_attrs
8972                                         * sizeof (struct attr_abbrev)));
8973             }
8974
8975           /* Record whether this compilation unit might have
8976              inter-compilation-unit references.  If we don't know what form
8977              this attribute will have, then it might potentially be a
8978              DW_FORM_ref_addr, so we conservatively expect inter-CU
8979              references.  */
8980
8981           if (abbrev_form == DW_FORM_ref_addr
8982               || abbrev_form == DW_FORM_indirect)
8983             cu->has_form_ref_addr = 1;
8984
8985           cur_attrs[cur_abbrev->num_attrs].name = abbrev_name;
8986           cur_attrs[cur_abbrev->num_attrs++].form = abbrev_form;
8987           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
8988           abbrev_ptr += bytes_read;
8989           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
8990           abbrev_ptr += bytes_read;
8991         }
8992
8993       cur_abbrev->attrs = obstack_alloc (&cu->abbrev_obstack,
8994                                          (cur_abbrev->num_attrs
8995                                           * sizeof (struct attr_abbrev)));
8996       memcpy (cur_abbrev->attrs, cur_attrs,
8997               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
8998
8999       hash_number = abbrev_number % ABBREV_HASH_SIZE;
9000       cur_abbrev->next = cu->dwarf2_abbrevs[hash_number];
9001       cu->dwarf2_abbrevs[hash_number] = cur_abbrev;
9002
9003       /* Get next abbreviation.
9004          Under Irix6 the abbreviations for a compilation unit are not
9005          always properly terminated with an abbrev number of 0.
9006          Exit loop if we encounter an abbreviation which we have
9007          already read (which means we are about to read the abbreviations
9008          for the next compile unit) or if the end of the abbreviation
9009          table is reached.  */
9010       if ((unsigned int) (abbrev_ptr - dwarf2_per_objfile->abbrev.buffer)
9011           >= dwarf2_per_objfile->abbrev.size)
9012         break;
9013       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
9014       abbrev_ptr += bytes_read;
9015       if (dwarf2_lookup_abbrev (abbrev_number, cu) != NULL)
9016         break;
9017     }
9018
9019   xfree (cur_attrs);
9020 }
9021
9022 /* Release the memory used by the abbrev table for a compilation unit.  */
9023
9024 static void
9025 dwarf2_free_abbrev_table (void *ptr_to_cu)
9026 {
9027   struct dwarf2_cu *cu = ptr_to_cu;
9028
9029   obstack_free (&cu->abbrev_obstack, NULL);
9030   cu->dwarf2_abbrevs = NULL;
9031 }
9032
9033 /* Lookup an abbrev_info structure in the abbrev hash table.  */
9034
9035 static struct abbrev_info *
9036 dwarf2_lookup_abbrev (unsigned int number, struct dwarf2_cu *cu)
9037 {
9038   unsigned int hash_number;
9039   struct abbrev_info *abbrev;
9040
9041   hash_number = number % ABBREV_HASH_SIZE;
9042   abbrev = cu->dwarf2_abbrevs[hash_number];
9043
9044   while (abbrev)
9045     {
9046       if (abbrev->number == number)
9047         return abbrev;
9048       else
9049         abbrev = abbrev->next;
9050     }
9051   return NULL;
9052 }
9053
9054 /* Returns nonzero if TAG represents a type that we might generate a partial
9055    symbol for.  */
9056
9057 static int
9058 is_type_tag_for_partial (int tag)
9059 {
9060   switch (tag)
9061     {
9062 #if 0
9063     /* Some types that would be reasonable to generate partial symbols for,
9064        that we don't at present.  */
9065     case DW_TAG_array_type:
9066     case DW_TAG_file_type:
9067     case DW_TAG_ptr_to_member_type:
9068     case DW_TAG_set_type:
9069     case DW_TAG_string_type:
9070     case DW_TAG_subroutine_type:
9071 #endif
9072     case DW_TAG_base_type:
9073     case DW_TAG_class_type:
9074     case DW_TAG_interface_type:
9075     case DW_TAG_enumeration_type:
9076     case DW_TAG_structure_type:
9077     case DW_TAG_subrange_type:
9078     case DW_TAG_typedef:
9079     case DW_TAG_union_type:
9080       return 1;
9081     default:
9082       return 0;
9083     }
9084 }
9085
9086 /* Load all DIEs that are interesting for partial symbols into memory.  */
9087
9088 static struct partial_die_info *
9089 load_partial_dies (bfd *abfd, gdb_byte *buffer, gdb_byte *info_ptr,
9090                    int building_psymtab, struct dwarf2_cu *cu)
9091 {
9092   struct partial_die_info *part_die;
9093   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
9094   struct abbrev_info *abbrev;
9095   unsigned int bytes_read;
9096   unsigned int load_all = 0;
9097
9098   int nesting_level = 1;
9099
9100   parent_die = NULL;
9101   last_die = NULL;
9102
9103   if (cu->per_cu && cu->per_cu->load_all_dies)
9104     load_all = 1;
9105
9106   cu->partial_dies
9107     = htab_create_alloc_ex (cu->header.length / 12,
9108                             partial_die_hash,
9109                             partial_die_eq,
9110                             NULL,
9111                             &cu->comp_unit_obstack,
9112                             hashtab_obstack_allocate,
9113                             dummy_obstack_deallocate);
9114
9115   part_die = obstack_alloc (&cu->comp_unit_obstack,
9116                             sizeof (struct partial_die_info));
9117
9118   while (1)
9119     {
9120       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
9121
9122       /* A NULL abbrev means the end of a series of children.  */
9123       if (abbrev == NULL)
9124         {
9125           if (--nesting_level == 0)
9126             {
9127               /* PART_DIE was probably the last thing allocated on the
9128                  comp_unit_obstack, so we could call obstack_free
9129                  here.  We don't do that because the waste is small,
9130                  and will be cleaned up when we're done with this
9131                  compilation unit.  This way, we're also more robust
9132                  against other users of the comp_unit_obstack.  */
9133               return first_die;
9134             }
9135           info_ptr += bytes_read;
9136           last_die = parent_die;
9137           parent_die = parent_die->die_parent;
9138           continue;
9139         }
9140
9141       /* Check for template arguments.  We never save these; if
9142          they're seen, we just mark the parent, and go on our way.  */
9143       if (parent_die != NULL
9144           && cu->language == language_cplus
9145           && (abbrev->tag == DW_TAG_template_type_param
9146               || abbrev->tag == DW_TAG_template_value_param))
9147         {
9148           parent_die->has_template_arguments = 1;
9149
9150           if (!load_all)
9151             {
9152               /* We don't need a partial DIE for the template argument.  */
9153               info_ptr = skip_one_die (buffer, info_ptr + bytes_read, abbrev,
9154                                        cu);
9155               continue;
9156             }
9157         }
9158
9159       /* We only recurse into subprograms looking for template arguments.
9160          Skip their other children.  */
9161       if (!load_all
9162           && cu->language == language_cplus
9163           && parent_die != NULL
9164           && parent_die->tag == DW_TAG_subprogram)
9165         {
9166           info_ptr = skip_one_die (buffer, info_ptr + bytes_read, abbrev, cu);
9167           continue;
9168         }
9169
9170       /* Check whether this DIE is interesting enough to save.  Normally
9171          we would not be interested in members here, but there may be
9172          later variables referencing them via DW_AT_specification (for
9173          static members).  */
9174       if (!load_all
9175           && !is_type_tag_for_partial (abbrev->tag)
9176           && abbrev->tag != DW_TAG_constant
9177           && abbrev->tag != DW_TAG_enumerator
9178           && abbrev->tag != DW_TAG_subprogram
9179           && abbrev->tag != DW_TAG_lexical_block
9180           && abbrev->tag != DW_TAG_variable
9181           && abbrev->tag != DW_TAG_namespace
9182           && abbrev->tag != DW_TAG_module
9183           && abbrev->tag != DW_TAG_member)
9184         {
9185           /* Otherwise we skip to the next sibling, if any.  */
9186           info_ptr = skip_one_die (buffer, info_ptr + bytes_read, abbrev, cu);
9187           continue;
9188         }
9189
9190       info_ptr = read_partial_die (part_die, abbrev, bytes_read, abfd,
9191                                    buffer, info_ptr, cu);
9192
9193       /* This two-pass algorithm for processing partial symbols has a
9194          high cost in cache pressure.  Thus, handle some simple cases
9195          here which cover the majority of C partial symbols.  DIEs
9196          which neither have specification tags in them, nor could have
9197          specification tags elsewhere pointing at them, can simply be
9198          processed and discarded.
9199
9200          This segment is also optional; scan_partial_symbols and
9201          add_partial_symbol will handle these DIEs if we chain
9202          them in normally.  When compilers which do not emit large
9203          quantities of duplicate debug information are more common,
9204          this code can probably be removed.  */
9205
9206       /* Any complete simple types at the top level (pretty much all
9207          of them, for a language without namespaces), can be processed
9208          directly.  */
9209       if (parent_die == NULL
9210           && part_die->has_specification == 0
9211           && part_die->is_declaration == 0
9212           && ((part_die->tag == DW_TAG_typedef && !part_die->has_children)
9213               || part_die->tag == DW_TAG_base_type
9214               || part_die->tag == DW_TAG_subrange_type))
9215         {
9216           if (building_psymtab && part_die->name != NULL)
9217             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
9218                                  VAR_DOMAIN, LOC_TYPEDEF,
9219                                  &cu->objfile->static_psymbols,
9220                                  0, (CORE_ADDR) 0, cu->language, cu->objfile);
9221           info_ptr = locate_pdi_sibling (part_die, buffer, info_ptr, abfd, cu);
9222           continue;
9223         }
9224
9225       /* The exception for DW_TAG_typedef with has_children above is
9226          a workaround of GCC PR debug/47510.  In the case of this complaint
9227          type_name_no_tag_or_error will error on such types later.
9228
9229          GDB skipped children of DW_TAG_typedef by the shortcut above and then
9230          it could not find the child DIEs referenced later, this is checked
9231          above.  In correct DWARF DW_TAG_typedef should have no children.  */
9232
9233       if (part_die->tag == DW_TAG_typedef && part_die->has_children)
9234         complaint (&symfile_complaints,
9235                    _("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
9236                      "- DIE at 0x%x [in module %s]"),
9237                    part_die->offset, cu->objfile->name);
9238
9239       /* If we're at the second level, and we're an enumerator, and
9240          our parent has no specification (meaning possibly lives in a
9241          namespace elsewhere), then we can add the partial symbol now
9242          instead of queueing it.  */
9243       if (part_die->tag == DW_TAG_enumerator
9244           && parent_die != NULL
9245           && parent_die->die_parent == NULL
9246           && parent_die->tag == DW_TAG_enumeration_type
9247           && parent_die->has_specification == 0)
9248         {
9249           if (part_die->name == NULL)
9250             complaint (&symfile_complaints,
9251                        _("malformed enumerator DIE ignored"));
9252           else if (building_psymtab)
9253             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
9254                                  VAR_DOMAIN, LOC_CONST,
9255                                  (cu->language == language_cplus
9256                                   || cu->language == language_java)
9257                                  ? &cu->objfile->global_psymbols
9258                                  : &cu->objfile->static_psymbols,
9259                                  0, (CORE_ADDR) 0, cu->language, cu->objfile);
9260
9261           info_ptr = locate_pdi_sibling (part_die, buffer, info_ptr, abfd, cu);
9262           continue;
9263         }
9264
9265       /* We'll save this DIE so link it in.  */
9266       part_die->die_parent = parent_die;
9267       part_die->die_sibling = NULL;
9268       part_die->die_child = NULL;
9269
9270       if (last_die && last_die == parent_die)
9271         last_die->die_child = part_die;
9272       else if (last_die)
9273         last_die->die_sibling = part_die;
9274
9275       last_die = part_die;
9276
9277       if (first_die == NULL)
9278         first_die = part_die;
9279
9280       /* Maybe add the DIE to the hash table.  Not all DIEs that we
9281          find interesting need to be in the hash table, because we
9282          also have the parent/sibling/child chains; only those that we
9283          might refer to by offset later during partial symbol reading.
9284
9285          For now this means things that might have be the target of a
9286          DW_AT_specification, DW_AT_abstract_origin, or
9287          DW_AT_extension.  DW_AT_extension will refer only to
9288          namespaces; DW_AT_abstract_origin refers to functions (and
9289          many things under the function DIE, but we do not recurse
9290          into function DIEs during partial symbol reading) and
9291          possibly variables as well; DW_AT_specification refers to
9292          declarations.  Declarations ought to have the DW_AT_declaration
9293          flag.  It happens that GCC forgets to put it in sometimes, but
9294          only for functions, not for types.
9295
9296          Adding more things than necessary to the hash table is harmless
9297          except for the performance cost.  Adding too few will result in
9298          wasted time in find_partial_die, when we reread the compilation
9299          unit with load_all_dies set.  */
9300
9301       if (load_all
9302           || abbrev->tag == DW_TAG_constant
9303           || abbrev->tag == DW_TAG_subprogram
9304           || abbrev->tag == DW_TAG_variable
9305           || abbrev->tag == DW_TAG_namespace
9306           || part_die->is_declaration)
9307         {
9308           void **slot;
9309
9310           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
9311                                            part_die->offset, INSERT);
9312           *slot = part_die;
9313         }
9314
9315       part_die = obstack_alloc (&cu->comp_unit_obstack,
9316                                 sizeof (struct partial_die_info));
9317
9318       /* For some DIEs we want to follow their children (if any).  For C
9319          we have no reason to follow the children of structures; for other
9320          languages we have to, so that we can get at method physnames
9321          to infer fully qualified class names, for DW_AT_specification,
9322          and for C++ template arguments.  For C++, we also look one level
9323          inside functions to find template arguments (if the name of the
9324          function does not already contain the template arguments).
9325
9326          For Ada, we need to scan the children of subprograms and lexical
9327          blocks as well because Ada allows the definition of nested
9328          entities that could be interesting for the debugger, such as
9329          nested subprograms for instance.  */
9330       if (last_die->has_children
9331           && (load_all
9332               || last_die->tag == DW_TAG_namespace
9333               || last_die->tag == DW_TAG_module
9334               || last_die->tag == DW_TAG_enumeration_type
9335               || (cu->language == language_cplus
9336                   && last_die->tag == DW_TAG_subprogram
9337                   && (last_die->name == NULL
9338                       || strchr (last_die->name, '<') == NULL))
9339               || (cu->language != language_c
9340                   && (last_die->tag == DW_TAG_class_type
9341                       || last_die->tag == DW_TAG_interface_type
9342                       || last_die->tag == DW_TAG_structure_type
9343                       || last_die->tag == DW_TAG_union_type))
9344               || (cu->language == language_ada
9345                   && (last_die->tag == DW_TAG_subprogram
9346                       || last_die->tag == DW_TAG_lexical_block))))
9347         {
9348           nesting_level++;
9349           parent_die = last_die;
9350           continue;
9351         }
9352
9353       /* Otherwise we skip to the next sibling, if any.  */
9354       info_ptr = locate_pdi_sibling (last_die, buffer, info_ptr, abfd, cu);
9355
9356       /* Back to the top, do it again.  */
9357     }
9358 }
9359
9360 /* Read a minimal amount of information into the minimal die structure.  */
9361
9362 static gdb_byte *
9363 read_partial_die (struct partial_die_info *part_die,
9364                   struct abbrev_info *abbrev,
9365                   unsigned int abbrev_len, bfd *abfd,
9366                   gdb_byte *buffer, gdb_byte *info_ptr,
9367                   struct dwarf2_cu *cu)
9368 {
9369   unsigned int i;
9370   struct attribute attr;
9371   int has_low_pc_attr = 0;
9372   int has_high_pc_attr = 0;
9373
9374   memset (part_die, 0, sizeof (struct partial_die_info));
9375
9376   part_die->offset = info_ptr - buffer;
9377
9378   info_ptr += abbrev_len;
9379
9380   if (abbrev == NULL)
9381     return info_ptr;
9382
9383   part_die->tag = abbrev->tag;
9384   part_die->has_children = abbrev->has_children;
9385
9386   for (i = 0; i < abbrev->num_attrs; ++i)
9387     {
9388       info_ptr = read_attribute (&attr, &abbrev->attrs[i], abfd, info_ptr, cu);
9389
9390       /* Store the data if it is of an attribute we want to keep in a
9391          partial symbol table.  */
9392       switch (attr.name)
9393         {
9394         case DW_AT_name:
9395           switch (part_die->tag)
9396             {
9397             case DW_TAG_compile_unit:
9398             case DW_TAG_type_unit:
9399               /* Compilation units have a DW_AT_name that is a filename, not
9400                  a source language identifier.  */
9401             case DW_TAG_enumeration_type:
9402             case DW_TAG_enumerator:
9403               /* These tags always have simple identifiers already; no need
9404                  to canonicalize them.  */
9405               part_die->name = DW_STRING (&attr);
9406               break;
9407             default:
9408               part_die->name
9409                 = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
9410                                             &cu->objfile->objfile_obstack);
9411               break;
9412             }
9413           break;
9414         case DW_AT_linkage_name:
9415         case DW_AT_MIPS_linkage_name:
9416           /* Note that both forms of linkage name might appear.  We
9417              assume they will be the same, and we only store the last
9418              one we see.  */
9419           if (cu->language == language_ada)
9420             part_die->name = DW_STRING (&attr);
9421           part_die->linkage_name = DW_STRING (&attr);
9422           break;
9423         case DW_AT_low_pc:
9424           has_low_pc_attr = 1;
9425           part_die->lowpc = DW_ADDR (&attr);
9426           break;
9427         case DW_AT_high_pc:
9428           has_high_pc_attr = 1;
9429           part_die->highpc = DW_ADDR (&attr);
9430           break;
9431         case DW_AT_location:
9432           /* Support the .debug_loc offsets.  */
9433           if (attr_form_is_block (&attr))
9434             {
9435                part_die->locdesc = DW_BLOCK (&attr);
9436             }
9437           else if (attr_form_is_section_offset (&attr))
9438             {
9439               dwarf2_complex_location_expr_complaint ();
9440             }
9441           else
9442             {
9443               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
9444                                                      "partial symbol information");
9445             }
9446           break;
9447         case DW_AT_external:
9448           part_die->is_external = DW_UNSND (&attr);
9449           break;
9450         case DW_AT_declaration:
9451           part_die->is_declaration = DW_UNSND (&attr);
9452           break;
9453         case DW_AT_type:
9454           part_die->has_type = 1;
9455           break;
9456         case DW_AT_abstract_origin:
9457         case DW_AT_specification:
9458         case DW_AT_extension:
9459           part_die->has_specification = 1;
9460           part_die->spec_offset = dwarf2_get_ref_die_offset (&attr);
9461           break;
9462         case DW_AT_sibling:
9463           /* Ignore absolute siblings, they might point outside of
9464              the current compile unit.  */
9465           if (attr.form == DW_FORM_ref_addr)
9466             complaint (&symfile_complaints,
9467                        _("ignoring absolute DW_AT_sibling"));
9468           else
9469             part_die->sibling = buffer + dwarf2_get_ref_die_offset (&attr);
9470           break;
9471         case DW_AT_byte_size:
9472           part_die->has_byte_size = 1;
9473           break;
9474         case DW_AT_calling_convention:
9475           /* DWARF doesn't provide a way to identify a program's source-level
9476              entry point.  DW_AT_calling_convention attributes are only meant
9477              to describe functions' calling conventions.
9478
9479              However, because it's a necessary piece of information in
9480              Fortran, and because DW_CC_program is the only piece of debugging
9481              information whose definition refers to a 'main program' at all,
9482              several compilers have begun marking Fortran main programs with
9483              DW_CC_program --- even when those functions use the standard
9484              calling conventions.
9485
9486              So until DWARF specifies a way to provide this information and
9487              compilers pick up the new representation, we'll support this
9488              practice.  */
9489           if (DW_UNSND (&attr) == DW_CC_program
9490               && cu->language == language_fortran)
9491             {
9492               set_main_name (part_die->name);
9493
9494               /* As this DIE has a static linkage the name would be difficult
9495                  to look up later.  */
9496               language_of_main = language_fortran;
9497             }
9498           break;
9499         default:
9500           break;
9501         }
9502     }
9503
9504   if (has_low_pc_attr && has_high_pc_attr)
9505     {
9506       /* When using the GNU linker, .gnu.linkonce. sections are used to
9507          eliminate duplicate copies of functions and vtables and such.
9508          The linker will arbitrarily choose one and discard the others.
9509          The AT_*_pc values for such functions refer to local labels in
9510          these sections.  If the section from that file was discarded, the
9511          labels are not in the output, so the relocs get a value of 0.
9512          If this is a discarded function, mark the pc bounds as invalid,
9513          so that GDB will ignore it.  */
9514       if (part_die->lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
9515         {
9516           struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
9517
9518           complaint (&symfile_complaints,
9519                      _("DW_AT_low_pc %s is zero "
9520                        "for DIE at 0x%x [in module %s]"),
9521                      paddress (gdbarch, part_die->lowpc),
9522                      part_die->offset, cu->objfile->name);
9523         }
9524       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
9525       else if (part_die->lowpc >= part_die->highpc)
9526         {
9527           struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
9528
9529           complaint (&symfile_complaints,
9530                      _("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
9531                        "for DIE at 0x%x [in module %s]"),
9532                      paddress (gdbarch, part_die->lowpc),
9533                      paddress (gdbarch, part_die->highpc),
9534                      part_die->offset, cu->objfile->name);
9535         }
9536       else
9537         part_die->has_pc_info = 1;
9538     }
9539
9540   return info_ptr;
9541 }
9542
9543 /* Find a cached partial DIE at OFFSET in CU.  */
9544
9545 static struct partial_die_info *
9546 find_partial_die_in_comp_unit (unsigned int offset, struct dwarf2_cu *cu)
9547 {
9548   struct partial_die_info *lookup_die = NULL;
9549   struct partial_die_info part_die;
9550
9551   part_die.offset = offset;
9552   lookup_die = htab_find_with_hash (cu->partial_dies, &part_die, offset);
9553
9554   return lookup_die;
9555 }
9556
9557 /* Find a partial DIE at OFFSET, which may or may not be in CU,
9558    except in the case of .debug_types DIEs which do not reference
9559    outside their CU (they do however referencing other types via
9560    DW_FORM_ref_sig8).  */
9561
9562 static struct partial_die_info *
9563 find_partial_die (unsigned int offset, struct dwarf2_cu *cu)
9564 {
9565   struct dwarf2_per_cu_data *per_cu = NULL;
9566   struct partial_die_info *pd = NULL;
9567
9568   if (cu->per_cu->from_debug_types)
9569     {
9570       pd = find_partial_die_in_comp_unit (offset, cu);
9571       if (pd != NULL)
9572         return pd;
9573       goto not_found;
9574     }
9575
9576   if (offset_in_cu_p (&cu->header, offset))
9577     {
9578       pd = find_partial_die_in_comp_unit (offset, cu);
9579       if (pd != NULL)
9580         return pd;
9581     }
9582
9583   per_cu = dwarf2_find_containing_comp_unit (offset, cu->objfile);
9584
9585   if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
9586     load_partial_comp_unit (per_cu, cu->objfile);
9587
9588   per_cu->cu->last_used = 0;
9589   pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
9590
9591   if (pd == NULL && per_cu->load_all_dies == 0)
9592     {
9593       struct cleanup *back_to;
9594       struct partial_die_info comp_unit_die;
9595       struct abbrev_info *abbrev;
9596       unsigned int bytes_read;
9597       char *info_ptr;
9598
9599       per_cu->load_all_dies = 1;
9600
9601       /* Re-read the DIEs.  */
9602       back_to = make_cleanup (null_cleanup, 0);
9603       if (per_cu->cu->dwarf2_abbrevs == NULL)
9604         {
9605           dwarf2_read_abbrevs (per_cu->cu->objfile->obfd, per_cu->cu);
9606           make_cleanup (dwarf2_free_abbrev_table, per_cu->cu);
9607         }
9608       info_ptr = (dwarf2_per_objfile->info.buffer
9609                   + per_cu->cu->header.offset
9610                   + per_cu->cu->header.first_die_offset);
9611       abbrev = peek_die_abbrev (info_ptr, &bytes_read, per_cu->cu);
9612       info_ptr = read_partial_die (&comp_unit_die, abbrev, bytes_read,
9613                                    per_cu->cu->objfile->obfd,
9614                                    dwarf2_per_objfile->info.buffer, info_ptr,
9615                                    per_cu->cu);
9616       if (comp_unit_die.has_children)
9617         load_partial_dies (per_cu->cu->objfile->obfd,
9618                            dwarf2_per_objfile->info.buffer, info_ptr,
9619                            0, per_cu->cu);
9620       do_cleanups (back_to);
9621
9622       pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
9623     }
9624
9625  not_found:
9626
9627   if (pd == NULL)
9628     internal_error (__FILE__, __LINE__,
9629                     _("could not find partial DIE 0x%x "
9630                       "in cache [from module %s]\n"),
9631                     offset, bfd_get_filename (cu->objfile->obfd));
9632   return pd;
9633 }
9634
9635 /* See if we can figure out if the class lives in a namespace.  We do
9636    this by looking for a member function; its demangled name will
9637    contain namespace info, if there is any.  */
9638
9639 static void
9640 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
9641                                   struct dwarf2_cu *cu)
9642 {
9643   /* NOTE: carlton/2003-10-07: Getting the info this way changes
9644      what template types look like, because the demangler
9645      frequently doesn't give the same name as the debug info.  We
9646      could fix this by only using the demangled name to get the
9647      prefix (but see comment in read_structure_type).  */
9648
9649   struct partial_die_info *real_pdi;
9650   struct partial_die_info *child_pdi;
9651
9652   /* If this DIE (this DIE's specification, if any) has a parent, then
9653      we should not do this.  We'll prepend the parent's fully qualified
9654      name when we create the partial symbol.  */
9655
9656   real_pdi = struct_pdi;
9657   while (real_pdi->has_specification)
9658     real_pdi = find_partial_die (real_pdi->spec_offset, cu);
9659
9660   if (real_pdi->die_parent != NULL)
9661     return;
9662
9663   for (child_pdi = struct_pdi->die_child;
9664        child_pdi != NULL;
9665        child_pdi = child_pdi->die_sibling)
9666     {
9667       if (child_pdi->tag == DW_TAG_subprogram
9668           && child_pdi->linkage_name != NULL)
9669         {
9670           char *actual_class_name
9671             = language_class_name_from_physname (cu->language_defn,
9672                                                  child_pdi->linkage_name);
9673           if (actual_class_name != NULL)
9674             {
9675               struct_pdi->name
9676                 = obsavestring (actual_class_name,
9677                                 strlen (actual_class_name),
9678                                 &cu->objfile->objfile_obstack);
9679               xfree (actual_class_name);
9680             }
9681           break;
9682         }
9683     }
9684 }
9685
9686 /* Adjust PART_DIE before generating a symbol for it.  This function
9687    may set the is_external flag or change the DIE's name.  */
9688
9689 static void
9690 fixup_partial_die (struct partial_die_info *part_die,
9691                    struct dwarf2_cu *cu)
9692 {
9693   /* Once we've fixed up a die, there's no point in doing so again.
9694      This also avoids a memory leak if we were to call
9695      guess_partial_die_structure_name multiple times.  */
9696   if (part_die->fixup_called)
9697     return;
9698
9699   /* If we found a reference attribute and the DIE has no name, try
9700      to find a name in the referred to DIE.  */
9701
9702   if (part_die->name == NULL && part_die->has_specification)
9703     {
9704       struct partial_die_info *spec_die;
9705
9706       spec_die = find_partial_die (part_die->spec_offset, cu);
9707
9708       fixup_partial_die (spec_die, cu);
9709
9710       if (spec_die->name)
9711         {
9712           part_die->name = spec_die->name;
9713
9714           /* Copy DW_AT_external attribute if it is set.  */
9715           if (spec_die->is_external)
9716             part_die->is_external = spec_die->is_external;
9717         }
9718     }
9719
9720   /* Set default names for some unnamed DIEs.  */
9721
9722   if (part_die->name == NULL && part_die->tag == DW_TAG_namespace)
9723     part_die->name = CP_ANONYMOUS_NAMESPACE_STR;
9724
9725   /* If there is no parent die to provide a namespace, and there are
9726      children, see if we can determine the namespace from their linkage
9727      name.
9728      NOTE: We need to do this even if cu->has_namespace_info != 0.
9729      gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  */
9730   if (cu->language == language_cplus
9731       && dwarf2_per_objfile->types.asection != NULL
9732       && part_die->die_parent == NULL
9733       && part_die->has_children
9734       && (part_die->tag == DW_TAG_class_type
9735           || part_die->tag == DW_TAG_structure_type
9736           || part_die->tag == DW_TAG_union_type))
9737     guess_partial_die_structure_name (part_die, cu);
9738
9739   /* GCC might emit a nameless struct or union that has a linkage
9740      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
9741   if (part_die->name == NULL
9742       && (part_die->tag == DW_TAG_structure_type
9743           || part_die->tag == DW_TAG_union_type
9744           || part_die->tag == DW_TAG_class_type)
9745       && part_die->linkage_name != NULL)
9746     {
9747       char *demangled;
9748
9749       demangled = cplus_demangle (part_die->linkage_name, DMGL_TYPES);
9750       if (demangled)
9751         {
9752           part_die->name = obsavestring (demangled, strlen (demangled),
9753                                          &cu->objfile->objfile_obstack);
9754           xfree (demangled);
9755         }
9756     }
9757
9758   part_die->fixup_called = 1;
9759 }
9760
9761 /* Read an attribute value described by an attribute form.  */
9762
9763 static gdb_byte *
9764 read_attribute_value (struct attribute *attr, unsigned form,
9765                       bfd *abfd, gdb_byte *info_ptr,
9766                       struct dwarf2_cu *cu)
9767 {
9768   struct comp_unit_head *cu_header = &cu->header;
9769   unsigned int bytes_read;
9770   struct dwarf_block *blk;
9771
9772   attr->form = form;
9773   switch (form)
9774     {
9775     case DW_FORM_ref_addr:
9776       if (cu->header.version == 2)
9777         DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
9778       else
9779         DW_ADDR (attr) = read_offset (abfd, info_ptr,
9780                                       &cu->header, &bytes_read);
9781       info_ptr += bytes_read;
9782       break;
9783     case DW_FORM_addr:
9784       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
9785       info_ptr += bytes_read;
9786       break;
9787     case DW_FORM_block2:
9788       blk = dwarf_alloc_block (cu);
9789       blk->size = read_2_bytes (abfd, info_ptr);
9790       info_ptr += 2;
9791       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
9792       info_ptr += blk->size;
9793       DW_BLOCK (attr) = blk;
9794       break;
9795     case DW_FORM_block4:
9796       blk = dwarf_alloc_block (cu);
9797       blk->size = read_4_bytes (abfd, info_ptr);
9798       info_ptr += 4;
9799       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
9800       info_ptr += blk->size;
9801       DW_BLOCK (attr) = blk;
9802       break;
9803     case DW_FORM_data2:
9804       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
9805       info_ptr += 2;
9806       break;
9807     case DW_FORM_data4:
9808       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
9809       info_ptr += 4;
9810       break;
9811     case DW_FORM_data8:
9812       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
9813       info_ptr += 8;
9814       break;
9815     case DW_FORM_sec_offset:
9816       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
9817       info_ptr += bytes_read;
9818       break;
9819     case DW_FORM_string:
9820       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
9821       DW_STRING_IS_CANONICAL (attr) = 0;
9822       info_ptr += bytes_read;
9823       break;
9824     case DW_FORM_strp:
9825       DW_STRING (attr) = read_indirect_string (abfd, info_ptr, cu_header,
9826                                                &bytes_read);
9827       DW_STRING_IS_CANONICAL (attr) = 0;
9828       info_ptr += bytes_read;
9829       break;
9830     case DW_FORM_exprloc:
9831     case DW_FORM_block:
9832       blk = dwarf_alloc_block (cu);
9833       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9834       info_ptr += bytes_read;
9835       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
9836       info_ptr += blk->size;
9837       DW_BLOCK (attr) = blk;
9838       break;
9839     case DW_FORM_block1:
9840       blk = dwarf_alloc_block (cu);
9841       blk->size = read_1_byte (abfd, info_ptr);
9842       info_ptr += 1;
9843       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
9844       info_ptr += blk->size;
9845       DW_BLOCK (attr) = blk;
9846       break;
9847     case DW_FORM_data1:
9848       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
9849       info_ptr += 1;
9850       break;
9851     case DW_FORM_flag:
9852       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
9853       info_ptr += 1;
9854       break;
9855     case DW_FORM_flag_present:
9856       DW_UNSND (attr) = 1;
9857       break;
9858     case DW_FORM_sdata:
9859       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
9860       info_ptr += bytes_read;
9861       break;
9862     case DW_FORM_udata:
9863       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9864       info_ptr += bytes_read;
9865       break;
9866     case DW_FORM_ref1:
9867       DW_ADDR (attr) = cu->header.offset + read_1_byte (abfd, info_ptr);
9868       info_ptr += 1;
9869       break;
9870     case DW_FORM_ref2:
9871       DW_ADDR (attr) = cu->header.offset + read_2_bytes (abfd, info_ptr);
9872       info_ptr += 2;
9873       break;
9874     case DW_FORM_ref4:
9875       DW_ADDR (attr) = cu->header.offset + read_4_bytes (abfd, info_ptr);
9876       info_ptr += 4;
9877       break;
9878     case DW_FORM_ref8:
9879       DW_ADDR (attr) = cu->header.offset + read_8_bytes (abfd, info_ptr);
9880       info_ptr += 8;
9881       break;
9882     case DW_FORM_ref_sig8:
9883       /* Convert the signature to something we can record in DW_UNSND
9884          for later lookup.
9885          NOTE: This is NULL if the type wasn't found.  */
9886       DW_SIGNATURED_TYPE (attr) =
9887         lookup_signatured_type (cu->objfile, read_8_bytes (abfd, info_ptr));
9888       info_ptr += 8;
9889       break;
9890     case DW_FORM_ref_udata:
9891       DW_ADDR (attr) = (cu->header.offset
9892                         + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
9893       info_ptr += bytes_read;
9894       break;
9895     case DW_FORM_indirect:
9896       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9897       info_ptr += bytes_read;
9898       info_ptr = read_attribute_value (attr, form, abfd, info_ptr, cu);
9899       break;
9900     default:
9901       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
9902              dwarf_form_name (form),
9903              bfd_get_filename (abfd));
9904     }
9905
9906   /* We have seen instances where the compiler tried to emit a byte
9907      size attribute of -1 which ended up being encoded as an unsigned
9908      0xffffffff.  Although 0xffffffff is technically a valid size value,
9909      an object of this size seems pretty unlikely so we can relatively
9910      safely treat these cases as if the size attribute was invalid and
9911      treat them as zero by default.  */
9912   if (attr->name == DW_AT_byte_size
9913       && form == DW_FORM_data4
9914       && DW_UNSND (attr) >= 0xffffffff)
9915     {
9916       complaint
9917         (&symfile_complaints,
9918          _("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
9919          hex_string (DW_UNSND (attr)));
9920       DW_UNSND (attr) = 0;
9921     }
9922
9923   return info_ptr;
9924 }
9925
9926 /* Read an attribute described by an abbreviated attribute.  */
9927
9928 static gdb_byte *
9929 read_attribute (struct attribute *attr, struct attr_abbrev *abbrev,
9930                 bfd *abfd, gdb_byte *info_ptr, struct dwarf2_cu *cu)
9931 {
9932   attr->name = abbrev->name;
9933   return read_attribute_value (attr, abbrev->form, abfd, info_ptr, cu);
9934 }
9935
9936 /* Read dwarf information from a buffer.  */
9937
9938 static unsigned int
9939 read_1_byte (bfd *abfd, gdb_byte *buf)
9940 {
9941   return bfd_get_8 (abfd, buf);
9942 }
9943
9944 static int
9945 read_1_signed_byte (bfd *abfd, gdb_byte *buf)
9946 {
9947   return bfd_get_signed_8 (abfd, buf);
9948 }
9949
9950 static unsigned int
9951 read_2_bytes (bfd *abfd, gdb_byte *buf)
9952 {
9953   return bfd_get_16 (abfd, buf);
9954 }
9955
9956 static int
9957 read_2_signed_bytes (bfd *abfd, gdb_byte *buf)
9958 {
9959   return bfd_get_signed_16 (abfd, buf);
9960 }
9961
9962 static unsigned int
9963 read_4_bytes (bfd *abfd, gdb_byte *buf)
9964 {
9965   return bfd_get_32 (abfd, buf);
9966 }
9967
9968 static int
9969 read_4_signed_bytes (bfd *abfd, gdb_byte *buf)
9970 {
9971   return bfd_get_signed_32 (abfd, buf);
9972 }
9973
9974 static ULONGEST
9975 read_8_bytes (bfd *abfd, gdb_byte *buf)
9976 {
9977   return bfd_get_64 (abfd, buf);
9978 }
9979
9980 static CORE_ADDR
9981 read_address (bfd *abfd, gdb_byte *buf, struct dwarf2_cu *cu,
9982               unsigned int *bytes_read)
9983 {
9984   struct comp_unit_head *cu_header = &cu->header;
9985   CORE_ADDR retval = 0;
9986
9987   if (cu_header->signed_addr_p)
9988     {
9989       switch (cu_header->addr_size)
9990         {
9991         case 2:
9992           retval = bfd_get_signed_16 (abfd, buf);
9993           break;
9994         case 4:
9995           retval = bfd_get_signed_32 (abfd, buf);
9996           break;
9997         case 8:
9998           retval = bfd_get_signed_64 (abfd, buf);
9999           break;
10000         default:
10001           internal_error (__FILE__, __LINE__,
10002                           _("read_address: bad switch, signed [in module %s]"),
10003                           bfd_get_filename (abfd));
10004         }
10005     }
10006   else
10007     {
10008       switch (cu_header->addr_size)
10009         {
10010         case 2:
10011           retval = bfd_get_16 (abfd, buf);
10012           break;
10013         case 4:
10014           retval = bfd_get_32 (abfd, buf);
10015           break;
10016         case 8:
10017           retval = bfd_get_64 (abfd, buf);
10018           break;
10019         default:
10020           internal_error (__FILE__, __LINE__,
10021                           _("read_address: bad switch, "
10022                             "unsigned [in module %s]"),
10023                           bfd_get_filename (abfd));
10024         }
10025     }
10026
10027   *bytes_read = cu_header->addr_size;
10028   return retval;
10029 }
10030
10031 /* Read the initial length from a section.  The (draft) DWARF 3
10032    specification allows the initial length to take up either 4 bytes
10033    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
10034    bytes describe the length and all offsets will be 8 bytes in length
10035    instead of 4.
10036
10037    An older, non-standard 64-bit format is also handled by this
10038    function.  The older format in question stores the initial length
10039    as an 8-byte quantity without an escape value.  Lengths greater
10040    than 2^32 aren't very common which means that the initial 4 bytes
10041    is almost always zero.  Since a length value of zero doesn't make
10042    sense for the 32-bit format, this initial zero can be considered to
10043    be an escape value which indicates the presence of the older 64-bit
10044    format.  As written, the code can't detect (old format) lengths
10045    greater than 4GB.  If it becomes necessary to handle lengths
10046    somewhat larger than 4GB, we could allow other small values (such
10047    as the non-sensical values of 1, 2, and 3) to also be used as
10048    escape values indicating the presence of the old format.
10049
10050    The value returned via bytes_read should be used to increment the
10051    relevant pointer after calling read_initial_length().
10052
10053    [ Note:  read_initial_length() and read_offset() are based on the
10054      document entitled "DWARF Debugging Information Format", revision
10055      3, draft 8, dated November 19, 2001.  This document was obtained
10056      from:
10057
10058         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
10059
10060      This document is only a draft and is subject to change.  (So beware.)
10061
10062      Details regarding the older, non-standard 64-bit format were
10063      determined empirically by examining 64-bit ELF files produced by
10064      the SGI toolchain on an IRIX 6.5 machine.
10065
10066      - Kevin, July 16, 2002
10067    ] */
10068
10069 static LONGEST
10070 read_initial_length (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read)
10071 {
10072   LONGEST length = bfd_get_32 (abfd, buf);
10073
10074   if (length == 0xffffffff)
10075     {
10076       length = bfd_get_64 (abfd, buf + 4);
10077       *bytes_read = 12;
10078     }
10079   else if (length == 0)
10080     {
10081       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
10082       length = bfd_get_64 (abfd, buf);
10083       *bytes_read = 8;
10084     }
10085   else
10086     {
10087       *bytes_read = 4;
10088     }
10089
10090   return length;
10091 }
10092
10093 /* Cover function for read_initial_length.
10094    Returns the length of the object at BUF, and stores the size of the
10095    initial length in *BYTES_READ and stores the size that offsets will be in
10096    *OFFSET_SIZE.
10097    If the initial length size is not equivalent to that specified in
10098    CU_HEADER then issue a complaint.
10099    This is useful when reading non-comp-unit headers.  */
10100
10101 static LONGEST
10102 read_checked_initial_length_and_offset (bfd *abfd, gdb_byte *buf,
10103                                         const struct comp_unit_head *cu_header,
10104                                         unsigned int *bytes_read,
10105                                         unsigned int *offset_size)
10106 {
10107   LONGEST length = read_initial_length (abfd, buf, bytes_read);
10108
10109   gdb_assert (cu_header->initial_length_size == 4
10110               || cu_header->initial_length_size == 8
10111               || cu_header->initial_length_size == 12);
10112
10113   if (cu_header->initial_length_size != *bytes_read)
10114     complaint (&symfile_complaints,
10115                _("intermixed 32-bit and 64-bit DWARF sections"));
10116
10117   *offset_size = (*bytes_read == 4) ? 4 : 8;
10118   return length;
10119 }
10120
10121 /* Read an offset from the data stream.  The size of the offset is
10122    given by cu_header->offset_size.  */
10123
10124 static LONGEST
10125 read_offset (bfd *abfd, gdb_byte *buf, const struct comp_unit_head *cu_header,
10126              unsigned int *bytes_read)
10127 {
10128   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
10129
10130   *bytes_read = cu_header->offset_size;
10131   return offset;
10132 }
10133
10134 /* Read an offset from the data stream.  */
10135
10136 static LONGEST
10137 read_offset_1 (bfd *abfd, gdb_byte *buf, unsigned int offset_size)
10138 {
10139   LONGEST retval = 0;
10140
10141   switch (offset_size)
10142     {
10143     case 4:
10144       retval = bfd_get_32 (abfd, buf);
10145       break;
10146     case 8:
10147       retval = bfd_get_64 (abfd, buf);
10148       break;
10149     default:
10150       internal_error (__FILE__, __LINE__,
10151                       _("read_offset_1: bad switch [in module %s]"),
10152                       bfd_get_filename (abfd));
10153     }
10154
10155   return retval;
10156 }
10157
10158 static gdb_byte *
10159 read_n_bytes (bfd *abfd, gdb_byte *buf, unsigned int size)
10160 {
10161   /* If the size of a host char is 8 bits, we can return a pointer
10162      to the buffer, otherwise we have to copy the data to a buffer
10163      allocated on the temporary obstack.  */
10164   gdb_assert (HOST_CHAR_BIT == 8);
10165   return buf;
10166 }
10167
10168 static char *
10169 read_direct_string (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
10170 {
10171   /* If the size of a host char is 8 bits, we can return a pointer
10172      to the string, otherwise we have to copy the string to a buffer
10173      allocated on the temporary obstack.  */
10174   gdb_assert (HOST_CHAR_BIT == 8);
10175   if (*buf == '\0')
10176     {
10177       *bytes_read_ptr = 1;
10178       return NULL;
10179     }
10180   *bytes_read_ptr = strlen ((char *) buf) + 1;
10181   return (char *) buf;
10182 }
10183
10184 static char *
10185 read_indirect_string (bfd *abfd, gdb_byte *buf,
10186                       const struct comp_unit_head *cu_header,
10187                       unsigned int *bytes_read_ptr)
10188 {
10189   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
10190
10191   dwarf2_read_section (dwarf2_per_objfile->objfile, &dwarf2_per_objfile->str);
10192   if (dwarf2_per_objfile->str.buffer == NULL)
10193     {
10194       error (_("DW_FORM_strp used without .debug_str section [in module %s]"),
10195                       bfd_get_filename (abfd));
10196       return NULL;
10197     }
10198   if (str_offset >= dwarf2_per_objfile->str.size)
10199     {
10200       error (_("DW_FORM_strp pointing outside of "
10201                ".debug_str section [in module %s]"),
10202              bfd_get_filename (abfd));
10203       return NULL;
10204     }
10205   gdb_assert (HOST_CHAR_BIT == 8);
10206   if (dwarf2_per_objfile->str.buffer[str_offset] == '\0')
10207     return NULL;
10208   return (char *) (dwarf2_per_objfile->str.buffer + str_offset);
10209 }
10210
10211 static unsigned long
10212 read_unsigned_leb128 (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
10213 {
10214   unsigned long result;
10215   unsigned int num_read;
10216   int i, shift;
10217   unsigned char byte;
10218
10219   result = 0;
10220   shift = 0;
10221   num_read = 0;
10222   i = 0;
10223   while (1)
10224     {
10225       byte = bfd_get_8 (abfd, buf);
10226       buf++;
10227       num_read++;
10228       result |= ((unsigned long)(byte & 127) << shift);
10229       if ((byte & 128) == 0)
10230         {
10231           break;
10232         }
10233       shift += 7;
10234     }
10235   *bytes_read_ptr = num_read;
10236   return result;
10237 }
10238
10239 static long
10240 read_signed_leb128 (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
10241 {
10242   long result;
10243   int i, shift, num_read;
10244   unsigned char byte;
10245
10246   result = 0;
10247   shift = 0;
10248   num_read = 0;
10249   i = 0;
10250   while (1)
10251     {
10252       byte = bfd_get_8 (abfd, buf);
10253       buf++;
10254       num_read++;
10255       result |= ((long)(byte & 127) << shift);
10256       shift += 7;
10257       if ((byte & 128) == 0)
10258         {
10259           break;
10260         }
10261     }
10262   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
10263     result |= -(((long)1) << shift);
10264   *bytes_read_ptr = num_read;
10265   return result;
10266 }
10267
10268 /* Return a pointer to just past the end of an LEB128 number in BUF.  */
10269
10270 static gdb_byte *
10271 skip_leb128 (bfd *abfd, gdb_byte *buf)
10272 {
10273   int byte;
10274
10275   while (1)
10276     {
10277       byte = bfd_get_8 (abfd, buf);
10278       buf++;
10279       if ((byte & 128) == 0)
10280         return buf;
10281     }
10282 }
10283
10284 static void
10285 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
10286 {
10287   switch (lang)
10288     {
10289     case DW_LANG_C89:
10290     case DW_LANG_C99:
10291     case DW_LANG_C:
10292       cu->language = language_c;
10293       break;
10294     case DW_LANG_C_plus_plus:
10295       cu->language = language_cplus;
10296       break;
10297     case DW_LANG_D:
10298       cu->language = language_d;
10299       break;
10300     case DW_LANG_Fortran77:
10301     case DW_LANG_Fortran90:
10302     case DW_LANG_Fortran95:
10303       cu->language = language_fortran;
10304       break;
10305     case DW_LANG_Mips_Assembler:
10306       cu->language = language_asm;
10307       break;
10308     case DW_LANG_Java:
10309       cu->language = language_java;
10310       break;
10311     case DW_LANG_Ada83:
10312     case DW_LANG_Ada95:
10313       cu->language = language_ada;
10314       break;
10315     case DW_LANG_Modula2:
10316       cu->language = language_m2;
10317       break;
10318     case DW_LANG_Pascal83:
10319       cu->language = language_pascal;
10320       break;
10321     case DW_LANG_ObjC:
10322       cu->language = language_objc;
10323       break;
10324     case DW_LANG_Cobol74:
10325     case DW_LANG_Cobol85:
10326     default:
10327       cu->language = language_minimal;
10328       break;
10329     }
10330   cu->language_defn = language_def (cu->language);
10331 }
10332
10333 /* Return the named attribute or NULL if not there.  */
10334
10335 static struct attribute *
10336 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
10337 {
10338   unsigned int i;
10339   struct attribute *spec = NULL;
10340
10341   for (i = 0; i < die->num_attrs; ++i)
10342     {
10343       if (die->attrs[i].name == name)
10344         return &die->attrs[i];
10345       if (die->attrs[i].name == DW_AT_specification
10346           || die->attrs[i].name == DW_AT_abstract_origin)
10347         spec = &die->attrs[i];
10348     }
10349
10350   if (spec)
10351     {
10352       die = follow_die_ref (die, spec, &cu);
10353       return dwarf2_attr (die, name, cu);
10354     }
10355
10356   return NULL;
10357 }
10358
10359 /* Return the named attribute or NULL if not there,
10360    but do not follow DW_AT_specification, etc.
10361    This is for use in contexts where we're reading .debug_types dies.
10362    Following DW_AT_specification, DW_AT_abstract_origin will take us
10363    back up the chain, and we want to go down.  */
10364
10365 static struct attribute *
10366 dwarf2_attr_no_follow (struct die_info *die, unsigned int name,
10367                        struct dwarf2_cu *cu)
10368 {
10369   unsigned int i;
10370
10371   for (i = 0; i < die->num_attrs; ++i)
10372     if (die->attrs[i].name == name)
10373       return &die->attrs[i];
10374
10375   return NULL;
10376 }
10377
10378 /* Return non-zero iff the attribute NAME is defined for the given DIE,
10379    and holds a non-zero value.  This function should only be used for
10380    DW_FORM_flag or DW_FORM_flag_present attributes.  */
10381
10382 static int
10383 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
10384 {
10385   struct attribute *attr = dwarf2_attr (die, name, cu);
10386
10387   return (attr && DW_UNSND (attr));
10388 }
10389
10390 static int
10391 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
10392 {
10393   /* A DIE is a declaration if it has a DW_AT_declaration attribute
10394      which value is non-zero.  However, we have to be careful with
10395      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
10396      (via dwarf2_flag_true_p) follows this attribute.  So we may
10397      end up accidently finding a declaration attribute that belongs
10398      to a different DIE referenced by the specification attribute,
10399      even though the given DIE does not have a declaration attribute.  */
10400   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
10401           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
10402 }
10403
10404 /* Return the die giving the specification for DIE, if there is
10405    one.  *SPEC_CU is the CU containing DIE on input, and the CU
10406    containing the return value on output.  If there is no
10407    specification, but there is an abstract origin, that is
10408    returned.  */
10409
10410 static struct die_info *
10411 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
10412 {
10413   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
10414                                              *spec_cu);
10415
10416   if (spec_attr == NULL)
10417     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
10418
10419   if (spec_attr == NULL)
10420     return NULL;
10421   else
10422     return follow_die_ref (die, spec_attr, spec_cu);
10423 }
10424
10425 /* Free the line_header structure *LH, and any arrays and strings it
10426    refers to.
10427    NOTE: This is also used as a "cleanup" function.  */
10428
10429 static void
10430 free_line_header (struct line_header *lh)
10431 {
10432   if (lh->standard_opcode_lengths)
10433     xfree (lh->standard_opcode_lengths);
10434
10435   /* Remember that all the lh->file_names[i].name pointers are
10436      pointers into debug_line_buffer, and don't need to be freed.  */
10437   if (lh->file_names)
10438     xfree (lh->file_names);
10439
10440   /* Similarly for the include directory names.  */
10441   if (lh->include_dirs)
10442     xfree (lh->include_dirs);
10443
10444   xfree (lh);
10445 }
10446
10447 /* Add an entry to LH's include directory table.  */
10448
10449 static void
10450 add_include_dir (struct line_header *lh, char *include_dir)
10451 {
10452   /* Grow the array if necessary.  */
10453   if (lh->include_dirs_size == 0)
10454     {
10455       lh->include_dirs_size = 1; /* for testing */
10456       lh->include_dirs = xmalloc (lh->include_dirs_size
10457                                   * sizeof (*lh->include_dirs));
10458     }
10459   else if (lh->num_include_dirs >= lh->include_dirs_size)
10460     {
10461       lh->include_dirs_size *= 2;
10462       lh->include_dirs = xrealloc (lh->include_dirs,
10463                                    (lh->include_dirs_size
10464                                     * sizeof (*lh->include_dirs)));
10465     }
10466
10467   lh->include_dirs[lh->num_include_dirs++] = include_dir;
10468 }
10469
10470 /* Add an entry to LH's file name table.  */
10471
10472 static void
10473 add_file_name (struct line_header *lh,
10474                char *name,
10475                unsigned int dir_index,
10476                unsigned int mod_time,
10477                unsigned int length)
10478 {
10479   struct file_entry *fe;
10480
10481   /* Grow the array if necessary.  */
10482   if (lh->file_names_size == 0)
10483     {
10484       lh->file_names_size = 1; /* for testing */
10485       lh->file_names = xmalloc (lh->file_names_size
10486                                 * sizeof (*lh->file_names));
10487     }
10488   else if (lh->num_file_names >= lh->file_names_size)
10489     {
10490       lh->file_names_size *= 2;
10491       lh->file_names = xrealloc (lh->file_names,
10492                                  (lh->file_names_size
10493                                   * sizeof (*lh->file_names)));
10494     }
10495
10496   fe = &lh->file_names[lh->num_file_names++];
10497   fe->name = name;
10498   fe->dir_index = dir_index;
10499   fe->mod_time = mod_time;
10500   fe->length = length;
10501   fe->included_p = 0;
10502   fe->symtab = NULL;
10503 }
10504
10505 /* Read the statement program header starting at OFFSET in
10506    .debug_line, according to the endianness of ABFD.  Return a pointer
10507    to a struct line_header, allocated using xmalloc.
10508
10509    NOTE: the strings in the include directory and file name tables of
10510    the returned object point into debug_line_buffer, and must not be
10511    freed.  */
10512
10513 static struct line_header *
10514 dwarf_decode_line_header (unsigned int offset, bfd *abfd,
10515                           struct dwarf2_cu *cu)
10516 {
10517   struct cleanup *back_to;
10518   struct line_header *lh;
10519   gdb_byte *line_ptr;
10520   unsigned int bytes_read, offset_size;
10521   int i;
10522   char *cur_dir, *cur_file;
10523
10524   dwarf2_read_section (dwarf2_per_objfile->objfile, &dwarf2_per_objfile->line);
10525   if (dwarf2_per_objfile->line.buffer == NULL)
10526     {
10527       complaint (&symfile_complaints, _("missing .debug_line section"));
10528       return 0;
10529     }
10530
10531   /* Make sure that at least there's room for the total_length field.
10532      That could be 12 bytes long, but we're just going to fudge that.  */
10533   if (offset + 4 >= dwarf2_per_objfile->line.size)
10534     {
10535       dwarf2_statement_list_fits_in_line_number_section_complaint ();
10536       return 0;
10537     }
10538
10539   lh = xmalloc (sizeof (*lh));
10540   memset (lh, 0, sizeof (*lh));
10541   back_to = make_cleanup ((make_cleanup_ftype *) free_line_header,
10542                           (void *) lh);
10543
10544   line_ptr = dwarf2_per_objfile->line.buffer + offset;
10545
10546   /* Read in the header.  */
10547   lh->total_length =
10548     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
10549                                             &bytes_read, &offset_size);
10550   line_ptr += bytes_read;
10551   if (line_ptr + lh->total_length > (dwarf2_per_objfile->line.buffer
10552                                      + dwarf2_per_objfile->line.size))
10553     {
10554       dwarf2_statement_list_fits_in_line_number_section_complaint ();
10555       return 0;
10556     }
10557   lh->statement_program_end = line_ptr + lh->total_length;
10558   lh->version = read_2_bytes (abfd, line_ptr);
10559   line_ptr += 2;
10560   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
10561   line_ptr += offset_size;
10562   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
10563   line_ptr += 1;
10564   if (lh->version >= 4)
10565     {
10566       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
10567       line_ptr += 1;
10568     }
10569   else
10570     lh->maximum_ops_per_instruction = 1;
10571
10572   if (lh->maximum_ops_per_instruction == 0)
10573     {
10574       lh->maximum_ops_per_instruction = 1;
10575       complaint (&symfile_complaints,
10576                  _("invalid maximum_ops_per_instruction "
10577                    "in `.debug_line' section"));
10578     }
10579
10580   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
10581   line_ptr += 1;
10582   lh->line_base = read_1_signed_byte (abfd, line_ptr);
10583   line_ptr += 1;
10584   lh->line_range = read_1_byte (abfd, line_ptr);
10585   line_ptr += 1;
10586   lh->opcode_base = read_1_byte (abfd, line_ptr);
10587   line_ptr += 1;
10588   lh->standard_opcode_lengths
10589     = xmalloc (lh->opcode_base * sizeof (lh->standard_opcode_lengths[0]));
10590
10591   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
10592   for (i = 1; i < lh->opcode_base; ++i)
10593     {
10594       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
10595       line_ptr += 1;
10596     }
10597
10598   /* Read directory table.  */
10599   while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
10600     {
10601       line_ptr += bytes_read;
10602       add_include_dir (lh, cur_dir);
10603     }
10604   line_ptr += bytes_read;
10605
10606   /* Read file name table.  */
10607   while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
10608     {
10609       unsigned int dir_index, mod_time, length;
10610
10611       line_ptr += bytes_read;
10612       dir_index = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
10613       line_ptr += bytes_read;
10614       mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
10615       line_ptr += bytes_read;
10616       length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
10617       line_ptr += bytes_read;
10618
10619       add_file_name (lh, cur_file, dir_index, mod_time, length);
10620     }
10621   line_ptr += bytes_read;
10622   lh->statement_program_start = line_ptr;
10623
10624   if (line_ptr > (dwarf2_per_objfile->line.buffer
10625                   + dwarf2_per_objfile->line.size))
10626     complaint (&symfile_complaints,
10627                _("line number info header doesn't "
10628                  "fit in `.debug_line' section"));
10629
10630   discard_cleanups (back_to);
10631   return lh;
10632 }
10633
10634 /* This function exists to work around a bug in certain compilers
10635    (particularly GCC 2.95), in which the first line number marker of a
10636    function does not show up until after the prologue, right before
10637    the second line number marker.  This function shifts ADDRESS down
10638    to the beginning of the function if necessary, and is called on
10639    addresses passed to record_line.  */
10640
10641 static CORE_ADDR
10642 check_cu_functions (CORE_ADDR address, struct dwarf2_cu *cu)
10643 {
10644   struct function_range *fn;
10645
10646   /* Find the function_range containing address.  */
10647   if (!cu->first_fn)
10648     return address;
10649
10650   if (!cu->cached_fn)
10651     cu->cached_fn = cu->first_fn;
10652
10653   fn = cu->cached_fn;
10654   while (fn)
10655     if (fn->lowpc <= address && fn->highpc > address)
10656       goto found;
10657     else
10658       fn = fn->next;
10659
10660   fn = cu->first_fn;
10661   while (fn && fn != cu->cached_fn)
10662     if (fn->lowpc <= address && fn->highpc > address)
10663       goto found;
10664     else
10665       fn = fn->next;
10666
10667   return address;
10668
10669  found:
10670   if (fn->seen_line)
10671     return address;
10672   if (address != fn->lowpc)
10673     complaint (&symfile_complaints,
10674                _("misplaced first line number at 0x%lx for '%s'"),
10675                (unsigned long) address, fn->name);
10676   fn->seen_line = 1;
10677   return fn->lowpc;
10678 }
10679
10680 /* Subroutine of dwarf_decode_lines to simplify it.
10681    Return the file name of the psymtab for included file FILE_INDEX
10682    in line header LH of PST.
10683    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
10684    If space for the result is malloc'd, it will be freed by a cleanup.
10685    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.  */
10686
10687 static char *
10688 psymtab_include_file_name (const struct line_header *lh, int file_index,
10689                            const struct partial_symtab *pst,
10690                            const char *comp_dir)
10691 {
10692   const struct file_entry fe = lh->file_names [file_index];
10693   char *include_name = fe.name;
10694   char *include_name_to_compare = include_name;
10695   char *dir_name = NULL;
10696   const char *pst_filename;
10697   char *copied_name = NULL;
10698   int file_is_pst;
10699
10700   if (fe.dir_index)
10701     dir_name = lh->include_dirs[fe.dir_index - 1];
10702
10703   if (!IS_ABSOLUTE_PATH (include_name)
10704       && (dir_name != NULL || comp_dir != NULL))
10705     {
10706       /* Avoid creating a duplicate psymtab for PST.
10707          We do this by comparing INCLUDE_NAME and PST_FILENAME.
10708          Before we do the comparison, however, we need to account
10709          for DIR_NAME and COMP_DIR.
10710          First prepend dir_name (if non-NULL).  If we still don't
10711          have an absolute path prepend comp_dir (if non-NULL).
10712          However, the directory we record in the include-file's
10713          psymtab does not contain COMP_DIR (to match the
10714          corresponding symtab(s)).
10715
10716          Example:
10717
10718          bash$ cd /tmp
10719          bash$ gcc -g ./hello.c
10720          include_name = "hello.c"
10721          dir_name = "."
10722          DW_AT_comp_dir = comp_dir = "/tmp"
10723          DW_AT_name = "./hello.c"  */
10724
10725       if (dir_name != NULL)
10726         {
10727           include_name = concat (dir_name, SLASH_STRING,
10728                                  include_name, (char *)NULL);
10729           include_name_to_compare = include_name;
10730           make_cleanup (xfree, include_name);
10731         }
10732       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
10733         {
10734           include_name_to_compare = concat (comp_dir, SLASH_STRING,
10735                                             include_name, (char *)NULL);
10736         }
10737     }
10738
10739   pst_filename = pst->filename;
10740   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
10741     {
10742       copied_name = concat (pst->dirname, SLASH_STRING,
10743                             pst_filename, (char *)NULL);
10744       pst_filename = copied_name;
10745     }
10746
10747   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
10748
10749   if (include_name_to_compare != include_name)
10750     xfree (include_name_to_compare);
10751   if (copied_name != NULL)
10752     xfree (copied_name);
10753
10754   if (file_is_pst)
10755     return NULL;
10756   return include_name;
10757 }
10758
10759 /* Ignore this record_line request.  */
10760
10761 static void
10762 noop_record_line (struct subfile *subfile, int line, CORE_ADDR pc)
10763 {
10764   return;
10765 }
10766
10767 /* Decode the Line Number Program (LNP) for the given line_header
10768    structure and CU.  The actual information extracted and the type
10769    of structures created from the LNP depends on the value of PST.
10770
10771    1. If PST is NULL, then this procedure uses the data from the program
10772       to create all necessary symbol tables, and their linetables.
10773
10774    2. If PST is not NULL, this procedure reads the program to determine
10775       the list of files included by the unit represented by PST, and
10776       builds all the associated partial symbol tables.
10777
10778    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
10779    It is used for relative paths in the line table.
10780    NOTE: When processing partial symtabs (pst != NULL),
10781    comp_dir == pst->dirname.
10782
10783    NOTE: It is important that psymtabs have the same file name (via strcmp)
10784    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
10785    symtab we don't use it in the name of the psymtabs we create.
10786    E.g. expand_line_sal requires this when finding psymtabs to expand.
10787    A good testcase for this is mb-inline.exp.  */
10788
10789 static void
10790 dwarf_decode_lines (struct line_header *lh, const char *comp_dir, bfd *abfd,
10791                     struct dwarf2_cu *cu, struct partial_symtab *pst)
10792 {
10793   gdb_byte *line_ptr, *extended_end;
10794   gdb_byte *line_end;
10795   unsigned int bytes_read, extended_len;
10796   unsigned char op_code, extended_op, adj_opcode;
10797   CORE_ADDR baseaddr;
10798   struct objfile *objfile = cu->objfile;
10799   struct gdbarch *gdbarch = get_objfile_arch (objfile);
10800   const int decode_for_pst_p = (pst != NULL);
10801   struct subfile *last_subfile = NULL, *first_subfile = current_subfile;
10802   void (*p_record_line) (struct subfile *subfile, int line, CORE_ADDR pc)
10803     = record_line;
10804
10805   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10806
10807   line_ptr = lh->statement_program_start;
10808   line_end = lh->statement_program_end;
10809
10810   /* Read the statement sequences until there's nothing left.  */
10811   while (line_ptr < line_end)
10812     {
10813       /* state machine registers  */
10814       CORE_ADDR address = 0;
10815       unsigned int file = 1;
10816       unsigned int line = 1;
10817       unsigned int column = 0;
10818       int is_stmt = lh->default_is_stmt;
10819       int basic_block = 0;
10820       int end_sequence = 0;
10821       CORE_ADDR addr;
10822       unsigned char op_index = 0;
10823
10824       if (!decode_for_pst_p && lh->num_file_names >= file)
10825         {
10826           /* Start a subfile for the current file of the state machine.  */
10827           /* lh->include_dirs and lh->file_names are 0-based, but the
10828              directory and file name numbers in the statement program
10829              are 1-based.  */
10830           struct file_entry *fe = &lh->file_names[file - 1];
10831           char *dir = NULL;
10832
10833           if (fe->dir_index)
10834             dir = lh->include_dirs[fe->dir_index - 1];
10835
10836           dwarf2_start_subfile (fe->name, dir, comp_dir);
10837         }
10838
10839       /* Decode the table.  */
10840       while (!end_sequence)
10841         {
10842           op_code = read_1_byte (abfd, line_ptr);
10843           line_ptr += 1;
10844           if (line_ptr > line_end)
10845             {
10846               dwarf2_debug_line_missing_end_sequence_complaint ();
10847               break;
10848             }
10849
10850           if (op_code >= lh->opcode_base)
10851             {
10852               /* Special operand.  */
10853               adj_opcode = op_code - lh->opcode_base;
10854               address += (((op_index + (adj_opcode / lh->line_range))
10855                            / lh->maximum_ops_per_instruction)
10856                           * lh->minimum_instruction_length);
10857               op_index = ((op_index + (adj_opcode / lh->line_range))
10858                           % lh->maximum_ops_per_instruction);
10859               line += lh->line_base + (adj_opcode % lh->line_range);
10860               if (lh->num_file_names < file || file == 0)
10861                 dwarf2_debug_line_missing_file_complaint ();
10862               /* For now we ignore lines not starting on an
10863                  instruction boundary.  */
10864               else if (op_index == 0)
10865                 {
10866                   lh->file_names[file - 1].included_p = 1;
10867                   if (!decode_for_pst_p && is_stmt)
10868                     {
10869                       if (last_subfile != current_subfile)
10870                         {
10871                           addr = gdbarch_addr_bits_remove (gdbarch, address);
10872                           if (last_subfile)
10873                             (*p_record_line) (last_subfile, 0, addr);
10874                           last_subfile = current_subfile;
10875                         }
10876                       /* Append row to matrix using current values.  */
10877                       addr = check_cu_functions (address, cu);
10878                       addr = gdbarch_addr_bits_remove (gdbarch, addr);
10879                       (*p_record_line) (current_subfile, line, addr);
10880                     }
10881                 }
10882               basic_block = 0;
10883             }
10884           else switch (op_code)
10885             {
10886             case DW_LNS_extended_op:
10887               extended_len = read_unsigned_leb128 (abfd, line_ptr,
10888                                                    &bytes_read);
10889               line_ptr += bytes_read;
10890               extended_end = line_ptr + extended_len;
10891               extended_op = read_1_byte (abfd, line_ptr);
10892               line_ptr += 1;
10893               switch (extended_op)
10894                 {
10895                 case DW_LNE_end_sequence:
10896                   p_record_line = record_line;
10897                   end_sequence = 1;
10898                   break;
10899                 case DW_LNE_set_address:
10900                   address = read_address (abfd, line_ptr, cu, &bytes_read);
10901
10902                   if (address == 0 && !dwarf2_per_objfile->has_section_at_zero)
10903                     {
10904                       /* This line table is for a function which has been
10905                          GCd by the linker.  Ignore it.  PR gdb/12528 */
10906
10907                       long line_offset
10908                         = line_ptr - dwarf2_per_objfile->line.buffer;
10909
10910                       complaint (&symfile_complaints,
10911                                  _(".debug_line address at offset 0x%lx is 0 "
10912                                    "[in module %s]"),
10913                                  line_offset, cu->objfile->name);
10914                       p_record_line = noop_record_line;
10915                     }
10916
10917                   op_index = 0;
10918                   line_ptr += bytes_read;
10919                   address += baseaddr;
10920                   break;
10921                 case DW_LNE_define_file:
10922                   {
10923                     char *cur_file;
10924                     unsigned int dir_index, mod_time, length;
10925
10926                     cur_file = read_direct_string (abfd, line_ptr,
10927                                                    &bytes_read);
10928                     line_ptr += bytes_read;
10929                     dir_index =
10930                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
10931                     line_ptr += bytes_read;
10932                     mod_time =
10933                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
10934                     line_ptr += bytes_read;
10935                     length =
10936                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
10937                     line_ptr += bytes_read;
10938                     add_file_name (lh, cur_file, dir_index, mod_time, length);
10939                   }
10940                   break;
10941                 case DW_LNE_set_discriminator:
10942                   /* The discriminator is not interesting to the debugger;
10943                      just ignore it.  */
10944                   line_ptr = extended_end;
10945                   break;
10946                 default:
10947                   complaint (&symfile_complaints,
10948                              _("mangled .debug_line section"));
10949                   return;
10950                 }
10951               /* Make sure that we parsed the extended op correctly.  If e.g.
10952                  we expected a different address size than the producer used,
10953                  we may have read the wrong number of bytes.  */
10954               if (line_ptr != extended_end)
10955                 {
10956                   complaint (&symfile_complaints,
10957                              _("mangled .debug_line section"));
10958                   return;
10959                 }
10960               break;
10961             case DW_LNS_copy:
10962               if (lh->num_file_names < file || file == 0)
10963                 dwarf2_debug_line_missing_file_complaint ();
10964               else
10965                 {
10966                   lh->file_names[file - 1].included_p = 1;
10967                   if (!decode_for_pst_p && is_stmt)
10968                     {
10969                       if (last_subfile != current_subfile)
10970                         {
10971                           addr = gdbarch_addr_bits_remove (gdbarch, address);
10972                           if (last_subfile)
10973                             (*p_record_line) (last_subfile, 0, addr);
10974                           last_subfile = current_subfile;
10975                         }
10976                       addr = check_cu_functions (address, cu);
10977                       addr = gdbarch_addr_bits_remove (gdbarch, addr);
10978                       (*p_record_line) (current_subfile, line, addr);
10979                     }
10980                 }
10981               basic_block = 0;
10982               break;
10983             case DW_LNS_advance_pc:
10984               {
10985                 CORE_ADDR adjust
10986                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
10987
10988                 address += (((op_index + adjust)
10989                              / lh->maximum_ops_per_instruction)
10990                             * lh->minimum_instruction_length);
10991                 op_index = ((op_index + adjust)
10992                             % lh->maximum_ops_per_instruction);
10993                 line_ptr += bytes_read;
10994               }
10995               break;
10996             case DW_LNS_advance_line:
10997               line += read_signed_leb128 (abfd, line_ptr, &bytes_read);
10998               line_ptr += bytes_read;
10999               break;
11000             case DW_LNS_set_file:
11001               {
11002                 /* The arrays lh->include_dirs and lh->file_names are
11003                    0-based, but the directory and file name numbers in
11004                    the statement program are 1-based.  */
11005                 struct file_entry *fe;
11006                 char *dir = NULL;
11007
11008                 file = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
11009                 line_ptr += bytes_read;
11010                 if (lh->num_file_names < file || file == 0)
11011                   dwarf2_debug_line_missing_file_complaint ();
11012                 else
11013                   {
11014                     fe = &lh->file_names[file - 1];
11015                     if (fe->dir_index)
11016                       dir = lh->include_dirs[fe->dir_index - 1];
11017                     if (!decode_for_pst_p)
11018                       {
11019                         last_subfile = current_subfile;
11020                         dwarf2_start_subfile (fe->name, dir, comp_dir);
11021                       }
11022                   }
11023               }
11024               break;
11025             case DW_LNS_set_column:
11026               column = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
11027               line_ptr += bytes_read;
11028               break;
11029             case DW_LNS_negate_stmt:
11030               is_stmt = (!is_stmt);
11031               break;
11032             case DW_LNS_set_basic_block:
11033               basic_block = 1;
11034               break;
11035             /* Add to the address register of the state machine the
11036                address increment value corresponding to special opcode
11037                255.  I.e., this value is scaled by the minimum
11038                instruction length since special opcode 255 would have
11039                scaled the increment.  */
11040             case DW_LNS_const_add_pc:
11041               {
11042                 CORE_ADDR adjust = (255 - lh->opcode_base) / lh->line_range;
11043
11044                 address += (((op_index + adjust)
11045                              / lh->maximum_ops_per_instruction)
11046                             * lh->minimum_instruction_length);
11047                 op_index = ((op_index + adjust)
11048                             % lh->maximum_ops_per_instruction);
11049               }
11050               break;
11051             case DW_LNS_fixed_advance_pc:
11052               address += read_2_bytes (abfd, line_ptr);
11053               op_index = 0;
11054               line_ptr += 2;
11055               break;
11056             default:
11057               {
11058                 /* Unknown standard opcode, ignore it.  */
11059                 int i;
11060
11061                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
11062                   {
11063                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
11064                     line_ptr += bytes_read;
11065                   }
11066               }
11067             }
11068         }
11069       if (lh->num_file_names < file || file == 0)
11070         dwarf2_debug_line_missing_file_complaint ();
11071       else
11072         {
11073           lh->file_names[file - 1].included_p = 1;
11074           if (!decode_for_pst_p)
11075             {
11076               addr = gdbarch_addr_bits_remove (gdbarch, address);
11077               (*p_record_line) (current_subfile, 0, addr);
11078             }
11079         }
11080     }
11081
11082   if (decode_for_pst_p)
11083     {
11084       int file_index;
11085
11086       /* Now that we're done scanning the Line Header Program, we can
11087          create the psymtab of each included file.  */
11088       for (file_index = 0; file_index < lh->num_file_names; file_index++)
11089         if (lh->file_names[file_index].included_p == 1)
11090           {
11091             char *include_name =
11092               psymtab_include_file_name (lh, file_index, pst, comp_dir);
11093             if (include_name != NULL)
11094               dwarf2_create_include_psymtab (include_name, pst, objfile);
11095           }
11096     }
11097   else
11098     {
11099       /* Make sure a symtab is created for every file, even files
11100          which contain only variables (i.e. no code with associated
11101          line numbers).  */
11102
11103       int i;
11104       struct file_entry *fe;
11105
11106       for (i = 0; i < lh->num_file_names; i++)
11107         {
11108           char *dir = NULL;
11109
11110           fe = &lh->file_names[i];
11111           if (fe->dir_index)
11112             dir = lh->include_dirs[fe->dir_index - 1];
11113           dwarf2_start_subfile (fe->name, dir, comp_dir);
11114
11115           /* Skip the main file; we don't need it, and it must be
11116              allocated last, so that it will show up before the
11117              non-primary symtabs in the objfile's symtab list.  */
11118           if (current_subfile == first_subfile)
11119             continue;
11120
11121           if (current_subfile->symtab == NULL)
11122             current_subfile->symtab = allocate_symtab (current_subfile->name,
11123                                                        cu->objfile);
11124           fe->symtab = current_subfile->symtab;
11125         }
11126     }
11127 }
11128
11129 /* Start a subfile for DWARF.  FILENAME is the name of the file and
11130    DIRNAME the name of the source directory which contains FILENAME
11131    or NULL if not known.  COMP_DIR is the compilation directory for the
11132    linetable's compilation unit or NULL if not known.
11133    This routine tries to keep line numbers from identical absolute and
11134    relative file names in a common subfile.
11135
11136    Using the `list' example from the GDB testsuite, which resides in
11137    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
11138    of /srcdir/list0.c yields the following debugging information for list0.c:
11139
11140    DW_AT_name:          /srcdir/list0.c
11141    DW_AT_comp_dir:              /compdir
11142    files.files[0].name: list0.h
11143    files.files[0].dir:  /srcdir
11144    files.files[1].name: list0.c
11145    files.files[1].dir:  /srcdir
11146
11147    The line number information for list0.c has to end up in a single
11148    subfile, so that `break /srcdir/list0.c:1' works as expected.
11149    start_subfile will ensure that this happens provided that we pass the
11150    concatenation of files.files[1].dir and files.files[1].name as the
11151    subfile's name.  */
11152
11153 static void
11154 dwarf2_start_subfile (char *filename, const char *dirname,
11155                       const char *comp_dir)
11156 {
11157   char *fullname;
11158
11159   /* While reading the DIEs, we call start_symtab(DW_AT_name, DW_AT_comp_dir).
11160      `start_symtab' will always pass the contents of DW_AT_comp_dir as
11161      second argument to start_subfile.  To be consistent, we do the
11162      same here.  In order not to lose the line information directory,
11163      we concatenate it to the filename when it makes sense.
11164      Note that the Dwarf3 standard says (speaking of filenames in line
11165      information): ``The directory index is ignored for file names
11166      that represent full path names''.  Thus ignoring dirname in the
11167      `else' branch below isn't an issue.  */
11168
11169   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
11170     fullname = concat (dirname, SLASH_STRING, filename, (char *)NULL);
11171   else
11172     fullname = filename;
11173
11174   start_subfile (fullname, comp_dir);
11175
11176   if (fullname != filename)
11177     xfree (fullname);
11178 }
11179
11180 static void
11181 var_decode_location (struct attribute *attr, struct symbol *sym,
11182                      struct dwarf2_cu *cu)
11183 {
11184   struct objfile *objfile = cu->objfile;
11185   struct comp_unit_head *cu_header = &cu->header;
11186
11187   /* NOTE drow/2003-01-30: There used to be a comment and some special
11188      code here to turn a symbol with DW_AT_external and a
11189      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
11190      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
11191      with some versions of binutils) where shared libraries could have
11192      relocations against symbols in their debug information - the
11193      minimal symbol would have the right address, but the debug info
11194      would not.  It's no longer necessary, because we will explicitly
11195      apply relocations when we read in the debug information now.  */
11196
11197   /* A DW_AT_location attribute with no contents indicates that a
11198      variable has been optimized away.  */
11199   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
11200     {
11201       SYMBOL_CLASS (sym) = LOC_OPTIMIZED_OUT;
11202       return;
11203     }
11204
11205   /* Handle one degenerate form of location expression specially, to
11206      preserve GDB's previous behavior when section offsets are
11207      specified.  If this is just a DW_OP_addr then mark this symbol
11208      as LOC_STATIC.  */
11209
11210   if (attr_form_is_block (attr)
11211       && DW_BLOCK (attr)->size == 1 + cu_header->addr_size
11212       && DW_BLOCK (attr)->data[0] == DW_OP_addr)
11213     {
11214       unsigned int dummy;
11215
11216       SYMBOL_VALUE_ADDRESS (sym) =
11217         read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
11218       SYMBOL_CLASS (sym) = LOC_STATIC;
11219       fixup_symbol_section (sym, objfile);
11220       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
11221                                               SYMBOL_SECTION (sym));
11222       return;
11223     }
11224
11225   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
11226      expression evaluator, and use LOC_COMPUTED only when necessary
11227      (i.e. when the value of a register or memory location is
11228      referenced, or a thread-local block, etc.).  Then again, it might
11229      not be worthwhile.  I'm assuming that it isn't unless performance
11230      or memory numbers show me otherwise.  */
11231
11232   dwarf2_symbol_mark_computed (attr, sym, cu);
11233   SYMBOL_CLASS (sym) = LOC_COMPUTED;
11234
11235   if (SYMBOL_COMPUTED_OPS (sym) == &dwarf2_loclist_funcs)
11236     cu->has_loclist = 1;
11237 }
11238
11239 /* Given a pointer to a DWARF information entry, figure out if we need
11240    to make a symbol table entry for it, and if so, create a new entry
11241    and return a pointer to it.
11242    If TYPE is NULL, determine symbol type from the die, otherwise
11243    used the passed type.
11244    If SPACE is not NULL, use it to hold the new symbol.  If it is
11245    NULL, allocate a new symbol on the objfile's obstack.  */
11246
11247 static struct symbol *
11248 new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
11249                  struct symbol *space)
11250 {
11251   struct objfile *objfile = cu->objfile;
11252   struct symbol *sym = NULL;
11253   char *name;
11254   struct attribute *attr = NULL;
11255   struct attribute *attr2 = NULL;
11256   CORE_ADDR baseaddr;
11257   struct pending **list_to_add = NULL;
11258
11259   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
11260
11261   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11262
11263   name = dwarf2_name (die, cu);
11264   if (name)
11265     {
11266       const char *linkagename;
11267       int suppress_add = 0;
11268
11269       if (space)
11270         sym = space;
11271       else
11272         sym = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct symbol);
11273       OBJSTAT (objfile, n_syms++);
11274
11275       /* Cache this symbol's name and the name's demangled form (if any).  */
11276       SYMBOL_SET_LANGUAGE (sym, cu->language);
11277       linkagename = dwarf2_physname (name, die, cu);
11278       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
11279
11280       /* Fortran does not have mangling standard and the mangling does differ
11281          between gfortran, iFort etc.  */
11282       if (cu->language == language_fortran
11283           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
11284         symbol_set_demangled_name (&(sym->ginfo),
11285                                    (char *) dwarf2_full_name (name, die, cu),
11286                                    NULL);
11287
11288       /* Default assumptions.
11289          Use the passed type or decode it from the die.  */
11290       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
11291       SYMBOL_CLASS (sym) = LOC_OPTIMIZED_OUT;
11292       if (type != NULL)
11293         SYMBOL_TYPE (sym) = type;
11294       else
11295         SYMBOL_TYPE (sym) = die_type (die, cu);
11296       attr = dwarf2_attr (die,
11297                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
11298                           cu);
11299       if (attr)
11300         {
11301           SYMBOL_LINE (sym) = DW_UNSND (attr);
11302         }
11303
11304       attr = dwarf2_attr (die,
11305                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
11306                           cu);
11307       if (attr)
11308         {
11309           int file_index = DW_UNSND (attr);
11310
11311           if (cu->line_header == NULL
11312               || file_index > cu->line_header->num_file_names)
11313             complaint (&symfile_complaints,
11314                        _("file index out of range"));
11315           else if (file_index > 0)
11316             {
11317               struct file_entry *fe;
11318
11319               fe = &cu->line_header->file_names[file_index - 1];
11320               SYMBOL_SYMTAB (sym) = fe->symtab;
11321             }
11322         }
11323
11324       switch (die->tag)
11325         {
11326         case DW_TAG_label:
11327           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
11328           if (attr)
11329             {
11330               SYMBOL_VALUE_ADDRESS (sym) = DW_ADDR (attr) + baseaddr;
11331             }
11332           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
11333           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
11334           SYMBOL_CLASS (sym) = LOC_LABEL;
11335           add_symbol_to_list (sym, cu->list_in_scope);
11336           break;
11337         case DW_TAG_subprogram:
11338           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
11339              finish_block.  */
11340           SYMBOL_CLASS (sym) = LOC_BLOCK;
11341           attr2 = dwarf2_attr (die, DW_AT_external, cu);
11342           if ((attr2 && (DW_UNSND (attr2) != 0))
11343               || cu->language == language_ada)
11344             {
11345               /* Subprograms marked external are stored as a global symbol.
11346                  Ada subprograms, whether marked external or not, are always
11347                  stored as a global symbol, because we want to be able to
11348                  access them globally.  For instance, we want to be able
11349                  to break on a nested subprogram without having to
11350                  specify the context.  */
11351               list_to_add = &global_symbols;
11352             }
11353           else
11354             {
11355               list_to_add = cu->list_in_scope;
11356             }
11357           break;
11358         case DW_TAG_inlined_subroutine:
11359           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
11360              finish_block.  */
11361           SYMBOL_CLASS (sym) = LOC_BLOCK;
11362           SYMBOL_INLINED (sym) = 1;
11363           /* Do not add the symbol to any lists.  It will be found via
11364              BLOCK_FUNCTION from the blockvector.  */
11365           break;
11366         case DW_TAG_template_value_param:
11367           suppress_add = 1;
11368           /* Fall through.  */
11369         case DW_TAG_constant:
11370         case DW_TAG_variable:
11371         case DW_TAG_member:
11372           /* Compilation with minimal debug info may result in
11373              variables with missing type entries.  Change the
11374              misleading `void' type to something sensible.  */
11375           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
11376             SYMBOL_TYPE (sym)
11377               = objfile_type (objfile)->nodebug_data_symbol;
11378
11379           attr = dwarf2_attr (die, DW_AT_const_value, cu);
11380           /* In the case of DW_TAG_member, we should only be called for
11381              static const members.  */
11382           if (die->tag == DW_TAG_member)
11383             {
11384               /* dwarf2_add_field uses die_is_declaration,
11385                  so we do the same.  */
11386               gdb_assert (die_is_declaration (die, cu));
11387               gdb_assert (attr);
11388             }
11389           if (attr)
11390             {
11391               dwarf2_const_value (attr, sym, cu);
11392               attr2 = dwarf2_attr (die, DW_AT_external, cu);
11393               if (!suppress_add)
11394                 {
11395                   if (attr2 && (DW_UNSND (attr2) != 0))
11396                     list_to_add = &global_symbols;
11397                   else
11398                     list_to_add = cu->list_in_scope;
11399                 }
11400               break;
11401             }
11402           attr = dwarf2_attr (die, DW_AT_location, cu);
11403           if (attr)
11404             {
11405               var_decode_location (attr, sym, cu);
11406               attr2 = dwarf2_attr (die, DW_AT_external, cu);
11407               if (SYMBOL_CLASS (sym) == LOC_STATIC
11408                   && SYMBOL_VALUE_ADDRESS (sym) == 0
11409                   && !dwarf2_per_objfile->has_section_at_zero)
11410                 {
11411                   /* When a static variable is eliminated by the linker,
11412                      the corresponding debug information is not stripped
11413                      out, but the variable address is set to null;
11414                      do not add such variables into symbol table.  */
11415                 }
11416               else if (attr2 && (DW_UNSND (attr2) != 0))
11417                 {
11418                   /* Workaround gfortran PR debug/40040 - it uses
11419                      DW_AT_location for variables in -fPIC libraries which may
11420                      get overriden by other libraries/executable and get
11421                      a different address.  Resolve it by the minimal symbol
11422                      which may come from inferior's executable using copy
11423                      relocation.  Make this workaround only for gfortran as for
11424                      other compilers GDB cannot guess the minimal symbol
11425                      Fortran mangling kind.  */
11426                   if (cu->language == language_fortran && die->parent
11427                       && die->parent->tag == DW_TAG_module
11428                       && cu->producer
11429                       && strncmp (cu->producer, "GNU Fortran ", 12) == 0)
11430                     SYMBOL_CLASS (sym) = LOC_UNRESOLVED;
11431
11432                   /* A variable with DW_AT_external is never static,
11433                      but it may be block-scoped.  */
11434                   list_to_add = (cu->list_in_scope == &file_symbols
11435                                  ? &global_symbols : cu->list_in_scope);
11436                 }
11437               else
11438                 list_to_add = cu->list_in_scope;
11439             }
11440           else
11441             {
11442               /* We do not know the address of this symbol.
11443                  If it is an external symbol and we have type information
11444                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
11445                  The address of the variable will then be determined from
11446                  the minimal symbol table whenever the variable is
11447                  referenced.  */
11448               attr2 = dwarf2_attr (die, DW_AT_external, cu);
11449               if (attr2 && (DW_UNSND (attr2) != 0)
11450                   && dwarf2_attr (die, DW_AT_type, cu) != NULL)
11451                 {
11452                   /* A variable with DW_AT_external is never static, but it
11453                      may be block-scoped.  */
11454                   list_to_add = (cu->list_in_scope == &file_symbols
11455                                  ? &global_symbols : cu->list_in_scope);
11456
11457                   SYMBOL_CLASS (sym) = LOC_UNRESOLVED;
11458                 }
11459               else if (!die_is_declaration (die, cu))
11460                 {
11461                   /* Use the default LOC_OPTIMIZED_OUT class.  */
11462                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
11463                   if (!suppress_add)
11464                     list_to_add = cu->list_in_scope;
11465                 }
11466             }
11467           break;
11468         case DW_TAG_formal_parameter:
11469           /* If we are inside a function, mark this as an argument.  If
11470              not, we might be looking at an argument to an inlined function
11471              when we do not have enough information to show inlined frames;
11472              pretend it's a local variable in that case so that the user can
11473              still see it.  */
11474           if (context_stack_depth > 0
11475               && context_stack[context_stack_depth - 1].name != NULL)
11476             SYMBOL_IS_ARGUMENT (sym) = 1;
11477           attr = dwarf2_attr (die, DW_AT_location, cu);
11478           if (attr)
11479             {
11480               var_decode_location (attr, sym, cu);
11481             }
11482           attr = dwarf2_attr (die, DW_AT_const_value, cu);
11483           if (attr)
11484             {
11485               dwarf2_const_value (attr, sym, cu);
11486             }
11487           attr = dwarf2_attr (die, DW_AT_variable_parameter, cu);
11488           if (attr && DW_UNSND (attr))
11489             {
11490               struct type *ref_type;
11491
11492               ref_type = lookup_reference_type (SYMBOL_TYPE (sym));
11493               SYMBOL_TYPE (sym) = ref_type;
11494             }
11495
11496           list_to_add = cu->list_in_scope;
11497           break;
11498         case DW_TAG_unspecified_parameters:
11499           /* From varargs functions; gdb doesn't seem to have any
11500              interest in this information, so just ignore it for now.
11501              (FIXME?) */
11502           break;
11503         case DW_TAG_template_type_param:
11504           suppress_add = 1;
11505           /* Fall through.  */
11506         case DW_TAG_class_type:
11507         case DW_TAG_interface_type:
11508         case DW_TAG_structure_type:
11509         case DW_TAG_union_type:
11510         case DW_TAG_set_type:
11511         case DW_TAG_enumeration_type:
11512           SYMBOL_CLASS (sym) = LOC_TYPEDEF;
11513           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
11514
11515           {
11516             /* NOTE: carlton/2003-11-10: C++ and Java class symbols shouldn't
11517                really ever be static objects: otherwise, if you try
11518                to, say, break of a class's method and you're in a file
11519                which doesn't mention that class, it won't work unless
11520                the check for all static symbols in lookup_symbol_aux
11521                saves you.  See the OtherFileClass tests in
11522                gdb.c++/namespace.exp.  */
11523
11524             if (!suppress_add)
11525               {
11526                 list_to_add = (cu->list_in_scope == &file_symbols
11527                                && (cu->language == language_cplus
11528                                    || cu->language == language_java)
11529                                ? &global_symbols : cu->list_in_scope);
11530
11531                 /* The semantics of C++ state that "struct foo {
11532                    ... }" also defines a typedef for "foo".  A Java
11533                    class declaration also defines a typedef for the
11534                    class.  */
11535                 if (cu->language == language_cplus
11536                     || cu->language == language_java
11537                     || cu->language == language_ada)
11538                   {
11539                     /* The symbol's name is already allocated along
11540                        with this objfile, so we don't need to
11541                        duplicate it for the type.  */
11542                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
11543                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
11544                   }
11545               }
11546           }
11547           break;
11548         case DW_TAG_typedef:
11549           SYMBOL_CLASS (sym) = LOC_TYPEDEF;
11550           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
11551           list_to_add = cu->list_in_scope;
11552           break;
11553         case DW_TAG_base_type:
11554         case DW_TAG_subrange_type:
11555           SYMBOL_CLASS (sym) = LOC_TYPEDEF;
11556           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
11557           list_to_add = cu->list_in_scope;
11558           break;
11559         case DW_TAG_enumerator:
11560           attr = dwarf2_attr (die, DW_AT_const_value, cu);
11561           if (attr)
11562             {
11563               dwarf2_const_value (attr, sym, cu);
11564             }
11565           {
11566             /* NOTE: carlton/2003-11-10: See comment above in the
11567                DW_TAG_class_type, etc. block.  */
11568
11569             list_to_add = (cu->list_in_scope == &file_symbols
11570                            && (cu->language == language_cplus
11571                                || cu->language == language_java)
11572                            ? &global_symbols : cu->list_in_scope);
11573           }
11574           break;
11575         case DW_TAG_namespace:
11576           SYMBOL_CLASS (sym) = LOC_TYPEDEF;
11577           list_to_add = &global_symbols;
11578           break;
11579         default:
11580           /* Not a tag we recognize.  Hopefully we aren't processing
11581              trash data, but since we must specifically ignore things
11582              we don't recognize, there is nothing else we should do at
11583              this point.  */
11584           complaint (&symfile_complaints, _("unsupported tag: '%s'"),
11585                      dwarf_tag_name (die->tag));
11586           break;
11587         }
11588
11589       if (suppress_add)
11590         {
11591           sym->hash_next = objfile->template_symbols;
11592           objfile->template_symbols = sym;
11593           list_to_add = NULL;
11594         }
11595
11596       if (list_to_add != NULL)
11597         add_symbol_to_list (sym, list_to_add);
11598
11599       /* For the benefit of old versions of GCC, check for anonymous
11600          namespaces based on the demangled name.  */
11601       if (!processing_has_namespace_info
11602           && cu->language == language_cplus)
11603         cp_scan_for_anonymous_namespaces (sym);
11604     }
11605   return (sym);
11606 }
11607
11608 /* A wrapper for new_symbol_full that always allocates a new symbol.  */
11609
11610 static struct symbol *
11611 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
11612 {
11613   return new_symbol_full (die, type, cu, NULL);
11614 }
11615
11616 /* Given an attr with a DW_FORM_dataN value in host byte order,
11617    zero-extend it as appropriate for the symbol's type.  The DWARF
11618    standard (v4) is not entirely clear about the meaning of using
11619    DW_FORM_dataN for a constant with a signed type, where the type is
11620    wider than the data.  The conclusion of a discussion on the DWARF
11621    list was that this is unspecified.  We choose to always zero-extend
11622    because that is the interpretation long in use by GCC.  */
11623
11624 static gdb_byte *
11625 dwarf2_const_value_data (struct attribute *attr, struct type *type,
11626                          const char *name, struct obstack *obstack,
11627                          struct dwarf2_cu *cu, long *value, int bits)
11628 {
11629   struct objfile *objfile = cu->objfile;
11630   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
11631                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
11632   LONGEST l = DW_UNSND (attr);
11633
11634   if (bits < sizeof (*value) * 8)
11635     {
11636       l &= ((LONGEST) 1 << bits) - 1;
11637       *value = l;
11638     }
11639   else if (bits == sizeof (*value) * 8)
11640     *value = l;
11641   else
11642     {
11643       gdb_byte *bytes = obstack_alloc (obstack, bits / 8);
11644       store_unsigned_integer (bytes, bits / 8, byte_order, l);
11645       return bytes;
11646     }
11647
11648   return NULL;
11649 }
11650
11651 /* Read a constant value from an attribute.  Either set *VALUE, or if
11652    the value does not fit in *VALUE, set *BYTES - either already
11653    allocated on the objfile obstack, or newly allocated on OBSTACK,
11654    or, set *BATON, if we translated the constant to a location
11655    expression.  */
11656
11657 static void
11658 dwarf2_const_value_attr (struct attribute *attr, struct type *type,
11659                          const char *name, struct obstack *obstack,
11660                          struct dwarf2_cu *cu,
11661                          long *value, gdb_byte **bytes,
11662                          struct dwarf2_locexpr_baton **baton)
11663 {
11664   struct objfile *objfile = cu->objfile;
11665   struct comp_unit_head *cu_header = &cu->header;
11666   struct dwarf_block *blk;
11667   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
11668                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
11669
11670   *value = 0;
11671   *bytes = NULL;
11672   *baton = NULL;
11673
11674   switch (attr->form)
11675     {
11676     case DW_FORM_addr:
11677       {
11678         gdb_byte *data;
11679
11680         if (TYPE_LENGTH (type) != cu_header->addr_size)
11681           dwarf2_const_value_length_mismatch_complaint (name,
11682                                                         cu_header->addr_size,
11683                                                         TYPE_LENGTH (type));
11684         /* Symbols of this form are reasonably rare, so we just
11685            piggyback on the existing location code rather than writing
11686            a new implementation of symbol_computed_ops.  */
11687         *baton = obstack_alloc (&objfile->objfile_obstack,
11688                                 sizeof (struct dwarf2_locexpr_baton));
11689         (*baton)->per_cu = cu->per_cu;
11690         gdb_assert ((*baton)->per_cu);
11691
11692         (*baton)->size = 2 + cu_header->addr_size;
11693         data = obstack_alloc (&objfile->objfile_obstack, (*baton)->size);
11694         (*baton)->data = data;
11695
11696         data[0] = DW_OP_addr;
11697         store_unsigned_integer (&data[1], cu_header->addr_size,
11698                                 byte_order, DW_ADDR (attr));
11699         data[cu_header->addr_size + 1] = DW_OP_stack_value;
11700       }
11701       break;
11702     case DW_FORM_string:
11703     case DW_FORM_strp:
11704       /* DW_STRING is already allocated on the objfile obstack, point
11705          directly to it.  */
11706       *bytes = (gdb_byte *) DW_STRING (attr);
11707       break;
11708     case DW_FORM_block1:
11709     case DW_FORM_block2:
11710     case DW_FORM_block4:
11711     case DW_FORM_block:
11712     case DW_FORM_exprloc:
11713       blk = DW_BLOCK (attr);
11714       if (TYPE_LENGTH (type) != blk->size)
11715         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
11716                                                       TYPE_LENGTH (type));
11717       *bytes = blk->data;
11718       break;
11719
11720       /* The DW_AT_const_value attributes are supposed to carry the
11721          symbol's value "represented as it would be on the target
11722          architecture."  By the time we get here, it's already been
11723          converted to host endianness, so we just need to sign- or
11724          zero-extend it as appropriate.  */
11725     case DW_FORM_data1:
11726       *bytes = dwarf2_const_value_data (attr, type, name,
11727                                         obstack, cu, value, 8);
11728       break;
11729     case DW_FORM_data2:
11730       *bytes = dwarf2_const_value_data (attr, type, name,
11731                                         obstack, cu, value, 16);
11732       break;
11733     case DW_FORM_data4:
11734       *bytes = dwarf2_const_value_data (attr, type, name,
11735                                         obstack, cu, value, 32);
11736       break;
11737     case DW_FORM_data8:
11738       *bytes = dwarf2_const_value_data (attr, type, name,
11739                                         obstack, cu, value, 64);
11740       break;
11741
11742     case DW_FORM_sdata:
11743       *value = DW_SND (attr);
11744       break;
11745
11746     case DW_FORM_udata:
11747       *value = DW_UNSND (attr);
11748       break;
11749
11750     default:
11751       complaint (&symfile_complaints,
11752                  _("unsupported const value attribute form: '%s'"),
11753                  dwarf_form_name (attr->form));
11754       *value = 0;
11755       break;
11756     }
11757 }
11758
11759
11760 /* Copy constant value from an attribute to a symbol.  */
11761
11762 static void
11763 dwarf2_const_value (struct attribute *attr, struct symbol *sym,
11764                     struct dwarf2_cu *cu)
11765 {
11766   struct objfile *objfile = cu->objfile;
11767   struct comp_unit_head *cu_header = &cu->header;
11768   long value;
11769   gdb_byte *bytes;
11770   struct dwarf2_locexpr_baton *baton;
11771
11772   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
11773                            SYMBOL_PRINT_NAME (sym),
11774                            &objfile->objfile_obstack, cu,
11775                            &value, &bytes, &baton);
11776
11777   if (baton != NULL)
11778     {
11779       SYMBOL_COMPUTED_OPS (sym) = &dwarf2_locexpr_funcs;
11780       SYMBOL_LOCATION_BATON (sym) = baton;
11781       SYMBOL_CLASS (sym) = LOC_COMPUTED;
11782     }
11783   else if (bytes != NULL)
11784      {
11785       SYMBOL_VALUE_BYTES (sym) = bytes;
11786       SYMBOL_CLASS (sym) = LOC_CONST_BYTES;
11787     }
11788   else
11789     {
11790       SYMBOL_VALUE (sym) = value;
11791       SYMBOL_CLASS (sym) = LOC_CONST;
11792     }
11793 }
11794
11795 /* Return the type of the die in question using its DW_AT_type attribute.  */
11796
11797 static struct type *
11798 die_type (struct die_info *die, struct dwarf2_cu *cu)
11799 {
11800   struct attribute *type_attr;
11801
11802   type_attr = dwarf2_attr (die, DW_AT_type, cu);
11803   if (!type_attr)
11804     {
11805       /* A missing DW_AT_type represents a void type.  */
11806       return objfile_type (cu->objfile)->builtin_void;
11807     }
11808
11809   return lookup_die_type (die, type_attr, cu);
11810 }
11811
11812 /* True iff CU's producer generates GNAT Ada auxiliary information
11813    that allows to find parallel types through that information instead
11814    of having to do expensive parallel lookups by type name.  */
11815
11816 static int
11817 need_gnat_info (struct dwarf2_cu *cu)
11818 {
11819   /* FIXME: brobecker/2010-10-12: As of now, only the AdaCore version
11820      of GNAT produces this auxiliary information, without any indication
11821      that it is produced.  Part of enhancing the FSF version of GNAT
11822      to produce that information will be to put in place an indicator
11823      that we can use in order to determine whether the descriptive type
11824      info is available or not.  One suggestion that has been made is
11825      to use a new attribute, attached to the CU die.  For now, assume
11826      that the descriptive type info is not available.  */
11827   return 0;
11828 }
11829
11830 /* Return the auxiliary type of the die in question using its
11831    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
11832    attribute is not present.  */
11833
11834 static struct type *
11835 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
11836 {
11837   struct attribute *type_attr;
11838
11839   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
11840   if (!type_attr)
11841     return NULL;
11842
11843   return lookup_die_type (die, type_attr, cu);
11844 }
11845
11846 /* If DIE has a descriptive_type attribute, then set the TYPE's
11847    descriptive type accordingly.  */
11848
11849 static void
11850 set_descriptive_type (struct type *type, struct die_info *die,
11851                       struct dwarf2_cu *cu)
11852 {
11853   struct type *descriptive_type = die_descriptive_type (die, cu);
11854
11855   if (descriptive_type)
11856     {
11857       ALLOCATE_GNAT_AUX_TYPE (type);
11858       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
11859     }
11860 }
11861
11862 /* Return the containing type of the die in question using its
11863    DW_AT_containing_type attribute.  */
11864
11865 static struct type *
11866 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
11867 {
11868   struct attribute *type_attr;
11869
11870   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
11871   if (!type_attr)
11872     error (_("Dwarf Error: Problem turning containing type into gdb type "
11873              "[in module %s]"), cu->objfile->name);
11874
11875   return lookup_die_type (die, type_attr, cu);
11876 }
11877
11878 /* Look up the type of DIE in CU using its type attribute ATTR.
11879    If there is no type substitute an error marker.  */
11880
11881 static struct type *
11882 lookup_die_type (struct die_info *die, struct attribute *attr,
11883                  struct dwarf2_cu *cu)
11884 {
11885   struct type *this_type;
11886
11887   /* First see if we have it cached.  */
11888
11889   if (is_ref_attr (attr))
11890     {
11891       unsigned int offset = dwarf2_get_ref_die_offset (attr);
11892
11893       this_type = get_die_type_at_offset (offset, cu->per_cu);
11894     }
11895   else if (attr->form == DW_FORM_ref_sig8)
11896     {
11897       struct signatured_type *sig_type = DW_SIGNATURED_TYPE (attr);
11898       struct dwarf2_cu *sig_cu;
11899       unsigned int offset;
11900
11901       /* sig_type will be NULL if the signatured type is missing from
11902          the debug info.  */
11903       if (sig_type == NULL)
11904         error (_("Dwarf Error: Cannot find signatured DIE referenced from DIE "
11905                  "at 0x%x [in module %s]"),
11906                die->offset, cu->objfile->name);
11907
11908       gdb_assert (sig_type->per_cu.from_debug_types);
11909       offset = sig_type->per_cu.offset + sig_type->type_offset;
11910       this_type = get_die_type_at_offset (offset, &sig_type->per_cu);
11911     }
11912   else
11913     {
11914       dump_die_for_error (die);
11915       error (_("Dwarf Error: Bad type attribute %s [in module %s]"),
11916              dwarf_attr_name (attr->name), cu->objfile->name);
11917     }
11918
11919   /* If not cached we need to read it in.  */
11920
11921   if (this_type == NULL)
11922     {
11923       struct die_info *type_die;
11924       struct dwarf2_cu *type_cu = cu;
11925
11926       type_die = follow_die_ref_or_sig (die, attr, &type_cu);
11927       /* If the type is cached, we should have found it above.  */
11928       gdb_assert (get_die_type (type_die, type_cu) == NULL);
11929       this_type = read_type_die_1 (type_die, type_cu);
11930     }
11931
11932   /* If we still don't have a type use an error marker.  */
11933
11934   if (this_type == NULL)
11935     {
11936       char *message, *saved;
11937
11938       /* read_type_die already issued a complaint.  */
11939       message = xstrprintf (_("<unknown type in %s, CU 0x%x, DIE 0x%x>"),
11940                             cu->objfile->name,
11941                             cu->header.offset,
11942                             die->offset);
11943       saved = obstack_copy0 (&cu->objfile->objfile_obstack,
11944                              message, strlen (message));
11945       xfree (message);
11946
11947       this_type = init_type (TYPE_CODE_ERROR, 0, 0, saved, cu->objfile);
11948     }
11949
11950   return this_type;
11951 }
11952
11953 /* Return the type in DIE, CU.
11954    Returns NULL for invalid types.
11955
11956    This first does a lookup in the appropriate type_hash table,
11957    and only reads the die in if necessary.
11958
11959    NOTE: This can be called when reading in partial or full symbols.  */
11960
11961 static struct type *
11962 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
11963 {
11964   struct type *this_type;
11965
11966   this_type = get_die_type (die, cu);
11967   if (this_type)
11968     return this_type;
11969
11970   return read_type_die_1 (die, cu);
11971 }
11972
11973 /* Read the type in DIE, CU.
11974    Returns NULL for invalid types.  */
11975
11976 static struct type *
11977 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
11978 {
11979   struct type *this_type = NULL;
11980
11981   switch (die->tag)
11982     {
11983     case DW_TAG_class_type:
11984     case DW_TAG_interface_type:
11985     case DW_TAG_structure_type:
11986     case DW_TAG_union_type:
11987       this_type = read_structure_type (die, cu);
11988       break;
11989     case DW_TAG_enumeration_type:
11990       this_type = read_enumeration_type (die, cu);
11991       break;
11992     case DW_TAG_subprogram:
11993     case DW_TAG_subroutine_type:
11994     case DW_TAG_inlined_subroutine:
11995       this_type = read_subroutine_type (die, cu);
11996       break;
11997     case DW_TAG_array_type:
11998       this_type = read_array_type (die, cu);
11999       break;
12000     case DW_TAG_set_type:
12001       this_type = read_set_type (die, cu);
12002       break;
12003     case DW_TAG_pointer_type:
12004       this_type = read_tag_pointer_type (die, cu);
12005       break;
12006     case DW_TAG_ptr_to_member_type:
12007       this_type = read_tag_ptr_to_member_type (die, cu);
12008       break;
12009     case DW_TAG_reference_type:
12010       this_type = read_tag_reference_type (die, cu);
12011       break;
12012     case DW_TAG_const_type:
12013       this_type = read_tag_const_type (die, cu);
12014       break;
12015     case DW_TAG_volatile_type:
12016       this_type = read_tag_volatile_type (die, cu);
12017       break;
12018     case DW_TAG_string_type:
12019       this_type = read_tag_string_type (die, cu);
12020       break;
12021     case DW_TAG_typedef:
12022       this_type = read_typedef (die, cu);
12023       break;
12024     case DW_TAG_subrange_type:
12025       this_type = read_subrange_type (die, cu);
12026       break;
12027     case DW_TAG_base_type:
12028       this_type = read_base_type (die, cu);
12029       break;
12030     case DW_TAG_unspecified_type:
12031       this_type = read_unspecified_type (die, cu);
12032       break;
12033     case DW_TAG_namespace:
12034       this_type = read_namespace_type (die, cu);
12035       break;
12036     case DW_TAG_module:
12037       this_type = read_module_type (die, cu);
12038       break;
12039     default:
12040       complaint (&symfile_complaints,
12041                  _("unexpected tag in read_type_die: '%s'"),
12042                  dwarf_tag_name (die->tag));
12043       break;
12044     }
12045
12046   return this_type;
12047 }
12048
12049 /* See if we can figure out if the class lives in a namespace.  We do
12050    this by looking for a member function; its demangled name will
12051    contain namespace info, if there is any.
12052    Return the computed name or NULL.
12053    Space for the result is allocated on the objfile's obstack.
12054    This is the full-die version of guess_partial_die_structure_name.
12055    In this case we know DIE has no useful parent.  */
12056
12057 static char *
12058 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
12059 {
12060   struct die_info *spec_die;
12061   struct dwarf2_cu *spec_cu;
12062   struct die_info *child;
12063
12064   spec_cu = cu;
12065   spec_die = die_specification (die, &spec_cu);
12066   if (spec_die != NULL)
12067     {
12068       die = spec_die;
12069       cu = spec_cu;
12070     }
12071
12072   for (child = die->child;
12073        child != NULL;
12074        child = child->sibling)
12075     {
12076       if (child->tag == DW_TAG_subprogram)
12077         {
12078           struct attribute *attr;
12079
12080           attr = dwarf2_attr (child, DW_AT_linkage_name, cu);
12081           if (attr == NULL)
12082             attr = dwarf2_attr (child, DW_AT_MIPS_linkage_name, cu);
12083           if (attr != NULL)
12084             {
12085               char *actual_name
12086                 = language_class_name_from_physname (cu->language_defn,
12087                                                      DW_STRING (attr));
12088               char *name = NULL;
12089
12090               if (actual_name != NULL)
12091                 {
12092                   char *die_name = dwarf2_name (die, cu);
12093
12094                   if (die_name != NULL
12095                       && strcmp (die_name, actual_name) != 0)
12096                     {
12097                       /* Strip off the class name from the full name.
12098                          We want the prefix.  */
12099                       int die_name_len = strlen (die_name);
12100                       int actual_name_len = strlen (actual_name);
12101
12102                       /* Test for '::' as a sanity check.  */
12103                       if (actual_name_len > die_name_len + 2
12104                           && actual_name[actual_name_len
12105                                          - die_name_len - 1] == ':')
12106                         name =
12107                           obsavestring (actual_name,
12108                                         actual_name_len - die_name_len - 2,
12109                                         &cu->objfile->objfile_obstack);
12110                     }
12111                 }
12112               xfree (actual_name);
12113               return name;
12114             }
12115         }
12116     }
12117
12118   return NULL;
12119 }
12120
12121 /* Return the name of the namespace/class that DIE is defined within,
12122    or "" if we can't tell.  The caller should not xfree the result.
12123
12124    For example, if we're within the method foo() in the following
12125    code:
12126
12127    namespace N {
12128      class C {
12129        void foo () {
12130        }
12131      };
12132    }
12133
12134    then determine_prefix on foo's die will return "N::C".  */
12135
12136 static char *
12137 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
12138 {
12139   struct die_info *parent, *spec_die;
12140   struct dwarf2_cu *spec_cu;
12141   struct type *parent_type;
12142
12143   if (cu->language != language_cplus && cu->language != language_java
12144       && cu->language != language_fortran)
12145     return "";
12146
12147   /* We have to be careful in the presence of DW_AT_specification.
12148      For example, with GCC 3.4, given the code
12149
12150      namespace N {
12151        void foo() {
12152          // Definition of N::foo.
12153        }
12154      }
12155
12156      then we'll have a tree of DIEs like this:
12157
12158      1: DW_TAG_compile_unit
12159        2: DW_TAG_namespace        // N
12160          3: DW_TAG_subprogram     // declaration of N::foo
12161        4: DW_TAG_subprogram       // definition of N::foo
12162             DW_AT_specification   // refers to die #3
12163
12164      Thus, when processing die #4, we have to pretend that we're in
12165      the context of its DW_AT_specification, namely the contex of die
12166      #3.  */
12167   spec_cu = cu;
12168   spec_die = die_specification (die, &spec_cu);
12169   if (spec_die == NULL)
12170     parent = die->parent;
12171   else
12172     {
12173       parent = spec_die->parent;
12174       cu = spec_cu;
12175     }
12176
12177   if (parent == NULL)
12178     return "";
12179   else if (parent->building_fullname)
12180     {
12181       const char *name;
12182       const char *parent_name;
12183
12184       /* It has been seen on RealView 2.2 built binaries,
12185          DW_TAG_template_type_param types actually _defined_ as
12186          children of the parent class:
12187
12188          enum E {};
12189          template class <class Enum> Class{};
12190          Class<enum E> class_e;
12191
12192          1: DW_TAG_class_type (Class)
12193            2: DW_TAG_enumeration_type (E)
12194              3: DW_TAG_enumerator (enum1:0)
12195              3: DW_TAG_enumerator (enum2:1)
12196              ...
12197            2: DW_TAG_template_type_param
12198               DW_AT_type  DW_FORM_ref_udata (E)
12199
12200          Besides being broken debug info, it can put GDB into an
12201          infinite loop.  Consider:
12202
12203          When we're building the full name for Class<E>, we'll start
12204          at Class, and go look over its template type parameters,
12205          finding E.  We'll then try to build the full name of E, and
12206          reach here.  We're now trying to build the full name of E,
12207          and look over the parent DIE for containing scope.  In the
12208          broken case, if we followed the parent DIE of E, we'd again
12209          find Class, and once again go look at its template type
12210          arguments, etc., etc.  Simply don't consider such parent die
12211          as source-level parent of this die (it can't be, the language
12212          doesn't allow it), and break the loop here.  */
12213       name = dwarf2_name (die, cu);
12214       parent_name = dwarf2_name (parent, cu);
12215       complaint (&symfile_complaints,
12216                  _("template param type '%s' defined within parent '%s'"),
12217                  name ? name : "<unknown>",
12218                  parent_name ? parent_name : "<unknown>");
12219       return "";
12220     }
12221   else
12222     switch (parent->tag)
12223       {
12224       case DW_TAG_namespace:
12225         parent_type = read_type_die (parent, cu);
12226         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
12227            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
12228            Work around this problem here.  */
12229         if (cu->language == language_cplus
12230             && strcmp (TYPE_TAG_NAME (parent_type), "::") == 0)
12231           return "";
12232         /* We give a name to even anonymous namespaces.  */
12233         return TYPE_TAG_NAME (parent_type);
12234       case DW_TAG_class_type:
12235       case DW_TAG_interface_type:
12236       case DW_TAG_structure_type:
12237       case DW_TAG_union_type:
12238       case DW_TAG_module:
12239         parent_type = read_type_die (parent, cu);
12240         if (TYPE_TAG_NAME (parent_type) != NULL)
12241           return TYPE_TAG_NAME (parent_type);
12242         else
12243           /* An anonymous structure is only allowed non-static data
12244              members; no typedefs, no member functions, et cetera.
12245              So it does not need a prefix.  */
12246           return "";
12247       case DW_TAG_compile_unit:
12248         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
12249         if (cu->language == language_cplus
12250             && dwarf2_per_objfile->types.asection != NULL
12251             && die->child != NULL
12252             && (die->tag == DW_TAG_class_type
12253                 || die->tag == DW_TAG_structure_type
12254                 || die->tag == DW_TAG_union_type))
12255           {
12256             char *name = guess_full_die_structure_name (die, cu);
12257             if (name != NULL)
12258               return name;
12259           }
12260         return "";
12261       default:
12262         return determine_prefix (parent, cu);
12263       }
12264 }
12265
12266 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
12267    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
12268    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
12269    an obconcat, otherwise allocate storage for the result.  The CU argument is
12270    used to determine the language and hence, the appropriate separator.  */
12271
12272 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
12273
12274 static char *
12275 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
12276                  int physname, struct dwarf2_cu *cu)
12277 {
12278   const char *lead = "";
12279   const char *sep;
12280
12281   if (suffix == NULL || suffix[0] == '\0'
12282       || prefix == NULL || prefix[0] == '\0')
12283     sep = "";
12284   else if (cu->language == language_java)
12285     sep = ".";
12286   else if (cu->language == language_fortran && physname)
12287     {
12288       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
12289          DW_AT_MIPS_linkage_name is preferred and used instead.  */
12290
12291       lead = "__";
12292       sep = "_MOD_";
12293     }
12294   else
12295     sep = "::";
12296
12297   if (prefix == NULL)
12298     prefix = "";
12299   if (suffix == NULL)
12300     suffix = "";
12301
12302   if (obs == NULL)
12303     {
12304       char *retval
12305         = xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1);
12306
12307       strcpy (retval, lead);
12308       strcat (retval, prefix);
12309       strcat (retval, sep);
12310       strcat (retval, suffix);
12311       return retval;
12312     }
12313   else
12314     {
12315       /* We have an obstack.  */
12316       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
12317     }
12318 }
12319
12320 /* Return sibling of die, NULL if no sibling.  */
12321
12322 static struct die_info *
12323 sibling_die (struct die_info *die)
12324 {
12325   return die->sibling;
12326 }
12327
12328 /* Get name of a die, return NULL if not found.  */
12329
12330 static char *
12331 dwarf2_canonicalize_name (char *name, struct dwarf2_cu *cu,
12332                           struct obstack *obstack)
12333 {
12334   if (name && cu->language == language_cplus)
12335     {
12336       char *canon_name = cp_canonicalize_string (name);
12337
12338       if (canon_name != NULL)
12339         {
12340           if (strcmp (canon_name, name) != 0)
12341             name = obsavestring (canon_name, strlen (canon_name),
12342                                  obstack);
12343           xfree (canon_name);
12344         }
12345     }
12346
12347   return name;
12348 }
12349
12350 /* Get name of a die, return NULL if not found.  */
12351
12352 static char *
12353 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
12354 {
12355   struct attribute *attr;
12356
12357   attr = dwarf2_attr (die, DW_AT_name, cu);
12358   if ((!attr || !DW_STRING (attr))
12359       && die->tag != DW_TAG_class_type
12360       && die->tag != DW_TAG_interface_type
12361       && die->tag != DW_TAG_structure_type
12362       && die->tag != DW_TAG_union_type)
12363     return NULL;
12364
12365   switch (die->tag)
12366     {
12367     case DW_TAG_compile_unit:
12368       /* Compilation units have a DW_AT_name that is a filename, not
12369          a source language identifier.  */
12370     case DW_TAG_enumeration_type:
12371     case DW_TAG_enumerator:
12372       /* These tags always have simple identifiers already; no need
12373          to canonicalize them.  */
12374       return DW_STRING (attr);
12375
12376     case DW_TAG_subprogram:
12377       /* Java constructors will all be named "<init>", so return
12378          the class name when we see this special case.  */
12379       if (cu->language == language_java
12380           && DW_STRING (attr) != NULL
12381           && strcmp (DW_STRING (attr), "<init>") == 0)
12382         {
12383           struct dwarf2_cu *spec_cu = cu;
12384           struct die_info *spec_die;
12385
12386           /* GCJ will output '<init>' for Java constructor names.
12387              For this special case, return the name of the parent class.  */
12388
12389           /* GCJ may output suprogram DIEs with AT_specification set.
12390              If so, use the name of the specified DIE.  */
12391           spec_die = die_specification (die, &spec_cu);
12392           if (spec_die != NULL)
12393             return dwarf2_name (spec_die, spec_cu);
12394
12395           do
12396             {
12397               die = die->parent;
12398               if (die->tag == DW_TAG_class_type)
12399                 return dwarf2_name (die, cu);
12400             }
12401           while (die->tag != DW_TAG_compile_unit);
12402         }
12403       break;
12404
12405     case DW_TAG_class_type:
12406     case DW_TAG_interface_type:
12407     case DW_TAG_structure_type:
12408     case DW_TAG_union_type:
12409       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
12410          structures or unions.  These were of the form "._%d" in GCC 4.1,
12411          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
12412          and GCC 4.4.  We work around this problem by ignoring these.  */
12413       if (attr && DW_STRING (attr)
12414           && (strncmp (DW_STRING (attr), "._", 2) == 0
12415               || strncmp (DW_STRING (attr), "<anonymous", 10) == 0))
12416         return NULL;
12417
12418       /* GCC might emit a nameless typedef that has a linkage name.  See
12419          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
12420       if (!attr || DW_STRING (attr) == NULL)
12421         {
12422           char *demangled = NULL;
12423
12424           attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
12425           if (attr == NULL)
12426             attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
12427
12428           if (attr == NULL || DW_STRING (attr) == NULL)
12429             return NULL;
12430
12431           /* Avoid demangling DW_STRING (attr) the second time on a second
12432              call for the same DIE.  */
12433           if (!DW_STRING_IS_CANONICAL (attr))
12434             demangled = cplus_demangle (DW_STRING (attr), DMGL_TYPES);
12435
12436           if (demangled)
12437             {
12438               /* FIXME: we already did this for the partial symbol... */
12439               DW_STRING (attr)
12440                 = obsavestring (demangled, strlen (demangled),
12441                                 &cu->objfile->objfile_obstack);
12442               DW_STRING_IS_CANONICAL (attr) = 1;
12443               xfree (demangled);
12444             }
12445         }
12446       break;
12447
12448     default:
12449       break;
12450     }
12451
12452   if (!DW_STRING_IS_CANONICAL (attr))
12453     {
12454       DW_STRING (attr)
12455         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
12456                                     &cu->objfile->objfile_obstack);
12457       DW_STRING_IS_CANONICAL (attr) = 1;
12458     }
12459   return DW_STRING (attr);
12460 }
12461
12462 /* Return the die that this die in an extension of, or NULL if there
12463    is none.  *EXT_CU is the CU containing DIE on input, and the CU
12464    containing the return value on output.  */
12465
12466 static struct die_info *
12467 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
12468 {
12469   struct attribute *attr;
12470
12471   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
12472   if (attr == NULL)
12473     return NULL;
12474
12475   return follow_die_ref (die, attr, ext_cu);
12476 }
12477
12478 /* Convert a DIE tag into its string name.  */
12479
12480 static char *
12481 dwarf_tag_name (unsigned tag)
12482 {
12483   switch (tag)
12484     {
12485     case DW_TAG_padding:
12486       return "DW_TAG_padding";
12487     case DW_TAG_array_type:
12488       return "DW_TAG_array_type";
12489     case DW_TAG_class_type:
12490       return "DW_TAG_class_type";
12491     case DW_TAG_entry_point:
12492       return "DW_TAG_entry_point";
12493     case DW_TAG_enumeration_type:
12494       return "DW_TAG_enumeration_type";
12495     case DW_TAG_formal_parameter:
12496       return "DW_TAG_formal_parameter";
12497     case DW_TAG_imported_declaration:
12498       return "DW_TAG_imported_declaration";
12499     case DW_TAG_label:
12500       return "DW_TAG_label";
12501     case DW_TAG_lexical_block:
12502       return "DW_TAG_lexical_block";
12503     case DW_TAG_member:
12504       return "DW_TAG_member";
12505     case DW_TAG_pointer_type:
12506       return "DW_TAG_pointer_type";
12507     case DW_TAG_reference_type:
12508       return "DW_TAG_reference_type";
12509     case DW_TAG_compile_unit:
12510       return "DW_TAG_compile_unit";
12511     case DW_TAG_string_type:
12512       return "DW_TAG_string_type";
12513     case DW_TAG_structure_type:
12514       return "DW_TAG_structure_type";
12515     case DW_TAG_subroutine_type:
12516       return "DW_TAG_subroutine_type";
12517     case DW_TAG_typedef:
12518       return "DW_TAG_typedef";
12519     case DW_TAG_union_type:
12520       return "DW_TAG_union_type";
12521     case DW_TAG_unspecified_parameters:
12522       return "DW_TAG_unspecified_parameters";
12523     case DW_TAG_variant:
12524       return "DW_TAG_variant";
12525     case DW_TAG_common_block:
12526       return "DW_TAG_common_block";
12527     case DW_TAG_common_inclusion:
12528       return "DW_TAG_common_inclusion";
12529     case DW_TAG_inheritance:
12530       return "DW_TAG_inheritance";
12531     case DW_TAG_inlined_subroutine:
12532       return "DW_TAG_inlined_subroutine";
12533     case DW_TAG_module:
12534       return "DW_TAG_module";
12535     case DW_TAG_ptr_to_member_type:
12536       return "DW_TAG_ptr_to_member_type";
12537     case DW_TAG_set_type:
12538       return "DW_TAG_set_type";
12539     case DW_TAG_subrange_type:
12540       return "DW_TAG_subrange_type";
12541     case DW_TAG_with_stmt:
12542       return "DW_TAG_with_stmt";
12543     case DW_TAG_access_declaration:
12544       return "DW_TAG_access_declaration";
12545     case DW_TAG_base_type:
12546       return "DW_TAG_base_type";
12547     case DW_TAG_catch_block:
12548       return "DW_TAG_catch_block";
12549     case DW_TAG_const_type:
12550       return "DW_TAG_const_type";
12551     case DW_TAG_constant:
12552       return "DW_TAG_constant";
12553     case DW_TAG_enumerator:
12554       return "DW_TAG_enumerator";
12555     case DW_TAG_file_type:
12556       return "DW_TAG_file_type";
12557     case DW_TAG_friend:
12558       return "DW_TAG_friend";
12559     case DW_TAG_namelist:
12560       return "DW_TAG_namelist";
12561     case DW_TAG_namelist_item:
12562       return "DW_TAG_namelist_item";
12563     case DW_TAG_packed_type:
12564       return "DW_TAG_packed_type";
12565     case DW_TAG_subprogram:
12566       return "DW_TAG_subprogram";
12567     case DW_TAG_template_type_param:
12568       return "DW_TAG_template_type_param";
12569     case DW_TAG_template_value_param:
12570       return "DW_TAG_template_value_param";
12571     case DW_TAG_thrown_type:
12572       return "DW_TAG_thrown_type";
12573     case DW_TAG_try_block:
12574       return "DW_TAG_try_block";
12575     case DW_TAG_variant_part:
12576       return "DW_TAG_variant_part";
12577     case DW_TAG_variable:
12578       return "DW_TAG_variable";
12579     case DW_TAG_volatile_type:
12580       return "DW_TAG_volatile_type";
12581     case DW_TAG_dwarf_procedure:
12582       return "DW_TAG_dwarf_procedure";
12583     case DW_TAG_restrict_type:
12584       return "DW_TAG_restrict_type";
12585     case DW_TAG_interface_type:
12586       return "DW_TAG_interface_type";
12587     case DW_TAG_namespace:
12588       return "DW_TAG_namespace";
12589     case DW_TAG_imported_module:
12590       return "DW_TAG_imported_module";
12591     case DW_TAG_unspecified_type:
12592       return "DW_TAG_unspecified_type";
12593     case DW_TAG_partial_unit:
12594       return "DW_TAG_partial_unit";
12595     case DW_TAG_imported_unit:
12596       return "DW_TAG_imported_unit";
12597     case DW_TAG_condition:
12598       return "DW_TAG_condition";
12599     case DW_TAG_shared_type:
12600       return "DW_TAG_shared_type";
12601     case DW_TAG_type_unit:
12602       return "DW_TAG_type_unit";
12603     case DW_TAG_MIPS_loop:
12604       return "DW_TAG_MIPS_loop";
12605     case DW_TAG_HP_array_descriptor:
12606       return "DW_TAG_HP_array_descriptor";
12607     case DW_TAG_format_label:
12608       return "DW_TAG_format_label";
12609     case DW_TAG_function_template:
12610       return "DW_TAG_function_template";
12611     case DW_TAG_class_template:
12612       return "DW_TAG_class_template";
12613     case DW_TAG_GNU_BINCL:
12614       return "DW_TAG_GNU_BINCL";
12615     case DW_TAG_GNU_EINCL:
12616       return "DW_TAG_GNU_EINCL";
12617     case DW_TAG_upc_shared_type:
12618       return "DW_TAG_upc_shared_type";
12619     case DW_TAG_upc_strict_type:
12620       return "DW_TAG_upc_strict_type";
12621     case DW_TAG_upc_relaxed_type:
12622       return "DW_TAG_upc_relaxed_type";
12623     case DW_TAG_PGI_kanji_type:
12624       return "DW_TAG_PGI_kanji_type";
12625     case DW_TAG_PGI_interface_block:
12626       return "DW_TAG_PGI_interface_block";
12627     default:
12628       return "DW_TAG_<unknown>";
12629     }
12630 }
12631
12632 /* Convert a DWARF attribute code into its string name.  */
12633
12634 static char *
12635 dwarf_attr_name (unsigned attr)
12636 {
12637   switch (attr)
12638     {
12639     case DW_AT_sibling:
12640       return "DW_AT_sibling";
12641     case DW_AT_location:
12642       return "DW_AT_location";
12643     case DW_AT_name:
12644       return "DW_AT_name";
12645     case DW_AT_ordering:
12646       return "DW_AT_ordering";
12647     case DW_AT_subscr_data:
12648       return "DW_AT_subscr_data";
12649     case DW_AT_byte_size:
12650       return "DW_AT_byte_size";
12651     case DW_AT_bit_offset:
12652       return "DW_AT_bit_offset";
12653     case DW_AT_bit_size:
12654       return "DW_AT_bit_size";
12655     case DW_AT_element_list:
12656       return "DW_AT_element_list";
12657     case DW_AT_stmt_list:
12658       return "DW_AT_stmt_list";
12659     case DW_AT_low_pc:
12660       return "DW_AT_low_pc";
12661     case DW_AT_high_pc:
12662       return "DW_AT_high_pc";
12663     case DW_AT_language:
12664       return "DW_AT_language";
12665     case DW_AT_member:
12666       return "DW_AT_member";
12667     case DW_AT_discr:
12668       return "DW_AT_discr";
12669     case DW_AT_discr_value:
12670       return "DW_AT_discr_value";
12671     case DW_AT_visibility:
12672       return "DW_AT_visibility";
12673     case DW_AT_import:
12674       return "DW_AT_import";
12675     case DW_AT_string_length:
12676       return "DW_AT_string_length";
12677     case DW_AT_common_reference:
12678       return "DW_AT_common_reference";
12679     case DW_AT_comp_dir:
12680       return "DW_AT_comp_dir";
12681     case DW_AT_const_value:
12682       return "DW_AT_const_value";
12683     case DW_AT_containing_type:
12684       return "DW_AT_containing_type";
12685     case DW_AT_default_value:
12686       return "DW_AT_default_value";
12687     case DW_AT_inline:
12688       return "DW_AT_inline";
12689     case DW_AT_is_optional:
12690       return "DW_AT_is_optional";
12691     case DW_AT_lower_bound:
12692       return "DW_AT_lower_bound";
12693     case DW_AT_producer:
12694       return "DW_AT_producer";
12695     case DW_AT_prototyped:
12696       return "DW_AT_prototyped";
12697     case DW_AT_return_addr:
12698       return "DW_AT_return_addr";
12699     case DW_AT_start_scope:
12700       return "DW_AT_start_scope";
12701     case DW_AT_bit_stride:
12702       return "DW_AT_bit_stride";
12703     case DW_AT_upper_bound:
12704       return "DW_AT_upper_bound";
12705     case DW_AT_abstract_origin:
12706       return "DW_AT_abstract_origin";
12707     case DW_AT_accessibility:
12708       return "DW_AT_accessibility";
12709     case DW_AT_address_class:
12710       return "DW_AT_address_class";
12711     case DW_AT_artificial:
12712       return "DW_AT_artificial";
12713     case DW_AT_base_types:
12714       return "DW_AT_base_types";
12715     case DW_AT_calling_convention:
12716       return "DW_AT_calling_convention";
12717     case DW_AT_count:
12718       return "DW_AT_count";
12719     case DW_AT_data_member_location:
12720       return "DW_AT_data_member_location";
12721     case DW_AT_decl_column:
12722       return "DW_AT_decl_column";
12723     case DW_AT_decl_file:
12724       return "DW_AT_decl_file";
12725     case DW_AT_decl_line:
12726       return "DW_AT_decl_line";
12727     case DW_AT_declaration:
12728       return "DW_AT_declaration";
12729     case DW_AT_discr_list:
12730       return "DW_AT_discr_list";
12731     case DW_AT_encoding:
12732       return "DW_AT_encoding";
12733     case DW_AT_external:
12734       return "DW_AT_external";
12735     case DW_AT_frame_base:
12736       return "DW_AT_frame_base";
12737     case DW_AT_friend:
12738       return "DW_AT_friend";
12739     case DW_AT_identifier_case:
12740       return "DW_AT_identifier_case";
12741     case DW_AT_macro_info:
12742       return "DW_AT_macro_info";
12743     case DW_AT_namelist_items:
12744       return "DW_AT_namelist_items";
12745     case DW_AT_priority:
12746       return "DW_AT_priority";
12747     case DW_AT_segment:
12748       return "DW_AT_segment";
12749     case DW_AT_specification:
12750       return "DW_AT_specification";
12751     case DW_AT_static_link:
12752       return "DW_AT_static_link";
12753     case DW_AT_type:
12754       return "DW_AT_type";
12755     case DW_AT_use_location:
12756       return "DW_AT_use_location";
12757     case DW_AT_variable_parameter:
12758       return "DW_AT_variable_parameter";
12759     case DW_AT_virtuality:
12760       return "DW_AT_virtuality";
12761     case DW_AT_vtable_elem_location:
12762       return "DW_AT_vtable_elem_location";
12763     /* DWARF 3 values.  */
12764     case DW_AT_allocated:
12765       return "DW_AT_allocated";
12766     case DW_AT_associated:
12767       return "DW_AT_associated";
12768     case DW_AT_data_location:
12769       return "DW_AT_data_location";
12770     case DW_AT_byte_stride:
12771       return "DW_AT_byte_stride";
12772     case DW_AT_entry_pc:
12773       return "DW_AT_entry_pc";
12774     case DW_AT_use_UTF8:
12775       return "DW_AT_use_UTF8";
12776     case DW_AT_extension:
12777       return "DW_AT_extension";
12778     case DW_AT_ranges:
12779       return "DW_AT_ranges";
12780     case DW_AT_trampoline:
12781       return "DW_AT_trampoline";
12782     case DW_AT_call_column:
12783       return "DW_AT_call_column";
12784     case DW_AT_call_file:
12785       return "DW_AT_call_file";
12786     case DW_AT_call_line:
12787       return "DW_AT_call_line";
12788     case DW_AT_description:
12789       return "DW_AT_description";
12790     case DW_AT_binary_scale:
12791       return "DW_AT_binary_scale";
12792     case DW_AT_decimal_scale:
12793       return "DW_AT_decimal_scale";
12794     case DW_AT_small:
12795       return "DW_AT_small";
12796     case DW_AT_decimal_sign:
12797       return "DW_AT_decimal_sign";
12798     case DW_AT_digit_count:
12799       return "DW_AT_digit_count";
12800     case DW_AT_picture_string:
12801       return "DW_AT_picture_string";
12802     case DW_AT_mutable:
12803       return "DW_AT_mutable";
12804     case DW_AT_threads_scaled:
12805       return "DW_AT_threads_scaled";
12806     case DW_AT_explicit:
12807       return "DW_AT_explicit";
12808     case DW_AT_object_pointer:
12809       return "DW_AT_object_pointer";
12810     case DW_AT_endianity:
12811       return "DW_AT_endianity";
12812     case DW_AT_elemental:
12813       return "DW_AT_elemental";
12814     case DW_AT_pure:
12815       return "DW_AT_pure";
12816     case DW_AT_recursive:
12817       return "DW_AT_recursive";
12818     /* DWARF 4 values.  */
12819     case DW_AT_signature:
12820       return "DW_AT_signature";
12821     case DW_AT_linkage_name:
12822       return "DW_AT_linkage_name";
12823     /* SGI/MIPS extensions.  */
12824 #ifdef MIPS /* collides with DW_AT_HP_block_index */
12825     case DW_AT_MIPS_fde:
12826       return "DW_AT_MIPS_fde";
12827 #endif
12828     case DW_AT_MIPS_loop_begin:
12829       return "DW_AT_MIPS_loop_begin";
12830     case DW_AT_MIPS_tail_loop_begin:
12831       return "DW_AT_MIPS_tail_loop_begin";
12832     case DW_AT_MIPS_epilog_begin:
12833       return "DW_AT_MIPS_epilog_begin";
12834     case DW_AT_MIPS_loop_unroll_factor:
12835       return "DW_AT_MIPS_loop_unroll_factor";
12836     case DW_AT_MIPS_software_pipeline_depth:
12837       return "DW_AT_MIPS_software_pipeline_depth";
12838     case DW_AT_MIPS_linkage_name:
12839       return "DW_AT_MIPS_linkage_name";
12840     case DW_AT_MIPS_stride:
12841       return "DW_AT_MIPS_stride";
12842     case DW_AT_MIPS_abstract_name:
12843       return "DW_AT_MIPS_abstract_name";
12844     case DW_AT_MIPS_clone_origin:
12845       return "DW_AT_MIPS_clone_origin";
12846     case DW_AT_MIPS_has_inlines:
12847       return "DW_AT_MIPS_has_inlines";
12848     /* HP extensions.  */
12849 #ifndef MIPS /* collides with DW_AT_MIPS_fde */
12850     case DW_AT_HP_block_index:
12851       return "DW_AT_HP_block_index";
12852 #endif
12853     case DW_AT_HP_unmodifiable:
12854       return "DW_AT_HP_unmodifiable";
12855     case DW_AT_HP_actuals_stmt_list:
12856       return "DW_AT_HP_actuals_stmt_list";
12857     case DW_AT_HP_proc_per_section:
12858       return "DW_AT_HP_proc_per_section";
12859     case DW_AT_HP_raw_data_ptr:
12860       return "DW_AT_HP_raw_data_ptr";
12861     case DW_AT_HP_pass_by_reference:
12862       return "DW_AT_HP_pass_by_reference";
12863     case DW_AT_HP_opt_level:
12864       return "DW_AT_HP_opt_level";
12865     case DW_AT_HP_prof_version_id:
12866       return "DW_AT_HP_prof_version_id";
12867     case DW_AT_HP_opt_flags:
12868       return "DW_AT_HP_opt_flags";
12869     case DW_AT_HP_cold_region_low_pc:
12870       return "DW_AT_HP_cold_region_low_pc";
12871     case DW_AT_HP_cold_region_high_pc:
12872       return "DW_AT_HP_cold_region_high_pc";
12873     case DW_AT_HP_all_variables_modifiable:
12874       return "DW_AT_HP_all_variables_modifiable";
12875     case DW_AT_HP_linkage_name:
12876       return "DW_AT_HP_linkage_name";
12877     case DW_AT_HP_prof_flags:
12878       return "DW_AT_HP_prof_flags";
12879     /* GNU extensions.  */
12880     case DW_AT_sf_names:
12881       return "DW_AT_sf_names";
12882     case DW_AT_src_info:
12883       return "DW_AT_src_info";
12884     case DW_AT_mac_info:
12885       return "DW_AT_mac_info";
12886     case DW_AT_src_coords:
12887       return "DW_AT_src_coords";
12888     case DW_AT_body_begin:
12889       return "DW_AT_body_begin";
12890     case DW_AT_body_end:
12891       return "DW_AT_body_end";
12892     case DW_AT_GNU_vector:
12893       return "DW_AT_GNU_vector";
12894     case DW_AT_GNU_odr_signature:
12895       return "DW_AT_GNU_odr_signature";
12896     /* VMS extensions.  */
12897     case DW_AT_VMS_rtnbeg_pd_address:
12898       return "DW_AT_VMS_rtnbeg_pd_address";
12899     /* UPC extension.  */
12900     case DW_AT_upc_threads_scaled:
12901       return "DW_AT_upc_threads_scaled";
12902     /* PGI (STMicroelectronics) extensions.  */
12903     case DW_AT_PGI_lbase:
12904       return "DW_AT_PGI_lbase";
12905     case DW_AT_PGI_soffset:
12906       return "DW_AT_PGI_soffset";
12907     case DW_AT_PGI_lstride:
12908       return "DW_AT_PGI_lstride";
12909     default:
12910       return "DW_AT_<unknown>";
12911     }
12912 }
12913
12914 /* Convert a DWARF value form code into its string name.  */
12915
12916 static char *
12917 dwarf_form_name (unsigned form)
12918 {
12919   switch (form)
12920     {
12921     case DW_FORM_addr:
12922       return "DW_FORM_addr";
12923     case DW_FORM_block2:
12924       return "DW_FORM_block2";
12925     case DW_FORM_block4:
12926       return "DW_FORM_block4";
12927     case DW_FORM_data2:
12928       return "DW_FORM_data2";
12929     case DW_FORM_data4:
12930       return "DW_FORM_data4";
12931     case DW_FORM_data8:
12932       return "DW_FORM_data8";
12933     case DW_FORM_string:
12934       return "DW_FORM_string";
12935     case DW_FORM_block:
12936       return "DW_FORM_block";
12937     case DW_FORM_block1:
12938       return "DW_FORM_block1";
12939     case DW_FORM_data1:
12940       return "DW_FORM_data1";
12941     case DW_FORM_flag:
12942       return "DW_FORM_flag";
12943     case DW_FORM_sdata:
12944       return "DW_FORM_sdata";
12945     case DW_FORM_strp:
12946       return "DW_FORM_strp";
12947     case DW_FORM_udata:
12948       return "DW_FORM_udata";
12949     case DW_FORM_ref_addr:
12950       return "DW_FORM_ref_addr";
12951     case DW_FORM_ref1:
12952       return "DW_FORM_ref1";
12953     case DW_FORM_ref2:
12954       return "DW_FORM_ref2";
12955     case DW_FORM_ref4:
12956       return "DW_FORM_ref4";
12957     case DW_FORM_ref8:
12958       return "DW_FORM_ref8";
12959     case DW_FORM_ref_udata:
12960       return "DW_FORM_ref_udata";
12961     case DW_FORM_indirect:
12962       return "DW_FORM_indirect";
12963     case DW_FORM_sec_offset:
12964       return "DW_FORM_sec_offset";
12965     case DW_FORM_exprloc:
12966       return "DW_FORM_exprloc";
12967     case DW_FORM_flag_present:
12968       return "DW_FORM_flag_present";
12969     case DW_FORM_ref_sig8:
12970       return "DW_FORM_ref_sig8";
12971     default:
12972       return "DW_FORM_<unknown>";
12973     }
12974 }
12975
12976 /* Convert a DWARF stack opcode into its string name.  */
12977
12978 const char *
12979 dwarf_stack_op_name (unsigned op)
12980 {
12981   switch (op)
12982     {
12983     case DW_OP_addr:
12984       return "DW_OP_addr";
12985     case DW_OP_deref:
12986       return "DW_OP_deref";
12987     case DW_OP_const1u:
12988       return "DW_OP_const1u";
12989     case DW_OP_const1s:
12990       return "DW_OP_const1s";
12991     case DW_OP_const2u:
12992       return "DW_OP_const2u";
12993     case DW_OP_const2s:
12994       return "DW_OP_const2s";
12995     case DW_OP_const4u:
12996       return "DW_OP_const4u";
12997     case DW_OP_const4s:
12998       return "DW_OP_const4s";
12999     case DW_OP_const8u:
13000       return "DW_OP_const8u";
13001     case DW_OP_const8s:
13002       return "DW_OP_const8s";
13003     case DW_OP_constu:
13004       return "DW_OP_constu";
13005     case DW_OP_consts:
13006       return "DW_OP_consts";
13007     case DW_OP_dup:
13008       return "DW_OP_dup";
13009     case DW_OP_drop:
13010       return "DW_OP_drop";
13011     case DW_OP_over:
13012       return "DW_OP_over";
13013     case DW_OP_pick:
13014       return "DW_OP_pick";
13015     case DW_OP_swap:
13016       return "DW_OP_swap";
13017     case DW_OP_rot:
13018       return "DW_OP_rot";
13019     case DW_OP_xderef:
13020       return "DW_OP_xderef";
13021     case DW_OP_abs:
13022       return "DW_OP_abs";
13023     case DW_OP_and:
13024       return "DW_OP_and";
13025     case DW_OP_div:
13026       return "DW_OP_div";
13027     case DW_OP_minus:
13028       return "DW_OP_minus";
13029     case DW_OP_mod:
13030       return "DW_OP_mod";
13031     case DW_OP_mul:
13032       return "DW_OP_mul";
13033     case DW_OP_neg:
13034       return "DW_OP_neg";
13035     case DW_OP_not:
13036       return "DW_OP_not";
13037     case DW_OP_or:
13038       return "DW_OP_or";
13039     case DW_OP_plus:
13040       return "DW_OP_plus";
13041     case DW_OP_plus_uconst:
13042       return "DW_OP_plus_uconst";
13043     case DW_OP_shl:
13044       return "DW_OP_shl";
13045     case DW_OP_shr:
13046       return "DW_OP_shr";
13047     case DW_OP_shra:
13048       return "DW_OP_shra";
13049     case DW_OP_xor:
13050       return "DW_OP_xor";
13051     case DW_OP_bra:
13052       return "DW_OP_bra";
13053     case DW_OP_eq:
13054       return "DW_OP_eq";
13055     case DW_OP_ge:
13056       return "DW_OP_ge";
13057     case DW_OP_gt:
13058       return "DW_OP_gt";
13059     case DW_OP_le:
13060       return "DW_OP_le";
13061     case DW_OP_lt:
13062       return "DW_OP_lt";
13063     case DW_OP_ne:
13064       return "DW_OP_ne";
13065     case DW_OP_skip:
13066       return "DW_OP_skip";
13067     case DW_OP_lit0:
13068       return "DW_OP_lit0";
13069     case DW_OP_lit1:
13070       return "DW_OP_lit1";
13071     case DW_OP_lit2:
13072       return "DW_OP_lit2";
13073     case DW_OP_lit3:
13074       return "DW_OP_lit3";
13075     case DW_OP_lit4:
13076       return "DW_OP_lit4";
13077     case DW_OP_lit5:
13078       return "DW_OP_lit5";
13079     case DW_OP_lit6:
13080       return "DW_OP_lit6";
13081     case DW_OP_lit7:
13082       return "DW_OP_lit7";
13083     case DW_OP_lit8:
13084       return "DW_OP_lit8";
13085     case DW_OP_lit9:
13086       return "DW_OP_lit9";
13087     case DW_OP_lit10:
13088       return "DW_OP_lit10";
13089     case DW_OP_lit11:
13090       return "DW_OP_lit11";
13091     case DW_OP_lit12:
13092       return "DW_OP_lit12";
13093     case DW_OP_lit13:
13094       return "DW_OP_lit13";
13095     case DW_OP_lit14:
13096       return "DW_OP_lit14";
13097     case DW_OP_lit15:
13098       return "DW_OP_lit15";
13099     case DW_OP_lit16:
13100       return "DW_OP_lit16";
13101     case DW_OP_lit17:
13102       return "DW_OP_lit17";
13103     case DW_OP_lit18:
13104       return "DW_OP_lit18";
13105     case DW_OP_lit19:
13106       return "DW_OP_lit19";
13107     case DW_OP_lit20:
13108       return "DW_OP_lit20";
13109     case DW_OP_lit21:
13110       return "DW_OP_lit21";
13111     case DW_OP_lit22:
13112       return "DW_OP_lit22";
13113     case DW_OP_lit23:
13114       return "DW_OP_lit23";
13115     case DW_OP_lit24:
13116       return "DW_OP_lit24";
13117     case DW_OP_lit25:
13118       return "DW_OP_lit25";
13119     case DW_OP_lit26:
13120       return "DW_OP_lit26";
13121     case DW_OP_lit27:
13122       return "DW_OP_lit27";
13123     case DW_OP_lit28:
13124       return "DW_OP_lit28";
13125     case DW_OP_lit29:
13126       return "DW_OP_lit29";
13127     case DW_OP_lit30:
13128       return "DW_OP_lit30";
13129     case DW_OP_lit31:
13130       return "DW_OP_lit31";
13131     case DW_OP_reg0:
13132       return "DW_OP_reg0";
13133     case DW_OP_reg1:
13134       return "DW_OP_reg1";
13135     case DW_OP_reg2:
13136       return "DW_OP_reg2";
13137     case DW_OP_reg3:
13138       return "DW_OP_reg3";
13139     case DW_OP_reg4:
13140       return "DW_OP_reg4";
13141     case DW_OP_reg5:
13142       return "DW_OP_reg5";
13143     case DW_OP_reg6:
13144       return "DW_OP_reg6";
13145     case DW_OP_reg7:
13146       return "DW_OP_reg7";
13147     case DW_OP_reg8:
13148       return "DW_OP_reg8";
13149     case DW_OP_reg9:
13150       return "DW_OP_reg9";
13151     case DW_OP_reg10:
13152       return "DW_OP_reg10";
13153     case DW_OP_reg11:
13154       return "DW_OP_reg11";
13155     case DW_OP_reg12:
13156       return "DW_OP_reg12";
13157     case DW_OP_reg13:
13158       return "DW_OP_reg13";
13159     case DW_OP_reg14:
13160       return "DW_OP_reg14";
13161     case DW_OP_reg15:
13162       return "DW_OP_reg15";
13163     case DW_OP_reg16:
13164       return "DW_OP_reg16";
13165     case DW_OP_reg17:
13166       return "DW_OP_reg17";
13167     case DW_OP_reg18:
13168       return "DW_OP_reg18";
13169     case DW_OP_reg19:
13170       return "DW_OP_reg19";
13171     case DW_OP_reg20:
13172       return "DW_OP_reg20";
13173     case DW_OP_reg21:
13174       return "DW_OP_reg21";
13175     case DW_OP_reg22:
13176       return "DW_OP_reg22";
13177     case DW_OP_reg23:
13178       return "DW_OP_reg23";
13179     case DW_OP_reg24:
13180       return "DW_OP_reg24";
13181     case DW_OP_reg25:
13182       return "DW_OP_reg25";
13183     case DW_OP_reg26:
13184       return "DW_OP_reg26";
13185     case DW_OP_reg27:
13186       return "DW_OP_reg27";
13187     case DW_OP_reg28:
13188       return "DW_OP_reg28";
13189     case DW_OP_reg29:
13190       return "DW_OP_reg29";
13191     case DW_OP_reg30:
13192       return "DW_OP_reg30";
13193     case DW_OP_reg31:
13194       return "DW_OP_reg31";
13195     case DW_OP_breg0:
13196       return "DW_OP_breg0";
13197     case DW_OP_breg1:
13198       return "DW_OP_breg1";
13199     case DW_OP_breg2:
13200       return "DW_OP_breg2";
13201     case DW_OP_breg3:
13202       return "DW_OP_breg3";
13203     case DW_OP_breg4:
13204       return "DW_OP_breg4";
13205     case DW_OP_breg5:
13206       return "DW_OP_breg5";
13207     case DW_OP_breg6:
13208       return "DW_OP_breg6";
13209     case DW_OP_breg7:
13210       return "DW_OP_breg7";
13211     case DW_OP_breg8:
13212       return "DW_OP_breg8";
13213     case DW_OP_breg9:
13214       return "DW_OP_breg9";
13215     case DW_OP_breg10:
13216       return "DW_OP_breg10";
13217     case DW_OP_breg11:
13218       return "DW_OP_breg11";
13219     case DW_OP_breg12:
13220       return "DW_OP_breg12";
13221     case DW_OP_breg13:
13222       return "DW_OP_breg13";
13223     case DW_OP_breg14:
13224       return "DW_OP_breg14";
13225     case DW_OP_breg15:
13226       return "DW_OP_breg15";
13227     case DW_OP_breg16:
13228       return "DW_OP_breg16";
13229     case DW_OP_breg17:
13230       return "DW_OP_breg17";
13231     case DW_OP_breg18:
13232       return "DW_OP_breg18";
13233     case DW_OP_breg19:
13234       return "DW_OP_breg19";
13235     case DW_OP_breg20:
13236       return "DW_OP_breg20";
13237     case DW_OP_breg21:
13238       return "DW_OP_breg21";
13239     case DW_OP_breg22:
13240       return "DW_OP_breg22";
13241     case DW_OP_breg23:
13242       return "DW_OP_breg23";
13243     case DW_OP_breg24:
13244       return "DW_OP_breg24";
13245     case DW_OP_breg25:
13246       return "DW_OP_breg25";
13247     case DW_OP_breg26:
13248       return "DW_OP_breg26";
13249     case DW_OP_breg27:
13250       return "DW_OP_breg27";
13251     case DW_OP_breg28:
13252       return "DW_OP_breg28";
13253     case DW_OP_breg29:
13254       return "DW_OP_breg29";
13255     case DW_OP_breg30:
13256       return "DW_OP_breg30";
13257     case DW_OP_breg31:
13258       return "DW_OP_breg31";
13259     case DW_OP_regx:
13260       return "DW_OP_regx";
13261     case DW_OP_fbreg:
13262       return "DW_OP_fbreg";
13263     case DW_OP_bregx:
13264       return "DW_OP_bregx";
13265     case DW_OP_piece:
13266       return "DW_OP_piece";
13267     case DW_OP_deref_size:
13268       return "DW_OP_deref_size";
13269     case DW_OP_xderef_size:
13270       return "DW_OP_xderef_size";
13271     case DW_OP_nop:
13272       return "DW_OP_nop";
13273     /* DWARF 3 extensions.  */
13274     case DW_OP_push_object_address:
13275       return "DW_OP_push_object_address";
13276     case DW_OP_call2:
13277       return "DW_OP_call2";
13278     case DW_OP_call4:
13279       return "DW_OP_call4";
13280     case DW_OP_call_ref:
13281       return "DW_OP_call_ref";
13282     case DW_OP_form_tls_address:
13283       return "DW_OP_form_tls_address";
13284     case DW_OP_call_frame_cfa:
13285       return "DW_OP_call_frame_cfa";
13286     case DW_OP_bit_piece:
13287       return "DW_OP_bit_piece";
13288     /* DWARF 4 extensions.  */
13289     case DW_OP_implicit_value:
13290       return "DW_OP_implicit_value";
13291     case DW_OP_stack_value:
13292       return "DW_OP_stack_value";
13293     /* GNU extensions.  */
13294     case DW_OP_GNU_push_tls_address:
13295       return "DW_OP_GNU_push_tls_address";
13296     case DW_OP_GNU_uninit:
13297       return "DW_OP_GNU_uninit";
13298     case DW_OP_GNU_implicit_pointer:
13299       return "DW_OP_GNU_implicit_pointer";
13300     case DW_OP_GNU_entry_value:
13301       return "DW_OP_GNU_entry_value";
13302     case DW_OP_GNU_const_type:
13303       return "DW_OP_GNU_const_type";
13304     case DW_OP_GNU_regval_type:
13305       return "DW_OP_GNU_regval_type";
13306     case DW_OP_GNU_deref_type:
13307       return "DW_OP_GNU_deref_type";
13308     case DW_OP_GNU_convert:
13309       return "DW_OP_GNU_convert";
13310     case DW_OP_GNU_reinterpret:
13311       return "DW_OP_GNU_reinterpret";
13312     default:
13313       return NULL;
13314     }
13315 }
13316
13317 static char *
13318 dwarf_bool_name (unsigned mybool)
13319 {
13320   if (mybool)
13321     return "TRUE";
13322   else
13323     return "FALSE";
13324 }
13325
13326 /* Convert a DWARF type code into its string name.  */
13327
13328 static char *
13329 dwarf_type_encoding_name (unsigned enc)
13330 {
13331   switch (enc)
13332     {
13333     case DW_ATE_void:
13334       return "DW_ATE_void";
13335     case DW_ATE_address:
13336       return "DW_ATE_address";
13337     case DW_ATE_boolean:
13338       return "DW_ATE_boolean";
13339     case DW_ATE_complex_float:
13340       return "DW_ATE_complex_float";
13341     case DW_ATE_float:
13342       return "DW_ATE_float";
13343     case DW_ATE_signed:
13344       return "DW_ATE_signed";
13345     case DW_ATE_signed_char:
13346       return "DW_ATE_signed_char";
13347     case DW_ATE_unsigned:
13348       return "DW_ATE_unsigned";
13349     case DW_ATE_unsigned_char:
13350       return "DW_ATE_unsigned_char";
13351     /* DWARF 3.  */
13352     case DW_ATE_imaginary_float:
13353       return "DW_ATE_imaginary_float";
13354     case DW_ATE_packed_decimal:
13355       return "DW_ATE_packed_decimal";
13356     case DW_ATE_numeric_string:
13357       return "DW_ATE_numeric_string";
13358     case DW_ATE_edited:
13359       return "DW_ATE_edited";
13360     case DW_ATE_signed_fixed:
13361       return "DW_ATE_signed_fixed";
13362     case DW_ATE_unsigned_fixed:
13363       return "DW_ATE_unsigned_fixed";
13364     case DW_ATE_decimal_float:
13365       return "DW_ATE_decimal_float";
13366     /* DWARF 4.  */
13367     case DW_ATE_UTF:
13368       return "DW_ATE_UTF";
13369     /* HP extensions.  */
13370     case DW_ATE_HP_float80:
13371       return "DW_ATE_HP_float80";
13372     case DW_ATE_HP_complex_float80:
13373       return "DW_ATE_HP_complex_float80";
13374     case DW_ATE_HP_float128:
13375       return "DW_ATE_HP_float128";
13376     case DW_ATE_HP_complex_float128:
13377       return "DW_ATE_HP_complex_float128";
13378     case DW_ATE_HP_floathpintel:
13379       return "DW_ATE_HP_floathpintel";
13380     case DW_ATE_HP_imaginary_float80:
13381       return "DW_ATE_HP_imaginary_float80";
13382     case DW_ATE_HP_imaginary_float128:
13383       return "DW_ATE_HP_imaginary_float128";
13384     default:
13385       return "DW_ATE_<unknown>";
13386     }
13387 }
13388
13389 /* Convert a DWARF call frame info operation to its string name.  */
13390
13391 #if 0
13392 static char *
13393 dwarf_cfi_name (unsigned cfi_opc)
13394 {
13395   switch (cfi_opc)
13396     {
13397     case DW_CFA_advance_loc:
13398       return "DW_CFA_advance_loc";
13399     case DW_CFA_offset:
13400       return "DW_CFA_offset";
13401     case DW_CFA_restore:
13402       return "DW_CFA_restore";
13403     case DW_CFA_nop:
13404       return "DW_CFA_nop";
13405     case DW_CFA_set_loc:
13406       return "DW_CFA_set_loc";
13407     case DW_CFA_advance_loc1:
13408       return "DW_CFA_advance_loc1";
13409     case DW_CFA_advance_loc2:
13410       return "DW_CFA_advance_loc2";
13411     case DW_CFA_advance_loc4:
13412       return "DW_CFA_advance_loc4";
13413     case DW_CFA_offset_extended:
13414       return "DW_CFA_offset_extended";
13415     case DW_CFA_restore_extended:
13416       return "DW_CFA_restore_extended";
13417     case DW_CFA_undefined:
13418       return "DW_CFA_undefined";
13419     case DW_CFA_same_value:
13420       return "DW_CFA_same_value";
13421     case DW_CFA_register:
13422       return "DW_CFA_register";
13423     case DW_CFA_remember_state:
13424       return "DW_CFA_remember_state";
13425     case DW_CFA_restore_state:
13426       return "DW_CFA_restore_state";
13427     case DW_CFA_def_cfa:
13428       return "DW_CFA_def_cfa";
13429     case DW_CFA_def_cfa_register:
13430       return "DW_CFA_def_cfa_register";
13431     case DW_CFA_def_cfa_offset:
13432       return "DW_CFA_def_cfa_offset";
13433     /* DWARF 3.  */
13434     case DW_CFA_def_cfa_expression:
13435       return "DW_CFA_def_cfa_expression";
13436     case DW_CFA_expression:
13437       return "DW_CFA_expression";
13438     case DW_CFA_offset_extended_sf:
13439       return "DW_CFA_offset_extended_sf";
13440     case DW_CFA_def_cfa_sf:
13441       return "DW_CFA_def_cfa_sf";
13442     case DW_CFA_def_cfa_offset_sf:
13443       return "DW_CFA_def_cfa_offset_sf";
13444     case DW_CFA_val_offset:
13445       return "DW_CFA_val_offset";
13446     case DW_CFA_val_offset_sf:
13447       return "DW_CFA_val_offset_sf";
13448     case DW_CFA_val_expression:
13449       return "DW_CFA_val_expression";
13450     /* SGI/MIPS specific.  */
13451     case DW_CFA_MIPS_advance_loc8:
13452       return "DW_CFA_MIPS_advance_loc8";
13453     /* GNU extensions.  */
13454     case DW_CFA_GNU_window_save:
13455       return "DW_CFA_GNU_window_save";
13456     case DW_CFA_GNU_args_size:
13457       return "DW_CFA_GNU_args_size";
13458     case DW_CFA_GNU_negative_offset_extended:
13459       return "DW_CFA_GNU_negative_offset_extended";
13460     default:
13461       return "DW_CFA_<unknown>";
13462     }
13463 }
13464 #endif
13465
13466 static void
13467 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
13468 {
13469   unsigned int i;
13470
13471   print_spaces (indent, f);
13472   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset 0x%x)\n",
13473            dwarf_tag_name (die->tag), die->abbrev, die->offset);
13474
13475   if (die->parent != NULL)
13476     {
13477       print_spaces (indent, f);
13478       fprintf_unfiltered (f, "  parent at offset: 0x%x\n",
13479                           die->parent->offset);
13480     }
13481
13482   print_spaces (indent, f);
13483   fprintf_unfiltered (f, "  has children: %s\n",
13484            dwarf_bool_name (die->child != NULL));
13485
13486   print_spaces (indent, f);
13487   fprintf_unfiltered (f, "  attributes:\n");
13488
13489   for (i = 0; i < die->num_attrs; ++i)
13490     {
13491       print_spaces (indent, f);
13492       fprintf_unfiltered (f, "    %s (%s) ",
13493                dwarf_attr_name (die->attrs[i].name),
13494                dwarf_form_name (die->attrs[i].form));
13495
13496       switch (die->attrs[i].form)
13497         {
13498         case DW_FORM_ref_addr:
13499         case DW_FORM_addr:
13500           fprintf_unfiltered (f, "address: ");
13501           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
13502           break;
13503         case DW_FORM_block2:
13504         case DW_FORM_block4:
13505         case DW_FORM_block:
13506         case DW_FORM_block1:
13507           fprintf_unfiltered (f, "block: size %d",
13508                               DW_BLOCK (&die->attrs[i])->size);
13509           break;
13510         case DW_FORM_exprloc:
13511           fprintf_unfiltered (f, "expression: size %u",
13512                               DW_BLOCK (&die->attrs[i])->size);
13513           break;
13514         case DW_FORM_ref1:
13515         case DW_FORM_ref2:
13516         case DW_FORM_ref4:
13517           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
13518                               (long) (DW_ADDR (&die->attrs[i])));
13519           break;
13520         case DW_FORM_data1:
13521         case DW_FORM_data2:
13522         case DW_FORM_data4:
13523         case DW_FORM_data8:
13524         case DW_FORM_udata:
13525         case DW_FORM_sdata:
13526           fprintf_unfiltered (f, "constant: %s",
13527                               pulongest (DW_UNSND (&die->attrs[i])));
13528           break;
13529         case DW_FORM_sec_offset:
13530           fprintf_unfiltered (f, "section offset: %s",
13531                               pulongest (DW_UNSND (&die->attrs[i])));
13532           break;
13533         case DW_FORM_ref_sig8:
13534           if (DW_SIGNATURED_TYPE (&die->attrs[i]) != NULL)
13535             fprintf_unfiltered (f, "signatured type, offset: 0x%x",
13536                           DW_SIGNATURED_TYPE (&die->attrs[i])->per_cu.offset);
13537           else
13538             fprintf_unfiltered (f, "signatured type, offset: unknown");
13539           break;
13540         case DW_FORM_string:
13541         case DW_FORM_strp:
13542           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
13543                    DW_STRING (&die->attrs[i])
13544                    ? DW_STRING (&die->attrs[i]) : "",
13545                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
13546           break;
13547         case DW_FORM_flag:
13548           if (DW_UNSND (&die->attrs[i]))
13549             fprintf_unfiltered (f, "flag: TRUE");
13550           else
13551             fprintf_unfiltered (f, "flag: FALSE");
13552           break;
13553         case DW_FORM_flag_present:
13554           fprintf_unfiltered (f, "flag: TRUE");
13555           break;
13556         case DW_FORM_indirect:
13557           /* The reader will have reduced the indirect form to
13558              the "base form" so this form should not occur.  */
13559           fprintf_unfiltered (f, 
13560                               "unexpected attribute form: DW_FORM_indirect");
13561           break;
13562         default:
13563           fprintf_unfiltered (f, "unsupported attribute form: %d.",
13564                    die->attrs[i].form);
13565           break;
13566         }
13567       fprintf_unfiltered (f, "\n");
13568     }
13569 }
13570
13571 static void
13572 dump_die_for_error (struct die_info *die)
13573 {
13574   dump_die_shallow (gdb_stderr, 0, die);
13575 }
13576
13577 static void
13578 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
13579 {
13580   int indent = level * 4;
13581
13582   gdb_assert (die != NULL);
13583
13584   if (level >= max_level)
13585     return;
13586
13587   dump_die_shallow (f, indent, die);
13588
13589   if (die->child != NULL)
13590     {
13591       print_spaces (indent, f);
13592       fprintf_unfiltered (f, "  Children:");
13593       if (level + 1 < max_level)
13594         {
13595           fprintf_unfiltered (f, "\n");
13596           dump_die_1 (f, level + 1, max_level, die->child);
13597         }
13598       else
13599         {
13600           fprintf_unfiltered (f,
13601                               " [not printed, max nesting level reached]\n");
13602         }
13603     }
13604
13605   if (die->sibling != NULL && level > 0)
13606     {
13607       dump_die_1 (f, level, max_level, die->sibling);
13608     }
13609 }
13610
13611 /* This is called from the pdie macro in gdbinit.in.
13612    It's not static so gcc will keep a copy callable from gdb.  */
13613
13614 void
13615 dump_die (struct die_info *die, int max_level)
13616 {
13617   dump_die_1 (gdb_stdlog, 0, max_level, die);
13618 }
13619
13620 static void
13621 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
13622 {
13623   void **slot;
13624
13625   slot = htab_find_slot_with_hash (cu->die_hash, die, die->offset, INSERT);
13626
13627   *slot = die;
13628 }
13629
13630 static int
13631 is_ref_attr (struct attribute *attr)
13632 {
13633   switch (attr->form)
13634     {
13635     case DW_FORM_ref_addr:
13636     case DW_FORM_ref1:
13637     case DW_FORM_ref2:
13638     case DW_FORM_ref4:
13639     case DW_FORM_ref8:
13640     case DW_FORM_ref_udata:
13641       return 1;
13642     default:
13643       return 0;
13644     }
13645 }
13646
13647 static unsigned int
13648 dwarf2_get_ref_die_offset (struct attribute *attr)
13649 {
13650   if (is_ref_attr (attr))
13651     return DW_ADDR (attr);
13652
13653   complaint (&symfile_complaints,
13654              _("unsupported die ref attribute form: '%s'"),
13655              dwarf_form_name (attr->form));
13656   return 0;
13657 }
13658
13659 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
13660  * the value held by the attribute is not constant.  */
13661
13662 static LONGEST
13663 dwarf2_get_attr_constant_value (struct attribute *attr, int default_value)
13664 {
13665   if (attr->form == DW_FORM_sdata)
13666     return DW_SND (attr);
13667   else if (attr->form == DW_FORM_udata
13668            || attr->form == DW_FORM_data1
13669            || attr->form == DW_FORM_data2
13670            || attr->form == DW_FORM_data4
13671            || attr->form == DW_FORM_data8)
13672     return DW_UNSND (attr);
13673   else
13674     {
13675       complaint (&symfile_complaints,
13676                  _("Attribute value is not a constant (%s)"),
13677                  dwarf_form_name (attr->form));
13678       return default_value;
13679     }
13680 }
13681
13682 /* THIS_CU has a reference to PER_CU.  If necessary, load the new compilation
13683    unit and add it to our queue.
13684    The result is non-zero if PER_CU was queued, otherwise the result is zero
13685    meaning either PER_CU is already queued or it is already loaded.  */
13686
13687 static int
13688 maybe_queue_comp_unit (struct dwarf2_cu *this_cu,
13689                        struct dwarf2_per_cu_data *per_cu)
13690 {
13691   /* We may arrive here during partial symbol reading, if we need full
13692      DIEs to process an unusual case (e.g. template arguments).  Do
13693      not queue PER_CU, just tell our caller to load its DIEs.  */
13694   if (dwarf2_per_objfile->reading_partial_symbols)
13695     {
13696       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
13697         return 1;
13698       return 0;
13699     }
13700
13701   /* Mark the dependence relation so that we don't flush PER_CU
13702      too early.  */
13703   dwarf2_add_dependence (this_cu, per_cu);
13704
13705   /* If it's already on the queue, we have nothing to do.  */
13706   if (per_cu->queued)
13707     return 0;
13708
13709   /* If the compilation unit is already loaded, just mark it as
13710      used.  */
13711   if (per_cu->cu != NULL)
13712     {
13713       per_cu->cu->last_used = 0;
13714       return 0;
13715     }
13716
13717   /* Add it to the queue.  */
13718   queue_comp_unit (per_cu, this_cu->objfile);
13719
13720   return 1;
13721 }
13722
13723 /* Follow reference or signature attribute ATTR of SRC_DIE.
13724    On entry *REF_CU is the CU of SRC_DIE.
13725    On exit *REF_CU is the CU of the result.  */
13726
13727 static struct die_info *
13728 follow_die_ref_or_sig (struct die_info *src_die, struct attribute *attr,
13729                        struct dwarf2_cu **ref_cu)
13730 {
13731   struct die_info *die;
13732
13733   if (is_ref_attr (attr))
13734     die = follow_die_ref (src_die, attr, ref_cu);
13735   else if (attr->form == DW_FORM_ref_sig8)
13736     die = follow_die_sig (src_die, attr, ref_cu);
13737   else
13738     {
13739       dump_die_for_error (src_die);
13740       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
13741              (*ref_cu)->objfile->name);
13742     }
13743
13744   return die;
13745 }
13746
13747 /* Follow reference OFFSET.
13748    On entry *REF_CU is the CU of the source die referencing OFFSET.
13749    On exit *REF_CU is the CU of the result.
13750    Returns NULL if OFFSET is invalid.  */
13751
13752 static struct die_info *
13753 follow_die_offset (unsigned int offset, struct dwarf2_cu **ref_cu)
13754 {
13755   struct die_info temp_die;
13756   struct dwarf2_cu *target_cu, *cu = *ref_cu;
13757
13758   gdb_assert (cu->per_cu != NULL);
13759
13760   target_cu = cu;
13761
13762   if (cu->per_cu->from_debug_types)
13763     {
13764       /* .debug_types CUs cannot reference anything outside their CU.
13765          If they need to, they have to reference a signatured type via
13766          DW_FORM_ref_sig8.  */
13767       if (! offset_in_cu_p (&cu->header, offset))
13768         return NULL;
13769     }
13770   else if (! offset_in_cu_p (&cu->header, offset))
13771     {
13772       struct dwarf2_per_cu_data *per_cu;
13773
13774       per_cu = dwarf2_find_containing_comp_unit (offset, cu->objfile);
13775
13776       /* If necessary, add it to the queue and load its DIEs.  */
13777       if (maybe_queue_comp_unit (cu, per_cu))
13778         load_full_comp_unit (per_cu, cu->objfile);
13779
13780       target_cu = per_cu->cu;
13781     }
13782   else if (cu->dies == NULL)
13783     {
13784       /* We're loading full DIEs during partial symbol reading.  */
13785       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
13786       load_full_comp_unit (cu->per_cu, cu->objfile);
13787     }
13788
13789   *ref_cu = target_cu;
13790   temp_die.offset = offset;
13791   return htab_find_with_hash (target_cu->die_hash, &temp_die, offset);
13792 }
13793
13794 /* Follow reference attribute ATTR of SRC_DIE.
13795    On entry *REF_CU is the CU of SRC_DIE.
13796    On exit *REF_CU is the CU of the result.  */
13797
13798 static struct die_info *
13799 follow_die_ref (struct die_info *src_die, struct attribute *attr,
13800                 struct dwarf2_cu **ref_cu)
13801 {
13802   unsigned int offset = dwarf2_get_ref_die_offset (attr);
13803   struct dwarf2_cu *cu = *ref_cu;
13804   struct die_info *die;
13805
13806   die = follow_die_offset (offset, ref_cu);
13807   if (!die)
13808     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced from DIE "
13809            "at 0x%x [in module %s]"),
13810            offset, src_die->offset, cu->objfile->name);
13811
13812   return die;
13813 }
13814
13815 /* Return DWARF block and its CU referenced by OFFSET at PER_CU.  Returned
13816    value is intended for DW_OP_call*.  */
13817
13818 struct dwarf2_locexpr_baton
13819 dwarf2_fetch_die_location_block (unsigned int offset,
13820                                  struct dwarf2_per_cu_data *per_cu,
13821                                  CORE_ADDR (*get_frame_pc) (void *baton),
13822                                  void *baton)
13823 {
13824   struct dwarf2_cu *cu = per_cu->cu;
13825   struct die_info *die;
13826   struct attribute *attr;
13827   struct dwarf2_locexpr_baton retval;
13828
13829   dw2_setup (per_cu->objfile);
13830
13831   die = follow_die_offset (offset, &cu);
13832   if (!die)
13833     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
13834            offset, per_cu->cu->objfile->name);
13835
13836   attr = dwarf2_attr (die, DW_AT_location, cu);
13837   if (!attr)
13838     {
13839       /* DWARF: "If there is no such attribute, then there is no effect.".  */
13840
13841       retval.data = NULL;
13842       retval.size = 0;
13843     }
13844   else if (attr_form_is_section_offset (attr))
13845     {
13846       struct dwarf2_loclist_baton loclist_baton;
13847       CORE_ADDR pc = (*get_frame_pc) (baton);
13848       size_t size;
13849
13850       fill_in_loclist_baton (cu, &loclist_baton, attr);
13851
13852       retval.data = dwarf2_find_location_expression (&loclist_baton,
13853                                                      &size, pc);
13854       retval.size = size;
13855     }
13856   else
13857     {
13858       if (!attr_form_is_block (attr))
13859         error (_("Dwarf Error: DIE at 0x%x referenced in module %s "
13860                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
13861                offset, per_cu->cu->objfile->name);
13862
13863       retval.data = DW_BLOCK (attr)->data;
13864       retval.size = DW_BLOCK (attr)->size;
13865     }
13866   retval.per_cu = cu->per_cu;
13867   return retval;
13868 }
13869
13870 /* Return the type of the DIE at DIE_OFFSET in the CU named by
13871    PER_CU.  */
13872
13873 struct type *
13874 dwarf2_get_die_type (unsigned int die_offset,
13875                      struct dwarf2_per_cu_data *per_cu)
13876 {
13877   dw2_setup (per_cu->objfile);
13878   return get_die_type_at_offset (die_offset, per_cu);
13879 }
13880
13881 /* Follow the signature attribute ATTR in SRC_DIE.
13882    On entry *REF_CU is the CU of SRC_DIE.
13883    On exit *REF_CU is the CU of the result.  */
13884
13885 static struct die_info *
13886 follow_die_sig (struct die_info *src_die, struct attribute *attr,
13887                 struct dwarf2_cu **ref_cu)
13888 {
13889   struct objfile *objfile = (*ref_cu)->objfile;
13890   struct die_info temp_die;
13891   struct signatured_type *sig_type = DW_SIGNATURED_TYPE (attr);
13892   struct dwarf2_cu *sig_cu;
13893   struct die_info *die;
13894
13895   /* sig_type will be NULL if the signatured type is missing from
13896      the debug info.  */
13897   if (sig_type == NULL)
13898     error (_("Dwarf Error: Cannot find signatured DIE referenced from DIE "
13899              "at 0x%x [in module %s]"),
13900            src_die->offset, objfile->name);
13901
13902   /* If necessary, add it to the queue and load its DIEs.  */
13903
13904   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu))
13905     read_signatured_type (objfile, sig_type);
13906
13907   gdb_assert (sig_type->per_cu.cu != NULL);
13908
13909   sig_cu = sig_type->per_cu.cu;
13910   temp_die.offset = sig_cu->header.offset + sig_type->type_offset;
13911   die = htab_find_with_hash (sig_cu->die_hash, &temp_die, temp_die.offset);
13912   if (die)
13913     {
13914       *ref_cu = sig_cu;
13915       return die;
13916     }
13917
13918   error (_("Dwarf Error: Cannot find signatured DIE at 0x%x referenced "
13919          "from DIE at 0x%x [in module %s]"),
13920          sig_type->type_offset, src_die->offset, objfile->name);
13921 }
13922
13923 /* Given an offset of a signatured type, return its signatured_type.  */
13924
13925 static struct signatured_type *
13926 lookup_signatured_type_at_offset (struct objfile *objfile, unsigned int offset)
13927 {
13928   gdb_byte *info_ptr = dwarf2_per_objfile->types.buffer + offset;
13929   unsigned int length, initial_length_size;
13930   unsigned int sig_offset;
13931   struct signatured_type find_entry, *type_sig;
13932
13933   length = read_initial_length (objfile->obfd, info_ptr, &initial_length_size);
13934   sig_offset = (initial_length_size
13935                 + 2 /*version*/
13936                 + (initial_length_size == 4 ? 4 : 8) /*debug_abbrev_offset*/
13937                 + 1 /*address_size*/);
13938   find_entry.signature = bfd_get_64 (objfile->obfd, info_ptr + sig_offset);
13939   type_sig = htab_find (dwarf2_per_objfile->signatured_types, &find_entry);
13940
13941   /* This is only used to lookup previously recorded types.
13942      If we didn't find it, it's our bug.  */
13943   gdb_assert (type_sig != NULL);
13944   gdb_assert (offset == type_sig->per_cu.offset);
13945
13946   return type_sig;
13947 }
13948
13949 /* Read in signatured type at OFFSET and build its CU and die(s).  */
13950
13951 static void
13952 read_signatured_type_at_offset (struct objfile *objfile,
13953                                 unsigned int offset)
13954 {
13955   struct signatured_type *type_sig;
13956
13957   dwarf2_read_section (objfile, &dwarf2_per_objfile->types);
13958
13959   /* We have the section offset, but we need the signature to do the
13960      hash table lookup.  */
13961   type_sig = lookup_signatured_type_at_offset (objfile, offset);
13962
13963   gdb_assert (type_sig->per_cu.cu == NULL);
13964
13965   read_signatured_type (objfile, type_sig);
13966
13967   gdb_assert (type_sig->per_cu.cu != NULL);
13968 }
13969
13970 /* Read in a signatured type and build its CU and DIEs.  */
13971
13972 static void
13973 read_signatured_type (struct objfile *objfile,
13974                       struct signatured_type *type_sig)
13975 {
13976   gdb_byte *types_ptr;
13977   struct die_reader_specs reader_specs;
13978   struct dwarf2_cu *cu;
13979   ULONGEST signature;
13980   struct cleanup *back_to, *free_cu_cleanup;
13981
13982   dwarf2_read_section (objfile, &dwarf2_per_objfile->types);
13983   types_ptr = dwarf2_per_objfile->types.buffer + type_sig->per_cu.offset;
13984
13985   gdb_assert (type_sig->per_cu.cu == NULL);
13986
13987   cu = xmalloc (sizeof (*cu));
13988   init_one_comp_unit (cu, objfile);
13989
13990   type_sig->per_cu.cu = cu;
13991   cu->per_cu = &type_sig->per_cu;
13992
13993   /* If an error occurs while loading, release our storage.  */
13994   free_cu_cleanup = make_cleanup (free_one_comp_unit, cu);
13995
13996   types_ptr = read_type_comp_unit_head (&cu->header, &signature,
13997                                         types_ptr, objfile->obfd);
13998   gdb_assert (signature == type_sig->signature);
13999
14000   cu->die_hash
14001     = htab_create_alloc_ex (cu->header.length / 12,
14002                             die_hash,
14003                             die_eq,
14004                             NULL,
14005                             &cu->comp_unit_obstack,
14006                             hashtab_obstack_allocate,
14007                             dummy_obstack_deallocate);
14008
14009   dwarf2_read_abbrevs (cu->objfile->obfd, cu);
14010   back_to = make_cleanup (dwarf2_free_abbrev_table, cu);
14011
14012   init_cu_die_reader (&reader_specs, cu);
14013
14014   cu->dies = read_die_and_children (&reader_specs, types_ptr, &types_ptr,
14015                                     NULL /*parent*/);
14016
14017   /* We try not to read any attributes in this function, because not
14018      all objfiles needed for references have been loaded yet, and symbol
14019      table processing isn't initialized.  But we have to set the CU language,
14020      or we won't be able to build types correctly.  */
14021   prepare_one_comp_unit (cu, cu->dies);
14022
14023   do_cleanups (back_to);
14024
14025   /* We've successfully allocated this compilation unit.  Let our caller
14026      clean it up when finished with it.  */
14027   discard_cleanups (free_cu_cleanup);
14028
14029   type_sig->per_cu.cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
14030   dwarf2_per_objfile->read_in_chain = &type_sig->per_cu;
14031 }
14032
14033 /* Decode simple location descriptions.
14034    Given a pointer to a dwarf block that defines a location, compute
14035    the location and return the value.
14036
14037    NOTE drow/2003-11-18: This function is called in two situations
14038    now: for the address of static or global variables (partial symbols
14039    only) and for offsets into structures which are expected to be
14040    (more or less) constant.  The partial symbol case should go away,
14041    and only the constant case should remain.  That will let this
14042    function complain more accurately.  A few special modes are allowed
14043    without complaint for global variables (for instance, global
14044    register values and thread-local values).
14045
14046    A location description containing no operations indicates that the
14047    object is optimized out.  The return value is 0 for that case.
14048    FIXME drow/2003-11-16: No callers check for this case any more; soon all
14049    callers will only want a very basic result and this can become a
14050    complaint.
14051
14052    Note that stack[0] is unused except as a default error return.  */
14053
14054 static CORE_ADDR
14055 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
14056 {
14057   struct objfile *objfile = cu->objfile;
14058   int i;
14059   int size = blk->size;
14060   gdb_byte *data = blk->data;
14061   CORE_ADDR stack[64];
14062   int stacki;
14063   unsigned int bytes_read, unsnd;
14064   gdb_byte op;
14065
14066   i = 0;
14067   stacki = 0;
14068   stack[stacki] = 0;
14069   stack[++stacki] = 0;
14070
14071   while (i < size)
14072     {
14073       op = data[i++];
14074       switch (op)
14075         {
14076         case DW_OP_lit0:
14077         case DW_OP_lit1:
14078         case DW_OP_lit2:
14079         case DW_OP_lit3:
14080         case DW_OP_lit4:
14081         case DW_OP_lit5:
14082         case DW_OP_lit6:
14083         case DW_OP_lit7:
14084         case DW_OP_lit8:
14085         case DW_OP_lit9:
14086         case DW_OP_lit10:
14087         case DW_OP_lit11:
14088         case DW_OP_lit12:
14089         case DW_OP_lit13:
14090         case DW_OP_lit14:
14091         case DW_OP_lit15:
14092         case DW_OP_lit16:
14093         case DW_OP_lit17:
14094         case DW_OP_lit18:
14095         case DW_OP_lit19:
14096         case DW_OP_lit20:
14097         case DW_OP_lit21:
14098         case DW_OP_lit22:
14099         case DW_OP_lit23:
14100         case DW_OP_lit24:
14101         case DW_OP_lit25:
14102         case DW_OP_lit26:
14103         case DW_OP_lit27:
14104         case DW_OP_lit28:
14105         case DW_OP_lit29:
14106         case DW_OP_lit30:
14107         case DW_OP_lit31:
14108           stack[++stacki] = op - DW_OP_lit0;
14109           break;
14110
14111         case DW_OP_reg0:
14112         case DW_OP_reg1:
14113         case DW_OP_reg2:
14114         case DW_OP_reg3:
14115         case DW_OP_reg4:
14116         case DW_OP_reg5:
14117         case DW_OP_reg6:
14118         case DW_OP_reg7:
14119         case DW_OP_reg8:
14120         case DW_OP_reg9:
14121         case DW_OP_reg10:
14122         case DW_OP_reg11:
14123         case DW_OP_reg12:
14124         case DW_OP_reg13:
14125         case DW_OP_reg14:
14126         case DW_OP_reg15:
14127         case DW_OP_reg16:
14128         case DW_OP_reg17:
14129         case DW_OP_reg18:
14130         case DW_OP_reg19:
14131         case DW_OP_reg20:
14132         case DW_OP_reg21:
14133         case DW_OP_reg22:
14134         case DW_OP_reg23:
14135         case DW_OP_reg24:
14136         case DW_OP_reg25:
14137         case DW_OP_reg26:
14138         case DW_OP_reg27:
14139         case DW_OP_reg28:
14140         case DW_OP_reg29:
14141         case DW_OP_reg30:
14142         case DW_OP_reg31:
14143           stack[++stacki] = op - DW_OP_reg0;
14144           if (i < size)
14145             dwarf2_complex_location_expr_complaint ();
14146           break;
14147
14148         case DW_OP_regx:
14149           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
14150           i += bytes_read;
14151           stack[++stacki] = unsnd;
14152           if (i < size)
14153             dwarf2_complex_location_expr_complaint ();
14154           break;
14155
14156         case DW_OP_addr:
14157           stack[++stacki] = read_address (objfile->obfd, &data[i],
14158                                           cu, &bytes_read);
14159           i += bytes_read;
14160           break;
14161
14162         case DW_OP_const1u:
14163           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
14164           i += 1;
14165           break;
14166
14167         case DW_OP_const1s:
14168           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
14169           i += 1;
14170           break;
14171
14172         case DW_OP_const2u:
14173           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
14174           i += 2;
14175           break;
14176
14177         case DW_OP_const2s:
14178           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
14179           i += 2;
14180           break;
14181
14182         case DW_OP_const4u:
14183           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
14184           i += 4;
14185           break;
14186
14187         case DW_OP_const4s:
14188           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
14189           i += 4;
14190           break;
14191
14192         case DW_OP_constu:
14193           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
14194                                                   &bytes_read);
14195           i += bytes_read;
14196           break;
14197
14198         case DW_OP_consts:
14199           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
14200           i += bytes_read;
14201           break;
14202
14203         case DW_OP_dup:
14204           stack[stacki + 1] = stack[stacki];
14205           stacki++;
14206           break;
14207
14208         case DW_OP_plus:
14209           stack[stacki - 1] += stack[stacki];
14210           stacki--;
14211           break;
14212
14213         case DW_OP_plus_uconst:
14214           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
14215                                                  &bytes_read);
14216           i += bytes_read;
14217           break;
14218
14219         case DW_OP_minus:
14220           stack[stacki - 1] -= stack[stacki];
14221           stacki--;
14222           break;
14223
14224         case DW_OP_deref:
14225           /* If we're not the last op, then we definitely can't encode
14226              this using GDB's address_class enum.  This is valid for partial
14227              global symbols, although the variable's address will be bogus
14228              in the psymtab.  */
14229           if (i < size)
14230             dwarf2_complex_location_expr_complaint ();
14231           break;
14232
14233         case DW_OP_GNU_push_tls_address:
14234           /* The top of the stack has the offset from the beginning
14235              of the thread control block at which the variable is located.  */
14236           /* Nothing should follow this operator, so the top of stack would
14237              be returned.  */
14238           /* This is valid for partial global symbols, but the variable's
14239              address will be bogus in the psymtab.  */
14240           if (i < size)
14241             dwarf2_complex_location_expr_complaint ();
14242           break;
14243
14244         case DW_OP_GNU_uninit:
14245           break;
14246
14247         default:
14248           {
14249             const char *name = dwarf_stack_op_name (op);
14250
14251             if (name)
14252               complaint (&symfile_complaints, _("unsupported stack op: '%s'"),
14253                          name);
14254             else
14255               complaint (&symfile_complaints, _("unsupported stack op: '%02x'"),
14256                          op);
14257           }
14258
14259           return (stack[stacki]);
14260         }
14261
14262       /* Enforce maximum stack depth of SIZE-1 to avoid writing
14263          outside of the allocated space.  Also enforce minimum>0.  */
14264       if (stacki >= ARRAY_SIZE (stack) - 1)
14265         {
14266           complaint (&symfile_complaints,
14267                      _("location description stack overflow"));
14268           return 0;
14269         }
14270
14271       if (stacki <= 0)
14272         {
14273           complaint (&symfile_complaints,
14274                      _("location description stack underflow"));
14275           return 0;
14276         }
14277     }
14278   return (stack[stacki]);
14279 }
14280
14281 /* memory allocation interface */
14282
14283 static struct dwarf_block *
14284 dwarf_alloc_block (struct dwarf2_cu *cu)
14285 {
14286   struct dwarf_block *blk;
14287
14288   blk = (struct dwarf_block *)
14289     obstack_alloc (&cu->comp_unit_obstack, sizeof (struct dwarf_block));
14290   return (blk);
14291 }
14292
14293 static struct abbrev_info *
14294 dwarf_alloc_abbrev (struct dwarf2_cu *cu)
14295 {
14296   struct abbrev_info *abbrev;
14297
14298   abbrev = (struct abbrev_info *)
14299     obstack_alloc (&cu->abbrev_obstack, sizeof (struct abbrev_info));
14300   memset (abbrev, 0, sizeof (struct abbrev_info));
14301   return (abbrev);
14302 }
14303
14304 static struct die_info *
14305 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
14306 {
14307   struct die_info *die;
14308   size_t size = sizeof (struct die_info);
14309
14310   if (num_attrs > 1)
14311     size += (num_attrs - 1) * sizeof (struct attribute);
14312
14313   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
14314   memset (die, 0, sizeof (struct die_info));
14315   return (die);
14316 }
14317
14318 \f
14319 /* Macro support.  */
14320
14321 /* Return the full name of file number I in *LH's file name table.
14322    Use COMP_DIR as the name of the current directory of the
14323    compilation.  The result is allocated using xmalloc; the caller is
14324    responsible for freeing it.  */
14325 static char *
14326 file_full_name (int file, struct line_header *lh, const char *comp_dir)
14327 {
14328   /* Is the file number a valid index into the line header's file name
14329      table?  Remember that file numbers start with one, not zero.  */
14330   if (1 <= file && file <= lh->num_file_names)
14331     {
14332       struct file_entry *fe = &lh->file_names[file - 1];
14333
14334       if (IS_ABSOLUTE_PATH (fe->name))
14335         return xstrdup (fe->name);
14336       else
14337         {
14338           const char *dir;
14339           int dir_len;
14340           char *full_name;
14341
14342           if (fe->dir_index)
14343             dir = lh->include_dirs[fe->dir_index - 1];
14344           else
14345             dir = comp_dir;
14346
14347           if (dir)
14348             {
14349               dir_len = strlen (dir);
14350               full_name = xmalloc (dir_len + 1 + strlen (fe->name) + 1);
14351               strcpy (full_name, dir);
14352               full_name[dir_len] = '/';
14353               strcpy (full_name + dir_len + 1, fe->name);
14354               return full_name;
14355             }
14356           else
14357             return xstrdup (fe->name);
14358         }
14359     }
14360   else
14361     {
14362       /* The compiler produced a bogus file number.  We can at least
14363          record the macro definitions made in the file, even if we
14364          won't be able to find the file by name.  */
14365       char fake_name[80];
14366
14367       sprintf (fake_name, "<bad macro file number %d>", file);
14368
14369       complaint (&symfile_complaints,
14370                  _("bad file number in macro information (%d)"),
14371                  file);
14372
14373       return xstrdup (fake_name);
14374     }
14375 }
14376
14377
14378 static struct macro_source_file *
14379 macro_start_file (int file, int line,
14380                   struct macro_source_file *current_file,
14381                   const char *comp_dir,
14382                   struct line_header *lh, struct objfile *objfile)
14383 {
14384   /* The full name of this source file.  */
14385   char *full_name = file_full_name (file, lh, comp_dir);
14386
14387   /* We don't create a macro table for this compilation unit
14388      at all until we actually get a filename.  */
14389   if (! pending_macros)
14390     pending_macros = new_macro_table (&objfile->objfile_obstack,
14391                                       objfile->macro_cache);
14392
14393   if (! current_file)
14394     /* If we have no current file, then this must be the start_file
14395        directive for the compilation unit's main source file.  */
14396     current_file = macro_set_main (pending_macros, full_name);
14397   else
14398     current_file = macro_include (current_file, line, full_name);
14399
14400   xfree (full_name);
14401
14402   return current_file;
14403 }
14404
14405
14406 /* Copy the LEN characters at BUF to a xmalloc'ed block of memory,
14407    followed by a null byte.  */
14408 static char *
14409 copy_string (const char *buf, int len)
14410 {
14411   char *s = xmalloc (len + 1);
14412
14413   memcpy (s, buf, len);
14414   s[len] = '\0';
14415   return s;
14416 }
14417
14418
14419 static const char *
14420 consume_improper_spaces (const char *p, const char *body)
14421 {
14422   if (*p == ' ')
14423     {
14424       complaint (&symfile_complaints,
14425                  _("macro definition contains spaces "
14426                    "in formal argument list:\n`%s'"),
14427                  body);
14428
14429       while (*p == ' ')
14430         p++;
14431     }
14432
14433   return p;
14434 }
14435
14436
14437 static void
14438 parse_macro_definition (struct macro_source_file *file, int line,
14439                         const char *body)
14440 {
14441   const char *p;
14442
14443   /* The body string takes one of two forms.  For object-like macro
14444      definitions, it should be:
14445
14446         <macro name> " " <definition>
14447
14448      For function-like macro definitions, it should be:
14449
14450         <macro name> "() " <definition>
14451      or
14452         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
14453
14454      Spaces may appear only where explicitly indicated, and in the
14455      <definition>.
14456
14457      The Dwarf 2 spec says that an object-like macro's name is always
14458      followed by a space, but versions of GCC around March 2002 omit
14459      the space when the macro's definition is the empty string.
14460
14461      The Dwarf 2 spec says that there should be no spaces between the
14462      formal arguments in a function-like macro's formal argument list,
14463      but versions of GCC around March 2002 include spaces after the
14464      commas.  */
14465
14466
14467   /* Find the extent of the macro name.  The macro name is terminated
14468      by either a space or null character (for an object-like macro) or
14469      an opening paren (for a function-like macro).  */
14470   for (p = body; *p; p++)
14471     if (*p == ' ' || *p == '(')
14472       break;
14473
14474   if (*p == ' ' || *p == '\0')
14475     {
14476       /* It's an object-like macro.  */
14477       int name_len = p - body;
14478       char *name = copy_string (body, name_len);
14479       const char *replacement;
14480
14481       if (*p == ' ')
14482         replacement = body + name_len + 1;
14483       else
14484         {
14485           dwarf2_macro_malformed_definition_complaint (body);
14486           replacement = body + name_len;
14487         }
14488
14489       macro_define_object (file, line, name, replacement);
14490
14491       xfree (name);
14492     }
14493   else if (*p == '(')
14494     {
14495       /* It's a function-like macro.  */
14496       char *name = copy_string (body, p - body);
14497       int argc = 0;
14498       int argv_size = 1;
14499       char **argv = xmalloc (argv_size * sizeof (*argv));
14500
14501       p++;
14502
14503       p = consume_improper_spaces (p, body);
14504
14505       /* Parse the formal argument list.  */
14506       while (*p && *p != ')')
14507         {
14508           /* Find the extent of the current argument name.  */
14509           const char *arg_start = p;
14510
14511           while (*p && *p != ',' && *p != ')' && *p != ' ')
14512             p++;
14513
14514           if (! *p || p == arg_start)
14515             dwarf2_macro_malformed_definition_complaint (body);
14516           else
14517             {
14518               /* Make sure argv has room for the new argument.  */
14519               if (argc >= argv_size)
14520                 {
14521                   argv_size *= 2;
14522                   argv = xrealloc (argv, argv_size * sizeof (*argv));
14523                 }
14524
14525               argv[argc++] = copy_string (arg_start, p - arg_start);
14526             }
14527
14528           p = consume_improper_spaces (p, body);
14529
14530           /* Consume the comma, if present.  */
14531           if (*p == ',')
14532             {
14533               p++;
14534
14535               p = consume_improper_spaces (p, body);
14536             }
14537         }
14538
14539       if (*p == ')')
14540         {
14541           p++;
14542
14543           if (*p == ' ')
14544             /* Perfectly formed definition, no complaints.  */
14545             macro_define_function (file, line, name,
14546                                    argc, (const char **) argv,
14547                                    p + 1);
14548           else if (*p == '\0')
14549             {
14550               /* Complain, but do define it.  */
14551               dwarf2_macro_malformed_definition_complaint (body);
14552               macro_define_function (file, line, name,
14553                                      argc, (const char **) argv,
14554                                      p);
14555             }
14556           else
14557             /* Just complain.  */
14558             dwarf2_macro_malformed_definition_complaint (body);
14559         }
14560       else
14561         /* Just complain.  */
14562         dwarf2_macro_malformed_definition_complaint (body);
14563
14564       xfree (name);
14565       {
14566         int i;
14567
14568         for (i = 0; i < argc; i++)
14569           xfree (argv[i]);
14570       }
14571       xfree (argv);
14572     }
14573   else
14574     dwarf2_macro_malformed_definition_complaint (body);
14575 }
14576
14577
14578 static void
14579 dwarf_decode_macros (struct line_header *lh, unsigned int offset,
14580                      char *comp_dir, bfd *abfd,
14581                      struct dwarf2_cu *cu)
14582 {
14583   gdb_byte *mac_ptr, *mac_end;
14584   struct macro_source_file *current_file = 0;
14585   enum dwarf_macinfo_record_type macinfo_type;
14586   int at_commandline;
14587
14588   dwarf2_read_section (dwarf2_per_objfile->objfile,
14589                        &dwarf2_per_objfile->macinfo);
14590   if (dwarf2_per_objfile->macinfo.buffer == NULL)
14591     {
14592       complaint (&symfile_complaints, _("missing .debug_macinfo section"));
14593       return;
14594     }
14595
14596   /* First pass: Find the name of the base filename.
14597      This filename is needed in order to process all macros whose definition
14598      (or undefinition) comes from the command line.  These macros are defined
14599      before the first DW_MACINFO_start_file entry, and yet still need to be
14600      associated to the base file.
14601
14602      To determine the base file name, we scan the macro definitions until we
14603      reach the first DW_MACINFO_start_file entry.  We then initialize
14604      CURRENT_FILE accordingly so that any macro definition found before the
14605      first DW_MACINFO_start_file can still be associated to the base file.  */
14606
14607   mac_ptr = dwarf2_per_objfile->macinfo.buffer + offset;
14608   mac_end = dwarf2_per_objfile->macinfo.buffer
14609     + dwarf2_per_objfile->macinfo.size;
14610
14611   do
14612     {
14613       /* Do we at least have room for a macinfo type byte?  */
14614       if (mac_ptr >= mac_end)
14615         {
14616           /* Complaint is printed during the second pass as GDB will probably
14617              stop the first pass earlier upon finding
14618              DW_MACINFO_start_file.  */
14619           break;
14620         }
14621
14622       macinfo_type = read_1_byte (abfd, mac_ptr);
14623       mac_ptr++;
14624
14625       switch (macinfo_type)
14626         {
14627           /* A zero macinfo type indicates the end of the macro
14628              information.  */
14629         case 0:
14630           break;
14631
14632         case DW_MACINFO_define:
14633         case DW_MACINFO_undef:
14634           /* Only skip the data by MAC_PTR.  */
14635           {
14636             unsigned int bytes_read;
14637
14638             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
14639             mac_ptr += bytes_read;
14640             read_direct_string (abfd, mac_ptr, &bytes_read);
14641             mac_ptr += bytes_read;
14642           }
14643           break;
14644
14645         case DW_MACINFO_start_file:
14646           {
14647             unsigned int bytes_read;
14648             int line, file;
14649
14650             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
14651             mac_ptr += bytes_read;
14652             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
14653             mac_ptr += bytes_read;
14654
14655             current_file = macro_start_file (file, line, current_file,
14656                                              comp_dir, lh, cu->objfile);
14657           }
14658           break;
14659
14660         case DW_MACINFO_end_file:
14661           /* No data to skip by MAC_PTR.  */
14662           break;
14663
14664         case DW_MACINFO_vendor_ext:
14665           /* Only skip the data by MAC_PTR.  */
14666           {
14667             unsigned int bytes_read;
14668
14669             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
14670             mac_ptr += bytes_read;
14671             read_direct_string (abfd, mac_ptr, &bytes_read);
14672             mac_ptr += bytes_read;
14673           }
14674           break;
14675
14676         default:
14677           break;
14678         }
14679     } while (macinfo_type != 0 && current_file == NULL);
14680
14681   /* Second pass: Process all entries.
14682
14683      Use the AT_COMMAND_LINE flag to determine whether we are still processing
14684      command-line macro definitions/undefinitions.  This flag is unset when we
14685      reach the first DW_MACINFO_start_file entry.  */
14686
14687   mac_ptr = dwarf2_per_objfile->macinfo.buffer + offset;
14688
14689   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
14690      GDB is still reading the definitions from command line.  First
14691      DW_MACINFO_start_file will need to be ignored as it was already executed
14692      to create CURRENT_FILE for the main source holding also the command line
14693      definitions.  On first met DW_MACINFO_start_file this flag is reset to
14694      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
14695
14696   at_commandline = 1;
14697
14698   do
14699     {
14700       /* Do we at least have room for a macinfo type byte?  */
14701       if (mac_ptr >= mac_end)
14702         {
14703           dwarf2_macros_too_long_complaint ();
14704           break;
14705         }
14706
14707       macinfo_type = read_1_byte (abfd, mac_ptr);
14708       mac_ptr++;
14709
14710       switch (macinfo_type)
14711         {
14712           /* A zero macinfo type indicates the end of the macro
14713              information.  */
14714         case 0:
14715           break;
14716
14717         case DW_MACINFO_define:
14718         case DW_MACINFO_undef:
14719           {
14720             unsigned int bytes_read;
14721             int line;
14722             char *body;
14723
14724             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
14725             mac_ptr += bytes_read;
14726             body = read_direct_string (abfd, mac_ptr, &bytes_read);
14727             mac_ptr += bytes_read;
14728
14729             if (! current_file)
14730               {
14731                 /* DWARF violation as no main source is present.  */
14732                 complaint (&symfile_complaints,
14733                            _("debug info with no main source gives macro %s "
14734                              "on line %d: %s"),
14735                            macinfo_type == DW_MACINFO_define ?
14736                              _("definition") :
14737                                macinfo_type == DW_MACINFO_undef ?
14738                                  _("undefinition") :
14739                                  _("something-or-other"), line, body);
14740                 break;
14741               }
14742             if ((line == 0 && !at_commandline)
14743                 || (line != 0 && at_commandline))
14744               complaint (&symfile_complaints,
14745                          _("debug info gives %s macro %s with %s line %d: %s"),
14746                          at_commandline ? _("command-line") : _("in-file"),
14747                          macinfo_type == DW_MACINFO_define ?
14748                            _("definition") :
14749                              macinfo_type == DW_MACINFO_undef ?
14750                                _("undefinition") :
14751                                _("something-or-other"),
14752                          line == 0 ? _("zero") : _("non-zero"), line, body);
14753
14754             if (macinfo_type == DW_MACINFO_define)
14755               parse_macro_definition (current_file, line, body);
14756             else if (macinfo_type == DW_MACINFO_undef)
14757               macro_undef (current_file, line, body);
14758           }
14759           break;
14760
14761         case DW_MACINFO_start_file:
14762           {
14763             unsigned int bytes_read;
14764             int line, file;
14765
14766             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
14767             mac_ptr += bytes_read;
14768             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
14769             mac_ptr += bytes_read;
14770
14771             if ((line == 0 && !at_commandline)
14772                 || (line != 0 && at_commandline))
14773               complaint (&symfile_complaints,
14774                          _("debug info gives source %d included "
14775                            "from %s at %s line %d"),
14776                          file, at_commandline ? _("command-line") : _("file"),
14777                          line == 0 ? _("zero") : _("non-zero"), line);
14778
14779             if (at_commandline)
14780               {
14781                 /* This DW_MACINFO_start_file was executed in the pass one.  */
14782                 at_commandline = 0;
14783               }
14784             else
14785               current_file = macro_start_file (file, line,
14786                                                current_file, comp_dir,
14787                                                lh, cu->objfile);
14788           }
14789           break;
14790
14791         case DW_MACINFO_end_file:
14792           if (! current_file)
14793             complaint (&symfile_complaints,
14794                        _("macro debug info has an unmatched "
14795                          "`close_file' directive"));
14796           else
14797             {
14798               current_file = current_file->included_by;
14799               if (! current_file)
14800                 {
14801                   enum dwarf_macinfo_record_type next_type;
14802
14803                   /* GCC circa March 2002 doesn't produce the zero
14804                      type byte marking the end of the compilation
14805                      unit.  Complain if it's not there, but exit no
14806                      matter what.  */
14807
14808                   /* Do we at least have room for a macinfo type byte?  */
14809                   if (mac_ptr >= mac_end)
14810                     {
14811                       dwarf2_macros_too_long_complaint ();
14812                       return;
14813                     }
14814
14815                   /* We don't increment mac_ptr here, so this is just
14816                      a look-ahead.  */
14817                   next_type = read_1_byte (abfd, mac_ptr);
14818                   if (next_type != 0)
14819                     complaint (&symfile_complaints,
14820                                _("no terminating 0-type entry for "
14821                                  "macros in `.debug_macinfo' section"));
14822
14823                   return;
14824                 }
14825             }
14826           break;
14827
14828         case DW_MACINFO_vendor_ext:
14829           {
14830             unsigned int bytes_read;
14831             int constant;
14832
14833             constant = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
14834             mac_ptr += bytes_read;
14835             read_direct_string (abfd, mac_ptr, &bytes_read);
14836             mac_ptr += bytes_read;
14837
14838             /* We don't recognize any vendor extensions.  */
14839           }
14840           break;
14841         }
14842     } while (macinfo_type != 0);
14843 }
14844
14845 /* Check if the attribute's form is a DW_FORM_block*
14846    if so return true else false.  */
14847 static int
14848 attr_form_is_block (struct attribute *attr)
14849 {
14850   return (attr == NULL ? 0 :
14851       attr->form == DW_FORM_block1
14852       || attr->form == DW_FORM_block2
14853       || attr->form == DW_FORM_block4
14854       || attr->form == DW_FORM_block
14855       || attr->form == DW_FORM_exprloc);
14856 }
14857
14858 /* Return non-zero if ATTR's value is a section offset --- classes
14859    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
14860    You may use DW_UNSND (attr) to retrieve such offsets.
14861
14862    Section 7.5.4, "Attribute Encodings", explains that no attribute
14863    may have a value that belongs to more than one of these classes; it
14864    would be ambiguous if we did, because we use the same forms for all
14865    of them.  */
14866 static int
14867 attr_form_is_section_offset (struct attribute *attr)
14868 {
14869   return (attr->form == DW_FORM_data4
14870           || attr->form == DW_FORM_data8
14871           || attr->form == DW_FORM_sec_offset);
14872 }
14873
14874
14875 /* Return non-zero if ATTR's value falls in the 'constant' class, or
14876    zero otherwise.  When this function returns true, you can apply
14877    dwarf2_get_attr_constant_value to it.
14878
14879    However, note that for some attributes you must check
14880    attr_form_is_section_offset before using this test.  DW_FORM_data4
14881    and DW_FORM_data8 are members of both the constant class, and of
14882    the classes that contain offsets into other debug sections
14883    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
14884    that, if an attribute's can be either a constant or one of the
14885    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
14886    taken as section offsets, not constants.  */
14887 static int
14888 attr_form_is_constant (struct attribute *attr)
14889 {
14890   switch (attr->form)
14891     {
14892     case DW_FORM_sdata:
14893     case DW_FORM_udata:
14894     case DW_FORM_data1:
14895     case DW_FORM_data2:
14896     case DW_FORM_data4:
14897     case DW_FORM_data8:
14898       return 1;
14899     default:
14900       return 0;
14901     }
14902 }
14903
14904 /* A helper function that fills in a dwarf2_loclist_baton.  */
14905
14906 static void
14907 fill_in_loclist_baton (struct dwarf2_cu *cu,
14908                        struct dwarf2_loclist_baton *baton,
14909                        struct attribute *attr)
14910 {
14911   dwarf2_read_section (dwarf2_per_objfile->objfile,
14912                        &dwarf2_per_objfile->loc);
14913
14914   baton->per_cu = cu->per_cu;
14915   gdb_assert (baton->per_cu);
14916   /* We don't know how long the location list is, but make sure we
14917      don't run off the edge of the section.  */
14918   baton->size = dwarf2_per_objfile->loc.size - DW_UNSND (attr);
14919   baton->data = dwarf2_per_objfile->loc.buffer + DW_UNSND (attr);
14920   baton->base_address = cu->base_address;
14921 }
14922
14923 static void
14924 dwarf2_symbol_mark_computed (struct attribute *attr, struct symbol *sym,
14925                              struct dwarf2_cu *cu)
14926 {
14927   if (attr_form_is_section_offset (attr)
14928       /* ".debug_loc" may not exist at all, or the offset may be outside
14929          the section.  If so, fall through to the complaint in the
14930          other branch.  */
14931       && DW_UNSND (attr) < dwarf2_section_size (dwarf2_per_objfile->objfile,
14932                                                 &dwarf2_per_objfile->loc))
14933     {
14934       struct dwarf2_loclist_baton *baton;
14935
14936       baton = obstack_alloc (&cu->objfile->objfile_obstack,
14937                              sizeof (struct dwarf2_loclist_baton));
14938
14939       fill_in_loclist_baton (cu, baton, attr);
14940
14941       if (cu->base_known == 0)
14942         complaint (&symfile_complaints,
14943                    _("Location list used without "
14944                      "specifying the CU base address."));
14945
14946       SYMBOL_COMPUTED_OPS (sym) = &dwarf2_loclist_funcs;
14947       SYMBOL_LOCATION_BATON (sym) = baton;
14948     }
14949   else
14950     {
14951       struct dwarf2_locexpr_baton *baton;
14952
14953       baton = obstack_alloc (&cu->objfile->objfile_obstack,
14954                              sizeof (struct dwarf2_locexpr_baton));
14955       baton->per_cu = cu->per_cu;
14956       gdb_assert (baton->per_cu);
14957
14958       if (attr_form_is_block (attr))
14959         {
14960           /* Note that we're just copying the block's data pointer
14961              here, not the actual data.  We're still pointing into the
14962              info_buffer for SYM's objfile; right now we never release
14963              that buffer, but when we do clean up properly this may
14964              need to change.  */
14965           baton->size = DW_BLOCK (attr)->size;
14966           baton->data = DW_BLOCK (attr)->data;
14967         }
14968       else
14969         {
14970           dwarf2_invalid_attrib_class_complaint ("location description",
14971                                                  SYMBOL_NATURAL_NAME (sym));
14972           baton->size = 0;
14973           baton->data = NULL;
14974         }
14975
14976       SYMBOL_COMPUTED_OPS (sym) = &dwarf2_locexpr_funcs;
14977       SYMBOL_LOCATION_BATON (sym) = baton;
14978     }
14979 }
14980
14981 /* Return the OBJFILE associated with the compilation unit CU.  If CU
14982    came from a separate debuginfo file, then the master objfile is
14983    returned.  */
14984
14985 struct objfile *
14986 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
14987 {
14988   struct objfile *objfile = per_cu->objfile;
14989
14990   /* Return the master objfile, so that we can report and look up the
14991      correct file containing this variable.  */
14992   if (objfile->separate_debug_objfile_backlink)
14993     objfile = objfile->separate_debug_objfile_backlink;
14994
14995   return objfile;
14996 }
14997
14998 /* Return the address size given in the compilation unit header for CU.  */
14999
15000 CORE_ADDR
15001 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
15002 {
15003   if (per_cu->cu)
15004     return per_cu->cu->header.addr_size;
15005   else
15006     {
15007       /* If the CU is not currently read in, we re-read its header.  */
15008       struct objfile *objfile = per_cu->objfile;
15009       struct dwarf2_per_objfile *per_objfile
15010         = objfile_data (objfile, dwarf2_objfile_data_key);
15011       gdb_byte *info_ptr = per_objfile->info.buffer + per_cu->offset;
15012       struct comp_unit_head cu_header;
15013
15014       memset (&cu_header, 0, sizeof cu_header);
15015       read_comp_unit_head (&cu_header, info_ptr, objfile->obfd);
15016       return cu_header.addr_size;
15017     }
15018 }
15019
15020 /* Return the offset size given in the compilation unit header for CU.  */
15021
15022 int
15023 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
15024 {
15025   if (per_cu->cu)
15026     return per_cu->cu->header.offset_size;
15027   else
15028     {
15029       /* If the CU is not currently read in, we re-read its header.  */
15030       struct objfile *objfile = per_cu->objfile;
15031       struct dwarf2_per_objfile *per_objfile
15032         = objfile_data (objfile, dwarf2_objfile_data_key);
15033       gdb_byte *info_ptr = per_objfile->info.buffer + per_cu->offset;
15034       struct comp_unit_head cu_header;
15035
15036       memset (&cu_header, 0, sizeof cu_header);
15037       read_comp_unit_head (&cu_header, info_ptr, objfile->obfd);
15038       return cu_header.offset_size;
15039     }
15040 }
15041
15042 /* Return the text offset of the CU.  The returned offset comes from
15043    this CU's objfile.  If this objfile came from a separate debuginfo
15044    file, then the offset may be different from the corresponding
15045    offset in the parent objfile.  */
15046
15047 CORE_ADDR
15048 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
15049 {
15050   struct objfile *objfile = per_cu->objfile;
15051
15052   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
15053 }
15054
15055 /* Locate the .debug_info compilation unit from CU's objfile which contains
15056    the DIE at OFFSET.  Raises an error on failure.  */
15057
15058 static struct dwarf2_per_cu_data *
15059 dwarf2_find_containing_comp_unit (unsigned int offset,
15060                                   struct objfile *objfile)
15061 {
15062   struct dwarf2_per_cu_data *this_cu;
15063   int low, high;
15064
15065   low = 0;
15066   high = dwarf2_per_objfile->n_comp_units - 1;
15067   while (high > low)
15068     {
15069       int mid = low + (high - low) / 2;
15070
15071       if (dwarf2_per_objfile->all_comp_units[mid]->offset >= offset)
15072         high = mid;
15073       else
15074         low = mid + 1;
15075     }
15076   gdb_assert (low == high);
15077   if (dwarf2_per_objfile->all_comp_units[low]->offset > offset)
15078     {
15079       if (low == 0)
15080         error (_("Dwarf Error: could not find partial DIE containing "
15081                "offset 0x%lx [in module %s]"),
15082                (long) offset, bfd_get_filename (objfile->obfd));
15083
15084       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->offset <= offset);
15085       return dwarf2_per_objfile->all_comp_units[low-1];
15086     }
15087   else
15088     {
15089       this_cu = dwarf2_per_objfile->all_comp_units[low];
15090       if (low == dwarf2_per_objfile->n_comp_units - 1
15091           && offset >= this_cu->offset + this_cu->length)
15092         error (_("invalid dwarf2 offset %u"), offset);
15093       gdb_assert (offset < this_cu->offset + this_cu->length);
15094       return this_cu;
15095     }
15096 }
15097
15098 /* Locate the compilation unit from OBJFILE which is located at exactly
15099    OFFSET.  Raises an error on failure.  */
15100
15101 static struct dwarf2_per_cu_data *
15102 dwarf2_find_comp_unit (unsigned int offset, struct objfile *objfile)
15103 {
15104   struct dwarf2_per_cu_data *this_cu;
15105
15106   this_cu = dwarf2_find_containing_comp_unit (offset, objfile);
15107   if (this_cu->offset != offset)
15108     error (_("no compilation unit with offset %u."), offset);
15109   return this_cu;
15110 }
15111
15112 /* Initialize dwarf2_cu CU for OBJFILE in a pre-allocated space.  */
15113
15114 static void
15115 init_one_comp_unit (struct dwarf2_cu *cu, struct objfile *objfile)
15116 {
15117   memset (cu, 0, sizeof (*cu));
15118   cu->objfile = objfile;
15119   obstack_init (&cu->comp_unit_obstack);
15120 }
15121
15122 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
15123
15124 static void
15125 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die)
15126 {
15127   struct attribute *attr;
15128
15129   /* Set the language we're debugging.  */
15130   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
15131   if (attr)
15132     set_cu_language (DW_UNSND (attr), cu);
15133   else
15134     {
15135       cu->language = language_minimal;
15136       cu->language_defn = language_def (cu->language);
15137     }
15138 }
15139
15140 /* Release one cached compilation unit, CU.  We unlink it from the tree
15141    of compilation units, but we don't remove it from the read_in_chain;
15142    the caller is responsible for that.
15143    NOTE: DATA is a void * because this function is also used as a
15144    cleanup routine.  */
15145
15146 static void
15147 free_one_comp_unit (void *data)
15148 {
15149   struct dwarf2_cu *cu = data;
15150
15151   if (cu->per_cu != NULL)
15152     cu->per_cu->cu = NULL;
15153   cu->per_cu = NULL;
15154
15155   obstack_free (&cu->comp_unit_obstack, NULL);
15156
15157   xfree (cu);
15158 }
15159
15160 /* This cleanup function is passed the address of a dwarf2_cu on the stack
15161    when we're finished with it.  We can't free the pointer itself, but be
15162    sure to unlink it from the cache.  Also release any associated storage
15163    and perform cache maintenance.
15164
15165    Only used during partial symbol parsing.  */
15166
15167 static void
15168 free_stack_comp_unit (void *data)
15169 {
15170   struct dwarf2_cu *cu = data;
15171
15172   obstack_free (&cu->comp_unit_obstack, NULL);
15173   cu->partial_dies = NULL;
15174
15175   if (cu->per_cu != NULL)
15176     {
15177       /* This compilation unit is on the stack in our caller, so we
15178          should not xfree it.  Just unlink it.  */
15179       cu->per_cu->cu = NULL;
15180       cu->per_cu = NULL;
15181
15182       /* If we had a per-cu pointer, then we may have other compilation
15183          units loaded, so age them now.  */
15184       age_cached_comp_units ();
15185     }
15186 }
15187
15188 /* Free all cached compilation units.  */
15189
15190 static void
15191 free_cached_comp_units (void *data)
15192 {
15193   struct dwarf2_per_cu_data *per_cu, **last_chain;
15194
15195   per_cu = dwarf2_per_objfile->read_in_chain;
15196   last_chain = &dwarf2_per_objfile->read_in_chain;
15197   while (per_cu != NULL)
15198     {
15199       struct dwarf2_per_cu_data *next_cu;
15200
15201       next_cu = per_cu->cu->read_in_chain;
15202
15203       free_one_comp_unit (per_cu->cu);
15204       *last_chain = next_cu;
15205
15206       per_cu = next_cu;
15207     }
15208 }
15209
15210 /* Increase the age counter on each cached compilation unit, and free
15211    any that are too old.  */
15212
15213 static void
15214 age_cached_comp_units (void)
15215 {
15216   struct dwarf2_per_cu_data *per_cu, **last_chain;
15217
15218   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
15219   per_cu = dwarf2_per_objfile->read_in_chain;
15220   while (per_cu != NULL)
15221     {
15222       per_cu->cu->last_used ++;
15223       if (per_cu->cu->last_used <= dwarf2_max_cache_age)
15224         dwarf2_mark (per_cu->cu);
15225       per_cu = per_cu->cu->read_in_chain;
15226     }
15227
15228   per_cu = dwarf2_per_objfile->read_in_chain;
15229   last_chain = &dwarf2_per_objfile->read_in_chain;
15230   while (per_cu != NULL)
15231     {
15232       struct dwarf2_per_cu_data *next_cu;
15233
15234       next_cu = per_cu->cu->read_in_chain;
15235
15236       if (!per_cu->cu->mark)
15237         {
15238           free_one_comp_unit (per_cu->cu);
15239           *last_chain = next_cu;
15240         }
15241       else
15242         last_chain = &per_cu->cu->read_in_chain;
15243
15244       per_cu = next_cu;
15245     }
15246 }
15247
15248 /* Remove a single compilation unit from the cache.  */
15249
15250 static void
15251 free_one_cached_comp_unit (void *target_cu)
15252 {
15253   struct dwarf2_per_cu_data *per_cu, **last_chain;
15254
15255   per_cu = dwarf2_per_objfile->read_in_chain;
15256   last_chain = &dwarf2_per_objfile->read_in_chain;
15257   while (per_cu != NULL)
15258     {
15259       struct dwarf2_per_cu_data *next_cu;
15260
15261       next_cu = per_cu->cu->read_in_chain;
15262
15263       if (per_cu->cu == target_cu)
15264         {
15265           free_one_comp_unit (per_cu->cu);
15266           *last_chain = next_cu;
15267           break;
15268         }
15269       else
15270         last_chain = &per_cu->cu->read_in_chain;
15271
15272       per_cu = next_cu;
15273     }
15274 }
15275
15276 /* Release all extra memory associated with OBJFILE.  */
15277
15278 void
15279 dwarf2_free_objfile (struct objfile *objfile)
15280 {
15281   dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
15282
15283   if (dwarf2_per_objfile == NULL)
15284     return;
15285
15286   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
15287   free_cached_comp_units (NULL);
15288
15289   if (dwarf2_per_objfile->quick_file_names_table)
15290     htab_delete (dwarf2_per_objfile->quick_file_names_table);
15291
15292   /* Everything else should be on the objfile obstack.  */
15293 }
15294
15295 /* A pair of DIE offset and GDB type pointer.  We store these
15296    in a hash table separate from the DIEs, and preserve them
15297    when the DIEs are flushed out of cache.  */
15298
15299 struct dwarf2_offset_and_type
15300 {
15301   unsigned int offset;
15302   struct type *type;
15303 };
15304
15305 /* Hash function for a dwarf2_offset_and_type.  */
15306
15307 static hashval_t
15308 offset_and_type_hash (const void *item)
15309 {
15310   const struct dwarf2_offset_and_type *ofs = item;
15311
15312   return ofs->offset;
15313 }
15314
15315 /* Equality function for a dwarf2_offset_and_type.  */
15316
15317 static int
15318 offset_and_type_eq (const void *item_lhs, const void *item_rhs)
15319 {
15320   const struct dwarf2_offset_and_type *ofs_lhs = item_lhs;
15321   const struct dwarf2_offset_and_type *ofs_rhs = item_rhs;
15322
15323   return ofs_lhs->offset == ofs_rhs->offset;
15324 }
15325
15326 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
15327    table if necessary.  For convenience, return TYPE.
15328
15329    The DIEs reading must have careful ordering to:
15330     * Not cause infite loops trying to read in DIEs as a prerequisite for
15331       reading current DIE.
15332     * Not trying to dereference contents of still incompletely read in types
15333       while reading in other DIEs.
15334     * Enable referencing still incompletely read in types just by a pointer to
15335       the type without accessing its fields.
15336
15337    Therefore caller should follow these rules:
15338      * Try to fetch any prerequisite types we may need to build this DIE type
15339        before building the type and calling set_die_type.
15340      * After building type call set_die_type for current DIE as soon as
15341        possible before fetching more types to complete the current type.
15342      * Make the type as complete as possible before fetching more types.  */
15343
15344 static struct type *
15345 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
15346 {
15347   struct dwarf2_offset_and_type **slot, ofs;
15348   struct objfile *objfile = cu->objfile;
15349   htab_t *type_hash_ptr;
15350
15351   /* For Ada types, make sure that the gnat-specific data is always
15352      initialized (if not already set).  There are a few types where
15353      we should not be doing so, because the type-specific area is
15354      already used to hold some other piece of info (eg: TYPE_CODE_FLT
15355      where the type-specific area is used to store the floatformat).
15356      But this is not a problem, because the gnat-specific information
15357      is actually not needed for these types.  */
15358   if (need_gnat_info (cu)
15359       && TYPE_CODE (type) != TYPE_CODE_FUNC
15360       && TYPE_CODE (type) != TYPE_CODE_FLT
15361       && !HAVE_GNAT_AUX_INFO (type))
15362     INIT_GNAT_SPECIFIC (type);
15363
15364   if (cu->per_cu->from_debug_types)
15365     type_hash_ptr = &dwarf2_per_objfile->debug_types_type_hash;
15366   else
15367     type_hash_ptr = &dwarf2_per_objfile->debug_info_type_hash;
15368
15369   if (*type_hash_ptr == NULL)
15370     {
15371       *type_hash_ptr
15372         = htab_create_alloc_ex (127,
15373                                 offset_and_type_hash,
15374                                 offset_and_type_eq,
15375                                 NULL,
15376                                 &objfile->objfile_obstack,
15377                                 hashtab_obstack_allocate,
15378                                 dummy_obstack_deallocate);
15379     }
15380
15381   ofs.offset = die->offset;
15382   ofs.type = type;
15383   slot = (struct dwarf2_offset_and_type **)
15384     htab_find_slot_with_hash (*type_hash_ptr, &ofs, ofs.offset, INSERT);
15385   if (*slot)
15386     complaint (&symfile_complaints,
15387                _("A problem internal to GDB: DIE 0x%x has type already set"),
15388                die->offset);
15389   *slot = obstack_alloc (&objfile->objfile_obstack, sizeof (**slot));
15390   **slot = ofs;
15391   return type;
15392 }
15393
15394 /* Look up the type for the die at DIE_OFFSET in the appropriate type_hash
15395    table, or return NULL if the die does not have a saved type.  */
15396
15397 static struct type *
15398 get_die_type_at_offset (unsigned int offset,
15399                         struct dwarf2_per_cu_data *per_cu)
15400 {
15401   struct dwarf2_offset_and_type *slot, ofs;
15402   htab_t type_hash;
15403
15404   if (per_cu->from_debug_types)
15405     type_hash = dwarf2_per_objfile->debug_types_type_hash;
15406   else
15407     type_hash = dwarf2_per_objfile->debug_info_type_hash;
15408   if (type_hash == NULL)
15409     return NULL;
15410
15411   ofs.offset = offset;
15412   slot = htab_find_with_hash (type_hash, &ofs, ofs.offset);
15413   if (slot)
15414     return slot->type;
15415   else
15416     return NULL;
15417 }
15418
15419 /* Look up the type for DIE in the appropriate type_hash table,
15420    or return NULL if DIE does not have a saved type.  */
15421
15422 static struct type *
15423 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
15424 {
15425   return get_die_type_at_offset (die->offset, cu->per_cu);
15426 }
15427
15428 /* Add a dependence relationship from CU to REF_PER_CU.  */
15429
15430 static void
15431 dwarf2_add_dependence (struct dwarf2_cu *cu,
15432                        struct dwarf2_per_cu_data *ref_per_cu)
15433 {
15434   void **slot;
15435
15436   if (cu->dependencies == NULL)
15437     cu->dependencies
15438       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
15439                               NULL, &cu->comp_unit_obstack,
15440                               hashtab_obstack_allocate,
15441                               dummy_obstack_deallocate);
15442
15443   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
15444   if (*slot == NULL)
15445     *slot = ref_per_cu;
15446 }
15447
15448 /* Subroutine of dwarf2_mark to pass to htab_traverse.
15449    Set the mark field in every compilation unit in the
15450    cache that we must keep because we are keeping CU.  */
15451
15452 static int
15453 dwarf2_mark_helper (void **slot, void *data)
15454 {
15455   struct dwarf2_per_cu_data *per_cu;
15456
15457   per_cu = (struct dwarf2_per_cu_data *) *slot;
15458
15459   /* cu->dependencies references may not yet have been ever read if QUIT aborts
15460      reading of the chain.  As such dependencies remain valid it is not much
15461      useful to track and undo them during QUIT cleanups.  */
15462   if (per_cu->cu == NULL)
15463     return 1;
15464
15465   if (per_cu->cu->mark)
15466     return 1;
15467   per_cu->cu->mark = 1;
15468
15469   if (per_cu->cu->dependencies != NULL)
15470     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
15471
15472   return 1;
15473 }
15474
15475 /* Set the mark field in CU and in every other compilation unit in the
15476    cache that we must keep because we are keeping CU.  */
15477
15478 static void
15479 dwarf2_mark (struct dwarf2_cu *cu)
15480 {
15481   if (cu->mark)
15482     return;
15483   cu->mark = 1;
15484   if (cu->dependencies != NULL)
15485     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
15486 }
15487
15488 static void
15489 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
15490 {
15491   while (per_cu)
15492     {
15493       per_cu->cu->mark = 0;
15494       per_cu = per_cu->cu->read_in_chain;
15495     }
15496 }
15497
15498 /* Trivial hash function for partial_die_info: the hash value of a DIE
15499    is its offset in .debug_info for this objfile.  */
15500
15501 static hashval_t
15502 partial_die_hash (const void *item)
15503 {
15504   const struct partial_die_info *part_die = item;
15505
15506   return part_die->offset;
15507 }
15508
15509 /* Trivial comparison function for partial_die_info structures: two DIEs
15510    are equal if they have the same offset.  */
15511
15512 static int
15513 partial_die_eq (const void *item_lhs, const void *item_rhs)
15514 {
15515   const struct partial_die_info *part_die_lhs = item_lhs;
15516   const struct partial_die_info *part_die_rhs = item_rhs;
15517
15518   return part_die_lhs->offset == part_die_rhs->offset;
15519 }
15520
15521 static struct cmd_list_element *set_dwarf2_cmdlist;
15522 static struct cmd_list_element *show_dwarf2_cmdlist;
15523
15524 static void
15525 set_dwarf2_cmd (char *args, int from_tty)
15526 {
15527   help_list (set_dwarf2_cmdlist, "maintenance set dwarf2 ", -1, gdb_stdout);
15528 }
15529
15530 static void
15531 show_dwarf2_cmd (char *args, int from_tty)
15532 {
15533   cmd_show_list (show_dwarf2_cmdlist, from_tty, "");
15534 }
15535
15536 /* If section described by INFO was mmapped, munmap it now.  */
15537
15538 static void
15539 munmap_section_buffer (struct dwarf2_section_info *info)
15540 {
15541   if (info->map_addr != NULL)
15542     {
15543 #ifdef HAVE_MMAP
15544       int res;
15545
15546       res = munmap (info->map_addr, info->map_len);
15547       gdb_assert (res == 0);
15548 #else
15549       /* Without HAVE_MMAP, we should never be here to begin with.  */
15550       gdb_assert_not_reached ("no mmap support");
15551 #endif
15552     }
15553 }
15554
15555 /* munmap debug sections for OBJFILE, if necessary.  */
15556
15557 static void
15558 dwarf2_per_objfile_free (struct objfile *objfile, void *d)
15559 {
15560   struct dwarf2_per_objfile *data = d;
15561
15562   /* This is sorted according to the order they're defined in to make it easier
15563      to keep in sync.  */
15564   munmap_section_buffer (&data->info);
15565   munmap_section_buffer (&data->abbrev);
15566   munmap_section_buffer (&data->line);
15567   munmap_section_buffer (&data->loc);
15568   munmap_section_buffer (&data->macinfo);
15569   munmap_section_buffer (&data->str);
15570   munmap_section_buffer (&data->ranges);
15571   munmap_section_buffer (&data->types);
15572   munmap_section_buffer (&data->frame);
15573   munmap_section_buffer (&data->eh_frame);
15574   munmap_section_buffer (&data->gdb_index);
15575 }
15576
15577 \f
15578 /* The "save gdb-index" command.  */
15579
15580 /* The contents of the hash table we create when building the string
15581    table.  */
15582 struct strtab_entry
15583 {
15584   offset_type offset;
15585   const char *str;
15586 };
15587
15588 /* Hash function for a strtab_entry.
15589
15590    Function is used only during write_hash_table so no index format backward
15591    compatibility is needed.  */
15592
15593 static hashval_t
15594 hash_strtab_entry (const void *e)
15595 {
15596   const struct strtab_entry *entry = e;
15597   return mapped_index_string_hash (INT_MAX, entry->str);
15598 }
15599
15600 /* Equality function for a strtab_entry.  */
15601
15602 static int
15603 eq_strtab_entry (const void *a, const void *b)
15604 {
15605   const struct strtab_entry *ea = a;
15606   const struct strtab_entry *eb = b;
15607   return !strcmp (ea->str, eb->str);
15608 }
15609
15610 /* Create a strtab_entry hash table.  */
15611
15612 static htab_t
15613 create_strtab (void)
15614 {
15615   return htab_create_alloc (100, hash_strtab_entry, eq_strtab_entry,
15616                             xfree, xcalloc, xfree);
15617 }
15618
15619 /* Add a string to the constant pool.  Return the string's offset in
15620    host order.  */
15621
15622 static offset_type
15623 add_string (htab_t table, struct obstack *cpool, const char *str)
15624 {
15625   void **slot;
15626   struct strtab_entry entry;
15627   struct strtab_entry *result;
15628
15629   entry.str = str;
15630   slot = htab_find_slot (table, &entry, INSERT);
15631   if (*slot)
15632     result = *slot;
15633   else
15634     {
15635       result = XNEW (struct strtab_entry);
15636       result->offset = obstack_object_size (cpool);
15637       result->str = str;
15638       obstack_grow_str0 (cpool, str);
15639       *slot = result;
15640     }
15641   return result->offset;
15642 }
15643
15644 /* An entry in the symbol table.  */
15645 struct symtab_index_entry
15646 {
15647   /* The name of the symbol.  */
15648   const char *name;
15649   /* The offset of the name in the constant pool.  */
15650   offset_type index_offset;
15651   /* A sorted vector of the indices of all the CUs that hold an object
15652      of this name.  */
15653   VEC (offset_type) *cu_indices;
15654 };
15655
15656 /* The symbol table.  This is a power-of-2-sized hash table.  */
15657 struct mapped_symtab
15658 {
15659   offset_type n_elements;
15660   offset_type size;
15661   struct symtab_index_entry **data;
15662 };
15663
15664 /* Hash function for a symtab_index_entry.  */
15665
15666 static hashval_t
15667 hash_symtab_entry (const void *e)
15668 {
15669   const struct symtab_index_entry *entry = e;
15670   return iterative_hash (VEC_address (offset_type, entry->cu_indices),
15671                          sizeof (offset_type) * VEC_length (offset_type,
15672                                                             entry->cu_indices),
15673                          0);
15674 }
15675
15676 /* Equality function for a symtab_index_entry.  */
15677
15678 static int
15679 eq_symtab_entry (const void *a, const void *b)
15680 {
15681   const struct symtab_index_entry *ea = a;
15682   const struct symtab_index_entry *eb = b;
15683   int len = VEC_length (offset_type, ea->cu_indices);
15684   if (len != VEC_length (offset_type, eb->cu_indices))
15685     return 0;
15686   return !memcmp (VEC_address (offset_type, ea->cu_indices),
15687                   VEC_address (offset_type, eb->cu_indices),
15688                   sizeof (offset_type) * len);
15689 }
15690
15691 /* Destroy a symtab_index_entry.  */
15692
15693 static void
15694 delete_symtab_entry (void *p)
15695 {
15696   struct symtab_index_entry *entry = p;
15697   VEC_free (offset_type, entry->cu_indices);
15698   xfree (entry);
15699 }
15700
15701 /* Create a hash table holding symtab_index_entry objects.  */
15702
15703 static htab_t
15704 create_symbol_hash_table (void)
15705 {
15706   return htab_create_alloc (100, hash_symtab_entry, eq_symtab_entry,
15707                             delete_symtab_entry, xcalloc, xfree);
15708 }
15709
15710 /* Create a new mapped symtab object.  */
15711
15712 static struct mapped_symtab *
15713 create_mapped_symtab (void)
15714 {
15715   struct mapped_symtab *symtab = XNEW (struct mapped_symtab);
15716   symtab->n_elements = 0;
15717   symtab->size = 1024;
15718   symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
15719   return symtab;
15720 }
15721
15722 /* Destroy a mapped_symtab.  */
15723
15724 static void
15725 cleanup_mapped_symtab (void *p)
15726 {
15727   struct mapped_symtab *symtab = p;
15728   /* The contents of the array are freed when the other hash table is
15729      destroyed.  */
15730   xfree (symtab->data);
15731   xfree (symtab);
15732 }
15733
15734 /* Find a slot in SYMTAB for the symbol NAME.  Returns a pointer to
15735    the slot.
15736    
15737    Function is used only during write_hash_table so no index format backward
15738    compatibility is needed.  */
15739
15740 static struct symtab_index_entry **
15741 find_slot (struct mapped_symtab *symtab, const char *name)
15742 {
15743   offset_type index, step, hash = mapped_index_string_hash (INT_MAX, name);
15744
15745   index = hash & (symtab->size - 1);
15746   step = ((hash * 17) & (symtab->size - 1)) | 1;
15747
15748   for (;;)
15749     {
15750       if (!symtab->data[index] || !strcmp (name, symtab->data[index]->name))
15751         return &symtab->data[index];
15752       index = (index + step) & (symtab->size - 1);
15753     }
15754 }
15755
15756 /* Expand SYMTAB's hash table.  */
15757
15758 static void
15759 hash_expand (struct mapped_symtab *symtab)
15760 {
15761   offset_type old_size = symtab->size;
15762   offset_type i;
15763   struct symtab_index_entry **old_entries = symtab->data;
15764
15765   symtab->size *= 2;
15766   symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
15767
15768   for (i = 0; i < old_size; ++i)
15769     {
15770       if (old_entries[i])
15771         {
15772           struct symtab_index_entry **slot = find_slot (symtab,
15773                                                         old_entries[i]->name);
15774           *slot = old_entries[i];
15775         }
15776     }
15777
15778   xfree (old_entries);
15779 }
15780
15781 /* Add an entry to SYMTAB.  NAME is the name of the symbol.  CU_INDEX
15782    is the index of the CU in which the symbol appears.  */
15783
15784 static void
15785 add_index_entry (struct mapped_symtab *symtab, const char *name,
15786                  offset_type cu_index)
15787 {
15788   struct symtab_index_entry **slot;
15789
15790   ++symtab->n_elements;
15791   if (4 * symtab->n_elements / 3 >= symtab->size)
15792     hash_expand (symtab);
15793
15794   slot = find_slot (symtab, name);
15795   if (!*slot)
15796     {
15797       *slot = XNEW (struct symtab_index_entry);
15798       (*slot)->name = name;
15799       (*slot)->cu_indices = NULL;
15800     }
15801   /* Don't push an index twice.  Due to how we add entries we only
15802      have to check the last one.  */ 
15803   if (VEC_empty (offset_type, (*slot)->cu_indices)
15804       || VEC_last (offset_type, (*slot)->cu_indices) != cu_index)
15805     VEC_safe_push (offset_type, (*slot)->cu_indices, cu_index);
15806 }
15807
15808 /* Add a vector of indices to the constant pool.  */
15809
15810 static offset_type
15811 add_indices_to_cpool (htab_t symbol_hash_table, struct obstack *cpool,
15812                       struct symtab_index_entry *entry)
15813 {
15814   void **slot;
15815
15816   slot = htab_find_slot (symbol_hash_table, entry, INSERT);
15817   if (!*slot)
15818     {
15819       offset_type len = VEC_length (offset_type, entry->cu_indices);
15820       offset_type val = MAYBE_SWAP (len);
15821       offset_type iter;
15822       int i;
15823
15824       *slot = entry;
15825       entry->index_offset = obstack_object_size (cpool);
15826
15827       obstack_grow (cpool, &val, sizeof (val));
15828       for (i = 0;
15829            VEC_iterate (offset_type, entry->cu_indices, i, iter);
15830            ++i)
15831         {
15832           val = MAYBE_SWAP (iter);
15833           obstack_grow (cpool, &val, sizeof (val));
15834         }
15835     }
15836   else
15837     {
15838       struct symtab_index_entry *old_entry = *slot;
15839       entry->index_offset = old_entry->index_offset;
15840       entry = old_entry;
15841     }
15842   return entry->index_offset;
15843 }
15844
15845 /* Write the mapped hash table SYMTAB to the obstack OUTPUT, with
15846    constant pool entries going into the obstack CPOOL.  */
15847
15848 static void
15849 write_hash_table (struct mapped_symtab *symtab,
15850                   struct obstack *output, struct obstack *cpool)
15851 {
15852   offset_type i;
15853   htab_t symbol_hash_table;
15854   htab_t str_table;
15855
15856   symbol_hash_table = create_symbol_hash_table ();
15857   str_table = create_strtab ();
15858
15859   /* We add all the index vectors to the constant pool first, to
15860      ensure alignment is ok.  */
15861   for (i = 0; i < symtab->size; ++i)
15862     {
15863       if (symtab->data[i])
15864         add_indices_to_cpool (symbol_hash_table, cpool, symtab->data[i]);
15865     }
15866
15867   /* Now write out the hash table.  */
15868   for (i = 0; i < symtab->size; ++i)
15869     {
15870       offset_type str_off, vec_off;
15871
15872       if (symtab->data[i])
15873         {
15874           str_off = add_string (str_table, cpool, symtab->data[i]->name);
15875           vec_off = symtab->data[i]->index_offset;
15876         }
15877       else
15878         {
15879           /* While 0 is a valid constant pool index, it is not valid
15880              to have 0 for both offsets.  */
15881           str_off = 0;
15882           vec_off = 0;
15883         }
15884
15885       str_off = MAYBE_SWAP (str_off);
15886       vec_off = MAYBE_SWAP (vec_off);
15887
15888       obstack_grow (output, &str_off, sizeof (str_off));
15889       obstack_grow (output, &vec_off, sizeof (vec_off));
15890     }
15891
15892   htab_delete (str_table);
15893   htab_delete (symbol_hash_table);
15894 }
15895
15896 /* Struct to map psymtab to CU index in the index file.  */
15897 struct psymtab_cu_index_map
15898 {
15899   struct partial_symtab *psymtab;
15900   unsigned int cu_index;
15901 };
15902
15903 static hashval_t
15904 hash_psymtab_cu_index (const void *item)
15905 {
15906   const struct psymtab_cu_index_map *map = item;
15907
15908   return htab_hash_pointer (map->psymtab);
15909 }
15910
15911 static int
15912 eq_psymtab_cu_index (const void *item_lhs, const void *item_rhs)
15913 {
15914   const struct psymtab_cu_index_map *lhs = item_lhs;
15915   const struct psymtab_cu_index_map *rhs = item_rhs;
15916
15917   return lhs->psymtab == rhs->psymtab;
15918 }
15919
15920 /* Helper struct for building the address table.  */
15921 struct addrmap_index_data
15922 {
15923   struct objfile *objfile;
15924   struct obstack *addr_obstack;
15925   htab_t cu_index_htab;
15926
15927   /* Non-zero if the previous_* fields are valid.
15928      We can't write an entry until we see the next entry (since it is only then
15929      that we know the end of the entry).  */
15930   int previous_valid;
15931   /* Index of the CU in the table of all CUs in the index file.  */
15932   unsigned int previous_cu_index;
15933   /* Start address of the CU.  */
15934   CORE_ADDR previous_cu_start;
15935 };
15936
15937 /* Write an address entry to OBSTACK.  */
15938
15939 static void
15940 add_address_entry (struct objfile *objfile, struct obstack *obstack,
15941                    CORE_ADDR start, CORE_ADDR end, unsigned int cu_index)
15942 {
15943   offset_type cu_index_to_write;
15944   char addr[8];
15945   CORE_ADDR baseaddr;
15946
15947   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
15948
15949   store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, start - baseaddr);
15950   obstack_grow (obstack, addr, 8);
15951   store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, end - baseaddr);
15952   obstack_grow (obstack, addr, 8);
15953   cu_index_to_write = MAYBE_SWAP (cu_index);
15954   obstack_grow (obstack, &cu_index_to_write, sizeof (offset_type));
15955 }
15956
15957 /* Worker function for traversing an addrmap to build the address table.  */
15958
15959 static int
15960 add_address_entry_worker (void *datap, CORE_ADDR start_addr, void *obj)
15961 {
15962   struct addrmap_index_data *data = datap;
15963   struct partial_symtab *pst = obj;
15964   offset_type cu_index;
15965   void **slot;
15966
15967   if (data->previous_valid)
15968     add_address_entry (data->objfile, data->addr_obstack,
15969                        data->previous_cu_start, start_addr,
15970                        data->previous_cu_index);
15971
15972   data->previous_cu_start = start_addr;
15973   if (pst != NULL)
15974     {
15975       struct psymtab_cu_index_map find_map, *map;
15976       find_map.psymtab = pst;
15977       map = htab_find (data->cu_index_htab, &find_map);
15978       gdb_assert (map != NULL);
15979       data->previous_cu_index = map->cu_index;
15980       data->previous_valid = 1;
15981     }
15982   else
15983       data->previous_valid = 0;
15984
15985   return 0;
15986 }
15987
15988 /* Write OBJFILE's address map to OBSTACK.
15989    CU_INDEX_HTAB is used to map addrmap entries to their CU indices
15990    in the index file.  */
15991
15992 static void
15993 write_address_map (struct objfile *objfile, struct obstack *obstack,
15994                    htab_t cu_index_htab)
15995 {
15996   struct addrmap_index_data addrmap_index_data;
15997
15998   /* When writing the address table, we have to cope with the fact that
15999      the addrmap iterator only provides the start of a region; we have to
16000      wait until the next invocation to get the start of the next region.  */
16001
16002   addrmap_index_data.objfile = objfile;
16003   addrmap_index_data.addr_obstack = obstack;
16004   addrmap_index_data.cu_index_htab = cu_index_htab;
16005   addrmap_index_data.previous_valid = 0;
16006
16007   addrmap_foreach (objfile->psymtabs_addrmap, add_address_entry_worker,
16008                    &addrmap_index_data);
16009
16010   /* It's highly unlikely the last entry (end address = 0xff...ff)
16011      is valid, but we should still handle it.
16012      The end address is recorded as the start of the next region, but that
16013      doesn't work here.  To cope we pass 0xff...ff, this is a rare situation
16014      anyway.  */
16015   if (addrmap_index_data.previous_valid)
16016     add_address_entry (objfile, obstack,
16017                        addrmap_index_data.previous_cu_start, (CORE_ADDR) -1,
16018                        addrmap_index_data.previous_cu_index);
16019 }
16020
16021 /* Add a list of partial symbols to SYMTAB.  */
16022
16023 static void
16024 write_psymbols (struct mapped_symtab *symtab,
16025                 htab_t psyms_seen,
16026                 struct partial_symbol **psymp,
16027                 int count,
16028                 offset_type cu_index,
16029                 int is_static)
16030 {
16031   for (; count-- > 0; ++psymp)
16032     {
16033       void **slot, *lookup;
16034
16035       if (SYMBOL_LANGUAGE (*psymp) == language_ada)
16036         error (_("Ada is not currently supported by the index"));
16037
16038       /* We only want to add a given psymbol once.  However, we also
16039          want to account for whether it is global or static.  So, we
16040          may add it twice, using slightly different values.  */
16041       if (is_static)
16042         {
16043           uintptr_t val = 1 | (uintptr_t) *psymp;
16044
16045           lookup = (void *) val;
16046         }
16047       else
16048         lookup = *psymp;
16049
16050       /* Only add a given psymbol once.  */
16051       slot = htab_find_slot (psyms_seen, lookup, INSERT);
16052       if (!*slot)
16053         {
16054           *slot = lookup;
16055           add_index_entry (symtab, SYMBOL_NATURAL_NAME (*psymp), cu_index);
16056         }
16057     }
16058 }
16059
16060 /* Write the contents of an ("unfinished") obstack to FILE.  Throw an
16061    exception if there is an error.  */
16062
16063 static void
16064 write_obstack (FILE *file, struct obstack *obstack)
16065 {
16066   if (fwrite (obstack_base (obstack), 1, obstack_object_size (obstack),
16067               file)
16068       != obstack_object_size (obstack))
16069     error (_("couldn't data write to file"));
16070 }
16071
16072 /* Unlink a file if the argument is not NULL.  */
16073
16074 static void
16075 unlink_if_set (void *p)
16076 {
16077   char **filename = p;
16078   if (*filename)
16079     unlink (*filename);
16080 }
16081
16082 /* A helper struct used when iterating over debug_types.  */
16083 struct signatured_type_index_data
16084 {
16085   struct objfile *objfile;
16086   struct mapped_symtab *symtab;
16087   struct obstack *types_list;
16088   htab_t psyms_seen;
16089   int cu_index;
16090 };
16091
16092 /* A helper function that writes a single signatured_type to an
16093    obstack.  */
16094
16095 static int
16096 write_one_signatured_type (void **slot, void *d)
16097 {
16098   struct signatured_type_index_data *info = d;
16099   struct signatured_type *entry = (struct signatured_type *) *slot;
16100   struct dwarf2_per_cu_data *per_cu = &entry->per_cu;
16101   struct partial_symtab *psymtab = per_cu->v.psymtab;
16102   gdb_byte val[8];
16103
16104   write_psymbols (info->symtab,
16105                   info->psyms_seen,
16106                   info->objfile->global_psymbols.list
16107                   + psymtab->globals_offset,
16108                   psymtab->n_global_syms, info->cu_index,
16109                   0);
16110   write_psymbols (info->symtab,
16111                   info->psyms_seen,
16112                   info->objfile->static_psymbols.list
16113                   + psymtab->statics_offset,
16114                   psymtab->n_static_syms, info->cu_index,
16115                   1);
16116
16117   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, entry->per_cu.offset);
16118   obstack_grow (info->types_list, val, 8);
16119   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, entry->type_offset);
16120   obstack_grow (info->types_list, val, 8);
16121   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, entry->signature);
16122   obstack_grow (info->types_list, val, 8);
16123
16124   ++info->cu_index;
16125
16126   return 1;
16127 }
16128
16129 /* A cleanup function for an htab_t.  */
16130
16131 static void
16132 cleanup_htab (void *arg)
16133 {
16134   htab_delete (arg);
16135 }
16136
16137 /* Create an index file for OBJFILE in the directory DIR.  */
16138
16139 static void
16140 write_psymtabs_to_index (struct objfile *objfile, const char *dir)
16141 {
16142   struct cleanup *cleanup;
16143   char *filename, *cleanup_filename;
16144   struct obstack contents, addr_obstack, constant_pool, symtab_obstack;
16145   struct obstack cu_list, types_cu_list;
16146   int i;
16147   FILE *out_file;
16148   struct mapped_symtab *symtab;
16149   offset_type val, size_of_contents, total_len;
16150   struct stat st;
16151   char buf[8];
16152   htab_t psyms_seen;
16153   htab_t cu_index_htab;
16154   struct psymtab_cu_index_map *psymtab_cu_index_map;
16155
16156   if (!objfile->psymtabs || !objfile->psymtabs_addrmap)
16157     return;
16158
16159   if (dwarf2_per_objfile->using_index)
16160     error (_("Cannot use an index to create the index"));
16161
16162   if (stat (objfile->name, &st) < 0)
16163     perror_with_name (objfile->name);
16164
16165   filename = concat (dir, SLASH_STRING, lbasename (objfile->name),
16166                      INDEX_SUFFIX, (char *) NULL);
16167   cleanup = make_cleanup (xfree, filename);
16168
16169   out_file = fopen (filename, "wb");
16170   if (!out_file)
16171     error (_("Can't open `%s' for writing"), filename);
16172
16173   cleanup_filename = filename;
16174   make_cleanup (unlink_if_set, &cleanup_filename);
16175
16176   symtab = create_mapped_symtab ();
16177   make_cleanup (cleanup_mapped_symtab, symtab);
16178
16179   obstack_init (&addr_obstack);
16180   make_cleanup_obstack_free (&addr_obstack);
16181
16182   obstack_init (&cu_list);
16183   make_cleanup_obstack_free (&cu_list);
16184
16185   obstack_init (&types_cu_list);
16186   make_cleanup_obstack_free (&types_cu_list);
16187
16188   psyms_seen = htab_create_alloc (100, htab_hash_pointer, htab_eq_pointer,
16189                                   NULL, xcalloc, xfree);
16190   make_cleanup (cleanup_htab, psyms_seen);
16191
16192   /* While we're scanning CU's create a table that maps a psymtab pointer
16193      (which is what addrmap records) to its index (which is what is recorded
16194      in the index file).  This will later be needed to write the address
16195      table.  */
16196   cu_index_htab = htab_create_alloc (100,
16197                                      hash_psymtab_cu_index,
16198                                      eq_psymtab_cu_index,
16199                                      NULL, xcalloc, xfree);
16200   make_cleanup (cleanup_htab, cu_index_htab);
16201   psymtab_cu_index_map = (struct psymtab_cu_index_map *)
16202     xmalloc (sizeof (struct psymtab_cu_index_map)
16203              * dwarf2_per_objfile->n_comp_units);
16204   make_cleanup (xfree, psymtab_cu_index_map);
16205
16206   /* The CU list is already sorted, so we don't need to do additional
16207      work here.  Also, the debug_types entries do not appear in
16208      all_comp_units, but only in their own hash table.  */
16209   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
16210     {
16211       struct dwarf2_per_cu_data *per_cu
16212         = dwarf2_per_objfile->all_comp_units[i];
16213       struct partial_symtab *psymtab = per_cu->v.psymtab;
16214       gdb_byte val[8];
16215       struct psymtab_cu_index_map *map;
16216       void **slot;
16217
16218       write_psymbols (symtab,
16219                       psyms_seen,
16220                       objfile->global_psymbols.list + psymtab->globals_offset,
16221                       psymtab->n_global_syms, i,
16222                       0);
16223       write_psymbols (symtab,
16224                       psyms_seen,
16225                       objfile->static_psymbols.list + psymtab->statics_offset,
16226                       psymtab->n_static_syms, i,
16227                       1);
16228
16229       map = &psymtab_cu_index_map[i];
16230       map->psymtab = psymtab;
16231       map->cu_index = i;
16232       slot = htab_find_slot (cu_index_htab, map, INSERT);
16233       gdb_assert (slot != NULL);
16234       gdb_assert (*slot == NULL);
16235       *slot = map;
16236
16237       store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, per_cu->offset);
16238       obstack_grow (&cu_list, val, 8);
16239       store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, per_cu->length);
16240       obstack_grow (&cu_list, val, 8);
16241     }
16242
16243   /* Dump the address map.  */
16244   write_address_map (objfile, &addr_obstack, cu_index_htab);
16245
16246   /* Write out the .debug_type entries, if any.  */
16247   if (dwarf2_per_objfile->signatured_types)
16248     {
16249       struct signatured_type_index_data sig_data;
16250
16251       sig_data.objfile = objfile;
16252       sig_data.symtab = symtab;
16253       sig_data.types_list = &types_cu_list;
16254       sig_data.psyms_seen = psyms_seen;
16255       sig_data.cu_index = dwarf2_per_objfile->n_comp_units;
16256       htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
16257                               write_one_signatured_type, &sig_data);
16258     }
16259
16260   obstack_init (&constant_pool);
16261   make_cleanup_obstack_free (&constant_pool);
16262   obstack_init (&symtab_obstack);
16263   make_cleanup_obstack_free (&symtab_obstack);
16264   write_hash_table (symtab, &symtab_obstack, &constant_pool);
16265
16266   obstack_init (&contents);
16267   make_cleanup_obstack_free (&contents);
16268   size_of_contents = 6 * sizeof (offset_type);
16269   total_len = size_of_contents;
16270
16271   /* The version number.  */
16272   val = MAYBE_SWAP (5);
16273   obstack_grow (&contents, &val, sizeof (val));
16274
16275   /* The offset of the CU list from the start of the file.  */
16276   val = MAYBE_SWAP (total_len);
16277   obstack_grow (&contents, &val, sizeof (val));
16278   total_len += obstack_object_size (&cu_list);
16279
16280   /* The offset of the types CU list from the start of the file.  */
16281   val = MAYBE_SWAP (total_len);
16282   obstack_grow (&contents, &val, sizeof (val));
16283   total_len += obstack_object_size (&types_cu_list);
16284
16285   /* The offset of the address table from the start of the file.  */
16286   val = MAYBE_SWAP (total_len);
16287   obstack_grow (&contents, &val, sizeof (val));
16288   total_len += obstack_object_size (&addr_obstack);
16289
16290   /* The offset of the symbol table from the start of the file.  */
16291   val = MAYBE_SWAP (total_len);
16292   obstack_grow (&contents, &val, sizeof (val));
16293   total_len += obstack_object_size (&symtab_obstack);
16294
16295   /* The offset of the constant pool from the start of the file.  */
16296   val = MAYBE_SWAP (total_len);
16297   obstack_grow (&contents, &val, sizeof (val));
16298   total_len += obstack_object_size (&constant_pool);
16299
16300   gdb_assert (obstack_object_size (&contents) == size_of_contents);
16301
16302   write_obstack (out_file, &contents);
16303   write_obstack (out_file, &cu_list);
16304   write_obstack (out_file, &types_cu_list);
16305   write_obstack (out_file, &addr_obstack);
16306   write_obstack (out_file, &symtab_obstack);
16307   write_obstack (out_file, &constant_pool);
16308
16309   fclose (out_file);
16310
16311   /* We want to keep the file, so we set cleanup_filename to NULL
16312      here.  See unlink_if_set.  */
16313   cleanup_filename = NULL;
16314
16315   do_cleanups (cleanup);
16316 }
16317
16318 /* Implementation of the `save gdb-index' command.
16319    
16320    Note that the file format used by this command is documented in the
16321    GDB manual.  Any changes here must be documented there.  */
16322
16323 static void
16324 save_gdb_index_command (char *arg, int from_tty)
16325 {
16326   struct objfile *objfile;
16327
16328   if (!arg || !*arg)
16329     error (_("usage: save gdb-index DIRECTORY"));
16330
16331   ALL_OBJFILES (objfile)
16332   {
16333     struct stat st;
16334
16335     /* If the objfile does not correspond to an actual file, skip it.  */
16336     if (stat (objfile->name, &st) < 0)
16337       continue;
16338
16339     dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
16340     if (dwarf2_per_objfile)
16341       {
16342         volatile struct gdb_exception except;
16343
16344         TRY_CATCH (except, RETURN_MASK_ERROR)
16345           {
16346             write_psymtabs_to_index (objfile, arg);
16347           }
16348         if (except.reason < 0)
16349           exception_fprintf (gdb_stderr, except,
16350                              _("Error while writing index for `%s': "),
16351                              objfile->name);
16352       }
16353   }
16354 }
16355
16356 \f
16357
16358 int dwarf2_always_disassemble;
16359
16360 static void
16361 show_dwarf2_always_disassemble (struct ui_file *file, int from_tty,
16362                                 struct cmd_list_element *c, const char *value)
16363 {
16364   fprintf_filtered (file,
16365                     _("Whether to always disassemble "
16366                       "DWARF expressions is %s.\n"),
16367                     value);
16368 }
16369
16370 static void
16371 show_check_physname (struct ui_file *file, int from_tty,
16372                      struct cmd_list_element *c, const char *value)
16373 {
16374   fprintf_filtered (file,
16375                     _("Whether to check \"physname\" is %s.\n"),
16376                     value);
16377 }
16378
16379 void _initialize_dwarf2_read (void);
16380
16381 void
16382 _initialize_dwarf2_read (void)
16383 {
16384   struct cmd_list_element *c;
16385
16386   dwarf2_objfile_data_key
16387     = register_objfile_data_with_cleanup (NULL, dwarf2_per_objfile_free);
16388
16389   add_prefix_cmd ("dwarf2", class_maintenance, set_dwarf2_cmd, _("\
16390 Set DWARF 2 specific variables.\n\
16391 Configure DWARF 2 variables such as the cache size"),
16392                   &set_dwarf2_cmdlist, "maintenance set dwarf2 ",
16393                   0/*allow-unknown*/, &maintenance_set_cmdlist);
16394
16395   add_prefix_cmd ("dwarf2", class_maintenance, show_dwarf2_cmd, _("\
16396 Show DWARF 2 specific variables\n\
16397 Show DWARF 2 variables such as the cache size"),
16398                   &show_dwarf2_cmdlist, "maintenance show dwarf2 ",
16399                   0/*allow-unknown*/, &maintenance_show_cmdlist);
16400
16401   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
16402                             &dwarf2_max_cache_age, _("\
16403 Set the upper bound on the age of cached dwarf2 compilation units."), _("\
16404 Show the upper bound on the age of cached dwarf2 compilation units."), _("\
16405 A higher limit means that cached compilation units will be stored\n\
16406 in memory longer, and more total memory will be used.  Zero disables\n\
16407 caching, which can slow down startup."),
16408                             NULL,
16409                             show_dwarf2_max_cache_age,
16410                             &set_dwarf2_cmdlist,
16411                             &show_dwarf2_cmdlist);
16412
16413   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
16414                            &dwarf2_always_disassemble, _("\
16415 Set whether `info address' always disassembles DWARF expressions."), _("\
16416 Show whether `info address' always disassembles DWARF expressions."), _("\
16417 When enabled, DWARF expressions are always printed in an assembly-like\n\
16418 syntax.  When disabled, expressions will be printed in a more\n\
16419 conversational style, when possible."),
16420                            NULL,
16421                            show_dwarf2_always_disassemble,
16422                            &set_dwarf2_cmdlist,
16423                            &show_dwarf2_cmdlist);
16424
16425   add_setshow_zinteger_cmd ("dwarf2-die", no_class, &dwarf2_die_debug, _("\
16426 Set debugging of the dwarf2 DIE reader."), _("\
16427 Show debugging of the dwarf2 DIE reader."), _("\
16428 When enabled (non-zero), DIEs are dumped after they are read in.\n\
16429 The value is the maximum depth to print."),
16430                             NULL,
16431                             NULL,
16432                             &setdebuglist, &showdebuglist);
16433
16434   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
16435 Set cross-checking of \"physname\" code against demangler."), _("\
16436 Show cross-checking of \"physname\" code against demangler."), _("\
16437 When enabled, GDB's internal \"physname\" code is checked against\n\
16438 the demangler."),
16439                            NULL, show_check_physname,
16440                            &setdebuglist, &showdebuglist);
16441
16442   c = add_cmd ("gdb-index", class_files, save_gdb_index_command,
16443                _("\
16444 Save a gdb-index file.\n\
16445 Usage: save gdb-index DIRECTORY"),
16446                &save_cmdlist);
16447   set_cmd_completer (c, filename_completer);
16448 }