OSDN Git Service

gdb/
[pf3gnuchains/sourceware.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
61 #include <fcntl.h>
62 #include "gdb_string.h"
63 #include "gdb_assert.h"
64 #include <sys/types.h>
65 #ifdef HAVE_ZLIB_H
66 #include <zlib.h>
67 #endif
68 #ifdef HAVE_MMAP
69 #include <sys/mman.h>
70 #ifndef MAP_FAILED
71 #define MAP_FAILED ((void *) -1)
72 #endif
73 #endif
74
75 typedef struct symbol *symbolp;
76 DEF_VEC_P (symbolp);
77
78 #if 0
79 /* .debug_info header for a compilation unit
80    Because of alignment constraints, this structure has padding and cannot
81    be mapped directly onto the beginning of the .debug_info section.  */
82 typedef struct comp_unit_header
83   {
84     unsigned int length;        /* length of the .debug_info
85                                    contribution */
86     unsigned short version;     /* version number -- 2 for DWARF
87                                    version 2 */
88     unsigned int abbrev_offset; /* offset into .debug_abbrev section */
89     unsigned char addr_size;    /* byte size of an address -- 4 */
90   }
91 _COMP_UNIT_HEADER;
92 #define _ACTUAL_COMP_UNIT_HEADER_SIZE 11
93 #endif
94
95 /* .debug_line statement program prologue
96    Because of alignment constraints, this structure has padding and cannot
97    be mapped directly onto the beginning of the .debug_info section.  */
98 typedef struct statement_prologue
99   {
100     unsigned int total_length;  /* byte length of the statement
101                                    information */
102     unsigned short version;     /* version number -- 2 for DWARF
103                                    version 2 */
104     unsigned int prologue_length;       /* # bytes between prologue &
105                                            stmt program */
106     unsigned char minimum_instruction_length;   /* byte size of
107                                                    smallest instr */
108     unsigned char default_is_stmt;      /* initial value of is_stmt
109                                            register */
110     char line_base;
111     unsigned char line_range;
112     unsigned char opcode_base;  /* number assigned to first special
113                                    opcode */
114     unsigned char *standard_opcode_lengths;
115   }
116 _STATEMENT_PROLOGUE;
117
118 /* When non-zero, dump DIEs after they are read in.  */
119 static int dwarf2_die_debug = 0;
120
121 static int pagesize;
122
123 /* When set, the file that we're processing is known to have debugging
124    info for C++ namespaces.  GCC 3.3.x did not produce this information,
125    but later versions do.  */
126
127 static int processing_has_namespace_info;
128
129 static const struct objfile_data *dwarf2_objfile_data_key;
130
131 struct dwarf2_section_info
132 {
133   asection *asection;
134   gdb_byte *buffer;
135   bfd_size_type size;
136   int was_mmapped;
137   /* True if we have tried to read this section.  */
138   int readin;
139 };
140
141 /* All offsets in the index are of this type.  It must be
142    architecture-independent.  */
143 typedef uint32_t offset_type;
144
145 DEF_VEC_I (offset_type);
146
147 /* A description of the mapped index.  The file format is described in
148    a comment by the code that writes the index.  */
149 struct mapped_index
150 {
151   /* The total length of the buffer.  */
152   off_t total_size;
153   /* A pointer to the address table data.  */
154   const gdb_byte *address_table;
155   /* Size of the address table data in bytes.  */
156   offset_type address_table_size;
157   /* The symbol table, implemented as a hash table.  */
158   const offset_type *symbol_table;
159   /* Size in slots, each slot is 2 offset_types.  */
160   offset_type symbol_table_slots;
161   /* A pointer to the constant pool.  */
162   const char *constant_pool;
163 };
164
165 struct dwarf2_per_objfile
166 {
167   struct dwarf2_section_info info;
168   struct dwarf2_section_info abbrev;
169   struct dwarf2_section_info line;
170   struct dwarf2_section_info loc;
171   struct dwarf2_section_info macinfo;
172   struct dwarf2_section_info str;
173   struct dwarf2_section_info ranges;
174   struct dwarf2_section_info types;
175   struct dwarf2_section_info frame;
176   struct dwarf2_section_info eh_frame;
177   struct dwarf2_section_info gdb_index;
178
179   /* Back link.  */
180   struct objfile *objfile;
181
182   /* A list of all the compilation units.  This is used to locate
183      the target compilation unit of a particular reference.  */
184   struct dwarf2_per_cu_data **all_comp_units;
185
186   /* The number of compilation units in ALL_COMP_UNITS.  */
187   int n_comp_units;
188
189   /* The number of .debug_types-related CUs.  */
190   int n_type_comp_units;
191
192   /* The .debug_types-related CUs.  */
193   struct dwarf2_per_cu_data **type_comp_units;
194
195   /* A chain of compilation units that are currently read in, so that
196      they can be freed later.  */
197   struct dwarf2_per_cu_data *read_in_chain;
198
199   /* A table mapping .debug_types signatures to its signatured_type entry.
200      This is NULL if the .debug_types section hasn't been read in yet.  */
201   htab_t signatured_types;
202
203   /* A flag indicating wether this objfile has a section loaded at a
204      VMA of 0.  */
205   int has_section_at_zero;
206
207   /* True if we are using the mapped index,
208      or we are faking it for OBJF_READNOW's sake.  */
209   unsigned char using_index;
210
211   /* The mapped index, or NULL if .gdb_index is missing or not being used.  */
212   struct mapped_index *index_table;
213
214   /* When using index_table, this keeps track of all quick_file_names entries.
215      TUs can share line table entries with CUs or other TUs, and there can be
216      a lot more TUs than unique line tables, so we maintain a separate table
217      of all line table entries to support the sharing.  */
218   htab_t quick_file_names_table;
219
220   /* Set during partial symbol reading, to prevent queueing of full
221      symbols.  */
222   int reading_partial_symbols;
223
224   /* Table mapping type .debug_info DIE offsets to types.
225      This is NULL if not allocated yet.
226      It (currently) makes sense to allocate debug_types_type_hash lazily.
227      To keep things simple we allocate both lazily.  */
228   htab_t debug_info_type_hash;
229
230   /* Table mapping type .debug_types DIE offsets to types.
231      This is NULL if not allocated yet.  */
232   htab_t debug_types_type_hash;
233 };
234
235 static struct dwarf2_per_objfile *dwarf2_per_objfile;
236
237 /* names of the debugging sections */
238
239 /* Note that if the debugging section has been compressed, it might
240    have a name like .zdebug_info.  */
241
242 #define INFO_SECTION     "debug_info"
243 #define ABBREV_SECTION   "debug_abbrev"
244 #define LINE_SECTION     "debug_line"
245 #define LOC_SECTION      "debug_loc"
246 #define MACINFO_SECTION  "debug_macinfo"
247 #define STR_SECTION      "debug_str"
248 #define RANGES_SECTION   "debug_ranges"
249 #define TYPES_SECTION    "debug_types"
250 #define FRAME_SECTION    "debug_frame"
251 #define EH_FRAME_SECTION "eh_frame"
252 #define GDB_INDEX_SECTION "gdb_index"
253
254 /* local data types */
255
256 /* We hold several abbreviation tables in memory at the same time.  */
257 #ifndef ABBREV_HASH_SIZE
258 #define ABBREV_HASH_SIZE 121
259 #endif
260
261 /* The data in a compilation unit header, after target2host
262    translation, looks like this.  */
263 struct comp_unit_head
264 {
265   unsigned int length;
266   short version;
267   unsigned char addr_size;
268   unsigned char signed_addr_p;
269   unsigned int abbrev_offset;
270
271   /* Size of file offsets; either 4 or 8.  */
272   unsigned int offset_size;
273
274   /* Size of the length field; either 4 or 12.  */
275   unsigned int initial_length_size;
276
277   /* Offset to the first byte of this compilation unit header in the
278      .debug_info section, for resolving relative reference dies.  */
279   unsigned int offset;
280
281   /* Offset to first die in this cu from the start of the cu.
282      This will be the first byte following the compilation unit header.  */
283   unsigned int first_die_offset;
284 };
285
286 /* Type used for delaying computation of method physnames.
287    See comments for compute_delayed_physnames.  */
288 struct delayed_method_info
289 {
290   /* The type to which the method is attached, i.e., its parent class.  */
291   struct type *type;
292
293   /* The index of the method in the type's function fieldlists.  */
294   int fnfield_index;
295
296   /* The index of the method in the fieldlist.  */
297   int index;
298
299   /* The name of the DIE.  */
300   const char *name;
301
302   /*  The DIE associated with this method.  */
303   struct die_info *die;
304 };
305
306 typedef struct delayed_method_info delayed_method_info;
307 DEF_VEC_O (delayed_method_info);
308
309 /* Internal state when decoding a particular compilation unit.  */
310 struct dwarf2_cu
311 {
312   /* The objfile containing this compilation unit.  */
313   struct objfile *objfile;
314
315   /* The header of the compilation unit.  */
316   struct comp_unit_head header;
317
318   /* Base address of this compilation unit.  */
319   CORE_ADDR base_address;
320
321   /* Non-zero if base_address has been set.  */
322   int base_known;
323
324   struct function_range *first_fn, *last_fn, *cached_fn;
325
326   /* The language we are debugging.  */
327   enum language language;
328   const struct language_defn *language_defn;
329
330   const char *producer;
331
332   /* The generic symbol table building routines have separate lists for
333      file scope symbols and all all other scopes (local scopes).  So
334      we need to select the right one to pass to add_symbol_to_list().
335      We do it by keeping a pointer to the correct list in list_in_scope.
336
337      FIXME: The original dwarf code just treated the file scope as the
338      first local scope, and all other local scopes as nested local
339      scopes, and worked fine.  Check to see if we really need to
340      distinguish these in buildsym.c.  */
341   struct pending **list_in_scope;
342
343   /* DWARF abbreviation table associated with this compilation unit.  */
344   struct abbrev_info **dwarf2_abbrevs;
345
346   /* Storage for the abbrev table.  */
347   struct obstack abbrev_obstack;
348
349   /* Hash table holding all the loaded partial DIEs.  */
350   htab_t partial_dies;
351
352   /* Storage for things with the same lifetime as this read-in compilation
353      unit, including partial DIEs.  */
354   struct obstack comp_unit_obstack;
355
356   /* When multiple dwarf2_cu structures are living in memory, this field
357      chains them all together, so that they can be released efficiently.
358      We will probably also want a generation counter so that most-recently-used
359      compilation units are cached...  */
360   struct dwarf2_per_cu_data *read_in_chain;
361
362   /* Backchain to our per_cu entry if the tree has been built.  */
363   struct dwarf2_per_cu_data *per_cu;
364
365   /* How many compilation units ago was this CU last referenced?  */
366   int last_used;
367
368   /* A hash table of die offsets for following references.  */
369   htab_t die_hash;
370
371   /* Full DIEs if read in.  */
372   struct die_info *dies;
373
374   /* A set of pointers to dwarf2_per_cu_data objects for compilation
375      units referenced by this one.  Only set during full symbol processing;
376      partial symbol tables do not have dependencies.  */
377   htab_t dependencies;
378
379   /* Header data from the line table, during full symbol processing.  */
380   struct line_header *line_header;
381
382   /* A list of methods which need to have physnames computed
383      after all type information has been read.  */
384   VEC (delayed_method_info) *method_list;
385
386   /* Mark used when releasing cached dies.  */
387   unsigned int mark : 1;
388
389   /* This flag will be set if this compilation unit might include
390      inter-compilation-unit references.  */
391   unsigned int has_form_ref_addr : 1;
392
393   /* This flag will be set if this compilation unit includes any
394      DW_TAG_namespace DIEs.  If we know that there are explicit
395      DIEs for namespaces, we don't need to try to infer them
396      from mangled names.  */
397   unsigned int has_namespace_info : 1;
398 };
399
400 /* Persistent data held for a compilation unit, even when not
401    processing it.  We put a pointer to this structure in the
402    read_symtab_private field of the psymtab.  If we encounter
403    inter-compilation-unit references, we also maintain a sorted
404    list of all compilation units.  */
405
406 struct dwarf2_per_cu_data
407 {
408   /* The start offset and length of this compilation unit.  2**29-1
409      bytes should suffice to store the length of any compilation unit
410      - if it doesn't, GDB will fall over anyway.
411      NOTE: Unlike comp_unit_head.length, this length includes
412      initial_length_size.  */
413   unsigned int offset;
414   unsigned int length : 29;
415
416   /* Flag indicating this compilation unit will be read in before
417      any of the current compilation units are processed.  */
418   unsigned int queued : 1;
419
420   /* This flag will be set if we need to load absolutely all DIEs
421      for this compilation unit, instead of just the ones we think
422      are interesting.  It gets set if we look for a DIE in the
423      hash table and don't find it.  */
424   unsigned int load_all_dies : 1;
425
426   /* Non-zero if this CU is from .debug_types.
427      Otherwise it's from .debug_info.  */
428   unsigned int from_debug_types : 1;
429
430   /* Set to non-NULL iff this CU is currently loaded.  When it gets freed out
431      of the CU cache it gets reset to NULL again.  */
432   struct dwarf2_cu *cu;
433
434   /* The corresponding objfile.  */
435   struct objfile *objfile;
436
437   /* When using partial symbol tables, the 'psymtab' field is active.
438      Otherwise the 'quick' field is active.  */
439   union
440   {
441     /* The partial symbol table associated with this compilation unit,
442        or NULL for partial units (which do not have an associated
443        symtab).  */
444     struct partial_symtab *psymtab;
445
446     /* Data needed by the "quick" functions.  */
447     struct dwarf2_per_cu_quick_data *quick;
448   } v;
449 };
450
451 /* Entry in the signatured_types hash table.  */
452
453 struct signatured_type
454 {
455   ULONGEST signature;
456
457   /* Offset in .debug_types of the TU (type_unit) for this type.  */
458   unsigned int offset;
459
460   /* Offset in .debug_types of the type defined by this TU.  */
461   unsigned int type_offset;
462
463   /* The CU(/TU) of this type.  */
464   struct dwarf2_per_cu_data per_cu;
465 };
466
467 /* Struct used to pass misc. parameters to read_die_and_children, et
468    al.  which are used for both .debug_info and .debug_types dies.
469    All parameters here are unchanging for the life of the call.  This
470    struct exists to abstract away the constant parameters of die
471    reading.  */
472
473 struct die_reader_specs
474 {
475   /* The bfd of this objfile.  */
476   bfd* abfd;
477
478   /* The CU of the DIE we are parsing.  */
479   struct dwarf2_cu *cu;
480
481   /* Pointer to start of section buffer.
482      This is either the start of .debug_info or .debug_types.  */
483   const gdb_byte *buffer;
484 };
485
486 /* The line number information for a compilation unit (found in the
487    .debug_line section) begins with a "statement program header",
488    which contains the following information.  */
489 struct line_header
490 {
491   unsigned int total_length;
492   unsigned short version;
493   unsigned int header_length;
494   unsigned char minimum_instruction_length;
495   unsigned char maximum_ops_per_instruction;
496   unsigned char default_is_stmt;
497   int line_base;
498   unsigned char line_range;
499   unsigned char opcode_base;
500
501   /* standard_opcode_lengths[i] is the number of operands for the
502      standard opcode whose value is i.  This means that
503      standard_opcode_lengths[0] is unused, and the last meaningful
504      element is standard_opcode_lengths[opcode_base - 1].  */
505   unsigned char *standard_opcode_lengths;
506
507   /* The include_directories table.  NOTE!  These strings are not
508      allocated with xmalloc; instead, they are pointers into
509      debug_line_buffer.  If you try to free them, `free' will get
510      indigestion.  */
511   unsigned int num_include_dirs, include_dirs_size;
512   char **include_dirs;
513
514   /* The file_names table.  NOTE!  These strings are not allocated
515      with xmalloc; instead, they are pointers into debug_line_buffer.
516      Don't try to free them directly.  */
517   unsigned int num_file_names, file_names_size;
518   struct file_entry
519   {
520     char *name;
521     unsigned int dir_index;
522     unsigned int mod_time;
523     unsigned int length;
524     int included_p; /* Non-zero if referenced by the Line Number Program.  */
525     struct symtab *symtab; /* The associated symbol table, if any.  */
526   } *file_names;
527
528   /* The start and end of the statement program following this
529      header.  These point into dwarf2_per_objfile->line_buffer.  */
530   gdb_byte *statement_program_start, *statement_program_end;
531 };
532
533 /* When we construct a partial symbol table entry we only
534    need this much information.  */
535 struct partial_die_info
536   {
537     /* Offset of this DIE.  */
538     unsigned int offset;
539
540     /* DWARF-2 tag for this DIE.  */
541     ENUM_BITFIELD(dwarf_tag) tag : 16;
542
543     /* Assorted flags describing the data found in this DIE.  */
544     unsigned int has_children : 1;
545     unsigned int is_external : 1;
546     unsigned int is_declaration : 1;
547     unsigned int has_type : 1;
548     unsigned int has_specification : 1;
549     unsigned int has_pc_info : 1;
550
551     /* Flag set if the SCOPE field of this structure has been
552        computed.  */
553     unsigned int scope_set : 1;
554
555     /* Flag set if the DIE has a byte_size attribute.  */
556     unsigned int has_byte_size : 1;
557
558     /* Flag set if any of the DIE's children are template arguments.  */
559     unsigned int has_template_arguments : 1;
560
561     /* Flag set if fixup_partial_die has been called on this die.  */
562     unsigned int fixup_called : 1;
563
564     /* The name of this DIE.  Normally the value of DW_AT_name, but
565        sometimes a default name for unnamed DIEs.  */
566     char *name;
567
568     /* The linkage name, if present.  */
569     const char *linkage_name;
570
571     /* The scope to prepend to our children.  This is generally
572        allocated on the comp_unit_obstack, so will disappear
573        when this compilation unit leaves the cache.  */
574     char *scope;
575
576     /* The location description associated with this DIE, if any.  */
577     struct dwarf_block *locdesc;
578
579     /* If HAS_PC_INFO, the PC range associated with this DIE.  */
580     CORE_ADDR lowpc;
581     CORE_ADDR highpc;
582
583     /* Pointer into the info_buffer (or types_buffer) pointing at the target of
584        DW_AT_sibling, if any.  */
585     /* NOTE: This member isn't strictly necessary, read_partial_die could
586        return DW_AT_sibling values to its caller load_partial_dies.  */
587     gdb_byte *sibling;
588
589     /* If HAS_SPECIFICATION, the offset of the DIE referred to by
590        DW_AT_specification (or DW_AT_abstract_origin or
591        DW_AT_extension).  */
592     unsigned int spec_offset;
593
594     /* Pointers to this DIE's parent, first child, and next sibling,
595        if any.  */
596     struct partial_die_info *die_parent, *die_child, *die_sibling;
597   };
598
599 /* This data structure holds the information of an abbrev.  */
600 struct abbrev_info
601   {
602     unsigned int number;        /* number identifying abbrev */
603     enum dwarf_tag tag;         /* dwarf tag */
604     unsigned short has_children;                /* boolean */
605     unsigned short num_attrs;   /* number of attributes */
606     struct attr_abbrev *attrs;  /* an array of attribute descriptions */
607     struct abbrev_info *next;   /* next in chain */
608   };
609
610 struct attr_abbrev
611   {
612     ENUM_BITFIELD(dwarf_attribute) name : 16;
613     ENUM_BITFIELD(dwarf_form) form : 16;
614   };
615
616 /* Attributes have a name and a value.  */
617 struct attribute
618   {
619     ENUM_BITFIELD(dwarf_attribute) name : 16;
620     ENUM_BITFIELD(dwarf_form) form : 15;
621
622     /* Has DW_STRING already been updated by dwarf2_canonicalize_name?  This
623        field should be in u.str (existing only for DW_STRING) but it is kept
624        here for better struct attribute alignment.  */
625     unsigned int string_is_canonical : 1;
626
627     union
628       {
629         char *str;
630         struct dwarf_block *blk;
631         ULONGEST unsnd;
632         LONGEST snd;
633         CORE_ADDR addr;
634         struct signatured_type *signatured_type;
635       }
636     u;
637   };
638
639 /* This data structure holds a complete die structure.  */
640 struct die_info
641   {
642     /* DWARF-2 tag for this DIE.  */
643     ENUM_BITFIELD(dwarf_tag) tag : 16;
644
645     /* Number of attributes */
646     unsigned char num_attrs;
647
648     /* True if we're presently building the full type name for the
649        type derived from this DIE.  */
650     unsigned char building_fullname : 1;
651
652     /* Abbrev number */
653     unsigned int abbrev;
654
655     /* Offset in .debug_info or .debug_types section.  */
656     unsigned int offset;
657
658     /* The dies in a compilation unit form an n-ary tree.  PARENT
659        points to this die's parent; CHILD points to the first child of
660        this node; and all the children of a given node are chained
661        together via their SIBLING fields.  */
662     struct die_info *child;     /* Its first child, if any.  */
663     struct die_info *sibling;   /* Its next sibling, if any.  */
664     struct die_info *parent;    /* Its parent, if any.  */
665
666     /* An array of attributes, with NUM_ATTRS elements.  There may be
667        zero, but it's not common and zero-sized arrays are not
668        sufficiently portable C.  */
669     struct attribute attrs[1];
670   };
671
672 struct function_range
673 {
674   const char *name;
675   CORE_ADDR lowpc, highpc;
676   int seen_line;
677   struct function_range *next;
678 };
679
680 /* Get at parts of an attribute structure.  */
681
682 #define DW_STRING(attr)    ((attr)->u.str)
683 #define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
684 #define DW_UNSND(attr)     ((attr)->u.unsnd)
685 #define DW_BLOCK(attr)     ((attr)->u.blk)
686 #define DW_SND(attr)       ((attr)->u.snd)
687 #define DW_ADDR(attr)      ((attr)->u.addr)
688 #define DW_SIGNATURED_TYPE(attr) ((attr)->u.signatured_type)
689
690 /* Blocks are a bunch of untyped bytes.  */
691 struct dwarf_block
692   {
693     unsigned int size;
694     gdb_byte *data;
695   };
696
697 #ifndef ATTR_ALLOC_CHUNK
698 #define ATTR_ALLOC_CHUNK 4
699 #endif
700
701 /* Allocate fields for structs, unions and enums in this size.  */
702 #ifndef DW_FIELD_ALLOC_CHUNK
703 #define DW_FIELD_ALLOC_CHUNK 4
704 #endif
705
706 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
707    but this would require a corresponding change in unpack_field_as_long
708    and friends.  */
709 static int bits_per_byte = 8;
710
711 /* The routines that read and process dies for a C struct or C++ class
712    pass lists of data member fields and lists of member function fields
713    in an instance of a field_info structure, as defined below.  */
714 struct field_info
715   {
716     /* List of data member and baseclasses fields.  */
717     struct nextfield
718       {
719         struct nextfield *next;
720         int accessibility;
721         int virtuality;
722         struct field field;
723       }
724      *fields, *baseclasses;
725
726     /* Number of fields (including baseclasses).  */
727     int nfields;
728
729     /* Number of baseclasses.  */
730     int nbaseclasses;
731
732     /* Set if the accesibility of one of the fields is not public.  */
733     int non_public_fields;
734
735     /* Member function fields array, entries are allocated in the order they
736        are encountered in the object file.  */
737     struct nextfnfield
738       {
739         struct nextfnfield *next;
740         struct fn_field fnfield;
741       }
742      *fnfields;
743
744     /* Member function fieldlist array, contains name of possibly overloaded
745        member function, number of overloaded member functions and a pointer
746        to the head of the member function field chain.  */
747     struct fnfieldlist
748       {
749         char *name;
750         int length;
751         struct nextfnfield *head;
752       }
753      *fnfieldlists;
754
755     /* Number of entries in the fnfieldlists array.  */
756     int nfnfields;
757
758     /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
759        a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
760     struct typedef_field_list
761       {
762         struct typedef_field field;
763         struct typedef_field_list *next;
764       }
765     *typedef_field_list;
766     unsigned typedef_field_list_count;
767   };
768
769 /* One item on the queue of compilation units to read in full symbols
770    for.  */
771 struct dwarf2_queue_item
772 {
773   struct dwarf2_per_cu_data *per_cu;
774   struct dwarf2_queue_item *next;
775 };
776
777 /* The current queue.  */
778 static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
779
780 /* Loaded secondary compilation units are kept in memory until they
781    have not been referenced for the processing of this many
782    compilation units.  Set this to zero to disable caching.  Cache
783    sizes of up to at least twenty will improve startup time for
784    typical inter-CU-reference binaries, at an obvious memory cost.  */
785 static int dwarf2_max_cache_age = 5;
786 static void
787 show_dwarf2_max_cache_age (struct ui_file *file, int from_tty,
788                            struct cmd_list_element *c, const char *value)
789 {
790   fprintf_filtered (file, _("The upper bound on the age of cached "
791                             "dwarf2 compilation units is %s.\n"),
792                     value);
793 }
794
795
796 /* Various complaints about symbol reading that don't abort the process.  */
797
798 static void
799 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
800 {
801   complaint (&symfile_complaints,
802              _("statement list doesn't fit in .debug_line section"));
803 }
804
805 static void
806 dwarf2_debug_line_missing_file_complaint (void)
807 {
808   complaint (&symfile_complaints,
809              _(".debug_line section has line data without a file"));
810 }
811
812 static void
813 dwarf2_debug_line_missing_end_sequence_complaint (void)
814 {
815   complaint (&symfile_complaints,
816              _(".debug_line section has line "
817                "program sequence without an end"));
818 }
819
820 static void
821 dwarf2_complex_location_expr_complaint (void)
822 {
823   complaint (&symfile_complaints, _("location expression too complex"));
824 }
825
826 static void
827 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
828                                               int arg3)
829 {
830   complaint (&symfile_complaints,
831              _("const value length mismatch for '%s', got %d, expected %d"),
832              arg1, arg2, arg3);
833 }
834
835 static void
836 dwarf2_macros_too_long_complaint (void)
837 {
838   complaint (&symfile_complaints,
839              _("macro info runs off end of `.debug_macinfo' section"));
840 }
841
842 static void
843 dwarf2_macro_malformed_definition_complaint (const char *arg1)
844 {
845   complaint (&symfile_complaints,
846              _("macro debug info contains a "
847                "malformed macro definition:\n`%s'"),
848              arg1);
849 }
850
851 static void
852 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
853 {
854   complaint (&symfile_complaints,
855              _("invalid attribute class or form for '%s' in '%s'"),
856              arg1, arg2);
857 }
858
859 /* local function prototypes */
860
861 static void dwarf2_locate_sections (bfd *, asection *, void *);
862
863 static void dwarf2_create_include_psymtab (char *, struct partial_symtab *,
864                                            struct objfile *);
865
866 static void dwarf2_build_psymtabs_hard (struct objfile *);
867
868 static void scan_partial_symbols (struct partial_die_info *,
869                                   CORE_ADDR *, CORE_ADDR *,
870                                   int, struct dwarf2_cu *);
871
872 static void add_partial_symbol (struct partial_die_info *,
873                                 struct dwarf2_cu *);
874
875 static void add_partial_namespace (struct partial_die_info *pdi,
876                                    CORE_ADDR *lowpc, CORE_ADDR *highpc,
877                                    int need_pc, struct dwarf2_cu *cu);
878
879 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
880                                 CORE_ADDR *highpc, int need_pc,
881                                 struct dwarf2_cu *cu);
882
883 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
884                                      struct dwarf2_cu *cu);
885
886 static void add_partial_subprogram (struct partial_die_info *pdi,
887                                     CORE_ADDR *lowpc, CORE_ADDR *highpc,
888                                     int need_pc, struct dwarf2_cu *cu);
889
890 static gdb_byte *locate_pdi_sibling (struct partial_die_info *orig_pdi,
891                                      gdb_byte *buffer, gdb_byte *info_ptr,
892                                      bfd *abfd, struct dwarf2_cu *cu);
893
894 static void dwarf2_psymtab_to_symtab (struct partial_symtab *);
895
896 static void psymtab_to_symtab_1 (struct partial_symtab *);
897
898 static void dwarf2_read_abbrevs (bfd *abfd, struct dwarf2_cu *cu);
899
900 static void dwarf2_free_abbrev_table (void *);
901
902 static struct abbrev_info *peek_die_abbrev (gdb_byte *, unsigned int *,
903                                             struct dwarf2_cu *);
904
905 static struct abbrev_info *dwarf2_lookup_abbrev (unsigned int,
906                                                  struct dwarf2_cu *);
907
908 static struct partial_die_info *load_partial_dies (bfd *,
909                                                    gdb_byte *, gdb_byte *,
910                                                    int, struct dwarf2_cu *);
911
912 static gdb_byte *read_partial_die (struct partial_die_info *,
913                                    struct abbrev_info *abbrev,
914                                    unsigned int, bfd *,
915                                    gdb_byte *, gdb_byte *,
916                                    struct dwarf2_cu *);
917
918 static struct partial_die_info *find_partial_die (unsigned int,
919                                                   struct dwarf2_cu *);
920
921 static void fixup_partial_die (struct partial_die_info *,
922                                struct dwarf2_cu *);
923
924 static gdb_byte *read_attribute (struct attribute *, struct attr_abbrev *,
925                                  bfd *, gdb_byte *, struct dwarf2_cu *);
926
927 static gdb_byte *read_attribute_value (struct attribute *, unsigned,
928                                        bfd *, gdb_byte *, struct dwarf2_cu *);
929
930 static unsigned int read_1_byte (bfd *, gdb_byte *);
931
932 static int read_1_signed_byte (bfd *, gdb_byte *);
933
934 static unsigned int read_2_bytes (bfd *, gdb_byte *);
935
936 static unsigned int read_4_bytes (bfd *, gdb_byte *);
937
938 static ULONGEST read_8_bytes (bfd *, gdb_byte *);
939
940 static CORE_ADDR read_address (bfd *, gdb_byte *ptr, struct dwarf2_cu *,
941                                unsigned int *);
942
943 static LONGEST read_initial_length (bfd *, gdb_byte *, unsigned int *);
944
945 static LONGEST read_checked_initial_length_and_offset
946   (bfd *, gdb_byte *, const struct comp_unit_head *,
947    unsigned int *, unsigned int *);
948
949 static LONGEST read_offset (bfd *, gdb_byte *, const struct comp_unit_head *,
950                             unsigned int *);
951
952 static LONGEST read_offset_1 (bfd *, gdb_byte *, unsigned int);
953
954 static gdb_byte *read_n_bytes (bfd *, gdb_byte *, unsigned int);
955
956 static char *read_direct_string (bfd *, gdb_byte *, unsigned int *);
957
958 static char *read_indirect_string (bfd *, gdb_byte *,
959                                    const struct comp_unit_head *,
960                                    unsigned int *);
961
962 static unsigned long read_unsigned_leb128 (bfd *, gdb_byte *, unsigned int *);
963
964 static long read_signed_leb128 (bfd *, gdb_byte *, unsigned int *);
965
966 static gdb_byte *skip_leb128 (bfd *, gdb_byte *);
967
968 static void set_cu_language (unsigned int, struct dwarf2_cu *);
969
970 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
971                                       struct dwarf2_cu *);
972
973 static struct attribute *dwarf2_attr_no_follow (struct die_info *,
974                                                 unsigned int,
975                                                 struct dwarf2_cu *);
976
977 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
978                                struct dwarf2_cu *cu);
979
980 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
981
982 static struct die_info *die_specification (struct die_info *die,
983                                            struct dwarf2_cu **);
984
985 static void free_line_header (struct line_header *lh);
986
987 static void add_file_name (struct line_header *, char *, unsigned int,
988                            unsigned int, unsigned int);
989
990 static struct line_header *(dwarf_decode_line_header
991                             (unsigned int offset,
992                              bfd *abfd, struct dwarf2_cu *cu));
993
994 static void dwarf_decode_lines (struct line_header *, const char *, bfd *,
995                                 struct dwarf2_cu *, struct partial_symtab *);
996
997 static void dwarf2_start_subfile (char *, const char *, const char *);
998
999 static struct symbol *new_symbol (struct die_info *, struct type *,
1000                                   struct dwarf2_cu *);
1001
1002 static struct symbol *new_symbol_full (struct die_info *, struct type *,
1003                                        struct dwarf2_cu *, struct symbol *);
1004
1005 static void dwarf2_const_value (struct attribute *, struct symbol *,
1006                                 struct dwarf2_cu *);
1007
1008 static void dwarf2_const_value_attr (struct attribute *attr,
1009                                      struct type *type,
1010                                      const char *name,
1011                                      struct obstack *obstack,
1012                                      struct dwarf2_cu *cu, long *value,
1013                                      gdb_byte **bytes,
1014                                      struct dwarf2_locexpr_baton **baton);
1015
1016 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1017
1018 static int need_gnat_info (struct dwarf2_cu *);
1019
1020 static struct type *die_descriptive_type (struct die_info *,
1021                                           struct dwarf2_cu *);
1022
1023 static void set_descriptive_type (struct type *, struct die_info *,
1024                                   struct dwarf2_cu *);
1025
1026 static struct type *die_containing_type (struct die_info *,
1027                                          struct dwarf2_cu *);
1028
1029 static struct type *lookup_die_type (struct die_info *, struct attribute *,
1030                                      struct dwarf2_cu *);
1031
1032 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1033
1034 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1035
1036 static char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1037
1038 static char *typename_concat (struct obstack *obs, const char *prefix,
1039                               const char *suffix, int physname,
1040                               struct dwarf2_cu *cu);
1041
1042 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1043
1044 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1045
1046 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1047
1048 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1049
1050 static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1051                                struct dwarf2_cu *, struct partial_symtab *);
1052
1053 static int dwarf2_get_pc_bounds (struct die_info *,
1054                                  CORE_ADDR *, CORE_ADDR *, struct dwarf2_cu *,
1055                                  struct partial_symtab *);
1056
1057 static void get_scope_pc_bounds (struct die_info *,
1058                                  CORE_ADDR *, CORE_ADDR *,
1059                                  struct dwarf2_cu *);
1060
1061 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1062                                         CORE_ADDR, struct dwarf2_cu *);
1063
1064 static void dwarf2_add_field (struct field_info *, struct die_info *,
1065                               struct dwarf2_cu *);
1066
1067 static void dwarf2_attach_fields_to_type (struct field_info *,
1068                                           struct type *, struct dwarf2_cu *);
1069
1070 static void dwarf2_add_member_fn (struct field_info *,
1071                                   struct die_info *, struct type *,
1072                                   struct dwarf2_cu *);
1073
1074 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1075                                              struct type *,
1076                                              struct dwarf2_cu *);
1077
1078 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1079
1080 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1081
1082 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1083
1084 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1085
1086 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1087
1088 static struct type *read_module_type (struct die_info *die,
1089                                       struct dwarf2_cu *cu);
1090
1091 static const char *namespace_name (struct die_info *die,
1092                                    int *is_anonymous, struct dwarf2_cu *);
1093
1094 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1095
1096 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
1097
1098 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1099                                                        struct dwarf2_cu *);
1100
1101 static struct die_info *read_comp_unit (gdb_byte *, struct dwarf2_cu *);
1102
1103 static struct die_info *read_die_and_children_1 (const struct die_reader_specs *reader,
1104                                                  gdb_byte *info_ptr,
1105                                                  gdb_byte **new_info_ptr,
1106                                                  struct die_info *parent);
1107
1108 static struct die_info *read_die_and_children (const struct die_reader_specs *reader,
1109                                                gdb_byte *info_ptr,
1110                                                gdb_byte **new_info_ptr,
1111                                                struct die_info *parent);
1112
1113 static struct die_info *read_die_and_siblings (const struct die_reader_specs *reader,
1114                                                gdb_byte *info_ptr,
1115                                                gdb_byte **new_info_ptr,
1116                                                struct die_info *parent);
1117
1118 static gdb_byte *read_full_die (const struct die_reader_specs *reader,
1119                                 struct die_info **, gdb_byte *,
1120                                 int *);
1121
1122 static void process_die (struct die_info *, struct dwarf2_cu *);
1123
1124 static char *dwarf2_canonicalize_name (char *, struct dwarf2_cu *,
1125                                        struct obstack *);
1126
1127 static char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
1128
1129 static const char *dwarf2_full_name (char *name,
1130                                      struct die_info *die,
1131                                      struct dwarf2_cu *cu);
1132
1133 static struct die_info *dwarf2_extension (struct die_info *die,
1134                                           struct dwarf2_cu **);
1135
1136 static char *dwarf_tag_name (unsigned int);
1137
1138 static char *dwarf_attr_name (unsigned int);
1139
1140 static char *dwarf_form_name (unsigned int);
1141
1142 static char *dwarf_bool_name (unsigned int);
1143
1144 static char *dwarf_type_encoding_name (unsigned int);
1145
1146 #if 0
1147 static char *dwarf_cfi_name (unsigned int);
1148 #endif
1149
1150 static struct die_info *sibling_die (struct die_info *);
1151
1152 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1153
1154 static void dump_die_for_error (struct die_info *);
1155
1156 static void dump_die_1 (struct ui_file *, int level, int max_level,
1157                         struct die_info *);
1158
1159 /*static*/ void dump_die (struct die_info *, int max_level);
1160
1161 static void store_in_ref_table (struct die_info *,
1162                                 struct dwarf2_cu *);
1163
1164 static int is_ref_attr (struct attribute *);
1165
1166 static unsigned int dwarf2_get_ref_die_offset (struct attribute *);
1167
1168 static LONGEST dwarf2_get_attr_constant_value (struct attribute *, int);
1169
1170 static struct die_info *follow_die_ref_or_sig (struct die_info *,
1171                                                struct attribute *,
1172                                                struct dwarf2_cu **);
1173
1174 static struct die_info *follow_die_ref (struct die_info *,
1175                                         struct attribute *,
1176                                         struct dwarf2_cu **);
1177
1178 static struct die_info *follow_die_sig (struct die_info *,
1179                                         struct attribute *,
1180                                         struct dwarf2_cu **);
1181
1182 static void read_signatured_type_at_offset (struct objfile *objfile,
1183                                             unsigned int offset);
1184
1185 static void read_signatured_type (struct objfile *,
1186                                   struct signatured_type *type_sig);
1187
1188 /* memory allocation interface */
1189
1190 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1191
1192 static struct abbrev_info *dwarf_alloc_abbrev (struct dwarf2_cu *);
1193
1194 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
1195
1196 static void initialize_cu_func_list (struct dwarf2_cu *);
1197
1198 static void add_to_cu_func_list (const char *, CORE_ADDR, CORE_ADDR,
1199                                  struct dwarf2_cu *);
1200
1201 static void dwarf_decode_macros (struct line_header *, unsigned int,
1202                                  char *, bfd *, struct dwarf2_cu *);
1203
1204 static int attr_form_is_block (struct attribute *);
1205
1206 static int attr_form_is_section_offset (struct attribute *);
1207
1208 static int attr_form_is_constant (struct attribute *);
1209
1210 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1211                                    struct dwarf2_loclist_baton *baton,
1212                                    struct attribute *attr);
1213
1214 static void dwarf2_symbol_mark_computed (struct attribute *attr,
1215                                          struct symbol *sym,
1216                                          struct dwarf2_cu *cu);
1217
1218 static gdb_byte *skip_one_die (gdb_byte *buffer, gdb_byte *info_ptr,
1219                                struct abbrev_info *abbrev,
1220                                struct dwarf2_cu *cu);
1221
1222 static void free_stack_comp_unit (void *);
1223
1224 static hashval_t partial_die_hash (const void *item);
1225
1226 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1227
1228 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1229   (unsigned int offset, struct objfile *objfile);
1230
1231 static struct dwarf2_per_cu_data *dwarf2_find_comp_unit
1232   (unsigned int offset, struct objfile *objfile);
1233
1234 static void init_one_comp_unit (struct dwarf2_cu *cu,
1235                                 struct objfile *objfile);
1236
1237 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
1238                                    struct die_info *comp_unit_die);
1239
1240 static void free_one_comp_unit (void *);
1241
1242 static void free_cached_comp_units (void *);
1243
1244 static void age_cached_comp_units (void);
1245
1246 static void free_one_cached_comp_unit (void *);
1247
1248 static struct type *set_die_type (struct die_info *, struct type *,
1249                                   struct dwarf2_cu *);
1250
1251 static void create_all_comp_units (struct objfile *);
1252
1253 static int create_debug_types_hash_table (struct objfile *objfile);
1254
1255 static void load_full_comp_unit (struct dwarf2_per_cu_data *,
1256                                  struct objfile *);
1257
1258 static void process_full_comp_unit (struct dwarf2_per_cu_data *);
1259
1260 static void dwarf2_add_dependence (struct dwarf2_cu *,
1261                                    struct dwarf2_per_cu_data *);
1262
1263 static void dwarf2_mark (struct dwarf2_cu *);
1264
1265 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1266
1267 static struct type *get_die_type_at_offset (unsigned int,
1268                                             struct dwarf2_per_cu_data *per_cu);
1269
1270 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
1271
1272 static void dwarf2_release_queue (void *dummy);
1273
1274 static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1275                              struct objfile *objfile);
1276
1277 static void process_queue (struct objfile *objfile);
1278
1279 static void find_file_and_directory (struct die_info *die,
1280                                      struct dwarf2_cu *cu,
1281                                      char **name, char **comp_dir);
1282
1283 static char *file_full_name (int file, struct line_header *lh,
1284                              const char *comp_dir);
1285
1286 static gdb_byte *partial_read_comp_unit_head (struct comp_unit_head *header,
1287                                               gdb_byte *info_ptr,
1288                                               gdb_byte *buffer,
1289                                               unsigned int buffer_size,
1290                                               bfd *abfd);
1291
1292 static void init_cu_die_reader (struct die_reader_specs *reader,
1293                                 struct dwarf2_cu *cu);
1294
1295 static htab_t allocate_signatured_type_table (struct objfile *objfile);
1296
1297 #if WORDS_BIGENDIAN
1298
1299 /* Convert VALUE between big- and little-endian.  */
1300 static offset_type
1301 byte_swap (offset_type value)
1302 {
1303   offset_type result;
1304
1305   result = (value & 0xff) << 24;
1306   result |= (value & 0xff00) << 8;
1307   result |= (value & 0xff0000) >> 8;
1308   result |= (value & 0xff000000) >> 24;
1309   return result;
1310 }
1311
1312 #define MAYBE_SWAP(V)  byte_swap (V)
1313
1314 #else
1315 #define MAYBE_SWAP(V) (V)
1316 #endif /* WORDS_BIGENDIAN */
1317
1318 /* The suffix for an index file.  */
1319 #define INDEX_SUFFIX ".gdb-index"
1320
1321 static const char *dwarf2_physname (char *name, struct die_info *die,
1322                                     struct dwarf2_cu *cu);
1323
1324 /* Try to locate the sections we need for DWARF 2 debugging
1325    information and return true if we have enough to do something.  */
1326
1327 int
1328 dwarf2_has_info (struct objfile *objfile)
1329 {
1330   dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
1331   if (!dwarf2_per_objfile)
1332     {
1333       /* Initialize per-objfile state.  */
1334       struct dwarf2_per_objfile *data
1335         = obstack_alloc (&objfile->objfile_obstack, sizeof (*data));
1336
1337       memset (data, 0, sizeof (*data));
1338       set_objfile_data (objfile, dwarf2_objfile_data_key, data);
1339       dwarf2_per_objfile = data;
1340
1341       bfd_map_over_sections (objfile->obfd, dwarf2_locate_sections, NULL);
1342       dwarf2_per_objfile->objfile = objfile;
1343     }
1344   return (dwarf2_per_objfile->info.asection != NULL
1345           && dwarf2_per_objfile->abbrev.asection != NULL);
1346 }
1347
1348 /* When loading sections, we can either look for ".<name>", or for
1349  * ".z<name>", which indicates a compressed section.  */
1350
1351 static int
1352 section_is_p (const char *section_name, const char *name)
1353 {
1354   return (section_name[0] == '.'
1355           && (strcmp (section_name + 1, name) == 0
1356               || (section_name[1] == 'z'
1357                   && strcmp (section_name + 2, name) == 0)));
1358 }
1359
1360 /* This function is mapped across the sections and remembers the
1361    offset and size of each of the debugging sections we are interested
1362    in.  */
1363
1364 static void
1365 dwarf2_locate_sections (bfd *abfd, asection *sectp, void *ignore_ptr)
1366 {
1367   if (section_is_p (sectp->name, INFO_SECTION))
1368     {
1369       dwarf2_per_objfile->info.asection = sectp;
1370       dwarf2_per_objfile->info.size = bfd_get_section_size (sectp);
1371     }
1372   else if (section_is_p (sectp->name, ABBREV_SECTION))
1373     {
1374       dwarf2_per_objfile->abbrev.asection = sectp;
1375       dwarf2_per_objfile->abbrev.size = bfd_get_section_size (sectp);
1376     }
1377   else if (section_is_p (sectp->name, LINE_SECTION))
1378     {
1379       dwarf2_per_objfile->line.asection = sectp;
1380       dwarf2_per_objfile->line.size = bfd_get_section_size (sectp);
1381     }
1382   else if (section_is_p (sectp->name, LOC_SECTION))
1383     {
1384       dwarf2_per_objfile->loc.asection = sectp;
1385       dwarf2_per_objfile->loc.size = bfd_get_section_size (sectp);
1386     }
1387   else if (section_is_p (sectp->name, MACINFO_SECTION))
1388     {
1389       dwarf2_per_objfile->macinfo.asection = sectp;
1390       dwarf2_per_objfile->macinfo.size = bfd_get_section_size (sectp);
1391     }
1392   else if (section_is_p (sectp->name, STR_SECTION))
1393     {
1394       dwarf2_per_objfile->str.asection = sectp;
1395       dwarf2_per_objfile->str.size = bfd_get_section_size (sectp);
1396     }
1397   else if (section_is_p (sectp->name, FRAME_SECTION))
1398     {
1399       dwarf2_per_objfile->frame.asection = sectp;
1400       dwarf2_per_objfile->frame.size = bfd_get_section_size (sectp);
1401     }
1402   else if (section_is_p (sectp->name, EH_FRAME_SECTION))
1403     {
1404       flagword aflag = bfd_get_section_flags (ignore_abfd, sectp);
1405
1406       if (aflag & SEC_HAS_CONTENTS)
1407         {
1408           dwarf2_per_objfile->eh_frame.asection = sectp;
1409           dwarf2_per_objfile->eh_frame.size = bfd_get_section_size (sectp);
1410         }
1411     }
1412   else if (section_is_p (sectp->name, RANGES_SECTION))
1413     {
1414       dwarf2_per_objfile->ranges.asection = sectp;
1415       dwarf2_per_objfile->ranges.size = bfd_get_section_size (sectp);
1416     }
1417   else if (section_is_p (sectp->name, TYPES_SECTION))
1418     {
1419       dwarf2_per_objfile->types.asection = sectp;
1420       dwarf2_per_objfile->types.size = bfd_get_section_size (sectp);
1421     }
1422   else if (section_is_p (sectp->name, GDB_INDEX_SECTION))
1423     {
1424       dwarf2_per_objfile->gdb_index.asection = sectp;
1425       dwarf2_per_objfile->gdb_index.size = bfd_get_section_size (sectp);
1426     }
1427
1428   if ((bfd_get_section_flags (abfd, sectp) & SEC_LOAD)
1429       && bfd_section_vma (abfd, sectp) == 0)
1430     dwarf2_per_objfile->has_section_at_zero = 1;
1431 }
1432
1433 /* Decompress a section that was compressed using zlib.  Store the
1434    decompressed buffer, and its size, in OUTBUF and OUTSIZE.  */
1435
1436 static void
1437 zlib_decompress_section (struct objfile *objfile, asection *sectp,
1438                          gdb_byte **outbuf, bfd_size_type *outsize)
1439 {
1440   bfd *abfd = objfile->obfd;
1441 #ifndef HAVE_ZLIB_H
1442   error (_("Support for zlib-compressed DWARF data (from '%s') "
1443            "is disabled in this copy of GDB"),
1444          bfd_get_filename (abfd));
1445 #else
1446   bfd_size_type compressed_size = bfd_get_section_size (sectp);
1447   gdb_byte *compressed_buffer = xmalloc (compressed_size);
1448   struct cleanup *cleanup = make_cleanup (xfree, compressed_buffer);
1449   bfd_size_type uncompressed_size;
1450   gdb_byte *uncompressed_buffer;
1451   z_stream strm;
1452   int rc;
1453   int header_size = 12;
1454
1455   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
1456       || bfd_bread (compressed_buffer,
1457                     compressed_size, abfd) != compressed_size)
1458     error (_("Dwarf Error: Can't read DWARF data from '%s'"),
1459            bfd_get_filename (abfd));
1460
1461   /* Read the zlib header.  In this case, it should be "ZLIB" followed
1462      by the uncompressed section size, 8 bytes in big-endian order.  */
1463   if (compressed_size < header_size
1464       || strncmp (compressed_buffer, "ZLIB", 4) != 0)
1465     error (_("Dwarf Error: Corrupt DWARF ZLIB header from '%s'"),
1466            bfd_get_filename (abfd));
1467   uncompressed_size = compressed_buffer[4]; uncompressed_size <<= 8;
1468   uncompressed_size += compressed_buffer[5]; uncompressed_size <<= 8;
1469   uncompressed_size += compressed_buffer[6]; uncompressed_size <<= 8;
1470   uncompressed_size += compressed_buffer[7]; uncompressed_size <<= 8;
1471   uncompressed_size += compressed_buffer[8]; uncompressed_size <<= 8;
1472   uncompressed_size += compressed_buffer[9]; uncompressed_size <<= 8;
1473   uncompressed_size += compressed_buffer[10]; uncompressed_size <<= 8;
1474   uncompressed_size += compressed_buffer[11];
1475
1476   /* It is possible the section consists of several compressed
1477      buffers concatenated together, so we uncompress in a loop.  */
1478   strm.zalloc = NULL;
1479   strm.zfree = NULL;
1480   strm.opaque = NULL;
1481   strm.avail_in = compressed_size - header_size;
1482   strm.next_in = (Bytef*) compressed_buffer + header_size;
1483   strm.avail_out = uncompressed_size;
1484   uncompressed_buffer = obstack_alloc (&objfile->objfile_obstack,
1485                                        uncompressed_size);
1486   rc = inflateInit (&strm);
1487   while (strm.avail_in > 0)
1488     {
1489       if (rc != Z_OK)
1490         error (_("Dwarf Error: setting up DWARF uncompression in '%s': %d"),
1491                bfd_get_filename (abfd), rc);
1492       strm.next_out = ((Bytef*) uncompressed_buffer
1493                        + (uncompressed_size - strm.avail_out));
1494       rc = inflate (&strm, Z_FINISH);
1495       if (rc != Z_STREAM_END)
1496         error (_("Dwarf Error: zlib error uncompressing from '%s': %d"),
1497                bfd_get_filename (abfd), rc);
1498       rc = inflateReset (&strm);
1499     }
1500   rc = inflateEnd (&strm);
1501   if (rc != Z_OK
1502       || strm.avail_out != 0)
1503     error (_("Dwarf Error: concluding DWARF uncompression in '%s': %d"),
1504            bfd_get_filename (abfd), rc);
1505
1506   do_cleanups (cleanup);
1507   *outbuf = uncompressed_buffer;
1508   *outsize = uncompressed_size;
1509 #endif
1510 }
1511
1512 /* A helper function that decides whether a section is empty.  */
1513
1514 static int
1515 dwarf2_section_empty_p (struct dwarf2_section_info *info)
1516 {
1517   return info->asection == NULL || info->size == 0;
1518 }
1519
1520 /* Read the contents of the section SECTP from object file specified by
1521    OBJFILE, store info about the section into INFO.
1522    If the section is compressed, uncompress it before returning.  */
1523
1524 static void
1525 dwarf2_read_section (struct objfile *objfile, struct dwarf2_section_info *info)
1526 {
1527   bfd *abfd = objfile->obfd;
1528   asection *sectp = info->asection;
1529   gdb_byte *buf, *retbuf;
1530   unsigned char header[4];
1531
1532   if (info->readin)
1533     return;
1534   info->buffer = NULL;
1535   info->was_mmapped = 0;
1536   info->readin = 1;
1537
1538   if (dwarf2_section_empty_p (info))
1539     return;
1540
1541   /* Check if the file has a 4-byte header indicating compression.  */
1542   if (info->size > sizeof (header)
1543       && bfd_seek (abfd, sectp->filepos, SEEK_SET) == 0
1544       && bfd_bread (header, sizeof (header), abfd) == sizeof (header))
1545     {
1546       /* Upon decompression, update the buffer and its size.  */
1547       if (strncmp (header, "ZLIB", sizeof (header)) == 0)
1548         {
1549           zlib_decompress_section (objfile, sectp, &info->buffer,
1550                                    &info->size);
1551           return;
1552         }
1553     }
1554
1555 #ifdef HAVE_MMAP
1556   if (pagesize == 0)
1557     pagesize = getpagesize ();
1558
1559   /* Only try to mmap sections which are large enough: we don't want to
1560      waste space due to fragmentation.  Also, only try mmap for sections
1561      without relocations.  */
1562
1563   if (info->size > 4 * pagesize && (sectp->flags & SEC_RELOC) == 0)
1564     {
1565       off_t pg_offset = sectp->filepos & ~(pagesize - 1);
1566       size_t map_length = info->size + sectp->filepos - pg_offset;
1567       caddr_t retbuf = bfd_mmap (abfd, 0, map_length, PROT_READ,
1568                                  MAP_PRIVATE, pg_offset);
1569
1570       if (retbuf != MAP_FAILED)
1571         {
1572           info->was_mmapped = 1;
1573           info->buffer = retbuf + (sectp->filepos & (pagesize - 1)) ;
1574 #if HAVE_POSIX_MADVISE
1575           posix_madvise (retbuf, map_length, POSIX_MADV_WILLNEED);
1576 #endif
1577           return;
1578         }
1579     }
1580 #endif
1581
1582   /* If we get here, we are a normal, not-compressed section.  */
1583   info->buffer = buf
1584     = obstack_alloc (&objfile->objfile_obstack, info->size);
1585
1586   /* When debugging .o files, we may need to apply relocations; see
1587      http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
1588      We never compress sections in .o files, so we only need to
1589      try this when the section is not compressed.  */
1590   retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
1591   if (retbuf != NULL)
1592     {
1593       info->buffer = retbuf;
1594       return;
1595     }
1596
1597   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
1598       || bfd_bread (buf, info->size, abfd) != info->size)
1599     error (_("Dwarf Error: Can't read DWARF data from '%s'"),
1600            bfd_get_filename (abfd));
1601 }
1602
1603 /* A helper function that returns the size of a section in a safe way.
1604    If you are positive that the section has been read before using the
1605    size, then it is safe to refer to the dwarf2_section_info object's
1606    "size" field directly.  In other cases, you must call this
1607    function, because for compressed sections the size field is not set
1608    correctly until the section has been read.  */
1609
1610 static bfd_size_type
1611 dwarf2_section_size (struct objfile *objfile,
1612                      struct dwarf2_section_info *info)
1613 {
1614   if (!info->readin)
1615     dwarf2_read_section (objfile, info);
1616   return info->size;
1617 }
1618
1619 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
1620    SECTION_NAME.  */
1621
1622 void
1623 dwarf2_get_section_info (struct objfile *objfile, const char *section_name,
1624                          asection **sectp, gdb_byte **bufp,
1625                          bfd_size_type *sizep)
1626 {
1627   struct dwarf2_per_objfile *data
1628     = objfile_data (objfile, dwarf2_objfile_data_key);
1629   struct dwarf2_section_info *info;
1630
1631   /* We may see an objfile without any DWARF, in which case we just
1632      return nothing.  */
1633   if (data == NULL)
1634     {
1635       *sectp = NULL;
1636       *bufp = NULL;
1637       *sizep = 0;
1638       return;
1639     }
1640   if (section_is_p (section_name, EH_FRAME_SECTION))
1641     info = &data->eh_frame;
1642   else if (section_is_p (section_name, FRAME_SECTION))
1643     info = &data->frame;
1644   else
1645     gdb_assert_not_reached ("unexpected section");
1646
1647   dwarf2_read_section (objfile, info);
1648
1649   *sectp = info->asection;
1650   *bufp = info->buffer;
1651   *sizep = info->size;
1652 }
1653
1654 \f
1655 /* DWARF quick_symbols_functions support.  */
1656
1657 /* TUs can share .debug_line entries, and there can be a lot more TUs than
1658    unique line tables, so we maintain a separate table of all .debug_line
1659    derived entries to support the sharing.
1660    All the quick functions need is the list of file names.  We discard the
1661    line_header when we're done and don't need to record it here.  */
1662 struct quick_file_names
1663 {
1664   /* The offset in .debug_line of the line table.  We hash on this.  */
1665   unsigned int offset;
1666
1667   /* The number of entries in file_names, real_names.  */
1668   unsigned int num_file_names;
1669
1670   /* The file names from the line table, after being run through
1671      file_full_name.  */
1672   const char **file_names;
1673
1674   /* The file names from the line table after being run through
1675      gdb_realpath.  These are computed lazily.  */
1676   const char **real_names;
1677 };
1678
1679 /* When using the index (and thus not using psymtabs), each CU has an
1680    object of this type.  This is used to hold information needed by
1681    the various "quick" methods.  */
1682 struct dwarf2_per_cu_quick_data
1683 {
1684   /* The file table.  This can be NULL if there was no file table
1685      or it's currently not read in.
1686      NOTE: This points into dwarf2_per_objfile->quick_file_names_table.  */
1687   struct quick_file_names *file_names;
1688
1689   /* The corresponding symbol table.  This is NULL if symbols for this
1690      CU have not yet been read.  */
1691   struct symtab *symtab;
1692
1693   /* A temporary mark bit used when iterating over all CUs in
1694      expand_symtabs_matching.  */
1695   unsigned int mark : 1;
1696
1697   /* True if we've tried to read the file table and found there isn't one.
1698      There will be no point in trying to read it again next time.  */
1699   unsigned int no_file_data : 1;
1700 };
1701
1702 /* Hash function for a quick_file_names.  */
1703
1704 static hashval_t
1705 hash_file_name_entry (const void *e)
1706 {
1707   const struct quick_file_names *file_data = e;
1708
1709   return file_data->offset;
1710 }
1711
1712 /* Equality function for a quick_file_names.  */
1713
1714 static int
1715 eq_file_name_entry (const void *a, const void *b)
1716 {
1717   const struct quick_file_names *ea = a;
1718   const struct quick_file_names *eb = b;
1719
1720   return ea->offset == eb->offset;
1721 }
1722
1723 /* Delete function for a quick_file_names.  */
1724
1725 static void
1726 delete_file_name_entry (void *e)
1727 {
1728   struct quick_file_names *file_data = e;
1729   int i;
1730
1731   for (i = 0; i < file_data->num_file_names; ++i)
1732     {
1733       xfree ((void*) file_data->file_names[i]);
1734       if (file_data->real_names)
1735         xfree ((void*) file_data->real_names[i]);
1736     }
1737
1738   /* The space for the struct itself lives on objfile_obstack,
1739      so we don't free it here.  */
1740 }
1741
1742 /* Create a quick_file_names hash table.  */
1743
1744 static htab_t
1745 create_quick_file_names_table (unsigned int nr_initial_entries)
1746 {
1747   return htab_create_alloc (nr_initial_entries,
1748                             hash_file_name_entry, eq_file_name_entry,
1749                             delete_file_name_entry, xcalloc, xfree);
1750 }
1751
1752 /* Read in the symbols for PER_CU.  OBJFILE is the objfile from which
1753    this CU came.  */
1754
1755 static void
1756 dw2_do_instantiate_symtab (struct objfile *objfile,
1757                            struct dwarf2_per_cu_data *per_cu)
1758 {
1759   struct cleanup *back_to;
1760
1761   back_to = make_cleanup (dwarf2_release_queue, NULL);
1762
1763   queue_comp_unit (per_cu, objfile);
1764
1765   if (per_cu->from_debug_types)
1766     read_signatured_type_at_offset (objfile, per_cu->offset);
1767   else
1768     load_full_comp_unit (per_cu, objfile);
1769
1770   process_queue (objfile);
1771
1772   /* Age the cache, releasing compilation units that have not
1773      been used recently.  */
1774   age_cached_comp_units ();
1775
1776   do_cleanups (back_to);
1777 }
1778
1779 /* Ensure that the symbols for PER_CU have been read in.  OBJFILE is
1780    the objfile from which this CU came.  Returns the resulting symbol
1781    table.  */
1782
1783 static struct symtab *
1784 dw2_instantiate_symtab (struct objfile *objfile,
1785                         struct dwarf2_per_cu_data *per_cu)
1786 {
1787   if (!per_cu->v.quick->symtab)
1788     {
1789       struct cleanup *back_to = make_cleanup (free_cached_comp_units, NULL);
1790       increment_reading_symtab ();
1791       dw2_do_instantiate_symtab (objfile, per_cu);
1792       do_cleanups (back_to);
1793     }
1794   return per_cu->v.quick->symtab;
1795 }
1796
1797 /* Return the CU given its index.  */
1798
1799 static struct dwarf2_per_cu_data *
1800 dw2_get_cu (int index)
1801 {
1802   if (index >= dwarf2_per_objfile->n_comp_units)
1803     {
1804       index -= dwarf2_per_objfile->n_comp_units;
1805       return dwarf2_per_objfile->type_comp_units[index];
1806     }
1807   return dwarf2_per_objfile->all_comp_units[index];
1808 }
1809
1810 /* A helper function that knows how to read a 64-bit value in a way
1811    that doesn't make gdb die.  Returns 1 if the conversion went ok, 0
1812    otherwise.  */
1813
1814 static int
1815 extract_cu_value (const char *bytes, ULONGEST *result)
1816 {
1817   if (sizeof (ULONGEST) < 8)
1818     {
1819       int i;
1820
1821       /* Ignore the upper 4 bytes if they are all zero.  */
1822       for (i = 0; i < 4; ++i)
1823         if (bytes[i + 4] != 0)
1824           return 0;
1825
1826       *result = extract_unsigned_integer (bytes, 4, BFD_ENDIAN_LITTLE);
1827     }
1828   else
1829     *result = extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
1830   return 1;
1831 }
1832
1833 /* Read the CU list from the mapped index, and use it to create all
1834    the CU objects for this objfile.  Return 0 if something went wrong,
1835    1 if everything went ok.  */
1836
1837 static int
1838 create_cus_from_index (struct objfile *objfile, const gdb_byte *cu_list,
1839                        offset_type cu_list_elements)
1840 {
1841   offset_type i;
1842
1843   dwarf2_per_objfile->n_comp_units = cu_list_elements / 2;
1844   dwarf2_per_objfile->all_comp_units
1845     = obstack_alloc (&objfile->objfile_obstack,
1846                      dwarf2_per_objfile->n_comp_units
1847                      * sizeof (struct dwarf2_per_cu_data *));
1848
1849   for (i = 0; i < cu_list_elements; i += 2)
1850     {
1851       struct dwarf2_per_cu_data *the_cu;
1852       ULONGEST offset, length;
1853
1854       if (!extract_cu_value (cu_list, &offset)
1855           || !extract_cu_value (cu_list + 8, &length))
1856         return 0;
1857       cu_list += 2 * 8;
1858
1859       the_cu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
1860                                struct dwarf2_per_cu_data);
1861       the_cu->offset = offset;
1862       the_cu->length = length;
1863       the_cu->objfile = objfile;
1864       the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
1865                                         struct dwarf2_per_cu_quick_data);
1866       dwarf2_per_objfile->all_comp_units[i / 2] = the_cu;
1867     }
1868
1869   return 1;
1870 }
1871
1872 /* Create the signatured type hash table from the index.  */
1873
1874 static int
1875 create_signatured_type_table_from_index (struct objfile *objfile,
1876                                          const gdb_byte *bytes,
1877                                          offset_type elements)
1878 {
1879   offset_type i;
1880   htab_t sig_types_hash;
1881
1882   dwarf2_per_objfile->n_type_comp_units = elements / 3;
1883   dwarf2_per_objfile->type_comp_units
1884     = obstack_alloc (&objfile->objfile_obstack,
1885                      dwarf2_per_objfile->n_type_comp_units
1886                      * sizeof (struct dwarf2_per_cu_data *));
1887
1888   sig_types_hash = allocate_signatured_type_table (objfile);
1889
1890   for (i = 0; i < elements; i += 3)
1891     {
1892       struct signatured_type *type_sig;
1893       ULONGEST offset, type_offset, signature;
1894       void **slot;
1895
1896       if (!extract_cu_value (bytes, &offset)
1897           || !extract_cu_value (bytes + 8, &type_offset))
1898         return 0;
1899       signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
1900       bytes += 3 * 8;
1901
1902       type_sig = OBSTACK_ZALLOC (&objfile->objfile_obstack,
1903                                  struct signatured_type);
1904       type_sig->signature = signature;
1905       type_sig->offset = offset;
1906       type_sig->type_offset = type_offset;
1907       type_sig->per_cu.from_debug_types = 1;
1908       type_sig->per_cu.offset = offset;
1909       type_sig->per_cu.objfile = objfile;
1910       type_sig->per_cu.v.quick
1911         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
1912                           struct dwarf2_per_cu_quick_data);
1913
1914       slot = htab_find_slot (sig_types_hash, type_sig, INSERT);
1915       *slot = type_sig;
1916
1917       dwarf2_per_objfile->type_comp_units[i / 3] = &type_sig->per_cu;
1918     }
1919
1920   dwarf2_per_objfile->signatured_types = sig_types_hash;
1921
1922   return 1;
1923 }
1924
1925 /* Read the address map data from the mapped index, and use it to
1926    populate the objfile's psymtabs_addrmap.  */
1927
1928 static void
1929 create_addrmap_from_index (struct objfile *objfile, struct mapped_index *index)
1930 {
1931   const gdb_byte *iter, *end;
1932   struct obstack temp_obstack;
1933   struct addrmap *mutable_map;
1934   struct cleanup *cleanup;
1935   CORE_ADDR baseaddr;
1936
1937   obstack_init (&temp_obstack);
1938   cleanup = make_cleanup_obstack_free (&temp_obstack);
1939   mutable_map = addrmap_create_mutable (&temp_obstack);
1940
1941   iter = index->address_table;
1942   end = iter + index->address_table_size;
1943
1944   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
1945
1946   while (iter < end)
1947     {
1948       ULONGEST hi, lo, cu_index;
1949       lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
1950       iter += 8;
1951       hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
1952       iter += 8;
1953       cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
1954       iter += 4;
1955       
1956       addrmap_set_empty (mutable_map, lo + baseaddr, hi + baseaddr - 1,
1957                          dw2_get_cu (cu_index));
1958     }
1959
1960   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
1961                                                     &objfile->objfile_obstack);
1962   do_cleanups (cleanup);
1963 }
1964
1965 /* The hash function for strings in the mapped index.  This is the
1966    same as the hashtab.c hash function, but we keep a separate copy to
1967    maintain control over the implementation.  This is necessary
1968    because the hash function is tied to the format of the mapped index
1969    file.  */
1970
1971 static hashval_t
1972 mapped_index_string_hash (const void *p)
1973 {
1974   const unsigned char *str = (const unsigned char *) p;
1975   hashval_t r = 0;
1976   unsigned char c;
1977
1978   while ((c = *str++) != 0)
1979     r = r * 67 + c - 113;
1980
1981   return r;
1982 }
1983
1984 /* Find a slot in the mapped index INDEX for the object named NAME.
1985    If NAME is found, set *VEC_OUT to point to the CU vector in the
1986    constant pool and return 1.  If NAME cannot be found, return 0.  */
1987
1988 static int
1989 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
1990                           offset_type **vec_out)
1991 {
1992   offset_type hash = mapped_index_string_hash (name);
1993   offset_type slot, step;
1994
1995   slot = hash & (index->symbol_table_slots - 1);
1996   step = ((hash * 17) & (index->symbol_table_slots - 1)) | 1;
1997
1998   for (;;)
1999     {
2000       /* Convert a slot number to an offset into the table.  */
2001       offset_type i = 2 * slot;
2002       const char *str;
2003       if (index->symbol_table[i] == 0 && index->symbol_table[i + 1] == 0)
2004         return 0;
2005
2006       str = index->constant_pool + MAYBE_SWAP (index->symbol_table[i]);
2007       if (!strcmp (name, str))
2008         {
2009           *vec_out = (offset_type *) (index->constant_pool
2010                                       + MAYBE_SWAP (index->symbol_table[i + 1]));
2011           return 1;
2012         }
2013
2014       slot = (slot + step) & (index->symbol_table_slots - 1);
2015     }
2016 }
2017
2018 /* Read the index file.  If everything went ok, initialize the "quick"
2019    elements of all the CUs and return 1.  Otherwise, return 0.  */
2020
2021 static int
2022 dwarf2_read_index (struct objfile *objfile)
2023 {
2024   char *addr;
2025   struct mapped_index *map;
2026   offset_type *metadata;
2027   const gdb_byte *cu_list;
2028   const gdb_byte *types_list = NULL;
2029   offset_type version, cu_list_elements;
2030   offset_type types_list_elements = 0;
2031   int i;
2032
2033   if (dwarf2_section_empty_p (&dwarf2_per_objfile->gdb_index))
2034     return 0;
2035
2036   /* Older elfutils strip versions could keep the section in the main
2037      executable while splitting it for the separate debug info file.  */
2038   if ((bfd_get_file_flags (dwarf2_per_objfile->gdb_index.asection)
2039        & SEC_HAS_CONTENTS) == 0)
2040     return 0;
2041
2042   dwarf2_read_section (objfile, &dwarf2_per_objfile->gdb_index);
2043
2044   addr = dwarf2_per_objfile->gdb_index.buffer;
2045   /* Version check.  */
2046   version = MAYBE_SWAP (*(offset_type *) addr);
2047   /* Versions earlier than 3 emitted every copy of a psymbol.  This
2048      causes the index to behave very poorly for certain requests.  Version 4
2049      contained incomplete addrmap.  So, it seems better to just ignore such
2050      indices.  */
2051   if (version < 4)
2052     return 0;
2053   /* Indexes with higher version than the one supported by GDB may be no
2054      longer backward compatible.  */
2055   if (version > 4)
2056     return 0;
2057
2058   map = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct mapped_index);
2059   map->total_size = dwarf2_per_objfile->gdb_index.size;
2060
2061   metadata = (offset_type *) (addr + sizeof (offset_type));
2062
2063   i = 0;
2064   cu_list = addr + MAYBE_SWAP (metadata[i]);
2065   cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
2066                       / 8);
2067   ++i;
2068
2069   types_list = addr + MAYBE_SWAP (metadata[i]);
2070   types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
2071                           - MAYBE_SWAP (metadata[i]))
2072                          / 8);
2073   ++i;
2074
2075   map->address_table = addr + MAYBE_SWAP (metadata[i]);
2076   map->address_table_size = (MAYBE_SWAP (metadata[i + 1])
2077                              - MAYBE_SWAP (metadata[i]));
2078   ++i;
2079
2080   map->symbol_table = (offset_type *) (addr + MAYBE_SWAP (metadata[i]));
2081   map->symbol_table_slots = ((MAYBE_SWAP (metadata[i + 1])
2082                               - MAYBE_SWAP (metadata[i]))
2083                              / (2 * sizeof (offset_type)));
2084   ++i;
2085
2086   map->constant_pool = addr + MAYBE_SWAP (metadata[i]);
2087
2088   if (!create_cus_from_index (objfile, cu_list, cu_list_elements))
2089     return 0;
2090
2091   if (types_list_elements
2092       && !create_signatured_type_table_from_index (objfile, types_list,
2093                                                    types_list_elements))
2094     return 0;
2095
2096   create_addrmap_from_index (objfile, map);
2097
2098   dwarf2_per_objfile->index_table = map;
2099   dwarf2_per_objfile->using_index = 1;
2100   dwarf2_per_objfile->quick_file_names_table =
2101     create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
2102
2103   return 1;
2104 }
2105
2106 /* A helper for the "quick" functions which sets the global
2107    dwarf2_per_objfile according to OBJFILE.  */
2108
2109 static void
2110 dw2_setup (struct objfile *objfile)
2111 {
2112   dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
2113   gdb_assert (dwarf2_per_objfile);
2114 }
2115
2116 /* A helper for the "quick" functions which attempts to read the line
2117    table for THIS_CU.  */
2118
2119 static struct quick_file_names *
2120 dw2_get_file_names (struct objfile *objfile,
2121                     struct dwarf2_per_cu_data *this_cu)
2122 {
2123   bfd *abfd = objfile->obfd;
2124   struct line_header *lh;
2125   struct attribute *attr;
2126   struct cleanup *cleanups;
2127   struct die_info *comp_unit_die;
2128   struct dwarf2_section_info* sec;
2129   gdb_byte *beg_of_comp_unit, *info_ptr, *buffer;
2130   int has_children, i;
2131   struct dwarf2_cu cu;
2132   unsigned int bytes_read, buffer_size;
2133   struct die_reader_specs reader_specs;
2134   char *name, *comp_dir;
2135   void **slot;
2136   struct quick_file_names *qfn;
2137   unsigned int line_offset;
2138
2139   if (this_cu->v.quick->file_names != NULL)
2140     return this_cu->v.quick->file_names;
2141   /* If we know there is no line data, no point in looking again.  */
2142   if (this_cu->v.quick->no_file_data)
2143     return NULL;
2144
2145   init_one_comp_unit (&cu, objfile);
2146   cleanups = make_cleanup (free_stack_comp_unit, &cu);
2147
2148   if (this_cu->from_debug_types)
2149     sec = &dwarf2_per_objfile->types;
2150   else
2151     sec = &dwarf2_per_objfile->info;
2152   dwarf2_read_section (objfile, sec);
2153   buffer_size = sec->size;
2154   buffer = sec->buffer;
2155   info_ptr = buffer + this_cu->offset;
2156   beg_of_comp_unit = info_ptr;
2157
2158   info_ptr = partial_read_comp_unit_head (&cu.header, info_ptr,
2159                                           buffer, buffer_size,
2160                                           abfd);
2161
2162   /* Complete the cu_header.  */
2163   cu.header.offset = beg_of_comp_unit - buffer;
2164   cu.header.first_die_offset = info_ptr - beg_of_comp_unit;
2165
2166   this_cu->cu = &cu;
2167   cu.per_cu = this_cu;
2168
2169   dwarf2_read_abbrevs (abfd, &cu);
2170   make_cleanup (dwarf2_free_abbrev_table, &cu);
2171
2172   if (this_cu->from_debug_types)
2173     info_ptr += 8 /*signature*/ + cu.header.offset_size;
2174   init_cu_die_reader (&reader_specs, &cu);
2175   read_full_die (&reader_specs, &comp_unit_die, info_ptr,
2176                  &has_children);
2177
2178   lh = NULL;
2179   slot = NULL;
2180   line_offset = 0;
2181   attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, &cu);
2182   if (attr)
2183     {
2184       struct quick_file_names find_entry;
2185
2186       line_offset = DW_UNSND (attr);
2187
2188       /* We may have already read in this line header (TU line header sharing).
2189          If we have we're done.  */
2190       find_entry.offset = line_offset;
2191       slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
2192                              &find_entry, INSERT);
2193       if (*slot != NULL)
2194         {
2195           do_cleanups (cleanups);
2196           this_cu->v.quick->file_names = *slot;
2197           return *slot;
2198         }
2199
2200       lh = dwarf_decode_line_header (line_offset, abfd, &cu);
2201     }
2202   if (lh == NULL)
2203     {
2204       do_cleanups (cleanups);
2205       this_cu->v.quick->no_file_data = 1;
2206       return NULL;
2207     }
2208
2209   qfn = obstack_alloc (&objfile->objfile_obstack, sizeof (*qfn));
2210   qfn->offset = line_offset;
2211   gdb_assert (slot != NULL);
2212   *slot = qfn;
2213
2214   find_file_and_directory (comp_unit_die, &cu, &name, &comp_dir);
2215
2216   qfn->num_file_names = lh->num_file_names;
2217   qfn->file_names = obstack_alloc (&objfile->objfile_obstack,
2218                                    lh->num_file_names * sizeof (char *));
2219   for (i = 0; i < lh->num_file_names; ++i)
2220     qfn->file_names[i] = file_full_name (i + 1, lh, comp_dir);
2221   qfn->real_names = NULL;
2222
2223   free_line_header (lh);
2224   do_cleanups (cleanups);
2225
2226   this_cu->v.quick->file_names = qfn;
2227   return qfn;
2228 }
2229
2230 /* A helper for the "quick" functions which computes and caches the
2231    real path for a given file name from the line table.  */
2232
2233 static const char *
2234 dw2_get_real_path (struct objfile *objfile,
2235                    struct quick_file_names *qfn, int index)
2236 {
2237   if (qfn->real_names == NULL)
2238     qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
2239                                       qfn->num_file_names, sizeof (char *));
2240
2241   if (qfn->real_names[index] == NULL)
2242     qfn->real_names[index] = gdb_realpath (qfn->file_names[index]);
2243
2244   return qfn->real_names[index];
2245 }
2246
2247 static struct symtab *
2248 dw2_find_last_source_symtab (struct objfile *objfile)
2249 {
2250   int index;
2251
2252   dw2_setup (objfile);
2253   index = dwarf2_per_objfile->n_comp_units - 1;
2254   return dw2_instantiate_symtab (objfile, dw2_get_cu (index));
2255 }
2256
2257 /* Traversal function for dw2_forget_cached_source_info.  */
2258
2259 static int
2260 dw2_free_cached_file_names (void **slot, void *info)
2261 {
2262   struct quick_file_names *file_data = (struct quick_file_names *) *slot;
2263
2264   if (file_data->real_names)
2265     {
2266       int i;
2267
2268       for (i = 0; i < file_data->num_file_names; ++i)
2269         {
2270           xfree ((void*) file_data->real_names[i]);
2271           file_data->real_names[i] = NULL;
2272         }
2273     }
2274
2275   return 1;
2276 }
2277
2278 static void
2279 dw2_forget_cached_source_info (struct objfile *objfile)
2280 {
2281   dw2_setup (objfile);
2282
2283   htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
2284                           dw2_free_cached_file_names, NULL);
2285 }
2286
2287 static int
2288 dw2_lookup_symtab (struct objfile *objfile, const char *name,
2289                    const char *full_path, const char *real_path,
2290                    struct symtab **result)
2291 {
2292   int i;
2293   int check_basename = lbasename (name) == name;
2294   struct dwarf2_per_cu_data *base_cu = NULL;
2295
2296   dw2_setup (objfile);
2297
2298   for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2299                    + dwarf2_per_objfile->n_type_comp_units); ++i)
2300     {
2301       int j;
2302       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
2303       struct quick_file_names *file_data;
2304
2305       if (per_cu->v.quick->symtab)
2306         continue;
2307
2308       file_data = dw2_get_file_names (objfile, per_cu);
2309       if (file_data == NULL)
2310         continue;
2311
2312       for (j = 0; j < file_data->num_file_names; ++j)
2313         {
2314           const char *this_name = file_data->file_names[j];
2315
2316           if (FILENAME_CMP (name, this_name) == 0)
2317             {
2318               *result = dw2_instantiate_symtab (objfile, per_cu);
2319               return 1;
2320             }
2321
2322           if (check_basename && ! base_cu
2323               && FILENAME_CMP (lbasename (this_name), name) == 0)
2324             base_cu = per_cu;
2325
2326           if (full_path != NULL)
2327             {
2328               const char *this_real_name = dw2_get_real_path (objfile,
2329                                                               file_data, j);
2330
2331               if (this_real_name != NULL
2332                   && FILENAME_CMP (full_path, this_real_name) == 0)
2333                 {
2334                   *result = dw2_instantiate_symtab (objfile, per_cu);
2335                   return 1;
2336                 }
2337             }
2338
2339           if (real_path != NULL)
2340             {
2341               const char *this_real_name = dw2_get_real_path (objfile,
2342                                                               file_data, j);
2343
2344               if (this_real_name != NULL
2345                   && FILENAME_CMP (real_path, this_real_name) == 0)
2346                 {
2347                   *result = dw2_instantiate_symtab (objfile, per_cu);
2348                   return 1;
2349                 }
2350             }
2351         }
2352     }
2353
2354   if (base_cu)
2355     {
2356       *result = dw2_instantiate_symtab (objfile, base_cu);
2357       return 1;
2358     }
2359
2360   return 0;
2361 }
2362
2363 static struct symtab *
2364 dw2_lookup_symbol (struct objfile *objfile, int block_index,
2365                    const char *name, domain_enum domain)
2366 {
2367   /* We do all the work in the pre_expand_symtabs_matching hook
2368      instead.  */
2369   return NULL;
2370 }
2371
2372 /* A helper function that expands all symtabs that hold an object
2373    named NAME.  */
2374
2375 static void
2376 dw2_do_expand_symtabs_matching (struct objfile *objfile, const char *name)
2377 {
2378   dw2_setup (objfile);
2379
2380   /* index_table is NULL if OBJF_READNOW.  */
2381   if (dwarf2_per_objfile->index_table)
2382     {
2383       offset_type *vec;
2384
2385       if (find_slot_in_mapped_hash (dwarf2_per_objfile->index_table,
2386                                     name, &vec))
2387         {
2388           offset_type i, len = MAYBE_SWAP (*vec);
2389           for (i = 0; i < len; ++i)
2390             {
2391               offset_type cu_index = MAYBE_SWAP (vec[i + 1]);
2392               struct dwarf2_per_cu_data *per_cu = dw2_get_cu (cu_index);
2393
2394               dw2_instantiate_symtab (objfile, per_cu);
2395             }
2396         }
2397     }
2398 }
2399
2400 static void
2401 dw2_pre_expand_symtabs_matching (struct objfile *objfile,
2402                                  int kind, const char *name,
2403                                  domain_enum domain)
2404 {
2405   dw2_do_expand_symtabs_matching (objfile, name);
2406 }
2407
2408 static void
2409 dw2_print_stats (struct objfile *objfile)
2410 {
2411   int i, count;
2412
2413   dw2_setup (objfile);
2414   count = 0;
2415   for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2416                    + dwarf2_per_objfile->n_type_comp_units); ++i)
2417     {
2418       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
2419
2420       if (!per_cu->v.quick->symtab)
2421         ++count;
2422     }
2423   printf_filtered (_("  Number of unread CUs: %d\n"), count);
2424 }
2425
2426 static void
2427 dw2_dump (struct objfile *objfile)
2428 {
2429   /* Nothing worth printing.  */
2430 }
2431
2432 static void
2433 dw2_relocate (struct objfile *objfile, struct section_offsets *new_offsets,
2434               struct section_offsets *delta)
2435 {
2436   /* There's nothing to relocate here.  */
2437 }
2438
2439 static void
2440 dw2_expand_symtabs_for_function (struct objfile *objfile,
2441                                  const char *func_name)
2442 {
2443   dw2_do_expand_symtabs_matching (objfile, func_name);
2444 }
2445
2446 static void
2447 dw2_expand_all_symtabs (struct objfile *objfile)
2448 {
2449   int i;
2450
2451   dw2_setup (objfile);
2452
2453   for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2454                    + dwarf2_per_objfile->n_type_comp_units); ++i)
2455     {
2456       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
2457
2458       dw2_instantiate_symtab (objfile, per_cu);
2459     }
2460 }
2461
2462 static void
2463 dw2_expand_symtabs_with_filename (struct objfile *objfile,
2464                                   const char *filename)
2465 {
2466   int i;
2467
2468   dw2_setup (objfile);
2469
2470   /* We don't need to consider type units here.
2471      This is only called for examining code, e.g. expand_line_sal.
2472      There can be an order of magnitude (or more) more type units
2473      than comp units, and we avoid them if we can.  */
2474
2475   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
2476     {
2477       int j;
2478       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
2479       struct quick_file_names *file_data;
2480
2481       if (per_cu->v.quick->symtab)
2482         continue;
2483
2484       file_data = dw2_get_file_names (objfile, per_cu);
2485       if (file_data == NULL)
2486         continue;
2487
2488       for (j = 0; j < file_data->num_file_names; ++j)
2489         {
2490           const char *this_name = file_data->file_names[j];
2491           if (FILENAME_CMP (this_name, filename) == 0)
2492             {
2493               dw2_instantiate_symtab (objfile, per_cu);
2494               break;
2495             }
2496         }
2497     }
2498 }
2499
2500 static const char *
2501 dw2_find_symbol_file (struct objfile *objfile, const char *name)
2502 {
2503   struct dwarf2_per_cu_data *per_cu;
2504   offset_type *vec;
2505   struct quick_file_names *file_data;
2506
2507   dw2_setup (objfile);
2508
2509   /* index_table is NULL if OBJF_READNOW.  */
2510   if (!dwarf2_per_objfile->index_table)
2511     return NULL;
2512
2513   if (!find_slot_in_mapped_hash (dwarf2_per_objfile->index_table,
2514                                  name, &vec))
2515     return NULL;
2516
2517   /* Note that this just looks at the very first one named NAME -- but
2518      actually we are looking for a function.  find_main_filename
2519      should be rewritten so that it doesn't require a custom hook.  It
2520      could just use the ordinary symbol tables.  */
2521   /* vec[0] is the length, which must always be >0.  */
2522   per_cu = dw2_get_cu (MAYBE_SWAP (vec[1]));
2523
2524   file_data = dw2_get_file_names (objfile, per_cu);
2525   if (file_data == NULL)
2526     return NULL;
2527
2528   return file_data->file_names[file_data->num_file_names - 1];
2529 }
2530
2531 static void
2532 dw2_map_matching_symbols (const char * name, domain_enum namespace,
2533                           struct objfile *objfile, int global,
2534                           int (*callback) (struct block *,
2535                                            struct symbol *, void *),
2536                           void *data, symbol_compare_ftype *match,
2537                           symbol_compare_ftype *ordered_compare)
2538 {
2539   /* Currently unimplemented; used for Ada.  The function can be called if the
2540      current language is Ada for a non-Ada objfile using GNU index.  As Ada
2541      does not look for non-Ada symbols this function should just return.  */
2542 }
2543
2544 static void
2545 dw2_expand_symtabs_matching (struct objfile *objfile,
2546                              int (*file_matcher) (const char *, void *),
2547                              int (*name_matcher) (const char *, void *),
2548                              domain_enum kind,
2549                              void *data)
2550 {
2551   int i;
2552   offset_type iter;
2553   struct mapped_index *index;
2554
2555   dw2_setup (objfile);
2556
2557   /* index_table is NULL if OBJF_READNOW.  */
2558   if (!dwarf2_per_objfile->index_table)
2559     return;
2560   index = dwarf2_per_objfile->index_table;
2561
2562   for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2563                    + dwarf2_per_objfile->n_type_comp_units); ++i)
2564     {
2565       int j;
2566       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
2567       struct quick_file_names *file_data;
2568
2569       per_cu->v.quick->mark = 0;
2570       if (per_cu->v.quick->symtab)
2571         continue;
2572
2573       file_data = dw2_get_file_names (objfile, per_cu);
2574       if (file_data == NULL)
2575         continue;
2576
2577       for (j = 0; j < file_data->num_file_names; ++j)
2578         {
2579           if (file_matcher (file_data->file_names[j], data))
2580             {
2581               per_cu->v.quick->mark = 1;
2582               break;
2583             }
2584         }
2585     }
2586
2587   for (iter = 0; iter < index->symbol_table_slots; ++iter)
2588     {
2589       offset_type idx = 2 * iter;
2590       const char *name;
2591       offset_type *vec, vec_len, vec_idx;
2592
2593       if (index->symbol_table[idx] == 0 && index->symbol_table[idx + 1] == 0)
2594         continue;
2595
2596       name = index->constant_pool + MAYBE_SWAP (index->symbol_table[idx]);
2597
2598       if (! (*name_matcher) (name, data))
2599         continue;
2600
2601       /* The name was matched, now expand corresponding CUs that were
2602          marked.  */
2603       vec = (offset_type *) (index->constant_pool
2604                              + MAYBE_SWAP (index->symbol_table[idx + 1]));
2605       vec_len = MAYBE_SWAP (vec[0]);
2606       for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
2607         {
2608           struct dwarf2_per_cu_data *per_cu;
2609
2610           per_cu = dw2_get_cu (MAYBE_SWAP (vec[vec_idx + 1]));
2611           if (per_cu->v.quick->mark)
2612             dw2_instantiate_symtab (objfile, per_cu);
2613         }
2614     }
2615 }
2616
2617 static struct symtab *
2618 dw2_find_pc_sect_symtab (struct objfile *objfile,
2619                          struct minimal_symbol *msymbol,
2620                          CORE_ADDR pc,
2621                          struct obj_section *section,
2622                          int warn_if_readin)
2623 {
2624   struct dwarf2_per_cu_data *data;
2625
2626   dw2_setup (objfile);
2627
2628   if (!objfile->psymtabs_addrmap)
2629     return NULL;
2630
2631   data = addrmap_find (objfile->psymtabs_addrmap, pc);
2632   if (!data)
2633     return NULL;
2634
2635   if (warn_if_readin && data->v.quick->symtab)
2636     warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
2637              paddress (get_objfile_arch (objfile), pc));
2638
2639   return dw2_instantiate_symtab (objfile, data);
2640 }
2641
2642 static void
2643 dw2_map_symbol_names (struct objfile *objfile,
2644                       void (*fun) (const char *, void *),
2645                       void *data)
2646 {
2647   offset_type iter;
2648   struct mapped_index *index;
2649
2650   dw2_setup (objfile);
2651
2652   /* index_table is NULL if OBJF_READNOW.  */
2653   if (!dwarf2_per_objfile->index_table)
2654     return;
2655   index = dwarf2_per_objfile->index_table;
2656
2657   for (iter = 0; iter < index->symbol_table_slots; ++iter)
2658     {
2659       offset_type idx = 2 * iter;
2660       const char *name;
2661       offset_type *vec, vec_len, vec_idx;
2662
2663       if (index->symbol_table[idx] == 0 && index->symbol_table[idx + 1] == 0)
2664         continue;
2665
2666       name = (index->constant_pool + MAYBE_SWAP (index->symbol_table[idx]));
2667
2668       (*fun) (name, data);
2669     }
2670 }
2671
2672 static void
2673 dw2_map_symbol_filenames (struct objfile *objfile,
2674                           void (*fun) (const char *, const char *, void *),
2675                           void *data)
2676 {
2677   int i;
2678
2679   dw2_setup (objfile);
2680
2681   for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2682                    + dwarf2_per_objfile->n_type_comp_units); ++i)
2683     {
2684       int j;
2685       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
2686       struct quick_file_names *file_data;
2687
2688       if (per_cu->v.quick->symtab)
2689         continue;
2690
2691       file_data = dw2_get_file_names (objfile, per_cu);
2692       if (file_data == NULL)
2693         continue;
2694
2695       for (j = 0; j < file_data->num_file_names; ++j)
2696         {
2697           const char *this_real_name = dw2_get_real_path (objfile, file_data,
2698                                                           j);
2699           (*fun) (file_data->file_names[j], this_real_name, data);
2700         }
2701     }
2702 }
2703
2704 static int
2705 dw2_has_symbols (struct objfile *objfile)
2706 {
2707   return 1;
2708 }
2709
2710 const struct quick_symbol_functions dwarf2_gdb_index_functions =
2711 {
2712   dw2_has_symbols,
2713   dw2_find_last_source_symtab,
2714   dw2_forget_cached_source_info,
2715   dw2_lookup_symtab,
2716   dw2_lookup_symbol,
2717   dw2_pre_expand_symtabs_matching,
2718   dw2_print_stats,
2719   dw2_dump,
2720   dw2_relocate,
2721   dw2_expand_symtabs_for_function,
2722   dw2_expand_all_symtabs,
2723   dw2_expand_symtabs_with_filename,
2724   dw2_find_symbol_file,
2725   dw2_map_matching_symbols,
2726   dw2_expand_symtabs_matching,
2727   dw2_find_pc_sect_symtab,
2728   dw2_map_symbol_names,
2729   dw2_map_symbol_filenames
2730 };
2731
2732 /* Initialize for reading DWARF for this objfile.  Return 0 if this
2733    file will use psymtabs, or 1 if using the GNU index.  */
2734
2735 int
2736 dwarf2_initialize_objfile (struct objfile *objfile)
2737 {
2738   /* If we're about to read full symbols, don't bother with the
2739      indices.  In this case we also don't care if some other debug
2740      format is making psymtabs, because they are all about to be
2741      expanded anyway.  */
2742   if ((objfile->flags & OBJF_READNOW))
2743     {
2744       int i;
2745
2746       dwarf2_per_objfile->using_index = 1;
2747       create_all_comp_units (objfile);
2748       create_debug_types_hash_table (objfile);
2749       dwarf2_per_objfile->quick_file_names_table =
2750         create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
2751
2752       for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2753                        + dwarf2_per_objfile->n_type_comp_units); ++i)
2754         {
2755           struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
2756
2757           per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2758                                             struct dwarf2_per_cu_quick_data);
2759         }
2760
2761       /* Return 1 so that gdb sees the "quick" functions.  However,
2762          these functions will be no-ops because we will have expanded
2763          all symtabs.  */
2764       return 1;
2765     }
2766
2767   if (dwarf2_read_index (objfile))
2768     return 1;
2769
2770   return 0;
2771 }
2772
2773 \f
2774
2775 /* Build a partial symbol table.  */
2776
2777 void
2778 dwarf2_build_psymtabs (struct objfile *objfile)
2779 {
2780   if (objfile->global_psymbols.size == 0 && objfile->static_psymbols.size == 0)
2781     {
2782       init_psymbol_list (objfile, 1024);
2783     }
2784
2785   dwarf2_build_psymtabs_hard (objfile);
2786 }
2787
2788 /* Return TRUE if OFFSET is within CU_HEADER.  */
2789
2790 static inline int
2791 offset_in_cu_p (const struct comp_unit_head *cu_header, unsigned int offset)
2792 {
2793   unsigned int bottom = cu_header->offset;
2794   unsigned int top = (cu_header->offset
2795                       + cu_header->length
2796                       + cu_header->initial_length_size);
2797
2798   return (offset >= bottom && offset < top);
2799 }
2800
2801 /* Read in the comp unit header information from the debug_info at info_ptr.
2802    NOTE: This leaves members offset, first_die_offset to be filled in
2803    by the caller.  */
2804
2805 static gdb_byte *
2806 read_comp_unit_head (struct comp_unit_head *cu_header,
2807                      gdb_byte *info_ptr, bfd *abfd)
2808 {
2809   int signed_addr;
2810   unsigned int bytes_read;
2811
2812   cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
2813   cu_header->initial_length_size = bytes_read;
2814   cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
2815   info_ptr += bytes_read;
2816   cu_header->version = read_2_bytes (abfd, info_ptr);
2817   info_ptr += 2;
2818   cu_header->abbrev_offset = read_offset (abfd, info_ptr, cu_header,
2819                                           &bytes_read);
2820   info_ptr += bytes_read;
2821   cu_header->addr_size = read_1_byte (abfd, info_ptr);
2822   info_ptr += 1;
2823   signed_addr = bfd_get_sign_extend_vma (abfd);
2824   if (signed_addr < 0)
2825     internal_error (__FILE__, __LINE__,
2826                     _("read_comp_unit_head: dwarf from non elf file"));
2827   cu_header->signed_addr_p = signed_addr;
2828
2829   return info_ptr;
2830 }
2831
2832 static gdb_byte *
2833 partial_read_comp_unit_head (struct comp_unit_head *header, gdb_byte *info_ptr,
2834                              gdb_byte *buffer, unsigned int buffer_size,
2835                              bfd *abfd)
2836 {
2837   gdb_byte *beg_of_comp_unit = info_ptr;
2838
2839   info_ptr = read_comp_unit_head (header, info_ptr, abfd);
2840
2841   if (header->version != 2 && header->version != 3 && header->version != 4)
2842     error (_("Dwarf Error: wrong version in compilation unit header "
2843            "(is %d, should be 2, 3, or 4) [in module %s]"), header->version,
2844            bfd_get_filename (abfd));
2845
2846   if (header->abbrev_offset
2847       >= dwarf2_section_size (dwarf2_per_objfile->objfile,
2848                               &dwarf2_per_objfile->abbrev))
2849     error (_("Dwarf Error: bad offset (0x%lx) in compilation unit header "
2850            "(offset 0x%lx + 6) [in module %s]"),
2851            (long) header->abbrev_offset,
2852            (long) (beg_of_comp_unit - buffer),
2853            bfd_get_filename (abfd));
2854
2855   if (beg_of_comp_unit + header->length + header->initial_length_size
2856       > buffer + buffer_size)
2857     error (_("Dwarf Error: bad length (0x%lx) in compilation unit header "
2858            "(offset 0x%lx + 0) [in module %s]"),
2859            (long) header->length,
2860            (long) (beg_of_comp_unit - buffer),
2861            bfd_get_filename (abfd));
2862
2863   return info_ptr;
2864 }
2865
2866 /* Read in the types comp unit header information from .debug_types entry at
2867    types_ptr.  The result is a pointer to one past the end of the header.  */
2868
2869 static gdb_byte *
2870 read_type_comp_unit_head (struct comp_unit_head *cu_header,
2871                           ULONGEST *signature,
2872                           gdb_byte *types_ptr, bfd *abfd)
2873 {
2874   gdb_byte *initial_types_ptr = types_ptr;
2875
2876   dwarf2_read_section (dwarf2_per_objfile->objfile,
2877                        &dwarf2_per_objfile->types);
2878   cu_header->offset = types_ptr - dwarf2_per_objfile->types.buffer;
2879
2880   types_ptr = read_comp_unit_head (cu_header, types_ptr, abfd);
2881
2882   *signature = read_8_bytes (abfd, types_ptr);
2883   types_ptr += 8;
2884   types_ptr += cu_header->offset_size;
2885   cu_header->first_die_offset = types_ptr - initial_types_ptr;
2886
2887   return types_ptr;
2888 }
2889
2890 /* Allocate a new partial symtab for file named NAME and mark this new
2891    partial symtab as being an include of PST.  */
2892
2893 static void
2894 dwarf2_create_include_psymtab (char *name, struct partial_symtab *pst,
2895                                struct objfile *objfile)
2896 {
2897   struct partial_symtab *subpst = allocate_psymtab (name, objfile);
2898
2899   subpst->section_offsets = pst->section_offsets;
2900   subpst->textlow = 0;
2901   subpst->texthigh = 0;
2902
2903   subpst->dependencies = (struct partial_symtab **)
2904     obstack_alloc (&objfile->objfile_obstack,
2905                    sizeof (struct partial_symtab *));
2906   subpst->dependencies[0] = pst;
2907   subpst->number_of_dependencies = 1;
2908
2909   subpst->globals_offset = 0;
2910   subpst->n_global_syms = 0;
2911   subpst->statics_offset = 0;
2912   subpst->n_static_syms = 0;
2913   subpst->symtab = NULL;
2914   subpst->read_symtab = pst->read_symtab;
2915   subpst->readin = 0;
2916
2917   /* No private part is necessary for include psymtabs.  This property
2918      can be used to differentiate between such include psymtabs and
2919      the regular ones.  */
2920   subpst->read_symtab_private = NULL;
2921 }
2922
2923 /* Read the Line Number Program data and extract the list of files
2924    included by the source file represented by PST.  Build an include
2925    partial symtab for each of these included files.  */
2926
2927 static void
2928 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
2929                                struct die_info *die,
2930                                struct partial_symtab *pst)
2931 {
2932   struct objfile *objfile = cu->objfile;
2933   bfd *abfd = objfile->obfd;
2934   struct line_header *lh = NULL;
2935   struct attribute *attr;
2936
2937   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
2938   if (attr)
2939     {
2940       unsigned int line_offset = DW_UNSND (attr);
2941
2942       lh = dwarf_decode_line_header (line_offset, abfd, cu);
2943     }
2944   if (lh == NULL)
2945     return;  /* No linetable, so no includes.  */
2946
2947   /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  */
2948   dwarf_decode_lines (lh, pst->dirname, abfd, cu, pst);
2949
2950   free_line_header (lh);
2951 }
2952
2953 static hashval_t
2954 hash_type_signature (const void *item)
2955 {
2956   const struct signatured_type *type_sig = item;
2957
2958   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
2959   return type_sig->signature;
2960 }
2961
2962 static int
2963 eq_type_signature (const void *item_lhs, const void *item_rhs)
2964 {
2965   const struct signatured_type *lhs = item_lhs;
2966   const struct signatured_type *rhs = item_rhs;
2967
2968   return lhs->signature == rhs->signature;
2969 }
2970
2971 /* Allocate a hash table for signatured types.  */
2972
2973 static htab_t
2974 allocate_signatured_type_table (struct objfile *objfile)
2975 {
2976   return htab_create_alloc_ex (41,
2977                                hash_type_signature,
2978                                eq_type_signature,
2979                                NULL,
2980                                &objfile->objfile_obstack,
2981                                hashtab_obstack_allocate,
2982                                dummy_obstack_deallocate);
2983 }
2984
2985 /* A helper function to add a signatured type CU to a list.  */
2986
2987 static int
2988 add_signatured_type_cu_to_list (void **slot, void *datum)
2989 {
2990   struct signatured_type *sigt = *slot;
2991   struct dwarf2_per_cu_data ***datap = datum;
2992
2993   **datap = &sigt->per_cu;
2994   ++*datap;
2995
2996   return 1;
2997 }
2998
2999 /* Create the hash table of all entries in the .debug_types section.
3000    The result is zero if there is an error (e.g. missing .debug_types section),
3001    otherwise non-zero.  */
3002
3003 static int
3004 create_debug_types_hash_table (struct objfile *objfile)
3005 {
3006   gdb_byte *info_ptr;
3007   htab_t types_htab;
3008   struct dwarf2_per_cu_data **iter;
3009
3010   dwarf2_read_section (objfile, &dwarf2_per_objfile->types);
3011   info_ptr = dwarf2_per_objfile->types.buffer;
3012
3013   if (info_ptr == NULL)
3014     {
3015       dwarf2_per_objfile->signatured_types = NULL;
3016       return 0;
3017     }
3018
3019   types_htab = allocate_signatured_type_table (objfile);
3020
3021   if (dwarf2_die_debug)
3022     fprintf_unfiltered (gdb_stdlog, "Signatured types:\n");
3023
3024   while (info_ptr < dwarf2_per_objfile->types.buffer
3025          + dwarf2_per_objfile->types.size)
3026     {
3027       unsigned int offset;
3028       unsigned int offset_size;
3029       unsigned int type_offset;
3030       unsigned int length, initial_length_size;
3031       unsigned short version;
3032       ULONGEST signature;
3033       struct signatured_type *type_sig;
3034       void **slot;
3035       gdb_byte *ptr = info_ptr;
3036
3037       offset = ptr - dwarf2_per_objfile->types.buffer;
3038
3039       /* We need to read the type's signature in order to build the hash
3040          table, but we don't need to read anything else just yet.  */
3041
3042       /* Sanity check to ensure entire cu is present.  */
3043       length = read_initial_length (objfile->obfd, ptr, &initial_length_size);
3044       if (ptr + length + initial_length_size
3045           > dwarf2_per_objfile->types.buffer + dwarf2_per_objfile->types.size)
3046         {
3047           complaint (&symfile_complaints,
3048                      _("debug type entry runs off end "
3049                        "of `.debug_types' section, ignored"));
3050           break;
3051         }
3052
3053       offset_size = initial_length_size == 4 ? 4 : 8;
3054       ptr += initial_length_size;
3055       version = bfd_get_16 (objfile->obfd, ptr);
3056       ptr += 2;
3057       ptr += offset_size; /* abbrev offset */
3058       ptr += 1; /* address size */
3059       signature = bfd_get_64 (objfile->obfd, ptr);
3060       ptr += 8;
3061       type_offset = read_offset_1 (objfile->obfd, ptr, offset_size);
3062
3063       type_sig = obstack_alloc (&objfile->objfile_obstack, sizeof (*type_sig));
3064       memset (type_sig, 0, sizeof (*type_sig));
3065       type_sig->signature = signature;
3066       type_sig->offset = offset;
3067       type_sig->type_offset = type_offset;
3068       type_sig->per_cu.objfile = objfile;
3069       type_sig->per_cu.from_debug_types = 1;
3070
3071       slot = htab_find_slot (types_htab, type_sig, INSERT);
3072       gdb_assert (slot != NULL);
3073       *slot = type_sig;
3074
3075       if (dwarf2_die_debug)
3076         fprintf_unfiltered (gdb_stdlog, "  offset 0x%x, signature 0x%s\n",
3077                             offset, phex (signature, sizeof (signature)));
3078
3079       info_ptr = info_ptr + initial_length_size + length;
3080     }
3081
3082   dwarf2_per_objfile->signatured_types = types_htab;
3083
3084   dwarf2_per_objfile->n_type_comp_units = htab_elements (types_htab);
3085   dwarf2_per_objfile->type_comp_units
3086     = obstack_alloc (&objfile->objfile_obstack,
3087                      dwarf2_per_objfile->n_type_comp_units
3088                      * sizeof (struct dwarf2_per_cu_data *));
3089   iter = &dwarf2_per_objfile->type_comp_units[0];
3090   htab_traverse_noresize (types_htab, add_signatured_type_cu_to_list, &iter);
3091   gdb_assert (iter - &dwarf2_per_objfile->type_comp_units[0]
3092               == dwarf2_per_objfile->n_type_comp_units);
3093
3094   return 1;
3095 }
3096
3097 /* Lookup a signature based type.
3098    Returns NULL if SIG is not present in the table.  */
3099
3100 static struct signatured_type *
3101 lookup_signatured_type (struct objfile *objfile, ULONGEST sig)
3102 {
3103   struct signatured_type find_entry, *entry;
3104
3105   if (dwarf2_per_objfile->signatured_types == NULL)
3106     {
3107       complaint (&symfile_complaints,
3108                  _("missing `.debug_types' section for DW_FORM_sig8 die"));
3109       return 0;
3110     }
3111
3112   find_entry.signature = sig;
3113   entry = htab_find (dwarf2_per_objfile->signatured_types, &find_entry);
3114   return entry;
3115 }
3116
3117 /* Initialize a die_reader_specs struct from a dwarf2_cu struct.  */
3118
3119 static void
3120 init_cu_die_reader (struct die_reader_specs *reader,
3121                     struct dwarf2_cu *cu)
3122 {
3123   reader->abfd = cu->objfile->obfd;
3124   reader->cu = cu;
3125   if (cu->per_cu->from_debug_types)
3126     {
3127       gdb_assert (dwarf2_per_objfile->types.readin);
3128       reader->buffer = dwarf2_per_objfile->types.buffer;
3129     }
3130   else
3131     {
3132       gdb_assert (dwarf2_per_objfile->info.readin);
3133       reader->buffer = dwarf2_per_objfile->info.buffer;
3134     }
3135 }
3136
3137 /* Find the base address of the compilation unit for range lists and
3138    location lists.  It will normally be specified by DW_AT_low_pc.
3139    In DWARF-3 draft 4, the base address could be overridden by
3140    DW_AT_entry_pc.  It's been removed, but GCC still uses this for
3141    compilation units with discontinuous ranges.  */
3142
3143 static void
3144 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
3145 {
3146   struct attribute *attr;
3147
3148   cu->base_known = 0;
3149   cu->base_address = 0;
3150
3151   attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
3152   if (attr)
3153     {
3154       cu->base_address = DW_ADDR (attr);
3155       cu->base_known = 1;
3156     }
3157   else
3158     {
3159       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
3160       if (attr)
3161         {
3162           cu->base_address = DW_ADDR (attr);
3163           cu->base_known = 1;
3164         }
3165     }
3166 }
3167
3168 /* Subroutine of process_type_comp_unit and dwarf2_build_psymtabs_hard
3169    to combine the common parts.
3170    Process a compilation unit for a psymtab.
3171    BUFFER is a pointer to the beginning of the dwarf section buffer,
3172    either .debug_info or debug_types.
3173    INFO_PTR is a pointer to the start of the CU.
3174    Returns a pointer to the next CU.  */
3175
3176 static gdb_byte *
3177 process_psymtab_comp_unit (struct objfile *objfile,
3178                            struct dwarf2_per_cu_data *this_cu,
3179                            gdb_byte *buffer, gdb_byte *info_ptr,
3180                            unsigned int buffer_size)
3181 {
3182   bfd *abfd = objfile->obfd;
3183   gdb_byte *beg_of_comp_unit = info_ptr;
3184   struct die_info *comp_unit_die;
3185   struct partial_symtab *pst;
3186   CORE_ADDR baseaddr;
3187   struct cleanup *back_to_inner;
3188   struct dwarf2_cu cu;
3189   int has_children, has_pc_info;
3190   struct attribute *attr;
3191   CORE_ADDR best_lowpc = 0, best_highpc = 0;
3192   struct die_reader_specs reader_specs;
3193   const char *filename;
3194
3195   init_one_comp_unit (&cu, objfile);
3196   back_to_inner = make_cleanup (free_stack_comp_unit, &cu);
3197
3198   info_ptr = partial_read_comp_unit_head (&cu.header, info_ptr,
3199                                           buffer, buffer_size,
3200                                           abfd);
3201
3202   /* Complete the cu_header.  */
3203   cu.header.offset = beg_of_comp_unit - buffer;
3204   cu.header.first_die_offset = info_ptr - beg_of_comp_unit;
3205
3206   cu.list_in_scope = &file_symbols;
3207
3208   /* If this compilation unit was already read in, free the
3209      cached copy in order to read it in again.  This is
3210      necessary because we skipped some symbols when we first
3211      read in the compilation unit (see load_partial_dies).
3212      This problem could be avoided, but the benefit is
3213      unclear.  */
3214   if (this_cu->cu != NULL)
3215     free_one_cached_comp_unit (this_cu->cu);
3216
3217   /* Note that this is a pointer to our stack frame, being
3218      added to a global data structure.  It will be cleaned up
3219      in free_stack_comp_unit when we finish with this
3220      compilation unit.  */
3221   this_cu->cu = &cu;
3222   cu.per_cu = this_cu;
3223
3224   /* Read the abbrevs for this compilation unit into a table.  */
3225   dwarf2_read_abbrevs (abfd, &cu);
3226   make_cleanup (dwarf2_free_abbrev_table, &cu);
3227
3228   /* Read the compilation unit die.  */
3229   if (this_cu->from_debug_types)
3230     info_ptr += 8 /*signature*/ + cu.header.offset_size;
3231   init_cu_die_reader (&reader_specs, &cu);
3232   info_ptr = read_full_die (&reader_specs, &comp_unit_die, info_ptr,
3233                             &has_children);
3234
3235   if (this_cu->from_debug_types)
3236     {
3237       /* offset,length haven't been set yet for type units.  */
3238       this_cu->offset = cu.header.offset;
3239       this_cu->length = cu.header.length + cu.header.initial_length_size;
3240     }
3241   else if (comp_unit_die->tag == DW_TAG_partial_unit)
3242     {
3243       info_ptr = (beg_of_comp_unit + cu.header.length
3244                   + cu.header.initial_length_size);
3245       do_cleanups (back_to_inner);
3246       return info_ptr;
3247     }
3248
3249   prepare_one_comp_unit (&cu, comp_unit_die);
3250
3251   /* Allocate a new partial symbol table structure.  */
3252   attr = dwarf2_attr (comp_unit_die, DW_AT_name, &cu);
3253   if (attr == NULL || !DW_STRING (attr))
3254     filename = "";
3255   else
3256     filename = DW_STRING (attr);
3257   pst = start_psymtab_common (objfile, objfile->section_offsets,
3258                               filename,
3259                               /* TEXTLOW and TEXTHIGH are set below.  */
3260                               0,
3261                               objfile->global_psymbols.next,
3262                               objfile->static_psymbols.next);
3263
3264   attr = dwarf2_attr (comp_unit_die, DW_AT_comp_dir, &cu);
3265   if (attr != NULL)
3266     pst->dirname = DW_STRING (attr);
3267
3268   pst->read_symtab_private = this_cu;
3269
3270   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
3271
3272   /* Store the function that reads in the rest of the symbol table.  */
3273   pst->read_symtab = dwarf2_psymtab_to_symtab;
3274
3275   this_cu->v.psymtab = pst;
3276
3277   dwarf2_find_base_address (comp_unit_die, &cu);
3278
3279   /* Possibly set the default values of LOWPC and HIGHPC from
3280      `DW_AT_ranges'.  */
3281   has_pc_info = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
3282                                       &best_highpc, &cu, pst);
3283   if (has_pc_info == 1 && best_lowpc < best_highpc)
3284     /* Store the contiguous range if it is not empty; it can be empty for
3285        CUs with no code.  */
3286     addrmap_set_empty (objfile->psymtabs_addrmap,
3287                        best_lowpc + baseaddr,
3288                        best_highpc + baseaddr - 1, pst);
3289
3290   /* Check if comp unit has_children.
3291      If so, read the rest of the partial symbols from this comp unit.
3292      If not, there's no more debug_info for this comp unit.  */
3293   if (has_children)
3294     {
3295       struct partial_die_info *first_die;
3296       CORE_ADDR lowpc, highpc;
3297
3298       lowpc = ((CORE_ADDR) -1);
3299       highpc = ((CORE_ADDR) 0);
3300
3301       first_die = load_partial_dies (abfd, buffer, info_ptr, 1, &cu);
3302
3303       scan_partial_symbols (first_die, &lowpc, &highpc,
3304                             ! has_pc_info, &cu);
3305
3306       /* If we didn't find a lowpc, set it to highpc to avoid
3307          complaints from `maint check'.  */
3308       if (lowpc == ((CORE_ADDR) -1))
3309         lowpc = highpc;
3310
3311       /* If the compilation unit didn't have an explicit address range,
3312          then use the information extracted from its child dies.  */
3313       if (! has_pc_info)
3314         {
3315           best_lowpc = lowpc;
3316           best_highpc = highpc;
3317         }
3318     }
3319   pst->textlow = best_lowpc + baseaddr;
3320   pst->texthigh = best_highpc + baseaddr;
3321
3322   pst->n_global_syms = objfile->global_psymbols.next -
3323     (objfile->global_psymbols.list + pst->globals_offset);
3324   pst->n_static_syms = objfile->static_psymbols.next -
3325     (objfile->static_psymbols.list + pst->statics_offset);
3326   sort_pst_symbols (pst);
3327
3328   info_ptr = (beg_of_comp_unit + cu.header.length
3329               + cu.header.initial_length_size);
3330
3331   if (this_cu->from_debug_types)
3332     {
3333       /* It's not clear we want to do anything with stmt lists here.
3334          Waiting to see what gcc ultimately does.  */
3335     }
3336   else
3337     {
3338       /* Get the list of files included in the current compilation unit,
3339          and build a psymtab for each of them.  */
3340       dwarf2_build_include_psymtabs (&cu, comp_unit_die, pst);
3341     }
3342
3343   do_cleanups (back_to_inner);
3344
3345   return info_ptr;
3346 }
3347
3348 /* Traversal function for htab_traverse_noresize.
3349    Process one .debug_types comp-unit.  */
3350
3351 static int
3352 process_type_comp_unit (void **slot, void *info)
3353 {
3354   struct signatured_type *entry = (struct signatured_type *) *slot;
3355   struct objfile *objfile = (struct objfile *) info;
3356   struct dwarf2_per_cu_data *this_cu;
3357
3358   this_cu = &entry->per_cu;
3359
3360   gdb_assert (dwarf2_per_objfile->types.readin);
3361   process_psymtab_comp_unit (objfile, this_cu,
3362                              dwarf2_per_objfile->types.buffer,
3363                              dwarf2_per_objfile->types.buffer + entry->offset,
3364                              dwarf2_per_objfile->types.size);
3365
3366   return 1;
3367 }
3368
3369 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
3370    Build partial symbol tables for the .debug_types comp-units.  */
3371
3372 static void
3373 build_type_psymtabs (struct objfile *objfile)
3374 {
3375   if (! create_debug_types_hash_table (objfile))
3376     return;
3377
3378   htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
3379                           process_type_comp_unit, objfile);
3380 }
3381
3382 /* A cleanup function that clears objfile's psymtabs_addrmap field.  */
3383
3384 static void
3385 psymtabs_addrmap_cleanup (void *o)
3386 {
3387   struct objfile *objfile = o;
3388
3389   objfile->psymtabs_addrmap = NULL;
3390 }
3391
3392 /* Build the partial symbol table by doing a quick pass through the
3393    .debug_info and .debug_abbrev sections.  */
3394
3395 static void
3396 dwarf2_build_psymtabs_hard (struct objfile *objfile)
3397 {
3398   gdb_byte *info_ptr;
3399   struct cleanup *back_to, *addrmap_cleanup;
3400   struct obstack temp_obstack;
3401
3402   dwarf2_per_objfile->reading_partial_symbols = 1;
3403
3404   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
3405   info_ptr = dwarf2_per_objfile->info.buffer;
3406
3407   /* Any cached compilation units will be linked by the per-objfile
3408      read_in_chain.  Make sure to free them when we're done.  */
3409   back_to = make_cleanup (free_cached_comp_units, NULL);
3410
3411   build_type_psymtabs (objfile);
3412
3413   create_all_comp_units (objfile);
3414
3415   /* Create a temporary address map on a temporary obstack.  We later
3416      copy this to the final obstack.  */
3417   obstack_init (&temp_obstack);
3418   make_cleanup_obstack_free (&temp_obstack);
3419   objfile->psymtabs_addrmap = addrmap_create_mutable (&temp_obstack);
3420   addrmap_cleanup = make_cleanup (psymtabs_addrmap_cleanup, objfile);
3421
3422   /* Since the objects we're extracting from .debug_info vary in
3423      length, only the individual functions to extract them (like
3424      read_comp_unit_head and load_partial_die) can really know whether
3425      the buffer is large enough to hold another complete object.
3426
3427      At the moment, they don't actually check that.  If .debug_info
3428      holds just one extra byte after the last compilation unit's dies,
3429      then read_comp_unit_head will happily read off the end of the
3430      buffer.  read_partial_die is similarly casual.  Those functions
3431      should be fixed.
3432
3433      For this loop condition, simply checking whether there's any data
3434      left at all should be sufficient.  */
3435
3436   while (info_ptr < (dwarf2_per_objfile->info.buffer
3437                      + dwarf2_per_objfile->info.size))
3438     {
3439       struct dwarf2_per_cu_data *this_cu;
3440
3441       this_cu = dwarf2_find_comp_unit (info_ptr
3442                                        - dwarf2_per_objfile->info.buffer,
3443                                        objfile);
3444
3445       info_ptr = process_psymtab_comp_unit (objfile, this_cu,
3446                                             dwarf2_per_objfile->info.buffer,
3447                                             info_ptr,
3448                                             dwarf2_per_objfile->info.size);
3449     }
3450
3451   objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
3452                                                     &objfile->objfile_obstack);
3453   discard_cleanups (addrmap_cleanup);
3454
3455   do_cleanups (back_to);
3456 }
3457
3458 /* Load the partial DIEs for a secondary CU into memory.  */
3459
3460 static void
3461 load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu,
3462                         struct objfile *objfile)
3463 {
3464   bfd *abfd = objfile->obfd;
3465   gdb_byte *info_ptr, *beg_of_comp_unit;
3466   struct die_info *comp_unit_die;
3467   struct dwarf2_cu *cu;
3468   struct cleanup *free_abbrevs_cleanup, *free_cu_cleanup = NULL;
3469   int has_children;
3470   struct die_reader_specs reader_specs;
3471   int read_cu = 0;
3472
3473   gdb_assert (! this_cu->from_debug_types);
3474
3475   gdb_assert (dwarf2_per_objfile->info.readin);
3476   info_ptr = dwarf2_per_objfile->info.buffer + this_cu->offset;
3477   beg_of_comp_unit = info_ptr;
3478
3479   if (this_cu->cu == NULL)
3480     {
3481       cu = xmalloc (sizeof (*cu));
3482       init_one_comp_unit (cu, objfile);
3483
3484       read_cu = 1;
3485
3486       /* If an error occurs while loading, release our storage.  */
3487       free_cu_cleanup = make_cleanup (free_one_comp_unit, cu);
3488
3489       info_ptr = partial_read_comp_unit_head (&cu->header, info_ptr,
3490                                               dwarf2_per_objfile->info.buffer,
3491                                               dwarf2_per_objfile->info.size,
3492                                               abfd);
3493
3494       /* Complete the cu_header.  */
3495       cu->header.offset = this_cu->offset;
3496       cu->header.first_die_offset = info_ptr - beg_of_comp_unit;
3497
3498       /* Link this compilation unit into the compilation unit tree.  */
3499       this_cu->cu = cu;
3500       cu->per_cu = this_cu;
3501
3502       /* Link this CU into read_in_chain.  */
3503       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
3504       dwarf2_per_objfile->read_in_chain = this_cu;
3505     }
3506   else
3507     {
3508       cu = this_cu->cu;
3509       info_ptr += cu->header.first_die_offset;
3510     }
3511
3512   /* Read the abbrevs for this compilation unit into a table.  */
3513   gdb_assert (cu->dwarf2_abbrevs == NULL);
3514   dwarf2_read_abbrevs (abfd, cu);
3515   free_abbrevs_cleanup = make_cleanup (dwarf2_free_abbrev_table, cu);
3516
3517   /* Read the compilation unit die.  */
3518   init_cu_die_reader (&reader_specs, cu);
3519   info_ptr = read_full_die (&reader_specs, &comp_unit_die, info_ptr,
3520                             &has_children);
3521
3522   prepare_one_comp_unit (cu, comp_unit_die);
3523
3524   /* Check if comp unit has_children.
3525      If so, read the rest of the partial symbols from this comp unit.
3526      If not, there's no more debug_info for this comp unit.  */
3527   if (has_children)
3528     load_partial_dies (abfd, dwarf2_per_objfile->info.buffer, info_ptr, 0, cu);
3529
3530   do_cleanups (free_abbrevs_cleanup);
3531
3532   if (read_cu)
3533     {
3534       /* We've successfully allocated this compilation unit.  Let our
3535          caller clean it up when finished with it.  */
3536       discard_cleanups (free_cu_cleanup);
3537     }
3538 }
3539
3540 /* Create a list of all compilation units in OBJFILE.  We do this only
3541    if an inter-comp-unit reference is found; presumably if there is one,
3542    there will be many, and one will occur early in the .debug_info section.
3543    So there's no point in building this list incrementally.  */
3544
3545 static void
3546 create_all_comp_units (struct objfile *objfile)
3547 {
3548   int n_allocated;
3549   int n_comp_units;
3550   struct dwarf2_per_cu_data **all_comp_units;
3551   gdb_byte *info_ptr;
3552
3553   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
3554   info_ptr = dwarf2_per_objfile->info.buffer;
3555
3556   n_comp_units = 0;
3557   n_allocated = 10;
3558   all_comp_units = xmalloc (n_allocated
3559                             * sizeof (struct dwarf2_per_cu_data *));
3560
3561   while (info_ptr < dwarf2_per_objfile->info.buffer
3562          + dwarf2_per_objfile->info.size)
3563     {
3564       unsigned int length, initial_length_size;
3565       struct dwarf2_per_cu_data *this_cu;
3566       unsigned int offset;
3567
3568       offset = info_ptr - dwarf2_per_objfile->info.buffer;
3569
3570       /* Read just enough information to find out where the next
3571          compilation unit is.  */
3572       length = read_initial_length (objfile->obfd, info_ptr,
3573                                     &initial_length_size);
3574
3575       /* Save the compilation unit for later lookup.  */
3576       this_cu = obstack_alloc (&objfile->objfile_obstack,
3577                                sizeof (struct dwarf2_per_cu_data));
3578       memset (this_cu, 0, sizeof (*this_cu));
3579       this_cu->offset = offset;
3580       this_cu->length = length + initial_length_size;
3581       this_cu->objfile = objfile;
3582
3583       if (n_comp_units == n_allocated)
3584         {
3585           n_allocated *= 2;
3586           all_comp_units = xrealloc (all_comp_units,
3587                                      n_allocated
3588                                      * sizeof (struct dwarf2_per_cu_data *));
3589         }
3590       all_comp_units[n_comp_units++] = this_cu;
3591
3592       info_ptr = info_ptr + this_cu->length;
3593     }
3594
3595   dwarf2_per_objfile->all_comp_units
3596     = obstack_alloc (&objfile->objfile_obstack,
3597                      n_comp_units * sizeof (struct dwarf2_per_cu_data *));
3598   memcpy (dwarf2_per_objfile->all_comp_units, all_comp_units,
3599           n_comp_units * sizeof (struct dwarf2_per_cu_data *));
3600   xfree (all_comp_units);
3601   dwarf2_per_objfile->n_comp_units = n_comp_units;
3602 }
3603
3604 /* Process all loaded DIEs for compilation unit CU, starting at
3605    FIRST_DIE.  The caller should pass NEED_PC == 1 if the compilation
3606    unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
3607    DW_AT_ranges).  If NEED_PC is set, then this function will set
3608    *LOWPC and *HIGHPC to the lowest and highest PC values found in CU
3609    and record the covered ranges in the addrmap.  */
3610
3611 static void
3612 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
3613                       CORE_ADDR *highpc, int need_pc, struct dwarf2_cu *cu)
3614 {
3615   struct partial_die_info *pdi;
3616
3617   /* Now, march along the PDI's, descending into ones which have
3618      interesting children but skipping the children of the other ones,
3619      until we reach the end of the compilation unit.  */
3620
3621   pdi = first_die;
3622
3623   while (pdi != NULL)
3624     {
3625       fixup_partial_die (pdi, cu);
3626
3627       /* Anonymous namespaces or modules have no name but have interesting
3628          children, so we need to look at them.  Ditto for anonymous
3629          enums.  */
3630
3631       if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
3632           || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type)
3633         {
3634           switch (pdi->tag)
3635             {
3636             case DW_TAG_subprogram:
3637               add_partial_subprogram (pdi, lowpc, highpc, need_pc, cu);
3638               break;
3639             case DW_TAG_constant:
3640             case DW_TAG_variable:
3641             case DW_TAG_typedef:
3642             case DW_TAG_union_type:
3643               if (!pdi->is_declaration)
3644                 {
3645                   add_partial_symbol (pdi, cu);
3646                 }
3647               break;
3648             case DW_TAG_class_type:
3649             case DW_TAG_interface_type:
3650             case DW_TAG_structure_type:
3651               if (!pdi->is_declaration)
3652                 {
3653                   add_partial_symbol (pdi, cu);
3654                 }
3655               break;
3656             case DW_TAG_enumeration_type:
3657               if (!pdi->is_declaration)
3658                 add_partial_enumeration (pdi, cu);
3659               break;
3660             case DW_TAG_base_type:
3661             case DW_TAG_subrange_type:
3662               /* File scope base type definitions are added to the partial
3663                  symbol table.  */
3664               add_partial_symbol (pdi, cu);
3665               break;
3666             case DW_TAG_namespace:
3667               add_partial_namespace (pdi, lowpc, highpc, need_pc, cu);
3668               break;
3669             case DW_TAG_module:
3670               add_partial_module (pdi, lowpc, highpc, need_pc, cu);
3671               break;
3672             default:
3673               break;
3674             }
3675         }
3676
3677       /* If the die has a sibling, skip to the sibling.  */
3678
3679       pdi = pdi->die_sibling;
3680     }
3681 }
3682
3683 /* Functions used to compute the fully scoped name of a partial DIE.
3684
3685    Normally, this is simple.  For C++, the parent DIE's fully scoped
3686    name is concatenated with "::" and the partial DIE's name.  For
3687    Java, the same thing occurs except that "." is used instead of "::".
3688    Enumerators are an exception; they use the scope of their parent
3689    enumeration type, i.e. the name of the enumeration type is not
3690    prepended to the enumerator.
3691
3692    There are two complexities.  One is DW_AT_specification; in this
3693    case "parent" means the parent of the target of the specification,
3694    instead of the direct parent of the DIE.  The other is compilers
3695    which do not emit DW_TAG_namespace; in this case we try to guess
3696    the fully qualified name of structure types from their members'
3697    linkage names.  This must be done using the DIE's children rather
3698    than the children of any DW_AT_specification target.  We only need
3699    to do this for structures at the top level, i.e. if the target of
3700    any DW_AT_specification (if any; otherwise the DIE itself) does not
3701    have a parent.  */
3702
3703 /* Compute the scope prefix associated with PDI's parent, in
3704    compilation unit CU.  The result will be allocated on CU's
3705    comp_unit_obstack, or a copy of the already allocated PDI->NAME
3706    field.  NULL is returned if no prefix is necessary.  */
3707 static char *
3708 partial_die_parent_scope (struct partial_die_info *pdi,
3709                           struct dwarf2_cu *cu)
3710 {
3711   char *grandparent_scope;
3712   struct partial_die_info *parent, *real_pdi;
3713
3714   /* We need to look at our parent DIE; if we have a DW_AT_specification,
3715      then this means the parent of the specification DIE.  */
3716
3717   real_pdi = pdi;
3718   while (real_pdi->has_specification)
3719     real_pdi = find_partial_die (real_pdi->spec_offset, cu);
3720
3721   parent = real_pdi->die_parent;
3722   if (parent == NULL)
3723     return NULL;
3724
3725   if (parent->scope_set)
3726     return parent->scope;
3727
3728   fixup_partial_die (parent, cu);
3729
3730   grandparent_scope = partial_die_parent_scope (parent, cu);
3731
3732   /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
3733      DW_TAG_namespace DIEs with a name of "::" for the global namespace.
3734      Work around this problem here.  */
3735   if (cu->language == language_cplus
3736       && parent->tag == DW_TAG_namespace
3737       && strcmp (parent->name, "::") == 0
3738       && grandparent_scope == NULL)
3739     {
3740       parent->scope = NULL;
3741       parent->scope_set = 1;
3742       return NULL;
3743     }
3744
3745   if (parent->tag == DW_TAG_namespace
3746       || parent->tag == DW_TAG_module
3747       || parent->tag == DW_TAG_structure_type
3748       || parent->tag == DW_TAG_class_type
3749       || parent->tag == DW_TAG_interface_type
3750       || parent->tag == DW_TAG_union_type
3751       || parent->tag == DW_TAG_enumeration_type)
3752     {
3753       if (grandparent_scope == NULL)
3754         parent->scope = parent->name;
3755       else
3756         parent->scope = typename_concat (&cu->comp_unit_obstack,
3757                                          grandparent_scope,
3758                                          parent->name, 0, cu);
3759     }
3760   else if (parent->tag == DW_TAG_enumerator)
3761     /* Enumerators should not get the name of the enumeration as a prefix.  */
3762     parent->scope = grandparent_scope;
3763   else
3764     {
3765       /* FIXME drow/2004-04-01: What should we be doing with
3766          function-local names?  For partial symbols, we should probably be
3767          ignoring them.  */
3768       complaint (&symfile_complaints,
3769                  _("unhandled containing DIE tag %d for DIE at %d"),
3770                  parent->tag, pdi->offset);
3771       parent->scope = grandparent_scope;
3772     }
3773
3774   parent->scope_set = 1;
3775   return parent->scope;
3776 }
3777
3778 /* Return the fully scoped name associated with PDI, from compilation unit
3779    CU.  The result will be allocated with malloc.  */
3780 static char *
3781 partial_die_full_name (struct partial_die_info *pdi,
3782                        struct dwarf2_cu *cu)
3783 {
3784   char *parent_scope;
3785
3786   /* If this is a template instantiation, we can not work out the
3787      template arguments from partial DIEs.  So, unfortunately, we have
3788      to go through the full DIEs.  At least any work we do building
3789      types here will be reused if full symbols are loaded later.  */
3790   if (pdi->has_template_arguments)
3791     {
3792       fixup_partial_die (pdi, cu);
3793
3794       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
3795         {
3796           struct die_info *die;
3797           struct attribute attr;
3798           struct dwarf2_cu *ref_cu = cu;
3799
3800           attr.name = 0;
3801           attr.form = DW_FORM_ref_addr;
3802           attr.u.addr = pdi->offset;
3803           die = follow_die_ref (NULL, &attr, &ref_cu);
3804
3805           return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
3806         }
3807     }
3808
3809   parent_scope = partial_die_parent_scope (pdi, cu);
3810   if (parent_scope == NULL)
3811     return NULL;
3812   else
3813     return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
3814 }
3815
3816 static void
3817 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
3818 {
3819   struct objfile *objfile = cu->objfile;
3820   CORE_ADDR addr = 0;
3821   char *actual_name = NULL;
3822   const struct partial_symbol *psym = NULL;
3823   CORE_ADDR baseaddr;
3824   int built_actual_name = 0;
3825
3826   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
3827
3828   actual_name = partial_die_full_name (pdi, cu);
3829   if (actual_name)
3830     built_actual_name = 1;
3831
3832   if (actual_name == NULL)
3833     actual_name = pdi->name;
3834
3835   switch (pdi->tag)
3836     {
3837     case DW_TAG_subprogram:
3838       if (pdi->is_external || cu->language == language_ada)
3839         {
3840           /* brobecker/2007-12-26: Normally, only "external" DIEs are part
3841              of the global scope.  But in Ada, we want to be able to access
3842              nested procedures globally.  So all Ada subprograms are stored
3843              in the global scope.  */
3844           /* prim_record_minimal_symbol (actual_name, pdi->lowpc + baseaddr,
3845              mst_text, objfile); */
3846           add_psymbol_to_list (actual_name, strlen (actual_name),
3847                                built_actual_name,
3848                                VAR_DOMAIN, LOC_BLOCK,
3849                                &objfile->global_psymbols,
3850                                0, pdi->lowpc + baseaddr,
3851                                cu->language, objfile);
3852         }
3853       else
3854         {
3855           /* prim_record_minimal_symbol (actual_name, pdi->lowpc + baseaddr,
3856              mst_file_text, objfile); */
3857           add_psymbol_to_list (actual_name, strlen (actual_name),
3858                                built_actual_name,
3859                                VAR_DOMAIN, LOC_BLOCK,
3860                                &objfile->static_psymbols,
3861                                0, pdi->lowpc + baseaddr,
3862                                cu->language, objfile);
3863         }
3864       break;
3865     case DW_TAG_constant:
3866       {
3867         struct psymbol_allocation_list *list;
3868
3869         if (pdi->is_external)
3870           list = &objfile->global_psymbols;
3871         else
3872           list = &objfile->static_psymbols;
3873         add_psymbol_to_list (actual_name, strlen (actual_name),
3874                              built_actual_name, VAR_DOMAIN, LOC_STATIC,
3875                              list, 0, 0, cu->language, objfile);
3876       }
3877       break;
3878     case DW_TAG_variable:
3879       if (pdi->locdesc)
3880         addr = decode_locdesc (pdi->locdesc, cu);
3881
3882       if (pdi->locdesc
3883           && addr == 0
3884           && !dwarf2_per_objfile->has_section_at_zero)
3885         {
3886           /* A global or static variable may also have been stripped
3887              out by the linker if unused, in which case its address
3888              will be nullified; do not add such variables into partial
3889              symbol table then.  */
3890         }
3891       else if (pdi->is_external)
3892         {
3893           /* Global Variable.
3894              Don't enter into the minimal symbol tables as there is
3895              a minimal symbol table entry from the ELF symbols already.
3896              Enter into partial symbol table if it has a location
3897              descriptor or a type.
3898              If the location descriptor is missing, new_symbol will create
3899              a LOC_UNRESOLVED symbol, the address of the variable will then
3900              be determined from the minimal symbol table whenever the variable
3901              is referenced.
3902              The address for the partial symbol table entry is not
3903              used by GDB, but it comes in handy for debugging partial symbol
3904              table building.  */
3905
3906           if (pdi->locdesc || pdi->has_type)
3907             add_psymbol_to_list (actual_name, strlen (actual_name),
3908                                  built_actual_name,
3909                                  VAR_DOMAIN, LOC_STATIC,
3910                                  &objfile->global_psymbols,
3911                                  0, addr + baseaddr,
3912                                  cu->language, objfile);
3913         }
3914       else
3915         {
3916           /* Static Variable.  Skip symbols without location descriptors.  */
3917           if (pdi->locdesc == NULL)
3918             {
3919               if (built_actual_name)
3920                 xfree (actual_name);
3921               return;
3922             }
3923           /* prim_record_minimal_symbol (actual_name, addr + baseaddr,
3924              mst_file_data, objfile); */
3925           add_psymbol_to_list (actual_name, strlen (actual_name),
3926                                built_actual_name,
3927                                VAR_DOMAIN, LOC_STATIC,
3928                                &objfile->static_psymbols,
3929                                0, addr + baseaddr,
3930                                cu->language, objfile);
3931         }
3932       break;
3933     case DW_TAG_typedef:
3934     case DW_TAG_base_type:
3935     case DW_TAG_subrange_type:
3936       add_psymbol_to_list (actual_name, strlen (actual_name),
3937                            built_actual_name,
3938                            VAR_DOMAIN, LOC_TYPEDEF,
3939                            &objfile->static_psymbols,
3940                            0, (CORE_ADDR) 0, cu->language, objfile);
3941       break;
3942     case DW_TAG_namespace:
3943       add_psymbol_to_list (actual_name, strlen (actual_name),
3944                            built_actual_name,
3945                            VAR_DOMAIN, LOC_TYPEDEF,
3946                            &objfile->global_psymbols,
3947                            0, (CORE_ADDR) 0, cu->language, objfile);
3948       break;
3949     case DW_TAG_class_type:
3950     case DW_TAG_interface_type:
3951     case DW_TAG_structure_type:
3952     case DW_TAG_union_type:
3953     case DW_TAG_enumeration_type:
3954       /* Skip external references.  The DWARF standard says in the section
3955          about "Structure, Union, and Class Type Entries": "An incomplete
3956          structure, union or class type is represented by a structure,
3957          union or class entry that does not have a byte size attribute
3958          and that has a DW_AT_declaration attribute."  */
3959       if (!pdi->has_byte_size && pdi->is_declaration)
3960         {
3961           if (built_actual_name)
3962             xfree (actual_name);
3963           return;
3964         }
3965
3966       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
3967          static vs. global.  */
3968       add_psymbol_to_list (actual_name, strlen (actual_name),
3969                            built_actual_name,
3970                            STRUCT_DOMAIN, LOC_TYPEDEF,
3971                            (cu->language == language_cplus
3972                             || cu->language == language_java)
3973                            ? &objfile->global_psymbols
3974                            : &objfile->static_psymbols,
3975                            0, (CORE_ADDR) 0, cu->language, objfile);
3976
3977       break;
3978     case DW_TAG_enumerator:
3979       add_psymbol_to_list (actual_name, strlen (actual_name),
3980                            built_actual_name,
3981                            VAR_DOMAIN, LOC_CONST,
3982                            (cu->language == language_cplus
3983                             || cu->language == language_java)
3984                            ? &objfile->global_psymbols
3985                            : &objfile->static_psymbols,
3986                            0, (CORE_ADDR) 0, cu->language, objfile);
3987       break;
3988     default:
3989       break;
3990     }
3991
3992   if (built_actual_name)
3993     xfree (actual_name);
3994 }
3995
3996 /* Read a partial die corresponding to a namespace; also, add a symbol
3997    corresponding to that namespace to the symbol table.  NAMESPACE is
3998    the name of the enclosing namespace.  */
3999
4000 static void
4001 add_partial_namespace (struct partial_die_info *pdi,
4002                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
4003                        int need_pc, struct dwarf2_cu *cu)
4004 {
4005   /* Add a symbol for the namespace.  */
4006
4007   add_partial_symbol (pdi, cu);
4008
4009   /* Now scan partial symbols in that namespace.  */
4010
4011   if (pdi->has_children)
4012     scan_partial_symbols (pdi->die_child, lowpc, highpc, need_pc, cu);
4013 }
4014
4015 /* Read a partial die corresponding to a Fortran module.  */
4016
4017 static void
4018 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
4019                     CORE_ADDR *highpc, int need_pc, struct dwarf2_cu *cu)
4020 {
4021   /* Now scan partial symbols in that module.  */
4022
4023   if (pdi->has_children)
4024     scan_partial_symbols (pdi->die_child, lowpc, highpc, need_pc, cu);
4025 }
4026
4027 /* Read a partial die corresponding to a subprogram and create a partial
4028    symbol for that subprogram.  When the CU language allows it, this
4029    routine also defines a partial symbol for each nested subprogram
4030    that this subprogram contains.
4031
4032    DIE my also be a lexical block, in which case we simply search
4033    recursively for suprograms defined inside that lexical block.
4034    Again, this is only performed when the CU language allows this
4035    type of definitions.  */
4036
4037 static void
4038 add_partial_subprogram (struct partial_die_info *pdi,
4039                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
4040                         int need_pc, struct dwarf2_cu *cu)
4041 {
4042   if (pdi->tag == DW_TAG_subprogram)
4043     {
4044       if (pdi->has_pc_info)
4045         {
4046           if (pdi->lowpc < *lowpc)
4047             *lowpc = pdi->lowpc;
4048           if (pdi->highpc > *highpc)
4049             *highpc = pdi->highpc;
4050           if (need_pc)
4051             {
4052               CORE_ADDR baseaddr;
4053               struct objfile *objfile = cu->objfile;
4054
4055               baseaddr = ANOFFSET (objfile->section_offsets,
4056                                    SECT_OFF_TEXT (objfile));
4057               addrmap_set_empty (objfile->psymtabs_addrmap,
4058                                  pdi->lowpc + baseaddr,
4059                                  pdi->highpc - 1 + baseaddr,
4060                                  cu->per_cu->v.psymtab);
4061             }
4062           if (!pdi->is_declaration)
4063             /* Ignore subprogram DIEs that do not have a name, they are
4064                illegal.  Do not emit a complaint at this point, we will
4065                do so when we convert this psymtab into a symtab.  */
4066             if (pdi->name)
4067               add_partial_symbol (pdi, cu);
4068         }
4069     }
4070
4071   if (! pdi->has_children)
4072     return;
4073
4074   if (cu->language == language_ada)
4075     {
4076       pdi = pdi->die_child;
4077       while (pdi != NULL)
4078         {
4079           fixup_partial_die (pdi, cu);
4080           if (pdi->tag == DW_TAG_subprogram
4081               || pdi->tag == DW_TAG_lexical_block)
4082             add_partial_subprogram (pdi, lowpc, highpc, need_pc, cu);
4083           pdi = pdi->die_sibling;
4084         }
4085     }
4086 }
4087
4088 /* Read a partial die corresponding to an enumeration type.  */
4089
4090 static void
4091 add_partial_enumeration (struct partial_die_info *enum_pdi,
4092                          struct dwarf2_cu *cu)
4093 {
4094   struct partial_die_info *pdi;
4095
4096   if (enum_pdi->name != NULL)
4097     add_partial_symbol (enum_pdi, cu);
4098
4099   pdi = enum_pdi->die_child;
4100   while (pdi)
4101     {
4102       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
4103         complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
4104       else
4105         add_partial_symbol (pdi, cu);
4106       pdi = pdi->die_sibling;
4107     }
4108 }
4109
4110 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit CU.
4111    Return the corresponding abbrev, or NULL if the number is zero (indicating
4112    an empty DIE).  In either case *BYTES_READ will be set to the length of
4113    the initial number.  */
4114
4115 static struct abbrev_info *
4116 peek_die_abbrev (gdb_byte *info_ptr, unsigned int *bytes_read,
4117                  struct dwarf2_cu *cu)
4118 {
4119   bfd *abfd = cu->objfile->obfd;
4120   unsigned int abbrev_number;
4121   struct abbrev_info *abbrev;
4122
4123   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
4124
4125   if (abbrev_number == 0)
4126     return NULL;
4127
4128   abbrev = dwarf2_lookup_abbrev (abbrev_number, cu);
4129   if (!abbrev)
4130     {
4131       error (_("Dwarf Error: Could not find abbrev number %d [in module %s]"),
4132              abbrev_number, bfd_get_filename (abfd));
4133     }
4134
4135   return abbrev;
4136 }
4137
4138 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
4139    Returns a pointer to the end of a series of DIEs, terminated by an empty
4140    DIE.  Any children of the skipped DIEs will also be skipped.  */
4141
4142 static gdb_byte *
4143 skip_children (gdb_byte *buffer, gdb_byte *info_ptr, struct dwarf2_cu *cu)
4144 {
4145   struct abbrev_info *abbrev;
4146   unsigned int bytes_read;
4147
4148   while (1)
4149     {
4150       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
4151       if (abbrev == NULL)
4152         return info_ptr + bytes_read;
4153       else
4154         info_ptr = skip_one_die (buffer, info_ptr + bytes_read, abbrev, cu);
4155     }
4156 }
4157
4158 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
4159    INFO_PTR should point just after the initial uleb128 of a DIE, and the
4160    abbrev corresponding to that skipped uleb128 should be passed in
4161    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
4162    children.  */
4163
4164 static gdb_byte *
4165 skip_one_die (gdb_byte *buffer, gdb_byte *info_ptr,
4166               struct abbrev_info *abbrev, struct dwarf2_cu *cu)
4167 {
4168   unsigned int bytes_read;
4169   struct attribute attr;
4170   bfd *abfd = cu->objfile->obfd;
4171   unsigned int form, i;
4172
4173   for (i = 0; i < abbrev->num_attrs; i++)
4174     {
4175       /* The only abbrev we care about is DW_AT_sibling.  */
4176       if (abbrev->attrs[i].name == DW_AT_sibling)
4177         {
4178           read_attribute (&attr, &abbrev->attrs[i],
4179                           abfd, info_ptr, cu);
4180           if (attr.form == DW_FORM_ref_addr)
4181             complaint (&symfile_complaints,
4182                        _("ignoring absolute DW_AT_sibling"));
4183           else
4184             return buffer + dwarf2_get_ref_die_offset (&attr);
4185         }
4186
4187       /* If it isn't DW_AT_sibling, skip this attribute.  */
4188       form = abbrev->attrs[i].form;
4189     skip_attribute:
4190       switch (form)
4191         {
4192         case DW_FORM_ref_addr:
4193           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
4194              and later it is offset sized.  */
4195           if (cu->header.version == 2)
4196             info_ptr += cu->header.addr_size;
4197           else
4198             info_ptr += cu->header.offset_size;
4199           break;
4200         case DW_FORM_addr:
4201           info_ptr += cu->header.addr_size;
4202           break;
4203         case DW_FORM_data1:
4204         case DW_FORM_ref1:
4205         case DW_FORM_flag:
4206           info_ptr += 1;
4207           break;
4208         case DW_FORM_flag_present:
4209           break;
4210         case DW_FORM_data2:
4211         case DW_FORM_ref2:
4212           info_ptr += 2;
4213           break;
4214         case DW_FORM_data4:
4215         case DW_FORM_ref4:
4216           info_ptr += 4;
4217           break;
4218         case DW_FORM_data8:
4219         case DW_FORM_ref8:
4220         case DW_FORM_sig8:
4221           info_ptr += 8;
4222           break;
4223         case DW_FORM_string:
4224           read_direct_string (abfd, info_ptr, &bytes_read);
4225           info_ptr += bytes_read;
4226           break;
4227         case DW_FORM_sec_offset:
4228         case DW_FORM_strp:
4229           info_ptr += cu->header.offset_size;
4230           break;
4231         case DW_FORM_exprloc:
4232         case DW_FORM_block:
4233           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
4234           info_ptr += bytes_read;
4235           break;
4236         case DW_FORM_block1:
4237           info_ptr += 1 + read_1_byte (abfd, info_ptr);
4238           break;
4239         case DW_FORM_block2:
4240           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
4241           break;
4242         case DW_FORM_block4:
4243           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
4244           break;
4245         case DW_FORM_sdata:
4246         case DW_FORM_udata:
4247         case DW_FORM_ref_udata:
4248           info_ptr = skip_leb128 (abfd, info_ptr);
4249           break;
4250         case DW_FORM_indirect:
4251           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
4252           info_ptr += bytes_read;
4253           /* We need to continue parsing from here, so just go back to
4254              the top.  */
4255           goto skip_attribute;
4256
4257         default:
4258           error (_("Dwarf Error: Cannot handle %s "
4259                    "in DWARF reader [in module %s]"),
4260                  dwarf_form_name (form),
4261                  bfd_get_filename (abfd));
4262         }
4263     }
4264
4265   if (abbrev->has_children)
4266     return skip_children (buffer, info_ptr, cu);
4267   else
4268     return info_ptr;
4269 }
4270
4271 /* Locate ORIG_PDI's sibling.
4272    INFO_PTR should point to the start of the next DIE after ORIG_PDI
4273    in BUFFER.  */
4274
4275 static gdb_byte *
4276 locate_pdi_sibling (struct partial_die_info *orig_pdi,
4277                     gdb_byte *buffer, gdb_byte *info_ptr,
4278                     bfd *abfd, struct dwarf2_cu *cu)
4279 {
4280   /* Do we know the sibling already?  */
4281
4282   if (orig_pdi->sibling)
4283     return orig_pdi->sibling;
4284
4285   /* Are there any children to deal with?  */
4286
4287   if (!orig_pdi->has_children)
4288     return info_ptr;
4289
4290   /* Skip the children the long way.  */
4291
4292   return skip_children (buffer, info_ptr, cu);
4293 }
4294
4295 /* Expand this partial symbol table into a full symbol table.  */
4296
4297 static void
4298 dwarf2_psymtab_to_symtab (struct partial_symtab *pst)
4299 {
4300   if (pst != NULL)
4301     {
4302       if (pst->readin)
4303         {
4304           warning (_("bug: psymtab for %s is already read in."),
4305                    pst->filename);
4306         }
4307       else
4308         {
4309           if (info_verbose)
4310             {
4311               printf_filtered (_("Reading in symbols for %s..."),
4312                                pst->filename);
4313               gdb_flush (gdb_stdout);
4314             }
4315
4316           /* Restore our global data.  */
4317           dwarf2_per_objfile = objfile_data (pst->objfile,
4318                                              dwarf2_objfile_data_key);
4319
4320           /* If this psymtab is constructed from a debug-only objfile, the
4321              has_section_at_zero flag will not necessarily be correct.  We
4322              can get the correct value for this flag by looking at the data
4323              associated with the (presumably stripped) associated objfile.  */
4324           if (pst->objfile->separate_debug_objfile_backlink)
4325             {
4326               struct dwarf2_per_objfile *dpo_backlink
4327                 = objfile_data (pst->objfile->separate_debug_objfile_backlink,
4328                                 dwarf2_objfile_data_key);
4329
4330               dwarf2_per_objfile->has_section_at_zero
4331                 = dpo_backlink->has_section_at_zero;
4332             }
4333
4334           dwarf2_per_objfile->reading_partial_symbols = 0;
4335
4336           psymtab_to_symtab_1 (pst);
4337
4338           /* Finish up the debug error message.  */
4339           if (info_verbose)
4340             printf_filtered (_("done.\n"));
4341         }
4342     }
4343 }
4344
4345 /* Add PER_CU to the queue.  */
4346
4347 static void
4348 queue_comp_unit (struct dwarf2_per_cu_data *per_cu, struct objfile *objfile)
4349 {
4350   struct dwarf2_queue_item *item;
4351
4352   per_cu->queued = 1;
4353   item = xmalloc (sizeof (*item));
4354   item->per_cu = per_cu;
4355   item->next = NULL;
4356
4357   if (dwarf2_queue == NULL)
4358     dwarf2_queue = item;
4359   else
4360     dwarf2_queue_tail->next = item;
4361
4362   dwarf2_queue_tail = item;
4363 }
4364
4365 /* Process the queue.  */
4366
4367 static void
4368 process_queue (struct objfile *objfile)
4369 {
4370   struct dwarf2_queue_item *item, *next_item;
4371
4372   /* The queue starts out with one item, but following a DIE reference
4373      may load a new CU, adding it to the end of the queue.  */
4374   for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
4375     {
4376       if (dwarf2_per_objfile->using_index
4377           ? !item->per_cu->v.quick->symtab
4378           : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
4379         process_full_comp_unit (item->per_cu);
4380
4381       item->per_cu->queued = 0;
4382       next_item = item->next;
4383       xfree (item);
4384     }
4385
4386   dwarf2_queue_tail = NULL;
4387 }
4388
4389 /* Free all allocated queue entries.  This function only releases anything if
4390    an error was thrown; if the queue was processed then it would have been
4391    freed as we went along.  */
4392
4393 static void
4394 dwarf2_release_queue (void *dummy)
4395 {
4396   struct dwarf2_queue_item *item, *last;
4397
4398   item = dwarf2_queue;
4399   while (item)
4400     {
4401       /* Anything still marked queued is likely to be in an
4402          inconsistent state, so discard it.  */
4403       if (item->per_cu->queued)
4404         {
4405           if (item->per_cu->cu != NULL)
4406             free_one_cached_comp_unit (item->per_cu->cu);
4407           item->per_cu->queued = 0;
4408         }
4409
4410       last = item;
4411       item = item->next;
4412       xfree (last);
4413     }
4414
4415   dwarf2_queue = dwarf2_queue_tail = NULL;
4416 }
4417
4418 /* Read in full symbols for PST, and anything it depends on.  */
4419
4420 static void
4421 psymtab_to_symtab_1 (struct partial_symtab *pst)
4422 {
4423   struct dwarf2_per_cu_data *per_cu;
4424   struct cleanup *back_to;
4425   int i;
4426
4427   for (i = 0; i < pst->number_of_dependencies; i++)
4428     if (!pst->dependencies[i]->readin)
4429       {
4430         /* Inform about additional files that need to be read in.  */
4431         if (info_verbose)
4432           {
4433             /* FIXME: i18n: Need to make this a single string.  */
4434             fputs_filtered (" ", gdb_stdout);
4435             wrap_here ("");
4436             fputs_filtered ("and ", gdb_stdout);
4437             wrap_here ("");
4438             printf_filtered ("%s...", pst->dependencies[i]->filename);
4439             wrap_here ("");     /* Flush output.  */
4440             gdb_flush (gdb_stdout);
4441           }
4442         psymtab_to_symtab_1 (pst->dependencies[i]);
4443       }
4444
4445   per_cu = pst->read_symtab_private;
4446
4447   if (per_cu == NULL)
4448     {
4449       /* It's an include file, no symbols to read for it.
4450          Everything is in the parent symtab.  */
4451       pst->readin = 1;
4452       return;
4453     }
4454
4455   dw2_do_instantiate_symtab (pst->objfile, per_cu);
4456 }
4457
4458 /* Load the DIEs associated with PER_CU into memory.  */
4459
4460 static void
4461 load_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
4462                      struct objfile *objfile)
4463 {
4464   bfd *abfd = objfile->obfd;
4465   struct dwarf2_cu *cu;
4466   unsigned int offset;
4467   gdb_byte *info_ptr, *beg_of_comp_unit;
4468   struct cleanup *free_abbrevs_cleanup = NULL, *free_cu_cleanup = NULL;
4469   struct attribute *attr;
4470   int read_cu = 0;
4471
4472   gdb_assert (! per_cu->from_debug_types);
4473
4474   /* Set local variables from the partial symbol table info.  */
4475   offset = per_cu->offset;
4476
4477   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
4478   info_ptr = dwarf2_per_objfile->info.buffer + offset;
4479   beg_of_comp_unit = info_ptr;
4480
4481   if (per_cu->cu == NULL)
4482     {
4483       cu = xmalloc (sizeof (*cu));
4484       init_one_comp_unit (cu, objfile);
4485
4486       read_cu = 1;
4487
4488       /* If an error occurs while loading, release our storage.  */
4489       free_cu_cleanup = make_cleanup (free_one_comp_unit, cu);
4490
4491       /* Read in the comp_unit header.  */
4492       info_ptr = read_comp_unit_head (&cu->header, info_ptr, abfd);
4493
4494       /* Complete the cu_header.  */
4495       cu->header.offset = offset;
4496       cu->header.first_die_offset = info_ptr - beg_of_comp_unit;
4497
4498       /* Read the abbrevs for this compilation unit.  */
4499       dwarf2_read_abbrevs (abfd, cu);
4500       free_abbrevs_cleanup = make_cleanup (dwarf2_free_abbrev_table, cu);
4501
4502       /* Link this compilation unit into the compilation unit tree.  */
4503       per_cu->cu = cu;
4504       cu->per_cu = per_cu;
4505
4506       /* Link this CU into read_in_chain.  */
4507       per_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
4508       dwarf2_per_objfile->read_in_chain = per_cu;
4509     }
4510   else
4511     {
4512       cu = per_cu->cu;
4513       info_ptr += cu->header.first_die_offset;
4514     }
4515
4516   cu->dies = read_comp_unit (info_ptr, cu);
4517
4518   /* We try not to read any attributes in this function, because not
4519      all objfiles needed for references have been loaded yet, and symbol
4520      table processing isn't initialized.  But we have to set the CU language,
4521      or we won't be able to build types correctly.  */
4522   prepare_one_comp_unit (cu, cu->dies);
4523
4524   /* Similarly, if we do not read the producer, we can not apply
4525      producer-specific interpretation.  */
4526   attr = dwarf2_attr (cu->dies, DW_AT_producer, cu);
4527   if (attr)
4528     cu->producer = DW_STRING (attr);
4529
4530   if (read_cu)
4531     {
4532       do_cleanups (free_abbrevs_cleanup);
4533
4534       /* We've successfully allocated this compilation unit.  Let our
4535          caller clean it up when finished with it.  */
4536       discard_cleanups (free_cu_cleanup);
4537     }
4538 }
4539
4540 /* Add a DIE to the delayed physname list.  */
4541
4542 static void
4543 add_to_method_list (struct type *type, int fnfield_index, int index,
4544                     const char *name, struct die_info *die,
4545                     struct dwarf2_cu *cu)
4546 {
4547   struct delayed_method_info mi;
4548   mi.type = type;
4549   mi.fnfield_index = fnfield_index;
4550   mi.index = index;
4551   mi.name = name;
4552   mi.die = die;
4553   VEC_safe_push (delayed_method_info, cu->method_list, &mi);
4554 }
4555
4556 /* A cleanup for freeing the delayed method list.  */
4557
4558 static void
4559 free_delayed_list (void *ptr)
4560 {
4561   struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr;
4562   if (cu->method_list != NULL)
4563     {
4564       VEC_free (delayed_method_info, cu->method_list);
4565       cu->method_list = NULL;
4566     }
4567 }
4568
4569 /* Compute the physnames of any methods on the CU's method list.
4570
4571    The computation of method physnames is delayed in order to avoid the
4572    (bad) condition that one of the method's formal parameters is of an as yet
4573    incomplete type.  */
4574
4575 static void
4576 compute_delayed_physnames (struct dwarf2_cu *cu)
4577 {
4578   int i;
4579   struct delayed_method_info *mi;
4580   for (i = 0; VEC_iterate (delayed_method_info, cu->method_list, i, mi) ; ++i)
4581     {
4582       char *physname;
4583       struct fn_fieldlist *fn_flp
4584         = &TYPE_FN_FIELDLIST (mi->type, mi->fnfield_index);
4585       physname = (char *) dwarf2_physname ((char *) mi->name, mi->die, cu);
4586       fn_flp->fn_fields[mi->index].physname = physname ? physname : "";
4587     }
4588 }
4589
4590 /* Generate full symbol information for PST and CU, whose DIEs have
4591    already been loaded into memory.  */
4592
4593 static void
4594 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu)
4595 {
4596   struct dwarf2_cu *cu = per_cu->cu;
4597   struct objfile *objfile = per_cu->objfile;
4598   CORE_ADDR lowpc, highpc;
4599   struct symtab *symtab;
4600   struct cleanup *back_to, *delayed_list_cleanup;
4601   CORE_ADDR baseaddr;
4602
4603   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
4604
4605   buildsym_init ();
4606   back_to = make_cleanup (really_free_pendings, NULL);
4607   delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
4608
4609   cu->list_in_scope = &file_symbols;
4610
4611   dwarf2_find_base_address (cu->dies, cu);
4612
4613   /* Do line number decoding in read_file_scope () */
4614   process_die (cu->dies, cu);
4615
4616   /* Now that we have processed all the DIEs in the CU, all the types 
4617      should be complete, and it should now be safe to compute all of the
4618      physnames.  */
4619   compute_delayed_physnames (cu);
4620   do_cleanups (delayed_list_cleanup);
4621
4622   /* Some compilers don't define a DW_AT_high_pc attribute for the
4623      compilation unit.  If the DW_AT_high_pc is missing, synthesize
4624      it, by scanning the DIE's below the compilation unit.  */
4625   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
4626
4627   symtab = end_symtab (highpc + baseaddr, objfile, SECT_OFF_TEXT (objfile));
4628
4629   /* Set symtab language to language from DW_AT_language.
4630      If the compilation is from a C file generated by language preprocessors,
4631      do not set the language if it was already deduced by start_subfile.  */
4632   if (symtab != NULL
4633       && !(cu->language == language_c && symtab->language != language_c))
4634     {
4635       symtab->language = cu->language;
4636     }
4637
4638   if (dwarf2_per_objfile->using_index)
4639     per_cu->v.quick->symtab = symtab;
4640   else
4641     {
4642       struct partial_symtab *pst = per_cu->v.psymtab;
4643       pst->symtab = symtab;
4644       pst->readin = 1;
4645     }
4646
4647   do_cleanups (back_to);
4648 }
4649
4650 /* Process a die and its children.  */
4651
4652 static void
4653 process_die (struct die_info *die, struct dwarf2_cu *cu)
4654 {
4655   switch (die->tag)
4656     {
4657     case DW_TAG_padding:
4658       break;
4659     case DW_TAG_compile_unit:
4660       read_file_scope (die, cu);
4661       break;
4662     case DW_TAG_type_unit:
4663       read_type_unit_scope (die, cu);
4664       break;
4665     case DW_TAG_subprogram:
4666     case DW_TAG_inlined_subroutine:
4667       read_func_scope (die, cu);
4668       break;
4669     case DW_TAG_lexical_block:
4670     case DW_TAG_try_block:
4671     case DW_TAG_catch_block:
4672       read_lexical_block_scope (die, cu);
4673       break;
4674     case DW_TAG_class_type:
4675     case DW_TAG_interface_type:
4676     case DW_TAG_structure_type:
4677     case DW_TAG_union_type:
4678       process_structure_scope (die, cu);
4679       break;
4680     case DW_TAG_enumeration_type:
4681       process_enumeration_scope (die, cu);
4682       break;
4683
4684     /* These dies have a type, but processing them does not create
4685        a symbol or recurse to process the children.  Therefore we can
4686        read them on-demand through read_type_die.  */
4687     case DW_TAG_subroutine_type:
4688     case DW_TAG_set_type:
4689     case DW_TAG_array_type:
4690     case DW_TAG_pointer_type:
4691     case DW_TAG_ptr_to_member_type:
4692     case DW_TAG_reference_type:
4693     case DW_TAG_string_type:
4694       break;
4695
4696     case DW_TAG_base_type:
4697     case DW_TAG_subrange_type:
4698     case DW_TAG_typedef:
4699       /* Add a typedef symbol for the type definition, if it has a
4700          DW_AT_name.  */
4701       new_symbol (die, read_type_die (die, cu), cu);
4702       break;
4703     case DW_TAG_common_block:
4704       read_common_block (die, cu);
4705       break;
4706     case DW_TAG_common_inclusion:
4707       break;
4708     case DW_TAG_namespace:
4709       processing_has_namespace_info = 1;
4710       read_namespace (die, cu);
4711       break;
4712     case DW_TAG_module:
4713       processing_has_namespace_info = 1;
4714       read_module (die, cu);
4715       break;
4716     case DW_TAG_imported_declaration:
4717     case DW_TAG_imported_module:
4718       processing_has_namespace_info = 1;
4719       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
4720                                  || cu->language != language_fortran))
4721         complaint (&symfile_complaints, _("Tag '%s' has unexpected children"),
4722                    dwarf_tag_name (die->tag));
4723       read_import_statement (die, cu);
4724       break;
4725     default:
4726       new_symbol (die, NULL, cu);
4727       break;
4728     }
4729 }
4730
4731 /* A helper function for dwarf2_compute_name which determines whether DIE
4732    needs to have the name of the scope prepended to the name listed in the
4733    die.  */
4734
4735 static int
4736 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
4737 {
4738   struct attribute *attr;
4739
4740   switch (die->tag)
4741     {
4742     case DW_TAG_namespace:
4743     case DW_TAG_typedef:
4744     case DW_TAG_class_type:
4745     case DW_TAG_interface_type:
4746     case DW_TAG_structure_type:
4747     case DW_TAG_union_type:
4748     case DW_TAG_enumeration_type:
4749     case DW_TAG_enumerator:
4750     case DW_TAG_subprogram:
4751     case DW_TAG_member:
4752       return 1;
4753
4754     case DW_TAG_variable:
4755     case DW_TAG_constant:
4756       /* We only need to prefix "globally" visible variables.  These include
4757          any variable marked with DW_AT_external or any variable that
4758          lives in a namespace.  [Variables in anonymous namespaces
4759          require prefixing, but they are not DW_AT_external.]  */
4760
4761       if (dwarf2_attr (die, DW_AT_specification, cu))
4762         {
4763           struct dwarf2_cu *spec_cu = cu;
4764
4765           return die_needs_namespace (die_specification (die, &spec_cu),
4766                                       spec_cu);
4767         }
4768
4769       attr = dwarf2_attr (die, DW_AT_external, cu);
4770       if (attr == NULL && die->parent->tag != DW_TAG_namespace
4771           && die->parent->tag != DW_TAG_module)
4772         return 0;
4773       /* A variable in a lexical block of some kind does not need a
4774          namespace, even though in C++ such variables may be external
4775          and have a mangled name.  */
4776       if (die->parent->tag ==  DW_TAG_lexical_block
4777           || die->parent->tag ==  DW_TAG_try_block
4778           || die->parent->tag ==  DW_TAG_catch_block
4779           || die->parent->tag == DW_TAG_subprogram)
4780         return 0;
4781       return 1;
4782
4783     default:
4784       return 0;
4785     }
4786 }
4787
4788 /* Retrieve the last character from a mem_file.  */
4789
4790 static void
4791 do_ui_file_peek_last (void *object, const char *buffer, long length)
4792 {
4793   char *last_char_p = (char *) object;
4794
4795   if (length > 0)
4796     *last_char_p = buffer[length - 1];
4797 }
4798
4799 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
4800    compute the physname for the object, which include a method's
4801    formal parameters (C++/Java) and return type (Java).
4802
4803    For Ada, return the DIE's linkage name rather than the fully qualified
4804    name.  PHYSNAME is ignored..
4805
4806    The result is allocated on the objfile_obstack and canonicalized.  */
4807
4808 static const char *
4809 dwarf2_compute_name (char *name, struct die_info *die, struct dwarf2_cu *cu,
4810                      int physname)
4811 {
4812   if (name == NULL)
4813     name = dwarf2_name (die, cu);
4814
4815   /* For Fortran GDB prefers DW_AT_*linkage_name if present but otherwise
4816      compute it by typename_concat inside GDB.  */
4817   if (cu->language == language_ada
4818       || (cu->language == language_fortran && physname))
4819     {
4820       /* For Ada unit, we prefer the linkage name over the name, as
4821          the former contains the exported name, which the user expects
4822          to be able to reference.  Ideally, we want the user to be able
4823          to reference this entity using either natural or linkage name,
4824          but we haven't started looking at this enhancement yet.  */
4825       struct attribute *attr;
4826
4827       attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
4828       if (attr == NULL)
4829         attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
4830       if (attr && DW_STRING (attr))
4831         return DW_STRING (attr);
4832     }
4833
4834   /* These are the only languages we know how to qualify names in.  */
4835   if (name != NULL
4836       && (cu->language == language_cplus || cu->language == language_java
4837           || cu->language == language_fortran))
4838     {
4839       if (die_needs_namespace (die, cu))
4840         {
4841           long length;
4842           char *prefix;
4843           struct ui_file *buf;
4844
4845           prefix = determine_prefix (die, cu);
4846           buf = mem_fileopen ();
4847           if (*prefix != '\0')
4848             {
4849               char *prefixed_name = typename_concat (NULL, prefix, name,
4850                                                      physname, cu);
4851
4852               fputs_unfiltered (prefixed_name, buf);
4853               xfree (prefixed_name);
4854             }
4855           else
4856             fputs_unfiltered (name, buf);
4857
4858           /* Template parameters may be specified in the DIE's DW_AT_name, or
4859              as children with DW_TAG_template_type_param or
4860              DW_TAG_value_type_param.  If the latter, add them to the name
4861              here.  If the name already has template parameters, then
4862              skip this step; some versions of GCC emit both, and
4863              it is more efficient to use the pre-computed name.
4864
4865              Something to keep in mind about this process: it is very
4866              unlikely, or in some cases downright impossible, to produce
4867              something that will match the mangled name of a function.
4868              If the definition of the function has the same debug info,
4869              we should be able to match up with it anyway.  But fallbacks
4870              using the minimal symbol, for instance to find a method
4871              implemented in a stripped copy of libstdc++, will not work.
4872              If we do not have debug info for the definition, we will have to
4873              match them up some other way.
4874
4875              When we do name matching there is a related problem with function
4876              templates; two instantiated function templates are allowed to
4877              differ only by their return types, which we do not add here.  */
4878
4879           if (cu->language == language_cplus && strchr (name, '<') == NULL)
4880             {
4881               struct attribute *attr;
4882               struct die_info *child;
4883               int first = 1;
4884
4885               die->building_fullname = 1;
4886
4887               for (child = die->child; child != NULL; child = child->sibling)
4888                 {
4889                   struct type *type;
4890                   long value;
4891                   gdb_byte *bytes;
4892                   struct dwarf2_locexpr_baton *baton;
4893                   struct value *v;
4894
4895                   if (child->tag != DW_TAG_template_type_param
4896                       && child->tag != DW_TAG_template_value_param)
4897                     continue;
4898
4899                   if (first)
4900                     {
4901                       fputs_unfiltered ("<", buf);
4902                       first = 0;
4903                     }
4904                   else
4905                     fputs_unfiltered (", ", buf);
4906
4907                   attr = dwarf2_attr (child, DW_AT_type, cu);
4908                   if (attr == NULL)
4909                     {
4910                       complaint (&symfile_complaints,
4911                                  _("template parameter missing DW_AT_type"));
4912                       fputs_unfiltered ("UNKNOWN_TYPE", buf);
4913                       continue;
4914                     }
4915                   type = die_type (child, cu);
4916
4917                   if (child->tag == DW_TAG_template_type_param)
4918                     {
4919                       c_print_type (type, "", buf, -1, 0);
4920                       continue;
4921                     }
4922
4923                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
4924                   if (attr == NULL)
4925                     {
4926                       complaint (&symfile_complaints,
4927                                  _("template parameter missing "
4928                                    "DW_AT_const_value"));
4929                       fputs_unfiltered ("UNKNOWN_VALUE", buf);
4930                       continue;
4931                     }
4932
4933                   dwarf2_const_value_attr (attr, type, name,
4934                                            &cu->comp_unit_obstack, cu,
4935                                            &value, &bytes, &baton);
4936
4937                   if (TYPE_NOSIGN (type))
4938                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
4939                        changed, this can use value_print instead.  */
4940                     c_printchar (value, type, buf);
4941                   else
4942                     {
4943                       struct value_print_options opts;
4944
4945                       if (baton != NULL)
4946                         v = dwarf2_evaluate_loc_desc (type, NULL,
4947                                                       baton->data,
4948                                                       baton->size,
4949                                                       baton->per_cu);
4950                       else if (bytes != NULL)
4951                         {
4952                           v = allocate_value (type);
4953                           memcpy (value_contents_writeable (v), bytes,
4954                                   TYPE_LENGTH (type));
4955                         }
4956                       else
4957                         v = value_from_longest (type, value);
4958
4959                       /* Specify decimal so that we do not depend on
4960                          the radix.  */
4961                       get_formatted_print_options (&opts, 'd');
4962                       opts.raw = 1;
4963                       value_print (v, buf, &opts);
4964                       release_value (v);
4965                       value_free (v);
4966                     }
4967                 }
4968
4969               die->building_fullname = 0;
4970
4971               if (!first)
4972                 {
4973                   /* Close the argument list, with a space if necessary
4974                      (nested templates).  */
4975                   char last_char = '\0';
4976                   ui_file_put (buf, do_ui_file_peek_last, &last_char);
4977                   if (last_char == '>')
4978                     fputs_unfiltered (" >", buf);
4979                   else
4980                     fputs_unfiltered (">", buf);
4981                 }
4982             }
4983
4984           /* For Java and C++ methods, append formal parameter type
4985              information, if PHYSNAME.  */
4986
4987           if (physname && die->tag == DW_TAG_subprogram
4988               && (cu->language == language_cplus
4989                   || cu->language == language_java))
4990             {
4991               struct type *type = read_type_die (die, cu);
4992
4993               c_type_print_args (type, buf, 0, cu->language);
4994
4995               if (cu->language == language_java)
4996                 {
4997                   /* For java, we must append the return type to method
4998                      names.  */
4999                   if (die->tag == DW_TAG_subprogram)
5000                     java_print_type (TYPE_TARGET_TYPE (type), "", buf,
5001                                      0, 0);
5002                 }
5003               else if (cu->language == language_cplus)
5004                 {
5005                   /* Assume that an artificial first parameter is
5006                      "this", but do not crash if it is not.  RealView
5007                      marks unnamed (and thus unused) parameters as
5008                      artificial; there is no way to differentiate
5009                      the two cases.  */
5010                   if (TYPE_NFIELDS (type) > 0
5011                       && TYPE_FIELD_ARTIFICIAL (type, 0)
5012                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
5013                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
5014                                                                         0))))
5015                     fputs_unfiltered (" const", buf);
5016                 }
5017             }
5018
5019           name = ui_file_obsavestring (buf, &cu->objfile->objfile_obstack,
5020                                        &length);
5021           ui_file_delete (buf);
5022
5023           if (cu->language == language_cplus)
5024             {
5025               char *cname
5026                 = dwarf2_canonicalize_name (name, cu,
5027                                             &cu->objfile->objfile_obstack);
5028
5029               if (cname != NULL)
5030                 name = cname;
5031             }
5032         }
5033     }
5034
5035   return name;
5036 }
5037
5038 /* Return the fully qualified name of DIE, based on its DW_AT_name.
5039    If scope qualifiers are appropriate they will be added.  The result
5040    will be allocated on the objfile_obstack, or NULL if the DIE does
5041    not have a name.  NAME may either be from a previous call to
5042    dwarf2_name or NULL.
5043
5044    The output string will be canonicalized (if C++/Java).  */
5045
5046 static const char *
5047 dwarf2_full_name (char *name, struct die_info *die, struct dwarf2_cu *cu)
5048 {
5049   return dwarf2_compute_name (name, die, cu, 0);
5050 }
5051
5052 /* Construct a physname for the given DIE in CU.  NAME may either be
5053    from a previous call to dwarf2_name or NULL.  The result will be
5054    allocated on the objfile_objstack or NULL if the DIE does not have a
5055    name.
5056
5057    The output string will be canonicalized (if C++/Java).  */
5058
5059 static const char *
5060 dwarf2_physname (char *name, struct die_info *die, struct dwarf2_cu *cu)
5061 {
5062   return dwarf2_compute_name (name, die, cu, 1);
5063 }
5064
5065 /* Read the import statement specified by the given die and record it.  */
5066
5067 static void
5068 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
5069 {
5070   struct attribute *import_attr;
5071   struct die_info *imported_die;
5072   struct dwarf2_cu *imported_cu;
5073   const char *imported_name;
5074   const char *imported_name_prefix;
5075   const char *canonical_name;
5076   const char *import_alias;
5077   const char *imported_declaration = NULL;
5078   const char *import_prefix;
5079
5080   char *temp;
5081
5082   import_attr = dwarf2_attr (die, DW_AT_import, cu);
5083   if (import_attr == NULL)
5084     {
5085       complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
5086                  dwarf_tag_name (die->tag));
5087       return;
5088     }
5089
5090   imported_cu = cu;
5091   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
5092   imported_name = dwarf2_name (imported_die, imported_cu);
5093   if (imported_name == NULL)
5094     {
5095       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
5096
5097         The import in the following code:
5098         namespace A
5099           {
5100             typedef int B;
5101           }
5102
5103         int main ()
5104           {
5105             using A::B;
5106             B b;
5107             return b;
5108           }
5109
5110         ...
5111          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
5112             <52>   DW_AT_decl_file   : 1
5113             <53>   DW_AT_decl_line   : 6
5114             <54>   DW_AT_import      : <0x75>
5115          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
5116             <59>   DW_AT_name        : B
5117             <5b>   DW_AT_decl_file   : 1
5118             <5c>   DW_AT_decl_line   : 2
5119             <5d>   DW_AT_type        : <0x6e>
5120         ...
5121          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
5122             <76>   DW_AT_byte_size   : 4
5123             <77>   DW_AT_encoding    : 5        (signed)
5124
5125         imports the wrong die ( 0x75 instead of 0x58 ).
5126         This case will be ignored until the gcc bug is fixed.  */
5127       return;
5128     }
5129
5130   /* Figure out the local name after import.  */
5131   import_alias = dwarf2_name (die, cu);
5132
5133   /* Figure out where the statement is being imported to.  */
5134   import_prefix = determine_prefix (die, cu);
5135
5136   /* Figure out what the scope of the imported die is and prepend it
5137      to the name of the imported die.  */
5138   imported_name_prefix = determine_prefix (imported_die, imported_cu);
5139
5140   if (imported_die->tag != DW_TAG_namespace
5141       && imported_die->tag != DW_TAG_module)
5142     {
5143       imported_declaration = imported_name;
5144       canonical_name = imported_name_prefix;
5145     }
5146   else if (strlen (imported_name_prefix) > 0)
5147     {
5148       temp = alloca (strlen (imported_name_prefix)
5149                      + 2 + strlen (imported_name) + 1);
5150       strcpy (temp, imported_name_prefix);
5151       strcat (temp, "::");
5152       strcat (temp, imported_name);
5153       canonical_name = temp;
5154     }
5155   else
5156     canonical_name = imported_name;
5157
5158   cp_add_using_directive (import_prefix,
5159                           canonical_name,
5160                           import_alias,
5161                           imported_declaration,
5162                           &cu->objfile->objfile_obstack);
5163 }
5164
5165 static void
5166 initialize_cu_func_list (struct dwarf2_cu *cu)
5167 {
5168   cu->first_fn = cu->last_fn = cu->cached_fn = NULL;
5169 }
5170
5171 /* Cleanup function for read_file_scope.  */
5172
5173 static void
5174 free_cu_line_header (void *arg)
5175 {
5176   struct dwarf2_cu *cu = arg;
5177
5178   free_line_header (cu->line_header);
5179   cu->line_header = NULL;
5180 }
5181
5182 static void
5183 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu,
5184                          char **name, char **comp_dir)
5185 {
5186   struct attribute *attr;
5187
5188   *name = NULL;
5189   *comp_dir = NULL;
5190
5191   /* Find the filename.  Do not use dwarf2_name here, since the filename
5192      is not a source language identifier.  */
5193   attr = dwarf2_attr (die, DW_AT_name, cu);
5194   if (attr)
5195     {
5196       *name = DW_STRING (attr);
5197     }
5198
5199   attr = dwarf2_attr (die, DW_AT_comp_dir, cu);
5200   if (attr)
5201     *comp_dir = DW_STRING (attr);
5202   else if (*name != NULL && IS_ABSOLUTE_PATH (*name))
5203     {
5204       *comp_dir = ldirname (*name);
5205       if (*comp_dir != NULL)
5206         make_cleanup (xfree, *comp_dir);
5207     }
5208   if (*comp_dir != NULL)
5209     {
5210       /* Irix 6.2 native cc prepends <machine>.: to the compilation
5211          directory, get rid of it.  */
5212       char *cp = strchr (*comp_dir, ':');
5213
5214       if (cp && cp != *comp_dir && cp[-1] == '.' && cp[1] == '/')
5215         *comp_dir = cp + 1;
5216     }
5217
5218   if (*name == NULL)
5219     *name = "<unknown>";
5220 }
5221
5222 /* Process DW_TAG_compile_unit.  */
5223
5224 static void
5225 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
5226 {
5227   struct objfile *objfile = cu->objfile;
5228   struct cleanup *back_to = make_cleanup (null_cleanup, 0);
5229   CORE_ADDR lowpc = ((CORE_ADDR) -1);
5230   CORE_ADDR highpc = ((CORE_ADDR) 0);
5231   struct attribute *attr;
5232   char *name = NULL;
5233   char *comp_dir = NULL;
5234   struct die_info *child_die;
5235   bfd *abfd = objfile->obfd;
5236   struct line_header *line_header = 0;
5237   CORE_ADDR baseaddr;
5238
5239   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
5240
5241   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
5242
5243   /* If we didn't find a lowpc, set it to highpc to avoid complaints
5244      from finish_block.  */
5245   if (lowpc == ((CORE_ADDR) -1))
5246     lowpc = highpc;
5247   lowpc += baseaddr;
5248   highpc += baseaddr;
5249
5250   find_file_and_directory (die, cu, &name, &comp_dir);
5251
5252   attr = dwarf2_attr (die, DW_AT_language, cu);
5253   if (attr)
5254     {
5255       set_cu_language (DW_UNSND (attr), cu);
5256     }
5257
5258   attr = dwarf2_attr (die, DW_AT_producer, cu);
5259   if (attr)
5260     cu->producer = DW_STRING (attr);
5261
5262   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
5263      standardised yet.  As a workaround for the language detection we fall
5264      back to the DW_AT_producer string.  */
5265   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
5266     cu->language = language_opencl;
5267
5268   /* We assume that we're processing GCC output.  */
5269   processing_gcc_compilation = 2;
5270
5271   processing_has_namespace_info = 0;
5272
5273   start_symtab (name, comp_dir, lowpc);
5274   record_debugformat ("DWARF 2");
5275   record_producer (cu->producer);
5276
5277   initialize_cu_func_list (cu);
5278
5279   /* Decode line number information if present.  We do this before
5280      processing child DIEs, so that the line header table is available
5281      for DW_AT_decl_file.  */
5282   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
5283   if (attr)
5284     {
5285       unsigned int line_offset = DW_UNSND (attr);
5286       line_header = dwarf_decode_line_header (line_offset, abfd, cu);
5287       if (line_header)
5288         {
5289           cu->line_header = line_header;
5290           make_cleanup (free_cu_line_header, cu);
5291           dwarf_decode_lines (line_header, comp_dir, abfd, cu, NULL);
5292         }
5293     }
5294
5295   /* Process all dies in compilation unit.  */
5296   if (die->child != NULL)
5297     {
5298       child_die = die->child;
5299       while (child_die && child_die->tag)
5300         {
5301           process_die (child_die, cu);
5302           child_die = sibling_die (child_die);
5303         }
5304     }
5305
5306   /* Decode macro information, if present.  Dwarf 2 macro information
5307      refers to information in the line number info statement program
5308      header, so we can only read it if we've read the header
5309      successfully.  */
5310   attr = dwarf2_attr (die, DW_AT_macro_info, cu);
5311   if (attr && line_header)
5312     {
5313       unsigned int macro_offset = DW_UNSND (attr);
5314
5315       dwarf_decode_macros (line_header, macro_offset,
5316                            comp_dir, abfd, cu);
5317     }
5318   do_cleanups (back_to);
5319 }
5320
5321 /* Process DW_TAG_type_unit.
5322    For TUs we want to skip the first top level sibling if it's not the
5323    actual type being defined by this TU.  In this case the first top
5324    level sibling is there to provide context only.  */
5325
5326 static void
5327 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
5328 {
5329   struct objfile *objfile = cu->objfile;
5330   struct cleanup *back_to = make_cleanup (null_cleanup, 0);
5331   CORE_ADDR lowpc;
5332   struct attribute *attr;
5333   char *name = NULL;
5334   char *comp_dir = NULL;
5335   struct die_info *child_die;
5336   bfd *abfd = objfile->obfd;
5337
5338   /* start_symtab needs a low pc, but we don't really have one.
5339      Do what read_file_scope would do in the absence of such info.  */
5340   lowpc = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
5341
5342   /* Find the filename.  Do not use dwarf2_name here, since the filename
5343      is not a source language identifier.  */
5344   attr = dwarf2_attr (die, DW_AT_name, cu);
5345   if (attr)
5346     name = DW_STRING (attr);
5347
5348   attr = dwarf2_attr (die, DW_AT_comp_dir, cu);
5349   if (attr)
5350     comp_dir = DW_STRING (attr);
5351   else if (name != NULL && IS_ABSOLUTE_PATH (name))
5352     {
5353       comp_dir = ldirname (name);
5354       if (comp_dir != NULL)
5355         make_cleanup (xfree, comp_dir);
5356     }
5357
5358   if (name == NULL)
5359     name = "<unknown>";
5360
5361   attr = dwarf2_attr (die, DW_AT_language, cu);
5362   if (attr)
5363     set_cu_language (DW_UNSND (attr), cu);
5364
5365   /* This isn't technically needed today.  It is done for symmetry
5366      with read_file_scope.  */
5367   attr = dwarf2_attr (die, DW_AT_producer, cu);
5368   if (attr)
5369     cu->producer = DW_STRING (attr);
5370
5371   /* We assume that we're processing GCC output.  */
5372   processing_gcc_compilation = 2;
5373
5374   processing_has_namespace_info = 0;
5375
5376   start_symtab (name, comp_dir, lowpc);
5377   record_debugformat ("DWARF 2");
5378   record_producer (cu->producer);
5379
5380   /* Process the dies in the type unit.  */
5381   if (die->child == NULL)
5382     {
5383       dump_die_for_error (die);
5384       error (_("Dwarf Error: Missing children for type unit [in module %s]"),
5385              bfd_get_filename (abfd));
5386     }
5387
5388   child_die = die->child;
5389
5390   while (child_die && child_die->tag)
5391     {
5392       process_die (child_die, cu);
5393
5394       child_die = sibling_die (child_die);
5395     }
5396
5397   do_cleanups (back_to);
5398 }
5399
5400 static void
5401 add_to_cu_func_list (const char *name, CORE_ADDR lowpc, CORE_ADDR highpc,
5402                      struct dwarf2_cu *cu)
5403 {
5404   struct function_range *thisfn;
5405
5406   thisfn = (struct function_range *)
5407     obstack_alloc (&cu->comp_unit_obstack, sizeof (struct function_range));
5408   thisfn->name = name;
5409   thisfn->lowpc = lowpc;
5410   thisfn->highpc = highpc;
5411   thisfn->seen_line = 0;
5412   thisfn->next = NULL;
5413
5414   if (cu->last_fn == NULL)
5415       cu->first_fn = thisfn;
5416   else
5417       cu->last_fn->next = thisfn;
5418
5419   cu->last_fn = thisfn;
5420 }
5421
5422 /* qsort helper for inherit_abstract_dies.  */
5423
5424 static int
5425 unsigned_int_compar (const void *ap, const void *bp)
5426 {
5427   unsigned int a = *(unsigned int *) ap;
5428   unsigned int b = *(unsigned int *) bp;
5429
5430   return (a > b) - (b > a);
5431 }
5432
5433 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
5434    Inherit only the children of the DW_AT_abstract_origin DIE not being
5435    already referenced by DW_AT_abstract_origin from the children of the
5436    current DIE.  */
5437
5438 static void
5439 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
5440 {
5441   struct die_info *child_die;
5442   unsigned die_children_count;
5443   /* CU offsets which were referenced by children of the current DIE.  */
5444   unsigned *offsets;
5445   unsigned *offsets_end, *offsetp;
5446   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
5447   struct die_info *origin_die;
5448   /* Iterator of the ORIGIN_DIE children.  */
5449   struct die_info *origin_child_die;
5450   struct cleanup *cleanups;
5451   struct attribute *attr;
5452   struct dwarf2_cu *origin_cu;
5453   struct pending **origin_previous_list_in_scope;
5454
5455   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
5456   if (!attr)
5457     return;
5458
5459   /* Note that following die references may follow to a die in a
5460      different cu.  */
5461
5462   origin_cu = cu;
5463   origin_die = follow_die_ref (die, attr, &origin_cu);
5464
5465   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
5466      symbols in.  */
5467   origin_previous_list_in_scope = origin_cu->list_in_scope;
5468   origin_cu->list_in_scope = cu->list_in_scope;
5469
5470   if (die->tag != origin_die->tag
5471       && !(die->tag == DW_TAG_inlined_subroutine
5472            && origin_die->tag == DW_TAG_subprogram))
5473     complaint (&symfile_complaints,
5474                _("DIE 0x%x and its abstract origin 0x%x have different tags"),
5475                die->offset, origin_die->offset);
5476
5477   child_die = die->child;
5478   die_children_count = 0;
5479   while (child_die && child_die->tag)
5480     {
5481       child_die = sibling_die (child_die);
5482       die_children_count++;
5483     }
5484   offsets = xmalloc (sizeof (*offsets) * die_children_count);
5485   cleanups = make_cleanup (xfree, offsets);
5486
5487   offsets_end = offsets;
5488   child_die = die->child;
5489   while (child_die && child_die->tag)
5490     {
5491       /* For each CHILD_DIE, find the corresponding child of
5492          ORIGIN_DIE.  If there is more than one layer of
5493          DW_AT_abstract_origin, follow them all; there shouldn't be,
5494          but GCC versions at least through 4.4 generate this (GCC PR
5495          40573).  */
5496       struct die_info *child_origin_die = child_die;
5497       struct dwarf2_cu *child_origin_cu = cu;
5498
5499       while (1)
5500         {
5501           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
5502                               child_origin_cu);
5503           if (attr == NULL)
5504             break;
5505           child_origin_die = follow_die_ref (child_origin_die, attr,
5506                                              &child_origin_cu);
5507         }
5508
5509       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
5510          counterpart may exist.  */
5511       if (child_origin_die != child_die)
5512         {
5513           if (child_die->tag != child_origin_die->tag
5514               && !(child_die->tag == DW_TAG_inlined_subroutine
5515                    && child_origin_die->tag == DW_TAG_subprogram))
5516             complaint (&symfile_complaints,
5517                        _("Child DIE 0x%x and its abstract origin 0x%x have "
5518                          "different tags"), child_die->offset,
5519                        child_origin_die->offset);
5520           if (child_origin_die->parent != origin_die)
5521             complaint (&symfile_complaints,
5522                        _("Child DIE 0x%x and its abstract origin 0x%x have "
5523                          "different parents"), child_die->offset,
5524                        child_origin_die->offset);
5525           else
5526             *offsets_end++ = child_origin_die->offset;
5527         }
5528       child_die = sibling_die (child_die);
5529     }
5530   qsort (offsets, offsets_end - offsets, sizeof (*offsets),
5531          unsigned_int_compar);
5532   for (offsetp = offsets + 1; offsetp < offsets_end; offsetp++)
5533     if (offsetp[-1] == *offsetp)
5534       complaint (&symfile_complaints,
5535                  _("Multiple children of DIE 0x%x refer "
5536                    "to DIE 0x%x as their abstract origin"),
5537                  die->offset, *offsetp);
5538
5539   offsetp = offsets;
5540   origin_child_die = origin_die->child;
5541   while (origin_child_die && origin_child_die->tag)
5542     {
5543       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
5544       while (offsetp < offsets_end && *offsetp < origin_child_die->offset)
5545         offsetp++;
5546       if (offsetp >= offsets_end || *offsetp > origin_child_die->offset)
5547         {
5548           /* Found that ORIGIN_CHILD_DIE is really not referenced.  */
5549           process_die (origin_child_die, origin_cu);
5550         }
5551       origin_child_die = sibling_die (origin_child_die);
5552     }
5553   origin_cu->list_in_scope = origin_previous_list_in_scope;
5554
5555   do_cleanups (cleanups);
5556 }
5557
5558 static void
5559 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
5560 {
5561   struct objfile *objfile = cu->objfile;
5562   struct context_stack *new;
5563   CORE_ADDR lowpc;
5564   CORE_ADDR highpc;
5565   struct die_info *child_die;
5566   struct attribute *attr, *call_line, *call_file;
5567   char *name;
5568   CORE_ADDR baseaddr;
5569   struct block *block;
5570   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
5571   VEC (symbolp) *template_args = NULL;
5572   struct template_symbol *templ_func = NULL;
5573
5574   if (inlined_func)
5575     {
5576       /* If we do not have call site information, we can't show the
5577          caller of this inlined function.  That's too confusing, so
5578          only use the scope for local variables.  */
5579       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
5580       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
5581       if (call_line == NULL || call_file == NULL)
5582         {
5583           read_lexical_block_scope (die, cu);
5584           return;
5585         }
5586     }
5587
5588   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
5589
5590   name = dwarf2_name (die, cu);
5591
5592   /* Ignore functions with missing or empty names.  These are actually
5593      illegal according to the DWARF standard.  */
5594   if (name == NULL)
5595     {
5596       complaint (&symfile_complaints,
5597                  _("missing name for subprogram DIE at %d"), die->offset);
5598       return;
5599     }
5600
5601   /* Ignore functions with missing or invalid low and high pc attributes.  */
5602   if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
5603     {
5604       attr = dwarf2_attr (die, DW_AT_external, cu);
5605       if (!attr || !DW_UNSND (attr))
5606         complaint (&symfile_complaints,
5607                    _("cannot get low and high bounds "
5608                      "for subprogram DIE at %d"),
5609                    die->offset);
5610       return;
5611     }
5612
5613   lowpc += baseaddr;
5614   highpc += baseaddr;
5615
5616   /* Record the function range for dwarf_decode_lines.  */
5617   add_to_cu_func_list (name, lowpc, highpc, cu);
5618
5619   /* If we have any template arguments, then we must allocate a
5620      different sort of symbol.  */
5621   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
5622     {
5623       if (child_die->tag == DW_TAG_template_type_param
5624           || child_die->tag == DW_TAG_template_value_param)
5625         {
5626           templ_func = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5627                                        struct template_symbol);
5628           templ_func->base.is_cplus_template_function = 1;
5629           break;
5630         }
5631     }
5632
5633   new = push_context (0, lowpc);
5634   new->name = new_symbol_full (die, read_type_die (die, cu), cu,
5635                                (struct symbol *) templ_func);
5636
5637   /* If there is a location expression for DW_AT_frame_base, record
5638      it.  */
5639   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
5640   if (attr)
5641     /* FIXME: cagney/2004-01-26: The DW_AT_frame_base's location
5642        expression is being recorded directly in the function's symbol
5643        and not in a separate frame-base object.  I guess this hack is
5644        to avoid adding some sort of frame-base adjunct/annex to the
5645        function's symbol :-(.  The problem with doing this is that it
5646        results in a function symbol with a location expression that
5647        has nothing to do with the location of the function, ouch!  The
5648        relationship should be: a function's symbol has-a frame base; a
5649        frame-base has-a location expression.  */
5650     dwarf2_symbol_mark_computed (attr, new->name, cu);
5651
5652   cu->list_in_scope = &local_symbols;
5653
5654   if (die->child != NULL)
5655     {
5656       child_die = die->child;
5657       while (child_die && child_die->tag)
5658         {
5659           if (child_die->tag == DW_TAG_template_type_param
5660               || child_die->tag == DW_TAG_template_value_param)
5661             {
5662               struct symbol *arg = new_symbol (child_die, NULL, cu);
5663
5664               if (arg != NULL)
5665                 VEC_safe_push (symbolp, template_args, arg);
5666             }
5667           else
5668             process_die (child_die, cu);
5669           child_die = sibling_die (child_die);
5670         }
5671     }
5672
5673   inherit_abstract_dies (die, cu);
5674
5675   /* If we have a DW_AT_specification, we might need to import using
5676      directives from the context of the specification DIE.  See the
5677      comment in determine_prefix.  */
5678   if (cu->language == language_cplus
5679       && dwarf2_attr (die, DW_AT_specification, cu))
5680     {
5681       struct dwarf2_cu *spec_cu = cu;
5682       struct die_info *spec_die = die_specification (die, &spec_cu);
5683
5684       while (spec_die)
5685         {
5686           child_die = spec_die->child;
5687           while (child_die && child_die->tag)
5688             {
5689               if (child_die->tag == DW_TAG_imported_module)
5690                 process_die (child_die, spec_cu);
5691               child_die = sibling_die (child_die);
5692             }
5693
5694           /* In some cases, GCC generates specification DIEs that
5695              themselves contain DW_AT_specification attributes.  */
5696           spec_die = die_specification (spec_die, &spec_cu);
5697         }
5698     }
5699
5700   new = pop_context ();
5701   /* Make a block for the local symbols within.  */
5702   block = finish_block (new->name, &local_symbols, new->old_blocks,
5703                         lowpc, highpc, objfile);
5704
5705   /* For C++, set the block's scope.  */
5706   if (cu->language == language_cplus || cu->language == language_fortran)
5707     cp_set_block_scope (new->name, block, &objfile->objfile_obstack,
5708                         determine_prefix (die, cu),
5709                         processing_has_namespace_info);
5710
5711   /* If we have address ranges, record them.  */
5712   dwarf2_record_block_ranges (die, block, baseaddr, cu);
5713
5714   /* Attach template arguments to function.  */
5715   if (! VEC_empty (symbolp, template_args))
5716     {
5717       gdb_assert (templ_func != NULL);
5718
5719       templ_func->n_template_arguments = VEC_length (symbolp, template_args);
5720       templ_func->template_arguments
5721         = obstack_alloc (&objfile->objfile_obstack,
5722                          (templ_func->n_template_arguments
5723                           * sizeof (struct symbol *)));
5724       memcpy (templ_func->template_arguments,
5725               VEC_address (symbolp, template_args),
5726               (templ_func->n_template_arguments * sizeof (struct symbol *)));
5727       VEC_free (symbolp, template_args);
5728     }
5729
5730   /* In C++, we can have functions nested inside functions (e.g., when
5731      a function declares a class that has methods).  This means that
5732      when we finish processing a function scope, we may need to go
5733      back to building a containing block's symbol lists.  */
5734   local_symbols = new->locals;
5735   param_symbols = new->params;
5736   using_directives = new->using_directives;
5737
5738   /* If we've finished processing a top-level function, subsequent
5739      symbols go in the file symbol list.  */
5740   if (outermost_context_p ())
5741     cu->list_in_scope = &file_symbols;
5742 }
5743
5744 /* Process all the DIES contained within a lexical block scope.  Start
5745    a new scope, process the dies, and then close the scope.  */
5746
5747 static void
5748 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
5749 {
5750   struct objfile *objfile = cu->objfile;
5751   struct context_stack *new;
5752   CORE_ADDR lowpc, highpc;
5753   struct die_info *child_die;
5754   CORE_ADDR baseaddr;
5755
5756   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
5757
5758   /* Ignore blocks with missing or invalid low and high pc attributes.  */
5759   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
5760      as multiple lexical blocks?  Handling children in a sane way would
5761      be nasty.  Might be easier to properly extend generic blocks to
5762      describe ranges.  */
5763   if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
5764     return;
5765   lowpc += baseaddr;
5766   highpc += baseaddr;
5767
5768   push_context (0, lowpc);
5769   if (die->child != NULL)
5770     {
5771       child_die = die->child;
5772       while (child_die && child_die->tag)
5773         {
5774           process_die (child_die, cu);
5775           child_die = sibling_die (child_die);
5776         }
5777     }
5778   new = pop_context ();
5779
5780   if (local_symbols != NULL || using_directives != NULL)
5781     {
5782       struct block *block
5783         = finish_block (0, &local_symbols, new->old_blocks, new->start_addr,
5784                         highpc, objfile);
5785
5786       /* Note that recording ranges after traversing children, as we
5787          do here, means that recording a parent's ranges entails
5788          walking across all its children's ranges as they appear in
5789          the address map, which is quadratic behavior.
5790
5791          It would be nicer to record the parent's ranges before
5792          traversing its children, simply overriding whatever you find
5793          there.  But since we don't even decide whether to create a
5794          block until after we've traversed its children, that's hard
5795          to do.  */
5796       dwarf2_record_block_ranges (die, block, baseaddr, cu);
5797     }
5798   local_symbols = new->locals;
5799   using_directives = new->using_directives;
5800 }
5801
5802 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
5803    Return 1 if the attributes are present and valid, otherwise, return 0.
5804    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
5805
5806 static int
5807 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
5808                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
5809                     struct partial_symtab *ranges_pst)
5810 {
5811   struct objfile *objfile = cu->objfile;
5812   struct comp_unit_head *cu_header = &cu->header;
5813   bfd *obfd = objfile->obfd;
5814   unsigned int addr_size = cu_header->addr_size;
5815   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
5816   /* Base address selection entry.  */
5817   CORE_ADDR base;
5818   int found_base;
5819   unsigned int dummy;
5820   gdb_byte *buffer;
5821   CORE_ADDR marker;
5822   int low_set;
5823   CORE_ADDR low = 0;
5824   CORE_ADDR high = 0;
5825   CORE_ADDR baseaddr;
5826
5827   found_base = cu->base_known;
5828   base = cu->base_address;
5829
5830   dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
5831   if (offset >= dwarf2_per_objfile->ranges.size)
5832     {
5833       complaint (&symfile_complaints,
5834                  _("Offset %d out of bounds for DW_AT_ranges attribute"),
5835                  offset);
5836       return 0;
5837     }
5838   buffer = dwarf2_per_objfile->ranges.buffer + offset;
5839
5840   /* Read in the largest possible address.  */
5841   marker = read_address (obfd, buffer, cu, &dummy);
5842   if ((marker & mask) == mask)
5843     {
5844       /* If we found the largest possible address, then
5845          read the base address.  */
5846       base = read_address (obfd, buffer + addr_size, cu, &dummy);
5847       buffer += 2 * addr_size;
5848       offset += 2 * addr_size;
5849       found_base = 1;
5850     }
5851
5852   low_set = 0;
5853
5854   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
5855
5856   while (1)
5857     {
5858       CORE_ADDR range_beginning, range_end;
5859
5860       range_beginning = read_address (obfd, buffer, cu, &dummy);
5861       buffer += addr_size;
5862       range_end = read_address (obfd, buffer, cu, &dummy);
5863       buffer += addr_size;
5864       offset += 2 * addr_size;
5865
5866       /* An end of list marker is a pair of zero addresses.  */
5867       if (range_beginning == 0 && range_end == 0)
5868         /* Found the end of list entry.  */
5869         break;
5870
5871       /* Each base address selection entry is a pair of 2 values.
5872          The first is the largest possible address, the second is
5873          the base address.  Check for a base address here.  */
5874       if ((range_beginning & mask) == mask)
5875         {
5876           /* If we found the largest possible address, then
5877              read the base address.  */
5878           base = read_address (obfd, buffer + addr_size, cu, &dummy);
5879           found_base = 1;
5880           continue;
5881         }
5882
5883       if (!found_base)
5884         {
5885           /* We have no valid base address for the ranges
5886              data.  */
5887           complaint (&symfile_complaints,
5888                      _("Invalid .debug_ranges data (no base address)"));
5889           return 0;
5890         }
5891
5892       if (range_beginning > range_end)
5893         {
5894           /* Inverted range entries are invalid.  */
5895           complaint (&symfile_complaints,
5896                      _("Invalid .debug_ranges data (inverted range)"));
5897           return 0;
5898         }
5899
5900       /* Empty range entries have no effect.  */
5901       if (range_beginning == range_end)
5902         continue;
5903
5904       range_beginning += base;
5905       range_end += base;
5906
5907       if (ranges_pst != NULL)
5908         addrmap_set_empty (objfile->psymtabs_addrmap,
5909                            range_beginning + baseaddr,
5910                            range_end - 1 + baseaddr,
5911                            ranges_pst);
5912
5913       /* FIXME: This is recording everything as a low-high
5914          segment of consecutive addresses.  We should have a
5915          data structure for discontiguous block ranges
5916          instead.  */
5917       if (! low_set)
5918         {
5919           low = range_beginning;
5920           high = range_end;
5921           low_set = 1;
5922         }
5923       else
5924         {
5925           if (range_beginning < low)
5926             low = range_beginning;
5927           if (range_end > high)
5928             high = range_end;
5929         }
5930     }
5931
5932   if (! low_set)
5933     /* If the first entry is an end-of-list marker, the range
5934        describes an empty scope, i.e. no instructions.  */
5935     return 0;
5936
5937   if (low_return)
5938     *low_return = low;
5939   if (high_return)
5940     *high_return = high;
5941   return 1;
5942 }
5943
5944 /* Get low and high pc attributes from a die.  Return 1 if the attributes
5945    are present and valid, otherwise, return 0.  Return -1 if the range is
5946    discontinuous, i.e. derived from DW_AT_ranges information.  */
5947 static int
5948 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
5949                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
5950                       struct partial_symtab *pst)
5951 {
5952   struct attribute *attr;
5953   CORE_ADDR low = 0;
5954   CORE_ADDR high = 0;
5955   int ret = 0;
5956
5957   attr = dwarf2_attr (die, DW_AT_high_pc, cu);
5958   if (attr)
5959     {
5960       high = DW_ADDR (attr);
5961       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
5962       if (attr)
5963         low = DW_ADDR (attr);
5964       else
5965         /* Found high w/o low attribute.  */
5966         return 0;
5967
5968       /* Found consecutive range of addresses.  */
5969       ret = 1;
5970     }
5971   else
5972     {
5973       attr = dwarf2_attr (die, DW_AT_ranges, cu);
5974       if (attr != NULL)
5975         {
5976           /* Value of the DW_AT_ranges attribute is the offset in the
5977              .debug_ranges section.  */
5978           if (!dwarf2_ranges_read (DW_UNSND (attr), &low, &high, cu, pst))
5979             return 0;
5980           /* Found discontinuous range of addresses.  */
5981           ret = -1;
5982         }
5983     }
5984
5985   /* read_partial_die has also the strict LOW < HIGH requirement.  */
5986   if (high <= low)
5987     return 0;
5988
5989   /* When using the GNU linker, .gnu.linkonce. sections are used to
5990      eliminate duplicate copies of functions and vtables and such.
5991      The linker will arbitrarily choose one and discard the others.
5992      The AT_*_pc values for such functions refer to local labels in
5993      these sections.  If the section from that file was discarded, the
5994      labels are not in the output, so the relocs get a value of 0.
5995      If this is a discarded function, mark the pc bounds as invalid,
5996      so that GDB will ignore it.  */
5997   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
5998     return 0;
5999
6000   *lowpc = low;
6001   *highpc = high;
6002   return ret;
6003 }
6004
6005 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
6006    its low and high PC addresses.  Do nothing if these addresses could not
6007    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
6008    and HIGHPC to the high address if greater than HIGHPC.  */
6009
6010 static void
6011 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
6012                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
6013                                  struct dwarf2_cu *cu)
6014 {
6015   CORE_ADDR low, high;
6016   struct die_info *child = die->child;
6017
6018   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL))
6019     {
6020       *lowpc = min (*lowpc, low);
6021       *highpc = max (*highpc, high);
6022     }
6023
6024   /* If the language does not allow nested subprograms (either inside
6025      subprograms or lexical blocks), we're done.  */
6026   if (cu->language != language_ada)
6027     return;
6028
6029   /* Check all the children of the given DIE.  If it contains nested
6030      subprograms, then check their pc bounds.  Likewise, we need to
6031      check lexical blocks as well, as they may also contain subprogram
6032      definitions.  */
6033   while (child && child->tag)
6034     {
6035       if (child->tag == DW_TAG_subprogram
6036           || child->tag == DW_TAG_lexical_block)
6037         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
6038       child = sibling_die (child);
6039     }
6040 }
6041
6042 /* Get the low and high pc's represented by the scope DIE, and store
6043    them in *LOWPC and *HIGHPC.  If the correct values can't be
6044    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
6045
6046 static void
6047 get_scope_pc_bounds (struct die_info *die,
6048                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
6049                      struct dwarf2_cu *cu)
6050 {
6051   CORE_ADDR best_low = (CORE_ADDR) -1;
6052   CORE_ADDR best_high = (CORE_ADDR) 0;
6053   CORE_ADDR current_low, current_high;
6054
6055   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL))
6056     {
6057       best_low = current_low;
6058       best_high = current_high;
6059     }
6060   else
6061     {
6062       struct die_info *child = die->child;
6063
6064       while (child && child->tag)
6065         {
6066           switch (child->tag) {
6067           case DW_TAG_subprogram:
6068             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
6069             break;
6070           case DW_TAG_namespace:
6071           case DW_TAG_module:
6072             /* FIXME: carlton/2004-01-16: Should we do this for
6073                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
6074                that current GCC's always emit the DIEs corresponding
6075                to definitions of methods of classes as children of a
6076                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
6077                the DIEs giving the declarations, which could be
6078                anywhere).  But I don't see any reason why the
6079                standards says that they have to be there.  */
6080             get_scope_pc_bounds (child, &current_low, &current_high, cu);
6081
6082             if (current_low != ((CORE_ADDR) -1))
6083               {
6084                 best_low = min (best_low, current_low);
6085                 best_high = max (best_high, current_high);
6086               }
6087             break;
6088           default:
6089             /* Ignore.  */
6090             break;
6091           }
6092
6093           child = sibling_die (child);
6094         }
6095     }
6096
6097   *lowpc = best_low;
6098   *highpc = best_high;
6099 }
6100
6101 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
6102    in DIE.  */
6103 static void
6104 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
6105                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
6106 {
6107   struct attribute *attr;
6108
6109   attr = dwarf2_attr (die, DW_AT_high_pc, cu);
6110   if (attr)
6111     {
6112       CORE_ADDR high = DW_ADDR (attr);
6113
6114       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
6115       if (attr)
6116         {
6117           CORE_ADDR low = DW_ADDR (attr);
6118
6119           record_block_range (block, baseaddr + low, baseaddr + high - 1);
6120         }
6121     }
6122
6123   attr = dwarf2_attr (die, DW_AT_ranges, cu);
6124   if (attr)
6125     {
6126       bfd *obfd = cu->objfile->obfd;
6127
6128       /* The value of the DW_AT_ranges attribute is the offset of the
6129          address range list in the .debug_ranges section.  */
6130       unsigned long offset = DW_UNSND (attr);
6131       gdb_byte *buffer = dwarf2_per_objfile->ranges.buffer + offset;
6132
6133       /* For some target architectures, but not others, the
6134          read_address function sign-extends the addresses it returns.
6135          To recognize base address selection entries, we need a
6136          mask.  */
6137       unsigned int addr_size = cu->header.addr_size;
6138       CORE_ADDR base_select_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
6139
6140       /* The base address, to which the next pair is relative.  Note
6141          that this 'base' is a DWARF concept: most entries in a range
6142          list are relative, to reduce the number of relocs against the
6143          debugging information.  This is separate from this function's
6144          'baseaddr' argument, which GDB uses to relocate debugging
6145          information from a shared library based on the address at
6146          which the library was loaded.  */
6147       CORE_ADDR base = cu->base_address;
6148       int base_known = cu->base_known;
6149
6150       gdb_assert (dwarf2_per_objfile->ranges.readin);
6151       if (offset >= dwarf2_per_objfile->ranges.size)
6152         {
6153           complaint (&symfile_complaints,
6154                      _("Offset %lu out of bounds for DW_AT_ranges attribute"),
6155                      offset);
6156           return;
6157         }
6158
6159       for (;;)
6160         {
6161           unsigned int bytes_read;
6162           CORE_ADDR start, end;
6163
6164           start = read_address (obfd, buffer, cu, &bytes_read);
6165           buffer += bytes_read;
6166           end = read_address (obfd, buffer, cu, &bytes_read);
6167           buffer += bytes_read;
6168
6169           /* Did we find the end of the range list?  */
6170           if (start == 0 && end == 0)
6171             break;
6172
6173           /* Did we find a base address selection entry?  */
6174           else if ((start & base_select_mask) == base_select_mask)
6175             {
6176               base = end;
6177               base_known = 1;
6178             }
6179
6180           /* We found an ordinary address range.  */
6181           else
6182             {
6183               if (!base_known)
6184                 {
6185                   complaint (&symfile_complaints,
6186                              _("Invalid .debug_ranges data "
6187                                "(no base address)"));
6188                   return;
6189                 }
6190
6191               if (start > end)
6192                 {
6193                   /* Inverted range entries are invalid.  */
6194                   complaint (&symfile_complaints,
6195                              _("Invalid .debug_ranges data "
6196                                "(inverted range)"));
6197                   return;
6198                 }
6199
6200               /* Empty range entries have no effect.  */
6201               if (start == end)
6202                 continue;
6203
6204               record_block_range (block,
6205                                   baseaddr + base + start,
6206                                   baseaddr + base + end - 1);
6207             }
6208         }
6209     }
6210 }
6211
6212 /* Add an aggregate field to the field list.  */
6213
6214 static void
6215 dwarf2_add_field (struct field_info *fip, struct die_info *die,
6216                   struct dwarf2_cu *cu)
6217 {
6218   struct objfile *objfile = cu->objfile;
6219   struct gdbarch *gdbarch = get_objfile_arch (objfile);
6220   struct nextfield *new_field;
6221   struct attribute *attr;
6222   struct field *fp;
6223   char *fieldname = "";
6224
6225   /* Allocate a new field list entry and link it in.  */
6226   new_field = (struct nextfield *) xmalloc (sizeof (struct nextfield));
6227   make_cleanup (xfree, new_field);
6228   memset (new_field, 0, sizeof (struct nextfield));
6229
6230   if (die->tag == DW_TAG_inheritance)
6231     {
6232       new_field->next = fip->baseclasses;
6233       fip->baseclasses = new_field;
6234     }
6235   else
6236     {
6237       new_field->next = fip->fields;
6238       fip->fields = new_field;
6239     }
6240   fip->nfields++;
6241
6242   /* Handle accessibility and virtuality of field.
6243      The default accessibility for members is public, the default
6244      accessibility for inheritance is private.  */
6245   if (die->tag != DW_TAG_inheritance)
6246     new_field->accessibility = DW_ACCESS_public;
6247   else
6248     new_field->accessibility = DW_ACCESS_private;
6249   new_field->virtuality = DW_VIRTUALITY_none;
6250
6251   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
6252   if (attr)
6253     new_field->accessibility = DW_UNSND (attr);
6254   if (new_field->accessibility != DW_ACCESS_public)
6255     fip->non_public_fields = 1;
6256   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
6257   if (attr)
6258     new_field->virtuality = DW_UNSND (attr);
6259
6260   fp = &new_field->field;
6261
6262   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
6263     {
6264       /* Data member other than a C++ static data member.  */
6265
6266       /* Get type of field.  */
6267       fp->type = die_type (die, cu);
6268
6269       SET_FIELD_BITPOS (*fp, 0);
6270
6271       /* Get bit size of field (zero if none).  */
6272       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
6273       if (attr)
6274         {
6275           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
6276         }
6277       else
6278         {
6279           FIELD_BITSIZE (*fp) = 0;
6280         }
6281
6282       /* Get bit offset of field.  */
6283       attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
6284       if (attr)
6285         {
6286           int byte_offset = 0;
6287
6288           if (attr_form_is_section_offset (attr))
6289             dwarf2_complex_location_expr_complaint ();
6290           else if (attr_form_is_constant (attr))
6291             byte_offset = dwarf2_get_attr_constant_value (attr, 0);
6292           else if (attr_form_is_block (attr))
6293             byte_offset = decode_locdesc (DW_BLOCK (attr), cu);
6294           else
6295             dwarf2_complex_location_expr_complaint ();
6296
6297           SET_FIELD_BITPOS (*fp, byte_offset * bits_per_byte);
6298         }
6299       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
6300       if (attr)
6301         {
6302           if (gdbarch_bits_big_endian (gdbarch))
6303             {
6304               /* For big endian bits, the DW_AT_bit_offset gives the
6305                  additional bit offset from the MSB of the containing
6306                  anonymous object to the MSB of the field.  We don't
6307                  have to do anything special since we don't need to
6308                  know the size of the anonymous object.  */
6309               FIELD_BITPOS (*fp) += DW_UNSND (attr);
6310             }
6311           else
6312             {
6313               /* For little endian bits, compute the bit offset to the
6314                  MSB of the anonymous object, subtract off the number of
6315                  bits from the MSB of the field to the MSB of the
6316                  object, and then subtract off the number of bits of
6317                  the field itself.  The result is the bit offset of
6318                  the LSB of the field.  */
6319               int anonymous_size;
6320               int bit_offset = DW_UNSND (attr);
6321
6322               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
6323               if (attr)
6324                 {
6325                   /* The size of the anonymous object containing
6326                      the bit field is explicit, so use the
6327                      indicated size (in bytes).  */
6328                   anonymous_size = DW_UNSND (attr);
6329                 }
6330               else
6331                 {
6332                   /* The size of the anonymous object containing
6333                      the bit field must be inferred from the type
6334                      attribute of the data member containing the
6335                      bit field.  */
6336                   anonymous_size = TYPE_LENGTH (fp->type);
6337                 }
6338               FIELD_BITPOS (*fp) += anonymous_size * bits_per_byte
6339                 - bit_offset - FIELD_BITSIZE (*fp);
6340             }
6341         }
6342
6343       /* Get name of field.  */
6344       fieldname = dwarf2_name (die, cu);
6345       if (fieldname == NULL)
6346         fieldname = "";
6347
6348       /* The name is already allocated along with this objfile, so we don't
6349          need to duplicate it for the type.  */
6350       fp->name = fieldname;
6351
6352       /* Change accessibility for artificial fields (e.g. virtual table
6353          pointer or virtual base class pointer) to private.  */
6354       if (dwarf2_attr (die, DW_AT_artificial, cu))
6355         {
6356           FIELD_ARTIFICIAL (*fp) = 1;
6357           new_field->accessibility = DW_ACCESS_private;
6358           fip->non_public_fields = 1;
6359         }
6360     }
6361   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
6362     {
6363       /* C++ static member.  */
6364
6365       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
6366          is a declaration, but all versions of G++ as of this writing
6367          (so through at least 3.2.1) incorrectly generate
6368          DW_TAG_variable tags.  */
6369
6370       char *physname;
6371
6372       /* Get name of field.  */
6373       fieldname = dwarf2_name (die, cu);
6374       if (fieldname == NULL)
6375         return;
6376
6377       attr = dwarf2_attr (die, DW_AT_const_value, cu);
6378       if (attr
6379           /* Only create a symbol if this is an external value.
6380              new_symbol checks this and puts the value in the global symbol
6381              table, which we want.  If it is not external, new_symbol
6382              will try to put the value in cu->list_in_scope which is wrong.  */
6383           && dwarf2_flag_true_p (die, DW_AT_external, cu))
6384         {
6385           /* A static const member, not much different than an enum as far as
6386              we're concerned, except that we can support more types.  */
6387           new_symbol (die, NULL, cu);
6388         }
6389
6390       /* Get physical name.  */
6391       physname = (char *) dwarf2_physname (fieldname, die, cu);
6392
6393       /* The name is already allocated along with this objfile, so we don't
6394          need to duplicate it for the type.  */
6395       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
6396       FIELD_TYPE (*fp) = die_type (die, cu);
6397       FIELD_NAME (*fp) = fieldname;
6398     }
6399   else if (die->tag == DW_TAG_inheritance)
6400     {
6401       /* C++ base class field.  */
6402       attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
6403       if (attr)
6404         {
6405           int byte_offset = 0;
6406
6407           if (attr_form_is_section_offset (attr))
6408             dwarf2_complex_location_expr_complaint ();
6409           else if (attr_form_is_constant (attr))
6410             byte_offset = dwarf2_get_attr_constant_value (attr, 0);
6411           else if (attr_form_is_block (attr))
6412             byte_offset = decode_locdesc (DW_BLOCK (attr), cu);
6413           else
6414             dwarf2_complex_location_expr_complaint ();
6415
6416           SET_FIELD_BITPOS (*fp, byte_offset * bits_per_byte);
6417         }
6418       FIELD_BITSIZE (*fp) = 0;
6419       FIELD_TYPE (*fp) = die_type (die, cu);
6420       FIELD_NAME (*fp) = type_name_no_tag (fp->type);
6421       fip->nbaseclasses++;
6422     }
6423 }
6424
6425 /* Add a typedef defined in the scope of the FIP's class.  */
6426
6427 static void
6428 dwarf2_add_typedef (struct field_info *fip, struct die_info *die,
6429                     struct dwarf2_cu *cu)
6430 {
6431   struct objfile *objfile = cu->objfile;
6432   struct typedef_field_list *new_field;
6433   struct attribute *attr;
6434   struct typedef_field *fp;
6435   char *fieldname = "";
6436
6437   /* Allocate a new field list entry and link it in.  */
6438   new_field = xzalloc (sizeof (*new_field));
6439   make_cleanup (xfree, new_field);
6440
6441   gdb_assert (die->tag == DW_TAG_typedef);
6442
6443   fp = &new_field->field;
6444
6445   /* Get name of field.  */
6446   fp->name = dwarf2_name (die, cu);
6447   if (fp->name == NULL)
6448     return;
6449
6450   fp->type = read_type_die (die, cu);
6451
6452   new_field->next = fip->typedef_field_list;
6453   fip->typedef_field_list = new_field;
6454   fip->typedef_field_list_count++;
6455 }
6456
6457 /* Create the vector of fields, and attach it to the type.  */
6458
6459 static void
6460 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
6461                               struct dwarf2_cu *cu)
6462 {
6463   int nfields = fip->nfields;
6464
6465   /* Record the field count, allocate space for the array of fields,
6466      and create blank accessibility bitfields if necessary.  */
6467   TYPE_NFIELDS (type) = nfields;
6468   TYPE_FIELDS (type) = (struct field *)
6469     TYPE_ALLOC (type, sizeof (struct field) * nfields);
6470   memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
6471
6472   if (fip->non_public_fields && cu->language != language_ada)
6473     {
6474       ALLOCATE_CPLUS_STRUCT_TYPE (type);
6475
6476       TYPE_FIELD_PRIVATE_BITS (type) =
6477         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
6478       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
6479
6480       TYPE_FIELD_PROTECTED_BITS (type) =
6481         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
6482       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
6483
6484       TYPE_FIELD_IGNORE_BITS (type) =
6485         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
6486       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
6487     }
6488
6489   /* If the type has baseclasses, allocate and clear a bit vector for
6490      TYPE_FIELD_VIRTUAL_BITS.  */
6491   if (fip->nbaseclasses && cu->language != language_ada)
6492     {
6493       int num_bytes = B_BYTES (fip->nbaseclasses);
6494       unsigned char *pointer;
6495
6496       ALLOCATE_CPLUS_STRUCT_TYPE (type);
6497       pointer = TYPE_ALLOC (type, num_bytes);
6498       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
6499       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->nbaseclasses);
6500       TYPE_N_BASECLASSES (type) = fip->nbaseclasses;
6501     }
6502
6503   /* Copy the saved-up fields into the field vector.  Start from the head of
6504      the list, adding to the tail of the field array, so that they end up in
6505      the same order in the array in which they were added to the list.  */
6506   while (nfields-- > 0)
6507     {
6508       struct nextfield *fieldp;
6509
6510       if (fip->fields)
6511         {
6512           fieldp = fip->fields;
6513           fip->fields = fieldp->next;
6514         }
6515       else
6516         {
6517           fieldp = fip->baseclasses;
6518           fip->baseclasses = fieldp->next;
6519         }
6520
6521       TYPE_FIELD (type, nfields) = fieldp->field;
6522       switch (fieldp->accessibility)
6523         {
6524         case DW_ACCESS_private:
6525           if (cu->language != language_ada)
6526             SET_TYPE_FIELD_PRIVATE (type, nfields);
6527           break;
6528
6529         case DW_ACCESS_protected:
6530           if (cu->language != language_ada)
6531             SET_TYPE_FIELD_PROTECTED (type, nfields);
6532           break;
6533
6534         case DW_ACCESS_public:
6535           break;
6536
6537         default:
6538           /* Unknown accessibility.  Complain and treat it as public.  */
6539           {
6540             complaint (&symfile_complaints, _("unsupported accessibility %d"),
6541                        fieldp->accessibility);
6542           }
6543           break;
6544         }
6545       if (nfields < fip->nbaseclasses)
6546         {
6547           switch (fieldp->virtuality)
6548             {
6549             case DW_VIRTUALITY_virtual:
6550             case DW_VIRTUALITY_pure_virtual:
6551               if (cu->language == language_ada)
6552                 error (_("unexpected virtuality in component of Ada type"));
6553               SET_TYPE_FIELD_VIRTUAL (type, nfields);
6554               break;
6555             }
6556         }
6557     }
6558 }
6559
6560 /* Add a member function to the proper fieldlist.  */
6561
6562 static void
6563 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
6564                       struct type *type, struct dwarf2_cu *cu)
6565 {
6566   struct objfile *objfile = cu->objfile;
6567   struct attribute *attr;
6568   struct fnfieldlist *flp;
6569   int i;
6570   struct fn_field *fnp;
6571   char *fieldname;
6572   struct nextfnfield *new_fnfield;
6573   struct type *this_type;
6574
6575   if (cu->language == language_ada)
6576     error (_("unexpected member function in Ada type"));
6577
6578   /* Get name of member function.  */
6579   fieldname = dwarf2_name (die, cu);
6580   if (fieldname == NULL)
6581     return;
6582
6583   /* Look up member function name in fieldlist.  */
6584   for (i = 0; i < fip->nfnfields; i++)
6585     {
6586       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
6587         break;
6588     }
6589
6590   /* Create new list element if necessary.  */
6591   if (i < fip->nfnfields)
6592     flp = &fip->fnfieldlists[i];
6593   else
6594     {
6595       if ((fip->nfnfields % DW_FIELD_ALLOC_CHUNK) == 0)
6596         {
6597           fip->fnfieldlists = (struct fnfieldlist *)
6598             xrealloc (fip->fnfieldlists,
6599                       (fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
6600                       * sizeof (struct fnfieldlist));
6601           if (fip->nfnfields == 0)
6602             make_cleanup (free_current_contents, &fip->fnfieldlists);
6603         }
6604       flp = &fip->fnfieldlists[fip->nfnfields];
6605       flp->name = fieldname;
6606       flp->length = 0;
6607       flp->head = NULL;
6608       i = fip->nfnfields++;
6609     }
6610
6611   /* Create a new member function field and chain it to the field list
6612      entry.  */
6613   new_fnfield = (struct nextfnfield *) xmalloc (sizeof (struct nextfnfield));
6614   make_cleanup (xfree, new_fnfield);
6615   memset (new_fnfield, 0, sizeof (struct nextfnfield));
6616   new_fnfield->next = flp->head;
6617   flp->head = new_fnfield;
6618   flp->length++;
6619
6620   /* Fill in the member function field info.  */
6621   fnp = &new_fnfield->fnfield;
6622
6623   /* Delay processing of the physname until later.  */
6624   if (cu->language == language_cplus || cu->language == language_java)
6625     {
6626       add_to_method_list (type, i, flp->length - 1, fieldname,
6627                           die, cu);
6628     }
6629   else
6630     {
6631       char *physname = (char *) dwarf2_physname (fieldname, die, cu);
6632       fnp->physname = physname ? physname : "";
6633     }
6634
6635   fnp->type = alloc_type (objfile);
6636   this_type = read_type_die (die, cu);
6637   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
6638     {
6639       int nparams = TYPE_NFIELDS (this_type);
6640
6641       /* TYPE is the domain of this method, and THIS_TYPE is the type
6642            of the method itself (TYPE_CODE_METHOD).  */
6643       smash_to_method_type (fnp->type, type,
6644                             TYPE_TARGET_TYPE (this_type),
6645                             TYPE_FIELDS (this_type),
6646                             TYPE_NFIELDS (this_type),
6647                             TYPE_VARARGS (this_type));
6648
6649       /* Handle static member functions.
6650          Dwarf2 has no clean way to discern C++ static and non-static
6651          member functions.  G++ helps GDB by marking the first
6652          parameter for non-static member functions (which is the this
6653          pointer) as artificial.  We obtain this information from
6654          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
6655       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
6656         fnp->voffset = VOFFSET_STATIC;
6657     }
6658   else
6659     complaint (&symfile_complaints, _("member function type missing for '%s'"),
6660                dwarf2_full_name (fieldname, die, cu));
6661
6662   /* Get fcontext from DW_AT_containing_type if present.  */
6663   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
6664     fnp->fcontext = die_containing_type (die, cu);
6665
6666   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
6667      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
6668
6669   /* Get accessibility.  */
6670   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
6671   if (attr)
6672     {
6673       switch (DW_UNSND (attr))
6674         {
6675         case DW_ACCESS_private:
6676           fnp->is_private = 1;
6677           break;
6678         case DW_ACCESS_protected:
6679           fnp->is_protected = 1;
6680           break;
6681         }
6682     }
6683
6684   /* Check for artificial methods.  */
6685   attr = dwarf2_attr (die, DW_AT_artificial, cu);
6686   if (attr && DW_UNSND (attr) != 0)
6687     fnp->is_artificial = 1;
6688
6689   /* Get index in virtual function table if it is a virtual member
6690      function.  For older versions of GCC, this is an offset in the
6691      appropriate virtual table, as specified by DW_AT_containing_type.
6692      For everyone else, it is an expression to be evaluated relative
6693      to the object address.  */
6694
6695   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
6696   if (attr)
6697     {
6698       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
6699         {
6700           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
6701             {
6702               /* Old-style GCC.  */
6703               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
6704             }
6705           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
6706                    || (DW_BLOCK (attr)->size > 1
6707                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
6708                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
6709             {
6710               struct dwarf_block blk;
6711               int offset;
6712
6713               offset = (DW_BLOCK (attr)->data[0] == DW_OP_deref
6714                         ? 1 : 2);
6715               blk.size = DW_BLOCK (attr)->size - offset;
6716               blk.data = DW_BLOCK (attr)->data + offset;
6717               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
6718               if ((fnp->voffset % cu->header.addr_size) != 0)
6719                 dwarf2_complex_location_expr_complaint ();
6720               else
6721                 fnp->voffset /= cu->header.addr_size;
6722               fnp->voffset += 2;
6723             }
6724           else
6725             dwarf2_complex_location_expr_complaint ();
6726
6727           if (!fnp->fcontext)
6728             fnp->fcontext = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
6729         }
6730       else if (attr_form_is_section_offset (attr))
6731         {
6732           dwarf2_complex_location_expr_complaint ();
6733         }
6734       else
6735         {
6736           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
6737                                                  fieldname);
6738         }
6739     }
6740   else
6741     {
6742       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
6743       if (attr && DW_UNSND (attr))
6744         {
6745           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
6746           complaint (&symfile_complaints,
6747                      _("Member function \"%s\" (offset %d) is virtual "
6748                        "but the vtable offset is not specified"),
6749                      fieldname, die->offset);
6750           ALLOCATE_CPLUS_STRUCT_TYPE (type);
6751           TYPE_CPLUS_DYNAMIC (type) = 1;
6752         }
6753     }
6754 }
6755
6756 /* Create the vector of member function fields, and attach it to the type.  */
6757
6758 static void
6759 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
6760                                  struct dwarf2_cu *cu)
6761 {
6762   struct fnfieldlist *flp;
6763   int total_length = 0;
6764   int i;
6765
6766   if (cu->language == language_ada)
6767     error (_("unexpected member functions in Ada type"));
6768
6769   ALLOCATE_CPLUS_STRUCT_TYPE (type);
6770   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
6771     TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields);
6772
6773   for (i = 0, flp = fip->fnfieldlists; i < fip->nfnfields; i++, flp++)
6774     {
6775       struct nextfnfield *nfp = flp->head;
6776       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
6777       int k;
6778
6779       TYPE_FN_FIELDLIST_NAME (type, i) = flp->name;
6780       TYPE_FN_FIELDLIST_LENGTH (type, i) = flp->length;
6781       fn_flp->fn_fields = (struct fn_field *)
6782         TYPE_ALLOC (type, sizeof (struct fn_field) * flp->length);
6783       for (k = flp->length; (k--, nfp); nfp = nfp->next)
6784         fn_flp->fn_fields[k] = nfp->fnfield;
6785
6786       total_length += flp->length;
6787     }
6788
6789   TYPE_NFN_FIELDS (type) = fip->nfnfields;
6790   TYPE_NFN_FIELDS_TOTAL (type) = total_length;
6791 }
6792
6793 /* Returns non-zero if NAME is the name of a vtable member in CU's
6794    language, zero otherwise.  */
6795 static int
6796 is_vtable_name (const char *name, struct dwarf2_cu *cu)
6797 {
6798   static const char vptr[] = "_vptr";
6799   static const char vtable[] = "vtable";
6800
6801   /* Look for the C++ and Java forms of the vtable.  */
6802   if ((cu->language == language_java
6803        && strncmp (name, vtable, sizeof (vtable) - 1) == 0)
6804        || (strncmp (name, vptr, sizeof (vptr) - 1) == 0
6805        && is_cplus_marker (name[sizeof (vptr) - 1])))
6806     return 1;
6807
6808   return 0;
6809 }
6810
6811 /* GCC outputs unnamed structures that are really pointers to member
6812    functions, with the ABI-specified layout.  If TYPE describes
6813    such a structure, smash it into a member function type.
6814
6815    GCC shouldn't do this; it should just output pointer to member DIEs.
6816    This is GCC PR debug/28767.  */
6817
6818 static void
6819 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
6820 {
6821   struct type *pfn_type, *domain_type, *new_type;
6822
6823   /* Check for a structure with no name and two children.  */
6824   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
6825     return;
6826
6827   /* Check for __pfn and __delta members.  */
6828   if (TYPE_FIELD_NAME (type, 0) == NULL
6829       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
6830       || TYPE_FIELD_NAME (type, 1) == NULL
6831       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
6832     return;
6833
6834   /* Find the type of the method.  */
6835   pfn_type = TYPE_FIELD_TYPE (type, 0);
6836   if (pfn_type == NULL
6837       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
6838       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
6839     return;
6840
6841   /* Look for the "this" argument.  */
6842   pfn_type = TYPE_TARGET_TYPE (pfn_type);
6843   if (TYPE_NFIELDS (pfn_type) == 0
6844       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
6845       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
6846     return;
6847
6848   domain_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
6849   new_type = alloc_type (objfile);
6850   smash_to_method_type (new_type, domain_type, TYPE_TARGET_TYPE (pfn_type),
6851                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
6852                         TYPE_VARARGS (pfn_type));
6853   smash_to_methodptr_type (type, new_type);
6854 }
6855
6856 /* Called when we find the DIE that starts a structure or union scope
6857    (definition) to create a type for the structure or union.  Fill in
6858    the type's name and general properties; the members will not be
6859    processed until process_structure_type.
6860
6861    NOTE: we need to call these functions regardless of whether or not the
6862    DIE has a DW_AT_name attribute, since it might be an anonymous
6863    structure or union.  This gets the type entered into our set of
6864    user defined types.
6865
6866    However, if the structure is incomplete (an opaque struct/union)
6867    then suppress creating a symbol table entry for it since gdb only
6868    wants to find the one with the complete definition.  Note that if
6869    it is complete, we just call new_symbol, which does it's own
6870    checking about whether the struct/union is anonymous or not (and
6871    suppresses creating a symbol table entry itself).  */
6872
6873 static struct type *
6874 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
6875 {
6876   struct objfile *objfile = cu->objfile;
6877   struct type *type;
6878   struct attribute *attr;
6879   char *name;
6880
6881   /* If the definition of this type lives in .debug_types, read that type.
6882      Don't follow DW_AT_specification though, that will take us back up
6883      the chain and we want to go down.  */
6884   attr = dwarf2_attr_no_follow (die, DW_AT_signature, cu);
6885   if (attr)
6886     {
6887       struct dwarf2_cu *type_cu = cu;
6888       struct die_info *type_die = follow_die_ref_or_sig (die, attr, &type_cu);
6889
6890       /* We could just recurse on read_structure_type, but we need to call
6891          get_die_type to ensure only one type for this DIE is created.
6892          This is important, for example, because for c++ classes we need
6893          TYPE_NAME set which is only done by new_symbol.  Blech.  */
6894       type = read_type_die (type_die, type_cu);
6895
6896       /* TYPE_CU may not be the same as CU.
6897          Ensure TYPE is recorded in CU's type_hash table.  */
6898       return set_die_type (die, type, cu);
6899     }
6900
6901   type = alloc_type (objfile);
6902   INIT_CPLUS_SPECIFIC (type);
6903
6904   name = dwarf2_name (die, cu);
6905   if (name != NULL)
6906     {
6907       if (cu->language == language_cplus
6908           || cu->language == language_java)
6909         {
6910           char *full_name = (char *) dwarf2_full_name (name, die, cu);
6911
6912           /* dwarf2_full_name might have already finished building the DIE's
6913              type.  If so, there is no need to continue.  */
6914           if (get_die_type (die, cu) != NULL)
6915             return get_die_type (die, cu);
6916
6917           TYPE_TAG_NAME (type) = full_name;
6918           if (die->tag == DW_TAG_structure_type
6919               || die->tag == DW_TAG_class_type)
6920             TYPE_NAME (type) = TYPE_TAG_NAME (type);
6921         }
6922       else
6923         {
6924           /* The name is already allocated along with this objfile, so
6925              we don't need to duplicate it for the type.  */
6926           TYPE_TAG_NAME (type) = (char *) name;
6927           if (die->tag == DW_TAG_class_type)
6928             TYPE_NAME (type) = TYPE_TAG_NAME (type);
6929         }
6930     }
6931
6932   if (die->tag == DW_TAG_structure_type)
6933     {
6934       TYPE_CODE (type) = TYPE_CODE_STRUCT;
6935     }
6936   else if (die->tag == DW_TAG_union_type)
6937     {
6938       TYPE_CODE (type) = TYPE_CODE_UNION;
6939     }
6940   else
6941     {
6942       TYPE_CODE (type) = TYPE_CODE_CLASS;
6943     }
6944
6945   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
6946     TYPE_DECLARED_CLASS (type) = 1;
6947
6948   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
6949   if (attr)
6950     {
6951       TYPE_LENGTH (type) = DW_UNSND (attr);
6952     }
6953   else
6954     {
6955       TYPE_LENGTH (type) = 0;
6956     }
6957
6958   TYPE_STUB_SUPPORTED (type) = 1;
6959   if (die_is_declaration (die, cu))
6960     TYPE_STUB (type) = 1;
6961   else if (attr == NULL && die->child == NULL
6962            && producer_is_realview (cu->producer))
6963     /* RealView does not output the required DW_AT_declaration
6964        on incomplete types.  */
6965     TYPE_STUB (type) = 1;
6966
6967   /* We need to add the type field to the die immediately so we don't
6968      infinitely recurse when dealing with pointers to the structure
6969      type within the structure itself.  */
6970   set_die_type (die, type, cu);
6971
6972   /* set_die_type should be already done.  */
6973   set_descriptive_type (type, die, cu);
6974
6975   return type;
6976 }
6977
6978 /* Finish creating a structure or union type, including filling in
6979    its members and creating a symbol for it.  */
6980
6981 static void
6982 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
6983 {
6984   struct objfile *objfile = cu->objfile;
6985   struct die_info *child_die = die->child;
6986   struct type *type;
6987
6988   type = get_die_type (die, cu);
6989   if (type == NULL)
6990     type = read_structure_type (die, cu);
6991
6992   if (die->child != NULL && ! die_is_declaration (die, cu))
6993     {
6994       struct field_info fi;
6995       struct die_info *child_die;
6996       VEC (symbolp) *template_args = NULL;
6997       struct cleanup *back_to = make_cleanup (null_cleanup, 0);
6998
6999       memset (&fi, 0, sizeof (struct field_info));
7000
7001       child_die = die->child;
7002
7003       while (child_die && child_die->tag)
7004         {
7005           if (child_die->tag == DW_TAG_member
7006               || child_die->tag == DW_TAG_variable)
7007             {
7008               /* NOTE: carlton/2002-11-05: A C++ static data member
7009                  should be a DW_TAG_member that is a declaration, but
7010                  all versions of G++ as of this writing (so through at
7011                  least 3.2.1) incorrectly generate DW_TAG_variable
7012                  tags for them instead.  */
7013               dwarf2_add_field (&fi, child_die, cu);
7014             }
7015           else if (child_die->tag == DW_TAG_subprogram)
7016             {
7017               /* C++ member function.  */
7018               dwarf2_add_member_fn (&fi, child_die, type, cu);
7019             }
7020           else if (child_die->tag == DW_TAG_inheritance)
7021             {
7022               /* C++ base class field.  */
7023               dwarf2_add_field (&fi, child_die, cu);
7024             }
7025           else if (child_die->tag == DW_TAG_typedef)
7026             dwarf2_add_typedef (&fi, child_die, cu);
7027           else if (child_die->tag == DW_TAG_template_type_param
7028                    || child_die->tag == DW_TAG_template_value_param)
7029             {
7030               struct symbol *arg = new_symbol (child_die, NULL, cu);
7031
7032               if (arg != NULL)
7033                 VEC_safe_push (symbolp, template_args, arg);
7034             }
7035
7036           child_die = sibling_die (child_die);
7037         }
7038
7039       /* Attach template arguments to type.  */
7040       if (! VEC_empty (symbolp, template_args))
7041         {
7042           ALLOCATE_CPLUS_STRUCT_TYPE (type);
7043           TYPE_N_TEMPLATE_ARGUMENTS (type)
7044             = VEC_length (symbolp, template_args);
7045           TYPE_TEMPLATE_ARGUMENTS (type)
7046             = obstack_alloc (&objfile->objfile_obstack,
7047                              (TYPE_N_TEMPLATE_ARGUMENTS (type)
7048                               * sizeof (struct symbol *)));
7049           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
7050                   VEC_address (symbolp, template_args),
7051                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
7052                    * sizeof (struct symbol *)));
7053           VEC_free (symbolp, template_args);
7054         }
7055
7056       /* Attach fields and member functions to the type.  */
7057       if (fi.nfields)
7058         dwarf2_attach_fields_to_type (&fi, type, cu);
7059       if (fi.nfnfields)
7060         {
7061           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
7062
7063           /* Get the type which refers to the base class (possibly this
7064              class itself) which contains the vtable pointer for the current
7065              class from the DW_AT_containing_type attribute.  This use of
7066              DW_AT_containing_type is a GNU extension.  */
7067
7068           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
7069             {
7070               struct type *t = die_containing_type (die, cu);
7071
7072               TYPE_VPTR_BASETYPE (type) = t;
7073               if (type == t)
7074                 {
7075                   int i;
7076
7077                   /* Our own class provides vtbl ptr.  */
7078                   for (i = TYPE_NFIELDS (t) - 1;
7079                        i >= TYPE_N_BASECLASSES (t);
7080                        --i)
7081                     {
7082                       char *fieldname = TYPE_FIELD_NAME (t, i);
7083
7084                       if (is_vtable_name (fieldname, cu))
7085                         {
7086                           TYPE_VPTR_FIELDNO (type) = i;
7087                           break;
7088                         }
7089                     }
7090
7091                   /* Complain if virtual function table field not found.  */
7092                   if (i < TYPE_N_BASECLASSES (t))
7093                     complaint (&symfile_complaints,
7094                                _("virtual function table pointer "
7095                                  "not found when defining class '%s'"),
7096                                TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
7097                                "");
7098                 }
7099               else
7100                 {
7101                   TYPE_VPTR_FIELDNO (type) = TYPE_VPTR_FIELDNO (t);
7102                 }
7103             }
7104           else if (cu->producer
7105                    && strncmp (cu->producer,
7106                                "IBM(R) XL C/C++ Advanced Edition", 32) == 0)
7107             {
7108               /* The IBM XLC compiler does not provide direct indication
7109                  of the containing type, but the vtable pointer is
7110                  always named __vfp.  */
7111
7112               int i;
7113
7114               for (i = TYPE_NFIELDS (type) - 1;
7115                    i >= TYPE_N_BASECLASSES (type);
7116                    --i)
7117                 {
7118                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
7119                     {
7120                       TYPE_VPTR_FIELDNO (type) = i;
7121                       TYPE_VPTR_BASETYPE (type) = type;
7122                       break;
7123                     }
7124                 }
7125             }
7126         }
7127
7128       /* Copy fi.typedef_field_list linked list elements content into the
7129          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
7130       if (fi.typedef_field_list)
7131         {
7132           int i = fi.typedef_field_list_count;
7133
7134           ALLOCATE_CPLUS_STRUCT_TYPE (type);
7135           TYPE_TYPEDEF_FIELD_ARRAY (type)
7136             = TYPE_ALLOC (type, sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * i);
7137           TYPE_TYPEDEF_FIELD_COUNT (type) = i;
7138
7139           /* Reverse the list order to keep the debug info elements order.  */
7140           while (--i >= 0)
7141             {
7142               struct typedef_field *dest, *src;
7143
7144               dest = &TYPE_TYPEDEF_FIELD (type, i);
7145               src = &fi.typedef_field_list->field;
7146               fi.typedef_field_list = fi.typedef_field_list->next;
7147               *dest = *src;
7148             }
7149         }
7150
7151       do_cleanups (back_to);
7152     }
7153
7154   quirk_gcc_member_function_pointer (type, cu->objfile);
7155
7156   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
7157      snapshots) has been known to create a die giving a declaration
7158      for a class that has, as a child, a die giving a definition for a
7159      nested class.  So we have to process our children even if the
7160      current die is a declaration.  Normally, of course, a declaration
7161      won't have any children at all.  */
7162
7163   while (child_die != NULL && child_die->tag)
7164     {
7165       if (child_die->tag == DW_TAG_member
7166           || child_die->tag == DW_TAG_variable
7167           || child_die->tag == DW_TAG_inheritance
7168           || child_die->tag == DW_TAG_template_value_param
7169           || child_die->tag == DW_TAG_template_type_param)
7170         {
7171           /* Do nothing.  */
7172         }
7173       else
7174         process_die (child_die, cu);
7175
7176       child_die = sibling_die (child_die);
7177     }
7178
7179   /* Do not consider external references.  According to the DWARF standard,
7180      these DIEs are identified by the fact that they have no byte_size
7181      attribute, and a declaration attribute.  */
7182   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
7183       || !die_is_declaration (die, cu))
7184     new_symbol (die, type, cu);
7185 }
7186
7187 /* Given a DW_AT_enumeration_type die, set its type.  We do not
7188    complete the type's fields yet, or create any symbols.  */
7189
7190 static struct type *
7191 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
7192 {
7193   struct objfile *objfile = cu->objfile;
7194   struct type *type;
7195   struct attribute *attr;
7196   const char *name;
7197
7198   /* If the definition of this type lives in .debug_types, read that type.
7199      Don't follow DW_AT_specification though, that will take us back up
7200      the chain and we want to go down.  */
7201   attr = dwarf2_attr_no_follow (die, DW_AT_signature, cu);
7202   if (attr)
7203     {
7204       struct dwarf2_cu *type_cu = cu;
7205       struct die_info *type_die = follow_die_ref_or_sig (die, attr, &type_cu);
7206
7207       type = read_type_die (type_die, type_cu);
7208
7209       /* TYPE_CU may not be the same as CU.
7210          Ensure TYPE is recorded in CU's type_hash table.  */
7211       return set_die_type (die, type, cu);
7212     }
7213
7214   type = alloc_type (objfile);
7215
7216   TYPE_CODE (type) = TYPE_CODE_ENUM;
7217   name = dwarf2_full_name (NULL, die, cu);
7218   if (name != NULL)
7219     TYPE_TAG_NAME (type) = (char *) name;
7220
7221   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
7222   if (attr)
7223     {
7224       TYPE_LENGTH (type) = DW_UNSND (attr);
7225     }
7226   else
7227     {
7228       TYPE_LENGTH (type) = 0;
7229     }
7230
7231   /* The enumeration DIE can be incomplete.  In Ada, any type can be
7232      declared as private in the package spec, and then defined only
7233      inside the package body.  Such types are known as Taft Amendment
7234      Types.  When another package uses such a type, an incomplete DIE
7235      may be generated by the compiler.  */
7236   if (die_is_declaration (die, cu))
7237     TYPE_STUB (type) = 1;
7238
7239   return set_die_type (die, type, cu);
7240 }
7241
7242 /* Given a pointer to a die which begins an enumeration, process all
7243    the dies that define the members of the enumeration, and create the
7244    symbol for the enumeration type.
7245
7246    NOTE: We reverse the order of the element list.  */
7247
7248 static void
7249 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
7250 {
7251   struct type *this_type;
7252
7253   this_type = get_die_type (die, cu);
7254   if (this_type == NULL)
7255     this_type = read_enumeration_type (die, cu);
7256
7257   if (die->child != NULL)
7258     {
7259       struct die_info *child_die;
7260       struct symbol *sym;
7261       struct field *fields = NULL;
7262       int num_fields = 0;
7263       int unsigned_enum = 1;
7264       char *name;
7265
7266       child_die = die->child;
7267       while (child_die && child_die->tag)
7268         {
7269           if (child_die->tag != DW_TAG_enumerator)
7270             {
7271               process_die (child_die, cu);
7272             }
7273           else
7274             {
7275               name = dwarf2_name (child_die, cu);
7276               if (name)
7277                 {
7278                   sym = new_symbol (child_die, this_type, cu);
7279                   if (SYMBOL_VALUE (sym) < 0)
7280                     unsigned_enum = 0;
7281
7282                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
7283                     {
7284                       fields = (struct field *)
7285                         xrealloc (fields,
7286                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
7287                                   * sizeof (struct field));
7288                     }
7289
7290                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
7291                   FIELD_TYPE (fields[num_fields]) = NULL;
7292                   SET_FIELD_BITPOS (fields[num_fields], SYMBOL_VALUE (sym));
7293                   FIELD_BITSIZE (fields[num_fields]) = 0;
7294
7295                   num_fields++;
7296                 }
7297             }
7298
7299           child_die = sibling_die (child_die);
7300         }
7301
7302       if (num_fields)
7303         {
7304           TYPE_NFIELDS (this_type) = num_fields;
7305           TYPE_FIELDS (this_type) = (struct field *)
7306             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
7307           memcpy (TYPE_FIELDS (this_type), fields,
7308                   sizeof (struct field) * num_fields);
7309           xfree (fields);
7310         }
7311       if (unsigned_enum)
7312         TYPE_UNSIGNED (this_type) = 1;
7313     }
7314
7315   new_symbol (die, this_type, cu);
7316 }
7317
7318 /* Extract all information from a DW_TAG_array_type DIE and put it in
7319    the DIE's type field.  For now, this only handles one dimensional
7320    arrays.  */
7321
7322 static struct type *
7323 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
7324 {
7325   struct objfile *objfile = cu->objfile;
7326   struct die_info *child_die;
7327   struct type *type;
7328   struct type *element_type, *range_type, *index_type;
7329   struct type **range_types = NULL;
7330   struct attribute *attr;
7331   int ndim = 0;
7332   struct cleanup *back_to;
7333   char *name;
7334
7335   element_type = die_type (die, cu);
7336
7337   /* The die_type call above may have already set the type for this DIE.  */
7338   type = get_die_type (die, cu);
7339   if (type)
7340     return type;
7341
7342   /* Irix 6.2 native cc creates array types without children for
7343      arrays with unspecified length.  */
7344   if (die->child == NULL)
7345     {
7346       index_type = objfile_type (objfile)->builtin_int;
7347       range_type = create_range_type (NULL, index_type, 0, -1);
7348       type = create_array_type (NULL, element_type, range_type);
7349       return set_die_type (die, type, cu);
7350     }
7351
7352   back_to = make_cleanup (null_cleanup, NULL);
7353   child_die = die->child;
7354   while (child_die && child_die->tag)
7355     {
7356       if (child_die->tag == DW_TAG_subrange_type)
7357         {
7358           struct type *child_type = read_type_die (child_die, cu);
7359
7360           if (child_type != NULL)
7361             {
7362               /* The range type was succesfully read.  Save it for the
7363                  array type creation.  */
7364               if ((ndim % DW_FIELD_ALLOC_CHUNK) == 0)
7365                 {
7366                   range_types = (struct type **)
7367                     xrealloc (range_types, (ndim + DW_FIELD_ALLOC_CHUNK)
7368                               * sizeof (struct type *));
7369                   if (ndim == 0)
7370                     make_cleanup (free_current_contents, &range_types);
7371                 }
7372               range_types[ndim++] = child_type;
7373             }
7374         }
7375       child_die = sibling_die (child_die);
7376     }
7377
7378   /* Dwarf2 dimensions are output from left to right, create the
7379      necessary array types in backwards order.  */
7380
7381   type = element_type;
7382
7383   if (read_array_order (die, cu) == DW_ORD_col_major)
7384     {
7385       int i = 0;
7386
7387       while (i < ndim)
7388         type = create_array_type (NULL, type, range_types[i++]);
7389     }
7390   else
7391     {
7392       while (ndim-- > 0)
7393         type = create_array_type (NULL, type, range_types[ndim]);
7394     }
7395
7396   /* Understand Dwarf2 support for vector types (like they occur on
7397      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
7398      array type.  This is not part of the Dwarf2/3 standard yet, but a
7399      custom vendor extension.  The main difference between a regular
7400      array and the vector variant is that vectors are passed by value
7401      to functions.  */
7402   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
7403   if (attr)
7404     make_vector_type (type);
7405
7406   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
7407      implementation may choose to implement triple vectors using this
7408      attribute.  */
7409   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
7410   if (attr)
7411     {
7412       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
7413         TYPE_LENGTH (type) = DW_UNSND (attr);
7414       else
7415         complaint (&symfile_complaints,
7416                    _("DW_AT_byte_size for array type smaller "
7417                      "than the total size of elements"));
7418     }
7419
7420   name = dwarf2_name (die, cu);
7421   if (name)
7422     TYPE_NAME (type) = name;
7423
7424   /* Install the type in the die.  */
7425   set_die_type (die, type, cu);
7426
7427   /* set_die_type should be already done.  */
7428   set_descriptive_type (type, die, cu);
7429
7430   do_cleanups (back_to);
7431
7432   return type;
7433 }
7434
7435 static enum dwarf_array_dim_ordering
7436 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
7437 {
7438   struct attribute *attr;
7439
7440   attr = dwarf2_attr (die, DW_AT_ordering, cu);
7441
7442   if (attr) return DW_SND (attr);
7443
7444   /* GNU F77 is a special case, as at 08/2004 array type info is the
7445      opposite order to the dwarf2 specification, but data is still
7446      laid out as per normal fortran.
7447
7448      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
7449      version checking.  */
7450
7451   if (cu->language == language_fortran
7452       && cu->producer && strstr (cu->producer, "GNU F77"))
7453     {
7454       return DW_ORD_row_major;
7455     }
7456
7457   switch (cu->language_defn->la_array_ordering)
7458     {
7459     case array_column_major:
7460       return DW_ORD_col_major;
7461     case array_row_major:
7462     default:
7463       return DW_ORD_row_major;
7464     };
7465 }
7466
7467 /* Extract all information from a DW_TAG_set_type DIE and put it in
7468    the DIE's type field.  */
7469
7470 static struct type *
7471 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
7472 {
7473   struct type *domain_type, *set_type;
7474   struct attribute *attr;
7475
7476   domain_type = die_type (die, cu);
7477
7478   /* The die_type call above may have already set the type for this DIE.  */
7479   set_type = get_die_type (die, cu);
7480   if (set_type)
7481     return set_type;
7482
7483   set_type = create_set_type (NULL, domain_type);
7484
7485   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
7486   if (attr)
7487     TYPE_LENGTH (set_type) = DW_UNSND (attr);
7488
7489   return set_die_type (die, set_type, cu);
7490 }
7491
7492 /* First cut: install each common block member as a global variable.  */
7493
7494 static void
7495 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
7496 {
7497   struct die_info *child_die;
7498   struct attribute *attr;
7499   struct symbol *sym;
7500   CORE_ADDR base = (CORE_ADDR) 0;
7501
7502   attr = dwarf2_attr (die, DW_AT_location, cu);
7503   if (attr)
7504     {
7505       /* Support the .debug_loc offsets.  */
7506       if (attr_form_is_block (attr))
7507         {
7508           base = decode_locdesc (DW_BLOCK (attr), cu);
7509         }
7510       else if (attr_form_is_section_offset (attr))
7511         {
7512           dwarf2_complex_location_expr_complaint ();
7513         }
7514       else
7515         {
7516           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
7517                                                  "common block member");
7518         }
7519     }
7520   if (die->child != NULL)
7521     {
7522       child_die = die->child;
7523       while (child_die && child_die->tag)
7524         {
7525           sym = new_symbol (child_die, NULL, cu);
7526           attr = dwarf2_attr (child_die, DW_AT_data_member_location, cu);
7527           if (sym != NULL && attr != NULL)
7528             {
7529               CORE_ADDR byte_offset = 0;
7530
7531               if (attr_form_is_section_offset (attr))
7532                 dwarf2_complex_location_expr_complaint ();
7533               else if (attr_form_is_constant (attr))
7534                 byte_offset = dwarf2_get_attr_constant_value (attr, 0);
7535               else if (attr_form_is_block (attr))
7536                 byte_offset = decode_locdesc (DW_BLOCK (attr), cu);
7537               else
7538                 dwarf2_complex_location_expr_complaint ();
7539
7540               SYMBOL_VALUE_ADDRESS (sym) = base + byte_offset;
7541               add_symbol_to_list (sym, &global_symbols);
7542             }
7543           child_die = sibling_die (child_die);
7544         }
7545     }
7546 }
7547
7548 /* Create a type for a C++ namespace.  */
7549
7550 static struct type *
7551 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
7552 {
7553   struct objfile *objfile = cu->objfile;
7554   const char *previous_prefix, *name;
7555   int is_anonymous;
7556   struct type *type;
7557
7558   /* For extensions, reuse the type of the original namespace.  */
7559   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
7560     {
7561       struct die_info *ext_die;
7562       struct dwarf2_cu *ext_cu = cu;
7563
7564       ext_die = dwarf2_extension (die, &ext_cu);
7565       type = read_type_die (ext_die, ext_cu);
7566
7567       /* EXT_CU may not be the same as CU.
7568          Ensure TYPE is recorded in CU's type_hash table.  */
7569       return set_die_type (die, type, cu);
7570     }
7571
7572   name = namespace_name (die, &is_anonymous, cu);
7573
7574   /* Now build the name of the current namespace.  */
7575
7576   previous_prefix = determine_prefix (die, cu);
7577   if (previous_prefix[0] != '\0')
7578     name = typename_concat (&objfile->objfile_obstack,
7579                             previous_prefix, name, 0, cu);
7580
7581   /* Create the type.  */
7582   type = init_type (TYPE_CODE_NAMESPACE, 0, 0, NULL,
7583                     objfile);
7584   TYPE_NAME (type) = (char *) name;
7585   TYPE_TAG_NAME (type) = TYPE_NAME (type);
7586
7587   return set_die_type (die, type, cu);
7588 }
7589
7590 /* Read a C++ namespace.  */
7591
7592 static void
7593 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
7594 {
7595   struct objfile *objfile = cu->objfile;
7596   int is_anonymous;
7597
7598   /* Add a symbol associated to this if we haven't seen the namespace
7599      before.  Also, add a using directive if it's an anonymous
7600      namespace.  */
7601
7602   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
7603     {
7604       struct type *type;
7605
7606       type = read_type_die (die, cu);
7607       new_symbol (die, type, cu);
7608
7609       namespace_name (die, &is_anonymous, cu);
7610       if (is_anonymous)
7611         {
7612           const char *previous_prefix = determine_prefix (die, cu);
7613
7614           cp_add_using_directive (previous_prefix, TYPE_NAME (type), NULL,
7615                                   NULL, &objfile->objfile_obstack);
7616         }
7617     }
7618
7619   if (die->child != NULL)
7620     {
7621       struct die_info *child_die = die->child;
7622
7623       while (child_die && child_die->tag)
7624         {
7625           process_die (child_die, cu);
7626           child_die = sibling_die (child_die);
7627         }
7628     }
7629 }
7630
7631 /* Read a Fortran module as type.  This DIE can be only a declaration used for
7632    imported module.  Still we need that type as local Fortran "use ... only"
7633    declaration imports depend on the created type in determine_prefix.  */
7634
7635 static struct type *
7636 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
7637 {
7638   struct objfile *objfile = cu->objfile;
7639   char *module_name;
7640   struct type *type;
7641
7642   module_name = dwarf2_name (die, cu);
7643   if (!module_name)
7644     complaint (&symfile_complaints,
7645                _("DW_TAG_module has no name, offset 0x%x"),
7646                die->offset);
7647   type = init_type (TYPE_CODE_MODULE, 0, 0, module_name, objfile);
7648
7649   /* determine_prefix uses TYPE_TAG_NAME.  */
7650   TYPE_TAG_NAME (type) = TYPE_NAME (type);
7651
7652   return set_die_type (die, type, cu);
7653 }
7654
7655 /* Read a Fortran module.  */
7656
7657 static void
7658 read_module (struct die_info *die, struct dwarf2_cu *cu)
7659 {
7660   struct die_info *child_die = die->child;
7661
7662   while (child_die && child_die->tag)
7663     {
7664       process_die (child_die, cu);
7665       child_die = sibling_die (child_die);
7666     }
7667 }
7668
7669 /* Return the name of the namespace represented by DIE.  Set
7670    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
7671    namespace.  */
7672
7673 static const char *
7674 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
7675 {
7676   struct die_info *current_die;
7677   const char *name = NULL;
7678
7679   /* Loop through the extensions until we find a name.  */
7680
7681   for (current_die = die;
7682        current_die != NULL;
7683        current_die = dwarf2_extension (die, &cu))
7684     {
7685       name = dwarf2_name (current_die, cu);
7686       if (name != NULL)
7687         break;
7688     }
7689
7690   /* Is it an anonymous namespace?  */
7691
7692   *is_anonymous = (name == NULL);
7693   if (*is_anonymous)
7694     name = "(anonymous namespace)";
7695
7696   return name;
7697 }
7698
7699 /* Extract all information from a DW_TAG_pointer_type DIE and add to
7700    the user defined type vector.  */
7701
7702 static struct type *
7703 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
7704 {
7705   struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
7706   struct comp_unit_head *cu_header = &cu->header;
7707   struct type *type;
7708   struct attribute *attr_byte_size;
7709   struct attribute *attr_address_class;
7710   int byte_size, addr_class;
7711   struct type *target_type;
7712
7713   target_type = die_type (die, cu);
7714
7715   /* The die_type call above may have already set the type for this DIE.  */
7716   type = get_die_type (die, cu);
7717   if (type)
7718     return type;
7719
7720   type = lookup_pointer_type (target_type);
7721
7722   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
7723   if (attr_byte_size)
7724     byte_size = DW_UNSND (attr_byte_size);
7725   else
7726     byte_size = cu_header->addr_size;
7727
7728   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
7729   if (attr_address_class)
7730     addr_class = DW_UNSND (attr_address_class);
7731   else
7732     addr_class = DW_ADDR_none;
7733
7734   /* If the pointer size or address class is different than the
7735      default, create a type variant marked as such and set the
7736      length accordingly.  */
7737   if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
7738     {
7739       if (gdbarch_address_class_type_flags_p (gdbarch))
7740         {
7741           int type_flags;
7742
7743           type_flags = gdbarch_address_class_type_flags
7744                          (gdbarch, byte_size, addr_class);
7745           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
7746                       == 0);
7747           type = make_type_with_address_space (type, type_flags);
7748         }
7749       else if (TYPE_LENGTH (type) != byte_size)
7750         {
7751           complaint (&symfile_complaints,
7752                      _("invalid pointer size %d"), byte_size);
7753         }
7754       else
7755         {
7756           /* Should we also complain about unhandled address classes?  */
7757         }
7758     }
7759
7760   TYPE_LENGTH (type) = byte_size;
7761   return set_die_type (die, type, cu);
7762 }
7763
7764 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
7765    the user defined type vector.  */
7766
7767 static struct type *
7768 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
7769 {
7770   struct type *type;
7771   struct type *to_type;
7772   struct type *domain;
7773
7774   to_type = die_type (die, cu);
7775   domain = die_containing_type (die, cu);
7776
7777   /* The calls above may have already set the type for this DIE.  */
7778   type = get_die_type (die, cu);
7779   if (type)
7780     return type;
7781
7782   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
7783     type = lookup_methodptr_type (to_type);
7784   else
7785     type = lookup_memberptr_type (to_type, domain);
7786
7787   return set_die_type (die, type, cu);
7788 }
7789
7790 /* Extract all information from a DW_TAG_reference_type DIE and add to
7791    the user defined type vector.  */
7792
7793 static struct type *
7794 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu)
7795 {
7796   struct comp_unit_head *cu_header = &cu->header;
7797   struct type *type, *target_type;
7798   struct attribute *attr;
7799
7800   target_type = die_type (die, cu);
7801
7802   /* The die_type call above may have already set the type for this DIE.  */
7803   type = get_die_type (die, cu);
7804   if (type)
7805     return type;
7806
7807   type = lookup_reference_type (target_type);
7808   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
7809   if (attr)
7810     {
7811       TYPE_LENGTH (type) = DW_UNSND (attr);
7812     }
7813   else
7814     {
7815       TYPE_LENGTH (type) = cu_header->addr_size;
7816     }
7817   return set_die_type (die, type, cu);
7818 }
7819
7820 static struct type *
7821 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
7822 {
7823   struct type *base_type, *cv_type;
7824
7825   base_type = die_type (die, cu);
7826
7827   /* The die_type call above may have already set the type for this DIE.  */
7828   cv_type = get_die_type (die, cu);
7829   if (cv_type)
7830     return cv_type;
7831
7832   /* In case the const qualifier is applied to an array type, the element type
7833      is so qualified, not the array type (section 6.7.3 of C99).  */
7834   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
7835     {
7836       struct type *el_type, *inner_array;
7837
7838       base_type = copy_type (base_type);
7839       inner_array = base_type;
7840
7841       while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
7842         {
7843           TYPE_TARGET_TYPE (inner_array) =
7844             copy_type (TYPE_TARGET_TYPE (inner_array));
7845           inner_array = TYPE_TARGET_TYPE (inner_array);
7846         }
7847
7848       el_type = TYPE_TARGET_TYPE (inner_array);
7849       TYPE_TARGET_TYPE (inner_array) =
7850         make_cv_type (1, TYPE_VOLATILE (el_type), el_type, NULL);
7851
7852       return set_die_type (die, base_type, cu);
7853     }
7854
7855   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
7856   return set_die_type (die, cv_type, cu);
7857 }
7858
7859 static struct type *
7860 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
7861 {
7862   struct type *base_type, *cv_type;
7863
7864   base_type = die_type (die, cu);
7865
7866   /* The die_type call above may have already set the type for this DIE.  */
7867   cv_type = get_die_type (die, cu);
7868   if (cv_type)
7869     return cv_type;
7870
7871   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
7872   return set_die_type (die, cv_type, cu);
7873 }
7874
7875 /* Extract all information from a DW_TAG_string_type DIE and add to
7876    the user defined type vector.  It isn't really a user defined type,
7877    but it behaves like one, with other DIE's using an AT_user_def_type
7878    attribute to reference it.  */
7879
7880 static struct type *
7881 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
7882 {
7883   struct objfile *objfile = cu->objfile;
7884   struct gdbarch *gdbarch = get_objfile_arch (objfile);
7885   struct type *type, *range_type, *index_type, *char_type;
7886   struct attribute *attr;
7887   unsigned int length;
7888
7889   attr = dwarf2_attr (die, DW_AT_string_length, cu);
7890   if (attr)
7891     {
7892       length = DW_UNSND (attr);
7893     }
7894   else
7895     {
7896       /* Check for the DW_AT_byte_size attribute.  */
7897       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
7898       if (attr)
7899         {
7900           length = DW_UNSND (attr);
7901         }
7902       else
7903         {
7904           length = 1;
7905         }
7906     }
7907
7908   index_type = objfile_type (objfile)->builtin_int;
7909   range_type = create_range_type (NULL, index_type, 1, length);
7910   char_type = language_string_char_type (cu->language_defn, gdbarch);
7911   type = create_string_type (NULL, char_type, range_type);
7912
7913   return set_die_type (die, type, cu);
7914 }
7915
7916 /* Handle DIES due to C code like:
7917
7918    struct foo
7919    {
7920    int (*funcp)(int a, long l);
7921    int b;
7922    };
7923
7924    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
7925
7926 static struct type *
7927 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
7928 {
7929   struct type *type;            /* Type that this function returns.  */
7930   struct type *ftype;           /* Function that returns above type.  */
7931   struct attribute *attr;
7932
7933   type = die_type (die, cu);
7934
7935   /* The die_type call above may have already set the type for this DIE.  */
7936   ftype = get_die_type (die, cu);
7937   if (ftype)
7938     return ftype;
7939
7940   ftype = lookup_function_type (type);
7941
7942   /* All functions in C++, Pascal and Java have prototypes.  */
7943   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
7944   if ((attr && (DW_UNSND (attr) != 0))
7945       || cu->language == language_cplus
7946       || cu->language == language_java
7947       || cu->language == language_pascal)
7948     TYPE_PROTOTYPED (ftype) = 1;
7949   else if (producer_is_realview (cu->producer))
7950     /* RealView does not emit DW_AT_prototyped.  We can not
7951        distinguish prototyped and unprototyped functions; default to
7952        prototyped, since that is more common in modern code (and
7953        RealView warns about unprototyped functions).  */
7954     TYPE_PROTOTYPED (ftype) = 1;
7955
7956   /* Store the calling convention in the type if it's available in
7957      the subroutine die.  Otherwise set the calling convention to
7958      the default value DW_CC_normal.  */
7959   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
7960   if (attr)
7961     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
7962   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
7963     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
7964   else
7965     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
7966
7967   /* We need to add the subroutine type to the die immediately so
7968      we don't infinitely recurse when dealing with parameters
7969      declared as the same subroutine type.  */
7970   set_die_type (die, ftype, cu);
7971
7972   if (die->child != NULL)
7973     {
7974       struct type *void_type = objfile_type (cu->objfile)->builtin_void;
7975       struct die_info *child_die;
7976       int nparams, iparams;
7977
7978       /* Count the number of parameters.
7979          FIXME: GDB currently ignores vararg functions, but knows about
7980          vararg member functions.  */
7981       nparams = 0;
7982       child_die = die->child;
7983       while (child_die && child_die->tag)
7984         {
7985           if (child_die->tag == DW_TAG_formal_parameter)
7986             nparams++;
7987           else if (child_die->tag == DW_TAG_unspecified_parameters)
7988             TYPE_VARARGS (ftype) = 1;
7989           child_die = sibling_die (child_die);
7990         }
7991
7992       /* Allocate storage for parameters and fill them in.  */
7993       TYPE_NFIELDS (ftype) = nparams;
7994       TYPE_FIELDS (ftype) = (struct field *)
7995         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
7996
7997       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
7998          even if we error out during the parameters reading below.  */
7999       for (iparams = 0; iparams < nparams; iparams++)
8000         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
8001
8002       iparams = 0;
8003       child_die = die->child;
8004       while (child_die && child_die->tag)
8005         {
8006           if (child_die->tag == DW_TAG_formal_parameter)
8007             {
8008               struct type *arg_type;
8009
8010               /* DWARF version 2 has no clean way to discern C++
8011                  static and non-static member functions.  G++ helps
8012                  GDB by marking the first parameter for non-static
8013                  member functions (which is the this pointer) as
8014                  artificial.  We pass this information to
8015                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
8016
8017                  DWARF version 3 added DW_AT_object_pointer, which GCC
8018                  4.5 does not yet generate.  */
8019               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
8020               if (attr)
8021                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
8022               else
8023                 {
8024                   TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
8025
8026                   /* GCC/43521: In java, the formal parameter
8027                      "this" is sometimes not marked with DW_AT_artificial.  */
8028                   if (cu->language == language_java)
8029                     {
8030                       const char *name = dwarf2_name (child_die, cu);
8031
8032                       if (name && !strcmp (name, "this"))
8033                         TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 1;
8034                     }
8035                 }
8036               arg_type = die_type (child_die, cu);
8037
8038               /* RealView does not mark THIS as const, which the testsuite
8039                  expects.  GCC marks THIS as const in method definitions,
8040                  but not in the class specifications (GCC PR 43053).  */
8041               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
8042                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
8043                 {
8044                   int is_this = 0;
8045                   struct dwarf2_cu *arg_cu = cu;
8046                   const char *name = dwarf2_name (child_die, cu);
8047
8048                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
8049                   if (attr)
8050                     {
8051                       /* If the compiler emits this, use it.  */
8052                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
8053                         is_this = 1;
8054                     }
8055                   else if (name && strcmp (name, "this") == 0)
8056                     /* Function definitions will have the argument names.  */
8057                     is_this = 1;
8058                   else if (name == NULL && iparams == 0)
8059                     /* Declarations may not have the names, so like
8060                        elsewhere in GDB, assume an artificial first
8061                        argument is "this".  */
8062                     is_this = 1;
8063
8064                   if (is_this)
8065                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
8066                                              arg_type, 0);
8067                 }
8068
8069               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
8070               iparams++;
8071             }
8072           child_die = sibling_die (child_die);
8073         }
8074     }
8075
8076   return ftype;
8077 }
8078
8079 static struct type *
8080 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
8081 {
8082   struct objfile *objfile = cu->objfile;
8083   const char *name = NULL;
8084   struct type *this_type;
8085
8086   name = dwarf2_full_name (NULL, die, cu);
8087   this_type = init_type (TYPE_CODE_TYPEDEF, 0,
8088                          TYPE_FLAG_TARGET_STUB, NULL, objfile);
8089   TYPE_NAME (this_type) = (char *) name;
8090   set_die_type (die, this_type, cu);
8091   TYPE_TARGET_TYPE (this_type) = die_type (die, cu);
8092   return this_type;
8093 }
8094
8095 /* Find a representation of a given base type and install
8096    it in the TYPE field of the die.  */
8097
8098 static struct type *
8099 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
8100 {
8101   struct objfile *objfile = cu->objfile;
8102   struct type *type;
8103   struct attribute *attr;
8104   int encoding = 0, size = 0;
8105   char *name;
8106   enum type_code code = TYPE_CODE_INT;
8107   int type_flags = 0;
8108   struct type *target_type = NULL;
8109
8110   attr = dwarf2_attr (die, DW_AT_encoding, cu);
8111   if (attr)
8112     {
8113       encoding = DW_UNSND (attr);
8114     }
8115   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
8116   if (attr)
8117     {
8118       size = DW_UNSND (attr);
8119     }
8120   name = dwarf2_name (die, cu);
8121   if (!name)
8122     {
8123       complaint (&symfile_complaints,
8124                  _("DW_AT_name missing from DW_TAG_base_type"));
8125     }
8126
8127   switch (encoding)
8128     {
8129       case DW_ATE_address:
8130         /* Turn DW_ATE_address into a void * pointer.  */
8131         code = TYPE_CODE_PTR;
8132         type_flags |= TYPE_FLAG_UNSIGNED;
8133         target_type = init_type (TYPE_CODE_VOID, 1, 0, NULL, objfile);
8134         break;
8135       case DW_ATE_boolean:
8136         code = TYPE_CODE_BOOL;
8137         type_flags |= TYPE_FLAG_UNSIGNED;
8138         break;
8139       case DW_ATE_complex_float:
8140         code = TYPE_CODE_COMPLEX;
8141         target_type = init_type (TYPE_CODE_FLT, size / 2, 0, NULL, objfile);
8142         break;
8143       case DW_ATE_decimal_float:
8144         code = TYPE_CODE_DECFLOAT;
8145         break;
8146       case DW_ATE_float:
8147         code = TYPE_CODE_FLT;
8148         break;
8149       case DW_ATE_signed:
8150         break;
8151       case DW_ATE_unsigned:
8152         type_flags |= TYPE_FLAG_UNSIGNED;
8153         break;
8154       case DW_ATE_signed_char:
8155         if (cu->language == language_ada || cu->language == language_m2
8156             || cu->language == language_pascal)
8157           code = TYPE_CODE_CHAR;
8158         break;
8159       case DW_ATE_unsigned_char:
8160         if (cu->language == language_ada || cu->language == language_m2
8161             || cu->language == language_pascal)
8162           code = TYPE_CODE_CHAR;
8163         type_flags |= TYPE_FLAG_UNSIGNED;
8164         break;
8165       case DW_ATE_UTF:
8166         /* We just treat this as an integer and then recognize the
8167            type by name elsewhere.  */
8168         break;
8169
8170       default:
8171         complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"),
8172                    dwarf_type_encoding_name (encoding));
8173         break;
8174     }
8175
8176   type = init_type (code, size, type_flags, NULL, objfile);
8177   TYPE_NAME (type) = name;
8178   TYPE_TARGET_TYPE (type) = target_type;
8179
8180   if (name && strcmp (name, "char") == 0)
8181     TYPE_NOSIGN (type) = 1;
8182
8183   return set_die_type (die, type, cu);
8184 }
8185
8186 /* Read the given DW_AT_subrange DIE.  */
8187
8188 static struct type *
8189 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
8190 {
8191   struct type *base_type;
8192   struct type *range_type;
8193   struct attribute *attr;
8194   LONGEST low = 0;
8195   LONGEST high = -1;
8196   char *name;
8197   LONGEST negative_mask;
8198
8199   base_type = die_type (die, cu);
8200   /* Preserve BASE_TYPE's original type, just set its LENGTH.  */
8201   check_typedef (base_type);
8202
8203   /* The die_type call above may have already set the type for this DIE.  */
8204   range_type = get_die_type (die, cu);
8205   if (range_type)
8206     return range_type;
8207
8208   if (cu->language == language_fortran)
8209     {
8210       /* FORTRAN implies a lower bound of 1, if not given.  */
8211       low = 1;
8212     }
8213
8214   /* FIXME: For variable sized arrays either of these could be
8215      a variable rather than a constant value.  We'll allow it,
8216      but we don't know how to handle it.  */
8217   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
8218   if (attr)
8219     low = dwarf2_get_attr_constant_value (attr, 0);
8220
8221   attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
8222   if (attr)
8223     {
8224       if (attr->form == DW_FORM_block1 || is_ref_attr (attr))
8225         {
8226           /* GCC encodes arrays with unspecified or dynamic length
8227              with a DW_FORM_block1 attribute or a reference attribute.
8228              FIXME: GDB does not yet know how to handle dynamic
8229              arrays properly, treat them as arrays with unspecified
8230              length for now.
8231
8232              FIXME: jimb/2003-09-22: GDB does not really know
8233              how to handle arrays of unspecified length
8234              either; we just represent them as zero-length
8235              arrays.  Choose an appropriate upper bound given
8236              the lower bound we've computed above.  */
8237           high = low - 1;
8238         }
8239       else
8240         high = dwarf2_get_attr_constant_value (attr, 1);
8241     }
8242   else
8243     {
8244       attr = dwarf2_attr (die, DW_AT_count, cu);
8245       if (attr)
8246         {
8247           int count = dwarf2_get_attr_constant_value (attr, 1);
8248           high = low + count - 1;
8249         }
8250       else
8251         {
8252           /* Unspecified array length.  */
8253           high = low - 1;
8254         }
8255     }
8256
8257   /* Dwarf-2 specifications explicitly allows to create subrange types
8258      without specifying a base type.
8259      In that case, the base type must be set to the type of
8260      the lower bound, upper bound or count, in that order, if any of these
8261      three attributes references an object that has a type.
8262      If no base type is found, the Dwarf-2 specifications say that
8263      a signed integer type of size equal to the size of an address should
8264      be used.
8265      For the following C code: `extern char gdb_int [];'
8266      GCC produces an empty range DIE.
8267      FIXME: muller/2010-05-28: Possible references to object for low bound,
8268      high bound or count are not yet handled by this code.  */
8269   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
8270     {
8271       struct objfile *objfile = cu->objfile;
8272       struct gdbarch *gdbarch = get_objfile_arch (objfile);
8273       int addr_size = gdbarch_addr_bit (gdbarch) /8;
8274       struct type *int_type = objfile_type (objfile)->builtin_int;
8275
8276       /* Test "int", "long int", and "long long int" objfile types,
8277          and select the first one having a size above or equal to the
8278          architecture address size.  */
8279       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
8280         base_type = int_type;
8281       else
8282         {
8283           int_type = objfile_type (objfile)->builtin_long;
8284           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
8285             base_type = int_type;
8286           else
8287             {
8288               int_type = objfile_type (objfile)->builtin_long_long;
8289               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
8290                 base_type = int_type;
8291             }
8292         }
8293     }
8294
8295   negative_mask =
8296     (LONGEST) -1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1);
8297   if (!TYPE_UNSIGNED (base_type) && (low & negative_mask))
8298     low |= negative_mask;
8299   if (!TYPE_UNSIGNED (base_type) && (high & negative_mask))
8300     high |= negative_mask;
8301
8302   range_type = create_range_type (NULL, base_type, low, high);
8303
8304   /* Mark arrays with dynamic length at least as an array of unspecified
8305      length.  GDB could check the boundary but before it gets implemented at
8306      least allow accessing the array elements.  */
8307   if (attr && attr->form == DW_FORM_block1)
8308     TYPE_HIGH_BOUND_UNDEFINED (range_type) = 1;
8309
8310   /* Ada expects an empty array on no boundary attributes.  */
8311   if (attr == NULL && cu->language != language_ada)
8312     TYPE_HIGH_BOUND_UNDEFINED (range_type) = 1;
8313
8314   name = dwarf2_name (die, cu);
8315   if (name)
8316     TYPE_NAME (range_type) = name;
8317
8318   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
8319   if (attr)
8320     TYPE_LENGTH (range_type) = DW_UNSND (attr);
8321
8322   set_die_type (die, range_type, cu);
8323
8324   /* set_die_type should be already done.  */
8325   set_descriptive_type (range_type, die, cu);
8326
8327   return range_type;
8328 }
8329
8330 static struct type *
8331 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
8332 {
8333   struct type *type;
8334
8335   /* For now, we only support the C meaning of an unspecified type: void.  */
8336
8337   type = init_type (TYPE_CODE_VOID, 0, 0, NULL, cu->objfile);
8338   TYPE_NAME (type) = dwarf2_name (die, cu);
8339
8340   return set_die_type (die, type, cu);
8341 }
8342
8343 /* Trivial hash function for die_info: the hash value of a DIE
8344    is its offset in .debug_info for this objfile.  */
8345
8346 static hashval_t
8347 die_hash (const void *item)
8348 {
8349   const struct die_info *die = item;
8350
8351   return die->offset;
8352 }
8353
8354 /* Trivial comparison function for die_info structures: two DIEs
8355    are equal if they have the same offset.  */
8356
8357 static int
8358 die_eq (const void *item_lhs, const void *item_rhs)
8359 {
8360   const struct die_info *die_lhs = item_lhs;
8361   const struct die_info *die_rhs = item_rhs;
8362
8363   return die_lhs->offset == die_rhs->offset;
8364 }
8365
8366 /* Read a whole compilation unit into a linked list of dies.  */
8367
8368 static struct die_info *
8369 read_comp_unit (gdb_byte *info_ptr, struct dwarf2_cu *cu)
8370 {
8371   struct die_reader_specs reader_specs;
8372   int read_abbrevs = 0;
8373   struct cleanup *back_to = NULL;
8374   struct die_info *die;
8375
8376   if (cu->dwarf2_abbrevs == NULL)
8377     {
8378       dwarf2_read_abbrevs (cu->objfile->obfd, cu);
8379       back_to = make_cleanup (dwarf2_free_abbrev_table, cu);
8380       read_abbrevs = 1;
8381     }
8382
8383   gdb_assert (cu->die_hash == NULL);
8384   cu->die_hash
8385     = htab_create_alloc_ex (cu->header.length / 12,
8386                             die_hash,
8387                             die_eq,
8388                             NULL,
8389                             &cu->comp_unit_obstack,
8390                             hashtab_obstack_allocate,
8391                             dummy_obstack_deallocate);
8392
8393   init_cu_die_reader (&reader_specs, cu);
8394
8395   die = read_die_and_children (&reader_specs, info_ptr, &info_ptr, NULL);
8396
8397   if (read_abbrevs)
8398     do_cleanups (back_to);
8399
8400   return die;
8401 }
8402
8403 /* Main entry point for reading a DIE and all children.
8404    Read the DIE and dump it if requested.  */
8405
8406 static struct die_info *
8407 read_die_and_children (const struct die_reader_specs *reader,
8408                        gdb_byte *info_ptr,
8409                        gdb_byte **new_info_ptr,
8410                        struct die_info *parent)
8411 {
8412   struct die_info *result = read_die_and_children_1 (reader, info_ptr,
8413                                                      new_info_ptr, parent);
8414
8415   if (dwarf2_die_debug)
8416     {
8417       fprintf_unfiltered (gdb_stdlog,
8418                           "\nRead die from %s of %s:\n",
8419                           reader->buffer == dwarf2_per_objfile->info.buffer
8420                           ? ".debug_info"
8421                           : reader->buffer == dwarf2_per_objfile->types.buffer
8422                           ? ".debug_types"
8423                           : "unknown section",
8424                           reader->abfd->filename);
8425       dump_die (result, dwarf2_die_debug);
8426     }
8427
8428   return result;
8429 }
8430
8431 /* Read a single die and all its descendents.  Set the die's sibling
8432    field to NULL; set other fields in the die correctly, and set all
8433    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
8434    location of the info_ptr after reading all of those dies.  PARENT
8435    is the parent of the die in question.  */
8436
8437 static struct die_info *
8438 read_die_and_children_1 (const struct die_reader_specs *reader,
8439                          gdb_byte *info_ptr,
8440                          gdb_byte **new_info_ptr,
8441                          struct die_info *parent)
8442 {
8443   struct die_info *die;
8444   gdb_byte *cur_ptr;
8445   int has_children;
8446
8447   cur_ptr = read_full_die (reader, &die, info_ptr, &has_children);
8448   if (die == NULL)
8449     {
8450       *new_info_ptr = cur_ptr;
8451       return NULL;
8452     }
8453   store_in_ref_table (die, reader->cu);
8454
8455   if (has_children)
8456     die->child = read_die_and_siblings (reader, cur_ptr, new_info_ptr, die);
8457   else
8458     {
8459       die->child = NULL;
8460       *new_info_ptr = cur_ptr;
8461     }
8462
8463   die->sibling = NULL;
8464   die->parent = parent;
8465   return die;
8466 }
8467
8468 /* Read a die, all of its descendents, and all of its siblings; set
8469    all of the fields of all of the dies correctly.  Arguments are as
8470    in read_die_and_children.  */
8471
8472 static struct die_info *
8473 read_die_and_siblings (const struct die_reader_specs *reader,
8474                        gdb_byte *info_ptr,
8475                        gdb_byte **new_info_ptr,
8476                        struct die_info *parent)
8477 {
8478   struct die_info *first_die, *last_sibling;
8479   gdb_byte *cur_ptr;
8480
8481   cur_ptr = info_ptr;
8482   first_die = last_sibling = NULL;
8483
8484   while (1)
8485     {
8486       struct die_info *die
8487         = read_die_and_children_1 (reader, cur_ptr, &cur_ptr, parent);
8488
8489       if (die == NULL)
8490         {
8491           *new_info_ptr = cur_ptr;
8492           return first_die;
8493         }
8494
8495       if (!first_die)
8496         first_die = die;
8497       else
8498         last_sibling->sibling = die;
8499
8500       last_sibling = die;
8501     }
8502 }
8503
8504 /* Read the die from the .debug_info section buffer.  Set DIEP to
8505    point to a newly allocated die with its information, except for its
8506    child, sibling, and parent fields.  Set HAS_CHILDREN to tell
8507    whether the die has children or not.  */
8508
8509 static gdb_byte *
8510 read_full_die (const struct die_reader_specs *reader,
8511                struct die_info **diep, gdb_byte *info_ptr,
8512                int *has_children)
8513 {
8514   unsigned int abbrev_number, bytes_read, i, offset;
8515   struct abbrev_info *abbrev;
8516   struct die_info *die;
8517   struct dwarf2_cu *cu = reader->cu;
8518   bfd *abfd = reader->abfd;
8519
8520   offset = info_ptr - reader->buffer;
8521   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
8522   info_ptr += bytes_read;
8523   if (!abbrev_number)
8524     {
8525       *diep = NULL;
8526       *has_children = 0;
8527       return info_ptr;
8528     }
8529
8530   abbrev = dwarf2_lookup_abbrev (abbrev_number, cu);
8531   if (!abbrev)
8532     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
8533            abbrev_number,
8534            bfd_get_filename (abfd));
8535
8536   die = dwarf_alloc_die (cu, abbrev->num_attrs);
8537   die->offset = offset;
8538   die->tag = abbrev->tag;
8539   die->abbrev = abbrev_number;
8540
8541   die->num_attrs = abbrev->num_attrs;
8542
8543   for (i = 0; i < abbrev->num_attrs; ++i)
8544     info_ptr = read_attribute (&die->attrs[i], &abbrev->attrs[i],
8545                                abfd, info_ptr, cu);
8546
8547   *diep = die;
8548   *has_children = abbrev->has_children;
8549   return info_ptr;
8550 }
8551
8552 /* In DWARF version 2, the description of the debugging information is
8553    stored in a separate .debug_abbrev section.  Before we read any
8554    dies from a section we read in all abbreviations and install them
8555    in a hash table.  This function also sets flags in CU describing
8556    the data found in the abbrev table.  */
8557
8558 static void
8559 dwarf2_read_abbrevs (bfd *abfd, struct dwarf2_cu *cu)
8560 {
8561   struct comp_unit_head *cu_header = &cu->header;
8562   gdb_byte *abbrev_ptr;
8563   struct abbrev_info *cur_abbrev;
8564   unsigned int abbrev_number, bytes_read, abbrev_name;
8565   unsigned int abbrev_form, hash_number;
8566   struct attr_abbrev *cur_attrs;
8567   unsigned int allocated_attrs;
8568
8569   /* Initialize dwarf2 abbrevs.  */
8570   obstack_init (&cu->abbrev_obstack);
8571   cu->dwarf2_abbrevs = obstack_alloc (&cu->abbrev_obstack,
8572                                       (ABBREV_HASH_SIZE
8573                                        * sizeof (struct abbrev_info *)));
8574   memset (cu->dwarf2_abbrevs, 0,
8575           ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
8576
8577   dwarf2_read_section (dwarf2_per_objfile->objfile,
8578                        &dwarf2_per_objfile->abbrev);
8579   abbrev_ptr = dwarf2_per_objfile->abbrev.buffer + cu_header->abbrev_offset;
8580   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
8581   abbrev_ptr += bytes_read;
8582
8583   allocated_attrs = ATTR_ALLOC_CHUNK;
8584   cur_attrs = xmalloc (allocated_attrs * sizeof (struct attr_abbrev));
8585
8586   /* Loop until we reach an abbrev number of 0.  */
8587   while (abbrev_number)
8588     {
8589       cur_abbrev = dwarf_alloc_abbrev (cu);
8590
8591       /* read in abbrev header */
8592       cur_abbrev->number = abbrev_number;
8593       cur_abbrev->tag = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
8594       abbrev_ptr += bytes_read;
8595       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
8596       abbrev_ptr += 1;
8597
8598       if (cur_abbrev->tag == DW_TAG_namespace)
8599         cu->has_namespace_info = 1;
8600
8601       /* now read in declarations */
8602       abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
8603       abbrev_ptr += bytes_read;
8604       abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
8605       abbrev_ptr += bytes_read;
8606       while (abbrev_name)
8607         {
8608           if (cur_abbrev->num_attrs == allocated_attrs)
8609             {
8610               allocated_attrs += ATTR_ALLOC_CHUNK;
8611               cur_attrs
8612                 = xrealloc (cur_attrs, (allocated_attrs
8613                                         * sizeof (struct attr_abbrev)));
8614             }
8615
8616           /* Record whether this compilation unit might have
8617              inter-compilation-unit references.  If we don't know what form
8618              this attribute will have, then it might potentially be a
8619              DW_FORM_ref_addr, so we conservatively expect inter-CU
8620              references.  */
8621
8622           if (abbrev_form == DW_FORM_ref_addr
8623               || abbrev_form == DW_FORM_indirect)
8624             cu->has_form_ref_addr = 1;
8625
8626           cur_attrs[cur_abbrev->num_attrs].name = abbrev_name;
8627           cur_attrs[cur_abbrev->num_attrs++].form = abbrev_form;
8628           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
8629           abbrev_ptr += bytes_read;
8630           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
8631           abbrev_ptr += bytes_read;
8632         }
8633
8634       cur_abbrev->attrs = obstack_alloc (&cu->abbrev_obstack,
8635                                          (cur_abbrev->num_attrs
8636                                           * sizeof (struct attr_abbrev)));
8637       memcpy (cur_abbrev->attrs, cur_attrs,
8638               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
8639
8640       hash_number = abbrev_number % ABBREV_HASH_SIZE;
8641       cur_abbrev->next = cu->dwarf2_abbrevs[hash_number];
8642       cu->dwarf2_abbrevs[hash_number] = cur_abbrev;
8643
8644       /* Get next abbreviation.
8645          Under Irix6 the abbreviations for a compilation unit are not
8646          always properly terminated with an abbrev number of 0.
8647          Exit loop if we encounter an abbreviation which we have
8648          already read (which means we are about to read the abbreviations
8649          for the next compile unit) or if the end of the abbreviation
8650          table is reached.  */
8651       if ((unsigned int) (abbrev_ptr - dwarf2_per_objfile->abbrev.buffer)
8652           >= dwarf2_per_objfile->abbrev.size)
8653         break;
8654       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
8655       abbrev_ptr += bytes_read;
8656       if (dwarf2_lookup_abbrev (abbrev_number, cu) != NULL)
8657         break;
8658     }
8659
8660   xfree (cur_attrs);
8661 }
8662
8663 /* Release the memory used by the abbrev table for a compilation unit.  */
8664
8665 static void
8666 dwarf2_free_abbrev_table (void *ptr_to_cu)
8667 {
8668   struct dwarf2_cu *cu = ptr_to_cu;
8669
8670   obstack_free (&cu->abbrev_obstack, NULL);
8671   cu->dwarf2_abbrevs = NULL;
8672 }
8673
8674 /* Lookup an abbrev_info structure in the abbrev hash table.  */
8675
8676 static struct abbrev_info *
8677 dwarf2_lookup_abbrev (unsigned int number, struct dwarf2_cu *cu)
8678 {
8679   unsigned int hash_number;
8680   struct abbrev_info *abbrev;
8681
8682   hash_number = number % ABBREV_HASH_SIZE;
8683   abbrev = cu->dwarf2_abbrevs[hash_number];
8684
8685   while (abbrev)
8686     {
8687       if (abbrev->number == number)
8688         return abbrev;
8689       else
8690         abbrev = abbrev->next;
8691     }
8692   return NULL;
8693 }
8694
8695 /* Returns nonzero if TAG represents a type that we might generate a partial
8696    symbol for.  */
8697
8698 static int
8699 is_type_tag_for_partial (int tag)
8700 {
8701   switch (tag)
8702     {
8703 #if 0
8704     /* Some types that would be reasonable to generate partial symbols for,
8705        that we don't at present.  */
8706     case DW_TAG_array_type:
8707     case DW_TAG_file_type:
8708     case DW_TAG_ptr_to_member_type:
8709     case DW_TAG_set_type:
8710     case DW_TAG_string_type:
8711     case DW_TAG_subroutine_type:
8712 #endif
8713     case DW_TAG_base_type:
8714     case DW_TAG_class_type:
8715     case DW_TAG_interface_type:
8716     case DW_TAG_enumeration_type:
8717     case DW_TAG_structure_type:
8718     case DW_TAG_subrange_type:
8719     case DW_TAG_typedef:
8720     case DW_TAG_union_type:
8721       return 1;
8722     default:
8723       return 0;
8724     }
8725 }
8726
8727 /* Load all DIEs that are interesting for partial symbols into memory.  */
8728
8729 static struct partial_die_info *
8730 load_partial_dies (bfd *abfd, gdb_byte *buffer, gdb_byte *info_ptr,
8731                    int building_psymtab, struct dwarf2_cu *cu)
8732 {
8733   struct partial_die_info *part_die;
8734   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
8735   struct abbrev_info *abbrev;
8736   unsigned int bytes_read;
8737   unsigned int load_all = 0;
8738
8739   int nesting_level = 1;
8740
8741   parent_die = NULL;
8742   last_die = NULL;
8743
8744   if (cu->per_cu && cu->per_cu->load_all_dies)
8745     load_all = 1;
8746
8747   cu->partial_dies
8748     = htab_create_alloc_ex (cu->header.length / 12,
8749                             partial_die_hash,
8750                             partial_die_eq,
8751                             NULL,
8752                             &cu->comp_unit_obstack,
8753                             hashtab_obstack_allocate,
8754                             dummy_obstack_deallocate);
8755
8756   part_die = obstack_alloc (&cu->comp_unit_obstack,
8757                             sizeof (struct partial_die_info));
8758
8759   while (1)
8760     {
8761       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
8762
8763       /* A NULL abbrev means the end of a series of children.  */
8764       if (abbrev == NULL)
8765         {
8766           if (--nesting_level == 0)
8767             {
8768               /* PART_DIE was probably the last thing allocated on the
8769                  comp_unit_obstack, so we could call obstack_free
8770                  here.  We don't do that because the waste is small,
8771                  and will be cleaned up when we're done with this
8772                  compilation unit.  This way, we're also more robust
8773                  against other users of the comp_unit_obstack.  */
8774               return first_die;
8775             }
8776           info_ptr += bytes_read;
8777           last_die = parent_die;
8778           parent_die = parent_die->die_parent;
8779           continue;
8780         }
8781
8782       /* Check for template arguments.  We never save these; if
8783          they're seen, we just mark the parent, and go on our way.  */
8784       if (parent_die != NULL
8785           && cu->language == language_cplus
8786           && (abbrev->tag == DW_TAG_template_type_param
8787               || abbrev->tag == DW_TAG_template_value_param))
8788         {
8789           parent_die->has_template_arguments = 1;
8790
8791           if (!load_all)
8792             {
8793               /* We don't need a partial DIE for the template argument.  */
8794               info_ptr = skip_one_die (buffer, info_ptr + bytes_read, abbrev,
8795                                        cu);
8796               continue;
8797             }
8798         }
8799
8800       /* We only recurse into subprograms looking for template arguments.
8801          Skip their other children.  */
8802       if (!load_all
8803           && cu->language == language_cplus
8804           && parent_die != NULL
8805           && parent_die->tag == DW_TAG_subprogram)
8806         {
8807           info_ptr = skip_one_die (buffer, info_ptr + bytes_read, abbrev, cu);
8808           continue;
8809         }
8810
8811       /* Check whether this DIE is interesting enough to save.  Normally
8812          we would not be interested in members here, but there may be
8813          later variables referencing them via DW_AT_specification (for
8814          static members).  */
8815       if (!load_all
8816           && !is_type_tag_for_partial (abbrev->tag)
8817           && abbrev->tag != DW_TAG_constant
8818           && abbrev->tag != DW_TAG_enumerator
8819           && abbrev->tag != DW_TAG_subprogram
8820           && abbrev->tag != DW_TAG_lexical_block
8821           && abbrev->tag != DW_TAG_variable
8822           && abbrev->tag != DW_TAG_namespace
8823           && abbrev->tag != DW_TAG_module
8824           && abbrev->tag != DW_TAG_member)
8825         {
8826           /* Otherwise we skip to the next sibling, if any.  */
8827           info_ptr = skip_one_die (buffer, info_ptr + bytes_read, abbrev, cu);
8828           continue;
8829         }
8830
8831       info_ptr = read_partial_die (part_die, abbrev, bytes_read, abfd,
8832                                    buffer, info_ptr, cu);
8833
8834       /* This two-pass algorithm for processing partial symbols has a
8835          high cost in cache pressure.  Thus, handle some simple cases
8836          here which cover the majority of C partial symbols.  DIEs
8837          which neither have specification tags in them, nor could have
8838          specification tags elsewhere pointing at them, can simply be
8839          processed and discarded.
8840
8841          This segment is also optional; scan_partial_symbols and
8842          add_partial_symbol will handle these DIEs if we chain
8843          them in normally.  When compilers which do not emit large
8844          quantities of duplicate debug information are more common,
8845          this code can probably be removed.  */
8846
8847       /* Any complete simple types at the top level (pretty much all
8848          of them, for a language without namespaces), can be processed
8849          directly.  */
8850       if (parent_die == NULL
8851           && part_die->has_specification == 0
8852           && part_die->is_declaration == 0
8853           && (part_die->tag == DW_TAG_typedef
8854               || part_die->tag == DW_TAG_base_type
8855               || part_die->tag == DW_TAG_subrange_type))
8856         {
8857           if (building_psymtab && part_die->name != NULL)
8858             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
8859                                  VAR_DOMAIN, LOC_TYPEDEF,
8860                                  &cu->objfile->static_psymbols,
8861                                  0, (CORE_ADDR) 0, cu->language, cu->objfile);
8862           info_ptr = locate_pdi_sibling (part_die, buffer, info_ptr, abfd, cu);
8863           continue;
8864         }
8865
8866       /* If we're at the second level, and we're an enumerator, and
8867          our parent has no specification (meaning possibly lives in a
8868          namespace elsewhere), then we can add the partial symbol now
8869          instead of queueing it.  */
8870       if (part_die->tag == DW_TAG_enumerator
8871           && parent_die != NULL
8872           && parent_die->die_parent == NULL
8873           && parent_die->tag == DW_TAG_enumeration_type
8874           && parent_die->has_specification == 0)
8875         {
8876           if (part_die->name == NULL)
8877             complaint (&symfile_complaints,
8878                        _("malformed enumerator DIE ignored"));
8879           else if (building_psymtab)
8880             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
8881                                  VAR_DOMAIN, LOC_CONST,
8882                                  (cu->language == language_cplus
8883                                   || cu->language == language_java)
8884                                  ? &cu->objfile->global_psymbols
8885                                  : &cu->objfile->static_psymbols,
8886                                  0, (CORE_ADDR) 0, cu->language, cu->objfile);
8887
8888           info_ptr = locate_pdi_sibling (part_die, buffer, info_ptr, abfd, cu);
8889           continue;
8890         }
8891
8892       /* We'll save this DIE so link it in.  */
8893       part_die->die_parent = parent_die;
8894       part_die->die_sibling = NULL;
8895       part_die->die_child = NULL;
8896
8897       if (last_die && last_die == parent_die)
8898         last_die->die_child = part_die;
8899       else if (last_die)
8900         last_die->die_sibling = part_die;
8901
8902       last_die = part_die;
8903
8904       if (first_die == NULL)
8905         first_die = part_die;
8906
8907       /* Maybe add the DIE to the hash table.  Not all DIEs that we
8908          find interesting need to be in the hash table, because we
8909          also have the parent/sibling/child chains; only those that we
8910          might refer to by offset later during partial symbol reading.
8911
8912          For now this means things that might have be the target of a
8913          DW_AT_specification, DW_AT_abstract_origin, or
8914          DW_AT_extension.  DW_AT_extension will refer only to
8915          namespaces; DW_AT_abstract_origin refers to functions (and
8916          many things under the function DIE, but we do not recurse
8917          into function DIEs during partial symbol reading) and
8918          possibly variables as well; DW_AT_specification refers to
8919          declarations.  Declarations ought to have the DW_AT_declaration
8920          flag.  It happens that GCC forgets to put it in sometimes, but
8921          only for functions, not for types.
8922
8923          Adding more things than necessary to the hash table is harmless
8924          except for the performance cost.  Adding too few will result in
8925          wasted time in find_partial_die, when we reread the compilation
8926          unit with load_all_dies set.  */
8927
8928       if (load_all
8929           || abbrev->tag == DW_TAG_constant
8930           || abbrev->tag == DW_TAG_subprogram
8931           || abbrev->tag == DW_TAG_variable
8932           || abbrev->tag == DW_TAG_namespace
8933           || part_die->is_declaration)
8934         {
8935           void **slot;
8936
8937           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
8938                                            part_die->offset, INSERT);
8939           *slot = part_die;
8940         }
8941
8942       part_die = obstack_alloc (&cu->comp_unit_obstack,
8943                                 sizeof (struct partial_die_info));
8944
8945       /* For some DIEs we want to follow their children (if any).  For C
8946          we have no reason to follow the children of structures; for other
8947          languages we have to, so that we can get at method physnames
8948          to infer fully qualified class names, for DW_AT_specification,
8949          and for C++ template arguments.  For C++, we also look one level
8950          inside functions to find template arguments (if the name of the
8951          function does not already contain the template arguments).
8952
8953          For Ada, we need to scan the children of subprograms and lexical
8954          blocks as well because Ada allows the definition of nested
8955          entities that could be interesting for the debugger, such as
8956          nested subprograms for instance.  */
8957       if (last_die->has_children
8958           && (load_all
8959               || last_die->tag == DW_TAG_namespace
8960               || last_die->tag == DW_TAG_module
8961               || last_die->tag == DW_TAG_enumeration_type
8962               || (cu->language == language_cplus
8963                   && last_die->tag == DW_TAG_subprogram
8964                   && (last_die->name == NULL
8965                       || strchr (last_die->name, '<') == NULL))
8966               || (cu->language != language_c
8967                   && (last_die->tag == DW_TAG_class_type
8968                       || last_die->tag == DW_TAG_interface_type
8969                       || last_die->tag == DW_TAG_structure_type
8970                       || last_die->tag == DW_TAG_union_type))
8971               || (cu->language == language_ada
8972                   && (last_die->tag == DW_TAG_subprogram
8973                       || last_die->tag == DW_TAG_lexical_block))))
8974         {
8975           nesting_level++;
8976           parent_die = last_die;
8977           continue;
8978         }
8979
8980       /* Otherwise we skip to the next sibling, if any.  */
8981       info_ptr = locate_pdi_sibling (last_die, buffer, info_ptr, abfd, cu);
8982
8983       /* Back to the top, do it again.  */
8984     }
8985 }
8986
8987 /* Read a minimal amount of information into the minimal die structure.  */
8988
8989 static gdb_byte *
8990 read_partial_die (struct partial_die_info *part_die,
8991                   struct abbrev_info *abbrev,
8992                   unsigned int abbrev_len, bfd *abfd,
8993                   gdb_byte *buffer, gdb_byte *info_ptr,
8994                   struct dwarf2_cu *cu)
8995 {
8996   unsigned int i;
8997   struct attribute attr;
8998   int has_low_pc_attr = 0;
8999   int has_high_pc_attr = 0;
9000
9001   memset (part_die, 0, sizeof (struct partial_die_info));
9002
9003   part_die->offset = info_ptr - buffer;
9004
9005   info_ptr += abbrev_len;
9006
9007   if (abbrev == NULL)
9008     return info_ptr;
9009
9010   part_die->tag = abbrev->tag;
9011   part_die->has_children = abbrev->has_children;
9012
9013   for (i = 0; i < abbrev->num_attrs; ++i)
9014     {
9015       info_ptr = read_attribute (&attr, &abbrev->attrs[i], abfd, info_ptr, cu);
9016
9017       /* Store the data if it is of an attribute we want to keep in a
9018          partial symbol table.  */
9019       switch (attr.name)
9020         {
9021         case DW_AT_name:
9022           switch (part_die->tag)
9023             {
9024             case DW_TAG_compile_unit:
9025             case DW_TAG_type_unit:
9026               /* Compilation units have a DW_AT_name that is a filename, not
9027                  a source language identifier.  */
9028             case DW_TAG_enumeration_type:
9029             case DW_TAG_enumerator:
9030               /* These tags always have simple identifiers already; no need
9031                  to canonicalize them.  */
9032               part_die->name = DW_STRING (&attr);
9033               break;
9034             default:
9035               part_die->name
9036                 = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
9037                                             &cu->objfile->objfile_obstack);
9038               break;
9039             }
9040           break;
9041         case DW_AT_linkage_name:
9042         case DW_AT_MIPS_linkage_name:
9043           /* Note that both forms of linkage name might appear.  We
9044              assume they will be the same, and we only store the last
9045              one we see.  */
9046           if (cu->language == language_ada)
9047             part_die->name = DW_STRING (&attr);
9048           part_die->linkage_name = DW_STRING (&attr);
9049           break;
9050         case DW_AT_low_pc:
9051           has_low_pc_attr = 1;
9052           part_die->lowpc = DW_ADDR (&attr);
9053           break;
9054         case DW_AT_high_pc:
9055           has_high_pc_attr = 1;
9056           part_die->highpc = DW_ADDR (&attr);
9057           break;
9058         case DW_AT_location:
9059           /* Support the .debug_loc offsets.  */
9060           if (attr_form_is_block (&attr))
9061             {
9062                part_die->locdesc = DW_BLOCK (&attr);
9063             }
9064           else if (attr_form_is_section_offset (&attr))
9065             {
9066               dwarf2_complex_location_expr_complaint ();
9067             }
9068           else
9069             {
9070               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
9071                                                      "partial symbol information");
9072             }
9073           break;
9074         case DW_AT_external:
9075           part_die->is_external = DW_UNSND (&attr);
9076           break;
9077         case DW_AT_declaration:
9078           part_die->is_declaration = DW_UNSND (&attr);
9079           break;
9080         case DW_AT_type:
9081           part_die->has_type = 1;
9082           break;
9083         case DW_AT_abstract_origin:
9084         case DW_AT_specification:
9085         case DW_AT_extension:
9086           part_die->has_specification = 1;
9087           part_die->spec_offset = dwarf2_get_ref_die_offset (&attr);
9088           break;
9089         case DW_AT_sibling:
9090           /* Ignore absolute siblings, they might point outside of
9091              the current compile unit.  */
9092           if (attr.form == DW_FORM_ref_addr)
9093             complaint (&symfile_complaints,
9094                        _("ignoring absolute DW_AT_sibling"));
9095           else
9096             part_die->sibling = buffer + dwarf2_get_ref_die_offset (&attr);
9097           break;
9098         case DW_AT_byte_size:
9099           part_die->has_byte_size = 1;
9100           break;
9101         case DW_AT_calling_convention:
9102           /* DWARF doesn't provide a way to identify a program's source-level
9103              entry point.  DW_AT_calling_convention attributes are only meant
9104              to describe functions' calling conventions.
9105
9106              However, because it's a necessary piece of information in
9107              Fortran, and because DW_CC_program is the only piece of debugging
9108              information whose definition refers to a 'main program' at all,
9109              several compilers have begun marking Fortran main programs with
9110              DW_CC_program --- even when those functions use the standard
9111              calling conventions.
9112
9113              So until DWARF specifies a way to provide this information and
9114              compilers pick up the new representation, we'll support this
9115              practice.  */
9116           if (DW_UNSND (&attr) == DW_CC_program
9117               && cu->language == language_fortran)
9118             {
9119               set_main_name (part_die->name);
9120
9121               /* As this DIE has a static linkage the name would be difficult
9122                  to look up later.  */
9123               language_of_main = language_fortran;
9124             }
9125           break;
9126         default:
9127           break;
9128         }
9129     }
9130
9131   if (has_low_pc_attr && has_high_pc_attr)
9132     {
9133       /* When using the GNU linker, .gnu.linkonce. sections are used to
9134          eliminate duplicate copies of functions and vtables and such.
9135          The linker will arbitrarily choose one and discard the others.
9136          The AT_*_pc values for such functions refer to local labels in
9137          these sections.  If the section from that file was discarded, the
9138          labels are not in the output, so the relocs get a value of 0.
9139          If this is a discarded function, mark the pc bounds as invalid,
9140          so that GDB will ignore it.  */
9141       if (part_die->lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
9142         {
9143           struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
9144
9145           complaint (&symfile_complaints,
9146                      _("DW_AT_low_pc %s is zero "
9147                        "for DIE at 0x%x [in module %s]"),
9148                      paddress (gdbarch, part_die->lowpc),
9149                      part_die->offset, cu->objfile->name);
9150         }
9151       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
9152       else if (part_die->lowpc >= part_die->highpc)
9153         {
9154           struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
9155
9156           complaint (&symfile_complaints,
9157                      _("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
9158                        "for DIE at 0x%x [in module %s]"),
9159                      paddress (gdbarch, part_die->lowpc),
9160                      paddress (gdbarch, part_die->highpc),
9161                      part_die->offset, cu->objfile->name);
9162         }
9163       else
9164         part_die->has_pc_info = 1;
9165     }
9166
9167   return info_ptr;
9168 }
9169
9170 /* Find a cached partial DIE at OFFSET in CU.  */
9171
9172 static struct partial_die_info *
9173 find_partial_die_in_comp_unit (unsigned int offset, struct dwarf2_cu *cu)
9174 {
9175   struct partial_die_info *lookup_die = NULL;
9176   struct partial_die_info part_die;
9177
9178   part_die.offset = offset;
9179   lookup_die = htab_find_with_hash (cu->partial_dies, &part_die, offset);
9180
9181   return lookup_die;
9182 }
9183
9184 /* Find a partial DIE at OFFSET, which may or may not be in CU,
9185    except in the case of .debug_types DIEs which do not reference
9186    outside their CU (they do however referencing other types via
9187    DW_FORM_sig8).  */
9188
9189 static struct partial_die_info *
9190 find_partial_die (unsigned int offset, struct dwarf2_cu *cu)
9191 {
9192   struct dwarf2_per_cu_data *per_cu = NULL;
9193   struct partial_die_info *pd = NULL;
9194
9195   if (cu->per_cu->from_debug_types)
9196     {
9197       pd = find_partial_die_in_comp_unit (offset, cu);
9198       if (pd != NULL)
9199         return pd;
9200       goto not_found;
9201     }
9202
9203   if (offset_in_cu_p (&cu->header, offset))
9204     {
9205       pd = find_partial_die_in_comp_unit (offset, cu);
9206       if (pd != NULL)
9207         return pd;
9208     }
9209
9210   per_cu = dwarf2_find_containing_comp_unit (offset, cu->objfile);
9211
9212   if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
9213     load_partial_comp_unit (per_cu, cu->objfile);
9214
9215   per_cu->cu->last_used = 0;
9216   pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
9217
9218   if (pd == NULL && per_cu->load_all_dies == 0)
9219     {
9220       struct cleanup *back_to;
9221       struct partial_die_info comp_unit_die;
9222       struct abbrev_info *abbrev;
9223       unsigned int bytes_read;
9224       char *info_ptr;
9225
9226       per_cu->load_all_dies = 1;
9227
9228       /* Re-read the DIEs.  */
9229       back_to = make_cleanup (null_cleanup, 0);
9230       if (per_cu->cu->dwarf2_abbrevs == NULL)
9231         {
9232           dwarf2_read_abbrevs (per_cu->cu->objfile->obfd, per_cu->cu);
9233           make_cleanup (dwarf2_free_abbrev_table, per_cu->cu);
9234         }
9235       info_ptr = (dwarf2_per_objfile->info.buffer
9236                   + per_cu->cu->header.offset
9237                   + per_cu->cu->header.first_die_offset);
9238       abbrev = peek_die_abbrev (info_ptr, &bytes_read, per_cu->cu);
9239       info_ptr = read_partial_die (&comp_unit_die, abbrev, bytes_read,
9240                                    per_cu->cu->objfile->obfd,
9241                                    dwarf2_per_objfile->info.buffer, info_ptr,
9242                                    per_cu->cu);
9243       if (comp_unit_die.has_children)
9244         load_partial_dies (per_cu->cu->objfile->obfd,
9245                            dwarf2_per_objfile->info.buffer, info_ptr,
9246                            0, per_cu->cu);
9247       do_cleanups (back_to);
9248
9249       pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
9250     }
9251
9252  not_found:
9253
9254   if (pd == NULL)
9255     internal_error (__FILE__, __LINE__,
9256                     _("could not find partial DIE 0x%x "
9257                       "in cache [from module %s]\n"),
9258                     offset, bfd_get_filename (cu->objfile->obfd));
9259   return pd;
9260 }
9261
9262 /* See if we can figure out if the class lives in a namespace.  We do
9263    this by looking for a member function; its demangled name will
9264    contain namespace info, if there is any.  */
9265
9266 static void
9267 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
9268                                   struct dwarf2_cu *cu)
9269 {
9270   /* NOTE: carlton/2003-10-07: Getting the info this way changes
9271      what template types look like, because the demangler
9272      frequently doesn't give the same name as the debug info.  We
9273      could fix this by only using the demangled name to get the
9274      prefix (but see comment in read_structure_type).  */
9275
9276   struct partial_die_info *real_pdi;
9277   struct partial_die_info *child_pdi;
9278
9279   /* If this DIE (this DIE's specification, if any) has a parent, then
9280      we should not do this.  We'll prepend the parent's fully qualified
9281      name when we create the partial symbol.  */
9282
9283   real_pdi = struct_pdi;
9284   while (real_pdi->has_specification)
9285     real_pdi = find_partial_die (real_pdi->spec_offset, cu);
9286
9287   if (real_pdi->die_parent != NULL)
9288     return;
9289
9290   for (child_pdi = struct_pdi->die_child;
9291        child_pdi != NULL;
9292        child_pdi = child_pdi->die_sibling)
9293     {
9294       if (child_pdi->tag == DW_TAG_subprogram
9295           && child_pdi->linkage_name != NULL)
9296         {
9297           char *actual_class_name
9298             = language_class_name_from_physname (cu->language_defn,
9299                                                  child_pdi->linkage_name);
9300           if (actual_class_name != NULL)
9301             {
9302               struct_pdi->name
9303                 = obsavestring (actual_class_name,
9304                                 strlen (actual_class_name),
9305                                 &cu->objfile->objfile_obstack);
9306               xfree (actual_class_name);
9307             }
9308           break;
9309         }
9310     }
9311 }
9312
9313 /* Adjust PART_DIE before generating a symbol for it.  This function
9314    may set the is_external flag or change the DIE's name.  */
9315
9316 static void
9317 fixup_partial_die (struct partial_die_info *part_die,
9318                    struct dwarf2_cu *cu)
9319 {
9320   /* Once we've fixed up a die, there's no point in doing so again.
9321      This also avoids a memory leak if we were to call
9322      guess_partial_die_structure_name multiple times.  */
9323   if (part_die->fixup_called)
9324     return;
9325
9326   /* If we found a reference attribute and the DIE has no name, try
9327      to find a name in the referred to DIE.  */
9328
9329   if (part_die->name == NULL && part_die->has_specification)
9330     {
9331       struct partial_die_info *spec_die;
9332
9333       spec_die = find_partial_die (part_die->spec_offset, cu);
9334
9335       fixup_partial_die (spec_die, cu);
9336
9337       if (spec_die->name)
9338         {
9339           part_die->name = spec_die->name;
9340
9341           /* Copy DW_AT_external attribute if it is set.  */
9342           if (spec_die->is_external)
9343             part_die->is_external = spec_die->is_external;
9344         }
9345     }
9346
9347   /* Set default names for some unnamed DIEs.  */
9348
9349   if (part_die->name == NULL && part_die->tag == DW_TAG_namespace)
9350     part_die->name = "(anonymous namespace)";
9351
9352   /* If there is no parent die to provide a namespace, and there are
9353      children, see if we can determine the namespace from their linkage
9354      name.
9355      NOTE: We need to do this even if cu->has_namespace_info != 0.
9356      gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  */
9357   if (cu->language == language_cplus
9358       && dwarf2_per_objfile->types.asection != NULL
9359       && part_die->die_parent == NULL
9360       && part_die->has_children
9361       && (part_die->tag == DW_TAG_class_type
9362           || part_die->tag == DW_TAG_structure_type
9363           || part_die->tag == DW_TAG_union_type))
9364     guess_partial_die_structure_name (part_die, cu);
9365
9366   part_die->fixup_called = 1;
9367 }
9368
9369 /* Read an attribute value described by an attribute form.  */
9370
9371 static gdb_byte *
9372 read_attribute_value (struct attribute *attr, unsigned form,
9373                       bfd *abfd, gdb_byte *info_ptr,
9374                       struct dwarf2_cu *cu)
9375 {
9376   struct comp_unit_head *cu_header = &cu->header;
9377   unsigned int bytes_read;
9378   struct dwarf_block *blk;
9379
9380   attr->form = form;
9381   switch (form)
9382     {
9383     case DW_FORM_ref_addr:
9384       if (cu->header.version == 2)
9385         DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
9386       else
9387         DW_ADDR (attr) = read_offset (abfd, info_ptr,
9388                                       &cu->header, &bytes_read);
9389       info_ptr += bytes_read;
9390       break;
9391     case DW_FORM_addr:
9392       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
9393       info_ptr += bytes_read;
9394       break;
9395     case DW_FORM_block2:
9396       blk = dwarf_alloc_block (cu);
9397       blk->size = read_2_bytes (abfd, info_ptr);
9398       info_ptr += 2;
9399       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
9400       info_ptr += blk->size;
9401       DW_BLOCK (attr) = blk;
9402       break;
9403     case DW_FORM_block4:
9404       blk = dwarf_alloc_block (cu);
9405       blk->size = read_4_bytes (abfd, info_ptr);
9406       info_ptr += 4;
9407       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
9408       info_ptr += blk->size;
9409       DW_BLOCK (attr) = blk;
9410       break;
9411     case DW_FORM_data2:
9412       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
9413       info_ptr += 2;
9414       break;
9415     case DW_FORM_data4:
9416       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
9417       info_ptr += 4;
9418       break;
9419     case DW_FORM_data8:
9420       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
9421       info_ptr += 8;
9422       break;
9423     case DW_FORM_sec_offset:
9424       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
9425       info_ptr += bytes_read;
9426       break;
9427     case DW_FORM_string:
9428       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
9429       DW_STRING_IS_CANONICAL (attr) = 0;
9430       info_ptr += bytes_read;
9431       break;
9432     case DW_FORM_strp:
9433       DW_STRING (attr) = read_indirect_string (abfd, info_ptr, cu_header,
9434                                                &bytes_read);
9435       DW_STRING_IS_CANONICAL (attr) = 0;
9436       info_ptr += bytes_read;
9437       break;
9438     case DW_FORM_exprloc:
9439     case DW_FORM_block:
9440       blk = dwarf_alloc_block (cu);
9441       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9442       info_ptr += bytes_read;
9443       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
9444       info_ptr += blk->size;
9445       DW_BLOCK (attr) = blk;
9446       break;
9447     case DW_FORM_block1:
9448       blk = dwarf_alloc_block (cu);
9449       blk->size = read_1_byte (abfd, info_ptr);
9450       info_ptr += 1;
9451       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
9452       info_ptr += blk->size;
9453       DW_BLOCK (attr) = blk;
9454       break;
9455     case DW_FORM_data1:
9456       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
9457       info_ptr += 1;
9458       break;
9459     case DW_FORM_flag:
9460       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
9461       info_ptr += 1;
9462       break;
9463     case DW_FORM_flag_present:
9464       DW_UNSND (attr) = 1;
9465       break;
9466     case DW_FORM_sdata:
9467       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
9468       info_ptr += bytes_read;
9469       break;
9470     case DW_FORM_udata:
9471       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9472       info_ptr += bytes_read;
9473       break;
9474     case DW_FORM_ref1:
9475       DW_ADDR (attr) = cu->header.offset + read_1_byte (abfd, info_ptr);
9476       info_ptr += 1;
9477       break;
9478     case DW_FORM_ref2:
9479       DW_ADDR (attr) = cu->header.offset + read_2_bytes (abfd, info_ptr);
9480       info_ptr += 2;
9481       break;
9482     case DW_FORM_ref4:
9483       DW_ADDR (attr) = cu->header.offset + read_4_bytes (abfd, info_ptr);
9484       info_ptr += 4;
9485       break;
9486     case DW_FORM_ref8:
9487       DW_ADDR (attr) = cu->header.offset + read_8_bytes (abfd, info_ptr);
9488       info_ptr += 8;
9489       break;
9490     case DW_FORM_sig8:
9491       /* Convert the signature to something we can record in DW_UNSND
9492          for later lookup.
9493          NOTE: This is NULL if the type wasn't found.  */
9494       DW_SIGNATURED_TYPE (attr) =
9495         lookup_signatured_type (cu->objfile, read_8_bytes (abfd, info_ptr));
9496       info_ptr += 8;
9497       break;
9498     case DW_FORM_ref_udata:
9499       DW_ADDR (attr) = (cu->header.offset
9500                         + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
9501       info_ptr += bytes_read;
9502       break;
9503     case DW_FORM_indirect:
9504       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9505       info_ptr += bytes_read;
9506       info_ptr = read_attribute_value (attr, form, abfd, info_ptr, cu);
9507       break;
9508     default:
9509       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
9510              dwarf_form_name (form),
9511              bfd_get_filename (abfd));
9512     }
9513
9514   /* We have seen instances where the compiler tried to emit a byte
9515      size attribute of -1 which ended up being encoded as an unsigned
9516      0xffffffff.  Although 0xffffffff is technically a valid size value,
9517      an object of this size seems pretty unlikely so we can relatively
9518      safely treat these cases as if the size attribute was invalid and
9519      treat them as zero by default.  */
9520   if (attr->name == DW_AT_byte_size
9521       && form == DW_FORM_data4
9522       && DW_UNSND (attr) >= 0xffffffff)
9523     {
9524       complaint
9525         (&symfile_complaints,
9526          _("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
9527          hex_string (DW_UNSND (attr)));
9528       DW_UNSND (attr) = 0;
9529     }
9530
9531   return info_ptr;
9532 }
9533
9534 /* Read an attribute described by an abbreviated attribute.  */
9535
9536 static gdb_byte *
9537 read_attribute (struct attribute *attr, struct attr_abbrev *abbrev,
9538                 bfd *abfd, gdb_byte *info_ptr, struct dwarf2_cu *cu)
9539 {
9540   attr->name = abbrev->name;
9541   return read_attribute_value (attr, abbrev->form, abfd, info_ptr, cu);
9542 }
9543
9544 /* Read dwarf information from a buffer.  */
9545
9546 static unsigned int
9547 read_1_byte (bfd *abfd, gdb_byte *buf)
9548 {
9549   return bfd_get_8 (abfd, buf);
9550 }
9551
9552 static int
9553 read_1_signed_byte (bfd *abfd, gdb_byte *buf)
9554 {
9555   return bfd_get_signed_8 (abfd, buf);
9556 }
9557
9558 static unsigned int
9559 read_2_bytes (bfd *abfd, gdb_byte *buf)
9560 {
9561   return bfd_get_16 (abfd, buf);
9562 }
9563
9564 static int
9565 read_2_signed_bytes (bfd *abfd, gdb_byte *buf)
9566 {
9567   return bfd_get_signed_16 (abfd, buf);
9568 }
9569
9570 static unsigned int
9571 read_4_bytes (bfd *abfd, gdb_byte *buf)
9572 {
9573   return bfd_get_32 (abfd, buf);
9574 }
9575
9576 static int
9577 read_4_signed_bytes (bfd *abfd, gdb_byte *buf)
9578 {
9579   return bfd_get_signed_32 (abfd, buf);
9580 }
9581
9582 static ULONGEST
9583 read_8_bytes (bfd *abfd, gdb_byte *buf)
9584 {
9585   return bfd_get_64 (abfd, buf);
9586 }
9587
9588 static CORE_ADDR
9589 read_address (bfd *abfd, gdb_byte *buf, struct dwarf2_cu *cu,
9590               unsigned int *bytes_read)
9591 {
9592   struct comp_unit_head *cu_header = &cu->header;
9593   CORE_ADDR retval = 0;
9594
9595   if (cu_header->signed_addr_p)
9596     {
9597       switch (cu_header->addr_size)
9598         {
9599         case 2:
9600           retval = bfd_get_signed_16 (abfd, buf);
9601           break;
9602         case 4:
9603           retval = bfd_get_signed_32 (abfd, buf);
9604           break;
9605         case 8:
9606           retval = bfd_get_signed_64 (abfd, buf);
9607           break;
9608         default:
9609           internal_error (__FILE__, __LINE__,
9610                           _("read_address: bad switch, signed [in module %s]"),
9611                           bfd_get_filename (abfd));
9612         }
9613     }
9614   else
9615     {
9616       switch (cu_header->addr_size)
9617         {
9618         case 2:
9619           retval = bfd_get_16 (abfd, buf);
9620           break;
9621         case 4:
9622           retval = bfd_get_32 (abfd, buf);
9623           break;
9624         case 8:
9625           retval = bfd_get_64 (abfd, buf);
9626           break;
9627         default:
9628           internal_error (__FILE__, __LINE__,
9629                           _("read_address: bad switch, "
9630                             "unsigned [in module %s]"),
9631                           bfd_get_filename (abfd));
9632         }
9633     }
9634
9635   *bytes_read = cu_header->addr_size;
9636   return retval;
9637 }
9638
9639 /* Read the initial length from a section.  The (draft) DWARF 3
9640    specification allows the initial length to take up either 4 bytes
9641    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
9642    bytes describe the length and all offsets will be 8 bytes in length
9643    instead of 4.
9644
9645    An older, non-standard 64-bit format is also handled by this
9646    function.  The older format in question stores the initial length
9647    as an 8-byte quantity without an escape value.  Lengths greater
9648    than 2^32 aren't very common which means that the initial 4 bytes
9649    is almost always zero.  Since a length value of zero doesn't make
9650    sense for the 32-bit format, this initial zero can be considered to
9651    be an escape value which indicates the presence of the older 64-bit
9652    format.  As written, the code can't detect (old format) lengths
9653    greater than 4GB.  If it becomes necessary to handle lengths
9654    somewhat larger than 4GB, we could allow other small values (such
9655    as the non-sensical values of 1, 2, and 3) to also be used as
9656    escape values indicating the presence of the old format.
9657
9658    The value returned via bytes_read should be used to increment the
9659    relevant pointer after calling read_initial_length().
9660
9661    [ Note:  read_initial_length() and read_offset() are based on the
9662      document entitled "DWARF Debugging Information Format", revision
9663      3, draft 8, dated November 19, 2001.  This document was obtained
9664      from:
9665
9666         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
9667
9668      This document is only a draft and is subject to change.  (So beware.)
9669
9670      Details regarding the older, non-standard 64-bit format were
9671      determined empirically by examining 64-bit ELF files produced by
9672      the SGI toolchain on an IRIX 6.5 machine.
9673
9674      - Kevin, July 16, 2002
9675    ] */
9676
9677 static LONGEST
9678 read_initial_length (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read)
9679 {
9680   LONGEST length = bfd_get_32 (abfd, buf);
9681
9682   if (length == 0xffffffff)
9683     {
9684       length = bfd_get_64 (abfd, buf + 4);
9685       *bytes_read = 12;
9686     }
9687   else if (length == 0)
9688     {
9689       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
9690       length = bfd_get_64 (abfd, buf);
9691       *bytes_read = 8;
9692     }
9693   else
9694     {
9695       *bytes_read = 4;
9696     }
9697
9698   return length;
9699 }
9700
9701 /* Cover function for read_initial_length.
9702    Returns the length of the object at BUF, and stores the size of the
9703    initial length in *BYTES_READ and stores the size that offsets will be in
9704    *OFFSET_SIZE.
9705    If the initial length size is not equivalent to that specified in
9706    CU_HEADER then issue a complaint.
9707    This is useful when reading non-comp-unit headers.  */
9708
9709 static LONGEST
9710 read_checked_initial_length_and_offset (bfd *abfd, gdb_byte *buf,
9711                                         const struct comp_unit_head *cu_header,
9712                                         unsigned int *bytes_read,
9713                                         unsigned int *offset_size)
9714 {
9715   LONGEST length = read_initial_length (abfd, buf, bytes_read);
9716
9717   gdb_assert (cu_header->initial_length_size == 4
9718               || cu_header->initial_length_size == 8
9719               || cu_header->initial_length_size == 12);
9720
9721   if (cu_header->initial_length_size != *bytes_read)
9722     complaint (&symfile_complaints,
9723                _("intermixed 32-bit and 64-bit DWARF sections"));
9724
9725   *offset_size = (*bytes_read == 4) ? 4 : 8;
9726   return length;
9727 }
9728
9729 /* Read an offset from the data stream.  The size of the offset is
9730    given by cu_header->offset_size.  */
9731
9732 static LONGEST
9733 read_offset (bfd *abfd, gdb_byte *buf, const struct comp_unit_head *cu_header,
9734              unsigned int *bytes_read)
9735 {
9736   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
9737
9738   *bytes_read = cu_header->offset_size;
9739   return offset;
9740 }
9741
9742 /* Read an offset from the data stream.  */
9743
9744 static LONGEST
9745 read_offset_1 (bfd *abfd, gdb_byte *buf, unsigned int offset_size)
9746 {
9747   LONGEST retval = 0;
9748
9749   switch (offset_size)
9750     {
9751     case 4:
9752       retval = bfd_get_32 (abfd, buf);
9753       break;
9754     case 8:
9755       retval = bfd_get_64 (abfd, buf);
9756       break;
9757     default:
9758       internal_error (__FILE__, __LINE__,
9759                       _("read_offset_1: bad switch [in module %s]"),
9760                       bfd_get_filename (abfd));
9761     }
9762
9763   return retval;
9764 }
9765
9766 static gdb_byte *
9767 read_n_bytes (bfd *abfd, gdb_byte *buf, unsigned int size)
9768 {
9769   /* If the size of a host char is 8 bits, we can return a pointer
9770      to the buffer, otherwise we have to copy the data to a buffer
9771      allocated on the temporary obstack.  */
9772   gdb_assert (HOST_CHAR_BIT == 8);
9773   return buf;
9774 }
9775
9776 static char *
9777 read_direct_string (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
9778 {
9779   /* If the size of a host char is 8 bits, we can return a pointer
9780      to the string, otherwise we have to copy the string to a buffer
9781      allocated on the temporary obstack.  */
9782   gdb_assert (HOST_CHAR_BIT == 8);
9783   if (*buf == '\0')
9784     {
9785       *bytes_read_ptr = 1;
9786       return NULL;
9787     }
9788   *bytes_read_ptr = strlen ((char *) buf) + 1;
9789   return (char *) buf;
9790 }
9791
9792 static char *
9793 read_indirect_string (bfd *abfd, gdb_byte *buf,
9794                       const struct comp_unit_head *cu_header,
9795                       unsigned int *bytes_read_ptr)
9796 {
9797   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
9798
9799   dwarf2_read_section (dwarf2_per_objfile->objfile, &dwarf2_per_objfile->str);
9800   if (dwarf2_per_objfile->str.buffer == NULL)
9801     {
9802       error (_("DW_FORM_strp used without .debug_str section [in module %s]"),
9803                       bfd_get_filename (abfd));
9804       return NULL;
9805     }
9806   if (str_offset >= dwarf2_per_objfile->str.size)
9807     {
9808       error (_("DW_FORM_strp pointing outside of "
9809                ".debug_str section [in module %s]"),
9810              bfd_get_filename (abfd));
9811       return NULL;
9812     }
9813   gdb_assert (HOST_CHAR_BIT == 8);
9814   if (dwarf2_per_objfile->str.buffer[str_offset] == '\0')
9815     return NULL;
9816   return (char *) (dwarf2_per_objfile->str.buffer + str_offset);
9817 }
9818
9819 static unsigned long
9820 read_unsigned_leb128 (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
9821 {
9822   unsigned long result;
9823   unsigned int num_read;
9824   int i, shift;
9825   unsigned char byte;
9826
9827   result = 0;
9828   shift = 0;
9829   num_read = 0;
9830   i = 0;
9831   while (1)
9832     {
9833       byte = bfd_get_8 (abfd, buf);
9834       buf++;
9835       num_read++;
9836       result |= ((unsigned long)(byte & 127) << shift);
9837       if ((byte & 128) == 0)
9838         {
9839           break;
9840         }
9841       shift += 7;
9842     }
9843   *bytes_read_ptr = num_read;
9844   return result;
9845 }
9846
9847 static long
9848 read_signed_leb128 (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
9849 {
9850   long result;
9851   int i, shift, num_read;
9852   unsigned char byte;
9853
9854   result = 0;
9855   shift = 0;
9856   num_read = 0;
9857   i = 0;
9858   while (1)
9859     {
9860       byte = bfd_get_8 (abfd, buf);
9861       buf++;
9862       num_read++;
9863       result |= ((long)(byte & 127) << shift);
9864       shift += 7;
9865       if ((byte & 128) == 0)
9866         {
9867           break;
9868         }
9869     }
9870   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
9871     result |= -(((long)1) << shift);
9872   *bytes_read_ptr = num_read;
9873   return result;
9874 }
9875
9876 /* Return a pointer to just past the end of an LEB128 number in BUF.  */
9877
9878 static gdb_byte *
9879 skip_leb128 (bfd *abfd, gdb_byte *buf)
9880 {
9881   int byte;
9882
9883   while (1)
9884     {
9885       byte = bfd_get_8 (abfd, buf);
9886       buf++;
9887       if ((byte & 128) == 0)
9888         return buf;
9889     }
9890 }
9891
9892 static void
9893 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
9894 {
9895   switch (lang)
9896     {
9897     case DW_LANG_C89:
9898     case DW_LANG_C99:
9899     case DW_LANG_C:
9900       cu->language = language_c;
9901       break;
9902     case DW_LANG_C_plus_plus:
9903       cu->language = language_cplus;
9904       break;
9905     case DW_LANG_D:
9906       cu->language = language_d;
9907       break;
9908     case DW_LANG_Fortran77:
9909     case DW_LANG_Fortran90:
9910     case DW_LANG_Fortran95:
9911       cu->language = language_fortran;
9912       break;
9913     case DW_LANG_Mips_Assembler:
9914       cu->language = language_asm;
9915       break;
9916     case DW_LANG_Java:
9917       cu->language = language_java;
9918       break;
9919     case DW_LANG_Ada83:
9920     case DW_LANG_Ada95:
9921       cu->language = language_ada;
9922       break;
9923     case DW_LANG_Modula2:
9924       cu->language = language_m2;
9925       break;
9926     case DW_LANG_Pascal83:
9927       cu->language = language_pascal;
9928       break;
9929     case DW_LANG_ObjC:
9930       cu->language = language_objc;
9931       break;
9932     case DW_LANG_Cobol74:
9933     case DW_LANG_Cobol85:
9934     default:
9935       cu->language = language_minimal;
9936       break;
9937     }
9938   cu->language_defn = language_def (cu->language);
9939 }
9940
9941 /* Return the named attribute or NULL if not there.  */
9942
9943 static struct attribute *
9944 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
9945 {
9946   unsigned int i;
9947   struct attribute *spec = NULL;
9948
9949   for (i = 0; i < die->num_attrs; ++i)
9950     {
9951       if (die->attrs[i].name == name)
9952         return &die->attrs[i];
9953       if (die->attrs[i].name == DW_AT_specification
9954           || die->attrs[i].name == DW_AT_abstract_origin)
9955         spec = &die->attrs[i];
9956     }
9957
9958   if (spec)
9959     {
9960       die = follow_die_ref (die, spec, &cu);
9961       return dwarf2_attr (die, name, cu);
9962     }
9963
9964   return NULL;
9965 }
9966
9967 /* Return the named attribute or NULL if not there,
9968    but do not follow DW_AT_specification, etc.
9969    This is for use in contexts where we're reading .debug_types dies.
9970    Following DW_AT_specification, DW_AT_abstract_origin will take us
9971    back up the chain, and we want to go down.  */
9972
9973 static struct attribute *
9974 dwarf2_attr_no_follow (struct die_info *die, unsigned int name,
9975                        struct dwarf2_cu *cu)
9976 {
9977   unsigned int i;
9978
9979   for (i = 0; i < die->num_attrs; ++i)
9980     if (die->attrs[i].name == name)
9981       return &die->attrs[i];
9982
9983   return NULL;
9984 }
9985
9986 /* Return non-zero iff the attribute NAME is defined for the given DIE,
9987    and holds a non-zero value.  This function should only be used for
9988    DW_FORM_flag or DW_FORM_flag_present attributes.  */
9989
9990 static int
9991 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
9992 {
9993   struct attribute *attr = dwarf2_attr (die, name, cu);
9994
9995   return (attr && DW_UNSND (attr));
9996 }
9997
9998 static int
9999 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
10000 {
10001   /* A DIE is a declaration if it has a DW_AT_declaration attribute
10002      which value is non-zero.  However, we have to be careful with
10003      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
10004      (via dwarf2_flag_true_p) follows this attribute.  So we may
10005      end up accidently finding a declaration attribute that belongs
10006      to a different DIE referenced by the specification attribute,
10007      even though the given DIE does not have a declaration attribute.  */
10008   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
10009           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
10010 }
10011
10012 /* Return the die giving the specification for DIE, if there is
10013    one.  *SPEC_CU is the CU containing DIE on input, and the CU
10014    containing the return value on output.  If there is no
10015    specification, but there is an abstract origin, that is
10016    returned.  */
10017
10018 static struct die_info *
10019 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
10020 {
10021   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
10022                                              *spec_cu);
10023
10024   if (spec_attr == NULL)
10025     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
10026
10027   if (spec_attr == NULL)
10028     return NULL;
10029   else
10030     return follow_die_ref (die, spec_attr, spec_cu);
10031 }
10032
10033 /* Free the line_header structure *LH, and any arrays and strings it
10034    refers to.
10035    NOTE: This is also used as a "cleanup" function.  */
10036
10037 static void
10038 free_line_header (struct line_header *lh)
10039 {
10040   if (lh->standard_opcode_lengths)
10041     xfree (lh->standard_opcode_lengths);
10042
10043   /* Remember that all the lh->file_names[i].name pointers are
10044      pointers into debug_line_buffer, and don't need to be freed.  */
10045   if (lh->file_names)
10046     xfree (lh->file_names);
10047
10048   /* Similarly for the include directory names.  */
10049   if (lh->include_dirs)
10050     xfree (lh->include_dirs);
10051
10052   xfree (lh);
10053 }
10054
10055 /* Add an entry to LH's include directory table.  */
10056
10057 static void
10058 add_include_dir (struct line_header *lh, char *include_dir)
10059 {
10060   /* Grow the array if necessary.  */
10061   if (lh->include_dirs_size == 0)
10062     {
10063       lh->include_dirs_size = 1; /* for testing */
10064       lh->include_dirs = xmalloc (lh->include_dirs_size
10065                                   * sizeof (*lh->include_dirs));
10066     }
10067   else if (lh->num_include_dirs >= lh->include_dirs_size)
10068     {
10069       lh->include_dirs_size *= 2;
10070       lh->include_dirs = xrealloc (lh->include_dirs,
10071                                    (lh->include_dirs_size
10072                                     * sizeof (*lh->include_dirs)));
10073     }
10074
10075   lh->include_dirs[lh->num_include_dirs++] = include_dir;
10076 }
10077
10078 /* Add an entry to LH's file name table.  */
10079
10080 static void
10081 add_file_name (struct line_header *lh,
10082                char *name,
10083                unsigned int dir_index,
10084                unsigned int mod_time,
10085                unsigned int length)
10086 {
10087   struct file_entry *fe;
10088
10089   /* Grow the array if necessary.  */
10090   if (lh->file_names_size == 0)
10091     {
10092       lh->file_names_size = 1; /* for testing */
10093       lh->file_names = xmalloc (lh->file_names_size
10094                                 * sizeof (*lh->file_names));
10095     }
10096   else if (lh->num_file_names >= lh->file_names_size)
10097     {
10098       lh->file_names_size *= 2;
10099       lh->file_names = xrealloc (lh->file_names,
10100                                  (lh->file_names_size
10101                                   * sizeof (*lh->file_names)));
10102     }
10103
10104   fe = &lh->file_names[lh->num_file_names++];
10105   fe->name = name;
10106   fe->dir_index = dir_index;
10107   fe->mod_time = mod_time;
10108   fe->length = length;
10109   fe->included_p = 0;
10110   fe->symtab = NULL;
10111 }
10112
10113 /* Read the statement program header starting at OFFSET in
10114    .debug_line, according to the endianness of ABFD.  Return a pointer
10115    to a struct line_header, allocated using xmalloc.
10116
10117    NOTE: the strings in the include directory and file name tables of
10118    the returned object point into debug_line_buffer, and must not be
10119    freed.  */
10120
10121 static struct line_header *
10122 dwarf_decode_line_header (unsigned int offset, bfd *abfd,
10123                           struct dwarf2_cu *cu)
10124 {
10125   struct cleanup *back_to;
10126   struct line_header *lh;
10127   gdb_byte *line_ptr;
10128   unsigned int bytes_read, offset_size;
10129   int i;
10130   char *cur_dir, *cur_file;
10131
10132   dwarf2_read_section (dwarf2_per_objfile->objfile, &dwarf2_per_objfile->line);
10133   if (dwarf2_per_objfile->line.buffer == NULL)
10134     {
10135       complaint (&symfile_complaints, _("missing .debug_line section"));
10136       return 0;
10137     }
10138
10139   /* Make sure that at least there's room for the total_length field.
10140      That could be 12 bytes long, but we're just going to fudge that.  */
10141   if (offset + 4 >= dwarf2_per_objfile->line.size)
10142     {
10143       dwarf2_statement_list_fits_in_line_number_section_complaint ();
10144       return 0;
10145     }
10146
10147   lh = xmalloc (sizeof (*lh));
10148   memset (lh, 0, sizeof (*lh));
10149   back_to = make_cleanup ((make_cleanup_ftype *) free_line_header,
10150                           (void *) lh);
10151
10152   line_ptr = dwarf2_per_objfile->line.buffer + offset;
10153
10154   /* Read in the header.  */
10155   lh->total_length =
10156     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
10157                                             &bytes_read, &offset_size);
10158   line_ptr += bytes_read;
10159   if (line_ptr + lh->total_length > (dwarf2_per_objfile->line.buffer
10160                                      + dwarf2_per_objfile->line.size))
10161     {
10162       dwarf2_statement_list_fits_in_line_number_section_complaint ();
10163       return 0;
10164     }
10165   lh->statement_program_end = line_ptr + lh->total_length;
10166   lh->version = read_2_bytes (abfd, line_ptr);
10167   line_ptr += 2;
10168   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
10169   line_ptr += offset_size;
10170   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
10171   line_ptr += 1;
10172   if (lh->version >= 4)
10173     {
10174       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
10175       line_ptr += 1;
10176     }
10177   else
10178     lh->maximum_ops_per_instruction = 1;
10179
10180   if (lh->maximum_ops_per_instruction == 0)
10181     {
10182       lh->maximum_ops_per_instruction = 1;
10183       complaint (&symfile_complaints,
10184                  _("invalid maximum_ops_per_instruction "
10185                    "in `.debug_line' section"));
10186     }
10187
10188   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
10189   line_ptr += 1;
10190   lh->line_base = read_1_signed_byte (abfd, line_ptr);
10191   line_ptr += 1;
10192   lh->line_range = read_1_byte (abfd, line_ptr);
10193   line_ptr += 1;
10194   lh->opcode_base = read_1_byte (abfd, line_ptr);
10195   line_ptr += 1;
10196   lh->standard_opcode_lengths
10197     = xmalloc (lh->opcode_base * sizeof (lh->standard_opcode_lengths[0]));
10198
10199   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
10200   for (i = 1; i < lh->opcode_base; ++i)
10201     {
10202       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
10203       line_ptr += 1;
10204     }
10205
10206   /* Read directory table.  */
10207   while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
10208     {
10209       line_ptr += bytes_read;
10210       add_include_dir (lh, cur_dir);
10211     }
10212   line_ptr += bytes_read;
10213
10214   /* Read file name table.  */
10215   while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
10216     {
10217       unsigned int dir_index, mod_time, length;
10218
10219       line_ptr += bytes_read;
10220       dir_index = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
10221       line_ptr += bytes_read;
10222       mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
10223       line_ptr += bytes_read;
10224       length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
10225       line_ptr += bytes_read;
10226
10227       add_file_name (lh, cur_file, dir_index, mod_time, length);
10228     }
10229   line_ptr += bytes_read;
10230   lh->statement_program_start = line_ptr;
10231
10232   if (line_ptr > (dwarf2_per_objfile->line.buffer
10233                   + dwarf2_per_objfile->line.size))
10234     complaint (&symfile_complaints,
10235                _("line number info header doesn't "
10236                  "fit in `.debug_line' section"));
10237
10238   discard_cleanups (back_to);
10239   return lh;
10240 }
10241
10242 /* This function exists to work around a bug in certain compilers
10243    (particularly GCC 2.95), in which the first line number marker of a
10244    function does not show up until after the prologue, right before
10245    the second line number marker.  This function shifts ADDRESS down
10246    to the beginning of the function if necessary, and is called on
10247    addresses passed to record_line.  */
10248
10249 static CORE_ADDR
10250 check_cu_functions (CORE_ADDR address, struct dwarf2_cu *cu)
10251 {
10252   struct function_range *fn;
10253
10254   /* Find the function_range containing address.  */
10255   if (!cu->first_fn)
10256     return address;
10257
10258   if (!cu->cached_fn)
10259     cu->cached_fn = cu->first_fn;
10260
10261   fn = cu->cached_fn;
10262   while (fn)
10263     if (fn->lowpc <= address && fn->highpc > address)
10264       goto found;
10265     else
10266       fn = fn->next;
10267
10268   fn = cu->first_fn;
10269   while (fn && fn != cu->cached_fn)
10270     if (fn->lowpc <= address && fn->highpc > address)
10271       goto found;
10272     else
10273       fn = fn->next;
10274
10275   return address;
10276
10277  found:
10278   if (fn->seen_line)
10279     return address;
10280   if (address != fn->lowpc)
10281     complaint (&symfile_complaints,
10282                _("misplaced first line number at 0x%lx for '%s'"),
10283                (unsigned long) address, fn->name);
10284   fn->seen_line = 1;
10285   return fn->lowpc;
10286 }
10287
10288 /* Subroutine of dwarf_decode_lines to simplify it.
10289    Return the file name of the psymtab for included file FILE_INDEX
10290    in line header LH of PST.
10291    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
10292    If space for the result is malloc'd, it will be freed by a cleanup.
10293    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.  */
10294
10295 static char *
10296 psymtab_include_file_name (const struct line_header *lh, int file_index,
10297                            const struct partial_symtab *pst,
10298                            const char *comp_dir)
10299 {
10300   const struct file_entry fe = lh->file_names [file_index];
10301   char *include_name = fe.name;
10302   char *include_name_to_compare = include_name;
10303   char *dir_name = NULL;
10304   const char *pst_filename;
10305   char *copied_name = NULL;
10306   int file_is_pst;
10307
10308   if (fe.dir_index)
10309     dir_name = lh->include_dirs[fe.dir_index - 1];
10310
10311   if (!IS_ABSOLUTE_PATH (include_name)
10312       && (dir_name != NULL || comp_dir != NULL))
10313     {
10314       /* Avoid creating a duplicate psymtab for PST.
10315          We do this by comparing INCLUDE_NAME and PST_FILENAME.
10316          Before we do the comparison, however, we need to account
10317          for DIR_NAME and COMP_DIR.
10318          First prepend dir_name (if non-NULL).  If we still don't
10319          have an absolute path prepend comp_dir (if non-NULL).
10320          However, the directory we record in the include-file's
10321          psymtab does not contain COMP_DIR (to match the
10322          corresponding symtab(s)).
10323
10324          Example:
10325
10326          bash$ cd /tmp
10327          bash$ gcc -g ./hello.c
10328          include_name = "hello.c"
10329          dir_name = "."
10330          DW_AT_comp_dir = comp_dir = "/tmp"
10331          DW_AT_name = "./hello.c"  */
10332
10333       if (dir_name != NULL)
10334         {
10335           include_name = concat (dir_name, SLASH_STRING,
10336                                  include_name, (char *)NULL);
10337           include_name_to_compare = include_name;
10338           make_cleanup (xfree, include_name);
10339         }
10340       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
10341         {
10342           include_name_to_compare = concat (comp_dir, SLASH_STRING,
10343                                             include_name, (char *)NULL);
10344         }
10345     }
10346
10347   pst_filename = pst->filename;
10348   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
10349     {
10350       copied_name = concat (pst->dirname, SLASH_STRING,
10351                             pst_filename, (char *)NULL);
10352       pst_filename = copied_name;
10353     }
10354
10355   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
10356
10357   if (include_name_to_compare != include_name)
10358     xfree (include_name_to_compare);
10359   if (copied_name != NULL)
10360     xfree (copied_name);
10361
10362   if (file_is_pst)
10363     return NULL;
10364   return include_name;
10365 }
10366
10367 /* Decode the Line Number Program (LNP) for the given line_header
10368    structure and CU.  The actual information extracted and the type
10369    of structures created from the LNP depends on the value of PST.
10370
10371    1. If PST is NULL, then this procedure uses the data from the program
10372       to create all necessary symbol tables, and their linetables.
10373
10374    2. If PST is not NULL, this procedure reads the program to determine
10375       the list of files included by the unit represented by PST, and
10376       builds all the associated partial symbol tables.
10377
10378    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
10379    It is used for relative paths in the line table.
10380    NOTE: When processing partial symtabs (pst != NULL),
10381    comp_dir == pst->dirname.
10382
10383    NOTE: It is important that psymtabs have the same file name (via strcmp)
10384    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
10385    symtab we don't use it in the name of the psymtabs we create.
10386    E.g. expand_line_sal requires this when finding psymtabs to expand.
10387    A good testcase for this is mb-inline.exp.  */
10388
10389 static void
10390 dwarf_decode_lines (struct line_header *lh, const char *comp_dir, bfd *abfd,
10391                     struct dwarf2_cu *cu, struct partial_symtab *pst)
10392 {
10393   gdb_byte *line_ptr, *extended_end;
10394   gdb_byte *line_end;
10395   unsigned int bytes_read, extended_len;
10396   unsigned char op_code, extended_op, adj_opcode;
10397   CORE_ADDR baseaddr;
10398   struct objfile *objfile = cu->objfile;
10399   struct gdbarch *gdbarch = get_objfile_arch (objfile);
10400   const int decode_for_pst_p = (pst != NULL);
10401   struct subfile *last_subfile = NULL, *first_subfile = current_subfile;
10402
10403   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10404
10405   line_ptr = lh->statement_program_start;
10406   line_end = lh->statement_program_end;
10407
10408   /* Read the statement sequences until there's nothing left.  */
10409   while (line_ptr < line_end)
10410     {
10411       /* state machine registers  */
10412       CORE_ADDR address = 0;
10413       unsigned int file = 1;
10414       unsigned int line = 1;
10415       unsigned int column = 0;
10416       int is_stmt = lh->default_is_stmt;
10417       int basic_block = 0;
10418       int end_sequence = 0;
10419       CORE_ADDR addr;
10420       unsigned char op_index = 0;
10421
10422       if (!decode_for_pst_p && lh->num_file_names >= file)
10423         {
10424           /* Start a subfile for the current file of the state machine.  */
10425           /* lh->include_dirs and lh->file_names are 0-based, but the
10426              directory and file name numbers in the statement program
10427              are 1-based.  */
10428           struct file_entry *fe = &lh->file_names[file - 1];
10429           char *dir = NULL;
10430
10431           if (fe->dir_index)
10432             dir = lh->include_dirs[fe->dir_index - 1];
10433
10434           dwarf2_start_subfile (fe->name, dir, comp_dir);
10435         }
10436
10437       /* Decode the table.  */
10438       while (!end_sequence)
10439         {
10440           op_code = read_1_byte (abfd, line_ptr);
10441           line_ptr += 1;
10442           if (line_ptr > line_end)
10443             {
10444               dwarf2_debug_line_missing_end_sequence_complaint ();
10445               break;
10446             }
10447
10448           if (op_code >= lh->opcode_base)
10449             {
10450               /* Special operand.  */
10451               adj_opcode = op_code - lh->opcode_base;
10452               address += (((op_index + (adj_opcode / lh->line_range))
10453                            / lh->maximum_ops_per_instruction)
10454                           * lh->minimum_instruction_length);
10455               op_index = ((op_index + (adj_opcode / lh->line_range))
10456                           % lh->maximum_ops_per_instruction);
10457               line += lh->line_base + (adj_opcode % lh->line_range);
10458               if (lh->num_file_names < file || file == 0)
10459                 dwarf2_debug_line_missing_file_complaint ();
10460               /* For now we ignore lines not starting on an
10461                  instruction boundary.  */
10462               else if (op_index == 0)
10463                 {
10464                   lh->file_names[file - 1].included_p = 1;
10465                   if (!decode_for_pst_p && is_stmt)
10466                     {
10467                       if (last_subfile != current_subfile)
10468                         {
10469                           addr = gdbarch_addr_bits_remove (gdbarch, address);
10470                           if (last_subfile)
10471                             record_line (last_subfile, 0, addr);
10472                           last_subfile = current_subfile;
10473                         }
10474                       /* Append row to matrix using current values.  */
10475                       addr = check_cu_functions (address, cu);
10476                       addr = gdbarch_addr_bits_remove (gdbarch, addr);
10477                       record_line (current_subfile, line, addr);
10478                     }
10479                 }
10480               basic_block = 0;
10481             }
10482           else switch (op_code)
10483             {
10484             case DW_LNS_extended_op:
10485               extended_len = read_unsigned_leb128 (abfd, line_ptr,
10486                                                    &bytes_read);
10487               line_ptr += bytes_read;
10488               extended_end = line_ptr + extended_len;
10489               extended_op = read_1_byte (abfd, line_ptr);
10490               line_ptr += 1;
10491               switch (extended_op)
10492                 {
10493                 case DW_LNE_end_sequence:
10494                   end_sequence = 1;
10495                   break;
10496                 case DW_LNE_set_address:
10497                   address = read_address (abfd, line_ptr, cu, &bytes_read);
10498                   op_index = 0;
10499                   line_ptr += bytes_read;
10500                   address += baseaddr;
10501                   break;
10502                 case DW_LNE_define_file:
10503                   {
10504                     char *cur_file;
10505                     unsigned int dir_index, mod_time, length;
10506
10507                     cur_file = read_direct_string (abfd, line_ptr,
10508                                                    &bytes_read);
10509                     line_ptr += bytes_read;
10510                     dir_index =
10511                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
10512                     line_ptr += bytes_read;
10513                     mod_time =
10514                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
10515                     line_ptr += bytes_read;
10516                     length =
10517                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
10518                     line_ptr += bytes_read;
10519                     add_file_name (lh, cur_file, dir_index, mod_time, length);
10520                   }
10521                   break;
10522                 case DW_LNE_set_discriminator:
10523                   /* The discriminator is not interesting to the debugger;
10524                      just ignore it.  */
10525                   line_ptr = extended_end;
10526                   break;
10527                 default:
10528                   complaint (&symfile_complaints,
10529                              _("mangled .debug_line section"));
10530                   return;
10531                 }
10532               /* Make sure that we parsed the extended op correctly.  If e.g.
10533                  we expected a different address size than the producer used,
10534                  we may have read the wrong number of bytes.  */
10535               if (line_ptr != extended_end)
10536                 {
10537                   complaint (&symfile_complaints,
10538                              _("mangled .debug_line section"));
10539                   return;
10540                 }
10541               break;
10542             case DW_LNS_copy:
10543               if (lh->num_file_names < file || file == 0)
10544                 dwarf2_debug_line_missing_file_complaint ();
10545               else
10546                 {
10547                   lh->file_names[file - 1].included_p = 1;
10548                   if (!decode_for_pst_p && is_stmt)
10549                     {
10550                       if (last_subfile != current_subfile)
10551                         {
10552                           addr = gdbarch_addr_bits_remove (gdbarch, address);
10553                           if (last_subfile)
10554                             record_line (last_subfile, 0, addr);
10555                           last_subfile = current_subfile;
10556                         }
10557                       addr = check_cu_functions (address, cu);
10558                       addr = gdbarch_addr_bits_remove (gdbarch, addr);
10559                       record_line (current_subfile, line, addr);
10560                     }
10561                 }
10562               basic_block = 0;
10563               break;
10564             case DW_LNS_advance_pc:
10565               {
10566                 CORE_ADDR adjust
10567                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
10568
10569                 address += (((op_index + adjust)
10570                              / lh->maximum_ops_per_instruction)
10571                             * lh->minimum_instruction_length);
10572                 op_index = ((op_index + adjust)
10573                             % lh->maximum_ops_per_instruction);
10574                 line_ptr += bytes_read;
10575               }
10576               break;
10577             case DW_LNS_advance_line:
10578               line += read_signed_leb128 (abfd, line_ptr, &bytes_read);
10579               line_ptr += bytes_read;
10580               break;
10581             case DW_LNS_set_file:
10582               {
10583                 /* The arrays lh->include_dirs and lh->file_names are
10584                    0-based, but the directory and file name numbers in
10585                    the statement program are 1-based.  */
10586                 struct file_entry *fe;
10587                 char *dir = NULL;
10588
10589                 file = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
10590                 line_ptr += bytes_read;
10591                 if (lh->num_file_names < file || file == 0)
10592                   dwarf2_debug_line_missing_file_complaint ();
10593                 else
10594                   {
10595                     fe = &lh->file_names[file - 1];
10596                     if (fe->dir_index)
10597                       dir = lh->include_dirs[fe->dir_index - 1];
10598                     if (!decode_for_pst_p)
10599                       {
10600                         last_subfile = current_subfile;
10601                         dwarf2_start_subfile (fe->name, dir, comp_dir);
10602                       }
10603                   }
10604               }
10605               break;
10606             case DW_LNS_set_column:
10607               column = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
10608               line_ptr += bytes_read;
10609               break;
10610             case DW_LNS_negate_stmt:
10611               is_stmt = (!is_stmt);
10612               break;
10613             case DW_LNS_set_basic_block:
10614               basic_block = 1;
10615               break;
10616             /* Add to the address register of the state machine the
10617                address increment value corresponding to special opcode
10618                255.  I.e., this value is scaled by the minimum
10619                instruction length since special opcode 255 would have
10620                scaled the increment.  */
10621             case DW_LNS_const_add_pc:
10622               {
10623                 CORE_ADDR adjust = (255 - lh->opcode_base) / lh->line_range;
10624
10625                 address += (((op_index + adjust)
10626                              / lh->maximum_ops_per_instruction)
10627                             * lh->minimum_instruction_length);
10628                 op_index = ((op_index + adjust)
10629                             % lh->maximum_ops_per_instruction);
10630               }
10631               break;
10632             case DW_LNS_fixed_advance_pc:
10633               address += read_2_bytes (abfd, line_ptr);
10634               op_index = 0;
10635               line_ptr += 2;
10636               break;
10637             default:
10638               {
10639                 /* Unknown standard opcode, ignore it.  */
10640                 int i;
10641
10642                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
10643                   {
10644                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
10645                     line_ptr += bytes_read;
10646                   }
10647               }
10648             }
10649         }
10650       if (lh->num_file_names < file || file == 0)
10651         dwarf2_debug_line_missing_file_complaint ();
10652       else
10653         {
10654           lh->file_names[file - 1].included_p = 1;
10655           if (!decode_for_pst_p)
10656             {
10657               addr = gdbarch_addr_bits_remove (gdbarch, address);
10658               record_line (current_subfile, 0, addr);
10659             }
10660         }
10661     }
10662
10663   if (decode_for_pst_p)
10664     {
10665       int file_index;
10666
10667       /* Now that we're done scanning the Line Header Program, we can
10668          create the psymtab of each included file.  */
10669       for (file_index = 0; file_index < lh->num_file_names; file_index++)
10670         if (lh->file_names[file_index].included_p == 1)
10671           {
10672             char *include_name =
10673               psymtab_include_file_name (lh, file_index, pst, comp_dir);
10674             if (include_name != NULL)
10675               dwarf2_create_include_psymtab (include_name, pst, objfile);
10676           }
10677     }
10678   else
10679     {
10680       /* Make sure a symtab is created for every file, even files
10681          which contain only variables (i.e. no code with associated
10682          line numbers).  */
10683
10684       int i;
10685       struct file_entry *fe;
10686
10687       for (i = 0; i < lh->num_file_names; i++)
10688         {
10689           char *dir = NULL;
10690
10691           fe = &lh->file_names[i];
10692           if (fe->dir_index)
10693             dir = lh->include_dirs[fe->dir_index - 1];
10694           dwarf2_start_subfile (fe->name, dir, comp_dir);
10695
10696           /* Skip the main file; we don't need it, and it must be
10697              allocated last, so that it will show up before the
10698              non-primary symtabs in the objfile's symtab list.  */
10699           if (current_subfile == first_subfile)
10700             continue;
10701
10702           if (current_subfile->symtab == NULL)
10703             current_subfile->symtab = allocate_symtab (current_subfile->name,
10704                                                        cu->objfile);
10705           fe->symtab = current_subfile->symtab;
10706         }
10707     }
10708 }
10709
10710 /* Start a subfile for DWARF.  FILENAME is the name of the file and
10711    DIRNAME the name of the source directory which contains FILENAME
10712    or NULL if not known.  COMP_DIR is the compilation directory for the
10713    linetable's compilation unit or NULL if not known.
10714    This routine tries to keep line numbers from identical absolute and
10715    relative file names in a common subfile.
10716
10717    Using the `list' example from the GDB testsuite, which resides in
10718    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
10719    of /srcdir/list0.c yields the following debugging information for list0.c:
10720
10721    DW_AT_name:          /srcdir/list0.c
10722    DW_AT_comp_dir:              /compdir
10723    files.files[0].name: list0.h
10724    files.files[0].dir:  /srcdir
10725    files.files[1].name: list0.c
10726    files.files[1].dir:  /srcdir
10727
10728    The line number information for list0.c has to end up in a single
10729    subfile, so that `break /srcdir/list0.c:1' works as expected.
10730    start_subfile will ensure that this happens provided that we pass the
10731    concatenation of files.files[1].dir and files.files[1].name as the
10732    subfile's name.  */
10733
10734 static void
10735 dwarf2_start_subfile (char *filename, const char *dirname,
10736                       const char *comp_dir)
10737 {
10738   char *fullname;
10739
10740   /* While reading the DIEs, we call start_symtab(DW_AT_name, DW_AT_comp_dir).
10741      `start_symtab' will always pass the contents of DW_AT_comp_dir as
10742      second argument to start_subfile.  To be consistent, we do the
10743      same here.  In order not to lose the line information directory,
10744      we concatenate it to the filename when it makes sense.
10745      Note that the Dwarf3 standard says (speaking of filenames in line
10746      information): ``The directory index is ignored for file names
10747      that represent full path names''.  Thus ignoring dirname in the
10748      `else' branch below isn't an issue.  */
10749
10750   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
10751     fullname = concat (dirname, SLASH_STRING, filename, (char *)NULL);
10752   else
10753     fullname = filename;
10754
10755   start_subfile (fullname, comp_dir);
10756
10757   if (fullname != filename)
10758     xfree (fullname);
10759 }
10760
10761 static void
10762 var_decode_location (struct attribute *attr, struct symbol *sym,
10763                      struct dwarf2_cu *cu)
10764 {
10765   struct objfile *objfile = cu->objfile;
10766   struct comp_unit_head *cu_header = &cu->header;
10767
10768   /* NOTE drow/2003-01-30: There used to be a comment and some special
10769      code here to turn a symbol with DW_AT_external and a
10770      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
10771      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
10772      with some versions of binutils) where shared libraries could have
10773      relocations against symbols in their debug information - the
10774      minimal symbol would have the right address, but the debug info
10775      would not.  It's no longer necessary, because we will explicitly
10776      apply relocations when we read in the debug information now.  */
10777
10778   /* A DW_AT_location attribute with no contents indicates that a
10779      variable has been optimized away.  */
10780   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
10781     {
10782       SYMBOL_CLASS (sym) = LOC_OPTIMIZED_OUT;
10783       return;
10784     }
10785
10786   /* Handle one degenerate form of location expression specially, to
10787      preserve GDB's previous behavior when section offsets are
10788      specified.  If this is just a DW_OP_addr then mark this symbol
10789      as LOC_STATIC.  */
10790
10791   if (attr_form_is_block (attr)
10792       && DW_BLOCK (attr)->size == 1 + cu_header->addr_size
10793       && DW_BLOCK (attr)->data[0] == DW_OP_addr)
10794     {
10795       unsigned int dummy;
10796
10797       SYMBOL_VALUE_ADDRESS (sym) =
10798         read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
10799       SYMBOL_CLASS (sym) = LOC_STATIC;
10800       fixup_symbol_section (sym, objfile);
10801       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
10802                                               SYMBOL_SECTION (sym));
10803       return;
10804     }
10805
10806   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
10807      expression evaluator, and use LOC_COMPUTED only when necessary
10808      (i.e. when the value of a register or memory location is
10809      referenced, or a thread-local block, etc.).  Then again, it might
10810      not be worthwhile.  I'm assuming that it isn't unless performance
10811      or memory numbers show me otherwise.  */
10812
10813   dwarf2_symbol_mark_computed (attr, sym, cu);
10814   SYMBOL_CLASS (sym) = LOC_COMPUTED;
10815 }
10816
10817 /* Given a pointer to a DWARF information entry, figure out if we need
10818    to make a symbol table entry for it, and if so, create a new entry
10819    and return a pointer to it.
10820    If TYPE is NULL, determine symbol type from the die, otherwise
10821    used the passed type.
10822    If SPACE is not NULL, use it to hold the new symbol.  If it is
10823    NULL, allocate a new symbol on the objfile's obstack.  */
10824
10825 static struct symbol *
10826 new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
10827                  struct symbol *space)
10828 {
10829   struct objfile *objfile = cu->objfile;
10830   struct symbol *sym = NULL;
10831   char *name;
10832   struct attribute *attr = NULL;
10833   struct attribute *attr2 = NULL;
10834   CORE_ADDR baseaddr;
10835   struct pending **list_to_add = NULL;
10836
10837   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
10838
10839   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10840
10841   name = dwarf2_name (die, cu);
10842   if (name)
10843     {
10844       const char *linkagename;
10845       int suppress_add = 0;
10846
10847       if (space)
10848         sym = space;
10849       else
10850         sym = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct symbol);
10851       OBJSTAT (objfile, n_syms++);
10852
10853       /* Cache this symbol's name and the name's demangled form (if any).  */
10854       SYMBOL_SET_LANGUAGE (sym, cu->language);
10855       linkagename = dwarf2_physname (name, die, cu);
10856       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
10857
10858       /* Fortran does not have mangling standard and the mangling does differ
10859          between gfortran, iFort etc.  */
10860       if (cu->language == language_fortran
10861           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
10862         symbol_set_demangled_name (&(sym->ginfo),
10863                                    (char *) dwarf2_full_name (name, die, cu),
10864                                    NULL);
10865
10866       /* Default assumptions.
10867          Use the passed type or decode it from the die.  */
10868       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
10869       SYMBOL_CLASS (sym) = LOC_OPTIMIZED_OUT;
10870       if (type != NULL)
10871         SYMBOL_TYPE (sym) = type;
10872       else
10873         SYMBOL_TYPE (sym) = die_type (die, cu);
10874       attr = dwarf2_attr (die,
10875                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
10876                           cu);
10877       if (attr)
10878         {
10879           SYMBOL_LINE (sym) = DW_UNSND (attr);
10880         }
10881
10882       attr = dwarf2_attr (die,
10883                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
10884                           cu);
10885       if (attr)
10886         {
10887           int file_index = DW_UNSND (attr);
10888
10889           if (cu->line_header == NULL
10890               || file_index > cu->line_header->num_file_names)
10891             complaint (&symfile_complaints,
10892                        _("file index out of range"));
10893           else if (file_index > 0)
10894             {
10895               struct file_entry *fe;
10896
10897               fe = &cu->line_header->file_names[file_index - 1];
10898               SYMBOL_SYMTAB (sym) = fe->symtab;
10899             }
10900         }
10901
10902       switch (die->tag)
10903         {
10904         case DW_TAG_label:
10905           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
10906           if (attr)
10907             {
10908               SYMBOL_VALUE_ADDRESS (sym) = DW_ADDR (attr) + baseaddr;
10909             }
10910           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
10911           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
10912           SYMBOL_CLASS (sym) = LOC_LABEL;
10913           add_symbol_to_list (sym, cu->list_in_scope);
10914           break;
10915         case DW_TAG_subprogram:
10916           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
10917              finish_block.  */
10918           SYMBOL_CLASS (sym) = LOC_BLOCK;
10919           attr2 = dwarf2_attr (die, DW_AT_external, cu);
10920           if ((attr2 && (DW_UNSND (attr2) != 0))
10921               || cu->language == language_ada)
10922             {
10923               /* Subprograms marked external are stored as a global symbol.
10924                  Ada subprograms, whether marked external or not, are always
10925                  stored as a global symbol, because we want to be able to
10926                  access them globally.  For instance, we want to be able
10927                  to break on a nested subprogram without having to
10928                  specify the context.  */
10929               list_to_add = &global_symbols;
10930             }
10931           else
10932             {
10933               list_to_add = cu->list_in_scope;
10934             }
10935           break;
10936         case DW_TAG_inlined_subroutine:
10937           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
10938              finish_block.  */
10939           SYMBOL_CLASS (sym) = LOC_BLOCK;
10940           SYMBOL_INLINED (sym) = 1;
10941           /* Do not add the symbol to any lists.  It will be found via
10942              BLOCK_FUNCTION from the blockvector.  */
10943           break;
10944         case DW_TAG_template_value_param:
10945           suppress_add = 1;
10946           /* Fall through.  */
10947         case DW_TAG_constant:
10948         case DW_TAG_variable:
10949         case DW_TAG_member:
10950           /* Compilation with minimal debug info may result in
10951              variables with missing type entries.  Change the
10952              misleading `void' type to something sensible.  */
10953           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
10954             SYMBOL_TYPE (sym)
10955               = objfile_type (objfile)->nodebug_data_symbol;
10956
10957           attr = dwarf2_attr (die, DW_AT_const_value, cu);
10958           /* In the case of DW_TAG_member, we should only be called for
10959              static const members.  */
10960           if (die->tag == DW_TAG_member)
10961             {
10962               /* dwarf2_add_field uses die_is_declaration,
10963                  so we do the same.  */
10964               gdb_assert (die_is_declaration (die, cu));
10965               gdb_assert (attr);
10966             }
10967           if (attr)
10968             {
10969               dwarf2_const_value (attr, sym, cu);
10970               attr2 = dwarf2_attr (die, DW_AT_external, cu);
10971               if (!suppress_add)
10972                 {
10973                   if (attr2 && (DW_UNSND (attr2) != 0))
10974                     list_to_add = &global_symbols;
10975                   else
10976                     list_to_add = cu->list_in_scope;
10977                 }
10978               break;
10979             }
10980           attr = dwarf2_attr (die, DW_AT_location, cu);
10981           if (attr)
10982             {
10983               var_decode_location (attr, sym, cu);
10984               attr2 = dwarf2_attr (die, DW_AT_external, cu);
10985               if (SYMBOL_CLASS (sym) == LOC_STATIC
10986                   && SYMBOL_VALUE_ADDRESS (sym) == 0
10987                   && !dwarf2_per_objfile->has_section_at_zero)
10988                 {
10989                   /* When a static variable is eliminated by the linker,
10990                      the corresponding debug information is not stripped
10991                      out, but the variable address is set to null;
10992                      do not add such variables into symbol table.  */
10993                 }
10994               else if (attr2 && (DW_UNSND (attr2) != 0))
10995                 {
10996                   /* Workaround gfortran PR debug/40040 - it uses
10997                      DW_AT_location for variables in -fPIC libraries which may
10998                      get overriden by other libraries/executable and get
10999                      a different address.  Resolve it by the minimal symbol
11000                      which may come from inferior's executable using copy
11001                      relocation.  Make this workaround only for gfortran as for
11002                      other compilers GDB cannot guess the minimal symbol
11003                      Fortran mangling kind.  */
11004                   if (cu->language == language_fortran && die->parent
11005                       && die->parent->tag == DW_TAG_module
11006                       && cu->producer
11007                       && strncmp (cu->producer, "GNU Fortran ", 12) == 0)
11008                     SYMBOL_CLASS (sym) = LOC_UNRESOLVED;
11009
11010                   /* A variable with DW_AT_external is never static,
11011                      but it may be block-scoped.  */
11012                   list_to_add = (cu->list_in_scope == &file_symbols
11013                                  ? &global_symbols : cu->list_in_scope);
11014                 }
11015               else
11016                 list_to_add = cu->list_in_scope;
11017             }
11018           else
11019             {
11020               /* We do not know the address of this symbol.
11021                  If it is an external symbol and we have type information
11022                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
11023                  The address of the variable will then be determined from
11024                  the minimal symbol table whenever the variable is
11025                  referenced.  */
11026               attr2 = dwarf2_attr (die, DW_AT_external, cu);
11027               if (attr2 && (DW_UNSND (attr2) != 0)
11028                   && dwarf2_attr (die, DW_AT_type, cu) != NULL)
11029                 {
11030                   /* A variable with DW_AT_external is never static, but it
11031                      may be block-scoped.  */
11032                   list_to_add = (cu->list_in_scope == &file_symbols
11033                                  ? &global_symbols : cu->list_in_scope);
11034
11035                   SYMBOL_CLASS (sym) = LOC_UNRESOLVED;
11036                 }
11037               else if (!die_is_declaration (die, cu))
11038                 {
11039                   /* Use the default LOC_OPTIMIZED_OUT class.  */
11040                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
11041                   if (!suppress_add)
11042                     list_to_add = cu->list_in_scope;
11043                 }
11044             }
11045           break;
11046         case DW_TAG_formal_parameter:
11047           /* If we are inside a function, mark this as an argument.  If
11048              not, we might be looking at an argument to an inlined function
11049              when we do not have enough information to show inlined frames;
11050              pretend it's a local variable in that case so that the user can
11051              still see it.  */
11052           if (context_stack_depth > 0
11053               && context_stack[context_stack_depth - 1].name != NULL)
11054             SYMBOL_IS_ARGUMENT (sym) = 1;
11055           attr = dwarf2_attr (die, DW_AT_location, cu);
11056           if (attr)
11057             {
11058               var_decode_location (attr, sym, cu);
11059             }
11060           attr = dwarf2_attr (die, DW_AT_const_value, cu);
11061           if (attr)
11062             {
11063               dwarf2_const_value (attr, sym, cu);
11064             }
11065           attr = dwarf2_attr (die, DW_AT_variable_parameter, cu);
11066           if (attr && DW_UNSND (attr))
11067             {
11068               struct type *ref_type;
11069
11070               ref_type = lookup_reference_type (SYMBOL_TYPE (sym));
11071               SYMBOL_TYPE (sym) = ref_type;
11072             }
11073
11074           list_to_add = cu->list_in_scope;
11075           break;
11076         case DW_TAG_unspecified_parameters:
11077           /* From varargs functions; gdb doesn't seem to have any
11078              interest in this information, so just ignore it for now.
11079              (FIXME?) */
11080           break;
11081         case DW_TAG_template_type_param:
11082           suppress_add = 1;
11083           /* Fall through.  */
11084         case DW_TAG_class_type:
11085         case DW_TAG_interface_type:
11086         case DW_TAG_structure_type:
11087         case DW_TAG_union_type:
11088         case DW_TAG_set_type:
11089         case DW_TAG_enumeration_type:
11090           SYMBOL_CLASS (sym) = LOC_TYPEDEF;
11091           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
11092
11093           {
11094             /* NOTE: carlton/2003-11-10: C++ and Java class symbols shouldn't
11095                really ever be static objects: otherwise, if you try
11096                to, say, break of a class's method and you're in a file
11097                which doesn't mention that class, it won't work unless
11098                the check for all static symbols in lookup_symbol_aux
11099                saves you.  See the OtherFileClass tests in
11100                gdb.c++/namespace.exp.  */
11101
11102             if (!suppress_add)
11103               {
11104                 list_to_add = (cu->list_in_scope == &file_symbols
11105                                && (cu->language == language_cplus
11106                                    || cu->language == language_java)
11107                                ? &global_symbols : cu->list_in_scope);
11108
11109                 /* The semantics of C++ state that "struct foo {
11110                    ... }" also defines a typedef for "foo".  A Java
11111                    class declaration also defines a typedef for the
11112                    class.  */
11113                 if (cu->language == language_cplus
11114                     || cu->language == language_java
11115                     || cu->language == language_ada)
11116                   {
11117                     /* The symbol's name is already allocated along
11118                        with this objfile, so we don't need to
11119                        duplicate it for the type.  */
11120                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
11121                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
11122                   }
11123               }
11124           }
11125           break;
11126         case DW_TAG_typedef:
11127           SYMBOL_CLASS (sym) = LOC_TYPEDEF;
11128           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
11129           list_to_add = cu->list_in_scope;
11130           break;
11131         case DW_TAG_base_type:
11132         case DW_TAG_subrange_type:
11133           SYMBOL_CLASS (sym) = LOC_TYPEDEF;
11134           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
11135           list_to_add = cu->list_in_scope;
11136           break;
11137         case DW_TAG_enumerator:
11138           attr = dwarf2_attr (die, DW_AT_const_value, cu);
11139           if (attr)
11140             {
11141               dwarf2_const_value (attr, sym, cu);
11142             }
11143           {
11144             /* NOTE: carlton/2003-11-10: See comment above in the
11145                DW_TAG_class_type, etc. block.  */
11146
11147             list_to_add = (cu->list_in_scope == &file_symbols
11148                            && (cu->language == language_cplus
11149                                || cu->language == language_java)
11150                            ? &global_symbols : cu->list_in_scope);
11151           }
11152           break;
11153         case DW_TAG_namespace:
11154           SYMBOL_CLASS (sym) = LOC_TYPEDEF;
11155           list_to_add = &global_symbols;
11156           break;
11157         default:
11158           /* Not a tag we recognize.  Hopefully we aren't processing
11159              trash data, but since we must specifically ignore things
11160              we don't recognize, there is nothing else we should do at
11161              this point.  */
11162           complaint (&symfile_complaints, _("unsupported tag: '%s'"),
11163                      dwarf_tag_name (die->tag));
11164           break;
11165         }
11166
11167       if (suppress_add)
11168         {
11169           sym->hash_next = objfile->template_symbols;
11170           objfile->template_symbols = sym;
11171           list_to_add = NULL;
11172         }
11173
11174       if (list_to_add != NULL)
11175         add_symbol_to_list (sym, list_to_add);
11176
11177       /* For the benefit of old versions of GCC, check for anonymous
11178          namespaces based on the demangled name.  */
11179       if (!processing_has_namespace_info
11180           && cu->language == language_cplus)
11181         cp_scan_for_anonymous_namespaces (sym);
11182     }
11183   return (sym);
11184 }
11185
11186 /* A wrapper for new_symbol_full that always allocates a new symbol.  */
11187
11188 static struct symbol *
11189 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
11190 {
11191   return new_symbol_full (die, type, cu, NULL);
11192 }
11193
11194 /* Given an attr with a DW_FORM_dataN value in host byte order,
11195    zero-extend it as appropriate for the symbol's type.  The DWARF
11196    standard (v4) is not entirely clear about the meaning of using
11197    DW_FORM_dataN for a constant with a signed type, where the type is
11198    wider than the data.  The conclusion of a discussion on the DWARF
11199    list was that this is unspecified.  We choose to always zero-extend
11200    because that is the interpretation long in use by GCC.  */
11201
11202 static gdb_byte *
11203 dwarf2_const_value_data (struct attribute *attr, struct type *type,
11204                          const char *name, struct obstack *obstack,
11205                          struct dwarf2_cu *cu, long *value, int bits)
11206 {
11207   struct objfile *objfile = cu->objfile;
11208   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
11209                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
11210   LONGEST l = DW_UNSND (attr);
11211
11212   if (bits < sizeof (*value) * 8)
11213     {
11214       l &= ((LONGEST) 1 << bits) - 1;
11215       *value = l;
11216     }
11217   else if (bits == sizeof (*value) * 8)
11218     *value = l;
11219   else
11220     {
11221       gdb_byte *bytes = obstack_alloc (obstack, bits / 8);
11222       store_unsigned_integer (bytes, bits / 8, byte_order, l);
11223       return bytes;
11224     }
11225
11226   return NULL;
11227 }
11228
11229 /* Read a constant value from an attribute.  Either set *VALUE, or if
11230    the value does not fit in *VALUE, set *BYTES - either already
11231    allocated on the objfile obstack, or newly allocated on OBSTACK,
11232    or, set *BATON, if we translated the constant to a location
11233    expression.  */
11234
11235 static void
11236 dwarf2_const_value_attr (struct attribute *attr, struct type *type,
11237                          const char *name, struct obstack *obstack,
11238                          struct dwarf2_cu *cu,
11239                          long *value, gdb_byte **bytes,
11240                          struct dwarf2_locexpr_baton **baton)
11241 {
11242   struct objfile *objfile = cu->objfile;
11243   struct comp_unit_head *cu_header = &cu->header;
11244   struct dwarf_block *blk;
11245   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
11246                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
11247
11248   *value = 0;
11249   *bytes = NULL;
11250   *baton = NULL;
11251
11252   switch (attr->form)
11253     {
11254     case DW_FORM_addr:
11255       {
11256         gdb_byte *data;
11257
11258         if (TYPE_LENGTH (type) != cu_header->addr_size)
11259           dwarf2_const_value_length_mismatch_complaint (name,
11260                                                         cu_header->addr_size,
11261                                                         TYPE_LENGTH (type));
11262         /* Symbols of this form are reasonably rare, so we just
11263            piggyback on the existing location code rather than writing
11264            a new implementation of symbol_computed_ops.  */
11265         *baton = obstack_alloc (&objfile->objfile_obstack,
11266                                 sizeof (struct dwarf2_locexpr_baton));
11267         (*baton)->per_cu = cu->per_cu;
11268         gdb_assert ((*baton)->per_cu);
11269
11270         (*baton)->size = 2 + cu_header->addr_size;
11271         data = obstack_alloc (&objfile->objfile_obstack, (*baton)->size);
11272         (*baton)->data = data;
11273
11274         data[0] = DW_OP_addr;
11275         store_unsigned_integer (&data[1], cu_header->addr_size,
11276                                 byte_order, DW_ADDR (attr));
11277         data[cu_header->addr_size + 1] = DW_OP_stack_value;
11278       }
11279       break;
11280     case DW_FORM_string:
11281     case DW_FORM_strp:
11282       /* DW_STRING is already allocated on the objfile obstack, point
11283          directly to it.  */
11284       *bytes = (gdb_byte *) DW_STRING (attr);
11285       break;
11286     case DW_FORM_block1:
11287     case DW_FORM_block2:
11288     case DW_FORM_block4:
11289     case DW_FORM_block:
11290     case DW_FORM_exprloc:
11291       blk = DW_BLOCK (attr);
11292       if (TYPE_LENGTH (type) != blk->size)
11293         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
11294                                                       TYPE_LENGTH (type));
11295       *bytes = blk->data;
11296       break;
11297
11298       /* The DW_AT_const_value attributes are supposed to carry the
11299          symbol's value "represented as it would be on the target
11300          architecture."  By the time we get here, it's already been
11301          converted to host endianness, so we just need to sign- or
11302          zero-extend it as appropriate.  */
11303     case DW_FORM_data1:
11304       *bytes = dwarf2_const_value_data (attr, type, name,
11305                                         obstack, cu, value, 8);
11306       break;
11307     case DW_FORM_data2:
11308       *bytes = dwarf2_const_value_data (attr, type, name,
11309                                         obstack, cu, value, 16);
11310       break;
11311     case DW_FORM_data4:
11312       *bytes = dwarf2_const_value_data (attr, type, name,
11313                                         obstack, cu, value, 32);
11314       break;
11315     case DW_FORM_data8:
11316       *bytes = dwarf2_const_value_data (attr, type, name,
11317                                         obstack, cu, value, 64);
11318       break;
11319
11320     case DW_FORM_sdata:
11321       *value = DW_SND (attr);
11322       break;
11323
11324     case DW_FORM_udata:
11325       *value = DW_UNSND (attr);
11326       break;
11327
11328     default:
11329       complaint (&symfile_complaints,
11330                  _("unsupported const value attribute form: '%s'"),
11331                  dwarf_form_name (attr->form));
11332       *value = 0;
11333       break;
11334     }
11335 }
11336
11337
11338 /* Copy constant value from an attribute to a symbol.  */
11339
11340 static void
11341 dwarf2_const_value (struct attribute *attr, struct symbol *sym,
11342                     struct dwarf2_cu *cu)
11343 {
11344   struct objfile *objfile = cu->objfile;
11345   struct comp_unit_head *cu_header = &cu->header;
11346   long value;
11347   gdb_byte *bytes;
11348   struct dwarf2_locexpr_baton *baton;
11349
11350   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
11351                            SYMBOL_PRINT_NAME (sym),
11352                            &objfile->objfile_obstack, cu,
11353                            &value, &bytes, &baton);
11354
11355   if (baton != NULL)
11356     {
11357       SYMBOL_COMPUTED_OPS (sym) = &dwarf2_locexpr_funcs;
11358       SYMBOL_LOCATION_BATON (sym) = baton;
11359       SYMBOL_CLASS (sym) = LOC_COMPUTED;
11360     }
11361   else if (bytes != NULL)
11362      {
11363       SYMBOL_VALUE_BYTES (sym) = bytes;
11364       SYMBOL_CLASS (sym) = LOC_CONST_BYTES;
11365     }
11366   else
11367     {
11368       SYMBOL_VALUE (sym) = value;
11369       SYMBOL_CLASS (sym) = LOC_CONST;
11370     }
11371 }
11372
11373 /* Return the type of the die in question using its DW_AT_type attribute.  */
11374
11375 static struct type *
11376 die_type (struct die_info *die, struct dwarf2_cu *cu)
11377 {
11378   struct attribute *type_attr;
11379
11380   type_attr = dwarf2_attr (die, DW_AT_type, cu);
11381   if (!type_attr)
11382     {
11383       /* A missing DW_AT_type represents a void type.  */
11384       return objfile_type (cu->objfile)->builtin_void;
11385     }
11386
11387   return lookup_die_type (die, type_attr, cu);
11388 }
11389
11390 /* True iff CU's producer generates GNAT Ada auxiliary information
11391    that allows to find parallel types through that information instead
11392    of having to do expensive parallel lookups by type name.  */
11393
11394 static int
11395 need_gnat_info (struct dwarf2_cu *cu)
11396 {
11397   /* FIXME: brobecker/2010-10-12: As of now, only the AdaCore version
11398      of GNAT produces this auxiliary information, without any indication
11399      that it is produced.  Part of enhancing the FSF version of GNAT
11400      to produce that information will be to put in place an indicator
11401      that we can use in order to determine whether the descriptive type
11402      info is available or not.  One suggestion that has been made is
11403      to use a new attribute, attached to the CU die.  For now, assume
11404      that the descriptive type info is not available.  */
11405   return 0;
11406 }
11407
11408 /* Return the auxiliary type of the die in question using its
11409    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
11410    attribute is not present.  */
11411
11412 static struct type *
11413 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
11414 {
11415   struct attribute *type_attr;
11416
11417   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
11418   if (!type_attr)
11419     return NULL;
11420
11421   return lookup_die_type (die, type_attr, cu);
11422 }
11423
11424 /* If DIE has a descriptive_type attribute, then set the TYPE's
11425    descriptive type accordingly.  */
11426
11427 static void
11428 set_descriptive_type (struct type *type, struct die_info *die,
11429                       struct dwarf2_cu *cu)
11430 {
11431   struct type *descriptive_type = die_descriptive_type (die, cu);
11432
11433   if (descriptive_type)
11434     {
11435       ALLOCATE_GNAT_AUX_TYPE (type);
11436       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
11437     }
11438 }
11439
11440 /* Return the containing type of the die in question using its
11441    DW_AT_containing_type attribute.  */
11442
11443 static struct type *
11444 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
11445 {
11446   struct attribute *type_attr;
11447
11448   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
11449   if (!type_attr)
11450     error (_("Dwarf Error: Problem turning containing type into gdb type "
11451              "[in module %s]"), cu->objfile->name);
11452
11453   return lookup_die_type (die, type_attr, cu);
11454 }
11455
11456 /* Look up the type of DIE in CU using its type attribute ATTR.
11457    If there is no type substitute an error marker.  */
11458
11459 static struct type *
11460 lookup_die_type (struct die_info *die, struct attribute *attr,
11461                  struct dwarf2_cu *cu)
11462 {
11463   struct type *this_type;
11464
11465   /* First see if we have it cached.  */
11466
11467   if (is_ref_attr (attr))
11468     {
11469       unsigned int offset = dwarf2_get_ref_die_offset (attr);
11470
11471       this_type = get_die_type_at_offset (offset, cu->per_cu);
11472     }
11473   else if (attr->form == DW_FORM_sig8)
11474     {
11475       struct signatured_type *sig_type = DW_SIGNATURED_TYPE (attr);
11476       struct dwarf2_cu *sig_cu;
11477       unsigned int offset;
11478
11479       /* sig_type will be NULL if the signatured type is missing from
11480          the debug info.  */
11481       if (sig_type == NULL)
11482         error (_("Dwarf Error: Cannot find signatured DIE referenced from DIE "
11483                  "at 0x%x [in module %s]"),
11484                die->offset, cu->objfile->name);
11485
11486       gdb_assert (sig_type->per_cu.from_debug_types);
11487       offset = sig_type->offset + sig_type->type_offset;
11488       this_type = get_die_type_at_offset (offset, &sig_type->per_cu);
11489     }
11490   else
11491     {
11492       dump_die_for_error (die);
11493       error (_("Dwarf Error: Bad type attribute %s [in module %s]"),
11494              dwarf_attr_name (attr->name), cu->objfile->name);
11495     }
11496
11497   /* If not cached we need to read it in.  */
11498
11499   if (this_type == NULL)
11500     {
11501       struct die_info *type_die;
11502       struct dwarf2_cu *type_cu = cu;
11503
11504       type_die = follow_die_ref_or_sig (die, attr, &type_cu);
11505       /* If the type is cached, we should have found it above.  */
11506       gdb_assert (get_die_type (type_die, type_cu) == NULL);
11507       this_type = read_type_die_1 (type_die, type_cu);
11508     }
11509
11510   /* If we still don't have a type use an error marker.  */
11511
11512   if (this_type == NULL)
11513     {
11514       char *message, *saved;
11515
11516       /* read_type_die already issued a complaint.  */
11517       message = xstrprintf (_("<unknown type in %s, CU 0x%x, DIE 0x%x>"),
11518                             cu->objfile->name,
11519                             cu->header.offset,
11520                             die->offset);
11521       saved = obstack_copy0 (&cu->objfile->objfile_obstack,
11522                              message, strlen (message));
11523       xfree (message);
11524
11525       this_type = init_type (TYPE_CODE_ERROR, 0, 0, saved, cu->objfile);
11526     }
11527
11528   return this_type;
11529 }
11530
11531 /* Return the type in DIE, CU.
11532    Returns NULL for invalid types.
11533
11534    This first does a lookup in the appropriate type_hash table,
11535    and only reads the die in if necessary.
11536
11537    NOTE: This can be called when reading in partial or full symbols.  */
11538
11539 static struct type *
11540 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
11541 {
11542   struct type *this_type;
11543
11544   this_type = get_die_type (die, cu);
11545   if (this_type)
11546     return this_type;
11547
11548   return read_type_die_1 (die, cu);
11549 }
11550
11551 /* Read the type in DIE, CU.
11552    Returns NULL for invalid types.  */
11553
11554 static struct type *
11555 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
11556 {
11557   struct type *this_type = NULL;
11558
11559   switch (die->tag)
11560     {
11561     case DW_TAG_class_type:
11562     case DW_TAG_interface_type:
11563     case DW_TAG_structure_type:
11564     case DW_TAG_union_type:
11565       this_type = read_structure_type (die, cu);
11566       break;
11567     case DW_TAG_enumeration_type:
11568       this_type = read_enumeration_type (die, cu);
11569       break;
11570     case DW_TAG_subprogram:
11571     case DW_TAG_subroutine_type:
11572     case DW_TAG_inlined_subroutine:
11573       this_type = read_subroutine_type (die, cu);
11574       break;
11575     case DW_TAG_array_type:
11576       this_type = read_array_type (die, cu);
11577       break;
11578     case DW_TAG_set_type:
11579       this_type = read_set_type (die, cu);
11580       break;
11581     case DW_TAG_pointer_type:
11582       this_type = read_tag_pointer_type (die, cu);
11583       break;
11584     case DW_TAG_ptr_to_member_type:
11585       this_type = read_tag_ptr_to_member_type (die, cu);
11586       break;
11587     case DW_TAG_reference_type:
11588       this_type = read_tag_reference_type (die, cu);
11589       break;
11590     case DW_TAG_const_type:
11591       this_type = read_tag_const_type (die, cu);
11592       break;
11593     case DW_TAG_volatile_type:
11594       this_type = read_tag_volatile_type (die, cu);
11595       break;
11596     case DW_TAG_string_type:
11597       this_type = read_tag_string_type (die, cu);
11598       break;
11599     case DW_TAG_typedef:
11600       this_type = read_typedef (die, cu);
11601       break;
11602     case DW_TAG_subrange_type:
11603       this_type = read_subrange_type (die, cu);
11604       break;
11605     case DW_TAG_base_type:
11606       this_type = read_base_type (die, cu);
11607       break;
11608     case DW_TAG_unspecified_type:
11609       this_type = read_unspecified_type (die, cu);
11610       break;
11611     case DW_TAG_namespace:
11612       this_type = read_namespace_type (die, cu);
11613       break;
11614     case DW_TAG_module:
11615       this_type = read_module_type (die, cu);
11616       break;
11617     default:
11618       complaint (&symfile_complaints,
11619                  _("unexpected tag in read_type_die: '%s'"),
11620                  dwarf_tag_name (die->tag));
11621       break;
11622     }
11623
11624   return this_type;
11625 }
11626
11627 /* See if we can figure out if the class lives in a namespace.  We do
11628    this by looking for a member function; its demangled name will
11629    contain namespace info, if there is any.
11630    Return the computed name or NULL.
11631    Space for the result is allocated on the objfile's obstack.
11632    This is the full-die version of guess_partial_die_structure_name.
11633    In this case we know DIE has no useful parent.  */
11634
11635 static char *
11636 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
11637 {
11638   struct die_info *spec_die;
11639   struct dwarf2_cu *spec_cu;
11640   struct die_info *child;
11641
11642   spec_cu = cu;
11643   spec_die = die_specification (die, &spec_cu);
11644   if (spec_die != NULL)
11645     {
11646       die = spec_die;
11647       cu = spec_cu;
11648     }
11649
11650   for (child = die->child;
11651        child != NULL;
11652        child = child->sibling)
11653     {
11654       if (child->tag == DW_TAG_subprogram)
11655         {
11656           struct attribute *attr;
11657
11658           attr = dwarf2_attr (child, DW_AT_linkage_name, cu);
11659           if (attr == NULL)
11660             attr = dwarf2_attr (child, DW_AT_MIPS_linkage_name, cu);
11661           if (attr != NULL)
11662             {
11663               char *actual_name
11664                 = language_class_name_from_physname (cu->language_defn,
11665                                                      DW_STRING (attr));
11666               char *name = NULL;
11667
11668               if (actual_name != NULL)
11669                 {
11670                   char *die_name = dwarf2_name (die, cu);
11671
11672                   if (die_name != NULL
11673                       && strcmp (die_name, actual_name) != 0)
11674                     {
11675                       /* Strip off the class name from the full name.
11676                          We want the prefix.  */
11677                       int die_name_len = strlen (die_name);
11678                       int actual_name_len = strlen (actual_name);
11679
11680                       /* Test for '::' as a sanity check.  */
11681                       if (actual_name_len > die_name_len + 2
11682                           && actual_name[actual_name_len
11683                                          - die_name_len - 1] == ':')
11684                         name =
11685                           obsavestring (actual_name,
11686                                         actual_name_len - die_name_len - 2,
11687                                         &cu->objfile->objfile_obstack);
11688                     }
11689                 }
11690               xfree (actual_name);
11691               return name;
11692             }
11693         }
11694     }
11695
11696   return NULL;
11697 }
11698
11699 /* Return the name of the namespace/class that DIE is defined within,
11700    or "" if we can't tell.  The caller should not xfree the result.
11701
11702    For example, if we're within the method foo() in the following
11703    code:
11704
11705    namespace N {
11706      class C {
11707        void foo () {
11708        }
11709      };
11710    }
11711
11712    then determine_prefix on foo's die will return "N::C".  */
11713
11714 static char *
11715 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
11716 {
11717   struct die_info *parent, *spec_die;
11718   struct dwarf2_cu *spec_cu;
11719   struct type *parent_type;
11720
11721   if (cu->language != language_cplus && cu->language != language_java
11722       && cu->language != language_fortran)
11723     return "";
11724
11725   /* We have to be careful in the presence of DW_AT_specification.
11726      For example, with GCC 3.4, given the code
11727
11728      namespace N {
11729        void foo() {
11730          // Definition of N::foo.
11731        }
11732      }
11733
11734      then we'll have a tree of DIEs like this:
11735
11736      1: DW_TAG_compile_unit
11737        2: DW_TAG_namespace        // N
11738          3: DW_TAG_subprogram     // declaration of N::foo
11739        4: DW_TAG_subprogram       // definition of N::foo
11740             DW_AT_specification   // refers to die #3
11741
11742      Thus, when processing die #4, we have to pretend that we're in
11743      the context of its DW_AT_specification, namely the contex of die
11744      #3.  */
11745   spec_cu = cu;
11746   spec_die = die_specification (die, &spec_cu);
11747   if (spec_die == NULL)
11748     parent = die->parent;
11749   else
11750     {
11751       parent = spec_die->parent;
11752       cu = spec_cu;
11753     }
11754
11755   if (parent == NULL)
11756     return "";
11757   else if (parent->building_fullname)
11758     {
11759       const char *name;
11760       const char *parent_name;
11761
11762       /* It has been seen on RealView 2.2 built binaries,
11763          DW_TAG_template_type_param types actually _defined_ as
11764          children of the parent class:
11765
11766          enum E {};
11767          template class <class Enum> Class{};
11768          Class<enum E> class_e;
11769
11770          1: DW_TAG_class_type (Class)
11771            2: DW_TAG_enumeration_type (E)
11772              3: DW_TAG_enumerator (enum1:0)
11773              3: DW_TAG_enumerator (enum2:1)
11774              ...
11775            2: DW_TAG_template_type_param
11776               DW_AT_type  DW_FORM_ref_udata (E)
11777
11778          Besides being broken debug info, it can put GDB into an
11779          infinite loop.  Consider:
11780
11781          When we're building the full name for Class<E>, we'll start
11782          at Class, and go look over its template type parameters,
11783          finding E.  We'll then try to build the full name of E, and
11784          reach here.  We're now trying to build the full name of E,
11785          and look over the parent DIE for containing scope.  In the
11786          broken case, if we followed the parent DIE of E, we'd again
11787          find Class, and once again go look at its template type
11788          arguments, etc., etc.  Simply don't consider such parent die
11789          as source-level parent of this die (it can't be, the language
11790          doesn't allow it), and break the loop here.  */
11791       name = dwarf2_name (die, cu);
11792       parent_name = dwarf2_name (parent, cu);
11793       complaint (&symfile_complaints,
11794                  _("template param type '%s' defined within parent '%s'"),
11795                  name ? name : "<unknown>",
11796                  parent_name ? parent_name : "<unknown>");
11797       return "";
11798     }
11799   else
11800     switch (parent->tag)
11801       {
11802       case DW_TAG_namespace:
11803         parent_type = read_type_die (parent, cu);
11804         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
11805            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
11806            Work around this problem here.  */
11807         if (cu->language == language_cplus
11808             && strcmp (TYPE_TAG_NAME (parent_type), "::") == 0)
11809           return "";
11810         /* We give a name to even anonymous namespaces.  */
11811         return TYPE_TAG_NAME (parent_type);
11812       case DW_TAG_class_type:
11813       case DW_TAG_interface_type:
11814       case DW_TAG_structure_type:
11815       case DW_TAG_union_type:
11816       case DW_TAG_module:
11817         parent_type = read_type_die (parent, cu);
11818         if (TYPE_TAG_NAME (parent_type) != NULL)
11819           return TYPE_TAG_NAME (parent_type);
11820         else
11821           /* An anonymous structure is only allowed non-static data
11822              members; no typedefs, no member functions, et cetera.
11823              So it does not need a prefix.  */
11824           return "";
11825       case DW_TAG_compile_unit:
11826         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
11827         if (cu->language == language_cplus
11828             && dwarf2_per_objfile->types.asection != NULL
11829             && die->child != NULL
11830             && (die->tag == DW_TAG_class_type
11831                 || die->tag == DW_TAG_structure_type
11832                 || die->tag == DW_TAG_union_type))
11833           {
11834             char *name = guess_full_die_structure_name (die, cu);
11835             if (name != NULL)
11836               return name;
11837           }
11838         return "";
11839       default:
11840         return determine_prefix (parent, cu);
11841       }
11842 }
11843
11844 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
11845    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
11846    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
11847    an obconcat, otherwise allocate storage for the result.  The CU argument is
11848    used to determine the language and hence, the appropriate separator.  */
11849
11850 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
11851
11852 static char *
11853 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
11854                  int physname, struct dwarf2_cu *cu)
11855 {
11856   const char *lead = "";
11857   const char *sep;
11858
11859   if (suffix == NULL || suffix[0] == '\0'
11860       || prefix == NULL || prefix[0] == '\0')
11861     sep = "";
11862   else if (cu->language == language_java)
11863     sep = ".";
11864   else if (cu->language == language_fortran && physname)
11865     {
11866       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
11867          DW_AT_MIPS_linkage_name is preferred and used instead.  */
11868
11869       lead = "__";
11870       sep = "_MOD_";
11871     }
11872   else
11873     sep = "::";
11874
11875   if (prefix == NULL)
11876     prefix = "";
11877   if (suffix == NULL)
11878     suffix = "";
11879
11880   if (obs == NULL)
11881     {
11882       char *retval
11883         = xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1);
11884
11885       strcpy (retval, lead);
11886       strcat (retval, prefix);
11887       strcat (retval, sep);
11888       strcat (retval, suffix);
11889       return retval;
11890     }
11891   else
11892     {
11893       /* We have an obstack.  */
11894       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
11895     }
11896 }
11897
11898 /* Return sibling of die, NULL if no sibling.  */
11899
11900 static struct die_info *
11901 sibling_die (struct die_info *die)
11902 {
11903   return die->sibling;
11904 }
11905
11906 /* Get name of a die, return NULL if not found.  */
11907
11908 static char *
11909 dwarf2_canonicalize_name (char *name, struct dwarf2_cu *cu,
11910                           struct obstack *obstack)
11911 {
11912   if (name && cu->language == language_cplus)
11913     {
11914       char *canon_name = cp_canonicalize_string (name);
11915
11916       if (canon_name != NULL)
11917         {
11918           if (strcmp (canon_name, name) != 0)
11919             name = obsavestring (canon_name, strlen (canon_name),
11920                                  obstack);
11921           xfree (canon_name);
11922         }
11923     }
11924
11925   return name;
11926 }
11927
11928 /* Get name of a die, return NULL if not found.  */
11929
11930 static char *
11931 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
11932 {
11933   struct attribute *attr;
11934
11935   attr = dwarf2_attr (die, DW_AT_name, cu);
11936   if (!attr || !DW_STRING (attr))
11937     return NULL;
11938
11939   switch (die->tag)
11940     {
11941     case DW_TAG_compile_unit:
11942       /* Compilation units have a DW_AT_name that is a filename, not
11943          a source language identifier.  */
11944     case DW_TAG_enumeration_type:
11945     case DW_TAG_enumerator:
11946       /* These tags always have simple identifiers already; no need
11947          to canonicalize them.  */
11948       return DW_STRING (attr);
11949
11950     case DW_TAG_subprogram:
11951       /* Java constructors will all be named "<init>", so return
11952          the class name when we see this special case.  */
11953       if (cu->language == language_java
11954           && DW_STRING (attr) != NULL
11955           && strcmp (DW_STRING (attr), "<init>") == 0)
11956         {
11957           struct dwarf2_cu *spec_cu = cu;
11958           struct die_info *spec_die;
11959
11960           /* GCJ will output '<init>' for Java constructor names.
11961              For this special case, return the name of the parent class.  */
11962
11963           /* GCJ may output suprogram DIEs with AT_specification set.
11964              If so, use the name of the specified DIE.  */
11965           spec_die = die_specification (die, &spec_cu);
11966           if (spec_die != NULL)
11967             return dwarf2_name (spec_die, spec_cu);
11968
11969           do
11970             {
11971               die = die->parent;
11972               if (die->tag == DW_TAG_class_type)
11973                 return dwarf2_name (die, cu);
11974             }
11975           while (die->tag != DW_TAG_compile_unit);
11976         }
11977       break;
11978
11979     case DW_TAG_class_type:
11980     case DW_TAG_interface_type:
11981     case DW_TAG_structure_type:
11982     case DW_TAG_union_type:
11983       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
11984          structures or unions.  These were of the form "._%d" in GCC 4.1,
11985          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
11986          and GCC 4.4.  We work around this problem by ignoring these.  */
11987       if (strncmp (DW_STRING (attr), "._", 2) == 0
11988           || strncmp (DW_STRING (attr), "<anonymous", 10) == 0)
11989         return NULL;
11990       break;
11991
11992     default:
11993       break;
11994     }
11995
11996   if (!DW_STRING_IS_CANONICAL (attr))
11997     {
11998       DW_STRING (attr)
11999         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
12000                                     &cu->objfile->objfile_obstack);
12001       DW_STRING_IS_CANONICAL (attr) = 1;
12002     }
12003   return DW_STRING (attr);
12004 }
12005
12006 /* Return the die that this die in an extension of, or NULL if there
12007    is none.  *EXT_CU is the CU containing DIE on input, and the CU
12008    containing the return value on output.  */
12009
12010 static struct die_info *
12011 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
12012 {
12013   struct attribute *attr;
12014
12015   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
12016   if (attr == NULL)
12017     return NULL;
12018
12019   return follow_die_ref (die, attr, ext_cu);
12020 }
12021
12022 /* Convert a DIE tag into its string name.  */
12023
12024 static char *
12025 dwarf_tag_name (unsigned tag)
12026 {
12027   switch (tag)
12028     {
12029     case DW_TAG_padding:
12030       return "DW_TAG_padding";
12031     case DW_TAG_array_type:
12032       return "DW_TAG_array_type";
12033     case DW_TAG_class_type:
12034       return "DW_TAG_class_type";
12035     case DW_TAG_entry_point:
12036       return "DW_TAG_entry_point";
12037     case DW_TAG_enumeration_type:
12038       return "DW_TAG_enumeration_type";
12039     case DW_TAG_formal_parameter:
12040       return "DW_TAG_formal_parameter";
12041     case DW_TAG_imported_declaration:
12042       return "DW_TAG_imported_declaration";
12043     case DW_TAG_label:
12044       return "DW_TAG_label";
12045     case DW_TAG_lexical_block:
12046       return "DW_TAG_lexical_block";
12047     case DW_TAG_member:
12048       return "DW_TAG_member";
12049     case DW_TAG_pointer_type:
12050       return "DW_TAG_pointer_type";
12051     case DW_TAG_reference_type:
12052       return "DW_TAG_reference_type";
12053     case DW_TAG_compile_unit:
12054       return "DW_TAG_compile_unit";
12055     case DW_TAG_string_type:
12056       return "DW_TAG_string_type";
12057     case DW_TAG_structure_type:
12058       return "DW_TAG_structure_type";
12059     case DW_TAG_subroutine_type:
12060       return "DW_TAG_subroutine_type";
12061     case DW_TAG_typedef:
12062       return "DW_TAG_typedef";
12063     case DW_TAG_union_type:
12064       return "DW_TAG_union_type";
12065     case DW_TAG_unspecified_parameters:
12066       return "DW_TAG_unspecified_parameters";
12067     case DW_TAG_variant:
12068       return "DW_TAG_variant";
12069     case DW_TAG_common_block:
12070       return "DW_TAG_common_block";
12071     case DW_TAG_common_inclusion:
12072       return "DW_TAG_common_inclusion";
12073     case DW_TAG_inheritance:
12074       return "DW_TAG_inheritance";
12075     case DW_TAG_inlined_subroutine:
12076       return "DW_TAG_inlined_subroutine";
12077     case DW_TAG_module:
12078       return "DW_TAG_module";
12079     case DW_TAG_ptr_to_member_type:
12080       return "DW_TAG_ptr_to_member_type";
12081     case DW_TAG_set_type:
12082       return "DW_TAG_set_type";
12083     case DW_TAG_subrange_type:
12084       return "DW_TAG_subrange_type";
12085     case DW_TAG_with_stmt:
12086       return "DW_TAG_with_stmt";
12087     case DW_TAG_access_declaration:
12088       return "DW_TAG_access_declaration";
12089     case DW_TAG_base_type:
12090       return "DW_TAG_base_type";
12091     case DW_TAG_catch_block:
12092       return "DW_TAG_catch_block";
12093     case DW_TAG_const_type:
12094       return "DW_TAG_const_type";
12095     case DW_TAG_constant:
12096       return "DW_TAG_constant";
12097     case DW_TAG_enumerator:
12098       return "DW_TAG_enumerator";
12099     case DW_TAG_file_type:
12100       return "DW_TAG_file_type";
12101     case DW_TAG_friend:
12102       return "DW_TAG_friend";
12103     case DW_TAG_namelist:
12104       return "DW_TAG_namelist";
12105     case DW_TAG_namelist_item:
12106       return "DW_TAG_namelist_item";
12107     case DW_TAG_packed_type:
12108       return "DW_TAG_packed_type";
12109     case DW_TAG_subprogram:
12110       return "DW_TAG_subprogram";
12111     case DW_TAG_template_type_param:
12112       return "DW_TAG_template_type_param";
12113     case DW_TAG_template_value_param:
12114       return "DW_TAG_template_value_param";
12115     case DW_TAG_thrown_type:
12116       return "DW_TAG_thrown_type";
12117     case DW_TAG_try_block:
12118       return "DW_TAG_try_block";
12119     case DW_TAG_variant_part:
12120       return "DW_TAG_variant_part";
12121     case DW_TAG_variable:
12122       return "DW_TAG_variable";
12123     case DW_TAG_volatile_type:
12124       return "DW_TAG_volatile_type";
12125     case DW_TAG_dwarf_procedure:
12126       return "DW_TAG_dwarf_procedure";
12127     case DW_TAG_restrict_type:
12128       return "DW_TAG_restrict_type";
12129     case DW_TAG_interface_type:
12130       return "DW_TAG_interface_type";
12131     case DW_TAG_namespace:
12132       return "DW_TAG_namespace";
12133     case DW_TAG_imported_module:
12134       return "DW_TAG_imported_module";
12135     case DW_TAG_unspecified_type:
12136       return "DW_TAG_unspecified_type";
12137     case DW_TAG_partial_unit:
12138       return "DW_TAG_partial_unit";
12139     case DW_TAG_imported_unit:
12140       return "DW_TAG_imported_unit";
12141     case DW_TAG_condition:
12142       return "DW_TAG_condition";
12143     case DW_TAG_shared_type:
12144       return "DW_TAG_shared_type";
12145     case DW_TAG_type_unit:
12146       return "DW_TAG_type_unit";
12147     case DW_TAG_MIPS_loop:
12148       return "DW_TAG_MIPS_loop";
12149     case DW_TAG_HP_array_descriptor:
12150       return "DW_TAG_HP_array_descriptor";
12151     case DW_TAG_format_label:
12152       return "DW_TAG_format_label";
12153     case DW_TAG_function_template:
12154       return "DW_TAG_function_template";
12155     case DW_TAG_class_template:
12156       return "DW_TAG_class_template";
12157     case DW_TAG_GNU_BINCL:
12158       return "DW_TAG_GNU_BINCL";
12159     case DW_TAG_GNU_EINCL:
12160       return "DW_TAG_GNU_EINCL";
12161     case DW_TAG_upc_shared_type:
12162       return "DW_TAG_upc_shared_type";
12163     case DW_TAG_upc_strict_type:
12164       return "DW_TAG_upc_strict_type";
12165     case DW_TAG_upc_relaxed_type:
12166       return "DW_TAG_upc_relaxed_type";
12167     case DW_TAG_PGI_kanji_type:
12168       return "DW_TAG_PGI_kanji_type";
12169     case DW_TAG_PGI_interface_block:
12170       return "DW_TAG_PGI_interface_block";
12171     default:
12172       return "DW_TAG_<unknown>";
12173     }
12174 }
12175
12176 /* Convert a DWARF attribute code into its string name.  */
12177
12178 static char *
12179 dwarf_attr_name (unsigned attr)
12180 {
12181   switch (attr)
12182     {
12183     case DW_AT_sibling:
12184       return "DW_AT_sibling";
12185     case DW_AT_location:
12186       return "DW_AT_location";
12187     case DW_AT_name:
12188       return "DW_AT_name";
12189     case DW_AT_ordering:
12190       return "DW_AT_ordering";
12191     case DW_AT_subscr_data:
12192       return "DW_AT_subscr_data";
12193     case DW_AT_byte_size:
12194       return "DW_AT_byte_size";
12195     case DW_AT_bit_offset:
12196       return "DW_AT_bit_offset";
12197     case DW_AT_bit_size:
12198       return "DW_AT_bit_size";
12199     case DW_AT_element_list:
12200       return "DW_AT_element_list";
12201     case DW_AT_stmt_list:
12202       return "DW_AT_stmt_list";
12203     case DW_AT_low_pc:
12204       return "DW_AT_low_pc";
12205     case DW_AT_high_pc:
12206       return "DW_AT_high_pc";
12207     case DW_AT_language:
12208       return "DW_AT_language";
12209     case DW_AT_member:
12210       return "DW_AT_member";
12211     case DW_AT_discr:
12212       return "DW_AT_discr";
12213     case DW_AT_discr_value:
12214       return "DW_AT_discr_value";
12215     case DW_AT_visibility:
12216       return "DW_AT_visibility";
12217     case DW_AT_import:
12218       return "DW_AT_import";
12219     case DW_AT_string_length:
12220       return "DW_AT_string_length";
12221     case DW_AT_common_reference:
12222       return "DW_AT_common_reference";
12223     case DW_AT_comp_dir:
12224       return "DW_AT_comp_dir";
12225     case DW_AT_const_value:
12226       return "DW_AT_const_value";
12227     case DW_AT_containing_type:
12228       return "DW_AT_containing_type";
12229     case DW_AT_default_value:
12230       return "DW_AT_default_value";
12231     case DW_AT_inline:
12232       return "DW_AT_inline";
12233     case DW_AT_is_optional:
12234       return "DW_AT_is_optional";
12235     case DW_AT_lower_bound:
12236       return "DW_AT_lower_bound";
12237     case DW_AT_producer:
12238       return "DW_AT_producer";
12239     case DW_AT_prototyped:
12240       return "DW_AT_prototyped";
12241     case DW_AT_return_addr:
12242       return "DW_AT_return_addr";
12243     case DW_AT_start_scope:
12244       return "DW_AT_start_scope";
12245     case DW_AT_bit_stride:
12246       return "DW_AT_bit_stride";
12247     case DW_AT_upper_bound:
12248       return "DW_AT_upper_bound";
12249     case DW_AT_abstract_origin:
12250       return "DW_AT_abstract_origin";
12251     case DW_AT_accessibility:
12252       return "DW_AT_accessibility";
12253     case DW_AT_address_class:
12254       return "DW_AT_address_class";
12255     case DW_AT_artificial:
12256       return "DW_AT_artificial";
12257     case DW_AT_base_types:
12258       return "DW_AT_base_types";
12259     case DW_AT_calling_convention:
12260       return "DW_AT_calling_convention";
12261     case DW_AT_count:
12262       return "DW_AT_count";
12263     case DW_AT_data_member_location:
12264       return "DW_AT_data_member_location";
12265     case DW_AT_decl_column:
12266       return "DW_AT_decl_column";
12267     case DW_AT_decl_file:
12268       return "DW_AT_decl_file";
12269     case DW_AT_decl_line:
12270       return "DW_AT_decl_line";
12271     case DW_AT_declaration:
12272       return "DW_AT_declaration";
12273     case DW_AT_discr_list:
12274       return "DW_AT_discr_list";
12275     case DW_AT_encoding:
12276       return "DW_AT_encoding";
12277     case DW_AT_external:
12278       return "DW_AT_external";
12279     case DW_AT_frame_base:
12280       return "DW_AT_frame_base";
12281     case DW_AT_friend:
12282       return "DW_AT_friend";
12283     case DW_AT_identifier_case:
12284       return "DW_AT_identifier_case";
12285     case DW_AT_macro_info:
12286       return "DW_AT_macro_info";
12287     case DW_AT_namelist_items:
12288       return "DW_AT_namelist_items";
12289     case DW_AT_priority:
12290       return "DW_AT_priority";
12291     case DW_AT_segment:
12292       return "DW_AT_segment";
12293     case DW_AT_specification:
12294       return "DW_AT_specification";
12295     case DW_AT_static_link:
12296       return "DW_AT_static_link";
12297     case DW_AT_type:
12298       return "DW_AT_type";
12299     case DW_AT_use_location:
12300       return "DW_AT_use_location";
12301     case DW_AT_variable_parameter:
12302       return "DW_AT_variable_parameter";
12303     case DW_AT_virtuality:
12304       return "DW_AT_virtuality";
12305     case DW_AT_vtable_elem_location:
12306       return "DW_AT_vtable_elem_location";
12307     /* DWARF 3 values.  */
12308     case DW_AT_allocated:
12309       return "DW_AT_allocated";
12310     case DW_AT_associated:
12311       return "DW_AT_associated";
12312     case DW_AT_data_location:
12313       return "DW_AT_data_location";
12314     case DW_AT_byte_stride:
12315       return "DW_AT_byte_stride";
12316     case DW_AT_entry_pc:
12317       return "DW_AT_entry_pc";
12318     case DW_AT_use_UTF8:
12319       return "DW_AT_use_UTF8";
12320     case DW_AT_extension:
12321       return "DW_AT_extension";
12322     case DW_AT_ranges:
12323       return "DW_AT_ranges";
12324     case DW_AT_trampoline:
12325       return "DW_AT_trampoline";
12326     case DW_AT_call_column:
12327       return "DW_AT_call_column";
12328     case DW_AT_call_file:
12329       return "DW_AT_call_file";
12330     case DW_AT_call_line:
12331       return "DW_AT_call_line";
12332     case DW_AT_description:
12333       return "DW_AT_description";
12334     case DW_AT_binary_scale:
12335       return "DW_AT_binary_scale";
12336     case DW_AT_decimal_scale:
12337       return "DW_AT_decimal_scale";
12338     case DW_AT_small:
12339       return "DW_AT_small";
12340     case DW_AT_decimal_sign:
12341       return "DW_AT_decimal_sign";
12342     case DW_AT_digit_count:
12343       return "DW_AT_digit_count";
12344     case DW_AT_picture_string:
12345       return "DW_AT_picture_string";
12346     case DW_AT_mutable:
12347       return "DW_AT_mutable";
12348     case DW_AT_threads_scaled:
12349       return "DW_AT_threads_scaled";
12350     case DW_AT_explicit:
12351       return "DW_AT_explicit";
12352     case DW_AT_object_pointer:
12353       return "DW_AT_object_pointer";
12354     case DW_AT_endianity:
12355       return "DW_AT_endianity";
12356     case DW_AT_elemental:
12357       return "DW_AT_elemental";
12358     case DW_AT_pure:
12359       return "DW_AT_pure";
12360     case DW_AT_recursive:
12361       return "DW_AT_recursive";
12362     /* DWARF 4 values.  */
12363     case DW_AT_signature:
12364       return "DW_AT_signature";
12365     case DW_AT_linkage_name:
12366       return "DW_AT_linkage_name";
12367     /* SGI/MIPS extensions.  */
12368 #ifdef MIPS /* collides with DW_AT_HP_block_index */
12369     case DW_AT_MIPS_fde:
12370       return "DW_AT_MIPS_fde";
12371 #endif
12372     case DW_AT_MIPS_loop_begin:
12373       return "DW_AT_MIPS_loop_begin";
12374     case DW_AT_MIPS_tail_loop_begin:
12375       return "DW_AT_MIPS_tail_loop_begin";
12376     case DW_AT_MIPS_epilog_begin:
12377       return "DW_AT_MIPS_epilog_begin";
12378     case DW_AT_MIPS_loop_unroll_factor:
12379       return "DW_AT_MIPS_loop_unroll_factor";
12380     case DW_AT_MIPS_software_pipeline_depth:
12381       return "DW_AT_MIPS_software_pipeline_depth";
12382     case DW_AT_MIPS_linkage_name:
12383       return "DW_AT_MIPS_linkage_name";
12384     case DW_AT_MIPS_stride:
12385       return "DW_AT_MIPS_stride";
12386     case DW_AT_MIPS_abstract_name:
12387       return "DW_AT_MIPS_abstract_name";
12388     case DW_AT_MIPS_clone_origin:
12389       return "DW_AT_MIPS_clone_origin";
12390     case DW_AT_MIPS_has_inlines:
12391       return "DW_AT_MIPS_has_inlines";
12392     /* HP extensions.  */
12393 #ifndef MIPS /* collides with DW_AT_MIPS_fde */
12394     case DW_AT_HP_block_index:
12395       return "DW_AT_HP_block_index";
12396 #endif
12397     case DW_AT_HP_unmodifiable:
12398       return "DW_AT_HP_unmodifiable";
12399     case DW_AT_HP_actuals_stmt_list:
12400       return "DW_AT_HP_actuals_stmt_list";
12401     case DW_AT_HP_proc_per_section:
12402       return "DW_AT_HP_proc_per_section";
12403     case DW_AT_HP_raw_data_ptr:
12404       return "DW_AT_HP_raw_data_ptr";
12405     case DW_AT_HP_pass_by_reference:
12406       return "DW_AT_HP_pass_by_reference";
12407     case DW_AT_HP_opt_level:
12408       return "DW_AT_HP_opt_level";
12409     case DW_AT_HP_prof_version_id:
12410       return "DW_AT_HP_prof_version_id";
12411     case DW_AT_HP_opt_flags:
12412       return "DW_AT_HP_opt_flags";
12413     case DW_AT_HP_cold_region_low_pc:
12414       return "DW_AT_HP_cold_region_low_pc";
12415     case DW_AT_HP_cold_region_high_pc:
12416       return "DW_AT_HP_cold_region_high_pc";
12417     case DW_AT_HP_all_variables_modifiable:
12418       return "DW_AT_HP_all_variables_modifiable";
12419     case DW_AT_HP_linkage_name:
12420       return "DW_AT_HP_linkage_name";
12421     case DW_AT_HP_prof_flags:
12422       return "DW_AT_HP_prof_flags";
12423     /* GNU extensions.  */
12424     case DW_AT_sf_names:
12425       return "DW_AT_sf_names";
12426     case DW_AT_src_info:
12427       return "DW_AT_src_info";
12428     case DW_AT_mac_info:
12429       return "DW_AT_mac_info";
12430     case DW_AT_src_coords:
12431       return "DW_AT_src_coords";
12432     case DW_AT_body_begin:
12433       return "DW_AT_body_begin";
12434     case DW_AT_body_end:
12435       return "DW_AT_body_end";
12436     case DW_AT_GNU_vector:
12437       return "DW_AT_GNU_vector";
12438     case DW_AT_GNU_odr_signature:
12439       return "DW_AT_GNU_odr_signature";
12440     /* VMS extensions.  */
12441     case DW_AT_VMS_rtnbeg_pd_address:
12442       return "DW_AT_VMS_rtnbeg_pd_address";
12443     /* UPC extension.  */
12444     case DW_AT_upc_threads_scaled:
12445       return "DW_AT_upc_threads_scaled";
12446     /* PGI (STMicroelectronics) extensions.  */
12447     case DW_AT_PGI_lbase:
12448       return "DW_AT_PGI_lbase";
12449     case DW_AT_PGI_soffset:
12450       return "DW_AT_PGI_soffset";
12451     case DW_AT_PGI_lstride:
12452       return "DW_AT_PGI_lstride";
12453     default:
12454       return "DW_AT_<unknown>";
12455     }
12456 }
12457
12458 /* Convert a DWARF value form code into its string name.  */
12459
12460 static char *
12461 dwarf_form_name (unsigned form)
12462 {
12463   switch (form)
12464     {
12465     case DW_FORM_addr:
12466       return "DW_FORM_addr";
12467     case DW_FORM_block2:
12468       return "DW_FORM_block2";
12469     case DW_FORM_block4:
12470       return "DW_FORM_block4";
12471     case DW_FORM_data2:
12472       return "DW_FORM_data2";
12473     case DW_FORM_data4:
12474       return "DW_FORM_data4";
12475     case DW_FORM_data8:
12476       return "DW_FORM_data8";
12477     case DW_FORM_string:
12478       return "DW_FORM_string";
12479     case DW_FORM_block:
12480       return "DW_FORM_block";
12481     case DW_FORM_block1:
12482       return "DW_FORM_block1";
12483     case DW_FORM_data1:
12484       return "DW_FORM_data1";
12485     case DW_FORM_flag:
12486       return "DW_FORM_flag";
12487     case DW_FORM_sdata:
12488       return "DW_FORM_sdata";
12489     case DW_FORM_strp:
12490       return "DW_FORM_strp";
12491     case DW_FORM_udata:
12492       return "DW_FORM_udata";
12493     case DW_FORM_ref_addr:
12494       return "DW_FORM_ref_addr";
12495     case DW_FORM_ref1:
12496       return "DW_FORM_ref1";
12497     case DW_FORM_ref2:
12498       return "DW_FORM_ref2";
12499     case DW_FORM_ref4:
12500       return "DW_FORM_ref4";
12501     case DW_FORM_ref8:
12502       return "DW_FORM_ref8";
12503     case DW_FORM_ref_udata:
12504       return "DW_FORM_ref_udata";
12505     case DW_FORM_indirect:
12506       return "DW_FORM_indirect";
12507     case DW_FORM_sec_offset:
12508       return "DW_FORM_sec_offset";
12509     case DW_FORM_exprloc:
12510       return "DW_FORM_exprloc";
12511     case DW_FORM_flag_present:
12512       return "DW_FORM_flag_present";
12513     case DW_FORM_sig8:
12514       return "DW_FORM_sig8";
12515     default:
12516       return "DW_FORM_<unknown>";
12517     }
12518 }
12519
12520 /* Convert a DWARF stack opcode into its string name.  */
12521
12522 const char *
12523 dwarf_stack_op_name (unsigned op)
12524 {
12525   switch (op)
12526     {
12527     case DW_OP_addr:
12528       return "DW_OP_addr";
12529     case DW_OP_deref:
12530       return "DW_OP_deref";
12531     case DW_OP_const1u:
12532       return "DW_OP_const1u";
12533     case DW_OP_const1s:
12534       return "DW_OP_const1s";
12535     case DW_OP_const2u:
12536       return "DW_OP_const2u";
12537     case DW_OP_const2s:
12538       return "DW_OP_const2s";
12539     case DW_OP_const4u:
12540       return "DW_OP_const4u";
12541     case DW_OP_const4s:
12542       return "DW_OP_const4s";
12543     case DW_OP_const8u:
12544       return "DW_OP_const8u";
12545     case DW_OP_const8s:
12546       return "DW_OP_const8s";
12547     case DW_OP_constu:
12548       return "DW_OP_constu";
12549     case DW_OP_consts:
12550       return "DW_OP_consts";
12551     case DW_OP_dup:
12552       return "DW_OP_dup";
12553     case DW_OP_drop:
12554       return "DW_OP_drop";
12555     case DW_OP_over:
12556       return "DW_OP_over";
12557     case DW_OP_pick:
12558       return "DW_OP_pick";
12559     case DW_OP_swap:
12560       return "DW_OP_swap";
12561     case DW_OP_rot:
12562       return "DW_OP_rot";
12563     case DW_OP_xderef:
12564       return "DW_OP_xderef";
12565     case DW_OP_abs:
12566       return "DW_OP_abs";
12567     case DW_OP_and:
12568       return "DW_OP_and";
12569     case DW_OP_div:
12570       return "DW_OP_div";
12571     case DW_OP_minus:
12572       return "DW_OP_minus";
12573     case DW_OP_mod:
12574       return "DW_OP_mod";
12575     case DW_OP_mul:
12576       return "DW_OP_mul";
12577     case DW_OP_neg:
12578       return "DW_OP_neg";
12579     case DW_OP_not:
12580       return "DW_OP_not";
12581     case DW_OP_or:
12582       return "DW_OP_or";
12583     case DW_OP_plus:
12584       return "DW_OP_plus";
12585     case DW_OP_plus_uconst:
12586       return "DW_OP_plus_uconst";
12587     case DW_OP_shl:
12588       return "DW_OP_shl";
12589     case DW_OP_shr:
12590       return "DW_OP_shr";
12591     case DW_OP_shra:
12592       return "DW_OP_shra";
12593     case DW_OP_xor:
12594       return "DW_OP_xor";
12595     case DW_OP_bra:
12596       return "DW_OP_bra";
12597     case DW_OP_eq:
12598       return "DW_OP_eq";
12599     case DW_OP_ge:
12600       return "DW_OP_ge";
12601     case DW_OP_gt:
12602       return "DW_OP_gt";
12603     case DW_OP_le:
12604       return "DW_OP_le";
12605     case DW_OP_lt:
12606       return "DW_OP_lt";
12607     case DW_OP_ne:
12608       return "DW_OP_ne";
12609     case DW_OP_skip:
12610       return "DW_OP_skip";
12611     case DW_OP_lit0:
12612       return "DW_OP_lit0";
12613     case DW_OP_lit1:
12614       return "DW_OP_lit1";
12615     case DW_OP_lit2:
12616       return "DW_OP_lit2";
12617     case DW_OP_lit3:
12618       return "DW_OP_lit3";
12619     case DW_OP_lit4:
12620       return "DW_OP_lit4";
12621     case DW_OP_lit5:
12622       return "DW_OP_lit5";
12623     case DW_OP_lit6:
12624       return "DW_OP_lit6";
12625     case DW_OP_lit7:
12626       return "DW_OP_lit7";
12627     case DW_OP_lit8:
12628       return "DW_OP_lit8";
12629     case DW_OP_lit9:
12630       return "DW_OP_lit9";
12631     case DW_OP_lit10:
12632       return "DW_OP_lit10";
12633     case DW_OP_lit11:
12634       return "DW_OP_lit11";
12635     case DW_OP_lit12:
12636       return "DW_OP_lit12";
12637     case DW_OP_lit13:
12638       return "DW_OP_lit13";
12639     case DW_OP_lit14:
12640       return "DW_OP_lit14";
12641     case DW_OP_lit15:
12642       return "DW_OP_lit15";
12643     case DW_OP_lit16:
12644       return "DW_OP_lit16";
12645     case DW_OP_lit17:
12646       return "DW_OP_lit17";
12647     case DW_OP_lit18:
12648       return "DW_OP_lit18";
12649     case DW_OP_lit19:
12650       return "DW_OP_lit19";
12651     case DW_OP_lit20:
12652       return "DW_OP_lit20";
12653     case DW_OP_lit21:
12654       return "DW_OP_lit21";
12655     case DW_OP_lit22:
12656       return "DW_OP_lit22";
12657     case DW_OP_lit23:
12658       return "DW_OP_lit23";
12659     case DW_OP_lit24:
12660       return "DW_OP_lit24";
12661     case DW_OP_lit25:
12662       return "DW_OP_lit25";
12663     case DW_OP_lit26:
12664       return "DW_OP_lit26";
12665     case DW_OP_lit27:
12666       return "DW_OP_lit27";
12667     case DW_OP_lit28:
12668       return "DW_OP_lit28";
12669     case DW_OP_lit29:
12670       return "DW_OP_lit29";
12671     case DW_OP_lit30:
12672       return "DW_OP_lit30";
12673     case DW_OP_lit31:
12674       return "DW_OP_lit31";
12675     case DW_OP_reg0:
12676       return "DW_OP_reg0";
12677     case DW_OP_reg1:
12678       return "DW_OP_reg1";
12679     case DW_OP_reg2:
12680       return "DW_OP_reg2";
12681     case DW_OP_reg3:
12682       return "DW_OP_reg3";
12683     case DW_OP_reg4:
12684       return "DW_OP_reg4";
12685     case DW_OP_reg5:
12686       return "DW_OP_reg5";
12687     case DW_OP_reg6:
12688       return "DW_OP_reg6";
12689     case DW_OP_reg7:
12690       return "DW_OP_reg7";
12691     case DW_OP_reg8:
12692       return "DW_OP_reg8";
12693     case DW_OP_reg9:
12694       return "DW_OP_reg9";
12695     case DW_OP_reg10:
12696       return "DW_OP_reg10";
12697     case DW_OP_reg11:
12698       return "DW_OP_reg11";
12699     case DW_OP_reg12:
12700       return "DW_OP_reg12";
12701     case DW_OP_reg13:
12702       return "DW_OP_reg13";
12703     case DW_OP_reg14:
12704       return "DW_OP_reg14";
12705     case DW_OP_reg15:
12706       return "DW_OP_reg15";
12707     case DW_OP_reg16:
12708       return "DW_OP_reg16";
12709     case DW_OP_reg17:
12710       return "DW_OP_reg17";
12711     case DW_OP_reg18:
12712       return "DW_OP_reg18";
12713     case DW_OP_reg19:
12714       return "DW_OP_reg19";
12715     case DW_OP_reg20:
12716       return "DW_OP_reg20";
12717     case DW_OP_reg21:
12718       return "DW_OP_reg21";
12719     case DW_OP_reg22:
12720       return "DW_OP_reg22";
12721     case DW_OP_reg23:
12722       return "DW_OP_reg23";
12723     case DW_OP_reg24:
12724       return "DW_OP_reg24";
12725     case DW_OP_reg25:
12726       return "DW_OP_reg25";
12727     case DW_OP_reg26:
12728       return "DW_OP_reg26";
12729     case DW_OP_reg27:
12730       return "DW_OP_reg27";
12731     case DW_OP_reg28:
12732       return "DW_OP_reg28";
12733     case DW_OP_reg29:
12734       return "DW_OP_reg29";
12735     case DW_OP_reg30:
12736       return "DW_OP_reg30";
12737     case DW_OP_reg31:
12738       return "DW_OP_reg31";
12739     case DW_OP_breg0:
12740       return "DW_OP_breg0";
12741     case DW_OP_breg1:
12742       return "DW_OP_breg1";
12743     case DW_OP_breg2:
12744       return "DW_OP_breg2";
12745     case DW_OP_breg3:
12746       return "DW_OP_breg3";
12747     case DW_OP_breg4:
12748       return "DW_OP_breg4";
12749     case DW_OP_breg5:
12750       return "DW_OP_breg5";
12751     case DW_OP_breg6:
12752       return "DW_OP_breg6";
12753     case DW_OP_breg7:
12754       return "DW_OP_breg7";
12755     case DW_OP_breg8:
12756       return "DW_OP_breg8";
12757     case DW_OP_breg9:
12758       return "DW_OP_breg9";
12759     case DW_OP_breg10:
12760       return "DW_OP_breg10";
12761     case DW_OP_breg11:
12762       return "DW_OP_breg11";
12763     case DW_OP_breg12:
12764       return "DW_OP_breg12";
12765     case DW_OP_breg13:
12766       return "DW_OP_breg13";
12767     case DW_OP_breg14:
12768       return "DW_OP_breg14";
12769     case DW_OP_breg15:
12770       return "DW_OP_breg15";
12771     case DW_OP_breg16:
12772       return "DW_OP_breg16";
12773     case DW_OP_breg17:
12774       return "DW_OP_breg17";
12775     case DW_OP_breg18:
12776       return "DW_OP_breg18";
12777     case DW_OP_breg19:
12778       return "DW_OP_breg19";
12779     case DW_OP_breg20:
12780       return "DW_OP_breg20";
12781     case DW_OP_breg21:
12782       return "DW_OP_breg21";
12783     case DW_OP_breg22:
12784       return "DW_OP_breg22";
12785     case DW_OP_breg23:
12786       return "DW_OP_breg23";
12787     case DW_OP_breg24:
12788       return "DW_OP_breg24";
12789     case DW_OP_breg25:
12790       return "DW_OP_breg25";
12791     case DW_OP_breg26:
12792       return "DW_OP_breg26";
12793     case DW_OP_breg27:
12794       return "DW_OP_breg27";
12795     case DW_OP_breg28:
12796       return "DW_OP_breg28";
12797     case DW_OP_breg29:
12798       return "DW_OP_breg29";
12799     case DW_OP_breg30:
12800       return "DW_OP_breg30";
12801     case DW_OP_breg31:
12802       return "DW_OP_breg31";
12803     case DW_OP_regx:
12804       return "DW_OP_regx";
12805     case DW_OP_fbreg:
12806       return "DW_OP_fbreg";
12807     case DW_OP_bregx:
12808       return "DW_OP_bregx";
12809     case DW_OP_piece:
12810       return "DW_OP_piece";
12811     case DW_OP_deref_size:
12812       return "DW_OP_deref_size";
12813     case DW_OP_xderef_size:
12814       return "DW_OP_xderef_size";
12815     case DW_OP_nop:
12816       return "DW_OP_nop";
12817     /* DWARF 3 extensions.  */
12818     case DW_OP_push_object_address:
12819       return "DW_OP_push_object_address";
12820     case DW_OP_call2:
12821       return "DW_OP_call2";
12822     case DW_OP_call4:
12823       return "DW_OP_call4";
12824     case DW_OP_call_ref:
12825       return "DW_OP_call_ref";
12826     case DW_OP_form_tls_address:
12827       return "DW_OP_form_tls_address";
12828     case DW_OP_call_frame_cfa:
12829       return "DW_OP_call_frame_cfa";
12830     case DW_OP_bit_piece:
12831       return "DW_OP_bit_piece";
12832     /* DWARF 4 extensions.  */
12833     case DW_OP_implicit_value:
12834       return "DW_OP_implicit_value";
12835     case DW_OP_stack_value:
12836       return "DW_OP_stack_value";
12837     /* GNU extensions.  */
12838     case DW_OP_GNU_push_tls_address:
12839       return "DW_OP_GNU_push_tls_address";
12840     case DW_OP_GNU_uninit:
12841       return "DW_OP_GNU_uninit";
12842     case DW_OP_GNU_implicit_pointer:
12843       return "DW_OP_GNU_implicit_pointer";
12844     default:
12845       return NULL;
12846     }
12847 }
12848
12849 static char *
12850 dwarf_bool_name (unsigned mybool)
12851 {
12852   if (mybool)
12853     return "TRUE";
12854   else
12855     return "FALSE";
12856 }
12857
12858 /* Convert a DWARF type code into its string name.  */
12859
12860 static char *
12861 dwarf_type_encoding_name (unsigned enc)
12862 {
12863   switch (enc)
12864     {
12865     case DW_ATE_void:
12866       return "DW_ATE_void";
12867     case DW_ATE_address:
12868       return "DW_ATE_address";
12869     case DW_ATE_boolean:
12870       return "DW_ATE_boolean";
12871     case DW_ATE_complex_float:
12872       return "DW_ATE_complex_float";
12873     case DW_ATE_float:
12874       return "DW_ATE_float";
12875     case DW_ATE_signed:
12876       return "DW_ATE_signed";
12877     case DW_ATE_signed_char:
12878       return "DW_ATE_signed_char";
12879     case DW_ATE_unsigned:
12880       return "DW_ATE_unsigned";
12881     case DW_ATE_unsigned_char:
12882       return "DW_ATE_unsigned_char";
12883     /* DWARF 3.  */
12884     case DW_ATE_imaginary_float:
12885       return "DW_ATE_imaginary_float";
12886     case DW_ATE_packed_decimal:
12887       return "DW_ATE_packed_decimal";
12888     case DW_ATE_numeric_string:
12889       return "DW_ATE_numeric_string";
12890     case DW_ATE_edited:
12891       return "DW_ATE_edited";
12892     case DW_ATE_signed_fixed:
12893       return "DW_ATE_signed_fixed";
12894     case DW_ATE_unsigned_fixed:
12895       return "DW_ATE_unsigned_fixed";
12896     case DW_ATE_decimal_float:
12897       return "DW_ATE_decimal_float";
12898     /* DWARF 4.  */
12899     case DW_ATE_UTF:
12900       return "DW_ATE_UTF";
12901     /* HP extensions.  */
12902     case DW_ATE_HP_float80:
12903       return "DW_ATE_HP_float80";
12904     case DW_ATE_HP_complex_float80:
12905       return "DW_ATE_HP_complex_float80";
12906     case DW_ATE_HP_float128:
12907       return "DW_ATE_HP_float128";
12908     case DW_ATE_HP_complex_float128:
12909       return "DW_ATE_HP_complex_float128";
12910     case DW_ATE_HP_floathpintel:
12911       return "DW_ATE_HP_floathpintel";
12912     case DW_ATE_HP_imaginary_float80:
12913       return "DW_ATE_HP_imaginary_float80";
12914     case DW_ATE_HP_imaginary_float128:
12915       return "DW_ATE_HP_imaginary_float128";
12916     default:
12917       return "DW_ATE_<unknown>";
12918     }
12919 }
12920
12921 /* Convert a DWARF call frame info operation to its string name.  */
12922
12923 #if 0
12924 static char *
12925 dwarf_cfi_name (unsigned cfi_opc)
12926 {
12927   switch (cfi_opc)
12928     {
12929     case DW_CFA_advance_loc:
12930       return "DW_CFA_advance_loc";
12931     case DW_CFA_offset:
12932       return "DW_CFA_offset";
12933     case DW_CFA_restore:
12934       return "DW_CFA_restore";
12935     case DW_CFA_nop:
12936       return "DW_CFA_nop";
12937     case DW_CFA_set_loc:
12938       return "DW_CFA_set_loc";
12939     case DW_CFA_advance_loc1:
12940       return "DW_CFA_advance_loc1";
12941     case DW_CFA_advance_loc2:
12942       return "DW_CFA_advance_loc2";
12943     case DW_CFA_advance_loc4:
12944       return "DW_CFA_advance_loc4";
12945     case DW_CFA_offset_extended:
12946       return "DW_CFA_offset_extended";
12947     case DW_CFA_restore_extended:
12948       return "DW_CFA_restore_extended";
12949     case DW_CFA_undefined:
12950       return "DW_CFA_undefined";
12951     case DW_CFA_same_value:
12952       return "DW_CFA_same_value";
12953     case DW_CFA_register:
12954       return "DW_CFA_register";
12955     case DW_CFA_remember_state:
12956       return "DW_CFA_remember_state";
12957     case DW_CFA_restore_state:
12958       return "DW_CFA_restore_state";
12959     case DW_CFA_def_cfa:
12960       return "DW_CFA_def_cfa";
12961     case DW_CFA_def_cfa_register:
12962       return "DW_CFA_def_cfa_register";
12963     case DW_CFA_def_cfa_offset:
12964       return "DW_CFA_def_cfa_offset";
12965     /* DWARF 3.  */
12966     case DW_CFA_def_cfa_expression:
12967       return "DW_CFA_def_cfa_expression";
12968     case DW_CFA_expression:
12969       return "DW_CFA_expression";
12970     case DW_CFA_offset_extended_sf:
12971       return "DW_CFA_offset_extended_sf";
12972     case DW_CFA_def_cfa_sf:
12973       return "DW_CFA_def_cfa_sf";
12974     case DW_CFA_def_cfa_offset_sf:
12975       return "DW_CFA_def_cfa_offset_sf";
12976     case DW_CFA_val_offset:
12977       return "DW_CFA_val_offset";
12978     case DW_CFA_val_offset_sf:
12979       return "DW_CFA_val_offset_sf";
12980     case DW_CFA_val_expression:
12981       return "DW_CFA_val_expression";
12982     /* SGI/MIPS specific.  */
12983     case DW_CFA_MIPS_advance_loc8:
12984       return "DW_CFA_MIPS_advance_loc8";
12985     /* GNU extensions.  */
12986     case DW_CFA_GNU_window_save:
12987       return "DW_CFA_GNU_window_save";
12988     case DW_CFA_GNU_args_size:
12989       return "DW_CFA_GNU_args_size";
12990     case DW_CFA_GNU_negative_offset_extended:
12991       return "DW_CFA_GNU_negative_offset_extended";
12992     default:
12993       return "DW_CFA_<unknown>";
12994     }
12995 }
12996 #endif
12997
12998 static void
12999 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
13000 {
13001   unsigned int i;
13002
13003   print_spaces (indent, f);
13004   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset 0x%x)\n",
13005            dwarf_tag_name (die->tag), die->abbrev, die->offset);
13006
13007   if (die->parent != NULL)
13008     {
13009       print_spaces (indent, f);
13010       fprintf_unfiltered (f, "  parent at offset: 0x%x\n",
13011                           die->parent->offset);
13012     }
13013
13014   print_spaces (indent, f);
13015   fprintf_unfiltered (f, "  has children: %s\n",
13016            dwarf_bool_name (die->child != NULL));
13017
13018   print_spaces (indent, f);
13019   fprintf_unfiltered (f, "  attributes:\n");
13020
13021   for (i = 0; i < die->num_attrs; ++i)
13022     {
13023       print_spaces (indent, f);
13024       fprintf_unfiltered (f, "    %s (%s) ",
13025                dwarf_attr_name (die->attrs[i].name),
13026                dwarf_form_name (die->attrs[i].form));
13027
13028       switch (die->attrs[i].form)
13029         {
13030         case DW_FORM_ref_addr:
13031         case DW_FORM_addr:
13032           fprintf_unfiltered (f, "address: ");
13033           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
13034           break;
13035         case DW_FORM_block2:
13036         case DW_FORM_block4:
13037         case DW_FORM_block:
13038         case DW_FORM_block1:
13039           fprintf_unfiltered (f, "block: size %d",
13040                               DW_BLOCK (&die->attrs[i])->size);
13041           break;
13042         case DW_FORM_exprloc:
13043           fprintf_unfiltered (f, "expression: size %u",
13044                               DW_BLOCK (&die->attrs[i])->size);
13045           break;
13046         case DW_FORM_ref1:
13047         case DW_FORM_ref2:
13048         case DW_FORM_ref4:
13049           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
13050                               (long) (DW_ADDR (&die->attrs[i])));
13051           break;
13052         case DW_FORM_data1:
13053         case DW_FORM_data2:
13054         case DW_FORM_data4:
13055         case DW_FORM_data8:
13056         case DW_FORM_udata:
13057         case DW_FORM_sdata:
13058           fprintf_unfiltered (f, "constant: %s",
13059                               pulongest (DW_UNSND (&die->attrs[i])));
13060           break;
13061         case DW_FORM_sec_offset:
13062           fprintf_unfiltered (f, "section offset: %s",
13063                               pulongest (DW_UNSND (&die->attrs[i])));
13064           break;
13065         case DW_FORM_sig8:
13066           if (DW_SIGNATURED_TYPE (&die->attrs[i]) != NULL)
13067             fprintf_unfiltered (f, "signatured type, offset: 0x%x",
13068                                 DW_SIGNATURED_TYPE (&die->attrs[i])->offset);
13069           else
13070             fprintf_unfiltered (f, "signatured type, offset: unknown");
13071           break;
13072         case DW_FORM_string:
13073         case DW_FORM_strp:
13074           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
13075                    DW_STRING (&die->attrs[i])
13076                    ? DW_STRING (&die->attrs[i]) : "",
13077                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
13078           break;
13079         case DW_FORM_flag:
13080           if (DW_UNSND (&die->attrs[i]))
13081             fprintf_unfiltered (f, "flag: TRUE");
13082           else
13083             fprintf_unfiltered (f, "flag: FALSE");
13084           break;
13085         case DW_FORM_flag_present:
13086           fprintf_unfiltered (f, "flag: TRUE");
13087           break;
13088         case DW_FORM_indirect:
13089           /* The reader will have reduced the indirect form to
13090              the "base form" so this form should not occur.  */
13091           fprintf_unfiltered (f, 
13092                               "unexpected attribute form: DW_FORM_indirect");
13093           break;
13094         default:
13095           fprintf_unfiltered (f, "unsupported attribute form: %d.",
13096                    die->attrs[i].form);
13097           break;
13098         }
13099       fprintf_unfiltered (f, "\n");
13100     }
13101 }
13102
13103 static void
13104 dump_die_for_error (struct die_info *die)
13105 {
13106   dump_die_shallow (gdb_stderr, 0, die);
13107 }
13108
13109 static void
13110 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
13111 {
13112   int indent = level * 4;
13113
13114   gdb_assert (die != NULL);
13115
13116   if (level >= max_level)
13117     return;
13118
13119   dump_die_shallow (f, indent, die);
13120
13121   if (die->child != NULL)
13122     {
13123       print_spaces (indent, f);
13124       fprintf_unfiltered (f, "  Children:");
13125       if (level + 1 < max_level)
13126         {
13127           fprintf_unfiltered (f, "\n");
13128           dump_die_1 (f, level + 1, max_level, die->child);
13129         }
13130       else
13131         {
13132           fprintf_unfiltered (f,
13133                               " [not printed, max nesting level reached]\n");
13134         }
13135     }
13136
13137   if (die->sibling != NULL && level > 0)
13138     {
13139       dump_die_1 (f, level, max_level, die->sibling);
13140     }
13141 }
13142
13143 /* This is called from the pdie macro in gdbinit.in.
13144    It's not static so gcc will keep a copy callable from gdb.  */
13145
13146 void
13147 dump_die (struct die_info *die, int max_level)
13148 {
13149   dump_die_1 (gdb_stdlog, 0, max_level, die);
13150 }
13151
13152 static void
13153 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
13154 {
13155   void **slot;
13156
13157   slot = htab_find_slot_with_hash (cu->die_hash, die, die->offset, INSERT);
13158
13159   *slot = die;
13160 }
13161
13162 static int
13163 is_ref_attr (struct attribute *attr)
13164 {
13165   switch (attr->form)
13166     {
13167     case DW_FORM_ref_addr:
13168     case DW_FORM_ref1:
13169     case DW_FORM_ref2:
13170     case DW_FORM_ref4:
13171     case DW_FORM_ref8:
13172     case DW_FORM_ref_udata:
13173       return 1;
13174     default:
13175       return 0;
13176     }
13177 }
13178
13179 static unsigned int
13180 dwarf2_get_ref_die_offset (struct attribute *attr)
13181 {
13182   if (is_ref_attr (attr))
13183     return DW_ADDR (attr);
13184
13185   complaint (&symfile_complaints,
13186              _("unsupported die ref attribute form: '%s'"),
13187              dwarf_form_name (attr->form));
13188   return 0;
13189 }
13190
13191 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
13192  * the value held by the attribute is not constant.  */
13193
13194 static LONGEST
13195 dwarf2_get_attr_constant_value (struct attribute *attr, int default_value)
13196 {
13197   if (attr->form == DW_FORM_sdata)
13198     return DW_SND (attr);
13199   else if (attr->form == DW_FORM_udata
13200            || attr->form == DW_FORM_data1
13201            || attr->form == DW_FORM_data2
13202            || attr->form == DW_FORM_data4
13203            || attr->form == DW_FORM_data8)
13204     return DW_UNSND (attr);
13205   else
13206     {
13207       complaint (&symfile_complaints,
13208                  _("Attribute value is not a constant (%s)"),
13209                  dwarf_form_name (attr->form));
13210       return default_value;
13211     }
13212 }
13213
13214 /* THIS_CU has a reference to PER_CU.  If necessary, load the new compilation
13215    unit and add it to our queue.
13216    The result is non-zero if PER_CU was queued, otherwise the result is zero
13217    meaning either PER_CU is already queued or it is already loaded.  */
13218
13219 static int
13220 maybe_queue_comp_unit (struct dwarf2_cu *this_cu,
13221                        struct dwarf2_per_cu_data *per_cu)
13222 {
13223   /* We may arrive here during partial symbol reading, if we need full
13224      DIEs to process an unusual case (e.g. template arguments).  Do
13225      not queue PER_CU, just tell our caller to load its DIEs.  */
13226   if (dwarf2_per_objfile->reading_partial_symbols)
13227     {
13228       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
13229         return 1;
13230       return 0;
13231     }
13232
13233   /* Mark the dependence relation so that we don't flush PER_CU
13234      too early.  */
13235   dwarf2_add_dependence (this_cu, per_cu);
13236
13237   /* If it's already on the queue, we have nothing to do.  */
13238   if (per_cu->queued)
13239     return 0;
13240
13241   /* If the compilation unit is already loaded, just mark it as
13242      used.  */
13243   if (per_cu->cu != NULL)
13244     {
13245       per_cu->cu->last_used = 0;
13246       return 0;
13247     }
13248
13249   /* Add it to the queue.  */
13250   queue_comp_unit (per_cu, this_cu->objfile);
13251
13252   return 1;
13253 }
13254
13255 /* Follow reference or signature attribute ATTR of SRC_DIE.
13256    On entry *REF_CU is the CU of SRC_DIE.
13257    On exit *REF_CU is the CU of the result.  */
13258
13259 static struct die_info *
13260 follow_die_ref_or_sig (struct die_info *src_die, struct attribute *attr,
13261                        struct dwarf2_cu **ref_cu)
13262 {
13263   struct die_info *die;
13264
13265   if (is_ref_attr (attr))
13266     die = follow_die_ref (src_die, attr, ref_cu);
13267   else if (attr->form == DW_FORM_sig8)
13268     die = follow_die_sig (src_die, attr, ref_cu);
13269   else
13270     {
13271       dump_die_for_error (src_die);
13272       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
13273              (*ref_cu)->objfile->name);
13274     }
13275
13276   return die;
13277 }
13278
13279 /* Follow reference OFFSET.
13280    On entry *REF_CU is the CU of the source die referencing OFFSET.
13281    On exit *REF_CU is the CU of the result.
13282    Returns NULL if OFFSET is invalid.  */
13283
13284 static struct die_info *
13285 follow_die_offset (unsigned int offset, struct dwarf2_cu **ref_cu)
13286 {
13287   struct die_info temp_die;
13288   struct dwarf2_cu *target_cu, *cu = *ref_cu;
13289
13290   gdb_assert (cu->per_cu != NULL);
13291
13292   target_cu = cu;
13293
13294   if (cu->per_cu->from_debug_types)
13295     {
13296       /* .debug_types CUs cannot reference anything outside their CU.
13297          If they need to, they have to reference a signatured type via
13298          DW_FORM_sig8.  */
13299       if (! offset_in_cu_p (&cu->header, offset))
13300         return NULL;
13301     }
13302   else if (! offset_in_cu_p (&cu->header, offset))
13303     {
13304       struct dwarf2_per_cu_data *per_cu;
13305
13306       per_cu = dwarf2_find_containing_comp_unit (offset, cu->objfile);
13307
13308       /* If necessary, add it to the queue and load its DIEs.  */
13309       if (maybe_queue_comp_unit (cu, per_cu))
13310         load_full_comp_unit (per_cu, cu->objfile);
13311
13312       target_cu = per_cu->cu;
13313     }
13314   else if (cu->dies == NULL)
13315     {
13316       /* We're loading full DIEs during partial symbol reading.  */
13317       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
13318       load_full_comp_unit (cu->per_cu, cu->objfile);
13319     }
13320
13321   *ref_cu = target_cu;
13322   temp_die.offset = offset;
13323   return htab_find_with_hash (target_cu->die_hash, &temp_die, offset);
13324 }
13325
13326 /* Follow reference attribute ATTR of SRC_DIE.
13327    On entry *REF_CU is the CU of SRC_DIE.
13328    On exit *REF_CU is the CU of the result.  */
13329
13330 static struct die_info *
13331 follow_die_ref (struct die_info *src_die, struct attribute *attr,
13332                 struct dwarf2_cu **ref_cu)
13333 {
13334   unsigned int offset = dwarf2_get_ref_die_offset (attr);
13335   struct dwarf2_cu *cu = *ref_cu;
13336   struct die_info *die;
13337
13338   die = follow_die_offset (offset, ref_cu);
13339   if (!die)
13340     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced from DIE "
13341            "at 0x%x [in module %s]"),
13342            offset, src_die->offset, cu->objfile->name);
13343
13344   return die;
13345 }
13346
13347 /* Return DWARF block and its CU referenced by OFFSET at PER_CU.  Returned
13348    value is intended for DW_OP_call*.  */
13349
13350 struct dwarf2_locexpr_baton
13351 dwarf2_fetch_die_location_block (unsigned int offset,
13352                                  struct dwarf2_per_cu_data *per_cu,
13353                                  CORE_ADDR (*get_frame_pc) (void *baton),
13354                                  void *baton)
13355 {
13356   struct dwarf2_cu *cu = per_cu->cu;
13357   struct die_info *die;
13358   struct attribute *attr;
13359   struct dwarf2_locexpr_baton retval;
13360
13361   dw2_setup (per_cu->objfile);
13362
13363   die = follow_die_offset (offset, &cu);
13364   if (!die)
13365     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
13366            offset, per_cu->cu->objfile->name);
13367
13368   attr = dwarf2_attr (die, DW_AT_location, cu);
13369   if (!attr)
13370     {
13371       /* DWARF: "If there is no such attribute, then there is no effect.".  */
13372
13373       retval.data = NULL;
13374       retval.size = 0;
13375     }
13376   else if (attr_form_is_section_offset (attr))
13377     {
13378       struct dwarf2_loclist_baton loclist_baton;
13379       CORE_ADDR pc = (*get_frame_pc) (baton);
13380       size_t size;
13381
13382       fill_in_loclist_baton (cu, &loclist_baton, attr);
13383
13384       retval.data = dwarf2_find_location_expression (&loclist_baton,
13385                                                      &size, pc);
13386       retval.size = size;
13387     }
13388   else
13389     {
13390       if (!attr_form_is_block (attr))
13391         error (_("Dwarf Error: DIE at 0x%x referenced in module %s "
13392                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
13393                offset, per_cu->cu->objfile->name);
13394
13395       retval.data = DW_BLOCK (attr)->data;
13396       retval.size = DW_BLOCK (attr)->size;
13397     }
13398   retval.per_cu = cu->per_cu;
13399   return retval;
13400 }
13401
13402 /* Follow the signature attribute ATTR in SRC_DIE.
13403    On entry *REF_CU is the CU of SRC_DIE.
13404    On exit *REF_CU is the CU of the result.  */
13405
13406 static struct die_info *
13407 follow_die_sig (struct die_info *src_die, struct attribute *attr,
13408                 struct dwarf2_cu **ref_cu)
13409 {
13410   struct objfile *objfile = (*ref_cu)->objfile;
13411   struct die_info temp_die;
13412   struct signatured_type *sig_type = DW_SIGNATURED_TYPE (attr);
13413   struct dwarf2_cu *sig_cu;
13414   struct die_info *die;
13415
13416   /* sig_type will be NULL if the signatured type is missing from
13417      the debug info.  */
13418   if (sig_type == NULL)
13419     error (_("Dwarf Error: Cannot find signatured DIE referenced from DIE "
13420              "at 0x%x [in module %s]"),
13421            src_die->offset, objfile->name);
13422
13423   /* If necessary, add it to the queue and load its DIEs.  */
13424
13425   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu))
13426     read_signatured_type (objfile, sig_type);
13427
13428   gdb_assert (sig_type->per_cu.cu != NULL);
13429
13430   sig_cu = sig_type->per_cu.cu;
13431   temp_die.offset = sig_cu->header.offset + sig_type->type_offset;
13432   die = htab_find_with_hash (sig_cu->die_hash, &temp_die, temp_die.offset);
13433   if (die)
13434     {
13435       *ref_cu = sig_cu;
13436       return die;
13437     }
13438
13439   error (_("Dwarf Error: Cannot find signatured DIE at 0x%x referenced "
13440          "from DIE at 0x%x [in module %s]"),
13441          sig_type->type_offset, src_die->offset, objfile->name);
13442 }
13443
13444 /* Given an offset of a signatured type, return its signatured_type.  */
13445
13446 static struct signatured_type *
13447 lookup_signatured_type_at_offset (struct objfile *objfile, unsigned int offset)
13448 {
13449   gdb_byte *info_ptr = dwarf2_per_objfile->types.buffer + offset;
13450   unsigned int length, initial_length_size;
13451   unsigned int sig_offset;
13452   struct signatured_type find_entry, *type_sig;
13453
13454   length = read_initial_length (objfile->obfd, info_ptr, &initial_length_size);
13455   sig_offset = (initial_length_size
13456                 + 2 /*version*/
13457                 + (initial_length_size == 4 ? 4 : 8) /*debug_abbrev_offset*/
13458                 + 1 /*address_size*/);
13459   find_entry.signature = bfd_get_64 (objfile->obfd, info_ptr + sig_offset);
13460   type_sig = htab_find (dwarf2_per_objfile->signatured_types, &find_entry);
13461
13462   /* This is only used to lookup previously recorded types.
13463      If we didn't find it, it's our bug.  */
13464   gdb_assert (type_sig != NULL);
13465   gdb_assert (offset == type_sig->offset);
13466
13467   return type_sig;
13468 }
13469
13470 /* Read in signatured type at OFFSET and build its CU and die(s).  */
13471
13472 static void
13473 read_signatured_type_at_offset (struct objfile *objfile,
13474                                 unsigned int offset)
13475 {
13476   struct signatured_type *type_sig;
13477
13478   dwarf2_read_section (objfile, &dwarf2_per_objfile->types);
13479
13480   /* We have the section offset, but we need the signature to do the
13481      hash table lookup.  */
13482   type_sig = lookup_signatured_type_at_offset (objfile, offset);
13483
13484   gdb_assert (type_sig->per_cu.cu == NULL);
13485
13486   read_signatured_type (objfile, type_sig);
13487
13488   gdb_assert (type_sig->per_cu.cu != NULL);
13489 }
13490
13491 /* Read in a signatured type and build its CU and DIEs.  */
13492
13493 static void
13494 read_signatured_type (struct objfile *objfile,
13495                       struct signatured_type *type_sig)
13496 {
13497   gdb_byte *types_ptr;
13498   struct die_reader_specs reader_specs;
13499   struct dwarf2_cu *cu;
13500   ULONGEST signature;
13501   struct cleanup *back_to, *free_cu_cleanup;
13502
13503   dwarf2_read_section (objfile, &dwarf2_per_objfile->types);
13504   types_ptr = dwarf2_per_objfile->types.buffer + type_sig->offset;
13505
13506   gdb_assert (type_sig->per_cu.cu == NULL);
13507
13508   cu = xmalloc (sizeof (*cu));
13509   init_one_comp_unit (cu, objfile);
13510
13511   type_sig->per_cu.cu = cu;
13512   cu->per_cu = &type_sig->per_cu;
13513
13514   /* If an error occurs while loading, release our storage.  */
13515   free_cu_cleanup = make_cleanup (free_one_comp_unit, cu);
13516
13517   types_ptr = read_type_comp_unit_head (&cu->header, &signature,
13518                                         types_ptr, objfile->obfd);
13519   gdb_assert (signature == type_sig->signature);
13520
13521   cu->die_hash
13522     = htab_create_alloc_ex (cu->header.length / 12,
13523                             die_hash,
13524                             die_eq,
13525                             NULL,
13526                             &cu->comp_unit_obstack,
13527                             hashtab_obstack_allocate,
13528                             dummy_obstack_deallocate);
13529
13530   dwarf2_read_abbrevs (cu->objfile->obfd, cu);
13531   back_to = make_cleanup (dwarf2_free_abbrev_table, cu);
13532
13533   init_cu_die_reader (&reader_specs, cu);
13534
13535   cu->dies = read_die_and_children (&reader_specs, types_ptr, &types_ptr,
13536                                     NULL /*parent*/);
13537
13538   /* We try not to read any attributes in this function, because not
13539      all objfiles needed for references have been loaded yet, and symbol
13540      table processing isn't initialized.  But we have to set the CU language,
13541      or we won't be able to build types correctly.  */
13542   prepare_one_comp_unit (cu, cu->dies);
13543
13544   do_cleanups (back_to);
13545
13546   /* We've successfully allocated this compilation unit.  Let our caller
13547      clean it up when finished with it.  */
13548   discard_cleanups (free_cu_cleanup);
13549
13550   type_sig->per_cu.cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
13551   dwarf2_per_objfile->read_in_chain = &type_sig->per_cu;
13552 }
13553
13554 /* Decode simple location descriptions.
13555    Given a pointer to a dwarf block that defines a location, compute
13556    the location and return the value.
13557
13558    NOTE drow/2003-11-18: This function is called in two situations
13559    now: for the address of static or global variables (partial symbols
13560    only) and for offsets into structures which are expected to be
13561    (more or less) constant.  The partial symbol case should go away,
13562    and only the constant case should remain.  That will let this
13563    function complain more accurately.  A few special modes are allowed
13564    without complaint for global variables (for instance, global
13565    register values and thread-local values).
13566
13567    A location description containing no operations indicates that the
13568    object is optimized out.  The return value is 0 for that case.
13569    FIXME drow/2003-11-16: No callers check for this case any more; soon all
13570    callers will only want a very basic result and this can become a
13571    complaint.
13572
13573    Note that stack[0] is unused except as a default error return.  */
13574
13575 static CORE_ADDR
13576 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
13577 {
13578   struct objfile *objfile = cu->objfile;
13579   int i;
13580   int size = blk->size;
13581   gdb_byte *data = blk->data;
13582   CORE_ADDR stack[64];
13583   int stacki;
13584   unsigned int bytes_read, unsnd;
13585   gdb_byte op;
13586
13587   i = 0;
13588   stacki = 0;
13589   stack[stacki] = 0;
13590   stack[++stacki] = 0;
13591
13592   while (i < size)
13593     {
13594       op = data[i++];
13595       switch (op)
13596         {
13597         case DW_OP_lit0:
13598         case DW_OP_lit1:
13599         case DW_OP_lit2:
13600         case DW_OP_lit3:
13601         case DW_OP_lit4:
13602         case DW_OP_lit5:
13603         case DW_OP_lit6:
13604         case DW_OP_lit7:
13605         case DW_OP_lit8:
13606         case DW_OP_lit9:
13607         case DW_OP_lit10:
13608         case DW_OP_lit11:
13609         case DW_OP_lit12:
13610         case DW_OP_lit13:
13611         case DW_OP_lit14:
13612         case DW_OP_lit15:
13613         case DW_OP_lit16:
13614         case DW_OP_lit17:
13615         case DW_OP_lit18:
13616         case DW_OP_lit19:
13617         case DW_OP_lit20:
13618         case DW_OP_lit21:
13619         case DW_OP_lit22:
13620         case DW_OP_lit23:
13621         case DW_OP_lit24:
13622         case DW_OP_lit25:
13623         case DW_OP_lit26:
13624         case DW_OP_lit27:
13625         case DW_OP_lit28:
13626         case DW_OP_lit29:
13627         case DW_OP_lit30:
13628         case DW_OP_lit31:
13629           stack[++stacki] = op - DW_OP_lit0;
13630           break;
13631
13632         case DW_OP_reg0:
13633         case DW_OP_reg1:
13634         case DW_OP_reg2:
13635         case DW_OP_reg3:
13636         case DW_OP_reg4:
13637         case DW_OP_reg5:
13638         case DW_OP_reg6:
13639         case DW_OP_reg7:
13640         case DW_OP_reg8:
13641         case DW_OP_reg9:
13642         case DW_OP_reg10:
13643         case DW_OP_reg11:
13644         case DW_OP_reg12:
13645         case DW_OP_reg13:
13646         case DW_OP_reg14:
13647         case DW_OP_reg15:
13648         case DW_OP_reg16:
13649         case DW_OP_reg17:
13650         case DW_OP_reg18:
13651         case DW_OP_reg19:
13652         case DW_OP_reg20:
13653         case DW_OP_reg21:
13654         case DW_OP_reg22:
13655         case DW_OP_reg23:
13656         case DW_OP_reg24:
13657         case DW_OP_reg25:
13658         case DW_OP_reg26:
13659         case DW_OP_reg27:
13660         case DW_OP_reg28:
13661         case DW_OP_reg29:
13662         case DW_OP_reg30:
13663         case DW_OP_reg31:
13664           stack[++stacki] = op - DW_OP_reg0;
13665           if (i < size)
13666             dwarf2_complex_location_expr_complaint ();
13667           break;
13668
13669         case DW_OP_regx:
13670           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
13671           i += bytes_read;
13672           stack[++stacki] = unsnd;
13673           if (i < size)
13674             dwarf2_complex_location_expr_complaint ();
13675           break;
13676
13677         case DW_OP_addr:
13678           stack[++stacki] = read_address (objfile->obfd, &data[i],
13679                                           cu, &bytes_read);
13680           i += bytes_read;
13681           break;
13682
13683         case DW_OP_const1u:
13684           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
13685           i += 1;
13686           break;
13687
13688         case DW_OP_const1s:
13689           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
13690           i += 1;
13691           break;
13692
13693         case DW_OP_const2u:
13694           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
13695           i += 2;
13696           break;
13697
13698         case DW_OP_const2s:
13699           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
13700           i += 2;
13701           break;
13702
13703         case DW_OP_const4u:
13704           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
13705           i += 4;
13706           break;
13707
13708         case DW_OP_const4s:
13709           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
13710           i += 4;
13711           break;
13712
13713         case DW_OP_constu:
13714           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
13715                                                   &bytes_read);
13716           i += bytes_read;
13717           break;
13718
13719         case DW_OP_consts:
13720           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
13721           i += bytes_read;
13722           break;
13723
13724         case DW_OP_dup:
13725           stack[stacki + 1] = stack[stacki];
13726           stacki++;
13727           break;
13728
13729         case DW_OP_plus:
13730           stack[stacki - 1] += stack[stacki];
13731           stacki--;
13732           break;
13733
13734         case DW_OP_plus_uconst:
13735           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
13736                                                  &bytes_read);
13737           i += bytes_read;
13738           break;
13739
13740         case DW_OP_minus:
13741           stack[stacki - 1] -= stack[stacki];
13742           stacki--;
13743           break;
13744
13745         case DW_OP_deref:
13746           /* If we're not the last op, then we definitely can't encode
13747              this using GDB's address_class enum.  This is valid for partial
13748              global symbols, although the variable's address will be bogus
13749              in the psymtab.  */
13750           if (i < size)
13751             dwarf2_complex_location_expr_complaint ();
13752           break;
13753
13754         case DW_OP_GNU_push_tls_address:
13755           /* The top of the stack has the offset from the beginning
13756              of the thread control block at which the variable is located.  */
13757           /* Nothing should follow this operator, so the top of stack would
13758              be returned.  */
13759           /* This is valid for partial global symbols, but the variable's
13760              address will be bogus in the psymtab.  */
13761           if (i < size)
13762             dwarf2_complex_location_expr_complaint ();
13763           break;
13764
13765         case DW_OP_GNU_uninit:
13766           break;
13767
13768         default:
13769           {
13770             const char *name = dwarf_stack_op_name (op);
13771
13772             if (name)
13773               complaint (&symfile_complaints, _("unsupported stack op: '%s'"),
13774                          name);
13775             else
13776               complaint (&symfile_complaints, _("unsupported stack op: '%02x'"),
13777                          op);
13778           }
13779
13780           return (stack[stacki]);
13781         }
13782
13783       /* Enforce maximum stack depth of SIZE-1 to avoid writing
13784          outside of the allocated space.  Also enforce minimum>0.  */
13785       if (stacki >= ARRAY_SIZE (stack) - 1)
13786         {
13787           complaint (&symfile_complaints,
13788                      _("location description stack overflow"));
13789           return 0;
13790         }
13791
13792       if (stacki <= 0)
13793         {
13794           complaint (&symfile_complaints,
13795                      _("location description stack underflow"));
13796           return 0;
13797         }
13798     }
13799   return (stack[stacki]);
13800 }
13801
13802 /* memory allocation interface */
13803
13804 static struct dwarf_block *
13805 dwarf_alloc_block (struct dwarf2_cu *cu)
13806 {
13807   struct dwarf_block *blk;
13808
13809   blk = (struct dwarf_block *)
13810     obstack_alloc (&cu->comp_unit_obstack, sizeof (struct dwarf_block));
13811   return (blk);
13812 }
13813
13814 static struct abbrev_info *
13815 dwarf_alloc_abbrev (struct dwarf2_cu *cu)
13816 {
13817   struct abbrev_info *abbrev;
13818
13819   abbrev = (struct abbrev_info *)
13820     obstack_alloc (&cu->abbrev_obstack, sizeof (struct abbrev_info));
13821   memset (abbrev, 0, sizeof (struct abbrev_info));
13822   return (abbrev);
13823 }
13824
13825 static struct die_info *
13826 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
13827 {
13828   struct die_info *die;
13829   size_t size = sizeof (struct die_info);
13830
13831   if (num_attrs > 1)
13832     size += (num_attrs - 1) * sizeof (struct attribute);
13833
13834   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
13835   memset (die, 0, sizeof (struct die_info));
13836   return (die);
13837 }
13838
13839 \f
13840 /* Macro support.  */
13841
13842 /* Return the full name of file number I in *LH's file name table.
13843    Use COMP_DIR as the name of the current directory of the
13844    compilation.  The result is allocated using xmalloc; the caller is
13845    responsible for freeing it.  */
13846 static char *
13847 file_full_name (int file, struct line_header *lh, const char *comp_dir)
13848 {
13849   /* Is the file number a valid index into the line header's file name
13850      table?  Remember that file numbers start with one, not zero.  */
13851   if (1 <= file && file <= lh->num_file_names)
13852     {
13853       struct file_entry *fe = &lh->file_names[file - 1];
13854
13855       if (IS_ABSOLUTE_PATH (fe->name))
13856         return xstrdup (fe->name);
13857       else
13858         {
13859           const char *dir;
13860           int dir_len;
13861           char *full_name;
13862
13863           if (fe->dir_index)
13864             dir = lh->include_dirs[fe->dir_index - 1];
13865           else
13866             dir = comp_dir;
13867
13868           if (dir)
13869             {
13870               dir_len = strlen (dir);
13871               full_name = xmalloc (dir_len + 1 + strlen (fe->name) + 1);
13872               strcpy (full_name, dir);
13873               full_name[dir_len] = '/';
13874               strcpy (full_name + dir_len + 1, fe->name);
13875               return full_name;
13876             }
13877           else
13878             return xstrdup (fe->name);
13879         }
13880     }
13881   else
13882     {
13883       /* The compiler produced a bogus file number.  We can at least
13884          record the macro definitions made in the file, even if we
13885          won't be able to find the file by name.  */
13886       char fake_name[80];
13887
13888       sprintf (fake_name, "<bad macro file number %d>", file);
13889
13890       complaint (&symfile_complaints,
13891                  _("bad file number in macro information (%d)"),
13892                  file);
13893
13894       return xstrdup (fake_name);
13895     }
13896 }
13897
13898
13899 static struct macro_source_file *
13900 macro_start_file (int file, int line,
13901                   struct macro_source_file *current_file,
13902                   const char *comp_dir,
13903                   struct line_header *lh, struct objfile *objfile)
13904 {
13905   /* The full name of this source file.  */
13906   char *full_name = file_full_name (file, lh, comp_dir);
13907
13908   /* We don't create a macro table for this compilation unit
13909      at all until we actually get a filename.  */
13910   if (! pending_macros)
13911     pending_macros = new_macro_table (&objfile->objfile_obstack,
13912                                       objfile->macro_cache);
13913
13914   if (! current_file)
13915     /* If we have no current file, then this must be the start_file
13916        directive for the compilation unit's main source file.  */
13917     current_file = macro_set_main (pending_macros, full_name);
13918   else
13919     current_file = macro_include (current_file, line, full_name);
13920
13921   xfree (full_name);
13922
13923   return current_file;
13924 }
13925
13926
13927 /* Copy the LEN characters at BUF to a xmalloc'ed block of memory,
13928    followed by a null byte.  */
13929 static char *
13930 copy_string (const char *buf, int len)
13931 {
13932   char *s = xmalloc (len + 1);
13933
13934   memcpy (s, buf, len);
13935   s[len] = '\0';
13936   return s;
13937 }
13938
13939
13940 static const char *
13941 consume_improper_spaces (const char *p, const char *body)
13942 {
13943   if (*p == ' ')
13944     {
13945       complaint (&symfile_complaints,
13946                  _("macro definition contains spaces "
13947                    "in formal argument list:\n`%s'"),
13948                  body);
13949
13950       while (*p == ' ')
13951         p++;
13952     }
13953
13954   return p;
13955 }
13956
13957
13958 static void
13959 parse_macro_definition (struct macro_source_file *file, int line,
13960                         const char *body)
13961 {
13962   const char *p;
13963
13964   /* The body string takes one of two forms.  For object-like macro
13965      definitions, it should be:
13966
13967         <macro name> " " <definition>
13968
13969      For function-like macro definitions, it should be:
13970
13971         <macro name> "() " <definition>
13972      or
13973         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
13974
13975      Spaces may appear only where explicitly indicated, and in the
13976      <definition>.
13977
13978      The Dwarf 2 spec says that an object-like macro's name is always
13979      followed by a space, but versions of GCC around March 2002 omit
13980      the space when the macro's definition is the empty string.
13981
13982      The Dwarf 2 spec says that there should be no spaces between the
13983      formal arguments in a function-like macro's formal argument list,
13984      but versions of GCC around March 2002 include spaces after the
13985      commas.  */
13986
13987
13988   /* Find the extent of the macro name.  The macro name is terminated
13989      by either a space or null character (for an object-like macro) or
13990      an opening paren (for a function-like macro).  */
13991   for (p = body; *p; p++)
13992     if (*p == ' ' || *p == '(')
13993       break;
13994
13995   if (*p == ' ' || *p == '\0')
13996     {
13997       /* It's an object-like macro.  */
13998       int name_len = p - body;
13999       char *name = copy_string (body, name_len);
14000       const char *replacement;
14001
14002       if (*p == ' ')
14003         replacement = body + name_len + 1;
14004       else
14005         {
14006           dwarf2_macro_malformed_definition_complaint (body);
14007           replacement = body + name_len;
14008         }
14009
14010       macro_define_object (file, line, name, replacement);
14011
14012       xfree (name);
14013     }
14014   else if (*p == '(')
14015     {
14016       /* It's a function-like macro.  */
14017       char *name = copy_string (body, p - body);
14018       int argc = 0;
14019       int argv_size = 1;
14020       char **argv = xmalloc (argv_size * sizeof (*argv));
14021
14022       p++;
14023
14024       p = consume_improper_spaces (p, body);
14025
14026       /* Parse the formal argument list.  */
14027       while (*p && *p != ')')
14028         {
14029           /* Find the extent of the current argument name.  */
14030           const char *arg_start = p;
14031
14032           while (*p && *p != ',' && *p != ')' && *p != ' ')
14033             p++;
14034
14035           if (! *p || p == arg_start)
14036             dwarf2_macro_malformed_definition_complaint (body);
14037           else
14038             {
14039               /* Make sure argv has room for the new argument.  */
14040               if (argc >= argv_size)
14041                 {
14042                   argv_size *= 2;
14043                   argv = xrealloc (argv, argv_size * sizeof (*argv));
14044                 }
14045
14046               argv[argc++] = copy_string (arg_start, p - arg_start);
14047             }
14048
14049           p = consume_improper_spaces (p, body);
14050
14051           /* Consume the comma, if present.  */
14052           if (*p == ',')
14053             {
14054               p++;
14055
14056               p = consume_improper_spaces (p, body);
14057             }
14058         }
14059
14060       if (*p == ')')
14061         {
14062           p++;
14063
14064           if (*p == ' ')
14065             /* Perfectly formed definition, no complaints.  */
14066             macro_define_function (file, line, name,
14067                                    argc, (const char **) argv,
14068                                    p + 1);
14069           else if (*p == '\0')
14070             {
14071               /* Complain, but do define it.  */
14072               dwarf2_macro_malformed_definition_complaint (body);
14073               macro_define_function (file, line, name,
14074                                      argc, (const char **) argv,
14075                                      p);
14076             }
14077           else
14078             /* Just complain.  */
14079             dwarf2_macro_malformed_definition_complaint (body);
14080         }
14081       else
14082         /* Just complain.  */
14083         dwarf2_macro_malformed_definition_complaint (body);
14084
14085       xfree (name);
14086       {
14087         int i;
14088
14089         for (i = 0; i < argc; i++)
14090           xfree (argv[i]);
14091       }
14092       xfree (argv);
14093     }
14094   else
14095     dwarf2_macro_malformed_definition_complaint (body);
14096 }
14097
14098
14099 static void
14100 dwarf_decode_macros (struct line_header *lh, unsigned int offset,
14101                      char *comp_dir, bfd *abfd,
14102                      struct dwarf2_cu *cu)
14103 {
14104   gdb_byte *mac_ptr, *mac_end;
14105   struct macro_source_file *current_file = 0;
14106   enum dwarf_macinfo_record_type macinfo_type;
14107   int at_commandline;
14108
14109   dwarf2_read_section (dwarf2_per_objfile->objfile,
14110                        &dwarf2_per_objfile->macinfo);
14111   if (dwarf2_per_objfile->macinfo.buffer == NULL)
14112     {
14113       complaint (&symfile_complaints, _("missing .debug_macinfo section"));
14114       return;
14115     }
14116
14117   /* First pass: Find the name of the base filename.
14118      This filename is needed in order to process all macros whose definition
14119      (or undefinition) comes from the command line.  These macros are defined
14120      before the first DW_MACINFO_start_file entry, and yet still need to be
14121      associated to the base file.
14122
14123      To determine the base file name, we scan the macro definitions until we
14124      reach the first DW_MACINFO_start_file entry.  We then initialize
14125      CURRENT_FILE accordingly so that any macro definition found before the
14126      first DW_MACINFO_start_file can still be associated to the base file.  */
14127
14128   mac_ptr = dwarf2_per_objfile->macinfo.buffer + offset;
14129   mac_end = dwarf2_per_objfile->macinfo.buffer
14130     + dwarf2_per_objfile->macinfo.size;
14131
14132   do
14133     {
14134       /* Do we at least have room for a macinfo type byte?  */
14135       if (mac_ptr >= mac_end)
14136         {
14137           /* Complaint is printed during the second pass as GDB will probably
14138              stop the first pass earlier upon finding
14139              DW_MACINFO_start_file.  */
14140           break;
14141         }
14142
14143       macinfo_type = read_1_byte (abfd, mac_ptr);
14144       mac_ptr++;
14145
14146       switch (macinfo_type)
14147         {
14148           /* A zero macinfo type indicates the end of the macro
14149              information.  */
14150         case 0:
14151           break;
14152
14153         case DW_MACINFO_define:
14154         case DW_MACINFO_undef:
14155           /* Only skip the data by MAC_PTR.  */
14156           {
14157             unsigned int bytes_read;
14158
14159             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
14160             mac_ptr += bytes_read;
14161             read_direct_string (abfd, mac_ptr, &bytes_read);
14162             mac_ptr += bytes_read;
14163           }
14164           break;
14165
14166         case DW_MACINFO_start_file:
14167           {
14168             unsigned int bytes_read;
14169             int line, file;
14170
14171             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
14172             mac_ptr += bytes_read;
14173             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
14174             mac_ptr += bytes_read;
14175
14176             current_file = macro_start_file (file, line, current_file,
14177                                              comp_dir, lh, cu->objfile);
14178           }
14179           break;
14180
14181         case DW_MACINFO_end_file:
14182           /* No data to skip by MAC_PTR.  */
14183           break;
14184
14185         case DW_MACINFO_vendor_ext:
14186           /* Only skip the data by MAC_PTR.  */
14187           {
14188             unsigned int bytes_read;
14189
14190             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
14191             mac_ptr += bytes_read;
14192             read_direct_string (abfd, mac_ptr, &bytes_read);
14193             mac_ptr += bytes_read;
14194           }
14195           break;
14196
14197         default:
14198           break;
14199         }
14200     } while (macinfo_type != 0 && current_file == NULL);
14201
14202   /* Second pass: Process all entries.
14203
14204      Use the AT_COMMAND_LINE flag to determine whether we are still processing
14205      command-line macro definitions/undefinitions.  This flag is unset when we
14206      reach the first DW_MACINFO_start_file entry.  */
14207
14208   mac_ptr = dwarf2_per_objfile->macinfo.buffer + offset;
14209
14210   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
14211      GDB is still reading the definitions from command line.  First
14212      DW_MACINFO_start_file will need to be ignored as it was already executed
14213      to create CURRENT_FILE for the main source holding also the command line
14214      definitions.  On first met DW_MACINFO_start_file this flag is reset to
14215      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
14216
14217   at_commandline = 1;
14218
14219   do
14220     {
14221       /* Do we at least have room for a macinfo type byte?  */
14222       if (mac_ptr >= mac_end)
14223         {
14224           dwarf2_macros_too_long_complaint ();
14225           break;
14226         }
14227
14228       macinfo_type = read_1_byte (abfd, mac_ptr);
14229       mac_ptr++;
14230
14231       switch (macinfo_type)
14232         {
14233           /* A zero macinfo type indicates the end of the macro
14234              information.  */
14235         case 0:
14236           break;
14237
14238         case DW_MACINFO_define:
14239         case DW_MACINFO_undef:
14240           {
14241             unsigned int bytes_read;
14242             int line;
14243             char *body;
14244
14245             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
14246             mac_ptr += bytes_read;
14247             body = read_direct_string (abfd, mac_ptr, &bytes_read);
14248             mac_ptr += bytes_read;
14249
14250             if (! current_file)
14251               {
14252                 /* DWARF violation as no main source is present.  */
14253                 complaint (&symfile_complaints,
14254                            _("debug info with no main source gives macro %s "
14255                              "on line %d: %s"),
14256                            macinfo_type == DW_MACINFO_define ?
14257                              _("definition") :
14258                                macinfo_type == DW_MACINFO_undef ?
14259                                  _("undefinition") :
14260                                  _("something-or-other"), line, body);
14261                 break;
14262               }
14263             if ((line == 0 && !at_commandline)
14264                 || (line != 0 && at_commandline))
14265               complaint (&symfile_complaints,
14266                          _("debug info gives %s macro %s with %s line %d: %s"),
14267                          at_commandline ? _("command-line") : _("in-file"),
14268                          macinfo_type == DW_MACINFO_define ?
14269                            _("definition") :
14270                              macinfo_type == DW_MACINFO_undef ?
14271                                _("undefinition") :
14272                                _("something-or-other"),
14273                          line == 0 ? _("zero") : _("non-zero"), line, body);
14274
14275             if (macinfo_type == DW_MACINFO_define)
14276               parse_macro_definition (current_file, line, body);
14277             else if (macinfo_type == DW_MACINFO_undef)
14278               macro_undef (current_file, line, body);
14279           }
14280           break;
14281
14282         case DW_MACINFO_start_file:
14283           {
14284             unsigned int bytes_read;
14285             int line, file;
14286
14287             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
14288             mac_ptr += bytes_read;
14289             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
14290             mac_ptr += bytes_read;
14291
14292             if ((line == 0 && !at_commandline)
14293                 || (line != 0 && at_commandline))
14294               complaint (&symfile_complaints,
14295                          _("debug info gives source %d included "
14296                            "from %s at %s line %d"),
14297                          file, at_commandline ? _("command-line") : _("file"),
14298                          line == 0 ? _("zero") : _("non-zero"), line);
14299
14300             if (at_commandline)
14301               {
14302                 /* This DW_MACINFO_start_file was executed in the pass one.  */
14303                 at_commandline = 0;
14304               }
14305             else
14306               current_file = macro_start_file (file, line,
14307                                                current_file, comp_dir,
14308                                                lh, cu->objfile);
14309           }
14310           break;
14311
14312         case DW_MACINFO_end_file:
14313           if (! current_file)
14314             complaint (&symfile_complaints,
14315                        _("macro debug info has an unmatched "
14316                          "`close_file' directive"));
14317           else
14318             {
14319               current_file = current_file->included_by;
14320               if (! current_file)
14321                 {
14322                   enum dwarf_macinfo_record_type next_type;
14323
14324                   /* GCC circa March 2002 doesn't produce the zero
14325                      type byte marking the end of the compilation
14326                      unit.  Complain if it's not there, but exit no
14327                      matter what.  */
14328
14329                   /* Do we at least have room for a macinfo type byte?  */
14330                   if (mac_ptr >= mac_end)
14331                     {
14332                       dwarf2_macros_too_long_complaint ();
14333                       return;
14334                     }
14335
14336                   /* We don't increment mac_ptr here, so this is just
14337                      a look-ahead.  */
14338                   next_type = read_1_byte (abfd, mac_ptr);
14339                   if (next_type != 0)
14340                     complaint (&symfile_complaints,
14341                                _("no terminating 0-type entry for "
14342                                  "macros in `.debug_macinfo' section"));
14343
14344                   return;
14345                 }
14346             }
14347           break;
14348
14349         case DW_MACINFO_vendor_ext:
14350           {
14351             unsigned int bytes_read;
14352             int constant;
14353
14354             constant = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
14355             mac_ptr += bytes_read;
14356             read_direct_string (abfd, mac_ptr, &bytes_read);
14357             mac_ptr += bytes_read;
14358
14359             /* We don't recognize any vendor extensions.  */
14360           }
14361           break;
14362         }
14363     } while (macinfo_type != 0);
14364 }
14365
14366 /* Check if the attribute's form is a DW_FORM_block*
14367    if so return true else false.  */
14368 static int
14369 attr_form_is_block (struct attribute *attr)
14370 {
14371   return (attr == NULL ? 0 :
14372       attr->form == DW_FORM_block1
14373       || attr->form == DW_FORM_block2
14374       || attr->form == DW_FORM_block4
14375       || attr->form == DW_FORM_block
14376       || attr->form == DW_FORM_exprloc);
14377 }
14378
14379 /* Return non-zero if ATTR's value is a section offset --- classes
14380    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
14381    You may use DW_UNSND (attr) to retrieve such offsets.
14382
14383    Section 7.5.4, "Attribute Encodings", explains that no attribute
14384    may have a value that belongs to more than one of these classes; it
14385    would be ambiguous if we did, because we use the same forms for all
14386    of them.  */
14387 static int
14388 attr_form_is_section_offset (struct attribute *attr)
14389 {
14390   return (attr->form == DW_FORM_data4
14391           || attr->form == DW_FORM_data8
14392           || attr->form == DW_FORM_sec_offset);
14393 }
14394
14395
14396 /* Return non-zero if ATTR's value falls in the 'constant' class, or
14397    zero otherwise.  When this function returns true, you can apply
14398    dwarf2_get_attr_constant_value to it.
14399
14400    However, note that for some attributes you must check
14401    attr_form_is_section_offset before using this test.  DW_FORM_data4
14402    and DW_FORM_data8 are members of both the constant class, and of
14403    the classes that contain offsets into other debug sections
14404    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
14405    that, if an attribute's can be either a constant or one of the
14406    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
14407    taken as section offsets, not constants.  */
14408 static int
14409 attr_form_is_constant (struct attribute *attr)
14410 {
14411   switch (attr->form)
14412     {
14413     case DW_FORM_sdata:
14414     case DW_FORM_udata:
14415     case DW_FORM_data1:
14416     case DW_FORM_data2:
14417     case DW_FORM_data4:
14418     case DW_FORM_data8:
14419       return 1;
14420     default:
14421       return 0;
14422     }
14423 }
14424
14425 /* A helper function that fills in a dwarf2_loclist_baton.  */
14426
14427 static void
14428 fill_in_loclist_baton (struct dwarf2_cu *cu,
14429                        struct dwarf2_loclist_baton *baton,
14430                        struct attribute *attr)
14431 {
14432   dwarf2_read_section (dwarf2_per_objfile->objfile,
14433                        &dwarf2_per_objfile->loc);
14434
14435   baton->per_cu = cu->per_cu;
14436   gdb_assert (baton->per_cu);
14437   /* We don't know how long the location list is, but make sure we
14438      don't run off the edge of the section.  */
14439   baton->size = dwarf2_per_objfile->loc.size - DW_UNSND (attr);
14440   baton->data = dwarf2_per_objfile->loc.buffer + DW_UNSND (attr);
14441   baton->base_address = cu->base_address;
14442 }
14443
14444 static void
14445 dwarf2_symbol_mark_computed (struct attribute *attr, struct symbol *sym,
14446                              struct dwarf2_cu *cu)
14447 {
14448   if (attr_form_is_section_offset (attr)
14449       /* ".debug_loc" may not exist at all, or the offset may be outside
14450          the section.  If so, fall through to the complaint in the
14451          other branch.  */
14452       && DW_UNSND (attr) < dwarf2_section_size (dwarf2_per_objfile->objfile,
14453                                                 &dwarf2_per_objfile->loc))
14454     {
14455       struct dwarf2_loclist_baton *baton;
14456
14457       baton = obstack_alloc (&cu->objfile->objfile_obstack,
14458                              sizeof (struct dwarf2_loclist_baton));
14459
14460       fill_in_loclist_baton (cu, baton, attr);
14461
14462       if (cu->base_known == 0)
14463         complaint (&symfile_complaints,
14464                    _("Location list used without "
14465                      "specifying the CU base address."));
14466
14467       SYMBOL_COMPUTED_OPS (sym) = &dwarf2_loclist_funcs;
14468       SYMBOL_LOCATION_BATON (sym) = baton;
14469     }
14470   else
14471     {
14472       struct dwarf2_locexpr_baton *baton;
14473
14474       baton = obstack_alloc (&cu->objfile->objfile_obstack,
14475                              sizeof (struct dwarf2_locexpr_baton));
14476       baton->per_cu = cu->per_cu;
14477       gdb_assert (baton->per_cu);
14478
14479       if (attr_form_is_block (attr))
14480         {
14481           /* Note that we're just copying the block's data pointer
14482              here, not the actual data.  We're still pointing into the
14483              info_buffer for SYM's objfile; right now we never release
14484              that buffer, but when we do clean up properly this may
14485              need to change.  */
14486           baton->size = DW_BLOCK (attr)->size;
14487           baton->data = DW_BLOCK (attr)->data;
14488         }
14489       else
14490         {
14491           dwarf2_invalid_attrib_class_complaint ("location description",
14492                                                  SYMBOL_NATURAL_NAME (sym));
14493           baton->size = 0;
14494           baton->data = NULL;
14495         }
14496
14497       SYMBOL_COMPUTED_OPS (sym) = &dwarf2_locexpr_funcs;
14498       SYMBOL_LOCATION_BATON (sym) = baton;
14499     }
14500 }
14501
14502 /* Return the OBJFILE associated with the compilation unit CU.  If CU
14503    came from a separate debuginfo file, then the master objfile is
14504    returned.  */
14505
14506 struct objfile *
14507 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
14508 {
14509   struct objfile *objfile = per_cu->objfile;
14510
14511   /* Return the master objfile, so that we can report and look up the
14512      correct file containing this variable.  */
14513   if (objfile->separate_debug_objfile_backlink)
14514     objfile = objfile->separate_debug_objfile_backlink;
14515
14516   return objfile;
14517 }
14518
14519 /* Return the address size given in the compilation unit header for CU.  */
14520
14521 CORE_ADDR
14522 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
14523 {
14524   if (per_cu->cu)
14525     return per_cu->cu->header.addr_size;
14526   else
14527     {
14528       /* If the CU is not currently read in, we re-read its header.  */
14529       struct objfile *objfile = per_cu->objfile;
14530       struct dwarf2_per_objfile *per_objfile
14531         = objfile_data (objfile, dwarf2_objfile_data_key);
14532       gdb_byte *info_ptr = per_objfile->info.buffer + per_cu->offset;
14533       struct comp_unit_head cu_header;
14534
14535       memset (&cu_header, 0, sizeof cu_header);
14536       read_comp_unit_head (&cu_header, info_ptr, objfile->obfd);
14537       return cu_header.addr_size;
14538     }
14539 }
14540
14541 /* Return the offset size given in the compilation unit header for CU.  */
14542
14543 int
14544 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
14545 {
14546   if (per_cu->cu)
14547     return per_cu->cu->header.offset_size;
14548   else
14549     {
14550       /* If the CU is not currently read in, we re-read its header.  */
14551       struct objfile *objfile = per_cu->objfile;
14552       struct dwarf2_per_objfile *per_objfile
14553         = objfile_data (objfile, dwarf2_objfile_data_key);
14554       gdb_byte *info_ptr = per_objfile->info.buffer + per_cu->offset;
14555       struct comp_unit_head cu_header;
14556
14557       memset (&cu_header, 0, sizeof cu_header);
14558       read_comp_unit_head (&cu_header, info_ptr, objfile->obfd);
14559       return cu_header.offset_size;
14560     }
14561 }
14562
14563 /* Return the text offset of the CU.  The returned offset comes from
14564    this CU's objfile.  If this objfile came from a separate debuginfo
14565    file, then the offset may be different from the corresponding
14566    offset in the parent objfile.  */
14567
14568 CORE_ADDR
14569 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
14570 {
14571   struct objfile *objfile = per_cu->objfile;
14572
14573   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14574 }
14575
14576 /* Locate the .debug_info compilation unit from CU's objfile which contains
14577    the DIE at OFFSET.  Raises an error on failure.  */
14578
14579 static struct dwarf2_per_cu_data *
14580 dwarf2_find_containing_comp_unit (unsigned int offset,
14581                                   struct objfile *objfile)
14582 {
14583   struct dwarf2_per_cu_data *this_cu;
14584   int low, high;
14585
14586   low = 0;
14587   high = dwarf2_per_objfile->n_comp_units - 1;
14588   while (high > low)
14589     {
14590       int mid = low + (high - low) / 2;
14591
14592       if (dwarf2_per_objfile->all_comp_units[mid]->offset >= offset)
14593         high = mid;
14594       else
14595         low = mid + 1;
14596     }
14597   gdb_assert (low == high);
14598   if (dwarf2_per_objfile->all_comp_units[low]->offset > offset)
14599     {
14600       if (low == 0)
14601         error (_("Dwarf Error: could not find partial DIE containing "
14602                "offset 0x%lx [in module %s]"),
14603                (long) offset, bfd_get_filename (objfile->obfd));
14604
14605       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->offset <= offset);
14606       return dwarf2_per_objfile->all_comp_units[low-1];
14607     }
14608   else
14609     {
14610       this_cu = dwarf2_per_objfile->all_comp_units[low];
14611       if (low == dwarf2_per_objfile->n_comp_units - 1
14612           && offset >= this_cu->offset + this_cu->length)
14613         error (_("invalid dwarf2 offset %u"), offset);
14614       gdb_assert (offset < this_cu->offset + this_cu->length);
14615       return this_cu;
14616     }
14617 }
14618
14619 /* Locate the compilation unit from OBJFILE which is located at exactly
14620    OFFSET.  Raises an error on failure.  */
14621
14622 static struct dwarf2_per_cu_data *
14623 dwarf2_find_comp_unit (unsigned int offset, struct objfile *objfile)
14624 {
14625   struct dwarf2_per_cu_data *this_cu;
14626
14627   this_cu = dwarf2_find_containing_comp_unit (offset, objfile);
14628   if (this_cu->offset != offset)
14629     error (_("no compilation unit with offset %u."), offset);
14630   return this_cu;
14631 }
14632
14633 /* Initialize dwarf2_cu CU for OBJFILE in a pre-allocated space.  */
14634
14635 static void
14636 init_one_comp_unit (struct dwarf2_cu *cu, struct objfile *objfile)
14637 {
14638   memset (cu, 0, sizeof (*cu));
14639   cu->objfile = objfile;
14640   obstack_init (&cu->comp_unit_obstack);
14641 }
14642
14643 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
14644
14645 static void
14646 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die)
14647 {
14648   struct attribute *attr;
14649
14650   /* Set the language we're debugging.  */
14651   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
14652   if (attr)
14653     set_cu_language (DW_UNSND (attr), cu);
14654   else
14655     set_cu_language (language_minimal, cu);
14656 }
14657
14658 /* Release one cached compilation unit, CU.  We unlink it from the tree
14659    of compilation units, but we don't remove it from the read_in_chain;
14660    the caller is responsible for that.
14661    NOTE: DATA is a void * because this function is also used as a
14662    cleanup routine.  */
14663
14664 static void
14665 free_one_comp_unit (void *data)
14666 {
14667   struct dwarf2_cu *cu = data;
14668
14669   if (cu->per_cu != NULL)
14670     cu->per_cu->cu = NULL;
14671   cu->per_cu = NULL;
14672
14673   obstack_free (&cu->comp_unit_obstack, NULL);
14674
14675   xfree (cu);
14676 }
14677
14678 /* This cleanup function is passed the address of a dwarf2_cu on the stack
14679    when we're finished with it.  We can't free the pointer itself, but be
14680    sure to unlink it from the cache.  Also release any associated storage
14681    and perform cache maintenance.
14682
14683    Only used during partial symbol parsing.  */
14684
14685 static void
14686 free_stack_comp_unit (void *data)
14687 {
14688   struct dwarf2_cu *cu = data;
14689
14690   obstack_free (&cu->comp_unit_obstack, NULL);
14691   cu->partial_dies = NULL;
14692
14693   if (cu->per_cu != NULL)
14694     {
14695       /* This compilation unit is on the stack in our caller, so we
14696          should not xfree it.  Just unlink it.  */
14697       cu->per_cu->cu = NULL;
14698       cu->per_cu = NULL;
14699
14700       /* If we had a per-cu pointer, then we may have other compilation
14701          units loaded, so age them now.  */
14702       age_cached_comp_units ();
14703     }
14704 }
14705
14706 /* Free all cached compilation units.  */
14707
14708 static void
14709 free_cached_comp_units (void *data)
14710 {
14711   struct dwarf2_per_cu_data *per_cu, **last_chain;
14712
14713   per_cu = dwarf2_per_objfile->read_in_chain;
14714   last_chain = &dwarf2_per_objfile->read_in_chain;
14715   while (per_cu != NULL)
14716     {
14717       struct dwarf2_per_cu_data *next_cu;
14718
14719       next_cu = per_cu->cu->read_in_chain;
14720
14721       free_one_comp_unit (per_cu->cu);
14722       *last_chain = next_cu;
14723
14724       per_cu = next_cu;
14725     }
14726 }
14727
14728 /* Increase the age counter on each cached compilation unit, and free
14729    any that are too old.  */
14730
14731 static void
14732 age_cached_comp_units (void)
14733 {
14734   struct dwarf2_per_cu_data *per_cu, **last_chain;
14735
14736   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
14737   per_cu = dwarf2_per_objfile->read_in_chain;
14738   while (per_cu != NULL)
14739     {
14740       per_cu->cu->last_used ++;
14741       if (per_cu->cu->last_used <= dwarf2_max_cache_age)
14742         dwarf2_mark (per_cu->cu);
14743       per_cu = per_cu->cu->read_in_chain;
14744     }
14745
14746   per_cu = dwarf2_per_objfile->read_in_chain;
14747   last_chain = &dwarf2_per_objfile->read_in_chain;
14748   while (per_cu != NULL)
14749     {
14750       struct dwarf2_per_cu_data *next_cu;
14751
14752       next_cu = per_cu->cu->read_in_chain;
14753
14754       if (!per_cu->cu->mark)
14755         {
14756           free_one_comp_unit (per_cu->cu);
14757           *last_chain = next_cu;
14758         }
14759       else
14760         last_chain = &per_cu->cu->read_in_chain;
14761
14762       per_cu = next_cu;
14763     }
14764 }
14765
14766 /* Remove a single compilation unit from the cache.  */
14767
14768 static void
14769 free_one_cached_comp_unit (void *target_cu)
14770 {
14771   struct dwarf2_per_cu_data *per_cu, **last_chain;
14772
14773   per_cu = dwarf2_per_objfile->read_in_chain;
14774   last_chain = &dwarf2_per_objfile->read_in_chain;
14775   while (per_cu != NULL)
14776     {
14777       struct dwarf2_per_cu_data *next_cu;
14778
14779       next_cu = per_cu->cu->read_in_chain;
14780
14781       if (per_cu->cu == target_cu)
14782         {
14783           free_one_comp_unit (per_cu->cu);
14784           *last_chain = next_cu;
14785           break;
14786         }
14787       else
14788         last_chain = &per_cu->cu->read_in_chain;
14789
14790       per_cu = next_cu;
14791     }
14792 }
14793
14794 /* Release all extra memory associated with OBJFILE.  */
14795
14796 void
14797 dwarf2_free_objfile (struct objfile *objfile)
14798 {
14799   dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
14800
14801   if (dwarf2_per_objfile == NULL)
14802     return;
14803
14804   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
14805   free_cached_comp_units (NULL);
14806
14807   if (dwarf2_per_objfile->quick_file_names_table)
14808     htab_delete (dwarf2_per_objfile->quick_file_names_table);
14809
14810   /* Everything else should be on the objfile obstack.  */
14811 }
14812
14813 /* A pair of DIE offset and GDB type pointer.  We store these
14814    in a hash table separate from the DIEs, and preserve them
14815    when the DIEs are flushed out of cache.  */
14816
14817 struct dwarf2_offset_and_type
14818 {
14819   unsigned int offset;
14820   struct type *type;
14821 };
14822
14823 /* Hash function for a dwarf2_offset_and_type.  */
14824
14825 static hashval_t
14826 offset_and_type_hash (const void *item)
14827 {
14828   const struct dwarf2_offset_and_type *ofs = item;
14829
14830   return ofs->offset;
14831 }
14832
14833 /* Equality function for a dwarf2_offset_and_type.  */
14834
14835 static int
14836 offset_and_type_eq (const void *item_lhs, const void *item_rhs)
14837 {
14838   const struct dwarf2_offset_and_type *ofs_lhs = item_lhs;
14839   const struct dwarf2_offset_and_type *ofs_rhs = item_rhs;
14840
14841   return ofs_lhs->offset == ofs_rhs->offset;
14842 }
14843
14844 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
14845    table if necessary.  For convenience, return TYPE.
14846
14847    The DIEs reading must have careful ordering to:
14848     * Not cause infite loops trying to read in DIEs as a prerequisite for
14849       reading current DIE.
14850     * Not trying to dereference contents of still incompletely read in types
14851       while reading in other DIEs.
14852     * Enable referencing still incompletely read in types just by a pointer to
14853       the type without accessing its fields.
14854
14855    Therefore caller should follow these rules:
14856      * Try to fetch any prerequisite types we may need to build this DIE type
14857        before building the type and calling set_die_type.
14858      * After building type call set_die_type for current DIE as soon as
14859        possible before fetching more types to complete the current type.
14860      * Make the type as complete as possible before fetching more types.  */
14861
14862 static struct type *
14863 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
14864 {
14865   struct dwarf2_offset_and_type **slot, ofs;
14866   struct objfile *objfile = cu->objfile;
14867   htab_t *type_hash_ptr;
14868
14869   /* For Ada types, make sure that the gnat-specific data is always
14870      initialized (if not already set).  There are a few types where
14871      we should not be doing so, because the type-specific area is
14872      already used to hold some other piece of info (eg: TYPE_CODE_FLT
14873      where the type-specific area is used to store the floatformat).
14874      But this is not a problem, because the gnat-specific information
14875      is actually not needed for these types.  */
14876   if (need_gnat_info (cu)
14877       && TYPE_CODE (type) != TYPE_CODE_FUNC
14878       && TYPE_CODE (type) != TYPE_CODE_FLT
14879       && !HAVE_GNAT_AUX_INFO (type))
14880     INIT_GNAT_SPECIFIC (type);
14881
14882   if (cu->per_cu->from_debug_types)
14883     type_hash_ptr = &dwarf2_per_objfile->debug_types_type_hash;
14884   else
14885     type_hash_ptr = &dwarf2_per_objfile->debug_info_type_hash;
14886
14887   if (*type_hash_ptr == NULL)
14888     {
14889       *type_hash_ptr
14890         = htab_create_alloc_ex (127,
14891                                 offset_and_type_hash,
14892                                 offset_and_type_eq,
14893                                 NULL,
14894                                 &objfile->objfile_obstack,
14895                                 hashtab_obstack_allocate,
14896                                 dummy_obstack_deallocate);
14897     }
14898
14899   ofs.offset = die->offset;
14900   ofs.type = type;
14901   slot = (struct dwarf2_offset_and_type **)
14902     htab_find_slot_with_hash (*type_hash_ptr, &ofs, ofs.offset, INSERT);
14903   if (*slot)
14904     complaint (&symfile_complaints,
14905                _("A problem internal to GDB: DIE 0x%x has type already set"),
14906                die->offset);
14907   *slot = obstack_alloc (&objfile->objfile_obstack, sizeof (**slot));
14908   **slot = ofs;
14909   return type;
14910 }
14911
14912 /* Look up the type for the die at DIE_OFFSET in the appropriate type_hash
14913    table, or return NULL if the die does not have a saved type.  */
14914
14915 static struct type *
14916 get_die_type_at_offset (unsigned int offset,
14917                         struct dwarf2_per_cu_data *per_cu)
14918 {
14919   struct dwarf2_offset_and_type *slot, ofs;
14920   htab_t type_hash;
14921
14922   if (per_cu->from_debug_types)
14923     type_hash = dwarf2_per_objfile->debug_types_type_hash;
14924   else
14925     type_hash = dwarf2_per_objfile->debug_info_type_hash;
14926   if (type_hash == NULL)
14927     return NULL;
14928
14929   ofs.offset = offset;
14930   slot = htab_find_with_hash (type_hash, &ofs, ofs.offset);
14931   if (slot)
14932     return slot->type;
14933   else
14934     return NULL;
14935 }
14936
14937 /* Look up the type for DIE in the appropriate type_hash table,
14938    or return NULL if DIE does not have a saved type.  */
14939
14940 static struct type *
14941 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
14942 {
14943   return get_die_type_at_offset (die->offset, cu->per_cu);
14944 }
14945
14946 /* Add a dependence relationship from CU to REF_PER_CU.  */
14947
14948 static void
14949 dwarf2_add_dependence (struct dwarf2_cu *cu,
14950                        struct dwarf2_per_cu_data *ref_per_cu)
14951 {
14952   void **slot;
14953
14954   if (cu->dependencies == NULL)
14955     cu->dependencies
14956       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
14957                               NULL, &cu->comp_unit_obstack,
14958                               hashtab_obstack_allocate,
14959                               dummy_obstack_deallocate);
14960
14961   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
14962   if (*slot == NULL)
14963     *slot = ref_per_cu;
14964 }
14965
14966 /* Subroutine of dwarf2_mark to pass to htab_traverse.
14967    Set the mark field in every compilation unit in the
14968    cache that we must keep because we are keeping CU.  */
14969
14970 static int
14971 dwarf2_mark_helper (void **slot, void *data)
14972 {
14973   struct dwarf2_per_cu_data *per_cu;
14974
14975   per_cu = (struct dwarf2_per_cu_data *) *slot;
14976   if (per_cu->cu->mark)
14977     return 1;
14978   per_cu->cu->mark = 1;
14979
14980   if (per_cu->cu->dependencies != NULL)
14981     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
14982
14983   return 1;
14984 }
14985
14986 /* Set the mark field in CU and in every other compilation unit in the
14987    cache that we must keep because we are keeping CU.  */
14988
14989 static void
14990 dwarf2_mark (struct dwarf2_cu *cu)
14991 {
14992   if (cu->mark)
14993     return;
14994   cu->mark = 1;
14995   if (cu->dependencies != NULL)
14996     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
14997 }
14998
14999 static void
15000 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
15001 {
15002   while (per_cu)
15003     {
15004       per_cu->cu->mark = 0;
15005       per_cu = per_cu->cu->read_in_chain;
15006     }
15007 }
15008
15009 /* Trivial hash function for partial_die_info: the hash value of a DIE
15010    is its offset in .debug_info for this objfile.  */
15011
15012 static hashval_t
15013 partial_die_hash (const void *item)
15014 {
15015   const struct partial_die_info *part_die = item;
15016
15017   return part_die->offset;
15018 }
15019
15020 /* Trivial comparison function for partial_die_info structures: two DIEs
15021    are equal if they have the same offset.  */
15022
15023 static int
15024 partial_die_eq (const void *item_lhs, const void *item_rhs)
15025 {
15026   const struct partial_die_info *part_die_lhs = item_lhs;
15027   const struct partial_die_info *part_die_rhs = item_rhs;
15028
15029   return part_die_lhs->offset == part_die_rhs->offset;
15030 }
15031
15032 static struct cmd_list_element *set_dwarf2_cmdlist;
15033 static struct cmd_list_element *show_dwarf2_cmdlist;
15034
15035 static void
15036 set_dwarf2_cmd (char *args, int from_tty)
15037 {
15038   help_list (set_dwarf2_cmdlist, "maintenance set dwarf2 ", -1, gdb_stdout);
15039 }
15040
15041 static void
15042 show_dwarf2_cmd (char *args, int from_tty)
15043 {
15044   cmd_show_list (show_dwarf2_cmdlist, from_tty, "");
15045 }
15046
15047 /* If section described by INFO was mmapped, munmap it now.  */
15048
15049 static void
15050 munmap_section_buffer (struct dwarf2_section_info *info)
15051 {
15052   if (info->was_mmapped)
15053     {
15054 #ifdef HAVE_MMAP
15055       intptr_t begin = (intptr_t) info->buffer;
15056       intptr_t map_begin = begin & ~(pagesize - 1);
15057       size_t map_length = info->size + begin - map_begin;
15058
15059       gdb_assert (munmap ((void *) map_begin, map_length) == 0);
15060 #else
15061       /* Without HAVE_MMAP, we should never be here to begin with.  */
15062       gdb_assert_not_reached ("no mmap support");
15063 #endif
15064     }
15065 }
15066
15067 /* munmap debug sections for OBJFILE, if necessary.  */
15068
15069 static void
15070 dwarf2_per_objfile_free (struct objfile *objfile, void *d)
15071 {
15072   struct dwarf2_per_objfile *data = d;
15073
15074   /* This is sorted according to the order they're defined in to make it easier
15075      to keep in sync.  */
15076   munmap_section_buffer (&data->info);
15077   munmap_section_buffer (&data->abbrev);
15078   munmap_section_buffer (&data->line);
15079   munmap_section_buffer (&data->loc);
15080   munmap_section_buffer (&data->macinfo);
15081   munmap_section_buffer (&data->str);
15082   munmap_section_buffer (&data->ranges);
15083   munmap_section_buffer (&data->types);
15084   munmap_section_buffer (&data->frame);
15085   munmap_section_buffer (&data->eh_frame);
15086   munmap_section_buffer (&data->gdb_index);
15087 }
15088
15089 \f
15090 /* The "save gdb-index" command.  */
15091
15092 /* The contents of the hash table we create when building the string
15093    table.  */
15094 struct strtab_entry
15095 {
15096   offset_type offset;
15097   const char *str;
15098 };
15099
15100 /* Hash function for a strtab_entry.  */
15101
15102 static hashval_t
15103 hash_strtab_entry (const void *e)
15104 {
15105   const struct strtab_entry *entry = e;
15106   return mapped_index_string_hash (entry->str);
15107 }
15108
15109 /* Equality function for a strtab_entry.  */
15110
15111 static int
15112 eq_strtab_entry (const void *a, const void *b)
15113 {
15114   const struct strtab_entry *ea = a;
15115   const struct strtab_entry *eb = b;
15116   return !strcmp (ea->str, eb->str);
15117 }
15118
15119 /* Create a strtab_entry hash table.  */
15120
15121 static htab_t
15122 create_strtab (void)
15123 {
15124   return htab_create_alloc (100, hash_strtab_entry, eq_strtab_entry,
15125                             xfree, xcalloc, xfree);
15126 }
15127
15128 /* Add a string to the constant pool.  Return the string's offset in
15129    host order.  */
15130
15131 static offset_type
15132 add_string (htab_t table, struct obstack *cpool, const char *str)
15133 {
15134   void **slot;
15135   struct strtab_entry entry;
15136   struct strtab_entry *result;
15137
15138   entry.str = str;
15139   slot = htab_find_slot (table, &entry, INSERT);
15140   if (*slot)
15141     result = *slot;
15142   else
15143     {
15144       result = XNEW (struct strtab_entry);
15145       result->offset = obstack_object_size (cpool);
15146       result->str = str;
15147       obstack_grow_str0 (cpool, str);
15148       *slot = result;
15149     }
15150   return result->offset;
15151 }
15152
15153 /* An entry in the symbol table.  */
15154 struct symtab_index_entry
15155 {
15156   /* The name of the symbol.  */
15157   const char *name;
15158   /* The offset of the name in the constant pool.  */
15159   offset_type index_offset;
15160   /* A sorted vector of the indices of all the CUs that hold an object
15161      of this name.  */
15162   VEC (offset_type) *cu_indices;
15163 };
15164
15165 /* The symbol table.  This is a power-of-2-sized hash table.  */
15166 struct mapped_symtab
15167 {
15168   offset_type n_elements;
15169   offset_type size;
15170   struct symtab_index_entry **data;
15171 };
15172
15173 /* Hash function for a symtab_index_entry.  */
15174
15175 static hashval_t
15176 hash_symtab_entry (const void *e)
15177 {
15178   const struct symtab_index_entry *entry = e;
15179   return iterative_hash (VEC_address (offset_type, entry->cu_indices),
15180                          sizeof (offset_type) * VEC_length (offset_type,
15181                                                             entry->cu_indices),
15182                          0);
15183 }
15184
15185 /* Equality function for a symtab_index_entry.  */
15186
15187 static int
15188 eq_symtab_entry (const void *a, const void *b)
15189 {
15190   const struct symtab_index_entry *ea = a;
15191   const struct symtab_index_entry *eb = b;
15192   int len = VEC_length (offset_type, ea->cu_indices);
15193   if (len != VEC_length (offset_type, eb->cu_indices))
15194     return 0;
15195   return !memcmp (VEC_address (offset_type, ea->cu_indices),
15196                   VEC_address (offset_type, eb->cu_indices),
15197                   sizeof (offset_type) * len);
15198 }
15199
15200 /* Destroy a symtab_index_entry.  */
15201
15202 static void
15203 delete_symtab_entry (void *p)
15204 {
15205   struct symtab_index_entry *entry = p;
15206   VEC_free (offset_type, entry->cu_indices);
15207   xfree (entry);
15208 }
15209
15210 /* Create a hash table holding symtab_index_entry objects.  */
15211
15212 static htab_t
15213 create_symbol_hash_table (void)
15214 {
15215   return htab_create_alloc (100, hash_symtab_entry, eq_symtab_entry,
15216                             delete_symtab_entry, xcalloc, xfree);
15217 }
15218
15219 /* Create a new mapped symtab object.  */
15220
15221 static struct mapped_symtab *
15222 create_mapped_symtab (void)
15223 {
15224   struct mapped_symtab *symtab = XNEW (struct mapped_symtab);
15225   symtab->n_elements = 0;
15226   symtab->size = 1024;
15227   symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
15228   return symtab;
15229 }
15230
15231 /* Destroy a mapped_symtab.  */
15232
15233 static void
15234 cleanup_mapped_symtab (void *p)
15235 {
15236   struct mapped_symtab *symtab = p;
15237   /* The contents of the array are freed when the other hash table is
15238      destroyed.  */
15239   xfree (symtab->data);
15240   xfree (symtab);
15241 }
15242
15243 /* Find a slot in SYMTAB for the symbol NAME.  Returns a pointer to
15244    the slot.  */
15245
15246 static struct symtab_index_entry **
15247 find_slot (struct mapped_symtab *symtab, const char *name)
15248 {
15249   offset_type index, step, hash = mapped_index_string_hash (name);
15250
15251   index = hash & (symtab->size - 1);
15252   step = ((hash * 17) & (symtab->size - 1)) | 1;
15253
15254   for (;;)
15255     {
15256       if (!symtab->data[index] || !strcmp (name, symtab->data[index]->name))
15257         return &symtab->data[index];
15258       index = (index + step) & (symtab->size - 1);
15259     }
15260 }
15261
15262 /* Expand SYMTAB's hash table.  */
15263
15264 static void
15265 hash_expand (struct mapped_symtab *symtab)
15266 {
15267   offset_type old_size = symtab->size;
15268   offset_type i;
15269   struct symtab_index_entry **old_entries = symtab->data;
15270
15271   symtab->size *= 2;
15272   symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
15273
15274   for (i = 0; i < old_size; ++i)
15275     {
15276       if (old_entries[i])
15277         {
15278           struct symtab_index_entry **slot = find_slot (symtab,
15279                                                         old_entries[i]->name);
15280           *slot = old_entries[i];
15281         }
15282     }
15283
15284   xfree (old_entries);
15285 }
15286
15287 /* Add an entry to SYMTAB.  NAME is the name of the symbol.  CU_INDEX
15288    is the index of the CU in which the symbol appears.  */
15289
15290 static void
15291 add_index_entry (struct mapped_symtab *symtab, const char *name,
15292                  offset_type cu_index)
15293 {
15294   struct symtab_index_entry **slot;
15295
15296   ++symtab->n_elements;
15297   if (4 * symtab->n_elements / 3 >= symtab->size)
15298     hash_expand (symtab);
15299
15300   slot = find_slot (symtab, name);
15301   if (!*slot)
15302     {
15303       *slot = XNEW (struct symtab_index_entry);
15304       (*slot)->name = name;
15305       (*slot)->cu_indices = NULL;
15306     }
15307   /* Don't push an index twice.  Due to how we add entries we only
15308      have to check the last one.  */ 
15309   if (VEC_empty (offset_type, (*slot)->cu_indices)
15310       || VEC_length (offset_type, (*slot)->cu_indices) != cu_index)
15311     VEC_safe_push (offset_type, (*slot)->cu_indices, cu_index);
15312 }
15313
15314 /* Add a vector of indices to the constant pool.  */
15315
15316 static offset_type
15317 add_indices_to_cpool (htab_t symbol_hash_table, struct obstack *cpool,
15318                       struct symtab_index_entry *entry)
15319 {
15320   void **slot;
15321
15322   slot = htab_find_slot (symbol_hash_table, entry, INSERT);
15323   if (!*slot)
15324     {
15325       offset_type len = VEC_length (offset_type, entry->cu_indices);
15326       offset_type val = MAYBE_SWAP (len);
15327       offset_type iter;
15328       int i;
15329
15330       *slot = entry;
15331       entry->index_offset = obstack_object_size (cpool);
15332
15333       obstack_grow (cpool, &val, sizeof (val));
15334       for (i = 0;
15335            VEC_iterate (offset_type, entry->cu_indices, i, iter);
15336            ++i)
15337         {
15338           val = MAYBE_SWAP (iter);
15339           obstack_grow (cpool, &val, sizeof (val));
15340         }
15341     }
15342   else
15343     {
15344       struct symtab_index_entry *old_entry = *slot;
15345       entry->index_offset = old_entry->index_offset;
15346       entry = old_entry;
15347     }
15348   return entry->index_offset;
15349 }
15350
15351 /* Write the mapped hash table SYMTAB to the obstack OUTPUT, with
15352    constant pool entries going into the obstack CPOOL.  */
15353
15354 static void
15355 write_hash_table (struct mapped_symtab *symtab,
15356                   struct obstack *output, struct obstack *cpool)
15357 {
15358   offset_type i;
15359   htab_t symbol_hash_table;
15360   htab_t str_table;
15361
15362   symbol_hash_table = create_symbol_hash_table ();
15363   str_table = create_strtab ();
15364
15365   /* We add all the index vectors to the constant pool first, to
15366      ensure alignment is ok.  */
15367   for (i = 0; i < symtab->size; ++i)
15368     {
15369       if (symtab->data[i])
15370         add_indices_to_cpool (symbol_hash_table, cpool, symtab->data[i]);
15371     }
15372
15373   /* Now write out the hash table.  */
15374   for (i = 0; i < symtab->size; ++i)
15375     {
15376       offset_type str_off, vec_off;
15377
15378       if (symtab->data[i])
15379         {
15380           str_off = add_string (str_table, cpool, symtab->data[i]->name);
15381           vec_off = symtab->data[i]->index_offset;
15382         }
15383       else
15384         {
15385           /* While 0 is a valid constant pool index, it is not valid
15386              to have 0 for both offsets.  */
15387           str_off = 0;
15388           vec_off = 0;
15389         }
15390
15391       str_off = MAYBE_SWAP (str_off);
15392       vec_off = MAYBE_SWAP (vec_off);
15393
15394       obstack_grow (output, &str_off, sizeof (str_off));
15395       obstack_grow (output, &vec_off, sizeof (vec_off));
15396     }
15397
15398   htab_delete (str_table);
15399   htab_delete (symbol_hash_table);
15400 }
15401
15402 /* Struct to map psymtab to CU index in the index file.  */
15403 struct psymtab_cu_index_map
15404 {
15405   struct partial_symtab *psymtab;
15406   unsigned int cu_index;
15407 };
15408
15409 static hashval_t
15410 hash_psymtab_cu_index (const void *item)
15411 {
15412   const struct psymtab_cu_index_map *map = item;
15413
15414   return htab_hash_pointer (map->psymtab);
15415 }
15416
15417 static int
15418 eq_psymtab_cu_index (const void *item_lhs, const void *item_rhs)
15419 {
15420   const struct psymtab_cu_index_map *lhs = item_lhs;
15421   const struct psymtab_cu_index_map *rhs = item_rhs;
15422
15423   return lhs->psymtab == rhs->psymtab;
15424 }
15425
15426 /* Helper struct for building the address table.  */
15427 struct addrmap_index_data
15428 {
15429   struct objfile *objfile;
15430   struct obstack *addr_obstack;
15431   htab_t cu_index_htab;
15432
15433   /* Non-zero if the previous_* fields are valid.
15434      We can't write an entry until we see the next entry (since it is only then
15435      that we know the end of the entry).  */
15436   int previous_valid;
15437   /* Index of the CU in the table of all CUs in the index file.  */
15438   unsigned int previous_cu_index;
15439   /* Start address of the CU.  */
15440   CORE_ADDR previous_cu_start;
15441 };
15442
15443 /* Write an address entry to OBSTACK.  */
15444
15445 static void
15446 add_address_entry (struct objfile *objfile, struct obstack *obstack,
15447                    CORE_ADDR start, CORE_ADDR end, unsigned int cu_index)
15448 {
15449   offset_type cu_index_to_write;
15450   char addr[8];
15451   CORE_ADDR baseaddr;
15452
15453   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
15454
15455   store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, start - baseaddr);
15456   obstack_grow (obstack, addr, 8);
15457   store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, end - baseaddr);
15458   obstack_grow (obstack, addr, 8);
15459   cu_index_to_write = MAYBE_SWAP (cu_index);
15460   obstack_grow (obstack, &cu_index_to_write, sizeof (offset_type));
15461 }
15462
15463 /* Worker function for traversing an addrmap to build the address table.  */
15464
15465 static int
15466 add_address_entry_worker (void *datap, CORE_ADDR start_addr, void *obj)
15467 {
15468   struct addrmap_index_data *data = datap;
15469   struct partial_symtab *pst = obj;
15470   offset_type cu_index;
15471   void **slot;
15472
15473   if (data->previous_valid)
15474     add_address_entry (data->objfile, data->addr_obstack,
15475                        data->previous_cu_start, start_addr,
15476                        data->previous_cu_index);
15477
15478   data->previous_cu_start = start_addr;
15479   if (pst != NULL)
15480     {
15481       struct psymtab_cu_index_map find_map, *map;
15482       find_map.psymtab = pst;
15483       map = htab_find (data->cu_index_htab, &find_map);
15484       gdb_assert (map != NULL);
15485       data->previous_cu_index = map->cu_index;
15486       data->previous_valid = 1;
15487     }
15488   else
15489       data->previous_valid = 0;
15490
15491   return 0;
15492 }
15493
15494 /* Write OBJFILE's address map to OBSTACK.
15495    CU_INDEX_HTAB is used to map addrmap entries to their CU indices
15496    in the index file.  */
15497
15498 static void
15499 write_address_map (struct objfile *objfile, struct obstack *obstack,
15500                    htab_t cu_index_htab)
15501 {
15502   struct addrmap_index_data addrmap_index_data;
15503
15504   /* When writing the address table, we have to cope with the fact that
15505      the addrmap iterator only provides the start of a region; we have to
15506      wait until the next invocation to get the start of the next region.  */
15507
15508   addrmap_index_data.objfile = objfile;
15509   addrmap_index_data.addr_obstack = obstack;
15510   addrmap_index_data.cu_index_htab = cu_index_htab;
15511   addrmap_index_data.previous_valid = 0;
15512
15513   addrmap_foreach (objfile->psymtabs_addrmap, add_address_entry_worker,
15514                    &addrmap_index_data);
15515
15516   /* It's highly unlikely the last entry (end address = 0xff...ff)
15517      is valid, but we should still handle it.
15518      The end address is recorded as the start of the next region, but that
15519      doesn't work here.  To cope we pass 0xff...ff, this is a rare situation
15520      anyway.  */
15521   if (addrmap_index_data.previous_valid)
15522     add_address_entry (objfile, obstack,
15523                        addrmap_index_data.previous_cu_start, (CORE_ADDR) -1,
15524                        addrmap_index_data.previous_cu_index);
15525 }
15526
15527 /* Add a list of partial symbols to SYMTAB.  */
15528
15529 static void
15530 write_psymbols (struct mapped_symtab *symtab,
15531                 htab_t psyms_seen,
15532                 struct partial_symbol **psymp,
15533                 int count,
15534                 offset_type cu_index,
15535                 int is_static)
15536 {
15537   for (; count-- > 0; ++psymp)
15538     {
15539       void **slot, *lookup;
15540
15541       if (SYMBOL_LANGUAGE (*psymp) == language_ada)
15542         error (_("Ada is not currently supported by the index"));
15543
15544       /* We only want to add a given psymbol once.  However, we also
15545          want to account for whether it is global or static.  So, we
15546          may add it twice, using slightly different values.  */
15547       if (is_static)
15548         {
15549           uintptr_t val = 1 | (uintptr_t) *psymp;
15550
15551           lookup = (void *) val;
15552         }
15553       else
15554         lookup = *psymp;
15555
15556       /* Only add a given psymbol once.  */
15557       slot = htab_find_slot (psyms_seen, lookup, INSERT);
15558       if (!*slot)
15559         {
15560           *slot = lookup;
15561           add_index_entry (symtab, SYMBOL_NATURAL_NAME (*psymp), cu_index);
15562         }
15563     }
15564 }
15565
15566 /* Write the contents of an ("unfinished") obstack to FILE.  Throw an
15567    exception if there is an error.  */
15568
15569 static void
15570 write_obstack (FILE *file, struct obstack *obstack)
15571 {
15572   if (fwrite (obstack_base (obstack), 1, obstack_object_size (obstack),
15573               file)
15574       != obstack_object_size (obstack))
15575     error (_("couldn't data write to file"));
15576 }
15577
15578 /* Unlink a file if the argument is not NULL.  */
15579
15580 static void
15581 unlink_if_set (void *p)
15582 {
15583   char **filename = p;
15584   if (*filename)
15585     unlink (*filename);
15586 }
15587
15588 /* A helper struct used when iterating over debug_types.  */
15589 struct signatured_type_index_data
15590 {
15591   struct objfile *objfile;
15592   struct mapped_symtab *symtab;
15593   struct obstack *types_list;
15594   htab_t psyms_seen;
15595   int cu_index;
15596 };
15597
15598 /* A helper function that writes a single signatured_type to an
15599    obstack.  */
15600
15601 static int
15602 write_one_signatured_type (void **slot, void *d)
15603 {
15604   struct signatured_type_index_data *info = d;
15605   struct signatured_type *entry = (struct signatured_type *) *slot;
15606   struct dwarf2_per_cu_data *per_cu = &entry->per_cu;
15607   struct partial_symtab *psymtab = per_cu->v.psymtab;
15608   gdb_byte val[8];
15609
15610   write_psymbols (info->symtab,
15611                   info->psyms_seen,
15612                   info->objfile->global_psymbols.list
15613                   + psymtab->globals_offset,
15614                   psymtab->n_global_syms, info->cu_index,
15615                   0);
15616   write_psymbols (info->symtab,
15617                   info->psyms_seen,
15618                   info->objfile->static_psymbols.list
15619                   + psymtab->statics_offset,
15620                   psymtab->n_static_syms, info->cu_index,
15621                   1);
15622
15623   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, entry->offset);
15624   obstack_grow (info->types_list, val, 8);
15625   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, entry->type_offset);
15626   obstack_grow (info->types_list, val, 8);
15627   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, entry->signature);
15628   obstack_grow (info->types_list, val, 8);
15629
15630   ++info->cu_index;
15631
15632   return 1;
15633 }
15634
15635 /* A cleanup function for an htab_t.  */
15636
15637 static void
15638 cleanup_htab (void *arg)
15639 {
15640   htab_delete (arg);
15641 }
15642
15643 /* Create an index file for OBJFILE in the directory DIR.  */
15644
15645 static void
15646 write_psymtabs_to_index (struct objfile *objfile, const char *dir)
15647 {
15648   struct cleanup *cleanup;
15649   char *filename, *cleanup_filename;
15650   struct obstack contents, addr_obstack, constant_pool, symtab_obstack;
15651   struct obstack cu_list, types_cu_list;
15652   int i;
15653   FILE *out_file;
15654   struct mapped_symtab *symtab;
15655   offset_type val, size_of_contents, total_len;
15656   struct stat st;
15657   char buf[8];
15658   htab_t psyms_seen;
15659   htab_t cu_index_htab;
15660   struct psymtab_cu_index_map *psymtab_cu_index_map;
15661
15662   if (!objfile->psymtabs)
15663     return;
15664   if (dwarf2_per_objfile->using_index)
15665     error (_("Cannot use an index to create the index"));
15666
15667   if (stat (objfile->name, &st) < 0)
15668     perror_with_name (objfile->name);
15669
15670   filename = concat (dir, SLASH_STRING, lbasename (objfile->name),
15671                      INDEX_SUFFIX, (char *) NULL);
15672   cleanup = make_cleanup (xfree, filename);
15673
15674   out_file = fopen (filename, "wb");
15675   if (!out_file)
15676     error (_("Can't open `%s' for writing"), filename);
15677
15678   cleanup_filename = filename;
15679   make_cleanup (unlink_if_set, &cleanup_filename);
15680
15681   symtab = create_mapped_symtab ();
15682   make_cleanup (cleanup_mapped_symtab, symtab);
15683
15684   obstack_init (&addr_obstack);
15685   make_cleanup_obstack_free (&addr_obstack);
15686
15687   obstack_init (&cu_list);
15688   make_cleanup_obstack_free (&cu_list);
15689
15690   obstack_init (&types_cu_list);
15691   make_cleanup_obstack_free (&types_cu_list);
15692
15693   psyms_seen = htab_create_alloc (100, htab_hash_pointer, htab_eq_pointer,
15694                                   NULL, xcalloc, xfree);
15695   make_cleanup (cleanup_htab, psyms_seen);
15696
15697   /* While we're scanning CU's create a table that maps a psymtab pointer
15698      (which is what addrmap records) to its index (which is what is recorded
15699      in the index file).  This will later be needed to write the address
15700      table.  */
15701   cu_index_htab = htab_create_alloc (100,
15702                                      hash_psymtab_cu_index,
15703                                      eq_psymtab_cu_index,
15704                                      NULL, xcalloc, xfree);
15705   make_cleanup (cleanup_htab, cu_index_htab);
15706   psymtab_cu_index_map = (struct psymtab_cu_index_map *)
15707     xmalloc (sizeof (struct psymtab_cu_index_map)
15708              * dwarf2_per_objfile->n_comp_units);
15709   make_cleanup (xfree, psymtab_cu_index_map);
15710
15711   /* The CU list is already sorted, so we don't need to do additional
15712      work here.  Also, the debug_types entries do not appear in
15713      all_comp_units, but only in their own hash table.  */
15714   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
15715     {
15716       struct dwarf2_per_cu_data *per_cu
15717         = dwarf2_per_objfile->all_comp_units[i];
15718       struct partial_symtab *psymtab = per_cu->v.psymtab;
15719       gdb_byte val[8];
15720       struct psymtab_cu_index_map *map;
15721       void **slot;
15722
15723       write_psymbols (symtab,
15724                       psyms_seen,
15725                       objfile->global_psymbols.list + psymtab->globals_offset,
15726                       psymtab->n_global_syms, i,
15727                       0);
15728       write_psymbols (symtab,
15729                       psyms_seen,
15730                       objfile->static_psymbols.list + psymtab->statics_offset,
15731                       psymtab->n_static_syms, i,
15732                       1);
15733
15734       map = &psymtab_cu_index_map[i];
15735       map->psymtab = psymtab;
15736       map->cu_index = i;
15737       slot = htab_find_slot (cu_index_htab, map, INSERT);
15738       gdb_assert (slot != NULL);
15739       gdb_assert (*slot == NULL);
15740       *slot = map;
15741
15742       store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, per_cu->offset);
15743       obstack_grow (&cu_list, val, 8);
15744       store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, per_cu->length);
15745       obstack_grow (&cu_list, val, 8);
15746     }
15747
15748   /* Dump the address map.  */
15749   write_address_map (objfile, &addr_obstack, cu_index_htab);
15750
15751   /* Write out the .debug_type entries, if any.  */
15752   if (dwarf2_per_objfile->signatured_types)
15753     {
15754       struct signatured_type_index_data sig_data;
15755
15756       sig_data.objfile = objfile;
15757       sig_data.symtab = symtab;
15758       sig_data.types_list = &types_cu_list;
15759       sig_data.psyms_seen = psyms_seen;
15760       sig_data.cu_index = dwarf2_per_objfile->n_comp_units;
15761       htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
15762                               write_one_signatured_type, &sig_data);
15763     }
15764
15765   obstack_init (&constant_pool);
15766   make_cleanup_obstack_free (&constant_pool);
15767   obstack_init (&symtab_obstack);
15768   make_cleanup_obstack_free (&symtab_obstack);
15769   write_hash_table (symtab, &symtab_obstack, &constant_pool);
15770
15771   obstack_init (&contents);
15772   make_cleanup_obstack_free (&contents);
15773   size_of_contents = 6 * sizeof (offset_type);
15774   total_len = size_of_contents;
15775
15776   /* The version number.  */
15777   val = MAYBE_SWAP (4);
15778   obstack_grow (&contents, &val, sizeof (val));
15779
15780   /* The offset of the CU list from the start of the file.  */
15781   val = MAYBE_SWAP (total_len);
15782   obstack_grow (&contents, &val, sizeof (val));
15783   total_len += obstack_object_size (&cu_list);
15784
15785   /* The offset of the types CU list from the start of the file.  */
15786   val = MAYBE_SWAP (total_len);
15787   obstack_grow (&contents, &val, sizeof (val));
15788   total_len += obstack_object_size (&types_cu_list);
15789
15790   /* The offset of the address table from the start of the file.  */
15791   val = MAYBE_SWAP (total_len);
15792   obstack_grow (&contents, &val, sizeof (val));
15793   total_len += obstack_object_size (&addr_obstack);
15794
15795   /* The offset of the symbol table from the start of the file.  */
15796   val = MAYBE_SWAP (total_len);
15797   obstack_grow (&contents, &val, sizeof (val));
15798   total_len += obstack_object_size (&symtab_obstack);
15799
15800   /* The offset of the constant pool from the start of the file.  */
15801   val = MAYBE_SWAP (total_len);
15802   obstack_grow (&contents, &val, sizeof (val));
15803   total_len += obstack_object_size (&constant_pool);
15804
15805   gdb_assert (obstack_object_size (&contents) == size_of_contents);
15806
15807   write_obstack (out_file, &contents);
15808   write_obstack (out_file, &cu_list);
15809   write_obstack (out_file, &types_cu_list);
15810   write_obstack (out_file, &addr_obstack);
15811   write_obstack (out_file, &symtab_obstack);
15812   write_obstack (out_file, &constant_pool);
15813
15814   fclose (out_file);
15815
15816   /* We want to keep the file, so we set cleanup_filename to NULL
15817      here.  See unlink_if_set.  */
15818   cleanup_filename = NULL;
15819
15820   do_cleanups (cleanup);
15821 }
15822
15823 /* The mapped index file format is designed to be directly mmap()able
15824    on any architecture.  In most cases, a datum is represented using a
15825    little-endian 32-bit integer value, called an offset_type.  Big
15826    endian machines must byte-swap the values before using them.
15827    Exceptions to this rule are noted.  The data is laid out such that
15828    alignment is always respected.
15829
15830    A mapped index consists of several sections.
15831
15832    1. The file header.  This is a sequence of values, of offset_type
15833    unless otherwise noted:
15834
15835    [0] The version number, currently 4.  Versions 1, 2 and 3 are
15836    obsolete.
15837    [1] The offset, from the start of the file, of the CU list.
15838    [2] The offset, from the start of the file, of the types CU list.
15839    Note that this section can be empty, in which case this offset will
15840    be equal to the next offset.
15841    [3] The offset, from the start of the file, of the address section.
15842    [4] The offset, from the start of the file, of the symbol table.
15843    [5] The offset, from the start of the file, of the constant pool.
15844
15845    2. The CU list.  This is a sequence of pairs of 64-bit
15846    little-endian values, sorted by the CU offset.  The first element
15847    in each pair is the offset of a CU in the .debug_info section.  The
15848    second element in each pair is the length of that CU.  References
15849    to a CU elsewhere in the map are done using a CU index, which is
15850    just the 0-based index into this table.  Note that if there are
15851    type CUs, then conceptually CUs and type CUs form a single list for
15852    the purposes of CU indices.
15853
15854    3. The types CU list.  This is a sequence of triplets of 64-bit
15855    little-endian values.  In a triplet, the first value is the CU
15856    offset, the second value is the type offset in the CU, and the
15857    third value is the type signature.  The types CU list is not
15858    sorted.
15859
15860    4. The address section.  The address section consists of a sequence
15861    of address entries.  Each address entry has three elements.
15862    [0] The low address.  This is a 64-bit little-endian value.
15863    [1] The high address.  This is a 64-bit little-endian value.
15864        Like DW_AT_high_pc, the value is one byte beyond the end.
15865    [2] The CU index.  This is an offset_type value.
15866
15867    5. The symbol table.  This is a hash table.  The size of the hash
15868    table is always a power of 2.  The initial hash and the step are
15869    currently defined by the `find_slot' function.
15870
15871    Each slot in the hash table consists of a pair of offset_type
15872    values.  The first value is the offset of the symbol's name in the
15873    constant pool.  The second value is the offset of the CU vector in
15874    the constant pool.
15875
15876    If both values are 0, then this slot in the hash table is empty.
15877    This is ok because while 0 is a valid constant pool index, it
15878    cannot be a valid index for both a string and a CU vector.
15879
15880    A string in the constant pool is stored as a \0-terminated string,
15881    as you'd expect.
15882
15883    A CU vector in the constant pool is a sequence of offset_type
15884    values.  The first value is the number of CU indices in the vector.
15885    Each subsequent value is the index of a CU in the CU list.  This
15886    element in the hash table is used to indicate which CUs define the
15887    symbol.
15888
15889    6. The constant pool.  This is simply a bunch of bytes.  It is
15890    organized so that alignment is correct: CU vectors are stored
15891    first, followed by strings.  */
15892
15893 static void
15894 save_gdb_index_command (char *arg, int from_tty)
15895 {
15896   struct objfile *objfile;
15897
15898   if (!arg || !*arg)
15899     error (_("usage: save gdb-index DIRECTORY"));
15900
15901   ALL_OBJFILES (objfile)
15902   {
15903     struct stat st;
15904
15905     /* If the objfile does not correspond to an actual file, skip it.  */
15906     if (stat (objfile->name, &st) < 0)
15907       continue;
15908
15909     dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
15910     if (dwarf2_per_objfile)
15911       {
15912         volatile struct gdb_exception except;
15913
15914         TRY_CATCH (except, RETURN_MASK_ERROR)
15915           {
15916             write_psymtabs_to_index (objfile, arg);
15917           }
15918         if (except.reason < 0)
15919           exception_fprintf (gdb_stderr, except,
15920                              _("Error while writing index for `%s': "),
15921                              objfile->name);
15922       }
15923   }
15924 }
15925
15926 \f
15927
15928 int dwarf2_always_disassemble;
15929
15930 static void
15931 show_dwarf2_always_disassemble (struct ui_file *file, int from_tty,
15932                                 struct cmd_list_element *c, const char *value)
15933 {
15934   fprintf_filtered (file,
15935                     _("Whether to always disassemble "
15936                       "DWARF expressions is %s.\n"),
15937                     value);
15938 }
15939
15940 void _initialize_dwarf2_read (void);
15941
15942 void
15943 _initialize_dwarf2_read (void)
15944 {
15945   struct cmd_list_element *c;
15946
15947   dwarf2_objfile_data_key
15948     = register_objfile_data_with_cleanup (NULL, dwarf2_per_objfile_free);
15949
15950   add_prefix_cmd ("dwarf2", class_maintenance, set_dwarf2_cmd, _("\
15951 Set DWARF 2 specific variables.\n\
15952 Configure DWARF 2 variables such as the cache size"),
15953                   &set_dwarf2_cmdlist, "maintenance set dwarf2 ",
15954                   0/*allow-unknown*/, &maintenance_set_cmdlist);
15955
15956   add_prefix_cmd ("dwarf2", class_maintenance, show_dwarf2_cmd, _("\
15957 Show DWARF 2 specific variables\n\
15958 Show DWARF 2 variables such as the cache size"),
15959                   &show_dwarf2_cmdlist, "maintenance show dwarf2 ",
15960                   0/*allow-unknown*/, &maintenance_show_cmdlist);
15961
15962   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
15963                             &dwarf2_max_cache_age, _("\
15964 Set the upper bound on the age of cached dwarf2 compilation units."), _("\
15965 Show the upper bound on the age of cached dwarf2 compilation units."), _("\
15966 A higher limit means that cached compilation units will be stored\n\
15967 in memory longer, and more total memory will be used.  Zero disables\n\
15968 caching, which can slow down startup."),
15969                             NULL,
15970                             show_dwarf2_max_cache_age,
15971                             &set_dwarf2_cmdlist,
15972                             &show_dwarf2_cmdlist);
15973
15974   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
15975                            &dwarf2_always_disassemble, _("\
15976 Set whether `info address' always disassembles DWARF expressions."), _("\
15977 Show whether `info address' always disassembles DWARF expressions."), _("\
15978 When enabled, DWARF expressions are always printed in an assembly-like\n\
15979 syntax.  When disabled, expressions will be printed in a more\n\
15980 conversational style, when possible."),
15981                            NULL,
15982                            show_dwarf2_always_disassemble,
15983                            &set_dwarf2_cmdlist,
15984                            &show_dwarf2_cmdlist);
15985
15986   add_setshow_zinteger_cmd ("dwarf2-die", no_class, &dwarf2_die_debug, _("\
15987 Set debugging of the dwarf2 DIE reader."), _("\
15988 Show debugging of the dwarf2 DIE reader."), _("\
15989 When enabled (non-zero), DIEs are dumped after they are read in.\n\
15990 The value is the maximum depth to print."),
15991                             NULL,
15992                             NULL,
15993                             &setdebuglist, &showdebuglist);
15994
15995   c = add_cmd ("gdb-index", class_files, save_gdb_index_command,
15996                _("\
15997 Save a gdb-index file.\n\
15998 Usage: save gdb-index DIRECTORY"),
15999                &save_cmdlist);
16000   set_cmd_completer (c, filename_completer);
16001 }